/*
 GNU Affero General Public License version 3 {@link http://www.gnu.org/licenses/agpl-3.0.html}
*/
(function(a){if(a.ScrollTo)window.console.warn("$.ScrollTo has already been defined...");else{a.ScrollTo={config:{duration:400,easing:"swing",callback:undefined,durationMode:"each"},configure:function(c){a.extend(a.ScrollTo.config,c||{});return this},scroll:function(c,d){var f=a.ScrollTo,b=c.pop(),e=b.$container,g=b.$target;b=a("<span/>").css({position:"absolute",top:"0px",left:"0px"});var h=e.css("position");e.css("position","relative");b.appendTo(e);var i=b.offset().top;g=g.offset().top-i;b.remove();
e.css("position",h);e.animate({scrollTop:g+"px"},d.duration,d.easing,function(j){if(c.length===0)typeof d.callback==="function"&&d.callback.apply(this,[j]);else f.scroll(c,d);return true});return true},fn:function(c){var d=a.ScrollTo,f=a(this);if(f.length===0)return this;var b=f.parent(),e=[];for(config=a.extend({},d.config,c);b.length===1&&!b.is("body");){c=b.get(0);if(b.css("overflow-y")!=="visible"&&c.scrollHeight!==c.clientHeight){e.push({$container:b,$target:f});f=b}b=b.parent()}e.push({$container:a(a.browser.msie?
"html":"body"),$target:f});if(config.durationMode==="all")config.duration/=e.length;d.scroll(e,config);return this},construct:function(c){var d=a.ScrollTo;a.fn.ScrollTo=d.fn;d.config=a.extend(d.config,c);return this}};a.ScrollTo.construct()}})(jQuery);

