var Scroller=new Class({offsetX:0,oldOffsetX:0,initialize:function(B,A){this.setOptions({width:null,height:null,delay:5,initialDelay:1500,step:1,direction:"left",mouseOverPause:true,containerEl:$("container")?$("container"):$E("body")},A);this.timer=null;this.marqueeEl=B;this.init()},init:function(){if(this.options.replaceMarqueeTags){this.options.replaceMarqueeTags=false;this.replacedMarquees=[];var B=$ES("marquee");var A;B.each(function(E){A=new Element("div");A.className=E.className;A.setStyles(E.getStyles());A.setProperties(E.getProperties());A.setHTML(E.innerHTML);E.replaceWith(A);this.replacedMarquees[this.replacedMarquees.length]=new Scroller(A,this.options)}.bind(this))}if(this.marqueeEl){var C=this.marqueeEl.getSize();var D=this.marqueeEl.getPosition();this.origPos=D;if(!this.options.height){this.options.height=C.size.y}if(!this.options.width){this.options.width=C.size.x}this.width=this.options.width;this.height=this.options.height;this.minX=-this.options.width;this.maxX=this.options.width;this.holderEl=new Element("div");this.holderEl.setStyle("position","absolute");this.holderEl.setStyle("width",this.width);this.holderEl.setStyle("overflow","hidden");this.holderEl.setStyle("z-index",9999);this.marqueeEl.setStyle("position","relative");this.marqueeEl.remove();this.holderEl.adopt(this.marqueeEl);this.holderEl.injectTop($E("body"));this.updateMarqueePos();if(this.options.direction=="right"){this.d="r";this.left=-this.width-1;this.inc=-this.options.step}else{this.d="l";this.left=this.width+1;this.inc=this.options.step}this.origWidth=this.width;this.origLeft=this.holderEl.getStyle("left").toInt();this.marqueeEl.setStyle("left",this.left);this.delay=this.options.delay;this.status="init"}},updateMarqueePos:function(){if(this.options.containerEl){var B=this.origPos;var A=this.options.containerEl.getPosition();if(this.oldCpos){if(this.oldCpos.x!=A.x||this.oldCpos.y!=A.y){B.x+=(A.x-this.oldCpos.x);B.y+=(A.y-this.oldCpos.y)}}this.oldCpos=A;if(this.offsetX){this.holderEl.setStyle("width",this.origWidth-this.offsetX)}this.holderEl.setStyle("left",B.x+this.offsetX);this.holderEl.setStyle("top",B.y)}},updateContentHTML:function(A,B){var D=this.left;this.marqueeEl.setHTML(A);var C=B;this.width=C;this.minX=-C},start:function(){if(this.status=="init"){this.status="running";this.timer=this.update.delay(this.options.initialDelay,this);if(this.options.mouseOverPause){this.holderEl.addEvent("mouseenter",function(A){this.pauseMarquee();A.stopPropagation()}.bind(this));this.holderEl.addEvent("mouseleave",function(A){this.unpauseMarquee();A.stopPropagation()}.bind(this))}if(this.replacedMarquees){this.replacedMarquees.each(function(A){A.start()})}}},stop:function(){this.status="init";$clear(this.timer);this.holderEl.removeEvents("mouseenter");this.holderEl.removeEvents("mouseleave")},pauseMarquee:function(){this.status="paused";$clear(this.timer)},unpauseMarquee:function(){if(this.status=="paused"){this.status="running";this.timer=this.update.delay(this.delay,this)}},update:function(){this.updateMarqueePos();if(this.status=="running"){this.left-=this.inc;if(this.d=="l"){if(this.left<this.minX){this.left=this.width+1}}else{if(this.left>this.maxX){this.left=-this.width-1}}this.marqueeEl.setStyle("left",this.left);this.timer=this.update.delay(this.delay,this)}}});Scroller.implement(new Options);
