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