var Crossfader = new Class({
	Implements: [Options, Events],
	options: {
		parent:'',
		slides:[],
		interval:1000,
		delay:1000,
		duration:1500
	},
	
	initialize: function(options){
		this.setOptions(options);
		this.parent = $(this.options.parent);
		/*this.parent.addEvents({
			'mouseenter':this.stopTimer.bind(this),											
			'mouseleave':this.startTimer.bind(this)
		})*/	
		this.slides = this.parent.getElements(this.options.slides);
		if (this.slides.length < 1) {
				return false;
		}
		this.current = 0;
		this.count = 0;
		this.hideAll();
		this.activate.delay(this.options.delay,this);
	},
	hideAll:function() { //hide all and position absolutely at start
		this.slides.each(function(el){	
				this.slides.setStyle('display','none');
				el.effects = new Fx.Tween(el, { duration: this.options.duration, transition: Fx.Transitions.Sine.easeInOut });
		},this);
		this.slides[0].setStyle('display','block');
	},
	activate:function() {
		if(this.slides.length > 1) {
			this.startTimer();
		}
	},
	shownext:function() { //fade out previous and fade in next
			if((this.current + 1) >= this.slides.length) {
				this.count=-1;
			}			
			if (this.slides.length > 1 ) {
				var obj = this;
				this.count++;
				this.slides[this.count].setStyle('position','relative');	
				this.slides[this.count].setStyle('z-index','1');	
				this.slides[this.current].setStyle('position','absolute');
				this.slides[this.current].setStyle('position','absolute');
				this.slides[this.current].setStyle('z-index','999');
				this.slides[this.count].setStyle('display','block');
				this.slides[this.count].setStyle('opacity',1);
				this.slides[this.current].effects.start('opacity',0).chain(function() {
					this.slides[this.current].setStyle('display','none');																														
					this.current = this.count;
					this.startTimer();
				}.bind(this));		
			}
	},
	startTimer:function() {
		if(this.timer) {
			$clear(this.timer);
		}
		if(this.slides.length > 1) {
			this.timer = this.shownext.delay(this.options.interval, this, this);		
		}
	},
	stopTimer:function() {
			if(this.timer) {
				$clear(this.timer);
			}
	}
			
});
