/*
Define general ajax functions here
HELP:http://www.captain.at/howto-ajax-form-post-request.php
HELP:http://java.sun.com/developer/technicalArticles/WebServices/restful/code_sample4.html
HELP:http://www.phpbuilder.com/columns/jon_campbell20070730.php3
HELP:http://www.quirksmode.org/blog/archives/2005/12/the_ajax_respon.html
HELP:http://www.xml.com/pub/a/2005/02/09/xml-http-request.html

*/

var http_request = false;
   function makePOSTRequest(method,url, parameters) {
      //url = 'http://localhost/dmr/'+url;
      /*alert('Request enter:'+parameters+(new Date()).toString());*/
      http_request = false;
      if(window.XMLHttpRequest) { // Mozilla, Safari,...
       try{
         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');
         }
       }catch(e){}  
      } 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 = alertContentsXML;
     // http_request.open(method, url, true);

     if(method=='GET'){
                 http_request.open(method, url+parameters, true);
                 http_request.setRequestHeader("Content-type", "text/xml");
                 http_request.setRequestHeader("Content-length", parameters.length);
                 http_request.setRequestHeader("Connection", "close");
                 http_request.send(null);
         }
     if(method=='POST')  {
                 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("Connection", "close");
                 http_request.send(parameters);
                 //setTimeout("http_request.send(parameters)",500); 
         }
     if(method=='PUT')  {
                 http_request.open(method, url, true);
                 http_request.setRequestHeader("Content-type", "text/xml");
                 http_request.setRequestHeader("Content-length", parameters.length);
                 http_request.setRequestHeader("Connection", "close");
                 http_request.send(parameters);
         }
     if(method=='DELETE')  {
                 http_request.open(method, url+parameters, true);
                 http_request.setRequestHeader("Content-type", "text/xml");
                 http_request.setRequestHeader("Content-length", parameters.length);
                 http_request.setRequestHeader("Connection", "close");
                 http_request.send(null);
         }
      /*alert('Request exit:'+parameters+(new Date()).toString());*/
}
function alertContents() {
   if (http_request.readyState == 4) {
      if (http_request.status == 200) {
        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('serverresponse').innerHTML = result;
    } else {
      //alert('There was a problem with the request.' 
      //              +http_request.responseText +' '+http_request.status);
      document.getElementById('serverresponse').innerHTML = http_request.responseText;
      }
   }
}
/*These are the examples of using get/post/put/delete api*/   
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 alertContentsXML() {
   if (http_request.readyState == 4) {
    try{
      if (http_request.status == 200) {         
         /*alert('Response enter:'+(new Date()).toString());*/
         XMLdoc = http_request.responseXML;
         //resultt = http_request.responseText;
         //alert('text'+resultt);
        
	if(window.ActiveXObject){ // If IE Windows
	var XMLdoc = new ActiveXObject("Microsoft.XMLDOM");
	XMLdoc.loadXML(http_request.responseText);
	} else {
	var XMLdoc = http_request.responseXML;
	}
	processAjaxResponse(XMLdoc);
       /*alert('Response exit:'+(new Date()).toString());*/
      } else {}
    }catch(e){ /*alert('xxxx'+e.description);*/}
   }
}
   
