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);
        this.intervals = [1500,2000,2500,3000,3500,4000,4500,5000,5500];
        
        this.options.slideInterval = this.intervals.getRandom();
        
        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(){
        
        if($random(1,3) == 2){
            this.options.slideInterval = this.intervals.getRandom(); 
            return this;
        }
        
        current=this.currentSlide;
        next=(current+1>=this.slides.length)?0:current+1;
        this.showSlide(next);
        this.fireEvent("onRotate",next);
        return this
    }
});
