(function(a){if(typeof define==="function"&&define.amd){define(["jquery"],a)}else{if(typeof module==="object"&&module.exports){module.exports=a(require("jquery"))}else{a(jQuery)}}}(function(g){var i=Array.prototype.slice;var d=Array.prototype.splice;var f={topSpacing:0,bottomSpacing:0,className:"is-sticky",wrapperClassName:"sticky-wrapper",center:false,getWidthFrom:"",widthFromWrapper:true,responsiveWidth:false},b=g(window),e=g(document),k=[],a=b.height(),h=function(){var m=b.scrollTop(),y=e.height(),x=y-a,o=(m>x)?x-m:0;for(var r=0,p=k.length;r<p;r++){var z=k[r],n=z.stickyWrapper.offset().top,t=n-z.topSpacing-o;z.stickyWrapper.css("height",z.stickyElement.outerHeight());if(m<=t){if(z.currentTop!==null){z.stickyElement.css({width:"",position:"",top:""});z.stickyElement.parent().removeClass(z.className);z.stickyElement.trigger("sticky-end",[z]);z.currentTop=null}}else{var v=y-z.stickyElement.outerHeight()-z.topSpacing-z.bottomSpacing-m-o;if(v<0){v=v+z.topSpacing}else{v=z.topSpacing}if(z.currentTop!==v){var q;if(z.getWidthFrom){q=g(z.getWidthFrom).width()||null}else{if(z.widthFromWrapper){q=z.stickyWrapper.width()}}if(q==null){q=z.stickyElement.width()}z.stickyElement.css("width",q).css("position","fixed").css("top",v);z.stickyElement.parent().addClass(z.className);if(z.currentTop===null){z.stickyElement.trigger("sticky-start",[z])}else{z.stickyElement.trigger("sticky-update",[z])}if(z.currentTop===z.topSpacing&&z.currentTop>v||z.currentTop===null&&v<z.topSpacing){z.stickyElement.trigger("sticky-bottom-reached",[z])}else{if(z.currentTop!==null&&v===z.topSpacing&&z.currentTop<v){z.stickyElement.trigger("sticky-bottom-unreached",[z])}}z.currentTop=v}var w=z.stickyWrapper.parent();var u=(z.stickyElement.offset().top+z.stickyElement.outerHeight()>=w.offset().top+w.outerHeight())&&(z.stickyElement.offset().top<=z.topSpacing);if(u){z.stickyElement.css("position","absolute").css("top","").css("bottom",0)}else{z.stickyElement.css("position","fixed").css("top",v).css("bottom","")}}}},j=function(){a=b.height();for(var n=0,m=k.length;n<m;n++){var o=k[n];var p=null;if(o.getWidthFrom){if(o.responsiveWidth){p=g(o.getWidthFrom).width()}}else{if(o.widthFromWrapper){p=o.stickyWrapper.width()}}if(p!=null){o.stickyElement.css("width",p)}}},c={init:function(l){var m=g.extend({},f,l);return this.each(function(){var n=g(this);var o=n.attr("id");var q=o?o+"-"+f.wrapperClassName:f.wrapperClassName;var r=g("<div></div>").attr("id",q).addClass(m.wrapperClassName);n.wrapAll(r);var p=n.parent();if(m.center){p.css({width:n.outerWidth(),marginLeft:"auto",marginRight:"auto"})}if(n.css("float")==="right"){n.css({"float":"none"}).parent().css({"float":"right"})}m.stickyElement=n;m.stickyWrapper=p;m.currentTop=null;k.push(m);c.setWrapperHeight(this);c.setupChangeListeners(this)})},setWrapperHeight:function(l){var m=g(l);var n=m.parent();if(n){n.css("height",m.outerHeight())}},setupChangeListeners:function(l){if(window.MutationObserver){var m=new window.MutationObserver(function(n){if(n[0].addedNodes.length||n[0].removedNodes.length){c.setWrapperHeight(l)}});m.observe(l,{subtree:true,childList:true})}else{l.addEventListener("DOMNodeInserted",function(){c.setWrapperHeight(l)},false);l.addEventListener("DOMNodeRemoved",function(){c.setWrapperHeight(l)},false)}},update:h,unstick:function(l){return this.each(function(){var p=this;var n=g(p);var m=-1;var o=k.length;while(o-->0){if(k[o].stickyElement.get(0)===p){d.call(k,o,1);m=o}}if(m!==-1){n.unwrap();n.css({width:"",position:"",top:"","float":""})}})}};if(window.addEventListener){window.addEventListener("scroll",h,false);window.addEventListener("resize",j,false)}else{if(window.attachEvent){window.attachEvent("onscroll",h);window.attachEvent("onresize",j)}}g.fn.sticky=function(l){if(c[l]){return c[l].apply(this,i.call(arguments,1))}else{if(typeof l==="object"||!l){return c.init.apply(this,arguments)}else{g.error("Method "+l+" does not exist on jQuery.sticky")}}};g.fn.unstick=function(l){if(c[l]){return c[l].apply(this,i.call(arguments,1))}else{if(typeof l==="object"||!l){return c.unstick.apply(this,arguments)}else{g.error("Method "+l+" does not exist on jQuery.sticky")}}};g(function(){setTimeout(h,0)})}));