/******************************************************************************
Purpose: provides method of queing up function to be executed onload
******************************************************************************/
function addLoadEvent(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    } else {
        window.onload = function() {
            if (oldonload) {
                oldonload();
            }
            func();
        }
    }
}


/******************************************************************************
Purpose: returns supported XMLHttpRequest Object
******************************************************************************/
function XMLHttpRequestObject() {

        // branch for native XMLHttpRequest object
        if (window.XMLHttpRequest) {
                return new XMLHttpRequest();
        }
        // branch for IE/Windows ActiveX version
        else if (window.ActiveXObject) {
                return new ActiveXObject("Microsoft.XMLHTTP");
        }
        // branch for non-support
        else {
                return null;
        }
}

/******************************************************************************
Purpose: add an event to any object
******************************************************************************/
function addEvent(obj, evType, fn){
	try {
		if (obj.addEventListener){
			obj.addEventListener(evType, fn, false);
			return true;
		} else if (obj.attachEvent){
			var r = obj.attachEvent("on"+evType, fn);
			return r;
		} else {
			return false;
		}
	} catch (e) {
		// do nothing
	}
}

/******************************************************************************
Purpose: check if an object has a class
******************************************************************************/
function hasClass(obj,className) {
	return obj.className.match(new RegExp('(\\s|^)'+className+'(\\s|$)'));
}

/******************************************************************************
Purpose: add a class to any object
******************************************************************************/
function addClass(obj, className){
	if (!hasClass(obj,className)) obj.className = className + " " + obj.className
}

/******************************************************************************
Purpose: remove a class to any object
******************************************************************************/
function removeClass(obj, className){
	if (hasClass(obj,className)) {
		var reg = new RegExp('(\\s|^)'+className+'(\\s|$)');
		obj.className=obj.className.replace(reg,' ');
	}
}

/*******************************

Purpose: opens a new window
********************************/

function popWindow(url, w, h, windowName) {
	win = window.open(url, windowName, "height=" + h + ",width=" + w + ",resizable=no,status=no,scrollbars=no,location=no,menubar=no,toolbar=no");
}