function Marquee(box,content,speed,dirc,coefOverSpeed){this.box=$(box);this.content=$(content);this.speed=speed||1;this.dirc=dirc||'top';this.coefDirc=1;this.coefOverSpeed=coefOverSpeed||3;this.inverseDirc=(this.dirc=='bottom'||this.dirc=='right');var horizontalDirc=(this.dirc=='bottom'||this.dirc=='top');this.box.style.overflow='hidden';this.box.style.position='relative';this.content.style.position='relative';var boxDim=this.box['client'+(horizontalDirc?'Height':'Width')];var contentDim=this.content['offset'+(horizontalDirc?'Height':'Width')];this.middleDim=boxDim/2;this.maxDim=this.inverseDirc?-boxDim:-contentDim;this.startStep=this.inverseDirc?contentDim:boxDim;this.currentStep=this.startStep;this.eventOver=this.onMouseover.bindAsEventListener(this);Event.observe(this.box,'mouseover',this.eventOver);this.eventOut=this.onMouseout.bindAsEventListener(this);Event.observe(this.box,'mouseout',this.eventOut);this.interval=setInterval(this.interval.bind(this),35);this.eventUnload=this.unload.bindAsEventListener(this);Event.observe(window,'unload',this.eventUnload.bind(this));}
Marquee.prototype={onMouseout:function(e){Event.stopObserving(this.box,'mousemove',this.eventMouseMove);this.coefDirc=1;},onMouseover:function(e){var dim=Element.viewportOffset(this.box);if(this.dirc=='top'||this.dirc=='bottom'){this.coor=[dim[1],dim[1]+this.box.clientHeight];}else this.coor=[dim[0],dim[0]+this.box.clientWidth];this.mouseMove(e);this.eventMouseMove=this.mouseMove.bindAsEventListener(this);Event.observe(this.box,'mousemove',this.eventMouseMove);},interval:function(){var acc=this.speed*this.coefDirc;$(this.content).style[this.dirc]=this.currentStep-acc+'px';this.currentStep-=acc;if(this.currentStep>this.startStep)
this.currentStep=this.maxDim;if(this.inverseDirc){if(this.currentStep<this.maxDim)
this.currentStep=this.startStep;}else{if(this.currentStep<this.maxDim)
this.currentStep=this.startStep;}},mouseMove:function(e){if(this.dirc=='top'||this.dirc=='bottom'){var mouseCoor=Event.pointer(e).y;}else var mouseCoor=Event.pointer(e).x;var inverseCoeff=(mouseCoor-this.coor[0]>this.coor[1]-mouseCoor);var coef=inverseCoeff?this.coor[1]-mouseCoor:mouseCoor-this.coor[0];this.coefDirc=((this.middleDim-coef)/this.middleDim)*this.coefOverSpeed;if(inverseCoeff)this.coefDirc=-this.coefDirc;if(this.inverseDirc)this.coefDirc=-this.coefDirc;},unload:function(){clearInterval(this.interval);Event.stopObserving(this.box,'mouseover',this.eventOver);Event.stopObserving(this.box,'mouseout',this.eventOut);Event.stopObserving(window,'unload',this.eventUnload.bind(this));}}