/*------------------------------------------------------------------------
 * create_request()
 * 
 * Create an XML HTTP Request object.
 *------------------------------------------------------------------------*/

function create_request() {
    var req;

    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
    }
    else {
        req = false;
    }

    return req;
}


/*------------------------------------------------------------------------
 * request_HTML(url)
 * 
 * Fetch an HTML document.
 *------------------------------------------------------------------------*/

var http = create_request();

function request_HTML(url, handler, failure) {
    http.open('GET', url, true);
    http.onreadystatechange = function () {
        if (http.readyState == 4) {
            if (http.status == 200)
                handler(http.responseText);
            else if (failure)
                failure(http);
        }
    };
    http.send(null);
}


/*------------------------------------------------------------------------
 * request_XML(url)
 * 
 * Fetch an XML document.
 *------------------------------------------------------------------------*/

function request_XML(url, handler, failure) {
    http.open('GET', url, true);
    http.onreadystatechange = function () {
        if (http.readyState == 4) {
            if (http.status == 200)
                handler(http.responseXML.documentElement);
            else if (failure)
                failure(http);
        }
    };
    http.send(null);
}
