Mooquee=new Class({Implements:[Options],options:{element:"mooquee",cssitem:"mooquee_item",firstitem:0,trans:{tin:"up",tout:"fade"},pause:1,duration:1,overflow:"hidden",startOnLoad:true,pauseOnHover:true,onTransitionStart:function(){},onTransitionComplete:function(){}},initialize:function(a){this.setOptions(a);this.itemFXs=[];this.inDelay=this.outDelay=0;this.started=false;this.currentitem=this.options.firstitem;this.options.pause!=-1?this.loop=true:(this.loop=false,this.options.pause=2);this.previousitem= -1;if(typeof this.options.trans=="string")this.options.trans={tin:this.options.trans,tout:this.options.trans};window.addEvent("domready",function(){this.items=$$("#"+this.options.element+" ."+this.options.cssitem);this.totalitems=this.items.length;if($(this.options.element).style.overflow!="hidden")$(this.options.element).style.overflow="hidden";if($(this.options.element).style.position!="relative")$(this.options.element).style.position="relative";this.setMooqueeFXs();this.setTrans(this.options.trans); if(this.options.startOnLoad)this.loopTimer=this.mooveAll.delay(this.options.pause*1E3,this);this.options.pauseOnHover&&($(this.options.element).addEvent("mouseover",function(){this.pauseMooquee()}.bind(this)),$(this.options.element).addEvent("mouseout",function(){this.resumeMooquee()}.bind(this)))}.bind(this))},setMooqueeItems:function(){this.resetting=true;var a=0;this.items.each(function(b){if($(b).style.position!="absolute")$(b).style.position="absolute";$(b).style.width=$(this.options.element).clientWidth+ "px";$(b).style.overflow=this.options.overflow;a==this.currentitem?this.itemFXs[a].set(this.resetStyle).set(this.inStyle):this.itemFXs[a].set(this.resetStyle).set(this.startStyle);a++}.bind(this));this.resetting=false},setMooqueeFXs:function(){var a=0;this.items.each(function(b){this.itemFXs[a]=new Fx.Morph(b,{duration:this.options.duration*1E3});a++}.bind(this))},mooveAll:function(){citem=this.currentitem+1==this.totalitems?0:this.currentitem+1;this.moove(citem)},moove:function(a){if(a<this.totalitems)if(this.mousedOver)this.moove.delay(50, this,a);else if(a!=this.currentitem){$clear(this.loopTimer);if(this.previousitem!=-1)this.itemFXs[this.previousitem].cancel().set(this.resetStyle).set(this.startStyle),this.itemFXs[this.currentitem].cancel().set(this.resetStyle).set(this.inStyle),this.previousitem=-1;this.returnpreviousitem=this.previousitem=this.currentitem;this.returncurrentitem=this.currentitem=a;this.options.onTransitionStart(this.returncurrentitem,this.returnpreviousitem);this.itemFXs[this.previousitem].start(this.outStyle).chain(function(){if(!this.resetting)this.itemFXs[this.previousitem].set(this.resetStyle).set(this.startStyle), this.previousitem=-1}.bind(this));(function(){this.itemFXs[this.currentitem].start(this.inStyle).chain(function(){this.options.onTransitionComplete(this.returncurrentitem,this.returnpreviousitem);if(this.loop==true)this.loopTimer=this.mooveAll.delay(this.options.pause*1E3,this)}.bind(this))}).delay(this.inDelay*this.options.pause*1E3,this)}},setTrans:function(a){this.startStyle={};this.inStyle={};this.outStyle={};this.resetStyle={};this.inDelay=0;switch(a.tin){case "up":this.startStyle={top:$(this.options.element).clientHeight}; this.inStyle={top:0};break;case "down":this.startStyle={top:$(this.options.element).clientHeight*-1};this.inStyle={top:0};break;case "left":this.startStyle={left:$(this.options.element).clientWidth};this.inStyle={left:0};break;case "right":this.startStyle={left:$(this.options.element).clientWidth*-1};this.inStyle={left:0};break;case "fade":this.startStyle={opacity:0},this.inStyle={opacity:1}}switch(a.tout){case "up":this.outStyle={top:$(this.options.element).clientHeight*-1};this.resetStyle={top:0}; break;case "down":this.outStyle={top:$(this.options.element).clientHeight};this.resetStyle={top:0};break;case "left":this.outStyle={left:$(this.options.element).clientWidth*-1};this.resetStyle={left:0};break;case "right":this.outStyle={left:$(this.options.element).clientWidth};this.resetStyle={left:0};break;case "fade":this.outStyle={opacity:0},this.resetStyle={opacity:1},this.inDelay=0.5}this.setMooqueeItems()},pauseMooquee:function(){this.previousitem!=-1&&(this.itemFXs[this.previousitem].pause(), this.itemFXs[this.currentitem].pause());this.mousedOver=true},resumeMooquee:function(){this.previousitem!=-1&&(this.itemFXs[this.previousitem].resume(),this.itemFXs[this.currentitem].resume());this.mousedOver=false},stopMooqueeLoop:function(){this.loop=false;this.options.pause=2}});
