MooTools.More={"version":"1.2.3.1"};
var Log=new Class({log:function(){Log.logger.call(this,arguments)
}});
Log.logged=[];
Log.logger=function(){if(window.console&&console.log){console.log.apply(console,arguments)
}else{Log.logged.push(arguments)
}};
Class.refactor=function(B,A){$each(A,function(E,D){var C=B.prototype[D];
if(C&&(C=C._origin)&&typeof E=="function"){B.implement(D,function(){var F=this.previous;
this.previous=C;
var G=E.apply(this,arguments);
this.previous=F;
return G
})
}else{B.implement(D,E)
}});
return B
};
Class.Mutators.Binds=function(A){return A
};
Class.Mutators.initialize=function(A){return function(){$splat(this.Binds).each(function(B){var C=this[B];
if(C){this[B]=C.bind(this)
}},this);
return A.apply(this,arguments)
}
};
Class.Occlude=new Class({occlude:function(C,B){B=document.id(B||this.element);
var A=B.retrieve(C||this.property);
if(A&&!$defined(this.occluded)){this.occluded=A
}else{this.occluded=false;
B.store(C||this.property,this)
}return this.occluded
}});
Element.implement({measure:function(E){var G=function(H){return !!(!H||H.offsetHeight||H.offsetWidth)
};
if(G(this)){return E.apply(this)
}var D=this.getParent(),B=[],F=[];
while(!G(D)&&D!=document.body){B.push(D.expose());
D=D.getParent()
}var C=this.expose();
var A=E.apply(this);
C();
B.each(function(H){H()
});
return A
},expose:function(){if(this.getStyle("display")!="none"){return $empty
}var A=this.style.cssText;
this.setStyles({display:"block",position:"absolute",visibility:"hidden"});
return function(){this.style.cssText=A
}.bind(this)
},getDimensions:function(A){A=$merge({computeSize:false},A);
var D={};
var C=function(F,E){return(E.computeSize)?F.getComputedSize(E):F.getSize()
};
if(this.getStyle("display")=="none"){D=this.measure(function(){return C(this,A)
})
}else{try{D=C(this,A)
}catch(B){}}return $chk(D.x)?$extend(D,{width:D.x,height:D.y}):$extend(D,{x:D.width,y:D.height})
},getComputedSize:function(A){A=$merge({styles:["padding","border"],plains:{height:["top","bottom"],width:["left","right"]},mode:"both"},A);
var C={width:0,height:0};
switch(A.mode){case"vertical":delete C.width;
delete A.plains.width;
break;
case"horizontal":delete C.height;
delete A.plains.height;
break
}var B=[];
$each(A.plains,function(G,F){G.each(function(H){A.styles.each(function(I){B.push((I=="border")?I+"-"+H+"-"+"width":I+"-"+H)
})
})
});
var E={};
B.each(function(F){E[F]=this.getComputedStyle(F)
},this);
var D=[];
$each(A.plains,function(G,F){var H=F.capitalize();
C["total"+H]=0;
C["computed"+H]=0;
G.each(function(I){C["computed"+I.capitalize()]=0;
B.each(function(K,J){if(K.test(I)){E[K]=E[K].toInt()||0;
C["total"+H]=C["total"+H]+E[K];
C["computed"+I.capitalize()]=C["computed"+I.capitalize()]+E[K]
}if(K.test(I)&&F!=K&&(K.test("border")||K.test("padding"))&&!D.contains(K)){D.push(K);
C["computed"+H]=C["computed"+H]-E[K]
}})
})
});
["Width","Height"].each(function(G){var F=G.toLowerCase();
if(!$chk(C[F])){return 
}C[F]=C[F]+this["offset"+G]+C["computed"+G];
C["total"+G]=C[F]+C["total"+G];
delete C["computed"+G]
},this);
return $extend(E,C)
}});
(function(){var A=Element.prototype.position;
Element.implement({position:function(R){if(R&&($defined(R.x)||$defined(R.y))){return A?A.apply(this,arguments):this
}$each(R||{},function(T,S){if(!$defined(T)){delete R[S]
}});
R=$merge({relativeTo:document.body,position:{x:"center",y:"center"},edge:false,offset:{x:0,y:0},returnPos:false,relFixedPosition:false,ignoreMargins:false,allowNegative:false},R);
var B={x:0,y:0};
var H=false;
var C=this.measure(function(){return document.id(this.getOffsetParent())
});
if(C&&C!=this.getDocument().body){B=C.measure(function(){return this.getPosition()
});
H=true;
R.offset.x=R.offset.x-B.x;
R.offset.y=R.offset.y-B.y
}var Q=function(S){if($type(S)!="string"){return S
}S=S.toLowerCase();
var T={};
if(S.test("left")){T.x="left"
}else{if(S.test("right")){T.x="right"
}else{T.x="center"
}}if(S.test("upper")||S.test("top")){T.y="top"
}else{if(S.test("bottom")){T.y="bottom"
}else{T.y="center"
}}return T
};
R.edge=Q(R.edge);
R.position=Q(R.position);
if(!R.edge){if(R.position.x=="center"&&R.position.y=="center"){R.edge={x:"center",y:"center"}
}else{R.edge={x:"left",y:"top"}
}}this.setStyle("position","absolute");
var P=document.id(R.relativeTo)||document.body;
var I=P==document.body?window.getScroll():P.getPosition();
var O=I.y;
var G=I.x;
if(Browser.Engine.trident){var L=P.getScrolls();
O+=L.y;
G+=L.x
}var J=this.getDimensions({computeSize:true,styles:["padding","border","margin"]});
if(R.ignoreMargins){R.offset.x=R.offset.x-J["margin-left"];
R.offset.y=R.offset.y-J["margin-top"]
}var N={};
var D=R.offset.y;
var E=R.offset.x;
var K=window.getSize();
switch(R.position.x){case"left":N.x=G+E;
break;
case"right":N.x=G+E+P.offsetWidth;
break;
default:N.x=G+((P==document.body?K.x:P.offsetWidth)/2)+E;
break
}switch(R.position.y){case"top":N.y=O+D;
break;
case"bottom":N.y=O+D+P.offsetHeight;
break;
default:N.y=O+((P==document.body?K.y:P.offsetHeight)/2)+D;
break
}if(R.edge){var M={};
switch(R.edge.x){case"left":M.x=0;
break;
case"right":M.x=-J.x-J.computedRight-J.computedLeft;
break;
default:M.x=-(J.x/2);
break
}switch(R.edge.y){case"top":M.y=0;
break;
case"bottom":M.y=-J.y-J.computedTop-J.computedBottom;
break;
default:M.y=-(J.y/2);
break
}N.x=N.x+M.x;
N.y=N.y+M.y
}N={left:((N.x>=0||H||R.allowNegative)?N.x:0).toInt(),top:((N.y>=0||H||R.allowNegative)?N.y:0).toInt()};
if(P.getStyle("position")=="fixed"||R.relFixedPosition){var F=window.getScroll();
N.top=N.top.toInt()+F.y;
N.left=N.left.toInt()+F.x
}if(R.returnPos){return N
}else{this.setStyles(N)
}return this
}})
})();
Element.implement({isDisplayed:function(){return this.getStyle("display")!="none"
},toggle:function(){return this[this.isDisplayed()?"hide":"show"]()
},hide:function(){var B;
try{if("none"!=this.getStyle("display")){B=this.getStyle("display")
}}catch(A){}return this.store("originalDisplay",B||"block").setStyle("display","none")
},show:function(A){return this.setStyle("display",A||this.retrieve("originalDisplay")||"block")
},swapClass:function(A,B){return this.removeClass(A).addClass(B)
}});
var OverText=new Class({Implements:[Options,Events,Class.Occlude],Binds:["reposition","assert","focus"],options:{element:"label",positionOptions:{position:"upperLeft",edge:"upperLeft",offset:{x:4,y:2}},poll:false,pollInterval:250},property:"OverText",initialize:function(B,A){this.element=document.id(B);
if(this.occlude()){return this.occluded
}this.setOptions(A);
this.attach(this.element);
OverText.instances.push(this);
if(this.options.poll){this.poll()
}return this
},toElement:function(){return this.element
},attach:function(){var A=this.options.textOverride||this.element.get("alt")||this.element.get("title");
if(!A){return 
}this.text=new Element(this.options.element,{"class":"overTxtLabel",styles:{lineHeight:"normal",position:"absolute"},html:A,events:{click:this.hide.pass(true,this)}}).inject(this.element,"after");
if(this.options.element=="label"){this.text.set("for",this.element.get("id"))
}this.element.addEvents({focus:this.focus,blur:this.assert,change:this.assert}).store("OverTextDiv",this.text);
window.addEvent("resize",this.reposition.bind(this));
this.assert(true);
this.reposition()
},startPolling:function(){this.pollingPaused=false;
return this.poll()
},poll:function(A){if(this.poller&&!A){return this
}var B=function(){if(!this.pollingPaused){this.assert(true)
}}.bind(this);
if(A){$clear(this.poller)
}else{this.poller=B.periodical(this.options.pollInterval,this)
}return this
},stopPolling:function(){this.pollingPaused=true;
return this.poll(true)
},focus:function(){if(!this.text.isDisplayed()||this.element.get("disabled")){return 
}this.hide()
},hide:function(B){if(this.text.isDisplayed()&&!this.element.get("disabled")){this.text.hide();
this.fireEvent("textHide",[this.text,this.element]);
this.pollingPaused=true;
try{if(!B){this.element.fireEvent("focus").focus()
}}catch(A){}}return this
},show:function(){if(!this.text.isDisplayed()){this.text.show();
this.reposition();
this.fireEvent("textShow",[this.text,this.element]);
this.pollingPaused=false
}return this
},assert:function(A){this[this.test()?"show":"hide"](A)
},test:function(){var A=this.element.get("value");
return !A
},reposition:function(){this.assert(true);
if(!this.element.getParent()||!this.element.offsetHeight){return this.stopPolling().hide()
}if(this.test()){this.text.position($merge(this.options.positionOptions,{relativeTo:this.element}))
}return this
}});
OverText.instances=[];
OverText.update=function(){return OverText.instances.map(function(A){if(A.element&&A.text){return A.reposition()
}return null
})
};
if(window.Fx&&Fx.Reveal){Fx.Reveal.implement({hideInputs:Browser.Engine.trident?"select, input, textarea, object, embed, .overTxtLabel":false})
}Fx.Elements=new Class({Extends:Fx.CSS,initialize:function(B,A){this.elements=this.subject=$$(B);
this.parent(A)
},compute:function(G,H,I){var C={};
for(var D in G){var A=G[D],E=H[D],F=C[D]={};
for(var B in A){F[B]=this.parent(A[B],E[B],I)
}}return C
},set:function(B){for(var C in B){var A=B[C];
for(var D in A){this.render(this.elements[C],D,A[D],this.options.unit)
}}return this
},start:function(C){if(!this.check(C)){return this
}var H={},I={};
for(var D in C){var F=C[D],A=H[D]={},G=I[D]={};
for(var B in F){var E=this.prepare(this.elements[D],B,F[B]);
A[B]=E.from;
G[B]=E.to
}}return this.parent(H,I)
}});
Fx.Scroll=new Class({Extends:Fx,options:{offset:{x:0,y:0},wheelStops:true},initialize:function(B,A){this.element=this.subject=document.id(B);
this.parent(A);
var D=this.cancel.bind(this,false);
if($type(this.element)!="element"){this.element=document.id(this.element.getDocument().body)
}var C=this.element;
if(this.options.wheelStops){this.addEvent("start",function(){C.addEvent("mousewheel",D)
},true);
this.addEvent("complete",function(){C.removeEvent("mousewheel",D)
},true)
}},set:function(){var A=Array.flatten(arguments);
this.element.scrollTo(A[0],A[1])
},compute:function(C,B,A){return[0,1].map(function(D){return Fx.compute(C[D],B[D],A)
})
},start:function(C,H){if(!this.check(C,H)){return this
}var E=this.element.getSize(),F=this.element.getScrollSize();
var B=this.element.getScroll(),D={x:C,y:H};
for(var G in D){var A=F[G]-E[G];
if($chk(D[G])){D[G]=($type(D[G])=="number")?D[G].limit(0,A):A
}else{D[G]=B[G]
}D[G]+=this.options.offset[G]
}return this.parent([B.x,B.y],[D.x,D.y])
},toTop:function(){return this.start(false,0)
},toLeft:function(){return this.start(0,false)
},toRight:function(){return this.start("right",false)
},toBottom:function(){return this.start(false,"bottom")
},toElement:function(B){var A=document.id(B).getPosition(this.element);
return this.start(A.x,A.y)
},scrollIntoView:function(C,E,D){E=E?$splat(E):["x","y"];
var H={};
C=document.id(C);
var F=C.getPosition(this.element);
var I=C.getSize();
var G=this.element.getScroll();
var A=this.element.getSize();
var B={x:F.x+I.x,y:F.y+I.y};
["x","y"].each(function(J){if(E.contains(J)){if(B[J]>G[J]+A[J]){H[J]=B[J]-A[J]
}if(F[J]<G[J]){H[J]=F[J]
}}if(H[J]==null){H[J]=G[J]
}if(D&&D[J]){H[J]=H[J]+D[J]
}},this);
if(H.x!=G.x||H.y!=G.y){this.start(H.x,H.y)
}return this
}});
Fx.Slide=new Class({Extends:Fx,options:{mode:"vertical"},initialize:function(B,A){this.addEvent("complete",function(){this.open=(this.wrapper["offset"+this.layout.capitalize()]!=0);
if(this.open&&Browser.Engine.webkit419){this.element.dispose().inject(this.wrapper)
}},true);
this.element=this.subject=document.id(B);
this.parent(A);
var C=this.element.retrieve("wrapper");
this.wrapper=C||new Element("div",{styles:$extend(this.element.getStyles("margin","position"),{overflow:"hidden"})}).wraps(this.element);
this.element.store("wrapper",this.wrapper).setStyle("margin",0);
this.now=[];
this.open=true
},vertical:function(){this.margin="margin-top";
this.layout="height";
this.offset=this.element.offsetHeight
},horizontal:function(){this.margin="margin-left";
this.layout="width";
this.offset=this.element.offsetWidth
},set:function(A){this.element.setStyle(this.margin,A[0]);
this.wrapper.setStyle(this.layout,A[1]);
return this
},compute:function(C,B,A){return[0,1].map(function(D){return Fx.compute(C[D],B[D],A)
})
},start:function(B,E){if(!this.check(B,E)){return this
}this[E||this.options.mode]();
var D=this.element.getStyle(this.margin).toInt();
var C=this.wrapper.getStyle(this.layout).toInt();
var A=[[D,C],[0,this.offset]];
var G=[[D,C],[-this.offset,0]];
var F;
switch(B){case"in":F=A;
break;
case"out":F=G;
break;
case"toggle":F=(C==0)?A:G
}return this.parent(F[0],F[1])
},slideIn:function(A){return this.start("in",A)
},slideOut:function(A){return this.start("out",A)
},hide:function(A){this[A||this.options.mode]();
this.open=false;
return this.set([-this.offset,0])
},show:function(A){this[A||this.options.mode]();
this.open=true;
return this.set([0,this.offset])
},toggle:function(A){return this.start("toggle",A)
}});
Element.Properties.slide={set:function(B){var A=this.retrieve("slide");
if(A){A.cancel()
}return this.eliminate("slide").store("slide:options",$extend({link:"cancel"},B))
},get:function(A){if(A||!this.retrieve("slide")){if(A||!this.retrieve("slide:options")){this.set("slide",A)
}this.store("slide",new Fx.Slide(this,this.retrieve("slide:options")))
}return this.retrieve("slide")
}};
Element.implement({slide:function(D,E){D=D||"toggle";
var B=this.get("slide"),A;
switch(D){case"hide":B.hide(E);
break;
case"show":B.show(E);
break;
case"toggle":var C=this.retrieve("slide:flag",B.open);
B[C?"slideOut":"slideIn"](E);
this.store("slide:flag",!C);
A=true;
break;
default:B.start(D,E)
}if(!A){this.eliminate("slide:flag")
}return this
}});
var Drag=new Class({Implements:[Events,Options],options:{snap:6,unit:"px",grid:false,style:true,limit:false,handle:false,invert:false,preventDefault:false,modifiers:{x:"left",y:"top"}},initialize:function(){var B=Array.link(arguments,{"options":Object.type,"element":$defined});
this.element=document.id(B.element);
this.document=this.element.getDocument();
this.setOptions(B.options||{});
var A=$type(this.options.handle);
this.handles=((A=="array"||A=="collection")?$$(this.options.handle):document.id(this.options.handle))||this.element;
this.mouse={"now":{},"pos":{}};
this.value={"start":{},"now":{}};
this.selection=(Browser.Engine.trident)?"selectstart":"mousedown";
this.bound={start:this.start.bind(this),check:this.check.bind(this),drag:this.drag.bind(this),stop:this.stop.bind(this),cancel:this.cancel.bind(this),eventStop:$lambda(false)};
this.attach()
},attach:function(){this.handles.addEvent("mousedown",this.bound.start);
return this
},detach:function(){this.handles.removeEvent("mousedown",this.bound.start);
return this
},start:function(C){if(this.options.preventDefault){C.preventDefault()
}this.mouse.start=C.page;
this.fireEvent("beforeStart",this.element);
var A=this.options.limit;
this.limit={x:[],y:[]};
for(var D in this.options.modifiers){if(!this.options.modifiers[D]){continue
}if(this.options.style){this.value.now[D]=this.element.getStyle(this.options.modifiers[D]).toInt()
}else{this.value.now[D]=this.element[this.options.modifiers[D]]
}if(this.options.invert){this.value.now[D]*=-1
}this.mouse.pos[D]=C.page[D]-this.value.now[D];
if(A&&A[D]){for(var B=2;
B--;
B){if($chk(A[D][B])){this.limit[D][B]=$lambda(A[D][B])()
}}}}if($type(this.options.grid)=="number"){this.options.grid={x:this.options.grid,y:this.options.grid}
}this.document.addEvents({mousemove:this.bound.check,mouseup:this.bound.cancel});
this.document.addEvent(this.selection,this.bound.eventStop)
},check:function(A){if(this.options.preventDefault){A.preventDefault()
}var B=Math.round(Math.sqrt(Math.pow(A.page.x-this.mouse.start.x,2)+Math.pow(A.page.y-this.mouse.start.y,2)));
if(B>this.options.snap){this.cancel();
this.document.addEvents({mousemove:this.bound.drag,mouseup:this.bound.stop});
this.fireEvent("start",[this.element,A]).fireEvent("snap",this.element)
}},drag:function(A){if(this.options.preventDefault){A.preventDefault()
}this.mouse.now=A.page;
for(var B in this.options.modifiers){if(!this.options.modifiers[B]){continue
}this.value.now[B]=this.mouse.now[B]-this.mouse.pos[B];
if(this.options.invert){this.value.now[B]*=-1
}if(this.options.limit&&this.limit[B]){if($chk(this.limit[B][1])&&(this.value.now[B]>this.limit[B][1])){this.value.now[B]=this.limit[B][1]
}else{if($chk(this.limit[B][0])&&(this.value.now[B]<this.limit[B][0])){this.value.now[B]=this.limit[B][0]
}}}if(this.options.grid[B]){this.value.now[B]-=((this.value.now[B]-(this.limit[B][0]||0))%this.options.grid[B])
}if(this.options.style){this.element.setStyle(this.options.modifiers[B],this.value.now[B]+this.options.unit)
}else{this.element[this.options.modifiers[B]]=this.value.now[B]
}}this.fireEvent("drag",[this.element,A])
},cancel:function(A){this.document.removeEvent("mousemove",this.bound.check);
this.document.removeEvent("mouseup",this.bound.cancel);
if(A){this.document.removeEvent(this.selection,this.bound.eventStop);
this.fireEvent("cancel",this.element)
}},stop:function(A){this.document.removeEvent(this.selection,this.bound.eventStop);
this.document.removeEvent("mousemove",this.bound.drag);
this.document.removeEvent("mouseup",this.bound.stop);
if(A){this.fireEvent("complete",[this.element,A])
}}});
Element.implement({makeResizable:function(A){var B=new Drag(this,$merge({modifiers:{x:"width",y:"height"}},A));
this.store("resizer",B);
return B.addEvent("drag",function(){this.fireEvent("resize",B)
}.bind(this))
}});
var Slider=new Class({Implements:[Events,Options],Binds:["clickedElement","draggedKnob","scrolledElement"],options:{onTick:function(A){if(this.options.snap){A=this.toPosition(this.step)
}this.knob.setStyle(this.property,A)
},snap:false,offset:0,range:false,wheel:false,steps:100,mode:"horizontal"},initialize:function(F,A,E){this.setOptions(E);
this.element=document.id(F);
this.knob=document.id(A);
this.previousChange=this.previousEnd=this.step=-1;
var G,B={},D={"x":false,"y":false};
switch(this.options.mode){case"vertical":this.axis="y";
this.property="top";
G="offsetHeight";
break;
case"horizontal":this.axis="x";
this.property="left";
G="offsetWidth"
}this.half=this.knob[G]/2;
this.full=this.element[G]-this.knob[G]+(this.options.offset*2);
this.min=$chk(this.options.range[0])?this.options.range[0]:0;
this.max=$chk(this.options.range[1])?this.options.range[1]:this.options.steps;
this.range=this.max-this.min;
this.steps=this.options.steps||this.full;
this.stepSize=Math.abs(this.range)/this.steps;
this.stepWidth=this.stepSize*this.full/Math.abs(this.range);
this.knob.setStyle("position","relative").setStyle(this.property,-this.options.offset);
D[this.axis]=this.property;
B[this.axis]=[-this.options.offset,this.full-this.options.offset];
this.bound={clickedElement:this.clickedElement.bind(this),scrolledElement:this.scrolledElement.bindWithEvent(this),draggedKnob:this.draggedKnob.bind(this)};
var C={snap:0,limit:B,modifiers:D,onDrag:this.bound.draggedKnob,onStart:this.bound.draggedKnob,onBeforeStart:(function(){this.isDragging=true
}).bind(this),onComplete:function(){this.isDragging=false;
this.draggedKnob();
this.end()
}.bind(this)};
if(this.options.snap){C.grid=Math.ceil(this.stepWidth);
C.limit[this.axis][1]=this.full
}this.drag=new Drag(this.knob,C);
this.attach()
},attach:function(){this.element.addEvent("mousedown",this.bound.clickedElement);
if(this.options.wheel){this.element.addEvent("mousewheel",this.bound.scrolledElement)
}this.drag.attach();
return this
},detach:function(){this.element.removeEvent("mousedown",this.bound.clickedElement);
this.element.removeEvent("mousewheel",this.bound.scrolledElement);
this.drag.detach();
return this
},set:function(A){if(!((this.range>0)^(A<this.min))){A=this.min
}if(!((this.range>0)^(A>this.max))){A=this.max
}this.step=Math.round(A);
this.checkStep();
this.fireEvent("tick",this.toPosition(this.step));
this.end();
return this
},clickedElement:function(C){if(this.isDragging||C.target==this.knob){return 
}var B=this.range<0?-1:1;
var A=C.page[this.axis]-this.element.getPosition()[this.axis]-this.half;
A=A.limit(-this.options.offset,this.full-this.options.offset);
this.step=Math.round(this.min+B*this.toStep(A));
this.checkStep();
this.fireEvent("tick",A);
this.end()
},scrolledElement:function(A){var B=(this.options.mode=="horizontal")?(A.wheel<0):(A.wheel>0);
this.set(B?this.step-this.stepSize:this.step+this.stepSize);
A.stop()
},draggedKnob:function(){var B=this.range<0?-1:1;
var A=this.drag.value.now[this.axis];
A=A.limit(-this.options.offset,this.full-this.options.offset);
this.step=Math.round(this.min+B*this.toStep(A));
this.checkStep()
},checkStep:function(){if(this.previousChange!=this.step){this.previousChange=this.step;
this.fireEvent("change",this.step)
}},end:function(){if(this.previousEnd!==this.step){this.previousEnd=this.step;
this.fireEvent("complete",this.step+"")
}},toStep:function(A){var B=(A+this.options.offset)*this.stepSize/this.full*this.steps;
return this.options.steps?Math.round(B-=B%this.stepSize):B
},toPosition:function(A){return(this.full*Math.abs(this.min-A))/(this.steps*this.stepSize)-this.options.offset
}});
var Scroller=new Class({Implements:[Events,Options],options:{area:20,velocity:1,onChange:function(A,B){this.element.scrollTo(A,B)
},fps:50},initialize:function(B,A){this.setOptions(A);
this.element=document.id(B);
this.listener=($type(this.element)!="element")?document.id(this.element.getDocument().body):this.element;
this.timer=null;
this.bound={attach:this.attach.bind(this),detach:this.detach.bind(this),getCoords:this.getCoords.bind(this)}
},start:function(){this.listener.addEvents({mouseenter:this.bound.attach,mouseleave:this.bound.detach})
},stop:function(){this.listener.removeEvents({mouseenter:this.bound.attach,mouseleave:this.bound.detach});
this.timer=$clear(this.timer)
},attach:function(){this.listener.addEvent("mousemove",this.bound.getCoords)
},detach:function(){this.listener.removeEvent("mousemove",this.bound.getCoords);
this.timer=$clear(this.timer)
},getCoords:function(A){this.page=(this.listener.get("tag")=="body")?A.client:A.page;
if(!this.timer){this.timer=this.scroll.periodical(Math.round(1000/this.options.fps),this)
}},scroll:function(){var B=this.element.getSize(),A=this.element.getScroll(),F=this.element.getOffsets(),C=this.element.getScrollSize(),E={x:0,y:0};
for(var D in this.page){if(this.page[D]<(this.options.area+F[D])&&A[D]!=0){E[D]=(this.page[D]-this.options.area-F[D])*this.options.velocity
}else{if(this.page[D]+this.options.area>(B[D]+F[D])&&A[D]+B[D]!=C[D]){E[D]=(this.page[D]-B[D]+this.options.area-F[D])*this.options.velocity
}}}if(E.y||E.x){this.fireEvent("change",[A.x+E.x,A.y+E.y])
}}});