var d = document;
var ids = new Array();
function Ajax() {
    var request = null;
    function init() {
        if(window.XMLHttpRequest) request = new XMLHttpRequest();
        else if(window.ActiveXObject) {
             try { request = new ActiveXObject("Msxml2.XMLHTTP"); }
             catch (e) { try { request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} }
        }
        request.onreadystatechange = processWhenLoaded;
    };
    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++) {
            this.id = ids[i];
            for(var c=0;c < node.childNodes.length;c++) {
                if((name = node.childNodes[c].tagName) && name==id &&
                   (xelem = xml.getElementsByTagName(id)[0]) && xelem.firstChild) {
                    if((delem = d.getElementById(id))) delem.innerHTML = xelem.firstChild.data;
                    processCustom();
                    node.removeChild(node.childNodes[c]);
                }
            }
        }
    }
    function processWhenLoaded() {
        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 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); }
function processCustom() {}
