
   var http_request = false;
   var targetDiv = null;
   var callBackMethod = null;
   
   function getElement(element) {
	   
   }
   
   function makePOSTRequest(method, url, div, parameters, callBack) {
	   
      http_request = false;
	  targetDiv = div;
	  
	  if( callBack != null ) {
		callBackMethod = callBack;  
	  } else {
		callBackMethod = null;  
	  }
	  
      if(window.XMLHttpRequest) { // Mozilla, Safari,...
         http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType) {
               // Set type accordingly to anticipated content type.
            http_request.overrideMimeType('text/xml');
            // http_request.overrideMimeType('text/html');
         }
      } 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 XMLHttpRequest object');
         return false;
      }
		
      http_request.onreadystatechange = alertContents;

     if(method == 'GET' || method == 'DELETE' ){
		 http_request.open(method, url+parameters, true);
		 //http_request.setRequestHeader("Content-type", "text/xml");
		 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(null);
     }
	 
     if(method == 'POST' || method == 'PUT' )  {
		 http_request.open(method, url, true);
		 //http_request.setRequestHeader("Content-type", "text/xml");
		 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);
     }
	} 
	
	function alertContents() {
	   if (http_request.readyState == 4) {
		  if (http_request.status == 200) {
			//alert('Response received from server:\n'+http_request.responseText);
			result = http_request.responseText;
	   // Turn < and > into &lt; and &gt; for displaying on the page.
			//result = result.replace(/\<([^!])/g, '&lt;$1');
			//result = result.replace(/([^-])\>/g, '$1&gt;');
		   document.getElementById( targetDiv ).innerHTML = result;
		   
		   if( callBackMethod != null ) {
			  callBackMethod(http_request.responseXML.documentElement);   
		   }
		} else {
		  alert('There was a problem with the request. ' 
						+http_request.responseText +' '+http_request.status);
		  document.getElementById( targetDiv ).innerHTML = http_request.responseText;
		  }
	   }
	}
   
   function postTheForm() {
      var poststr = document.myform.xmldata.value ;
      alert('Sending XML to server:\n'+poststr);
      makePOSTRequest('POST',document.myform.endpointURL.value , poststr);
   }
   
   function getTheForm() {
      var getStr = encodeURI(document.myform.xmldata.value) ;
      alert('Sending XML to server:\n'+getStr);
      makePOSTRequest('GET',document.myform.endpointURL.value , getStr);
   }
   
   function putTheForm() {
      var poststr = document.myform.xmldata.value ;
      alert('Sending XML to server:\n'+poststr);
      makePOSTRequest('PUT',document.myform.endpointURL.value , poststr);
   }
   
   function deleteTheForm() {
      var getStr = encodeURI(document.myform.xmldata.value) ;
      alert('Sending XML to server:\n'+getStr);
      makePOSTRequest('DELETE',document.myform.endpointURL.value , getStr);
   }

   function buildQuery(form) {
	   var query = "";
	   for(var i=0; i < form.elements.length; i++) {
		 var key = form.elements[i].name;
		 var value = getElementValue(form.elements[i]);
		 
		 if(key && value) {
			query += key +"="+ value +"&";
		 }
	   }
	   
	   return query;
   }
   
   function getElementValue(formElement) {
	   if(formElement.length != null) var type = formElement[0].type;
	   if((typeof(type) == 'undefined') || (type == 0)) var type = formElement.type;
	
	   switch(type) {
		 case 'undefined': return;
	
		 case 'radio':
			for(var x=0; x < formElement.length; x++) 
			  if(formElement[x].checked == true)
				return formElement[x].value;
	
		 case 'select-multiple':
			var myArray = new Array();
			for(var x=0; x < formElement.length; x++) 
			  if(formElement[x].selected == true)
				 myArray[myArray.length] = formElement[x].value;
			
			return myArray;
	
		 case 'checkbox': return formElement.checked;
	   
		 default: return formElement.value;
	   }
   }

