!function(n){"use strict";"function"==typeof define&&define.amd?define(["jquery"],n):n(jQuery)}(function(n){"use strict";function e(n){if(n instanceof Date)return n;if(String(n).match(t))return String(n).match(/^[0-9]*$/)&&(n=Number(n)),String(n).match(/\-/)&&(n=String(n).replace(/\-/g,"/")),new Date(n);throw new Error("Couldn't cast `"+n+"` to a date object.");}function o(n){var t=n.toString().replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1");return new RegExp(t)}function s(n){return function(t){var e=t.match(/%(-|!)?[A-Z]{1}(:[^;]+;)?/gi),f,s;if(e)for(f=0,s=e.length;s>f;++f){var r=e[f].match(/%(-|!)?([a-zA-Z]{1})(:[^;]+;)?/),l=o(r[0]),c=r[1]||"",a=r[3]||"",i=null;r=r[2];u.hasOwnProperty(r)&&(i=u[r],i=Number(n[i]));null!==i&&("!"===c&&(i=h(a,i)),""===c&&10>i&&(i="0"+i.toString()),t=t.replace(l,i.toString()))}return t.replace(/%%/,"%")}}function h(n,t){var i="s",r="";return n&&(n=n.replace(/(:|;|\s)/gi,"").split(/\,/),1===n.length?i=n[0]:(r=n[0],i=n[1])),1===Math.abs(t)?r:i}var i=[],t=[],f={precision:100,elapse:!1},u,r;t.push(/^[0-9]*$/.source);t.push(/([0-9]{1,2}\/){2}[0-9]{4}( [0-9]{1,2}(:[0-9]{2}){2})?/.source);t.push(/[0-9]{4}([\/\-][0-9]{1,2}){2}( [0-9]{1,2}(:[0-9]{2}){2})?/.source);t=new RegExp(t.join("|"));u={Y:"years",m:"months",w:"weeks",d:"days",D:"totalDays",H:"hours",M:"minutes",S:"seconds"};r=function(t,r,u){this.el=t;this.$el=n(t);this.interval=null;this.offset={};this.options=n.extend({},f);this.instanceNumber=i.length;i.push(this);this.$el.data("countdown-instance",this.instanceNumber);u&&("function"==typeof u?(this.$el.on("update.countdown",u),this.$el.on("stoped.countdown",u),this.$el.on("finish.countdown",u)):this.options=n.extend({},f,u));this.setFinalDate(r);this.start()};n.extend(r.prototype,{start:function(){null!==this.interval&&clearInterval(this.interval);var n=this;this.update();this.interval=setInterval(function(){n.update.call(n)},this.options.precision)},stop:function(){clearInterval(this.interval);this.interval=null;this.dispatchEvent("stoped")},toggle:function(){this.interval?this.stop():this.start()},pause:function(){this.stop()},resume:function(){this.start()},remove:function(){this.stop.call(this);i[this.instanceNumber]=null;delete this.$el.data().countdownInstance},setFinalDate:function(n){this.finalDate=e(n)},update:function(){if(0===this.$el.closest("html").length)return void this.remove();var t,r=void 0!==n._data(this.el,"events"),i=new Date;t=this.finalDate.getTime()-i.getTime();t=Math.ceil(t/1e3);t=!this.options.elapse&&0>t?0:Math.abs(t);this.totalSecsLeft!==t&&r&&(this.totalSecsLeft=t,this.elapsed=i>=this.finalDate,this.offset={seconds:this.totalSecsLeft%60,minutes:Math.floor(this.totalSecsLeft/60)%60,hours:Math.floor(this.totalSecsLeft/3600)%24,days:Math.floor(this.totalSecsLeft/86400)%7,totalDays:Math.floor(this.totalSecsLeft/86400),weeks:Math.floor(this.totalSecsLeft/604800),months:Math.floor(this.totalSecsLeft/2592e3),years:Math.floor(this.totalSecsLeft/31536e3)},this.options.elapse||0!==this.totalSecsLeft?this.dispatchEvent("update"):(this.stop(),this.dispatchEvent("finish")))},dispatchEvent:function(t){var i=n.Event(t+".countdown");i.finalDate=this.finalDate;i.elapsed=this.elapsed;i.offset=n.extend({},this.offset);i.strftime=s(this.offset);this.$el.trigger(i)}});n.fn.countdown=function(){var t=Array.prototype.slice.call(arguments,0);return this.each(function(){var e=n(this).data("countdown-instance"),u,f;void 0!==e?(u=i[e],f=t[0],r.prototype.hasOwnProperty(f)?u[f].apply(u,t.slice(1)):null===String(f).match(/^[$A-Z_][0-9A-Z_$]*$/i)?(u.setFinalDate.call(u,f),u.start()):n.error("Method %s does not exist on jQuery.countdown".replace(/\%s/gi,f))):new r(this,t[0],t[1])})}})