// extend the String class to include functions i wish it had
String.prototype.trim = function() {
a = this.replace(/^\s+/, '');
return a.replace(/\s+$/, '');
};

String.prototype.reverse=function(str){
	var newStr="";
	for (i=0;i<=str.length;i++) {
		newStr = str.charAt(i) + newStr;
	}
	return newStr;
}

String.prototype.replaceAll=function(haystack, needle, replacement){
	while(haystack.indexOf(needle)!=-1){
		haystack=haystack.replace(needle, " ");
	}
	return haystack;
}

function clearAjax(divElement){
	if(a=document.getElementById(divElement))
		a.innerHTML='';
}

// mouseover effect functions
function msOver(divElement, anchor){
	if(document.getElementById(divElement)){
		document.getElementById(divElement).style.cursor="pointer";
		document.getElementById(divElement).style.backgroundColor="#993333";
		document.getElementById(anchor).style.color="#F5EBDA";
	}
	else{
		throw new Error("No element named " + divElement + " found in document");
	}
}

function msOut(divElement, anchor){
	if(document.getElementById(divElement)){
		document.getElementById(divElement).style.backgroundColor="#F5EBDA";
		document.getElementById(anchor).style.color="#993333";
	}
	else{
		throw new Error("No element named " + divElement + " found in document");
	}
}

function admMsOver(divElement){
	divElement.style.backgroundColor="#993333";
	divElement.style.color="#F5EBDA";
	divElement.style.fontSize="12px";
	divElement.style.paddingTop="4px";
	//divElement.style.paddingBottom="4px";
}

function admMsOut(divElement){
	divElement.style.backgroundColor="#F5EBDA";
	divElement.style.color="#993333";
	divElement.style.fontSize="10px";
	divElement.style.paddingTop="5px";
	//divElement.style.paddingBottom="7px";
}

// ajax functions
var xmlHttp;

function ajax_form(scriptFile, displayDiv, method, form_id, queryString){ 
	xmlHttp=GetXmlHttpObject();
	if (xmlHttp==null)  {
		alert ("Browser does not support HTTP Request");
		return;
	}
	var url=scriptFile;
	xmlHttp.onreadystatechange=stateChanged;
	xmlHttp.open(method,url,true);
	if(method == "POST" || method=="post"){
		str = getFormValues(document.getElementById(form_id));
		xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
		xmlHttp.send(str);
	} 
	else {
		xmlHttp.send(null);
	}

	function stateChanged(){
		if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
			document.getElementById(displayDiv).innerHTML=xmlHttp.responseText;
	}
}

function GetXmlHttpObject(){ 
	var objXMLHttp=null;
	if (window.ActiveXObject) // ie
		objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
	else if (window.XMLHttpRequest) // all others
		objXMLHttp=new XMLHttpRequest();
	return objXMLHttp;
}

function getFormValues(fobj,valFunc) { 
	var str = ""; 
	var valueArr = null; 
	var val = ""; 
	var cmd = ""; 
	for(var i = 0;i < fobj.elements.length;i++) { 
		switch(fobj.elements[i].type) { 
			case "text": 
				if(valFunc) { 
					//use single quotes for argument so that the value of 
					//fobj.elements[i].value is treated as a string not a literal 
					cmd = valFunc + "(" + 'fobj.elements[i].value' + ")"; 
					val = eval(cmd) 
				} 
				str += fobj.elements[i].name + "=" + escape(fobj.elements[i].value) + "&"; 
				break; 
			case "select-one": 
				str += fobj.elements[i].name + "=" + fobj.elements[i].options[fobj.elements[i].selectedIndex].value + "&"; 
				break; 
			default :
				str += fobj.elements[i].name + "=" + escape(fobj.elements[i].value) + "&"; 
				break;
		} 
	} 
	str = str.substr(0,(str.length - 1)); 
	return str; 
}