var Rotater=new Class({
		Implements:[Options,Events],
		options:{slideInterval:4000,transitionDuration:1000,startIndex:0,autoplay:true},
		initialize:function(B,A){
				this.setOptions(A);
				this.slides=$$(B);
				this.createFx();
				this.showSlide(this.options.startIndex);
				if(this.slides.length<2){this.options.autoplay=false}
				if(this.options.autoplay){this.autoplay()}
				return this},
				
		toElement:function(){return this.container},
		
		createFx:function(){
			if(!this.slideFx){this.slideFx=new Fx.Elements(this.slides,{duration:this.options.transitionDuration})}
			this.slides.each(function(A){A.setStyle("opacity",0)})},
			
		showSlide:function(B){var A={};this.slides.each(
							function(C,D){
							if(D==B&&D!=this.currentSlide){
								A[D.toString()]={opacity:1}
							}else{
								A[D.toString()]={opacity:0}
							}
						},
						this);
		
		this.fireEvent("onShowSlide",B);
		this.currentSlide=B;
		this.slideFx.start(A);
		return this},
	
	autoplay:function(){
			this.slideshowInt=this.rotate.periodical(this.options.slideInterval,this);
			this.fireEvent("onAutoPlay");
			return this},
	
	stop:function(){
		$clear(this.slideshowInt);
		this.fireEvent("onStop");return this},
	
	rotate:function(){
		current=this.currentSlide;
		next=(current+1>=this.slides.length)?0:current+1;this.showSlide(next);
		this.fireEvent("onRotate",next);
		return this
	}
}
);
