﻿EventCenter.events = new Object();
function EventCenter(){}

EventCenter.addListener = function(_caller, _event, _callback)
{

    if(!this.events[_event])
    {
        this.events[_event] = new Object();
        this.events[_event].listeners = new Array();
    }  
    this.events[_event].listeners.push({listener:_caller, callback:_callback});    
}

EventCenter.broadcast = function(event, _data)
{
    for(var i in this.events)
    {
        if(i == event)
        {
            for(var j in this.events[i].listeners)
            {
                var _caller = this.events[i].listeners[j].listener;
                var func = this.events[i].listeners[j].callback;
               // if(!_caller[func]) oTrace(_caller);
                _caller[func]({data:_data, caller:_caller});
            }
        }
    }
}

EventCenter.removeListener = function(_caller, _event, _callback)
{
    if(this.events[_event])
    {
        for(var i in this.events[_event].listeners)
        {
            if(this.events[_event].listeners[i].listener == _caller &&
                this.events[_event].listeners[i].callback == _callback)
            {
                this.events[_event].listeners.splice(i, 1);
            }
        }
    }
}

