!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)}(function(e){"use strict";var t=!1===e.support.optSelected,o={};function i(i){var n,s,l=o[e(this).prop("stickOnScroll")];for(n=0,s=l.length;n=s?(r={position:"fixed",top:o.topOffset-o.eleTopMargin},!1===o.isWindow&&(r={position:"absolute",top:i+o.topOffset-o.eleTopMargin}),o.isStick=!0,o.footerElement.length&&(c=o.getEleTopPosition(o.footerElement),p=o.ele.outerHeight(),f=r.top+p+o.bottomOffset+o.topOffset,!1===o.isWindow?f=p+o.bottomOffset+o.topOffset:(f=r.top+i+p+o.bottomOffset,c=o.getElementDistanceFromViewport(o.footerElement)),f>c&&(!0===o.isWindow?r.top=c-(i+p+o.bottomOffset):r.top=i-(f-c))),!0===o.setParentOnStick&&o.eleParent.css("height",o.eleParent.height()),!0===o.setWidthOnStick&&o.ele.css("width",o.ele.css("width")),o.isViewportOffsetParent||(r.top=r.top-o.getElementDistanceFromViewport(o.eleOffsetParent)),t&&!1===o.isWindow?o.ele.addClass(o.stickClass).css("position",r.position).animate({top:r.top},150):o.ele.css(r).addClass(o.stickClass),!1===o.wasStickCalled&&(o.wasStickCalled=!0,setTimeout(function(){!0===o.isOnStickSet&&o.onStick.call(o.ele,o.ele),o.ele.trigger("stickOnScroll:onStick",[o.ele])},20))):i<=s&&o.isStick&&(o.ele.css({position:"",top:""}).removeClass(o.stickClass),o.isStick=!1,!0===o.setParentOnStick&&o.eleParent.css("height",""),!0===o.setWidthOnStick&&o.ele.css("width",""),o.wasStickCalled=!1,setTimeout(function(){o.isOnUnStickSet&&o.onUnStick.call(o.ele,o.ele),o.ele.trigger("stickOnScroll:onUnStick",[o.ele])},20)),0===i&&o.setEleTop())}(l[n]);return this}e.fn.stickOnScroll=function(t){return this.each(function(){if(e(this).hasClass("hasStickOnScroll"))return this;var n,s,l=e.extend({},{topOffset:0,bottomOffset:5,footerElement:null,viewport:window,stickClass:"stickOnScroll-on",setParentOnStick:!1,setWidthOnStick:!1,onStick:null,onUnStick:null},t),r=1800;function c(){l.setEleTop(),n=l.viewport.prop("stickOnScroll"),l.isWindow||(l.isViewportOffsetParent=l.eleOffsetParent[0]===l.viewport[0]),n||(n="stickOnScroll"+String(Math.random()).replace(/\D/g,""),l.viewport.prop("stickOnScroll",n),o[n]=[],l.viewport.on("scroll",i)),o[n].push(l),l.viewport.trigger("scroll")}return l.isStick=!1,l.ele=e(this).addClass("hasStickOnScroll"),l.eleParent=l.ele.parent(),l.eleOffsetParent=l.ele.offsetParent(),l.viewport=e(l.viewport),l.eleTop=0,l.eleTopMargin=parseFloat(l.ele.css("margin-top")||0)||0,l.footerElement=e(l.footerElement),l.isWindow=!0,l.isOnStickSet=e.isFunction(l.onStick),l.isOnUnStickSet=e.isFunction(l.onUnStick),l.wasStickCalled=!1,l.isViewportOffsetParent=!0,l.setEleTop=function(){!1===l.isStick&&(l.isWindow?l.eleTop=l.ele.offset().top:l.eleTop=l.ele.offset().top-l.viewport.offset().top)},l.getEleTopPosition=function(e){return l.isWindow?e.offset().top:e.offset().top-l.viewport.offset().top},l.getEleMaxTop=function(){var e=l.eleTop-l.topOffset;return l.isWindow||(e+=l.eleTopMargin),e},l.getElementDistanceFromViewport=function(e){var t=e.position().top,o=e.offsetParent();return o.is("body")||o.is("html")?t:(o[0]!==l.viewport[0]?t+=l.getElementDistanceFromViewport(o):t+=l.viewport.scrollTop(),t)},!0===l.setParentOnStick&&l.eleParent.is("body")&&(l.setParentOnStick=!1),e.isWindow(l.viewport[0])||(l.isWindow=!1),l.ele.is(":visible")?c():s=setInterval(function(){!l.ele.is(":visible")&&r||(clearInterval(s),c()),--r},100),this})}});