/*

Javascript events - includes loadHandler

*/

var loadHandlers = new Array();

function addLoadHandler(handler, params){
	if (!isArray(params)) {
		params = new Array(params);
	}
	loadHandlers[loadHandlers.length]=new Array(handler, params);
}

function onLoadHandler(){		
	var eString = "";
	for(f = 0; f < loadHandlers.length; f++){
		eString = "loadHandlers["+f+"][0](";
		if (loadHandlers[f]){
			var params = loadHandlers[f][1];
			//if(params != null && isDefined(params))
			//{
				for(i = 0; limit=params.length-1, i<=limit; i++){
					eString += params[i];
					if (i < limit){
						eString += ", ";
					}
				}
			//}
		}
		eString += ");";
		eval(eString);
	}
	return false;
}

var lh_oldonload = window.onload;

if (typeof window.onload == 'function') {
	addLoadHandler(lh_oldonload, "");
}

if (window.addEventListener){
	window.addEventListener("load", onLoadHandler, false);
} else if(window.attachEvent){
	window.attachEvent("onload", onLoadHandler);
} else {
	window.onload = onLoadHandler;
}

/**
* eventName is expected to be camel cased (i.e. MouseDown)
* DO NOT prefix 'on' (i.e. do not pass 'onMouseDown'
* 
* 
* @param DOMNode element
* @param string eventname
* @param function func
* @param boolean noConvert = false
* @author Kris
********************************************************************************/

function addEvent(element, eventName, func, noConvert){
	if (noConvert != true){
		var evtName = eventName.toLowerCase();
	} else {
		var evtName = eventName;
	}
	if (element.addEventListener){
		return element.addEventListener(evtName, func, false); 
	} else if (element.attachEvent){
		return element.attachEvent('on'+evtName, func);
	} else {
		eval("element.on"+eventName+" = func;");
	}
	return null;
}

/**
* eventName is expected to be camel cased (i.e. MouseDown)
* DO NOT prefix 'on' (i.e. do not pass 'onMouseDown'
* 
* 
* @param DOMNode element
* @param string eventname
* @param function func
* @param boolean noConvert = false
* @author Kris
********************************************************************************/
function removeEvent(element, eventName, func, noConvert){
	if (noConvert != true){
		var evtName = eventName.toLowerCase();
	} else {
		var evtName = eventName;
	}
	if (element.addEventListener){
		return element.removeEventListener(evtName, func, false); 
	} else if (element.detachEvent){
		return element.detachEvent('on'+evtName, func);
	} else {
		eval("element.on"+eventName+" = null;");
	}
	return null;
}
