// Generated by CoffeeScript 1.4.0



/*

countdown is a simple jquery plugin for countdowns



Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)

and GPL-3.0 (http://opensource.org/licenses/GPL-3.0) licenses.



@source: http://github.com/rendro/countdown/

@autor: Robert Fleischmann

@version: 1.0.1

*/





(function() {



  (function($) {

    $.countdown = function(el, options) {

      var getDateData,

        _this = this;

      this.el = el;

      this.$el = $(el);

      this.$el.data("countdown", this);

      this.init = function() {

        _this.options = $.extend({}, $.countdown.defaultOptions, options);

        if (_this.options.refresh) {

          _this.interval = setInterval(function() {

            return _this.render();

          }, _this.options.refresh);

        }

        _this.render();

        return _this;

      };

      getDateData = function(endDate) {

        var dateData, diff;

        endDate = Date.parse($.isPlainObject(_this.options.date) ? _this.options.date : new Date(_this.options.date));

        diff = (endDate - Date.parse(new Date)) / 1000;

        if (diff <= 0) {

          diff = 0;

          if (_this.interval) {

            _this.stop();

          }

          _this.options.onEnd.apply(_this);

        }

        dateData = {

          years: 0,

          days: 0,

          hours: 0,

          min: 0,

          sec: 0,

          millisec: 0

        };

        if (diff >= (365.25 * 86400)) {

          dateData.years = Math.floor(diff / (365.25 * 86400));

          diff -= dateData.years * 365.25 * 86400;

        }

        if (diff >= 86400) {

          dateData.days = Math.floor(diff / 86400);

          diff -= dateData.days * 86400;

        }

        if (diff >= 3600) {

          dateData.hours = Math.floor(diff / 3600);

          diff -= dateData.hours * 3600;

        }

        if (diff >= 60) {

          dateData.min = Math.floor(diff / 60);

          diff -= dateData.min * 60;

        }

        dateData.sec = diff;

        return dateData;

      };

      this.leadingZeros = function(num, length) {

        if (length == null) {

          length = 2;

        }

        num = String(num);

        while (num.length < length) {

          num = "0" + num;

        }

        return num;

      };

      this.update = function(newDate) {

        _this.options.date = newDate;

        return _this;

      };

      this.render = function() {

        _this.options.render.apply(_this, [getDateData(_this.options.date)]);

        return _this;

      };

      this.stop = function() {

        if (_this.interval) {

          clearInterval(_this.interval);

        }

        _this.interval = null;

        return _this;

      };

      this.start = function(refresh) {

        if (refresh == null) {

          refresh = _this.options.refresh || $.countdown.defaultOptions.refresh;

        }

        if (_this.interval) {

          clearInterval(_this.interval);

        }

        _this.render();

        _this.options.refresh = refresh;

        _this.interval = setInterval(function() {

          return _this.render();

        }, _this.options.refresh);

        return _this;

      };

      return this.init();

    };

    $.countdown.defaultOptions = {

      date: "June 7, 2087 15:03:25",

      refresh: 1000,

      onEnd: $.noop,

      render: function(date) {

        return $(this.el).html("" + date.years + " years, " + date.days + " days, " + (this.leadingZeros(date.hours)) + " hours, " + (this.leadingZeros(date.min)) + " min and " + (this.leadingZeros(date.sec)) + " sec");

      }

    };

    $.fn.countdown = function(options) {

      return $.each(this, function(i, el) {

        var $el;

        $el = $(el);

        if (!$el.data('countdown')) {

          return $el.data('countdown', new $.countdown(el, options));

        }

      });

    };

    return void 0;

  })(jQuery);



}).call(this);

