Blame view
static/plugins/jquery.timer.js
1.81 KB
831eac332 add file |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
/** * jQuery Timer Plugin (jquery.timer.js) * @version 1.0.1 * @author James Brooks <jbrooksuk@me.com> * @website http://james.brooks.so * @license MIT - http://jbrooksuk.mit-license.org */ (function($) { jQuery.timer = function(interval, callback, options) { // Create options for the default reset value var options = jQuery.extend({ reset: 500 }, options); var interval = interval || options.reset; if(!callback) { return false; } var Timer = function(interval, callback, disabled) { // Only used by internal code to call the callback this.internalCallback = function() { callback(self); }; // Clears any timers this.stop = function() { if(this.state === 1 && this.id) { clearInterval(self.id); this.state = 0; return true; } return false; }; // Resets timers to a new time this.reset = function(time) { if(self.id) { clearInterval(self.id); } var time = time || options.reset; this.id = setInterval($.proxy(this.internalCallback, this), time); this.state = 1; return true; }; // Pause a timer. this.pause = function() { if(self.id && this.state === 1) { clearInterval(this.id); this.state = 2; return true; } return false; }; // Resumes a paused timer. this.resume = function() { if(this.state === 2) { this.state = 1; this.id = setInterval($.proxy(this.internalCallback, this), this.interval); return true; } return false; }; // Set the interval time again this.interval = interval; // Set the timer, if enabled if (!disabled) { this.id = setInterval($.proxy(this.internalCallback, this), this.interval); this.state = 1; } var self = this; }; // Create a new timer object return new Timer(interval, callback, options.disabled); }; })(jQuery); |