var HydraObserver = function()
{
    /**
     * Массив событий.
     *
     * @var array
     */
    this.events = [];
}


/**
 * Регистрация обработчика события.
 *
 * @param string eventName
 * @param function eventFunction
 */
HydraObserver.prototype.observeEvent = function(eventName, eventFunction)
{
    if (this.events[eventName]==undefined) {
        this.events[eventName] = new Array();
    }
    
    this.events[eventName].push(eventFunction);
}

/**
 * Инициирует выполнение всех обработчиков заданного события.
 *
 * @param string eventName наименование события
 */
HydraObserver.prototype.fireEvent = function(eventName)
{
    if (this.events[eventName] != undefined) {
        for (eventFunctionIndex in this.events[eventName]) {
            this.events[eventName][eventFunctionIndex]();
        }
    }
}

var observer = new HydraObserver();