/*--------------------------------------------------------------- ADDITIONAL MOOTOOLS STUFF REQUIRED----------------------------------------------------------------------------------------- */

//MooTools More, <http://mootools.net/more>. Copyright (c) 2006-2009 Aaron Newton <http://clientcide.com/>, Valerio Proietti <http://mad4milk.net> & the MooTools team <http://mootools.net/developers>, MIT Style License.

MooTools.More = {
	'version': '1.2.3.1'
};

/*
Script: Assets.js
	Provides methods to dynamically load JavaScript, CSS, and Image files into the document.

	License:
		MIT-style license.

	Authors:
		Valerio Proietti
*/

var Asset = {

	javascript: function(source, properties){
		properties = $extend({
			onload: $empty,
			document: document,
			check: $lambda(true)
		}, properties);

		var script = new Element('script', {src: source, type: 'text/javascript'});

		var load = properties.onload.bind(script), check = properties.check, doc = properties.document;
		delete properties.onload; delete properties.check; delete properties.document;

		script.addEvents({
			load: load,
			readystatechange: function(){
				if (['loaded', 'complete'].contains(this.readyState)) load();
			}
		}).set(properties);

		if (Browser.Engine.webkit419) var checker = (function(){
			if (!$try(check)) return;
			$clear(checker);
			load();
		}).periodical(50);

		return script.inject(doc.head);
	},

	css: function(source, properties){
		return new Element('link', $merge({
			rel: 'stylesheet', media: 'screen', type: 'text/css', href: source
		}, properties)).inject(document.head);
	},

	image: function(source, properties){
		properties = $merge({
			onload: $empty,
			onabort: $empty,
			onerror: $empty
		}, properties);
		var image = new Image();
		var element = new Element('img');
		['load', 'abort', 'error'].each(function(name){
			var type = 'on' + name;
			var event = properties[type];
			delete properties[type];
			image[type] = function(){
				if (!image) return;
				if (!element.parentNode){
					element.width = image.width;
					element.height = image.height;
				}
				image = image.onload = image.onabort = image.onerror = null;
				event.delay(1, element, element);
				element.fireEvent(name, element, 1);
			};
		});
		image.src = element.src = source;
		if (image && image.complete) image.onload.delay(1);
		return element.set(properties);
	},

	images: function(sources, options){
		options = $merge({
			onComplete: $empty,
			onProgress: $empty,
			onError: $empty,
			properties: {}}, options);
		sources = $splat(sources);
		var images = [];
		var counter = 0;
		return new Elements(sources.map(function(source){
			return Asset.image(source, $extend(options.properties, {
				onload: function(){
					options.onProgress.call(this, counter, sources.indexOf(source));
					counter++;
					if (counter == sources.length) options.onComplete();
				},
				onerror: function(){
					options.onError.call(this, counter, sources.indexOf(source));
					counter++;
					if (counter == sources.length) options.onComplete();
				}
			}));
		}));
	}

};



/*----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- */



var p= {

  rolloverSuffix: '_on',
  fileExtension: '.gif',
  dataUrl : 'http://www.hfs-clinics.co.uk/hotspots/data/',
  obj:{},
  labelClass : 'hotspot_label',
  currentLink : false,
  

  preload: function( img ){
/* 
   var src = img.src.replace(p.fileExtension, p.rolloverSuffix + p.fileExtension);
    var i = new Image();
    i.src = src;
*/
  },

  getElementBySrc: function(src){
      var ret;
    $$('#main_header_img img').each(function(img){
       if(img.src == src) ret = img;
   });
    return ret;
  },

  swapOn: function(){
   /*  if( this.retrieve('rollover') == 'inactive'){return;}
   
       this.src = this.src.replace(p.fileExtension, p.rolloverSuffix + p.fileExtension);
     */
  },

  swapOff: function(){
/*
           if( this.retrieve('rollover') == 'inactive'){return;}
         this.src = this.src.replace(p.rolloverSuffix, '');
*/
  },

  

  makeAllActive: function(){
/*
     $$('#home_nav img').each( function(el){
         el.store('rollover', 'active');
         p.swapOff.attempt('', el);
     });
*/
    },

  
    xmlPath : 'homepage.xml',
	flashPath : 'flash/flvplayer.swf',
	imgPathPrefix : '',
	videoPathPrefix : '',
	delayTime : 6000,
	currentLink : 0,
	
	container : 'homepage_banner',
	
	
	data : [],
	current : 0,
	periodicalIndex : '',
	
	getText:function(node){
		var c = node.childNodes;
		var r = false;
		for(var i=0; i<c.length; i++){
                     
			if(c[i].nodeType ==4 || c[i].nodeType == 3 ){
				r = c[i].nodeValue;
			}
		}
              
		return r;
	},
	
	getElements:function(node, name){
		var c = node.childNodes;
		var r = [];
		for(var i=0; i<c.length; i++){
			if(c[i].nodeName == name){r.push(c[i]);}
		}
		if( r.length == 0 ){
			return false;
		}else{
			return r;
		}
		
	},
	
	getElement:function(node, name){
		var els =  p.getElements(node, name);
		if(els === false || els.length == 0){
			return false;
		}else{
			return els[0];
		}
	},

	xmlFail: function(){
		alert('failed to load xml');
	},
	
	atBeginning: function(){
		return p.current == 0 ? true : false;
	},
	
	atEnd: function(){
		return p.current == p.data.length - 1 ? true : false;
	},
	
	hide: function(){
		var txt = $('slide-info');
		var pic = $('slide-image');
		var mov = $('flash-container');
		txt.set('tween', {transition:'back:in'});
                pic.set('tween', {duration:500, onComplete:p.setData} );
		txt.tween('left', -400);
		pic.tween('opacity', 0);
		mov.tween('opacity', 0);
	},
	
	show: function(showTxt, showPic, showMov){
		var txt = $('slide-info');
		var pic = $('slide-image');
		var mov = $('flash-container');
		txt.set('tween', {transition:'back:out'});
                 pic.set('tween', {duration:1000, onComplete:$empty} );
		if(showTxt) txt.tween('left', 20);
		if(showPic) pic.tween('opacity', 1);
		if(showMov) mov.tween('opacity', 1);
	},
	
	play: function(){
		p.periodicalIndex = p.gotoSlide.periodical( p.delayTime, this, 'next' );
	},
	
	stopPlaying: function(){$clear(p.periodicalIndex);},
	
	gotoSlide: function(slide){
		var i;
		switch(slide){
			case 'next' : i = p.current + 1; break;
			case 'previous' : i = p.current - 1; break;
			default : i = slide;
		}
		if( i < 0 ) i = p.data.length - 1;
		if( i > (p.data.length - 1) ) i = 0;
		p.current = i;
                 p.makeAllActive();
                 p.swapOn.call( $$('#home_nav img')[i] );
             //    $$('#home_nav img')[i].store('rollover', 'inactive');
		p.hide();
	},
	
	setData: function(){
            
	//	$('flash-container').removeEvents('click');
	//	stopPlaying();
		var a = p.data[p.current] || false;
		if( !a ){p.show();}else{
                       
		//	if(a.title) $('slide-header').set('html', a.title);
                      
		//	if(a.text) $('slide-text').set('html', a.text);
			if(a.background) $('slide-image').src =  a.background;
                        if(a.title) $('slide-image').alt = a.title;
                       if(a.link){
                           $('slide-image').setStyle('cursor', 'pointer');
                           p.currentLink = a.link;
                       }else{
                           p.currentLink = false;
                           $('slide-image').setStyle('cursor', '');
                       }
			var showimage = false;
			var showmov = false;
			var showtxt = false;
		//	if( a.title || a.text ) showtxt = true;
			if( a.background ) showimage = true;
			p.show(showtxt, showimage, showmov);
		//	$('slide-pagination').getElements('li a').each( function(el){el.removeClass('active');});
		//	$('slide-pagination').getElements('li')[p.current].getElement('a').addClass('active');
			
			p.show.delay(1000, this, [showtxt, showimage, showmov] );
		}
	},		
	
	
	parseXML: function(txt, xml){
		var root = xml.documentElement;
		var slides = p.getElements(root, 'slide');
		var data, b, ti, te, m, l;
             
		for(var i=0; i<slides.length; i++){
			data = {background:false, title:false, text:false, movie:false, 'link':false};
			b = p.getElement(slides[i], 'background');
			if(b) data.background = p.imgPathPrefix + p.getText(b);
			ti = p.getElement(slides[i], 'title');
			if(ti) data.title = p.getText(ti);
			te = p.getElement(slides[i], 'text');
			if(te) data.text = p.getText(te);
			m = p.getElement(slides[i], 'movie');
			if(m) data.movie = p.videoPathPrefix + p.getText(m);
			l = p.getElement(slides[i], 'link');
			if(l) data['link'] = p.getText(l);
			p.data.push(data);
		}
		p.preloadImages();
	},
	
	preloadImages: function(){
             
		var imgs = [];
		p.data.each( function(d){
			if(d.background) imgs.push(d.background);
		});
		var myImages = new Asset.images(imgs, {onProgress: p.imageLoad, onComplete: p.imageLoadingComplete} );
	},
	
	imageLoad: function(counter, index){
	/*	var a = new Element('a', {href:'javascript:void(0)', 'id':'slide-link' + p.currentLink});
		var li = new Element('li');
		a.inject(li);
		li.inject( $('slide-pagination').getElement('ul'), 'bottom');  */
		p.currentLink ++;
	},
	
	imageLoadingComplete: function(){
               
		p.gotoSlide(0);
		if( p.data.length > 1) p.play();
		$('slide-pagination').getElements('li a').each( function(a){
			a.addEvent('click', function(){
				if( !this.hasClass('active') ){
					p.stopPlaying();
					p.gotoSlide( this.id.replace('slide-link', '') );
				}
			});
		});
	},

	
	loadXML: function(){
               
		new Request({url:p.xmlPath, 'method':'get', onSuccess: p.parseXML, onFailure:p.xmlFail}).send();
	},

       init:function(xmlPath){
  /*
     $$('#home_nav img').each( function(el, i){
        p.preload( el );
        el.addEvent('mouseover', p.swapOn);
        el.addEvent('mouseout', p.swapOff);
        el.store('rollover', 'active');
    


       
     });
*/
      

         p.xmlPath = xmlPath;
		var con = $(p.container)
                con.setStyle('overflow', 'hidden');
		p.loadXML();
                $('slide-image').addEvent('click', function(){
                    if(p.currentLink) window.location.href = p.currentLink;
                });
  }
}

window.addEvent('domready', function(){ p.init( '/home/homepage_banner.xml' ); });
   