// MooTools: the javascript framework.
// Load this file's selection again by visiting: http://mootools.net/more-rc/8fbd98e3c6cb839a2c8178c5f66d0319 
// Or build this file again with packager using: packager build More/Fx.SmoothScroll
/*
---
copyrights:
  - [MooTools](http://mootools.net)

licenses:
  - [MIT License](http://mootools.net/license.txt)
...
*/
MooTools.More={version:"1.3.0.1rc1",build:"361dd6c3755b66898e9e0ee5d55c343188b619b7"};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.pass(false,this);if(typeOf(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);if(Browser.firefox){a=[Math.round(a[0]),Math.round(a[1])];}this.element.scrollTo(a[0]+this.options.offset.x,a[1]+this.options.offset.y);
},compute:function(c,b,a){return[0,1].map(function(d){return Fx.compute(c[d],b[d],a);});},start:function(b,g){if(!this.check(b,g)){return this;}var d=this.element,e=d.getScrollSize(),a=d.getScroll(),c=d.getSize();
values={x:b,y:g};for(var f in values){if(!values[f]&&values[f]!==0){values[f]=a[f];}if(typeOf(values[f])!="number"){values[f]=e[f]-c[f];}values[f]+=this.options.offset[f];
}return this.parent([a.x,a.y],[values.x,values.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,f,d){f=f?Array.from(f):["x","y"];c=document.id(c);var h={},e=c.getPosition(this.element),i=c.getSize(),g=this.element.getScroll(),a=this.element.getSize(),b={x:e.x+i.x,y:e.y+i.y};
["x","y"].each(function(j){if(f.contains(j)){if(b[j]>g[j]+a[j]){h[j]=b[j]-a[j];}if(e[j]<g[j]){h[j]=e[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;},scrollToCenter:function(d,e,g){e=e?Array.from(e):["x","y"];d=document.id(d);var h={},b=d.getPosition(this.element),c=d.getSize(),a=this.element.getScroll(),f=this.element.getSize();
["x","y"].each(function(i){if(e.contains(i)){h[i]=b[i]-(f[i]-c[i])/2;}if(h[i]==null){h[i]=a[i];}if(g&&g[i]){h[i]=h[i]+g[i];}},this);if(h.x!=a.x||h.y!=a.y){this.start(h.x,h.y);
}return this;}});Fx.SmoothScroll=new Class({Extends:Fx.Scroll,initialize:function(c,d){d=d||document;this.doc=d.getDocument();this.parent(this.doc,c);var e=d.getWindow(),a=e.location.href.match(/^[^#]*/)[0]+"#",b=$$(this.options.links||this.doc.links);
b.each(function(g){if(g.href.indexOf(a)!=0){return;}var f=g.href.substr(a.length);if(f){this.useLink(g,f);}},this);},useLink:function(b,a){b.addEvent("click",function(d){var c=document.id(a)||this.doc.getElement("a[name="+a+"]");
if(!c){return;}d.preventDefault();this.toElement(c).chain(function(){this.fireEvent("scrolledTo",[b,c]);}.bind(this));}.bind(this));return this;}});
