(function(e,t,n,o){e.fn.nag=function(n){var i=e.extend(!0,{},e.fn.nag.settings,n),a=arguments||!1;return e(this).each(function(){var n,s,r,c,l,u,d,m,f,g=e(this),p=g.find(i.selector.close),h=e(i.context),v=g.data("module"),b=i.className,y=t.requestAnimationFrame||t.mozRequestAnimationFrame||t.webkitRequestAnimationFrame||t.msRequestAnimationFrame||function(e){setTimeout(e,0)};return f={initialize:function(){n=g.offset(),s=g.outerHeight(),r=h.outerWidth(),c=h.outerHeight(),l=h.offset(),g.data("module",f),p.on("mouseenter mouseleave",f.event.hover).on("click",f.dismiss),i.context==t&&"fixed"==i.position&&g.addClass(b.fixed),i.sticky&&("absolute"==i.position?h.on("scroll resize",f.event.scroll):e(t).on("scroll resize",f.event.scroll),e.proxy(f.event.scroll,this)()),i.followLink&&g.on("mouseenter mouseleave",f.event.hover).on("click",f.followLink),i.displayTime>0&&setTimeout(f.hide,i.displayTime),f.should.show()?g.is(":visible")||f.show():f.hide()},refresh:function(){n=g.offset(),s=g.outerHeight(),r=h.outerWidth(),c=h.outerHeight(),l=h.offset()},show:function(){e.fn.popIn!==o?g.popIn(i.duration):g.fadeIn(i.duration,i.easing)},hide:function(){g.fadeOut(i.duration,i.easing)},stick:function(){if(f.refresh(),"fixed"==i.position){var n=e(t).prop("pageYOffset")||e(t).scrollTop(),o=g.hasClass(b.bottom)?l.top+(c-s)-n:l.top-n;g.css({position:"fixed",top:o,left:l.left,width:r-i.scrollBarWidth})}else g.css({top:d})},unStick:function(){g.css({top:""})},dismiss:function(){i.storageMethod&&f.storage.set(i.storedKey,i.storedValue),f.hide()},should:{show:function(){return f.storage.get(i.storedKey)==i.storedValue?!1:!0},stick:function(){return u=h.prop("pageYOffset")||h.scrollTop(),d=g.hasClass(b.bottom)?c-g.outerHeight()+u:u,d>n.top?!0:"fixed"==i.position?!0:!1}},followLink:function(){e.fn.followLink!==o&&g.followLink()},storage:{set:function(t,n){"local"==i.storageMethod&&store!==o?store.set(t,n):e.cookie!==o?e.cookie(t,n):f.error(i.errors.noStorage)},get:function(t){return"local"==i.storageMethod&&store!==o?store.get(t):e.cookie!==o?e.cookie(t):(f.error(i.errors.noStorage),o)}},event:{hover:function(){e(this).toggleClass(b.hover)},scroll:function(){m!==o&&clearTimeout(m),m=setTimeout(function(){f.should.stick()?y(f.stick):f.unStick()},i.lag)}},error:function(e){console.log("Nag Module:"+e)},invoke:function(t,n,a){var s;return a=a||Array.prototype.slice.call(arguments,2),"string"==typeof t&&v!==o&&(t=t.split("."),e.each(t,function(t,n){return e.isPlainObject(v[n])?(v=v[n],!0):e.isFunction(v[n])?(s=v[n],!0):(f.error(i.errors.method),!1)})),e.isFunction(s)?s.apply(n,a):s}},v!==o&&a?("invoke"==a[0]&&(a=Array.prototype.slice.call(a,1)),f.invoke(a[0],this,Array.prototype.slice.call(a,1))):(f.initialize(),o)}),this},e.fn.nag.settings={displayTime:0,followLink:!0,position:"fixed",scrollBarWidth:18,storageMethod:"cookie",storedKey:"nag",storedValue:"dismiss",sticky:!0,lag:0,context:t,errors:{noStorage:"Neither $.cookie or store is defined. A storage solution is required for storing state",followLink:"Follow link is set but the plugin is not included"},className:{bottom:"bottom",hover:"hover",fixed:"fixed"},selector:{close:".icon.close"},speed:500,easing:"easeOutQuad"}})(jQuery,window,document);