function prepareAjaxFunctionSingleParam(handler, command, param, ajaxInProgressFunction, ajaxCompletedFunction, ajaxSuccessFunction) {
    ajaxInProgressFunction();
    var ajax_array = new Array();
    ajax_array["command"] = command;
    ajax_array["param"] = param;
    ajaxFunction(handler, ajax_array, ajaxCompletedFunction, ajaxSuccessFunction);
}

function prepareAjaxFunction(handler, ajax_array, ajaxInProgressFunction, ajaxCompletedFunction, ajaxSuccessFunction) {
    ajaxInProgressFunction();
    ajaxFunction(handler, ajax_array, ajaxCompletedFunction, ajaxSuccessFunction);
}

function ajaxFunction(handler, ajax_array, ajaxCompletedFunction, ajaxSuccessFunction) {
    var xmlHttp;
    try {  
        // Firefox, Opera 8.0+, Safari  
        xmlHttp=new XMLHttpRequest();
    } catch (e) {  
        // Internet Explorer
        try {
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e) {
            try {
                xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e) {
                alert("Your browser does not support AJAX!");
                return false;
            }
        }
    }
    
    xmlHttp.onreadystatechange=function() {
        // 4 = completed
        if(xmlHttp.readyState==4) {            
            ajaxSuccessXMLParse(xmlHttp.responseText, ajaxSuccessFunction);
            ajaxCompletedFunction();
        }
    }
    
    var appendValues = "";
    appendValues += "command=" + escape(ajax_array["command"]);
    for (x in ajax_array) {
        if (x != "command") {
            appendValues += ("&" + escape(x) + "=" + escape(ajax_array[x]));
        }
    }
    
    xmlHttp.open("POST",handler,true);
    
    xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlHttp.setRequestHeader("Content-length", appendValues.length);
	xmlHttp.setRequestHeader("Connection", "close");
    
    xmlHttp.send(appendValues);
}

function ajaxSuccessXMLParse(responseText, ajaxSuccessFunction) {
    try //Internet Explorer
    {
        xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async="false";
        xmlDoc.loadXML(responseText);
    }
    catch(e)
    {
        try //Firefox, Mozilla, Opera, etc.
        {
            parser=new DOMParser();
            xmlDoc=parser.parseFromString(responseText,"text/xml");
        }
        catch(e)
        {
            alert(e.message);
            return;
        }
    }
    ajaxSuccessFunction(xmlDoc);
}