
    function xhr_fake_request() {
       this.readyState = 42;
       this.status = 42;
    }

    function xhr_request(response_callback, url, callback_parameter, method, data, async, user, password) {
        var http_request = false;
	if (method == undefined) {
	   method = 'GET';
	}
	if (data == undefined) {
	   data = null;
	}
	if (async == undefined) {
	    async = true;
	}
	if (user == undefined) {
	   user = null;
	}
	if (password == undefined) {
	   password = null;
	}

        if (window.XMLHttpRequest) {
            http_request = new XMLHttpRequest();
/*
            if (http_request.overrideMimeType) {
                http_request.overrideMimeType('text/xml');
            }
*/
        } else if (window.ActiveXObject) {
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }

        if (!http_request) {
	    http_request = new xhr_fake_request();
            response_callback(http_request);
            return false;
        }
        http_request.onreadystatechange = function() { response_callback(http_request, callback_parameter); };
        http_request.open(method, url, async, user, password);
        http_request.send(data);

    }

   function xhr_fill_element(http_request, filled_element_id, error_reporting) {
      var filled_element = document.getElementById(filled_element_id);
      
      error_reporting = error_reporting == undefined ? false : error_reporting;

      if (filled_element != null) {
         if (http_request.readyState == 4) {
            if (http_request.status == 200) {
	       var response = http_request.responseText;
	       if (response != null) {
                  filled_element.innerHTML = response;
	       }
            } else {
	       if (error_reporting) {
	          filled_element.innerHTML = 'XMLHttpRequest error...';
	       }
            }
         } else if (http_request.readyState == 42) {
	    if (error_reporting) {
	       filled_element.innnerHTML = 'XMLHttpRequest not supported...';
	    }
	 } else {
	    if (error_reporting) {
	       filled_element.innnerHTML = '...loading...';
            }
	 }
      }     
   }
   
   function xhr_fill_element_verbose(http_request, filled_element_id) {
      return xhr_fill_element(http_request, filled_element_id, true);
   }

   function xhr_fill_element_quiet(http_request, filled_element_id) {
      return xhr_fill_element(http_request, filled_element_id, false);
   }



