if ("undefined" == typeof(RadDockNamespace))
{
	RadDockNamespace = new Object();
}

RadDockNamespace.RadEventHandlerList = {

	_eventHandlerList : null,
	
	eventHandlerList : function()
	{
		var arr = this._eventHandlerList;
		if (!arr)
		{
			arr = new Array();
			this._eventHandlerList = arr;
		}
		return arr;
	},
	
	AddEventHandler : function (eventName, eventHandler)
	{
		
		var eventList = this.eventHandlerList();
		var eventHandlers = eventList[eventName];
		if (!eventHandlers)
		{
			eventHandlers = new Array();
			eventList[eventName] = eventHandlers;
		}
		
		eventHandlers[eventHandlers.length] = eventHandler;
	},

	RemoveEventHandler : function (eventName, eventHandler)
	{
		var eventList = this.eventHandlerList();
		var eventHandlers = eventList[eventName];
		if (eventHandlers)
		{
			for (var i = eventHandlers.length - 1; i >= 0; i--)
			{	
				if (eventHandlers[i] == eventHandler)
				{
					eventHandlers.splice(i, 1);
				}
			} 
		}
	},
	
	FireEvent : function (eventName, eventArgs, sender)
	{	
	
		var eventList = this.eventHandlerList();
		var eventHandlers = eventList[eventName];
		
		if (!eventArgs) {
			eventArgs = {};
		}
		
		eventArgs.eventName = eventName;
		if (eventHandlers)
		{
			if (!sender)
				sender = this;
				
			var eventHandler;
			for (var i = 0; i < eventHandlers.length; i++)
			{	
				if (false == this.ExecEventHandler(eventHandlers[i], sender, eventArgs))
				{
					return false;
				}
			}
		}
	},

	ExecEventHandler : function (eventHandler, sender, eventArgs)
	{
		if (eventHandler)
		{
			var type = typeof(eventHandler);
			switch (type.toLowerCase())
			{
				case "function":
					return eventHandler(sender, eventArgs);
					
				case "string":
					eval(eventHandler);
					break;
			}
		}
	}
};


//BEGIN_ATLAS_NOTIFY
if (typeof(Sys) != "undefined")
{
    if (Sys.Application != null && Sys.Application.notifyScriptLoaded != null)
    {
        Sys.Application.notifyScriptLoaded();
    }
}
//END_ATLAS_NOTIFY
