/**
 * Класс для работы с обсерверами.
 */
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, params)
{
    if (this.events[eventName] != undefined) {
        for (eventFunctionIndex in this.events[eventName]) {
            if (params == undefined) {
                this.events[eventName][eventFunctionIndex]();
            }
            else {
                this.events[eventName][eventFunctionIndex](params);
            }
        }
    }
}

// инстанцируем обсервер
var observer = new HydraObserver();
