(function() { var Timer; exports.Timer = Timer = (function() { function Timer(func) { this.func = func; this.running = false; this.id = null; this._handler = (function(_this) { return function() { _this.running = false; _this.id = null; return _this.func(); }; })(this); } Timer.prototype.start = function(timeout) { if (this.running) { clearTimeout(this.id); } this.id = setTimeout(this._handler, timeout); return this.running = true; }; Timer.prototype.stop = function() { if (this.running) { clearTimeout(this.id); this.running = false; return this.id = null; } }; return Timer; })(); Timer.start = function(timeout, func) { return setTimeout(func, timeout); }; }).call(this);