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();
}