var xmlHttp
var ajaxSpanID;

function ajaxFrmHandler(thisForm, lnkParam)
//function ajaxFrmHandler(thisForm)
 { 
	 xmlHttp = GetXmlHttpObject()
	 if (xmlHttp == null) {
		alert ("Browser does not support HTTP Request");
		return;
		} 
	  
	if(thisForm.elements['ajaxUrl'].value.length < 1) {
		alert("ajaxFrmHandler(): ajaxUrl not defined");
		return;
	}
	  
	if(thisForm.elements['ajaxSpanID'].value.length < 1) {
		alert("ajaxFrmHandler(): ajaxSpanID not defined");
		return;
	}
	
	ajaxSpanID = thisForm.elements['ajaxSpanID'].value;
	

	var formdata = "";
	var url = thisForm.elements['ajaxUrl'].value;
	url += "?rand="+Math.random();
	
	
	for (i=0; i < thisForm.length; i++) {
		//Build POST data string
		if(thisForm.elements[i].type == "text" || thisForm.elements[i].type == "hidden" ){ //Handle Textbox's
			formdata += thisForm.elements[i].name + "=" + escape(thisForm.elements[i].value) + "&";
		} 
		else if(thisForm.elements[i].type == "textarea"){ //Handle textareas
			formdata += thisForm.elements[i].name + "=" + escape(thisForm.elements[i].value) + "&";
		} 
		else if(thisForm.elements[i].type == "checkbox"){ //Handle checkbox's
			formdata += thisForm.elements[i].name + "=" + thisForm.elements[i].checked + "&";
		} 
		else if(thisForm.elements[i].type == "radio"){ //Handle Radio buttons
			if(thisForm.elements[i].checked==true){
			formdata += thisForm.elements[i].name + "=" + thisForm.elements[i].value + "&";
			}
		} 
		else {
			//finally, this should theoretically this is a select box.
			formdata += thisForm.elements[i].name + "=" + escape(thisForm.elements[i].value) + "&";
		}
	}

	try { 
		if (typeof(lnkParam) != 'undefined') {
			if (lnkParam.length > 0)
				formdata += lnkParam + "&";
		} 
	}
	catch (e) {
		alert("catch - lnkParam: NOT DEFINED");
	}
	
	//alert("url: " + url + "\nformdata: " + formdata);			// Debug 
	
	document.getElementById(ajaxSpanID).innerHTML= '<center><img src="snake_transparent.gif" style="display:block;" ></center>';
	
	xmlHttp.open("POST",url, true);
	xmlHttp.onreadystatechange=loadAjaxResponse ;
	// required header info for POST data transfer to work
	xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlHttp.setRequestHeader("Content-length", formdata.length);
	xmlHttp.setRequestHeader("Connection", "close");
	xmlHttp.send(formdata);
	
	return;
}
 
function loadAjaxResponse() 
{ 
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
	{
 
		// xmlDoc=xmlHttp.responseXML;
		// document.getElementById("bidForm").innerHTML=
		// xmlDoc.getElementsByTagName("bidHTML")[0].childNodes[0].nodeValue;
		if (xmlHttp.responseText.indexOf("<?xml ") == -1) {
			document.getElementById(ajaxSpanID).innerHTML=xmlHttp.responseText;
		}
		else {
			//document.getElementById(ajaxSpanID).innerHTML=xmlHttp.responseText;
			xmlDoc = loadXMLString(xmlHttp.responseText);
			x = xmlDoc.getElementsByTagName("redirectURL");
			if (x.length) {
				document.location = x[0].childNodes[0].nodeValue;
			}
		}
	}
} 

function GetXmlHttpObject()
{
	var xmlHttp=null;

	try {
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	}
	catch (e) {
		// Internet Explorer
		try {
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	return xmlHttp;
}

function loadXMLString(txt) 
{
	try { //Internet Explorer 
		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async="false";
		xmlDoc.loadXML(txt);
		return(xmlDoc); 
	}
	catch(e) {
	    try  {  //Firefox, Mozilla, Opera, etc.    			
			parser=new DOMParser();
			xmlDoc=parser.parseFromString(txt,"text/xml");
			return(xmlDoc);
	    }
		catch(e) {
			alert(e.message)}
	}
	return(null);
}
