
function createXMLHTTPRequestObject(handler){
    var xhr;
    if (window.XMLHttpRequest) { // Mozilla, Safari, ...
        xhr = new XMLHttpRequest();
        //if (xhr.overrideMimeType) {
        //    xhr.overrideMimeType('text/xml');
        //}
    }
    else if (window.ActiveXObject) { // IE
        try {
            xhr = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e) {
            try {
                xhr = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }
    if (!xhr) {
        alert('Cannot create an XMLHTTP instance');
        return false;
    }
    xhr.onreadystatechange = function() { handleServerResponse(xhr, handler); };
    return xhr;
}

function handleServerResponse(xhr, handler) {
    if (xhr.readyState == 4){
        if (xhr.status == 200){
            try {
                handler(xhr);
            }
            catch (e) {
                alert("Error while processing response");
            }
        } else {
            alert ("Error!");
        }
    }
}

function get_post_string(form_id) {
    var frm = document.getElementById(form_id);
    var frm_elements = frm.elements;
    var post_string = '';
    for (var i = 0; i < frm_elements.length; i++){
        if (i != 0) post_string += '&amp;';
        if (frm_elements[i].type == 'checkbox' && frm_elements[i].value == 'on') {
            if (frm_elements[i].checked){
                post_string += frm_elements[i].name + '=1';
            } else {
                post_string += frm_elements[i].name + '=0';
            }
        } else if (frm_elements[i].type == 'radio' || frm_elements[i].type == 'checkbox'){
            if (frm_elements[i].checked)
                post_string += frm_elements[i].name + '=' + encodeURIComponent(frm_elements[i].value);
        }
        else {
            post_string += frm_elements[i].name + '=' + encodeURIComponent(frm_elements[i].value);
        }
    }
    return post_string;
}
