// Removes leading whitespace
function LTrim( value ) {
	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");
}
// Removes trailing whitespace
function RTrim( value ) {
	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");
}
// Removes leading and trailing whitespace
function trim( value ) {
	return LTrim(RTrim(value));
}
// If the String object doesn't have a trim method add one.
if(typeof "".trim == "undefined"){
	// Trim leading and trailing spaces from a string.
	String.prototype.trim = function(str) {
		str = this != window? this : str;
		return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
	}
}

function loadXMLDoc(url) {
	var req = null;
	
	// branch for native XMLHttpRequest object
	if(window.XMLHttpRequest) {
		try {
			req = new XMLHttpRequest();
		} catch(e) {
			req = null;
		}
	// branch for IE/Windows ActiveX version
	} else if(window.ActiveXObject) {
		try {
			req = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
			try {
				req = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e) {
				req = null;
			}
		}
	}
	if(req) {
		req.open("GET", url, false);
		req.send(null);
	}
	
	return req.responseXML;
}
function getNodeValue(obj,tag)
{
	return obj.getElementsByTagName(tag)[0].firstChild.nodeValue;
}
function addClass(target, classValue){
	var pattern = new RegExp("(^| )" + classValue.replace(/\-/g, "\\-") + "( |$)");
	if (!pattern.test(target.className)){
		if (target.className == ""){
			target.className = classValue;
		}else{
			target.className += " " + classValue;
		}
	}
	return true;
}
function removeClass(target, classValue){
	var removedClass = target.className;
	var pattern = new RegExp("(^| )" + classValue.replace(/\-/g, "\\-") + "( |$)");
	removedClass = removedClass.replace(pattern, "$1");
	removedClass = removedClass.replace(/ $/, "");
	target.className = removedClass;
	return true;
}
function hasClass(target, classValue){
	var pattern = new RegExp("(^| )" + classValue.replace(/\-/g, "\\-") + "( |$)");
	if (pattern.test(target.className))
		return true;
	return false;
}
function getElementsByClassName(strClassName, strTagName, oElm){
	if(oElm == null)
		oElm = document;
	if(strTagName == null)
		strTagName = "*";
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	var oRegExp = new RegExp("(^|\\s)" + strClassName.replace(/\-/g, "\\-") + "(\\s|$)");
	var oElement;
	for(var i=0; i<arrElements.length; i++){
		oElement = arrElements[i];		
		if(oRegExp.test(oElement.className)){
			arrReturnElements.push(oElement);
		}	
	}
	return (arrReturnElements)
}
function objcontains(obj, el){
	if(typeof obj.contains == "undefined"){
		alert("Creating obj.contains method");
		// Create a contains function for non-IE browsers.
		obj.contains = function(node){
			if(node == null)
				return false;
			if(node == this)
				return true;
			return this.contains(node.parentNode);
		};
	}

	return obj.contains(el);
}

