text: // 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);