var http_request = false;
var xmlhttp = false;

/*
returnFunction()
handles the returned results from AJAX post and get http requests
*/
function returnFunction(postAction) {
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			result = http_request.responseText;
			if(result.indexOf("ErrorErrorError")>-1) {
				if(document.getElementById("AddressDialog")) {
					closeAddressDialog();
				}
				if(!document.getElementById("Relogin")) {
					createPopUp("<div><div class=\"popUp\" id=\"Relogin\"></div></div>");
					popDiv = document.getElementById("Relogin");
					popDiv.style.top = 200;
					popDiv.style.left = 200;
					loadPageInElement("http://"+top.location.host+"/Reauthenticate.asp", "Relogin", "Relogin");
				}
			}
			else {
				document.getElementById(retDiv).innerHTML = result;
				switch(postAction) {
					case 'AddressDialog':
						tmpField = initList();
						for(i=0; i<document.OrderEntry.elements.length; i++){
							if(document.OrderEntry.elements[i].name==tmpField) {
								tmpE = document.OrderEntry.elements[i];
								tmpE.focus();
								tmpE.value = tmpE.value;
								tmpE.focus();
							}
						}
						break;
					case 'AddressDialogRefresh':
						tmpField = initList();
						for(i=0; i<document.OrderEntry.elements.length; i++){
							if(document.OrderEntry.elements[i].name==tmpField) {
								tmpE = document.OrderEntry.elements[i];
								tmpE.focus();
								tmpE.value = tmpE.value;
								tmpE.focus();
							}
						}
						break;
					case 'RateQuote':
						document.getElementById(retDiv).style.display="block";
						document.getElementById(retDiv).scrollIntoView(true);
						break;
					case 'Relogin':
						if(result=="Success") {
							closePopUp("Relogin");
						}
						else {
							document.getElementById("ReloginMsg").innerHTML = result;
						}
						break;
					case 'OrderEntry':
						document.OrderEntry.submit();
						break;
					case 'Confirm':
						document.Confirm.submit();
						break;
					case 'CustomerEmail':
						document.CustomerEmail.submit();
						break;
					case 'CustomerLink':
						document.CustomerLink.submit();
						break;
					case 'SiteMessage':
						document.SiteMessage.submit();
						break;
					case 'MNDOT':
						
						break;
				}
			}
		} else {
			alert('There was a problem with the request.\n\n'+http_request.responseText);
		}
	}
}

/*
makePOSTRequest()
performs an AJAX post request and call the return function to handle the results
*/
function makePOSTRequest(url, parameters, outDiv, postAction) {
	http_request = false;
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			//set type accordingly to anticipated content type
			//http_request.overrideMimeType('text/xml');
			http_request.overrideMimeType('text/html');
		}
	}
	else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request) {
		alert('Cannot create XMLHTTP instance'); return false;
	}

	retDiv = outDiv;
	http_request.onreadystatechange = function() { returnFunction(postAction) };
	http_request.open('POST', url, true);
	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http_request.setRequestHeader("Content-length", parameters.length);
	http_request.setRequestHeader("Connection", "close");
	http_request.send(parameters);
}

/*
loadPageInElement()
submits an AJAX get request and writes the results to a selected element
*/
function loadPageInElement(page_url, element_id, postAction) {
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		xmlhttp = new XMLHttpRequest();
		if (xmlhttp.overrideMimeType) {
			// set type accordingly to anticipated content type
			//xmlhttp.overrideMimeType('text/xml');
			xmlhttp.overrideMimeType('text/html');
		}
	}
	else if (window.ActiveXObject) { // IE
		try {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	var element = document.getElementById(element_id);
	element.innerHTML = '<p><em>Loading ...</em></p>';
	xmlhttp.open("GET", page_url);
	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
			element.innerHTML = xmlhttp.responseText;
		}
		
		switch(postAction) {
			case 'Relogin':
				document.Relogin.UserID.focus();
				selField="Relogin";
				break;
		}
	}
	xmlhttp.send(null);
}

