var loadingMsg = "Loading...";

function getSessID()
{
    var re = /PHPSESSID=([a-z0-9]+)/i;
    if (ok = re.exec(document.cookie)) {
        sessID = ok[1];
    }
    else {
        sessID = null;
    }
}

getSessID();

function newRequestObject()
{
    if (window.XMLHttpRequest)
        return new XMLHttpRequest();
    if (window.ActiveXObject) {
        try {
            return new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                return new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }

    alert("Your browser does not support AJAX. Please try using a different browser");
}

function stripAnchor(url)
{
    return /^[^#]+/.exec(url);
}

function syncQuery(url, post)
{
    var req = newRequestObject();

    req.open(post? "POST": "GET", stripAnchor(url), false);
    if (post) {
        req.setRequestHeader("Content-type",
                "application/x-www-form-urlencoded");
//        req.setRequestHeader("Content-length", post.length);
    }
    req.send(post? post: null);
    return req.readyState == 4 && req.status == 200? req.responseText: null;
}

function evalSyncQuery(url, post)
{
    eval(syncQuery(url, post));
}

function evalAsyncQuery(url, post)
{
    var req = newRequestObject();

    req.onreadystatechange = function() {
        if (req.readyState == 4 && req.status == 200) {
            var js = req.responseText;
            eval(js);
        }
    }
    req.open(post? "POST": "GET", stripAnchor(url), true);
    if (post) {
        req.setRequestHeader("Content-type",
                "application/x-www-form-urlencoded");
//        req.setRequestHeader("Content-length", post.length);
    }
    req.send(post? post: null);
}

function _(id)
{
    return document.getElementById(id);
}

function query(url, post)
{
    if (sessID) post = "PHPSESSID=" + sessID + "&" + post
    window.status = loadingMsg;
    evalSyncQuery(url, post);
    window.status = "";
}

function postQuery(url, post)
{
    if (sessID) post = "PHPSESSID=" + sessID + "&" + post
    evalAsyncQuery(url, post);
}

function collectFormData(form)
{
    var a = new Array();
    for (var i=0; i < form.length; i++) {
        var el = form.elements[i];
        if (el.type == "checkbox" || el.type == "radio") {
            if (!el.checked) {
                continue;
            }
        }
        else if (el.type == "select-one") {
            var v = el.options[el.selectedIndex].value;
            if (!v) {
                v = el.options[el.selectedIndex].text;
            }
            a.push(el.name + "=" + encodeURIComponent(v));
            continue;
        }
        a.push(el.name + "=" + encodeURIComponent(el.value));
    }
    return a.join("&");
}

