1 $.fn.genTimer = function (e) {
2 function u(e) {
3 var t = Math.floor(e / n),
4 r = Math.floor((e - t * n) / 36e5),
5 i = Math.floor((e - t * n - r * 1e3 * 60 * 60) / 6e4),
6 s = Math.floor((e - t * n - r * 1e3 * 60 * 60 - i * 1e3 * 60) / 1e3);
7 return {
8 hours: ("0" + r).slice(-2),
9 minutes: ("0" + i).slice(-2),
10 seconds: ("0" + s).slice(-2),
11 dates: t
12 }
13 }
14 if (this.data("handled")) return this;
15 this.data("handled", !0);
16 var t = {
17 beginTime: new Date,
18 day_label: "day",
19 days_label: "days",
20 unitWord: {
21 hours: ":",
22 minutes: ":",
23 seconds: ""
24 },
25 type: "",
26 callbackOnlyDatas: !1
27 },
28 n = 864e5,
29 r = $.extend({}, t, e),
30 i = this;
31 r.targetTime = r.targetTime.replace(/\-/g, "/");
32 r.targetTime = isNaN(r.targetTime) ? r.targetTime : parseInt(r.targetTime);
33 var s = new Date(r.targetTime) - new Date(r.beginTime),
34 o = function () {
35 if (s < 0) {
36 r.callback.call(i, r.callbackOnlyDatas ? {
37 hours: "00",
38 minutes: "00",
39 seconds: "00",
40 dates: 0
41 } : "00" + r.unitWord.hours + "00" + r.unitWord.minutes + "00");
42 clearInterval(i.interval)
43 } else {
44 var e = u(s);
45 if (r.callbackOnlyDatas) r.callback.call(i, e);
46 else if (r.type == "day") {
47 s >= n * 2 ?
48 r.callback.call(i, '<span class="day_count">' + e.dates + '</span><span class="day">' + r.days_label + '</span><span class="day_seconds">' + e.hours + r.unitWord.hours + e.minutes + r.unitWord.minutes + e.seconds + r.unitWord.seconds + "</span>")
49 : (
50 s >= n ?
51 r.callback.call(i, '<span class="day_count">' + e.dates + '</span><span class="day">' + r.day_label + '</span><span class="day_seconds">' + e.hours + r.unitWord.hours + e.minutes + r.unitWord.minutes + e.seconds + r.unitWord.seconds + "</span>")
52 : r.callback.call(i, '<span class="seconds">' + e.hours + r.unitWord.hours + e.minutes + r.unitWord.minutes + e.seconds + r.unitWord.seconds + "</span>")
53 );
54 }
55 else if (r.type == "diffNoDay") {
56 var t = e.hours;
57 s >= n && (t = Number(e.dates * 24) + Number(e.hours));
58 r.callback.call(i, '<span class="hours">' + t + '</span><span class="miniutes">' + r.unitWord.hours + e.minutes + '</span><span class="senconds">' + r.unitWord.minutes + e.seconds + r.unitWord.seconds + "</span>")
59 } else if (r.type == "split") {
60 r.callback.call(i, '<span class="day_count" id="d">' + e.dates + '</span><span class="hour" id="h">' + e.hours + '</span><span class="minute" id="m">' + e.minutes + '</span><span class="second" id="s">' + e.seconds + '</span>');
61 } else {
62 var t = e.hours;
63 s >= n && (t = Number(e.dates * 24) + Number(e.hours));
64 r.callback.call(i, '<span class="seconds">' + t + r.unitWord.hours + e.minutes + r.unitWord.minutes + e.seconds + r.unitWord.seconds + "</span>")
65 }
66 }
67 s -= 1e3
68 };
69 i.interval = setInterval(o, 1e3);
70 o();
71 return this
72 };