// JavaScript Document
var request = null;
/* Wrapper function for constructing a request object.
 Parameters:
  reqType: The HTTP request type, such as GET or POST.
  url: The URL of the server program.
  asynch: Whether to send the request asynchronously or not.
  respHandle: The name of the function that will handle the response.
  Any fifth parameters, represented as arguments[4], are the data a
  POST request is designed to send. */
function httpRequest(reqType,url,asynch,respHandle) {
    //Mozilla-based browsers
    if(window.XMLHttpRequest)
        request = new XMLHttpRequest();
    else if (window.ActiveXObject) {
        request=new ActiveXObject("Msxml2.XMLHTTP");
        if (! request)
            request=new ActiveXObject("Microsoft.XMLHTTP");
    }
    //very unlikely, but we test for a null request
    //if neither ActiveXObject was initialized
    if(request) {
        //if the reqType parameter is POST, then the
        //5th argument to the function is the POSTed data
        if(reqType.toLowerCase(  ) != "post")
            initReq(reqType,url,asynch,respHandle);
        else {
            //the POSTed data
            var args = arguments[4];
			if(args != null && args.length > 0)
                initReq(reqType,url,asynch,respHandle,args);
        }
    } else
        alert("Your browser does not permit the use of all of this application's features!");
}

/* Initialize a request object that is already constructed */
function initReq(reqType,url,bool,respHandle) {
    try{
        /* Specify the function that will handle the HTTP response */
        request.onreadystatechange=respHandle;
        request.open(reqType,url,bool);
        //if the reqType parameter is POST, then the
        //5th argument to the function is the POSTed data
        if(reqType.toLowerCase(  ) == "post") {
            request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
            request.send(arguments[4]);
        }  else
            request.send(null);
    } catch (errv) {
        alert(
        "The application cannot contact "+
        "the server at the moment. "+
        "Please try again in a few seconds.\\n"+
        "Error detail: "+errv.message);
    }
}