/********************************************
* AJAX support functions
**********************************************/
var http_request = false;
var ajaxDefaultFailureMsg = "<p>We're sorry, but the system was unable to process your request.</p>";
var ajax_DisplayArea = "";

function getXMLHttpRequest(){
	if (window.XMLHttpRequest) { // Mozilla, Safari, ...
	    request = new XMLHttpRequest();
	} else if (window.ActiveXObject) { // IE
		try { request = ActiveXObject("Msxml2.XMLHTTP.6.0"); } catch (e1) {
			try { request = ActiveXObject("Msxml2.XMLHTTP.5.0"); } catch (e2) {
				try { request = ActiveXObject("Msxml2.XMLHTTP.4.0"); } catch (e3) {
					try { request = ActiveXObject("Msxml2.XMLHTTP.3.0"); } catch (e4) {
						try { request = ActiveXObject("Msxml2.XMLHTTP"); } catch (e5) {
							try { request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e6) {
								alert("Microsoft.XMLHTTP: " + err2.name + "-" + err2.message);
							}
						}
					}
				}
			}
		}
	}
	return request;
}

function AJAXGet(requestURL, parameters, async){
	http_request.open('POST', requestURL, async);
	try {
		// needed for Firefox
		http_request.overrideMimeType('text/html'); 
	} catch (e) {}
	http_request.setRequestHeader( "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT" ); // disable caching
	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);
}

function outputToElelment(elementName, content){
	try {
		document.getElementById(elementName).innerHTML=content;
	} catch(e){
		document[elementName].innerHTML=content;
	}
}

function submitAjaxForHTML_worker(async_flag, commandName, displayArea, fieldArray, message){
	ajax_DisplayArea = displayArea;
	if (message){
		outputToElelment(displayArea, message);
	}
	var url = commandName;
	var parms = buildAjaxParms(fieldArray);
	http_request = getXMLHttpRequest();
	if (async_flag == true){
		http_request.onreadystatechange = ajaxUpdateHTML;
	}
	AJAXGet(url, parms, async_flag);
	if (async_flag == false){
		ajaxUpdateHTML(); // synchronous	
	}
}

function submitAjaxForHTML(commandName, displayArea, fieldArray, message){
	submitAjaxForHTML_worker(false, commandName, displayArea, fieldArray, message)
}

function submitAjaxForHTMLAsync(commandName, displayArea, fieldArray, message){
	submitAjaxForHTML_worker(true, commandName, displayArea, fieldArray, message)
}

function buildAjaxParms(fieldArrayParm){
    var myParms = "";
    if (fieldArrayParm && fieldArrayParm.length > 0) {
        var accessMethod = 0;
        var myField;
        try {
            myField = document.getElementById(fieldArrayParm[0]);
            var test = myField.name
        } catch (e) {
            try {
                myField = document[fieldArrayParm[0]];
                accessMethod = 1;
                var test = myField.name
            } catch (e2) {
                //within a form
                accessMethod = 2;
            }
        }
        for (i = 0; i < fieldArrayParm.length; i++) {
            if (accessMethod == 0) {
                myField = document.getElementById(fieldArrayParm[i]);
            } else if (accessMethod == 1) {
                myField = document[fieldArrayParm[i]];
            } else if (accessMethod == 2) {
                myField = document.UIservletForm[fieldArrayParm[i]];
            }
            if (i == 0) myParms = myField.name + "=";
            else myParms = myParms + "&" + myField.name + "=";
            if (myField.type == "checkbox") {
                myParms = myParms + escape(myField.checked ? "Y" : "N");
            } else {
                myParms = myParms + escape(myField.value);
            }
        }
    }
    return myParms;
}

function ajaxUpdateHTML(){
	try {
	    if (http_request.readyState == 4) {
	        if (http_request.status == 200) {
		       	outputToElelment(ajax_DisplayArea,http_request.responseText);
	        } else {
	            outputToElelment(ajax_DisplayArea,ajaxDefaultFailureMsg);
			}
	    }
    } catch(e) {
		alert("ajaxUpdateHTML: " + e.name + "-" + e.message);
    }
}

