    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;
		  
		  
		  this.items = $('slideshow-content-'+this.mod_instance).childElements();

      },
      start: function(){
          var thisObj = this;
          setTimeout(function() { thisObj.new_start(); }, this.timeout);
      }
     ,new_start: function(){

                switch(this.effect){
                 case 'appear':

					source = this.items[this.i];
					
					this.i++;
					if(this.items.length == this.i){
						this.i = 0;
					}
					
					target = this.items[this.i];

                    new Effect.Parallel(
                        [
                            Effect.Fade(source, {queue:{scope:'scope'+this.mod_instance, position:'end'}, sync: true, from:1.0, to:0.0}),
                            Effect.Appear(target, {queue:{scope:'scope'+this.mod_instance, position:'end'}, sync: true, from:0.0, to:1.0})
                        ],
                        {duration: 5,delay:2.0,afterFinish:function(){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':
					
					source = this.items[this.i];
					
					this.i++;
					if(this.items.length == this.i){
						this.i = 0;
					}
					
					target = this.items[this.i];
					
                   
                    //Effect.Shrink(source, {duration: 3,delay:3.0,direction:'top-left',afterFinish:function(){source.hide();target.show();this.new_start()}.bind(this)});
             

                    //new Effect.Parallel(
                       // [
                            Effect.Shrink(source, {duration: 2,delay:4.0,   direction:'center'});
                            Effect.Grow(target,   {duration: 2,delay:4.0,   direction:'center',afterFinish:function(){this.new_start()}.bind(this)});
                       // ],
                        //{duration: 3,delay:3.0,beforeStart:function(){target.show();target.setStyle({width:0,height:0});}.bind(this),afterFinish:function(){this.new_start()}.bind(this)}
                    //);					
					
					
                    break;
                }

      }

    }