﻿/* 
* Events ("static class")
* Quick way to mimic event-based programming.
*/
var RGA = {};
RGA.Event = {
    _listeners: {},
    
    // Register an event listener.
    register: function(eventName, delegate) {
        if (!this._listeners[eventName]) {
            this._listeners[eventName] = new Array();
        }
        this._listeners[eventName].push(delegate);
    },
    
    // Unregister an event listener.
    unregister: function(eventName, delegate) {
        var eventListeners = this._listeners[eventName];
        if (eventListeners && eventListeners.length > 0) {
            var newListeners = new Array();
            for (var i = 0; i < eventListeners.length; i++) {
                if (eventListeners[i] != delegate) {
                    newListeners.push(eventListeners[i]);
                }
            }
            this._listeners[eventName] = newListeners;
        }
    },
    
    // Fire an event.
    fire: function(eventName, eventData) {
        var eventListeners = this._listeners[eventName];
        if (!eventListeners || eventListeners.length <= 0) return;
        for (var i = 0; i < eventListeners.length; i++) {
            eventListeners[i](eventData);
        }
    }
};


