﻿function RequestManager() {
    this.requestList = {};
}

// Registers a request callback to a request
RequestManager.prototype.addCallback = function (request, callback) {
    if (!this.requestList[request]) this.requestList[request] = [];
    this.requestList[request].push(callback);
}

// Unregisters a request callback from a request
RequestManager.prototype.removeCallback = function (request, callback) {
    var index = this.indexOf(request, callback);
    if (index == -1) return;
    this.requestList[request] = this.requestList[request].splice(index, 1);
}

// Handles a client-side request
RequestManager.prototype.handleRequest = function (request, data) {
    if (!this.requestList[request]) return -1;

    for (var i = 0; i < this.requestList[request].length; i++) {
        if (this.requestList[request][i])
            this.requestList[request][i](data);
    }
}

// Gets the index of a request callback
RequestManager.prototype.indexOf = function (request, callback) {
    if (!this.requestList[request]) return -1;

    for (var i = 0; i < this.requestList[request].length; i++) {
        if (this.requestList[request][i] == callback) return i;
    }

    return -1;
}

// Create static instance
requestManager = new RequestManager();

