    var SlideShow = Class.create();
    SlideShow.prototype = {
      initialize: function(mod_instance,timeout,effect) {
          this.timeout = timeout;
          this.mod_instance = mod_instance;
          this.i = 0;
          this.effect = effect;
      },
      start: function(){
          var thisObj = this;
          setTimeout(function() { thisObj.new_start(); }, this.timeout);
      }
     ,new_start: function(){


                switch(this.effect){
                 case 'appear':

                    k = this.i;
                    this.i++;
                    if (!$('slide'+this.mod_instance+'_'+(this.i+1))) this.i = 0;

                    new Effect.Parallel(
                        [
                            Effect.Fade($('slide'+this.mod_instance+'_'+(k+1)), {queue:{scope:'scope'+this.mod_instance, position:'end'}, sync: true, from:1.0, to:0.0}),
                            Effect.Appear($('slide'+this.mod_instance+'_'+(this.i+1)), {queue:{scope:'scope'+this.mod_instance, position:'end'}, sync: true, from:0.0, to:1.0})
                        ],
                        {duration: 7.0,delay:0.0,beforeStart:function(){$('slide'+this.mod_instance+'_'+(k+1)).style.zIndex = 4999 ;$('slide'+this.mod_instance+'_'+(this.i+1)).style.zIndex = 4998 ;$('slide'+this.mod_instance+'_'+(this.i+1)).show();}.bind(this),afterFinish:function(){$('slide'+this.mod_instance+'_'+(k+1)).style.zIndex = 1;$('slide'+this.mod_instance+'_'+(k+1)).hide();this.new_start()}.bind(this)}
                    );


                    break;
                 case 'grow':
                    k = this.i;
                    this.i++;
                    if (!$('slide'+this.mod_instance+'_'+(this.i+1))) this.i = 0;


                    new Effect.Parallel(
                        [
                            Effect.Fade($('slide'+this.mod_instance+'_'+(k+1)), {queue:{scope:'scope'+this.mod_instance, position:'end'}, sync: true, from:1.0, to:0.0}),
                            Effect.Appear($('slide'+this.mod_instance+'_'+(this.i+1)), {queue:{scope:'scope'+this.mod_instance, position:'end'}, sync: true, from:0.0, to:1.0})
                        ],
                        {duration: 3,delay:3.0,afterFinish:function(){this.new_start()}.bind(this)}
                    );

                    break;
                 case 'puff':

                    k = this.i;
                    this.i++;
                    if (!$('slide'+this.mod_instance+'_'+(this.i+1))) this.i = 0;

                    new Effect.Parallel(
                        [
                            Effect.Fade($('slide'+this.mod_instance+'_'+(k+1)), {queue:{scope:'scope'+this.mod_instance, position:'end'}, sync: true, from:1.0, to:0.0}),
                            Effect.Appear($('slide'+this.mod_instance+'_'+(this.i+1)), {queue:{scope:'scope'+this.mod_instance, position:'end'}, sync: true, from:0.0, to:1.0})
                        ],
                        {duration: 3,delay:3.0,afterFinish:function(){this.new_start()}.bind(this)}
                    );


                    break;
                }

      }

    }