|
1 | 1 | /*!
|
2 | 2 | * tinyTimer jQuery plugin
|
3 |
| - * version 0.1.3 |
| 3 | + * version 0.1.4 |
4 | 4 | *
|
5 | 5 | * Copyright (c) 2013 Michal Wojciechowski (odyniec.net)
|
6 | 6 | *
|
|
13 | 13 | var tick, tt = this, elem = (tt.options = options).element, ref = new Date(options.from || options.to).getTime(), dir = !!options.from || -1, M = Math, doNothing = function() {};
|
14 | 14 | tt.interval = setInterval(tick = function() {
|
15 | 15 | if (!tt.paused) {
|
16 |
| - var sec = M.round((Date.now() - ref) * dir / 1e3), val = { |
| 16 | + var sec = M.max(M.round((Date.now() - ref) * dir / 1e3), 0), val = { |
17 | 17 | S: sec,
|
18 | 18 | s: sec % 60,
|
19 | 19 | M: M.floor(sec /= 60),
|
20 | 20 | H: M.floor(sec /= 60),
|
21 | 21 | D: M.floor(sec /= 24)
|
22 | 22 | };
|
23 | 23 | val.m = val.M % 60, val.h = val.H % 24, val.d = val.D, val.text = (options.format || "%-H{:}%0m:%0s").replace(/%(-?)(0?)([dhms])(\s*)(?:\{(.+?)\})?/gi, options.replacer || function(match, omit, zero, part, space, forms) {
|
24 |
| - var v = val[part], out = (v > 9 ? "" : zero) + v + space; |
25 |
| - return forms && ((forms = forms.split("|"))[2] = forms[2] || (forms[1] = forms[1] || forms[0]), |
26 |
| - out += forms[+(1 != v) + (1 != v && (2 > v % 10 || v % 10 > 4) || v > 10 && 20 > v)]), |
27 |
| - !v && omit ? "" : out; |
| 24 | + var v = val[part]; |
| 25 | + return (forms = (forms || "").split("|"))[2] = forms[2] || (forms[1] = forms[1] || forms[0]), |
| 26 | + !v && omit ? "" : (v > 9 ? "" : zero) + v + space + forms[+(1 != v) + (1 != v && (2 > v % 10 || v % 10 > 4) || v > 10 && 20 > v)]; |
28 | 27 | }), elem ? $(elem).html(val.text) : elem = tt, (options.onTick || doNothing).call(elem, tt.val = val),
|
29 |
| - 0 > dir && 0 >= sec && (clearInterval(tt.interval), (options.onEnd || doNothing).call(elem, val)); |
| 28 | + 0 > dir && !sec && (clearInterval(tt.interval), (options.onEnd || doNothing).call(elem, val)); |
30 | 29 | }
|
31 | 30 | }, 1e3), tick(), tt.pause = tt.stop = function() {
|
32 | 31 | tt.paused = Date.now();
|
|
0 commit comments