var SlideShow=new Class({Implements:[Events,Options],Extends:Fx,options:{delay:1000,duration:2000,onInitialize:$empty,onChange:$empty,onMouseOver:$empty,onMouseOut:$empty,onPress:$empty,onStart:$empty,onComplete:$empty,controlers:$empty},initialize:function(element,options)
{this.setOptions(options);this.container=element,this.children=this.container.getElements(this.container.getFirst().tagName);if(this.options.controlers!=$empty)this.options.controlers.setStyle("opacity",0.5);this.options.init=!options.onInitialize?$empty:options.onInitialize.bind(this);this.options.start=!options.onStart?$empty:options.onStart.bind(this);this.options.mouseover=!options.onMouseOver?$empty:options.onMouseOver.bind(this);this.options.mouseout=!options.onMouseOut?$empty:options.onMouseOut.bind(this);this.options.click=!options.onPress?$empty:options.onPress.bind(this)
this.children.addEvent("mouseover",function(){this.options.mouseover.run();}.bindWithEvent(this));this.children.addEvent("mouseout",function(){this.options.mouseout.run();}.bindWithEvent(this));this.children.addEvent("click",function(){this.options.click.run();}.bindWithEvent(this));this.intervalID=null;this.currentIndex=0;this.children.setStyle("opacity",0);this.children[0].setStyle("opacity",1);if(this.options.controlers!=$empty)
{this.options.controlers.setStyle("opacity",0.5);this.options.controlers[0].setStyle("opacity",1);}
this.count=this.children.length;this.position=this.currentIndex+1;this.init();},init:function(){this.options.init.run()},start:function(){this.fireEvent("start");},mouseover:function(){this.options.mouseover.run()},click:function(){this.options.click.run()},complete:function(){this.fireEvent("complete");},play:function(){this.intervalID=this.next.periodical(this.options.delay,this)},stop:function(){$clear(this.intervalID);},next:function(){this.fadeOut();this.fadeIn();this.fireEvent("change");},switchTo:function(id)
{new Fx.Morph(this.children[this.currentIndex],{duration:this.options.duration,wait:false}).start({"opacity":0});if(this.options.controlers!=$empty)new Fx.Morph(this.options.controlers[this.currentIndex],{duration:this.options.duration,wait:false}).start({"opacity":0.5});this.currentIndex=parseInt(id);this.position=parseInt(id)+1;new Fx.Morph(this.children[this.currentIndex],{duration:this.options.duration,wait:false,onStart:function(){this.fireEvent("start")}.bind(this),onComplete:function(){this.fireEvent("complete")}.bind(this)}).start({"opacity":1});if(this.options.controlers!=$empty)new Fx.Morph(this.options.controlers[this.currentIndex],{duration:this.options.duration,wait:false}).start({"opacity":1});this.fireEvent("change");},fadeIn:function(){this.currentIndex=(this.currentIndex+1==this.children.length)?0:++this.currentIndex;this.position=this.currentIndex+1;new Fx.Morph(this.children[this.currentIndex],{duration:this.options.duration,wait:false,onStart:function(){this.fireEvent("start")}.bind(this),onComplete:function(){this.fireEvent("complete")}.bind(this)}).start({"opacity":1});if(this.options.controlers!=$empty)new Fx.Morph(this.options.controlers[this.currentIndex],{duration:this.options.duration,wait:false}).start({"opacity":1});},fadeOut:function(){new Fx.Morph(this.children[this.currentIndex],{duration:this.options.duration,wait:false}).start({"opacity":0});if(this.options.controlers!=$empty)new Fx.Morph(this.options.controlers[this.currentIndex],{duration:this.options.duration,wait:false}).start({"opacity":0.5});},getCount:function(){return this.count;},getPosition:function(){return this.position;},getItem:function(){return this.children[this.currentIndex];}});
