/*
Copyright (c) 2007, DuniaKarir.com

Javascript source code to help with XMLHttpRequest / AJAX
*/

function HttpRequestHandler(handlerFunction, mimeType)
{
    this.handlerFunction = handlerFunction;
    this.httpRequest = null;
    if (mimeType == null) { this.overrideMimeType = 'text/xml'; }
    else { this.overrideMimeType = mimeType; }
}

function makePOSTRequest(url, parameters, handler) {
    var httpRequest = false;
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
        httpRequest = new XMLHttpRequest();
        if (httpRequest.overrideMimeType) {
            // set type accordingly to anticipated content type
            httpRequest.overrideMimeType(handler.overrideMimeType);
        }
    } else {
        try {
            httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }
    if (!httpRequest) {
        alert('Browser anda tidak dapat kami support.\nCobalah pakai Mozilla Firefox, Internet Explorer, atau Opera');
        return false;
    }

    handler.httpRequest = httpRequest;
    httpRequest.onreadystatechange = function() {
        if (httpRequest.readyState == 4) {
            if (httpRequest.status == 200) {
                handler.handlerFunction(handler); // execute handler function when ready
            } else {
                alert('Ada masalah dengan pengiriman data.');
            }
        }
    }
    httpRequest.open('POST', url, true);
    httpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    httpRequest.setRequestHeader("Content-length", parameters.length);
    httpRequest.setRequestHeader("Connection", "close");
    httpRequest.send(parameters);
}

function post(form, handlerFun, actionURL) {
    var handler = new HttpRequestHandler(handlerFun, 'text/xml');
    var length = form.elements.length;
    var poststr = "";
    for (var i=0; i<length; i++) {
        if (i != 0) { poststr = poststr.concat("&"); }
        var elem = form.elements[i];
        if ((elem.type != "checkbox") || (elem.checked)) {
            // don't add the elem if it's a checkbox and not checked
            poststr = poststr.concat(elem.name, "=", encodeURI(elem.value));
        }
    }
    makePOSTRequest(actionURL, poststr, handler);
}