title: jQuery Countdown code not working
body: <p>So, here is a simple jQuery Countdown code, which is supposed to countdown to the midnight of 22nd October 2016. Here is the relevant part of code, the problem is that the timer keeps showing 000 00 00 00. Please suggest the problem and methods to rectify. </p>
  
  <p>jQuery Code - </p>
  
  <pre><code>(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 &lt;= 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 &gt;= (365.25 * 86400)) {
            dateData.years = Math.floor(diff / (365.25 * 86400));
            diff -= dateData.years * 365.25 * 86400;
          }
          if (diff &gt;= 86400) {
            dateData.days = Math.floor(diff / 86400);
            diff -= dateData.days * 86400;
          }
          if (diff &gt;= 3600) {
            dateData.hours = Math.floor(diff / 3600);
            diff -= dateData.hours * 3600;
          }
          if (diff &gt;= 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 &lt; 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: "October 22, 2016 00:00:00",
        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);
  </code></pre>