/*!
 * Countdown v0.1.0
 * https://github.com/fengyuanchen/countdown
 *
 * Copyright 2014 Fengyuan Chen
 * Released under the MIT license
 */
(function(factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}else{factory(jQuery)}})(function($){"use strict";var Countdown=function(element,options){this.$element=$(element);this.defaults=$.extend({},Countdown.defaults,this.$element.data(),$.isPlainObject(options)?options:{});this.init()};Countdown.prototype={constructor:Countdown,init:function(){var content=this.$element.html(),date=new Date(this.defaults.date||content);if(date.getTime()){this.content=content;this.date=date;this.find();if(this.defaults.autoStart){this.start()}}},find:function(){var $element=this.$element;this.$days=$element.find("[data-days]");this.$hours=$element.find("[data-hours]");this.$minutes=$element.find("[data-minutes]");this.$seconds=$element.find("[data-seconds]");if((this.$days.length+this.$hours.length+this.$minutes.length+this.$seconds.length)>0){this.found=!0}},reset:function(){if(this.found){this.output("days");this.output("hours");this.output("minutes");this.output("seconds")}else{this.output()}},ready:function(){var date=this.date,decisecond=100,second=1000,minute=60000,hour=3600000,day=86400000,remainder={},diff;if(!date){return!1}
        diff=date.getTime()-(new Date()).getTime();if(diff<=0){this.end();return!1}
        remainder.days=diff;remainder.hours=remainder.days%day;remainder.minutes=remainder.hours%hour;remainder.seconds=remainder.minutes%minute;remainder.milliseconds=remainder.seconds%second;this.days=Math.floor(remainder.days/day);this.hours=Math.floor(remainder.hours/hour);this.minutes=Math.floor(remainder.minutes/minute);this.seconds=Math.floor(remainder.seconds/second);this.deciseconds=Math.floor(remainder.milliseconds/decisecond);return!0},start:function(){if(!this.active&&this.ready()){this.active=!0;this.reset();this.autoUpdate=this.defaults.fast?setInterval($.proxy(this.fastUpdate,this),100):setInterval($.proxy(this.update,this),1000)}},stop:function(){if(this.active){this.active=!1;clearInterval(this.autoUpdate)}},end:function(){if(!this.date){return}
        this.stop();this.days=0;this.hours=0;this.minutes=0;this.seconds=0;this.deciseconds=0;this.reset();this.defaults.end()},destroy:function(){if(!this.date){return}
        this.stop();this.$days=null;this.$hours=null;this.$minutes=null;this.$seconds=null;this.$element.empty().html(this.content);this.$element.removeData("data-countdown")},fastUpdate:function(){if(--this.deciseconds>=0){this.output("deciseconds")}else{this.deciseconds=9;this.update()}},update:function(){if(--this.seconds>=0){this.output("seconds")}else{this.seconds=59;if(--this.minutes>=0){this.output("minutes")}else{this.minutes=59;if(--this.hours>=0){this.output("hours")}else{this.hours=23;if(--this.days>=0){this.output("days")}else{this.end()}}}}},output:function(type){if(!this.found){this.$element.empty().html(this.template());return}
        switch(type){case "deciseconds":this.$seconds.text(this.getSecondsText());break;case "seconds":this.$seconds.text(this.seconds);break;case "minutes":this.$minutes.text(this.minutes);break;case "hours":this.$hours.text(this.hours);break;case "days":this.$days.text(this.days);break}},template:function(){return this.defaults.text.replace("%s",this.days).replace("%s",this.hours).replace("%s",this.minutes).replace("%s",this.getSecondsText())},getSecondsText:function(){return this.active&&this.defaults.fast?(this.seconds+"."+this.deciseconds):this.seconds}};Countdown.defaults={autoStart:!0,date:null,fast:!1,end:$.noop,text:"%s days, %s hours, %s minutes, %s seconds"};Countdown.setDefaults=function(options){$.extend(Countdown.defaults,options)};$.fn.countdown=function(options){return this.each(function(){var $this=$(this),data=$this.data("date-countdown");if(!data){$this.data("data-countdown",(data=new Countdown(this,options)))}
    if(typeof options==="string"&&$.isFunction(data[options])){data[options]()}})};$.fn.countdown.constructor=Countdown;$.fn.countdown.setDefaults=Countdown.setDefaults;$(function(){$("[data-countdown]").countdown()})})
