var xmlhttp = createXmlHttpRequestObject();
var POSTstr = "";

var browser = function() {
	b=navigator.appName;
	if (b.indexOf("Netscape")>=0){
		b="FF";
	}else if (b.indexOf("Microsoft")>=0){
		b="MSIE";
	}
	return b;
} 

function createXmlHttpRequestObject() {
	try {
		xmlhttp = new XMLHttpRequest();
	}
	catch(e){
		var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
	                                    "MSXML2.XMLHTTP.5.0",
	                                    "MSXML2.XMLHTTP.4.0",
	                                    "MSXML2.XMLHTTP.3.0",
	                                    "MSXML2.XMLHTTP",
	                                    "Microsoft.XMLHTTP");
		for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++) {
			try { 
				xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
			} 
			catch (e) {}
		}
	}
	
	if (!xmlhttp){
		alert("Error creating the XMLHttpRequest object.");
		return false;
	}
	else{ 
		return xmlhttp;
	}
}

function process(serverPage, objID, getOrPost, formID){
	var obj = document.getElementById(objID);
	var fobj = document.getElementById(formID);
	toggleCursor('wait');	  
	if (getOrPost == "get"){
		xmlhttp.open("GET", serverPage);
		xmlhttp.onreadystatechange = function() {
			if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
				if (obj.firstChild) {
					obj.removeChild(pollDiv.firstChild);
				}
				obj.appendChild(document.createTextNode(xmlhttp.responseText));
				toggleCursor('auto');
			}
		}
		xmlhttp.send(null);
	}else{
		POSTstr = getFormValues(fobj, null)
		xmlhttp.open("POST", serverPage, true);
		xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
		xmlhttp.setRequestHeader("Content-length", POSTstr.length);
		xmlhttp.onreadystatechange = function() {
			if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
				if (obj.firstChild) {
					obj.removeChild(pollDiv.firstChild);
				}
				obj.appendChild(document.createTextNode(xmlhttp.responseText));
				toggleCursor('auto');
			}
		}
		//debugger;

		xmlhttp.send(POSTstr);
		
	}
	
}

function toggleCursor(state) {
	if(browser == "FF") {
		document.styleSheets[0].cssRules[0].style.cursor = state;
	}else if(browser == "MSIE") {
		document.styleSheets[0].rules[0].style.cursor = state;
	}
}

function getFormValues(fobj, valfunc){
	aok = true;
	errorArr.length = 0;
	counter = 0;
	var str = ""; 
	
	for(var i = 0; i < fobj.elements.length; i++){
		switch(fobj.elements[i].type) {
   		case "radio":
   			if(fobj.elements[i].checked == true){
   				if(valfunc) {
	   				val = valfunc (fobj.elements[i].value,fobj.elements[i].name);
   				}
   				str += fobj.elements[i].name + "=" + escape(fobj.elements[i].value) + "&"; 
   			}
			break;
   		default: 
   			if(valfunc) {
	   			val = valfunc (fobj.elements[i].value,fobj.elements[i].name);
   			}
   			str += fobj.elements[i].name + "=" + escape(fobj.elements[i].value) + "&"; 
   			break;
  		}
  		
	}
	
	if (errorArr.length > 0){
		var errMsg = "The following errors have occurred: \n";
		for (var i = 0; i < errorArr.length; i++){
			errMsg += errorArr[i] + "\n";
		}
		alert (errMsg);
		aok = false;
	}
	return str;
}
