function WindowOnload(f) {
	var prev=window.onload;
    window.onload=function(){ if(prev)prev(); f(); }
}

function eventMouseClick(obj, newhandler) {
	var prev = obj.onclick;
	if(isset(prev)) {
		obj.onclick = function(oEvent) {
			prev(oEvent);
			return(newhandler(oEvent));
		};
	} else {
		obj.onclick = newhandler;	
	}
}

function eventMouseOver(obj, newhandler) {
	if(obj.attachEvent) {
		obj.attachEvent("onmouseover", newhandler);
	} else if(obj.addEventListener) {
		obj.addEventListener("mouseover", newhandler, false);	
	}
}

function addEvent(sevent, obj, newhandler) {
	var prev = obj[sevent];
	if(isset(prev)) {
		obj[sevent] = function(oEvent) {
			prev(oEvent);
			return(newhandler(oEvent));
		};
	} else {
		obj[sevent] = newhandler;	
	}
}

function checkClass(oElem, sClass) {
	var sCurrent = oElem.className;
	var reExp = new RegExp(sClass);	
	if(reExp.test(sCurrent))
		return(true);
	return(false);
}

function swapClass(oElem, sClass1, sClass2) {
	var sCurrent = oElem.className;
	var reExp = new RegExp(sClass1, "g");
	if(reExp.test(sCurrent)) {
		sCurrent = sCurrent.replace(reExp, sClass2);
	} else {
		reExp = new RegExp(sClass2, "g");
		sCurrent = sCurrent.replace(reExp, sClass1);
	}
	oElem.className = sCurrent;
}

function addClass(oElem, sClass) {
	var sCurrent = oElem.className;
	var reExp = new RegExp("\b" + sClass + "\b", "g");
	if(!reExp.test(sCurrent))
		sCurrent += ' ' + sClass;
	oElem.className = sCurrent;
}

function changeClass(oElem, sClass, reRemove) {
	var sCurrent = oElem.className;
	if(isset(reRemove))
		sCurrent = sCurrent.replace(reRemove, '');
	var reExp = new RegExp("\b" + sClass + "\b", "g");
	if(!reExp.test(sCurrent))
		sCurrent += ' ' + sClass;
	oElem.className = sCurrent;
}

function removeClass(oElem, reRemove) {
	var sCurrent = oElem.className;
	if(isset(reRemove))
		sCurrent = sCurrent.replace(reRemove, '');
	oElem.className = sCurrent;
}

function fGEOBJLI(sType, sClass) {
	if (!document.getElementsByTagName) return false;
	var aRetElems = new Array();
  	var aElems    = document.getElementsByTagName(sType);
  	for (var i=0; i < aElems.length; i++) {
    	if (aElems[i].className.match(sClass)) {
			aRetElems[i] = aElems[i];
    	}
  	}
	return(aRetElems);
}

function fGEOBJ(oEvent) { //Get Event Object
	oEvent = oEvent || window.event;
	var oElement = oEvent.target || oEvent.srcElement;
	return oElement;
}

function count(oSubject, regFilter) {
	if(!isset(regFilter))
		var regFilter = /^[0-9]+$/;
	var iCount = 0;
	for(i in oSubject)
		if(regFilter.test(i))
			iCount++;
	
	return(iCount);
}

var oFormRequestXmlHttp = null;
function sendFormRequest(sPage, poststr) {
	if(oFormRequestXmlHttp == null) {
		oFormRequestXmlHttp = zXmlHttp.createRequest();
	}
	sPage += 'display:xontemp';
	
	oFormRequestXmlHttp.open("POST", sPage, true);
	if(oFormRequestXmlHttp.readyState == 1) {
		oFormRequestXmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        oFormRequestXmlHttp.setRequestHeader("Content-length", poststr.length);
        oFormRequestXmlHttp.setRequestHeader("Connection", "close");
		oFormRequestXmlHttp.send(poststr);
	};
}

function jsdebug(sMessage) {
	var oJSDebugDiv = document.getElementById('js_debug');
	oJSDebugDiv.innerHTML = sMessage + '<br />' + oJSDebugDiv.innerHTML;
}

function isnumeric(subject) {
	regExp = /^[0-9]+$/;
	if(regExp.test(subject)) {
 		return(true);
	};
	return(false);
}

function isset(subject) {
	return(subject == undefined | subject == null | subject == '' ? false : true);
}

String.prototype.isset = function() {
	return(isset(this));	
}

Array.prototype.in_array = function(sKey) {
	if(this.length < 1) return(false);
	for(i in this) {
		if(this[i] == sKey) {
			return(true);
		}
	};
	return(false);
}

Array.prototype.find_value = function(sKey) {
	if(this.length < 1) return(-1);
	for(i in this) {
		if(this[i] == sKey) {
			return(i);
		}
	};
	return(-1);	
}

Array.prototype.key_exists = function(sKey) {
	if(this.length < 1) return(false);
	for(i in this) {
		if(i == sKey) {
			return(true);
		}
	};
	return(false);
}