function send_xmlhttprequest(fce, id, method, url, data, headers) {
    var xmlhttp = (XMLHttpRequest ? new XMLHttpRequest : (ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : false));
    if (!xmlhttp) {
        return false;
    }
    xmlhttp.open(method, url);
    xmlhttp.onreadystatechange = function () {
        xml_state_change(xmlhttp, fce, id);
    };
    if (headers) {
        for (var key in headers) {
            xmlhttp.setRequestHeader(key, headers[key]);
        }
    }
    if (method == "POST") {
        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlhttp.setRequestHeader("Content-length", data.length);
        xmlhttp.setRequestHeader("Connection", "close");
    }
    xmlhttp.send(data);
    return true;
}


function xml_state_change(xmlhttp, fce, id) {
    if (xmlhttp.readyState == 4) {
        var odpoved = xmlhttp.responseText;
        fce(odpoved,id);
    }
}
/**
 * @param form - form element which elements send
 * @param fce  - function called on receive response from server
 * @param id   - ID of element to update (or simly ANY var or const to give as second arg. for fce)
 * @param cond - if cond == false -> return false and do not call Ajax (good for form checking function)
 * return FALSE on SUCCESS (to avoid usual form submit)    
 */     
function ajax_form(form,fce,id,cond) {
    if (!cond) return false;
    var data = "";
    for (i=0; i<form.elements.length; i++) {
        el = form.elements[i];
        if (el.name.length > 0) data = data + "&" + el.name + "=" + encodeURI(el.value);
    }
    data = data + "&ajax=true";
    if (send_xmlhttprequest(fce, id, "POST", form.action, data)) return false; //nechceme aby se odeslal
    else return true; //chceme aby se odeslal formular
}
 
function ajax_request(url,method,fce,id,data) {
    if (send_xmlhttprequest(fce, id, method, url, data)) return false; //nechceme aby se preslo na adresu odkazu
    else return true; //chceme aby se odeslal formular
} 

function update_all(text,id) {
        //alert(text);
        document.getElementById(id).innerHTML = text;
}

function update_before(text,id) {
}

function update_after(text,id) {
   // alert(text);
    div = document.getElementById(id);
    div.innerHTML += text;
    
    //alert(div.scrollTop+" : "+div.scrollHeight);
}
    
