var status = 1;

function loadXMLDoc(url) {
    if (status == 0) {
        setTimeout("loadXMLDoc('"+url+"');",50);
    } else {

    status = 0;
    // branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = processReqChange;
        req.open("GET", url, true);
        req.send(null);
    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = processReqChange;
            req.open("GET", url, true);
            req.send();
        }
    }
    }
}

function processReqChange() {
    // only if req shows "complete"
    if (req.readyState == 4) {
       status = 1;
       // only if "OK"
       if (req.status == 200) {
          response  = req.responseXML.documentElement;
          method = response.getElementsByTagName('method')[0].firstChild.data;
          eval(method + '(response)');
       } else {
          alert("There was a problem processing your request. Please try again.");
       }
    }
}
