﻿(function (a) { a.fn.countdown = function (g) { var n = { date: new Date, updateTime: 1e3, htmlTemplate: '%{d} <span class="cd-time">days</span> %{h} <span class="cd-time">hours</span> %{m} <span class="cd-time">mins</span> %{s} <span class="cd-time">sec</span>', minus: false, onChange: null, onComplete: null, onResume: null, onPause: null, leadingZero: false, offset: null, offsetDate: null, direction: "down" }, o = [].slice, b = Math.floor, p = 3.6e6, i = 8.64e7, j = /(%\{d\}|%\{h\}|%\{m\}|%\{s\})/g, d = /%\{d\}/, c = /%\{h\}/, e = /%\{m\}/, f = /%\{s\}/, m = function (c) { var b = new Date, a = new Date(c); return !a ? b : b - a }, h = function (c) { var a = new Date, b; b = a.setTime(a.getTime() + c); return new Date(b) }, k = function () { var r = this, q, o, n, v, t, k, p, g, l, u, m, s = "", a = r.data("jcdSettings"); if (!a) return; q = a.htmlTemplate; o = a.offset === null ? new Date : h(a.offset); n = new Date(a.date); v = a.direction === "down" ? n.getTime() - o.getTime() : o.getTime() - n.getTime(); t = v / i; k = b(t); p = (t - k) * 24; g = b(p); l = b((p - g) * 60); u = (p - g) * 60; m = b((u - l) * 60); if (a.leadingZero) { if (k < 10) k = "0" + k; if (g < 10) g = "0" + g; if (l < 10) l = "0" + l; if (m < 10) m = "0" + m } if (a.direction === "down" && (o <= n || a.minus)) s = q.replace(d, k).replace(c, g).replace(e, l).replace(f, m); else if (a.direction === "up" && (n <= o || a.minus)) s = q.replace(d, k).replace(c, g).replace(e, l).replace(f, m); else { s = q.replace(j, "00"); a.hasCompleted = true } r.html(s); r.trigger("change", [a]); if (a.hasCompleted) { r.trigger("complete.jcountdown"); window.clearInterval(a.timer) } }, l = { init: function (o) { var g = a.extend({}, n, o), l; l = g.htmlTemplate; return this.each(function () { var o = a(this), n = {}, y = g.offsetDate === null ? g.offset : m(g.offsetDate), u = y === null ? new Date : h(y), t = new Date(g.date), B = g.direction === "down" ? t.getTime() - u.getTime() : u.getTime() - t.getTime(), x = B / i, q = b(x), w = (x - q) * 24, p = b(w), r = b((w - p) * 60), A = (w - p) * 60, s = b((A - r) * 60), v = "", z; g.onChange && o.bind("change.jcountdown", g.onChange); g.onComplete && o.bind("complete.jcountdown", g.onComplete); g.onPause && o.bind("pause.jcountdown", g.onPause); g.onResume && o.bind("resume.jcountdown", g.onResume); if (g.leadingZero) { if (q < 10) q = "0" + q; if (p < 10) p = "0" + p; if (r < 10) r = "0" + r; if (s < 10) s = "0" + s } n.hasCompleted = false; if (g.direction === "down" && (u <= t || g.minus)) v = l.replace(d, q).replace(c, p).replace(e, r).replace(f, s); else if (g.direction === "up" && (t <= u || g.minus)) v = l.replace(d, q).replace(c, p).replace(e, r).replace(f, s); else { v = l.replace(j, "00"); n.hasCompleted = true } n.originalContent = a(this).html(); n.date = g.date; n.leadingZero = g.leadingZero; n.updateTime = g.updateTime; n.direction = g.direction; n.template = g.htmlTemplate; n.htmlTemplate = g.htmlTemplate; n.minus = g.minus; n.offset = g.offset; n.onChange = g.onChange; n.onComplete = g.onComplete; n.onResume = g.onResume; n.onPause = g.onPause; if (!n.hasCompleted) { z = a.proxy(k, o); n.timer = window.setInterval(z, n.updateTime) } o.data("jcdSettings", n); o.html(v); if (n.hasCompleted) { o.trigger("complete.jcountdown"); window.clearInterval(n.timer) } }) }, changeSettings: function (g) { return this.each(function () { var m = a(this), l, t, o, n, y, u, r, q, p, s, x, v, w = "", z; if (!m.data("jcdSettings")) return true; l = a.extend({}, m.data("jcdSettings"), g); t = l.htmlTemplate; o = l.offset === null ? new Date : h(l.offset); n = new Date(l.date); y = l.direction === "down" ? n.getTime() - o.getTime() : o.getTime() - n.getTime(); u = y / i; r = b(u); q = (u - r) * 24; p = b(q); s = b((q - p) * 60); x = (q - p) * 60; v = b((x - s) * 60); m.unbind(".jcountdown"); window.clearInterval(l.timer); l.onChange && m.bind("change.jcountdown", l.onChange); l.onComplete && m.bind("complete.jcountdown", l.onComplete); l.onPause && m.bind("pause.jcountdown", l.onPause); l.onResume && m.bind("resume.jcountdown", l.onResume); if (l.direction === "down" && (o <= n || l.minus)) w = t.replace(d, r).replace(c, p).replace(e, s).replace(f, v); else if (l.direction === "up" && (n <= o || l.minus)) w = t.replace(d, r).replace(c, p).replace(e, s).replace(f, v); else { w = t.replace(j, "00"); l.hasCompleted = true } z = a.proxy(k, m); l.timer = window.setInterval(z, l.updateTime); m.data("jcdSettings", l); if (l.hasCompleted) { m.trigger("complete.jcountdown"); window.clearInterval(l.timer) } }) }, resume: function () { return this.each(function () { var l = a(this), g, s, y, n, m, x, u, q, p, o, r, w, v, t = ""; g = l.data("jcdSettings"); if (!g) return true; y = a.proxy(k, l); s = g.htmlTemplate; n = g.offset === null ? new Date : h(g.offset); m = new Date(g.date); x = g.direction === "down" ? m.getTime() - n.getTime() : n.getTime() - m.getTime(); u = x / i; q = b(u); p = (u - q) * 24; o = b(p); r = b((p - o) * 60); w = (p - o) * 60; v = b((w - r) * 60); if (g.direction === "down" && (n <= m || g.minus)) t = s.replace(d, q).replace(c, o).replace(e, r).replace(f, v); else if (g.direction === "up" && (m <= n || g.minus)) t = s.replace(d, q).replace(c, o).replace(e, r).replace(f, v); else { t = s.replace(j, "00"); g.hasCompleted = true } g.timer = window.setInterval(y, g.updateTime); l.data("jcdSettings", g); l.trigger("resume.jcountdown"); l.html(t).trigger("change.jcountdown"); if (g.hasCompleted) { l.trigger("complete.jcountdown"); window.clearInterval(g.timer) } }) }, pause: function () { return this.each(function () { var c = a(this), b = a.data(c[0], "jcdSettings"); if (!b) return true; c.trigger("pause.jcountdown"); window.clearInterval(b.timer) }) }, complete: function () { return this.each(function () { var c = a(this), b = c.data("jcdSettings"); if (!b) return true; window.clearInterval(b.timer); b.hasCompleted = true; c.data("jcdSettings", b); c.trigger("complete.jcountdown") }) }, destroy: function () { return this.each(function () { var b = a(this), c; c = b.data("jcdSettings"); if (!c) return true; b.unbind(".jcountdown"); b.html(c.originalContent); b.removeData("jcdSettings") }) }, getSettings: function (c) { var b, d = a(this[0]); b = d.data("jcdSettings"); return !b ? undefined : c ? b[c] ? b[c] : undefined : b } }; if (l[g]) return l[g].apply(this, o.call(arguments, 1)); else if (a.type(g) === "object" || !g) return l.init.apply(this, arguments); else a.error("Method " + g + " does not exist in the jCountdown Plugin") } })(jQuery)
