var d = document;
var ids = new Array();
var pcs = new Array();
function Ajax() {
    var request = null;
    function init() {
        if(XMLHttpRequest) request = new XMLHttpRequest();
        else if(ActiveXObject) {
             try { request = new ActiveXObject("Msxml2.XMLHTTP"); }
             catch (e) { try { request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} }
        }
        request.onreadystatechange = doWhenLoaded;
    };
    this.get = function(s,v) {
        init();
        if(navigator.appName!="Netscape") v+="&d="+(new Date()).getTime();
        var url = getURL(s)+"?submit="+v;
        if(typeof(pageTracker)!="undefined") pageTracker._trackPageview("/servlet/"+s+"?submit="+v);
        request.open("GET",url,true);
        request.send(null);
    }
    this.post = function(s,f) {
        init();
        request.open("POST",getURL(s),true);
        request.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
        request.send(formToParams(f));
    }
    function process() {
        var xml = request.responseXML;
        if(!xml || !xml.firstChild || xml.firstChild==null) return;
        var node = xml.firstChild;
        if(navigator.appName=="Netscape") xml.normalize();
        else node = xml.childNodes[1];
        for(var i=0;i < ids.length;i++) {
            id = ids[i];
            for(var c=0;c < node.childNodes.length;c++) {
                if((n = node.childNodes[c].tagName) && n==id &&
                   (xelem = xml.getElementsByTagName(id)[0]) && xelem.firstChild) {
                    if((delem = d.getElementById(id)))
                        if(delem.tagName.toLowerCase()=="select" && /MSIE (\d+\.\d+);/.test(navigator.userAgent)) setIESelect();
                        else delem.innerHTML = xelem.firstChild.data;
                    for(var p=0;p<pcs.length;p++) pcs[p]();
                    node.removeChild(node.childNodes[c]);
                }
            }
        }
    }
    function doWhenLoaded() {
        if(request.readyState!=4 || request.status!=200) return;
        var count = 0;
        var delay = 250;
        var limit = 60000;
        var timer = null;
        function whenLoaded() {
            if(timer) clearTimeout(timer);
            if(d.getElementById("loaded")) process();
            else if(count<=limit) {
                timer = setTimeout(whenLoaded,delay);
                count += delay;
            }
        }
        whenLoaded();
    }
    function setIESelect() {
        var xd = new ActiveXObject("MSXML2.DOMDocument");
        xd.async = "false";
        xd.loadXML("<z>"+xelem.firstChild.data.replace(/='/g,"=\"").replace(/'>/g,"\">").replace(/&/g,"&amp;").replace(/'/g,"&#39;")+"</z>");
        if((z = xd.firstChild)) {
            while(delem.hasChildNodes()) delem.removeChild(delem.firstChild);
            for(var o=0;o < z.childNodes.length;o++) {
                var a = z.childNodes[o].attributes[0];
                var oe = d.createElement("<option "+a.name+"=\""+a.value+"\">");
                oe.innerHTML = a.value.replace("&","&amp;");
                delem.appendChild(oe);
            }
        } else {
            setDesc(("<z>"+xelem.firstChild.data+"</z>").replace(/<option>/g,"").replace(/<\/option>/g,"<br />"));
            alert("Pause for Debug");
        }
    }
}
function enterFire(e,f) {
    var code = 0;
    if(window.event) code = e.keyCode;
    else if(e.which) code = e.which;
    if(code==13) f();
}
function formToParams(form) {
    var elems = form.elements;
    var params = "";
    for(var i = 0; i < elems.length; i++) {
        if(!elems[i].name || elems[i].name=='' || !elems[i].value || elems[i].value=='' || (elems[i].type=="radio"& !elems[i].checked)) continue;
        if(params.length>0) params += "&";
        params += elems[i].name;
        if(elems[i].type=="checkbox")
            if(elems[i].checked) params += "=true";
            else params += "=false";
        else params += "=" + encodeURIComponent(elems[i].value);
    }
    return(params);
}
function getURL(s) {
    var protocol = "https";
    if(d.URL.indexOf(protocol)<0) protocol = "http";
    return(protocol+"://"+location.hostname+"/servlet/"+s);
}
function getRequest(s,v) { (new Ajax()).get(s,v); }
function postForm(s,f) { (new Ajax()).post(s,f); }
