/** Odeslání XMLHttp požadavku
* @param Function state_change funkce zajišťující obsluhu při změně stavu požadavku, dostane parametr s XMLHttp objektem
* @param string method GET|POST|...
* @param string url URL požadavku
* @param string [content] tělo zprávy
* @param object [headers] předané hlavičky ve tvaru { 'hlavička': 'obsah' }
* @return boolean true v případě úspěchu, false jinak
* @copyright Jakub Vrána, http://php.vrana.cz
*/
function send_xmlhttprequest(state_change, method, url, content, headers) {
    var xmlhttp = (window.XMLHttpRequest ? new XMLHttpRequest() : (window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : false));
    if (!xmlhttp) {
        return false;
    }
    xmlhttp.open(method, url);
    xmlhttp.onreadystatechange = function () {
        state_change(xmlhttp);
    };
    headers = headers || {};
    headers['X-Requested-With'] = headers['X-Requested-With'] || 'XMLHttpRequest';
    for (var key in headers) {
        xmlhttp.setRequestHeader(key, headers[key]);
    }
    xmlhttp.send(content);
    return true;
}

function post_xmlhttprequest(state_change, url, form, headers) {
    var elements = form.elements;
    var content = [];
    for (var i=0; i < elements.length; i++) {
        if (elements[i].attributes.name && elements[i].attributes.name.specified && !elements[i].disabled) {
            if (/^(select)$/i.test(elements[i].tagName)) {
                var options = elements[i].options;
                for (var j=0; j < options.length; j++) {
                    if (options[j].selected) {
                        var value = (options[j].attributes.value && options[j].attributes.value.specified ? options[j].value : options[j].text);
                        content.push(encodeURIComponent(elements[i].name) + '=' + encodeURIComponent(value));
                    }
                }
            } else if (!/^(submit|reset|button|file|image)$/i.test(elements[i].type) && (!/^(radio|checkbox)$/i.test(elements[i].type) || elements[i].checked)) {
                content.push(encodeURIComponent(elements[i].name) + '=' + encodeURIComponent(elements[i].value));
            }
        }
    }
    if (!headers) {
        headers = {};
    }
    headers['Content-Type'] = 'application/x-www-form-urlencoded';
    return send_xmlhttprequest(state_change, 'POST', url, content.join('&'), headers);
}

function hlasovat(hlas,hlasu,stav,hlasoval) {
    if(hlasoval==0){
    document.getElementById('hlasu').innerHTML = hlasu + 1;
    if(hlas==1) document.getElementById('stav').innerHTML = stav + 1;
    if(hlas==-1) document.getElementById('stav').innerHTML = stav - 1;
    document.getElementById('odhlasovano').innerHTML = "Děkujeme za Váš hlas.";
    }
    else{
    document.getElementById('odhlasovano').innerHTML = "Už jste hlasoval.";
    }
    // odeslání požadavku na aktualizaci dat
    if (!send_xmlhttprequest("", 'GET', '?action=hlasuj&hodnota='+hlas)) {
        return false;
    }
    return true;
}

function hlasovat2(hlas,stav,hlasoval,id) {
    if(hlasoval==0){
    if(hlas==1) document.getElementById('stav'+id).innerHTML = stav + 1;
    if(hlas==-1) document.getElementById('stav'+id).innerHTML = stav - 1;
    document.getElementById('odhlasovano').innerHTML = "Děkujeme za Váš hlas.";
    }
    else{
    document.getElementById('odhlasovano').innerHTML = "Už jste hlasoval.";
    }
    // odeslání požadavku na aktualizaci dat
    if (!send_xmlhttprequest("", 'GET', '?action=hlasuj&hodnota='+hlas+'&id='+id)) {
        return false;
    }
    return true;
}

function odeslat(form,avatar,pohlavi,sekce) {
    document.getElementById('stav_odesilani').innerHTML = 'Odesílá se.<br /><img src=\'/images/ajax-'+sekce+'.gif\' alt=\'loader\' />';
    return post_xmlhttprequest(function (xmlhttp) {
        if (xmlhttp.readyState == 4) {
            if(pohlavi == '' && form.autor.value == ''){ odeslano = 0; }
            else if(pohlavi == '' && form.spcontrol.value != '2'){ odeslano = 0; }
            else{ odeslano = 1; }
            
            if(avatar != '') obr_ava = avatar;
            else obr_ava = '/images/avatar-none.gif';
            
            if(pohlavi == '') pohlavi = 'normal';
            
            if(odeslano == 1 && form.text.value != ''){
              document.getElementById('stav_odesilani').innerHTML = 'Odesláno.';
              document.getElementById('odeslany').innerHTML = '<h3 class=\'prispevek\'><a href=\'/video/profil/'+form.autor.value+'\'><span class=\''+pohlavi+'\'>'+form.autor.value+'</span></a><span class=\'normal\'> - Nyní</span></h3><div class=\'komentar\'><img class=\'avatar\' src=\''+obr_ava+'\' alt=\'avatar-none.gif\' title=\'avatar-none\' border=\'0\' height=\'63\' width=\'53\' /><p class=\'text-komentare\'>'+form.text.value+'</p><p class=\'break\'></p></div>';
              form.text.value = form.text.defaultValue;
            }
            else if(form.text.value == ''){
              document.getElementById('stav_odesilani').innerHTML = '<b>Chyba: </b>Nezadal jste žádný text !';
            }
            else if(form.spcontrol.value != '2'){
              document.getElementById('stav_odesilani').innerHTML = '<b>Chyba: </b>Špatná odpověď na spamovací otázku !';
            }
            else {
              document.getElementById('stav_odesilani').innerHTML = '<b>Chyba: </b>Pro vytvoření komentáře je třeba zadat autora !';
            }
        }
    }, '/ztest.php', form);
}
