// (c) 2007 KystAtlas AS (Hans Martin Mohn)

function gtEventHandler()
{this.m_sinks=new Array();this.m_args=null;this.m_open=false;this.m_me=new Array();}
gtEventHandler.prototype.getHandlerCount=function _getHandlerCount()
{return this.m_sinks.length;};gtEventHandler.prototype.isOpen=function _isOpen()
{return this.m_open;};gtEventHandler.prototype.raise=function _raise()
{var i;if(!this.m_open)
{this.m_args=new Array();for(i=0;i<arguments.length;i++)
{this.m_args.push(arguments[i]);}}
else
{if(arguments.length>0)
{for(i=0;i<this.m_sinks.length;i++)
{if(this.m_me[i])
{this.m_sinks[i].call(this.m_me[i],arguments[0],arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9]);}
else
{this.m_sinks[i](arguments[0],arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9]);}}}
else
{for(i=0;i<this.m_sinks.length;i++)
{if(this.m_me[i])
this.m_sinks[i].call(this.m_me[i]);else
this.m_sinks[i]();}}}};gtEventHandler.prototype.findHandler=function _findHandler(handler)
{for(var i=0;i<this.m_sinks.length;i++)
{if(this.m_sinks[i]==handler)
return true;}
return false;};gtEventHandler.prototype.addHandler=function _addHandler(handler,me,open_now)
{if(!handler)
return;if(typeof(open_now)=="undefined")
open_now=true;if(this.findHandler(handler))
return;this.m_sinks.push(handler);this.m_me.push(me);if(open_now==true)
this.open();};gtEventHandler.prototype.removeHandler=function _removeHandler(handler)
{for(var i=0;i<this.m_sinks.length;i++)
{if(this.m_sinks[i]==handler)
{this.m_sinks.splice(i,1);this.m_me.splice(i,1);return true;}}
return false;};gtEventHandler.prototype.removeAllHandlers=function _removeAllHandlers()
{this.m_sinks.length=0;};gtEventHandler.prototype.open=function _open()
{if(!this.m_open&&this.m_args!==null)
{if(this.m_args)
{for(i=0;i<this.m_sinks.length;i++)
{if(this.m_me[i])
{this.m_sinks[i].call(this.m_me[i],this.m_args[0],this.m_args[1],this.m_args[2],this.m_args[3],this.m_args[4],this.m_args[5],this.m_args[6],this.m_args[7],this.m_args[8],this.m_args[9]);}
else
{this.m_sinks[i](this.m_args[0],this.m_args[1],this.m_args[2],this.m_args[3],this.m_args[4],this.m_args[5],this.m_args[6],this.m_args[7],this.m_args[8],this.m_args[9]);}}}
else
{for(i=0;i<this.m_sinks.length;i++)
{if(this.m_me[i])
this.m_sinks[i].call(this.m_me[i]);else
this.m_sinks[i]();}}}
this.m_open=true;delete this.m_args;this.m_args=null;};