customEvent = [];

function subscribeEvent(eventName,cback)
{
if (!customEvent[eventName]){customEvent[eventName]=[];}
var index = customEvent[eventName].length;
for (var i=0; i<customEvent[eventName].length; i++)
{
if (!customEvent[eventName][i])
{
index=i;
break;
}
}
customEvent[eventName][index]=cback;
}

function unsubscribeEvent(eventName,cback)
{
if (customEvent[eventName])
{
for (var i=0; i<customEvent[eventName].length; i++)
{
if (customEvent[eventName][i]==cback)
{
customEvent[eventName][i]=null;
}
}
}
}

function fireEvent(eventName,a,b,c,d,e,f,g)
{
if (eventName!="debug"){debug.print(eventName);}
if (customEvent[eventName])
{
for (var i=0; i<customEvent[eventName].length; i++)
{
if (customEvent[eventName][i])
{
try
{
customEvent[eventName][i](a,b,c,d,e,f,g);
}
catch(err)
{
customEvent[eventName][i]=null;
}
}
}
}
}
