/*
	Sarah Backhouse, Jadu LTD 05.01.2011
*/
var AdvertFader = Class.create ({
	initialize: function (wrapper, options) {
		this.wrapper			= $(wrapper);
		this.images			= this.wrapper.down('ul.items').select('li');
		this.thumbs			= this.wrapper.down('ul.thumbs').select('li');
		
		this.options			= {
								startAt: 0,
								autoslide: true,
								interval: 8
							}
 		Object.extend( this.options, options || {} );
		
		this.currentSlide	= this.options.startAt;
		this.scrolling		= false; 
		this.timer			= null;
		
		for (i=0; i < this.thumbs.length; i++)  {  
			$(this.thumbs[i]).addClassName("thumb-"+i);  
			$(this.images[i]).addClassName("image-"+i); 
			$(this.thumbs[i]).down('a').observe('click', this.fader.bind(this));
			if( i != this.currentSlide) {
				$(this.images[i]).setStyle({'opacity': 0});
			}
		}
		
		if (this.options.autoslide) {
			this.start();
		
			var pauseName = wrapper + 'pause';
			var playName = wrapper + 'play';
			
			this.pauseButton		= $(pauseName);
			this.pauseButton.observe('click', this.stop.bind(this));
			this.playButton		= $(playName);
			this.playButton.observe('click', this.start.bind(this));
			
			this.pauseButton.style.display = '';
			this.playButton.style.display = 'none';
		}
	},
	fader : function (event) {
		if (event) { 
			Event.stop(event); 
		}
		if (this.scrolling == true) {
			return;
		}
		this.scrolling = true;
		
    	var element = Event.findElement(event, 'a');
		var li	= element.up('li');
		
		this.selecteds = this.wrapper.down('ul.thumbs').select('.selected');
				
		for (i = 0; i < this.selecteds.length; i++) {
			$(this.selecteds[i]).removeClassName('selected');
		}
		
		this.nextSlide = parseInt(li.className.split('-')[1]);
		li.addClassName('selected');
		
		this.animate();
	},
	automove : function () {
		if (this.currentSlide < (this.thumbs.length-1)) {
			this.nextSlide = this.currentSlide + 1;
		}
		else {
			this.nextSlide = 0;
		}
		
		this.selecteds = this.wrapper.down('ul.thumbs').select('.selected');
				
		for (i = 0; i < this.selecteds.length; i++) {
			$(this.selecteds[i]).removeClassName('selected');
		}
		
		this.thumbs[this.nextSlide].addClassName('selected');
		this.animate();
	},
	animate: function () {
		
		if (this.currentSlide != this.nextSlide) {
			var effects = new Array();
			$(this.images[this.nextSlide]).show();
			effects.push( new Effect.Opacity($(this.images[this.currentSlide]), {sync: true, from: 1, to: 0}));
			effects.push( new Effect.Opacity($(this.images[this.nextSlide]), {sync: true, from: 0, to: 1}));

			new Effect.Parallel(effects, { duration: 0.5, fps: 35, queue: {position: 'end', scope: 'advertFader'}, beforeStart: function() { this.stop(); $(this.images[this.nextSlide]).setStyle({'display' : 'block'});}.bind(this), afterFinish: function() { $(this.images[this.currentSlide]).setStyle({'display': 'none'}); this.currentSlide = this.nextSlide; this.scrolling = false; this.start(); }.bind(this) });
		}
		
	}, 
	start : function (event) {
		this.stop();
		if (event) {
			Event.stop(event);
		}
		if (this.pauseButton) {
			this.pauseButton.style.display = '';
			this.playButton.style.display = 'none';
		}
		this.timer = setTimeout(this.periodicallyUpdate.bind(this), this.options.interval*1000);	
		return false;
	},
	stop : function (event) {
		if (event) {
			Event.stop(event);
		}
		if (this.pauseButton) {
			this.pauseButton.style.display = 'none';
			this.playButton.style.display = '';
		}
		clearTimeout(this.timer);
		return false;
	},
	periodicallyUpdate : function () {
		if (this.timer != null) {
			clearTimeout(this.timer);
			this.automove();
			this.start();
		}
	}
});
