// JavaScript Document
/**
 * This function, requestData, takes the passed /p_request/ object and
 * sends the passed /p_data/ to the passed /p_URL/.  The /p_request/
 * object calls the /p_func/ function on /onreadystatechange/.
 *
 * @param {Object} p_request The XMLHttpRequest object to use.
 * @param {String} p_URL The URL to send the data request to.
 * @param {String} p_data The data that is to be sent to the server through
 *     the request.
 * @param {String} p_func The string name of the function to call on
 *     /onreadystatechange/.
 * @param {String} p_method The method that the request should use to pass
 *     parameters.
 * @param {string} p_args Arguments passed to p_func 
 */

  var browser = navigator.appName;

function createXMLHttpRequest() {
  if (window.XMLHttpRequest) {
    req = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    req = new ActiveXObject("Microsoft.XMLHTTP");
  }
  return req;
}

function requestData( req, p_URL, p_data, target ) {
  if (req != undefined) {
    url = p_URL + "?" + p_data;
    if ( browser=="Microsoft Internet Explorer" ) {
        req.onreadystatechange = function() { 
  	    if (req.readyState == 4) { // only if req is "loaded"
 	      if ( req.status == 200 ) { 
      		    document.getElementById(target).innerHTML = req.responseText;
			return true;
	      } else {
      		    document.getElementById(target).innerHTML=" Error:\n"+ req.status + "\n" +req.statusText;
			return false;
	      }
	    }
        };
        req.open("GET", url, false);
        req.send("");
    } else {
        req.open("GET", url, true);
        req.send("");
        req.onreadystatechange = function() { 
  	    if (req.readyState == 4) { // only if req is "loaded"
 	      if ( req.status == 200 ) { 
      		    document.getElementById(target).innerHTML = req.responseText;
			return true;
	      } else {
      		  document.getElementById(target).innerHTML=" Error:\n"+ req.status + "\n" +req.statusText;
						return false;
	      }
	    }
        };
    }
  }
}
function requestPostData( req, p_URL, p_data, target ) {
  if (req != undefined) {
    url = p_URL;
    sz = p_data.length;
    if ( browser=="Microsoft Internet Explorer" ) {
        req.open("POST", url, false); 
    } else {
        req.open("POST", url, true);
    }
    req.onreadystatechange = function() { 
  	  if (req.readyState == 4) { // only if req is "loaded"
   	    if ( req.status == 200 ) {
        		 document.getElementById(target).innerHTML = req.responseText;
  			     return true;
  	      } else {
        		 document.getElementById(target).innerHTML=" Error:\n"+ req.status + "\n" +req.statusText;
	 		       return false;
	        }
	      }
      };
      req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
      req.setRequestHeader('Content-Length', sz);
      req.send( p_data );
	}
}
function sendPostData( req, p_URL, p_data ) {
  if (req != undefined) {
    url = p_URL;
    sz = p_data.length;
    if ( browser=="Microsoft Internet Explorer" ) {
        req.open("POST", url, false); 
    } else {
        req.open("POST", url, true);
    }
    req.onreadystatechange = function() { 
  	  if (req.readyState == 4) { // only if req is "loaded"
   	    if ( req.status == 200 ) {
  			     return true;
  	      } else {
	 		       return false;
	        }
	      }
      };
      req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
      req.setRequestHeader('Content-Length', sz);
      req.send( p_data );
	}
}

/**
 * 	Process values in a form 
 *
 * @param {Object} oForm Form with values to convert to get-string.
 * @return {String} String in the key1=value1&key2=value2 format
 *   
 */  
function getFormBody( oForm ) {
    // Takes the content of at POST form and returns it 
    // in the form of a get string, which is then
    // send to the server.
  	var aParams = new Array();
  	l = oForm.elements.length;
  	for (var i = 0; i < l; i++ ) {
  		var sParam = encodeURIComponent( oForm.elements[i].name );
  				sParam += "=";
  				sParam += encodeURIComponent( oForm.elements[i].value );
  				aParams.push( sParam );
  	}
	 	return aParams.join("&");
}

