function loadHtml(id, url) {
    var div = getElementById(id);
    try {
        req = getXMLHTTP();
        if (null == req) {
            return false;
        }

        req.open("GET", url, true);
        req.onreadystatechange = function() {
            if (4 == req.readyState) {
                if (200 == req.status) {
                    div.innerHTML = req.responseText;
                } else {
                    div.innerHTML = "Error retrieving the data:\n" + req.statusText + "\n URL: " + url;
                }
            }
        }
        req.send(null);
        return true;
    }
    catch (ex) {
        alert(ex);
        return false;
    }
}

// Abstracts browser-specific differences in getting the
//  XmlHttpRequest object. First tries the IE way, then
//  the Mozilla, Firefox, Safari, Opera way
//
function getXMLHTTP() {
    var req = null;
    try {
        req = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (ex1) {
        try {
            req = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (ex2) {
            req = null;
        }
    }
    if (null == req
            && typeof XMLHttpRequest != "undefined") {
        req = new XMLHttpRequest();
    }
    return req;
}

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

function PageQuery(q) {
    if (q.length > 1) this.q = q.substring(1, q.length);
    else this.q = null;
    this.keyValuePairs = new Array();
    if (q) {
        for (var i = 0; i < this.q.split("&").length; i++) {
            this.keyValuePairs[i] = this.q.split("&")[i];
        }
    }

    this.getKeyValuePairs = function() {
        return this.keyValuePairs;
    }

    this.getValue = function(s) {
        for (var j = 0; j < this.keyValuePairs.length; j++) {
            if (this.keyValuePairs[j].split("=")[0] == s)
                return this.keyValuePairs[j].split("=")[1];
        }
        return false;
    }

    this.getParameters = function() {
        var a = new Array(this.getLength());
        for (var j = 0; j < this.keyValuePairs.length; j++) {
            a[j] = this.keyValuePairs[j].split("=")[0];
        }
        return a;
    }

    this.getLength = function() {
        return this.keyValuePairs.length;
    }
}

function queryString(key) {
    var page = new PageQuery(window.location.search);
    return unescape(page.getValue(key));
}