if (!this.APPION) {
  APPION = {};
}

APPION.ajax = {};
(function() {

   /*----------------------------------------------------------------------
    * Creates the XMLHttpRequest object.
    *----------------------------------------------------------------------*/
   function reqObject() {
     var request = null;

     if (window.XMLHttpRequest) {
       // Mozilla, Opera, Safari, ...
       request = new XMLHttpRequest();
     }
     else if (window.ActiveXObject) {
       // Internet Explorer
       try {
         request = new ActiveXObject("Msxml2.XMLHTTP");
       }
       catch (e) {
         try {
           request = new ActiveXObject("Microsoft.XMLHTTP");
         }
         catch (e) {
           // Unsupported Browers
           alert("This browser does not support asynchronous server this.reqObjects.");
         }
       }
     }
     return request;
   }

   /*-----------------------------------------------------------------------
    * Sends an AJAX request to the server.
    *
    *   --Arguments:
    *     'url':      the server url where the request will be sent.
    *     'callback': a callback function that will be called with the response
    *     'query':    optional query string to send to the server
    *                 (e.g. name1=value1&name2=value2).
    *-----------------------------------------------------------------------*/
   APPION.ajax.sendRequest = function(url, callback, query) {
     var request = reqObject();
     if (request) {
       if (query) {
	 request.open("POST", url, true);
	 request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	 request.onreadystatechange = callback;
	 request.send(query);
       } else {
	 request.open("GET", url, true);
	 request.onreadystatechange = callback;
	 request.send(null);
       }
     }
     return request;
   };
 })();


// Debug Stuff.
function showStatus(msg) {
  div = document.getElementById("ajaxstatus");
  if (div) {div.innerHTML = msg;}
}
