/** 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 anketa_hlasovat(answer, url) {
    // odeslání požadavku na aktualizaci dat
    if (!send_xmlhttprequest(anketa_obsluha, 'GET', url)) {
        return false;
    }

    sum_answers = document.getElementById('votes').innerHTML;
    answers = (document.getElementById('percent' + answer).innerHTML * sum_answers / 100) + 1;

    percent = Math.round(((answers * 100) / sum_answers),0);

    // znemožnění opětovného hlasování smazáním odkazů
    /*
     *
    for (var key in document.getElementById('anketa').getElementsByTagName('td')) {
        var val = document.getElementById('anketa').getElementsByTagName('td')[key];
        if (val.className == 'odpoved') {
            val.innerHTML = val.firstChild.innerHTML;
        }
    }
    */
    return true;
}

function anketa_obsluha(xmlhttp) {
    if (xmlhttp.readyState == 4) {

        tmp = document.getElementById('votes').innerHTML;

        // aktualizace odpovědí na základě aktuálního stavu
        var answers = xmlhttp.responseXML.getElementsByTagName('answer');
        var sum_answers = xmlhttp.responseXML.getElementsByTagName('sum');
        sum_answers = sum_answers[0].firstChild.data;

        for (var i=0; i < answers.length; i++) {
            var votes = Math.round(answers[i].firstChild.data * 100 / sum_answers);
            var width = votes + 5;
            document.getElementById('percent' + answers[i].getAttribute('id')).innerHTML = votes;
            document.getElementById('graph' + answers[i].getAttribute('id')).style.width = width + "px";
        }

        document.getElementById('votes').innerHTML = sum_answers;

        if (sum_answers == tmp) alert("Omlouváme se, ale již bylo hlasováno. Hlas nemůže být započítán...");
    }
}
