﻿function GetEventMap()
{
    if (getChatObject() == null)
      getChatObject() = {};
    var eventMap = getChatObject().chatEventMap;
    if (!eventMap)
    {
        getChatObject().chatEventMap = {};          
        eventMap = getChatObject().chatEventMap;
    }
    return eventMap;
}

function AttachChatEvent(eventName,eventFunc)
{
    //alert(eventName + ' - ' + eventFunc);
    var eventMapItem = GetEventMap()[eventName];
    if(eventMapItem == null)
    { 
        eventMapItem = GetEventMap()[eventName]=[] ;
    } ;
    for(var i=0x0;i<eventMapItem.length;i++)
    {
        if(eventMapItem[i] == eventFunc)
        {
            return ;
        };
    }; 
    eventMapItem[eventMapItem.length] = eventFunc;
}; 

function DetachChatEvent(eventName,eventFunc)
{
    //alert(eventName + ' - ' + eventFunc);
    var eventMapItem = GetEventMap()[eventName];
    if (eventMapItem == null)
    {
        return ;
    } ;
    for(var i=0;i<eventMapItem.length;i++)
    {
        if(eventMapItem[i] == eventFunc)
        { 
            eventMapItem.splice(i,0x1) ;
            return ;
        } ;
    } ;
}  ; 

function _InvokeChatEvent(eventName,Ox33)
{
    //alert(eventName + ' - ' + Ox33);
    var eventMapItem = GetEventMap()[eventName];
    if (eventMapItem == null)
    {
        return ;
    } ;
    if(Ox33&&Ox33.length)
    {
        for(var i=0;i<eventMapItem.length;i++)
        { 
            eventMapItem[i].apply(null,Ox33) ;
        } ;
    } 
    else 
    {
        for(var i=0;i<eventMapItem.length;i++)
        { 
            eventMapItem[i]() ;
        } ;
    } ;
}; 