﻿EventManager = function(config) {
    jQuery.extend(this, config);
    this.__events = new Object();
};

EventManager.prototype = {
    addListener: function(eventCode, handler, params, scope) {
        if (!this.__events[eventCode]) {
            this.__events[eventCode] = [];
        }
        this.__events[eventCode].push({
            'handler': handler,
            'params': params || {},
            'scope': scope || window
        });
    },
    fireEvent: function(eventCode, eventParams) {
        if (this.__events[eventCode]) {
            for (var index = 0; index < this.__events[eventCode].length; index++) {
                var handlerInfo = this.__events[eventCode][index];
                if (handlerInfo && handlerInfo.handler && typeof (handlerInfo.handler) == "function")
                    handlerInfo.handler.call(handlerInfo.scope, eventParams, handlerInfo.params);
            }
        }
    },
    removeAllEvents: function() {
        this.__events = new Object();
    }
};

(function() {
    function registerNS(ns) {
        var nsParts = ns.split(".");
        var root = window;

        for (var i = 0; i < nsParts.length; i++) {
            if (typeof root[nsParts[i]] == "undefined")
                root[nsParts[i]] = new Object();

            root = root[nsParts[i]];
        }
    };
    registerNS("AnswersTV.Modules");

    AnswersTV.Modules.EventManagerInstance = new EventManager({});
})();