// 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 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) {
		oElm = document;
	}
	if(!strTagName) {
		strTagName = "*";
	}
	var arrElements = (strTagName === "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = [];
	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 getElementsByAttribute(strAttribute, strAttributeValue, strTagName, oElm){
	if(!oElm) {
		oElm = document;
	}
	if(!strTagName) {
		strTagName = "*";
	}
	var arrElements = (strTagName === "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = [];
	var oRegExp = new RegExp("(^|\\s)" + strAttributeValue.replace(/\-/g, "\\-") + "(\\s|$)");
	var oElement;
	for(var i=0; i<arrElements.length; i++){
		oElement = arrElements[i];
		if(oRegExp.test(oElement.getAttribute(strAttribute))){
			arrReturnElements.push(oElement);
		}
	}
	return (arrReturnElements);
}
function objcontains(obj, el){
	if(typeof obj.contains === "undefined"){
		// 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);
}
