  	function makePOSTRequest(url, assArr,functionName) {
      http_request = false;
      if (window.XMLHttpRequest) { // Mozilla, Safari,...
         http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType) {
            http_request.overrideMimeType('text/xml');
         }
      } else if (window.ActiveXObject) { // IE
         try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }
      if (!http_request) {
         alert('Cannot create XMLHTTP instance');
         return false;
      }
      parameters = toRequestParams(assArr);
      http_request.onreadystatechange = functionName;
      http_request.open('POST', url, true);
      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);
      return http_request;
   }
   
   function makeNamedPOSTRequest(url, assArr,functionName,requestName) {
      if (typeof(http_requests) == 'undefined'){
      	http_requests = {};
      }
      http_requests[requestName] = false;
      if (window.XMLHttpRequest) { // Mozilla, Safari,...
         http_requests[requestName] = new XMLHttpRequest();
         if (http_requests[requestName].overrideMimeType) {
            http_requests[requestName].overrideMimeType('text/xml');
         }
      } else if (window.ActiveXObject) { // IE
         try {
            http_requests[requestName] = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               http_requests[requestName] = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }
      if (!http_requests[requestName]) {
         alert('Cannot create XMLHTTP instance');
         return false;
      }
      parameters = toRequestParams(assArr);
      http_requests[requestName].onreadystatechange = functionName;
      http_requests[requestName].open('POST', url, true);
      http_requests[requestName].setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      http_requests[requestName].setRequestHeader("Content-length", parameters.length);
      http_requests[requestName].setRequestHeader("Connection", "close");
      http_requests[requestName].send(parameters);
      return http_requests[requestName];
   }
   
   function toRequestParams(aA){
		var params = "";
		var first  = true;
		for (key in aA){
			if (!first){
				params+="&";
			}else{
				first = false;
			}
			params+=(key+"="+encodeURI(aA[key]));
		}
		return params;
	}
	
	function initAJAXRequest(){
		var req;
		if (window.XMLHttpRequest) {
       		req = new XMLHttpRequest();
    	} else if (window.ActiveXObject) {
       		req = new ActiveXObject("Microsoft.XMLHTTP");
       	}
    	return req;
	}

	function parseKV(xmlText){

		var kvElems = {};
		var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async="false";
		xmlDoc.loadXML(xmlText);
		xmlObj=xmlDoc.documentElement;
		var keyValueArray 	= xmlObj.childNodes;
		for (var i=0;i<keyValueArray.length;i++){
			var keyValueElement = keyValueArray(i);
			var key 	= keyValueElement.getAttribute("key");
			var value 	= keyValueElement.getAttribute("value");
			kvElems[key] 	= value ;
		}
		return kvElems;

	}

	function getResponseXML(req){		
		if (req.readyState == 4) {
			if (req.status == 200) {				
				return req.responseXML.xml;
			}else{
		        alert("Request Failed with Status "+req.status);
		    }
        }else{
        	return '';
        }
	}

	function assocArrayToString(aA){
	   var sb = "";
	   for (key in aA){
		sb+=(key+':\t'+aA[key]+'\n');
	   }
	   return sb;
	}
	
	function getDupMessage(req){
		return assocArrayToString(parseKV(getResponseXML(req)));
	}
