var Rotater=
new Class({Implements:[Options,Events],
    options:{
        slideInterval:8000,
        transitionDuration:1000,
        startIndex:0,
        showClass:false,
        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();
        }
    
        $$(this.options.showClass).setStyle('display','block'); 
        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.setStyles({
                opacity:0,
                display:"none"  
            })
        })
    },
        
        
    showSlide:function(B){
        var A={};
        this.slides.each(function(C,D){
            if(D==B&&D!=this.currentSlide){
                A[D.toString()]={opacity:1,display:"block"}
            }else{
                A[D.toString()]={
                    opacity:0,display:"none"}
            }
        },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;
    }
}
);
