var EHDI = EHDI || Object.create(null); EHDI.GAME = EHDI.GAME || Object.create(null); EHDI.GAME.Timer = function (callback, delay) { var ids = []; var id, started, remaining = delay, running; this.start = function() { running = true; started = new Date(); id = setTimeout(callback, remaining); ids.push(id); } this.pause = function() { if(!running) return; running = false; this.clearAll(); // clearTimeout(id); remaining -= new Date() - started; } this.getTimeLeft = function() { if (running) { this.pause(); this.start(); } return remaining; } this.isRunning = function() { return running; } this.clearAll = function() { for(var i = 0; i < ids.length; i++) { clearTimeout(ids[i]); } ids = []; } this.start(); }