var req;
var longEnough;
var progmsg;

function loadXMLDoc(url,async,message) {
    progmsg=message;
    // branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
        req=new XMLHttpRequest();       
        req.onreadystatechange=ajaxCallback;
        req.open("GET",url,async);
        req.send(null);
    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        req=new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange=ajaxCallback;
            req.open("GET",url,async);
            req.send();
        }
    }
}

function ajaxCallback() {
    if (req.readyState==1 && progmsg!='') { // Loading
        var progress=document.getElementById('progress_id');
        progress.innerHTML='<img src="/pages/images/updating.gif" width="21" height="22" />&nbsp;&nbsp;&nbsp;'+progmsg;
        var top_px=(document.documentElement.clientHeight/2+document.documentElement.scrollTop-50)+"px";
        var left_px=(document.documentElement.clientWidth/2+document.documentElement.scrollLeft-25)+"px";
        progress.style.top=top_px;
        progress.style.left=left_px;    
        progress.style.display='block';
        longEnough=false;
        setTimeout("longEnough=true",1000);
    }
    if (req.readyState==4) { // Loaded
        if (req.status==200) { // HTTP OK
             var result=req.responseXML;
             if (result.xml=='') alert(req.responseText);
             var actionElements=result.getElementsByTagName('action');   
             for (var i=0; i<actionElements.length; i++) {
                 var actionElement=actionElements[i];
                 var method=actionElement.getElementsByTagName('method')[0].firstChild.nodeValue;         
                 if (method=='script') {
                     var code=actionElement.getElementsByTagName('code')[0].firstChild.nodeValue;
                     eval(code);
		 } else if (method=='nodeRewrite') {
                     target=actionElement.getElementsByTagName('target')[0].firstChild.nodeValue;
                     html=actionElement.getElementsByTagName('html')[0].firstChild.nodeValue;
                     document.getElementById(target).innerHTML=html;
		 } else if (method=='fieldSet') {
                     target=actionElement.getElementsByTagName('target')[0].firstChild.nodeValue;
                     value=actionElement.getElementsByTagName('value')[0].firstChild.nodeValue;
                     if(value) {
                         document.getElementById(target).value=value;
                     } else {
                         document.getElementById(target).value='';
                     }
                 }
             }
//        } else {
//             alert("There was a problem retrieving the XML data:\n"+req.statusText);
        }
        if (progmsg!='') closeProgress();
    }
}

function closeProgress() {
if (longEnough) {
        document.getElementById('progress_id').style.display='none';
        return;
}
setTimeout("closeProgress()",100);
}
