var request;
var dcpType = 1; // General flag indicating what type of return data decomposition is used
var ajax_returnData;
var queryString;
var dcpObjRecv = {} ;

var isNav = (navigator.appName == "Netscape");

function initReq(reqType,url,isAsynch){
    if(isNav)
    	request.onload=handleResponse;
    else
    	request.onreadystatechange=handleResponse;
    
    request.open(reqType,url,isAsynch);
    request.setRequestHeader("Content-Type",
            "application/x-www-form-urlencoded; charset=UTF-8");
    request.send(queryString);
    
}

function httpRequest(reqType,url,asynch, decomposeType, decomposeObject){


    dcpType = decomposeType;
    dcpObjRecv = decomposeObject;
    
    //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");

        }
    }
    if(request){
    	
        initReq(reqType,url,asynch);
        
    } else {
        alert("Your browser does not permit the use of all "+
              "of this application's features!");
			 
    }

}

function handleResponse(  ){
    try{
    
        if(request.readyState == 4){
            if(request.status == 200){
              		
               		if(dcpType == 1)
               			decomposeSelectVal(request.responseText, dcpObjRecv);
               		else
               			ajax_returnData = request.responseText;
            } else {
                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);
    }
}

function reconstructSelect(select, labels, values) {
	var selectOptions = select.options;
	
	while(selectOptions.length > 0)
		select.options[0] = null;
	for(x=0; x< labels.length; x++) {
		var elemRef = document.createElement("option");
		elemRef.value = values[x];
		elemRef.label = labels[x];
		elemRef.text = labels[x];
		if(isNav) { 
			elemRef.innerHTML = labels[x];
   			select.add(elemRef, null);
		}
		else
			select.add(elemRef);
	}
}