var req;
var xml;
var handler;

// To use this, define 2 new functions in a separate file. The first handles the
// web page event (onclick, mouseover, onchange), and must prototype a handler for
// the XMLHttpRequest's response:
//
//   function myClickFunction() {
//     Function.prototype.handle = myResponseHandler;
//     handler = new Function();
//     sendXML("/exampleServet?myParam=test");
//     return false;
//   }
//
//   function myResponseHandler() {}
function processReqChange() {
  // only if req shows "complete"
  if (req.readyState == 4) {
    // only if "OK"
    if (req.status == 200) {
      // Get document root element node
      xml = req.responseXML;
      // In IE, need to create Dom manually :(
      if (window.ActiveXObject) {
        xml = new ActiveXObject("Microsoft.XMLDOM");
        xml.loadXML(req.responseText);
      }
      handler.handle();
    }
  }
}

function sendXML(url) {
  if (window.XMLHttpRequest) {
    // branch for native XMLHttpRequest object
    req = new XMLHttpRequest();
    req.overrideMimeType("text/xml");
    req.onreadystatechange = processReqChange;
    req.open("GET", url, true);
    req.send(null);
  } else if (window.ActiveXObject) {
    // branch for IE/Windows ActiveX version
    req = new ActiveXObject("Microsoft.XMLHTTP");
    if (req) {
      req.onreadystatechange = processReqChange;
      req.open("GET", url, true);
      req.send();
    }
  }  
}