var oRequest;

//event handler for XMLHttpRequest
function getResponse(){
    try{
        if(oRequest.readyState == 4){
			if(oRequest.status == 200){
				
				//alert('we are ready to continue... data has been loaded.');
				handleResponseData();
	
			} else {
                //request.status is 503  if the application isn't available; 500 if the application has a bug
                alert(oRequest.status);
                alert("A problem occurred with communicating between the XMLHttpRequest object and the server program.");
            }
        }//end outer if
    } catch (err)   {
        alert("It does not appear that the server is available for this application. Please"+
              " try again very soon. \nError: "+err.message);
    }
}

/* Initialize a Request object that is already constructed */
function initReq(reqType,url,bool){
    try{
        /* Specify the function that will handle the HTTP response */
        oRequest.onreadystatechange=getResponse;
        oRequest.open(reqType,url,bool);		
        oRequest.send(null);
    } catch (errv) {
        alert(
                "The application cannot contact the server at the moment. "+
                "Please try again in a few seconds." );
    }
}

/* 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. */
function makeHttpRequest(reqType,url,asynch){
    
	//Mozilla-based browsers
    if(window.XMLHttpRequest){
        oRequest = new XMLHttpRequest();
    } else if (window.ActiveXObject){
        oRequest=new ActiveXObject("Msxml2.XMLHTTP");
        if (! oRequest){
            oRequest=new ActiveXObject("Microsoft.XMLHTTP");
        }
     }
    //the request could still be null if neither ActiveXObject
    //initializations succeeded
    if(oRequest){
       initReq(reqType,url,asynch);
    }  else {
        alert("Your browser does not permit the use of all "+
        "of this application's features!");}
}
