WatchDog = function (require) {
    this.satisfied = new Object;
    for (var i in require) {
        this.satisfied[i] = false;
    }
    this.init();
}
WatchDog.prototype.action = function () {return false};

WatchDog.prototype.init = function () {
    var that = this;
    this.stroke = function (satisfy, action) {
        this.action = typeof action == 'function' ? action : this.action;
        this.satisfied[satisfy] = true;
        for (var n in this.satisfied) {
            if (this.satisfied[n] == false) {
                return false;
            }
        }
        this.action();
        return true;
    }
}
