SlideShow = Class.create();
SlideShow.prototype = Object.extend(new PeriodicalExecuter(new Function(), 5),{
    initialize: function(slide_class_name, container_id, display_time){ 
        this.slide_class_name = slide_class_name;
        this.container_id = container_id;
        this.frequency = display_time;
        this.callback = this.cycle;
    },

    _adjust_zIndex: function(){
        for(var i=0; i<this.slides.length; i++){
            var slide = this.slides[i]
            slide.style.zIndex = this.slides.length-i;   
            slide.setOpacity(1);
            slide.show(); 
        }
    },

    start: function() { 
        this.slides=$A(document.getElementsByClassName(this.slide_class_name)); 
        this._adjust_zIndex();
        this.registerCallback();
    },

    cycle: function() { 
        new Effect.Fade(this.slides.first(), {
          duration: 1, 
          fps: 30, 
          afterFinish: (function(){this._show();}).bind(this)}); 
    },

    _show: function(effect){
        var slide = this.slides.shift();
        this.slides.push(slide);
        this._adjust_zIndex();
    } 
})
 
