!function(factory){"use strict";"function"==typeof define&&define.amd?define(["jquery"],factory):"undefined"!=typeof module&&module.exports?module.exports=factory(require("jquery")):factory(jQuery)}(function($){"use strict";function isWin(elem){return!elem.nodeName||$.inArray(elem.nodeName.toLowerCase(),["iframe","#document","html","body"])!==-1}function isFunction(obj){return"function"==typeof obj}function both(val){return isFunction(val)||$.isPlainObject(val)?val:{top:val,left:val}}var $scrollTo=$.scrollTo=function(target,duration,settings){return $(window).scrollTo(target,duration,settings)};return $scrollTo.defaults={axis:"xy",duration:0,limit:!0},$.fn.scrollTo=function(target,duration,settings){"object"==typeof duration&&(settings=duration,duration=0),"function"==typeof settings&&(settings={onAfter:settings}),"max"===target&&(target=9e9),settings=$.extend({},$scrollTo.defaults,settings),duration=duration||settings.duration;var queue=settings.queue&&settings.axis.length>1;return queue&&(duration/=2),settings.offset=both(settings.offset),settings.over=both(settings.over),this.each(function(){function animate(callback){var opts=$.extend({},settings,{queue:!0,duration:duration,complete:callback&&function(){callback.call(elem,targ,settings)}});$elem.animate(attr,opts)}if(null!==target){var toff,win=isWin(this),elem=win?this.contentWindow||window:this,$elem=$(elem),targ=target,attr={};switch(typeof targ){case"number":case"string":if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(targ)){targ=both(targ);break}targ=win?$(targ):$(targ,elem);case"object":if(0===targ.length)return;(targ.is||targ.style)&&(toff=(targ=$(targ)).offset())}var offset=isFunction(settings.offset)&&settings.offset(elem,targ)||settings.offset;$.each(settings.axis.split(""),function(i,axis){var Pos="x"===axis?"Left":"Top",pos=Pos.toLowerCase(),key="scroll"+Pos,prev=$elem[key](),max=$scrollTo.max(elem,axis);if(toff)attr[key]=toff[pos]+(win?0:prev-$elem.offset()[pos]),settings.margin&&(attr[key]-=parseInt(targ.css("margin"+Pos),10)||0,attr[key]-=parseInt(targ.css("border"+Pos+"Width"),10)||0),attr[key]+=offset[pos]||0,settings.over[pos]&&(attr[key]+=targ["x"===axis?"width":"height"]()*settings.over[pos]);else{var val=targ[pos];attr[key]=val.slice&&"%"===val.slice(-1)?parseFloat(val)/100*max:val}settings.limit&&/^\d+$/.test(attr[key])&&(attr[key]=attr[key]<=0?0:Math.min(attr[key],max)),!i&&settings.axis.length>1&&(prev===attr[key]?attr={}:queue&&(animate(settings.onAfterFirst),attr={}))}),animate(settings.onAfter)}})},$scrollTo.max=function(elem,axis){var Dim="x"===axis?"Width":"Height",scroll="scroll"+Dim;if(!isWin(elem))return elem[scroll]-$(elem)[Dim.toLowerCase()]();var size="client"+Dim,doc=elem.ownerDocument||elem.document,html=doc.documentElement,body=doc.body;return Math.max(html[scroll],body[scroll])-Math.min(html[size],body[size])},$.Tween.propHooks.scrollLeft=$.Tween.propHooks.scrollTop={get:function(t){return $(t.elem)[t.prop]()},set:function(t){var curr=this.get(t);if(t.options.interrupt&&t._last&&t._last!==curr)return $(t.elem).stop();var next=Math.round(t.now);curr!==next&&($(t.elem)[t.prop](next),t._last=this.get(t))}},$scrollTo});