/* JSHint nastaveni: */
/*global uroven_firmy: false, ajax_running: false, tooltipy: false, zakazky: false, resime: false */
/*global inicializujSeznam: false, muze_termin: false, initFormular: false, editace: false, fiskalni_rok: false */
/*global ma_tkf: false, start: false */

var i = 0; //prilezitostne pouzivane pocitadlo

var ka = ka || {//jmenny prostor
    /**
     * Funkce upravi datovy retezec ve formatu YYYYMMDD na ceske DD.MM.YYYY
     *
     * @param datum string  - datumovy retezec ve formatu YYYYMMDD
     */
    kratkeDatumCesky: function(datum) {
        return datum.substr(6, 2) + '.' + datum.substr(4, 2) + '.' + datum.substr(0, 4);
    },

    /**
     * Funkce nastavi zaskrtnuti checkboxu dane tridy podle mastercheckboxu
     * Trida ovlivnenych checkboxu se zjisti z atributu delclass prvku, na kterem byla vyvolana udalost
     *
     * @param e event
     */
    hromadnyCheck: function(e) {
        console.debug('Hromadny check ', dojo.attr(e.target, 'delclass'));//#DBG;
        stav = dojo.attr(e.target, 'checked');
        dojo.query('.' + dojo.attr(e.target, 'delclass')).forEach("item.checked = " + stav);
    }

};//jmenny prostor ka


function CeskeCislo(cestina) {
    //alert(cestina + '---');
    return cestina.toLowerCase().replace(/ /g, '').replace(/\+/g, '1').replace(/ě/g, '2').replace(/š/g, '3').replace(/č/g, '4').replace(/ř/g, '5').replace(/ž/g, '6').replace(/ý/g, '7').replace(/á/g, '8').replace(/í/g, '9').replace(/é/g, '0').replace(/,/g, '.');
}

function CeskeCisloEvent(event) {
    var cestina = event.target.value;
    //alert(cestina + '---');
    event.target.value = cestina.toLowerCase().replace(/ /g, '').replace(/\+/g, '1').replace(/ě/g, '2').replace(/š/g, '3').replace(/č/g, '4').replace(/ř/g, '5').replace(/ž/g, '6').replace(/ý/g, '7').replace(/á/g, '8').replace(/í/g, '9').replace(/é/g, '0').replace(/,/g, '.');
}

function CeskeCisloDijit() {
    var cestina = dijit.byId(this.id).attr('value');
    //alert(cestina + '---');
    dijit.byId(this.id).attr('value', cestina.toLowerCase().replace(/ /g, '').replace(/\+/g, '1').replace(/ě/g, '2').replace(/š/g, '3').replace(/č/g, '4').replace(/ř/g, '5').replace(/ž/g, '6').replace(/ý/g, '7').replace(/á/g, '8').replace(/í/g, '9').replace(/é/g, '0')).replace(/,/g, '.');
}

function upravDatum(datum, cas) {
    //prevod mesicu
    //$mesice = array('Jan' => '01', 'Feb' => '02', 'Mar' => '03', 'Apr' => '04', 'May' => '05', 'Jun' => '06', 'Jul' => '07', 'Aug' => '08', 'Sep' => '09', 'Oct' => '10', 'Nov' => '11', 'Dec' => '12');
    var ret = '', rozpad = datum.replace('  ', ' ').split(' ');
    if (rozpad.length < 3) {//divnej format
        return datum;
    } else {
        ret = rozpad[1] + '.' + rozpad[0] + '.' + rozpad[2];
        if (rozpad[1].length == 1) {
            ret = '0' + ret;
        }
        return ret.replace('AM', '').replace('PM', '').replace('Jan', '01').replace('Feb', '02').replace('Mar', '03').replace('Apr', '04').replace('May', '05').replace('Jun', '06').replace('Jul', '07').replace('Aug', '08').replace('Sep', '09').replace('Oct', '10').replace('Nov', '11').replace('Dec', '12');
    }
}

function zaokrouhli(co, jak) {
    var cislo = Number(co), presnost = Number(jak), i = 0;
    for (i = 0; i < presnost; i++) {
        cislo = cislo * 10;
    }
    cislo = Math.round(cislo);
    for (i = 0; i < presnost; i++) {
        cislo = cislo / 10;
    }
    return cislo;
}

function MinutyNaCas(min) {
    //prebere cislo vyjadrujici pocet minut a crati retezec s casem ve formatu hh:mm
    //alert(min);
    var hodiny = Math.floor(Number(min) / 60).toString(), minuty = (Number(min) % 60).toString();
    return '00'.concat(hodiny).substr(hodiny.length, 2) + ':' + ('00'.concat(minuty)).substr(minuty.length, 2);
}

function zobrazHelp(strana, prvek, uroven_firmy) {
    var ajax_running = dojo.byId('ajax-loader-obr'), help_dialog = dijit.byId('help-dialog'), help = dojo.byId('help-text'), ret = '';
    help.innerHTML = 'Načítám nápovědu...';
    ajax_running.style.display = 'inline';
    //samotny ajax
    dojo.xhrGet({
        url: "/admin/ajax/nacti/prikaz/ajax_help/parametry/" + strana + "---" + prvek + "---" + uroven_firmy,
        handleAs: "text",
        load: function (data, args) {
            ret = data.toString();
            //console.dir(ret);//#DBG;
            help.innerHTML = ret;
            ajax_running.style.display = 'none';
            help_dialog.show();
        //dijit.byId('odvadeni-podrobnosti').show();
        },
        // if any error occurs, it goes here:
        error: function (error, args) {
            console.warn("Chyba pri nacitani napovedy k prvku...", error);//#DBG;
            ajax_running.style.display = 'none';
        }
    });
}

function skryjHelp() {
    dojo.byId('help-dialog').style.display = 'none';
}

function toggleCCDialog(dialogId) {
    if (dojo.byId(dialogId)) {
        var inputElement = dojo.byId(dialogId);
        if (inputElement.style.display == 'none' || inputElement.style.display === '') {
            inputElement.style.display = 'block';
        }
        else {
            inputElement.style.display = 'none';
        }
    }
}

function InfoOsoba(kdo) {
    var ajax_running = dojo.byId('ajax-loader-obr'), dialog = dijit.byId('info-dialog'), text = dojo.byId('info-text'), ret = '';
    text.innerHTML = 'Loading...';
    ajax_running.style.display = 'inline';
    //samotny ajax
    dojo.xhrGet({
        url: "/admin/ajax/nacti/prikaz/ajax_osobainfo/parametry/" + kdo,
        handleAs: "text",
        load: function (data, args) {
            ret = data.toString();
            //console.dir(ret);//#DBG;
            text.innerHTML = ret;
            ajax_running.style.display = 'none';
            dialog.show();
        },
        error: function (error, args) {
            console.warn("Chyba pri nacitani informaci o osobe " + kdo + "...", error);//#DBG;
            ajax_running.style.display = 'none';
        }
    });
}

function ukazMail(id_mess) {
    var ajax_running = dojo.byId('ajax-loader-obr');
    var help_dialog = dijit.byId('help-dialog');
    var help = dojo.byId('help-text');
    help.innerHTML = 'Načítám obsah e-mailu...';
    ajax_running.style.display = 'inline';
    //samotny ajax
    dojo.xhrGet({
        url: "/admin/ajax/nacti/prikaz/ajax_ukaz_mail/parametry/" + id_mess,
        handleAs: "json",
        load: function (data, args) {
            var vysl = '';
            vysl  = '<b>Od: </b>' + data.od + '<br/>';
            vysl += '<b>Komu: </b>' + data.komu + '<br/>';
            vysl += '<b>Kopie: </b>' + data.kopie + '<br/>';
            vysl += '<b>Předmět: </b>' + data.predmet + '<br/>';
            vysl += '<hr/>';
            vysl += data.telo;
            help.innerHTML = vysl;
            ajax_running.style.display = 'none';
            help_dialog.title = 'Náhled e-mailu';
            help_dialog.attr('title', 'Náhled e-mailu');
            help_dialog.show();
        },
        // if any error occurs, it goes here:
        error: function (error, args) {
            console.warn("Chyba pri nacitani informaci o mailu ID " + id_mess + "...", error);//#DBG;
            ajax_running.style.display = 'none';
        }
    });
}

function licence_onchange() {
    var licence = dojo.byId("licence");
    //nesystemove reseni UCL znacek
    if (dojo.byId('ucl-znacky-kontejner')) {
        if (licence.value == '0100000000019001|CAC') {
            dojo.byId('ucl-znacky-kontejner').style.display = 'table-row';
        } else {
            dojo.byId('ucl-znacky-kontejner').style.display = 'none';
            try {
                dojo.byId('znacka').value = '';
            }
            catch (e) {
            }
        }
    }
    if (dojo.byId("projekt_zad") && uroven_firmy > 30) {
        var defa_etapa = dojo.byId('defa_etapa_zad');
        //samotny ajax
        dojo.xhrGet({
            url: "/admin/ajax/nacti/prikaz/ajax_defa_ukol_licence/parametry/" + licence.value,
            handleAs: "json",
            load: function (data, args) {
                //console.dir(data);//#DBG;
                defa_etapa.value = data.defa_etapa;
                dojo.byId('projekt_zad').value = data.defa_id_ukolu;
                projektZmena();
            },
            // if any error occurs, it goes here:
            error: function (error, args) {
                console.warn("Chyba pri nacitani defa projektu licence...", error);//#DBG;
                dojo.byId("projekt_zad").disabled = false;
                ajax_running.style.display = 'none';
            }
        });
    } else {
        return false;
    }
}

function zmenaPatche(e) {
    /*
        dojo.byId('chyba-<?=$i?>').style.display = '';
        Zpracovani udalosti, ktera ovlivnuje vysledny patch
	  Mozne zmeny:
            - obl_3: je potreba zmenit seznam patchu a seznam naslednych zmen
            - verze: je potreba zmenit seznam patchu a seznam naslednych zmen
            - patch:  je potreba zmenit seznam naslednych zmen
    */
    if (e.target.id == 'obl_3' || e.target.id == 'verze') {
        zobrazCombo('patch', '/admin/ajax/nacti/prikaz/ajax_data_patche/parametry/' + dojo.byId('obl_3').value + '---' + dojo.byId('verze').value, '', '', '', aktualizuj_zmeny);
    }
    if (e.target.id == 'patch') {
        try {
            aktualizuj_zmeny();
        }
        catch (err) {
        }
    }
}

function toggleDialog(event) {
    //parametr je event, a ten by mel mit v targetu node, ktery ma id b_[a id dialogu, ktery se ma "toglit"]
    var cil = event.target.id.substring(2);
    //alert(cil + '--' + cil.substring(cil.length - 6) + '--' + cil.substr(0, cil.length - 6));
    //v chrome se jeste odesle udalst z popisku, kterej konci _label :-(
    if (cil.substring(cil.length - 6) == '_label') {
        cil = cil.substr(0, cil.length - 6);
    }
    //alert(cil);
    dojo.query(".jsadddialog").forEach(
        function (inputElement) {
            if (inputElement.id == cil) {
                //alert('---'+inputElement.id+'---');
                if (inputElement.style.display == 'none' || inputElement.style.display === '') {
                    inputElement.style.display = 'block';
                } else {
                    inputElement.style.display = 'none';
                }
            } else {
                inputElement.style.display = 'none';
            }
        }
        );
}

function sestavOdvadeni() {
    return true;
}

function zobrazCombo(idPrvku, url, defa, skupina_prvek, proved, callback) {
    /*
	Funkce naplni combo hodnotami, ziskanymi xhttp dotazem
	Parametry:
		idPrvku: id prvku typu select, kteremu maji byt aktualizovany options
		url: url na kterou bude poslan dotaz, ktery vrati JSON obsahujici pole items s dvojicemi hodnota, label a defa
		defa: defaultni hodnota, ktera ma byt v combu po nacteni naplnena
*/
    var skupiny = false, skupina = '', skPrvek = {}, volba = {}, proved = '', uz_defa = false;
    if (!dojo.isFunction(callback)) {
        callback = function(){};
    }
    if (arguments.length > 3) {
        skupina = arguments[3];
        if (dojo.trim(skupina_prvek) !== '') {
            skupiny = true;
			console.debug('Combo se skupinami: ', arguments);//#DBG;
        }
    }
    if (arguments.length > 4) { // je uveden i kod pro vykonani po nacteni comba
        proved = arguments[4];
    }
    var prvek = dojo.byId(idPrvku);
    prvek.disabled = true;
    removeChildNodes(prvek);
    prvek.options.length = 0;
    prvek.options[0] = new Option('Načítám...', defa, false, false);
    ajaxstart(idPrvku);
    dojo.xhrGet({
        url: url,
        handleAs: "json",
        load: function (data, args) {
            console.debug('Data pro combo ' + idPrvku + ': ', data, ', pozadovany default: ', defa);//#DBG;
            //console.dir(data);//#DBG;
            prvek.options.length = 0;
            var pocet = data.items.length; //kvuli rychlosti
            if (!skupiny || skupina === '') { //to je jednodussi
                for (i = 0; i < pocet; i++) {
                    //console.debug(data.items[i].hodnota + ' -- ' + defa);//#DBG;
                    if (data.items[i].defa === '1' || data.items[i].hodnota === defa) {
                        prvek.options[i] = new Option(data.items[i].label.replace('***', ' '), data.items[i].hodnota, true, true);
                    } else {
                        prvek.options[i] = new Option(data.items[i].label.replace('***', ' '), data.items[i].hodnota, false, false);
                    }
                }
            } else { //musim to vytvorit se skupinama
                skupina = 'xxx';
                for (i = 0; i < pocet; i++) {
                    //console.debug(data.items[i].skupina);//#DBG;
                    if (skupina != data.items[i][skupina_prvek]) {
                        if (skupina != 'xxx') {
                            prvek.appendChild(skPrvek);
                        }
                        skupina = data.items[i][skupina_prvek];
                        skPrvek = document.createElement('optgroup');
                        skPrvek.label = skupina;
                    }
                    volba = document.createElement('option');
                    volba.value = data.items[i].hodnota;
                    volba.innerHTML = data.items[i].label.replace('***', ' ');
                    if ((data.items[i].defa === '1' || data.items[i].hodnota === defa) && !uz_defa) {
                        volba.selected = true;
                        uz_defa = true;
                    }
                    skPrvek.appendChild(volba);
                }
                if (i > 0) { //jeste musim pridat posledni skupinu///
                    prvek.appendChild(skPrvek);
                }
            }
            prvek.disabled = false;
            if (proved !== '') { // je uveden i kod pro vykonani po nacteni comba
                try {
                    eval(proved);
                } catch (e) {
                }
            }
            ajaxkonec(idPrvku);
        },
        error: function (error, args) {
            console.warn('Chyba pri nacitani comba ID ' + idPrvku + '...', error);//#DBG;
            prvek.disabled = false;
        }
    }).then(callback);

}

function sestavCombo(idPrvku, data, defa) {
    var skupiny = false, skupina = '', skPrvek = {}, volba = {}, proved = '', uz_defa = false;
    if (arguments.length > 3) {
        skupina = arguments[3];
        if (skupina !== '') {
            skupiny = true;
        }
    }
    if (arguments.length > 4) { // je uveden i kod pro vykonani po nacteni comba
        proved = arguments[4];
    }
    var prvek = dojo.byId(idPrvku);
    prvek.disabled = true;
    removeChildNodes(prvek);
    prvek.options.length = 0;
   // prvek.options[0] = new Option('Načítám...', '', false, false);
   // prvek.options.length = 0;
    var pocet = data.items.length; //kvuli rychlosti
    if (!skupiny || skupina === '') { //to je jednodussi
        for (i = 0; i < pocet; i++) {
            //console.debug(data.items[i].hodnota + ' -- ' + defa);//#DBG;
            if (data.items[i].defa === '1' || data.items[i].hodnota === defa) {
                prvek.options[i] = new Option(data.items[i].label, data.items[i].hodnota, true, true);
            } else {
                prvek.options[i] = new Option(data.items[i].label, data.items[i].hodnota, false, false);
            }
        }
    } else { //musim to vytvorit se skupinama
        skupina = 'xxx';
        for (i = 0; i < pocet; i++) {
            //console.debug(data.items[i].skupina);//#DBG;
            if (skupina != data.items[i].skupina) {
                if (skupina != 'xxx') {
                    prvek.appendChild(skPrvek);
                }
                skupina = data.items[i].skupina;
                skPrvek = document.createElement('optgroup');
                skPrvek.label = skupina;
            }
            volba = document.createElement('option');
            volba.value = data.items[i].hodnota;
            volba.innerHTML = data.items[i].label;
            if ((data.items[i].defa === '1' || data.items[i].hodnota === defa) && !uz_defa) {
                volba.selected = true;
                uz_defa = true;
            }
            skPrvek.appendChild(volba);
        }
        if (i > 0) { //jeste musim pridat posledni skupinu///
            prvek.appendChild(skPrvek);
        }
    }
    prvek.disabled = false;

}

function removeChildNodes(ctrl) {
    while (ctrl.childNodes[0])
    {
        ctrl.removeChild(ctrl.childNodes[0]);
    }
}

function ajaxstart(id) {
    var stav = dojo.byId('ajaxstav'), volno = dojo.byId('ajaxvolno'), index = 5000;
    if (stav && volno) {
        while (volno.value == '0' && index > 0) {
            index--;
        }
        if (volno.value == '1') {
            volno.value = '0';
            stav.value += '-' + id + '-';
            volno.value = '1';
        }
    }
}

function ajaxkonec(id) {
    var stav = dojo.byId('ajaxstav'), volno = dojo.byId('ajaxvolno'), index = 5000;
    if (stav && volno) {
        while (volno.value == '0' && index > 0) {
            index--;
        }
        if (volno.value == '1' || true) {
            volno.value = '0';
            var hledej = new RegExp('-' + id + '-');
            stav.value = stav.value.replace(hledej, '');
            volno.value = '1';
        }
    }
}

dojo.addOnLoad(function () {
    //vytvoreni dialogu pro help
    new dijit.Dialog({
        id: 'help-dialog',
        title: 'Kontextová nápověda',
        style: 'overflow:auto;height:90%;width:60%;'
    }, dojo.byId('help-dialog'));

    //vytvoreni dialogu pro informace
    new dijit.Dialog({
        id: 'info-dialog',
        title: 'Informace',
        style: 'overflow:auto;height:50%;width:50%;'
    }, dojo.byId('info-dialog'));

    //vytvoreni progressbaru s nacitanim ajaxu
    new dijit.ProgressBar({
        style: 'width: 300px',
        id: 'jsProgress',
        indeterminate: true
    }, dojo.byId('ajax-loader-obr-in'));


    //xxdojo.require('dijit.Tooltip', true);
    //poskladani tooltipu
    var pocet_tt = 0;
    if (tooltipy) {
        pocet_tt = tooltipy.length;
    }
    //var tt = new Array(pocet_tt);
    for (i = 0; i < pocet_tt; i++) {
        //tt[i] = new dijit.ToolTip({'connectId': tooltipy[i][0], 'label': tooltipy[i][0]});
        new dijit.Tooltip({
            connectId: [tooltipy[i][0]],
            label: tooltipy[i][1]
        });
    }
});

/* =====================================================================================================
   plugin_vlastnik.js
   ===================================================================================================== */
var vlastnici = {
    licenceZmena: function () {
        var vlastnik = dojo.byId('vlastnik'), licence = dojo.byId('licence'), uzivatel = dojo.byId('uziv_jmeno'), pozadavek = dojo.byId('id_poz');
        //alert('zmena oblasti 1 na: ' + oblast1.value);
        var ajax_running = dojo.byId('ajax-loader-obr');
        //console.debug("Licence zmenena na " + licence.value);//#DBG;
        vlastnik.disabled = true;
        ajax_running.style.display = 'inline';
        //samotny ajax
        var adresa = '';
        var param1 = '';
        //na novem se pozila uzivatel, na detailu pozadavek
        if (pozadavek) {
            param1 = pozadavek.value;
        } else {
            param1 = uzivatel.value;
        }
        if (dijit.byId('projekt_zad')) {
            adresa = '/admin/ajax/nacti/prikaz/ajax_vlastnici_pripadu/parametry/' + param1 + '---' + licence.value + '---' + vlastnik.value + '---' + dijit.byId('projekt_zad').attr('value');
        } else {
            adresa = '/admin/ajax/nacti/prikaz/ajax_vlastnici_pripadu/parametry/' + param1 + '---' + licence.value + '---' + vlastnik.value + '----1';
        }
        dojo.xhrGet({
            url: adresa,
            handleAs: "json",
            load: function (data, args) {
                //console.dir(data);//#DBG;
                vlastnik.options.length = 0;
                var pocet = data.combo.length; //kvuli rychlosti
                for (i = 0; i < pocet; i++) {
                    if (data.combo[i][2] == '1') {
                        vlastnik.options[i] = new Option(data.combo[i][1], data.combo[i][0], true, true);
                    } else {
                        vlastnik.options[i] = new Option(data.combo[i][1], data.combo[i][0], false, false);
                    }
                }
                vlastnik.disabled = false;
                ajax_running.style.display = 'none';
            },
            error: function (error, args) {
                console.warn("Chyba pri nacitani seznamu vlastniku...", error);//#DBG;
                ajax_running.style.display = 'none';
            }
        });
    }
};

/* =====================================================================================================
   plugin_prilohy.js
   ===================================================================================================== */
var prilohy = {
    pridej: function () {
        var pocet = dojo.byId('pocet-priloh');
        pocet.value = (1 + Number(pocet.value)).toString();
        dojo.query('#prilohy-kontajner').addContent('<br/><input type="file" name="priloha' + pocet.value + '" id="priloha' + pocet.value + '" style="width:30em;"/>');
    }
};

/* =====================================================================================================
   plugin_operace.js
   ===================================================================================================== */
function aktualizujOperace(event, o1, o2, o3, res, op) {
/*
 * predpoklada existenci prvku obl_1, obl_2, obl_3, resitel(nebo res_uziv) a operace_zad nebo predani odpovidajicich parametru
 */
    var obl_1, obl_2, obl_3, resitel, operace;
    if (arguments.length < 2) {
        if (dojo.byId('obl_1')) {
            obl_1 = dojo.byId('obl_1').value;
        } else {
            obl_1 = '';
        }
    } else {
        obl_1 = arguments[1];
    }
    if (arguments.length < 3) {
        if (dojo.byId('obl_2')) {
            obl_2 = dojo.byId('obl_2').value;
        } else {
            obl_2 = '';
        }
    } else {
        obl_2 = arguments[2];
    }
    if (arguments.length < 4) {
        if (dojo.byId('obl_3')) {
            obl_3 = dojo.byId('obl_3').value;
        } else {
            obl_3 = '';
        }
    } else {
        obl_3 = arguments[3];
    }
    if (arguments.length < 5) {
        if (dojo.byId('resitel')) {
            resitel = dojo.byId('resitel').value;
        } else if (dojo.byId('res_uziv')) {
            resitel = dojo.byId('res_uziv').value;
        } else {
            resitel = '';
        }
    } else {
        resitel = arguments[4];
    }
    if (arguments.length < 6) {
        if (dojo.byId('operace_zad')) {
            operace = dojo.byId('operace_zad').value;
        } else {
            operace = '';
        }
    } else {
        operace = arguments[5];
    }
    var parametr = obl_1 + '---' + obl_2 + '---' + obl_3 + '---' + resitel + '---' + operace;
    //alert(parametr);
    zobrazCombo('operace_zad', '/admin/ajax/nacti/prikaz/ajax_data_operace/parametry/' + parametr, '', 'skupina');
}

/* =====================================================================================================
   plugin_projekty.js
   ===================================================================================================== */
function projektZmena() {
    //if (dojo.byId('projekt_zad') && dojo.byId('etapa_zad')) {
    console.debug('Jsem v projekt zmena.');//#DBG;
    var projekt = dojo.byId('projekt_zad'), puv_projekt = dojo.byId('puv_projekt_zad'), puv_projekt_id = '', chyba = false;
	if (puv_projekt) {
		puv_projekt_id = puv_projekt.value;
	}
    console.debug('Projekt pripadu: ', projekt.value, ', puvodni projekt: ', puv_projekt_id);//#DBG;
    var defa_etapa_zad = '';
    if (dojo.byId('defa_etapa_zad') && dojo.byId('etapa_zad')) {
        defa_etapa_zad = dojo.byId('defa_etapa_zad').value;
        zobrazCombo('etapa_zad', '/admin/ajax/nacti/prikaz/ajax_data_etapy/parametry/' + projekt.value, defa_etapa_zad);
    }

	//overeni existence fakturacni prace a fakturacniho priznaku noveho projektu
	var vysl = {};
	if (projekt.value != puv_projekt_id) {
		vysl = dojo.xhrGet({
			url: '/admin/ajax/nacti/prikaz/ajax_zmena_projektu/parametry/' + projekt.value + '---' + dojo.byId('id_poz').value,
			handleAs: 'json',
			load: function(data) {
				console.debug('Fakturace noveho projektu: ', data.projekt.user_fakturovat, ', vykazane fakturacni hodiny pripadu: ', data.fakturovano);//#DBG;
				if (Number(data.projekt.user_fakturovat) == 5 && Number(data.fakturovano) > 0) {
					chyba = true;
					alert('Na tomto případu je vykázáno ' + data.fakturovano + ' fakturačních hodin, ale na projektu ' + data.projekt.user_kod + ' je zakázána fakturace. Zvolte jiný projekt nebo nejprve dořešte odvody.');
				}
				if (Number(data.projekt.user_fakturovat) == 0 && Number(data.fakturovano) > 0) {
					chyba = !confirm('Na tomto případu je vykázáno ' + data.fakturovano + ' fakturačních hodin a projekt ' + data.projekt.user_kod + ' je primárně nefakturační. Chcete skutečně ponechat tento projekt?');
				}
				if (chyba) {
					projekt.value = puv_projekt_id;
				} else {
					if (dojo.byId('puv_projekt_zad')) {
						dojo.byId('puv_projekt_zad').value = projekt.value;
					}
					if (Number(data.projekt.user_fakturovat) == 5 && dojo.byId('k_fakturaci') && dojo.byId('k_fakturaci').value != '0') {
						dojo.byId('k_fakturaci').value = 0;
						fakturacePripadu();
					}
					if (Number(data.projekt.user_fakturovat) == 0 && dojo.byId('k_fakturaci') && dojo.byId('k_fakturaci').value != '0') {
						if (confirm('Tento případ je nastaven jako fakturační, ale projekt ' + data.projekt.user_kod + ' je primárně nefakturační. Chcete změnit tento případ na nefakturační?')) {
							dojo.byId('k_fakturaci').value = 0;
							fakturacePripadu();
						}
					}
					//pokud uz je pozadavek nefakturacni a existuje odvadeci dialog, nastav ho taky jako nefakturacni
					if (dojo.byId('k_fakturaci') && dojo.byId('typ_vykonu') && Number(dojo.byId('k_fakturaci').value) == 0) {
						dojo.byId('typ_vykonu').value = 'n';
						dojo.byId('fakturovat_zad').value = '';
						dojo.byId('fakturovat').value = '0';
						dojo.byId('mpd_zad').value = '';
						dojo.byId('mpd').value = '0';
						dojo.byId('mpd_od_zad').value = '';
						dojo.byId('mpd_od').value = '0';
						dojo.byId('mpd_do_zad').value = '';
						dojo.byId('mpd_do').value = '0';
					}
				}
			},
			error: function(error) {}
		});
		vysl.then = projektPopisyDetailu(projekt);
	} else {
		projektPopisyDetailu(projekt);
	}

}

function projektPopisyDetailu(projekt) {
    if (dijit.byId('mainTabContainer')) {
		var a = '';
		//zjisteni, jestli ma novy projekt popis a upozorneni
		dojo.xhrGet({
			url: '/admin/ajax/nacti/prikaz/ajax_popisy_projektu/parametry/' + projekt.value,
			handleAs: 'json',
			load: function (data) {
				dojo.byId('ma_popis').value = data.ma_popis;
				dojo.byId('ma_upozorneni').value = data.ma_pozor;
				var kyblac = dijit.byId('mainTabContainer'), popis = dijit.byId('pjinfo'), bacha = dijit.byId('pjpozor'), lide_ucho = dijit.byId('lide'), zaznamy_ucho = dijit.byId('zaznamy'), smlouvy_ucho = dijit.byId('smlouvy'), help_ucho = dijit.byId('help');

				if (kyblac) {
					//alert('kyblac');
					try {
						kyblac.removeChild(popis);
					} catch (err1) {
						a = 'remove popis';
					}
					if (data.ma_popis == 1 && Number(projekt.value) > 1 && (zakazky || resime)) {
						kyblac.addChild(popis);
						popis.set('href', '/ka/pripad/detail/id/'  + dojo.byId('cislo_pripadu').value + '/cast/pjinfo/projekt/' + dojo.byId('projekt_zad').value);
					}
					try {
						kyblac.removeChild(bacha);
					} catch (err2) {
						a = 'remove bacha';
					}
					if (data.ma_pozor == 1 && Number(projekt.value) > 1 && (zakazky || resime)) {
						kyblac.addChild(bacha);
						bacha.set('href', '/ka/pripad/detail/id/'  + dojo.byId('cislo_pripadu').value + '/cast/pjpozor/projekt/' + dojo.byId('projekt_zad').value);
					}

					try {
						if (uroven_firmy > 30) {
							kyblac.addChild(smlouvy_ucho);
							smlouvy_ucho.set('href', '/zdroje/projekty/detail/id/'  + dojo.byId('projekt_zad').value + '/cast/smlouvy');
						}
					} catch (e) {
						a = 'add smlouvy';
					}

					try {
						kyblac.removeChild(lide_ucho);
					} catch (err3) {
						a = 'remove lide';
					}
					//if (Number(projekt.value) > 1) {
					kyblac.addChild(lide_ucho);
					lide_ucho.set('href', '/zdroje/projekty/detail/id/'  + dojo.byId('projekt_zad').value + '/cast/lide');


					//}
					try {
						kyblac.removeChild(zaznamy_ucho);
					} catch (err4) {
						a = 'remove zaznamy';
					}
					if (Number(projekt.value) > 1 && zakazky) {
						//      kyblac.addChild(tkf_ucho);


						kyblac.addChild(zaznamy_ucho);
						dojo.connect(zaznamy_ucho, 'onLoad', inicializujZaznamy);
						zaznamy_ucho.set('href', '/zdroje/projekty/detail/id/'  + dojo.byId('projekt_zad').value + '/cast/zaznamy');
					}
					//a nakonec zkusim odabrat napovedu a vratit ji nakonec
					try {
						kyblac.removeChild(help_ucho);
						kyblac.addChild(help_ucho);
					} catch (err5) {
						a = 'presun napovedy';
					}
				}
			},
			// if any error occurs, it goes here:
			error: function (error) {
				console.warn("Chyba pri zjisteni existence popisu k projektu..." + a, error);//#DBG;
			}
		});
	}
}

function initLide() {
    var projekt = dojo.byId('puv_projekt_zad');

    if (dojo.byId('puv_projekt_zad')) {
        dojo.xhrGet({
            url: '/admin/ajax/nacti/prikaz/ajax_popisy_projektu/parametry/' + projekt.value,
            handleAs: 'json',
            load: function (data) {
                var kyblac = dijit.byId('mainTabContainer'), lide_ucho = dijit.byId('lide'), a = '';
                if (kyblac) {
                    try {
                        kyblac.removeChild(lide_ucho);
                    } catch (e) {
                        a = '';
                    }
                    kyblac.addChild(lide_ucho);
                    lide_ucho.set('href', '/zdroje/projekty/detail/id/'  + dojo.byId('puv_projekt_zad').value + '/cast/lide');
                }
            },
            // if any error occurs, it goes here:
            error: function (error) {
                console.warn("Chyba pri zjisteni existence popisu k projektu (ucho lide)...", error);//#DBG;
            }
        });
    }
}

/* =====================================================================================================
   plugin_oblasti.js
   ===================================================================================================== */
function zmenaOblasti(e) {


    var menit2 = false, menit3 = false;
    if (e.target.id == 'obl_1') {
        menit3 = false;
        menit2 = true;
        dojo.query(".oblast-spec").style("display", "none");
        dojo.query(".oblast-spec." + e.target.value).style("display", "block");
        //pokud se zmenila oblast 1 na plan vyvoje, zkusim naplnit prazdnymi hodnotami vsechny potrebne udaje v planu vyvoje
        if (e.target.value != 'PV') {
            try {
                dojo.byId('pv_stav').value = '0';
            } catch (err) {
            }
            //zobrazeni druhu prace v rozpisu kapacit
            dojo.query(".kap-druh-prace").style("display", "none");
        } else {
            dojo.query(".kap-druh-prace").style("display", "");
        }
    }
    if (e.target.id == 'obl_2') {
        menit3 = true;
    }
    if (menit2) {
        zmenaOblasti1();
    }
    if (menit3) {
        zmenaOblasti2();
    }
    return false;
}

function zmenaOblasti1() {
    zobrazCombo('obl_2', '/admin/ajax/nacti/prikaz/ajax_data_oblast2/parametry/' + dojo.byId('obl_1').value, dojo.byId('obl_2').value, '', '', zmenaOblasti2);
}

function zmenaOblasti2() {
    //if (dojo.byId('obl_2').value != '') {//protoze kdyz je prazdna, tak se vymazala uz pri zmene oblasti 1
    zobrazCombo('obl_3', '/admin/ajax/nacti/prikaz/ajax_data_oblast3/parametry/' + dojo.byId('obl_1').value + '---' + dojo.byId('obl_2').value, dojo.byId('obl_3').value, '', '', zmenaOblasti3);


//}
}

function zmenaOblasti3() {

    dojo.xhrGet({
        url: '/admin/ajax/nacti/prikaz/ajax_data_oblast3_defa/parametry/' + dojo.byId('obl_1').value + '---' + dojo.byId('obl_2').value + '---'  + dojo.byId('obl_3').value,
        handleAs: "json",

        load: function (data, args) {

            if (data.defa_ukol > 1 && dojo.byId('projekt_zad')) {
                if (dojo.byId('projekt_zad').value == 1) {
                    if (dojo.byId('projekt_zad').options) {
                        for (i = 0; i < dojo.byId('projekt_zad').options.length; i++) {
                            dojo.byId('projekt_zad').options[i].selected = dojo.byId('projekt_zad').options[i].value == data.defa_ukol;
                        }
                        zobrazCombo('etapa_zad', '/admin/ajax/nacti/prikaz/ajax_data_etapy/parametry/' + data.defa_ukol, dojo.byId('defa_etapa_zad').value);
                    }
                }

            }

            if (data.defa_res_uziv && dojo.byId('resitel')) {
                if (dojo.byId('resitel').value === '' && data.defa_res_uziv !== '') {
                    if (dojo.byId('resitel').options) {
                        for (i = 0; i < dojo.byId('resitel').options.length; i++) {
                            dojo.byId('resitel').options[i].selected = dojo.byId('resitel').options[i].value == data.defa_res_uziv;
                        }


                        zobrazCombo('operace_zad', '/admin/ajax/nacti/prikaz/ajax_data_operace/parametry/' + dojo.byId('obl_1').value + '---' + dojo.byId('obl_2').value + '---' + dojo.byId('obl_3').value + '---' + data.defa_res_uziv + '---' + dojo.byId('defa_operace').value, '', 'skupina');
                    }

                }
            } else if (data.defa_res_uziv && dojo.byId('res_uziv')) {
                if (dojo.byId('res_uziv').value === '' && data.defa_res_uziv !== '') {
                    if (dojo.byId('res_uziv')) {
                        for (i = 0; i < dojo.byId('res_uziv').options.length; i++) {
                            dojo.byId('res_uziv').options[i].selected = dojo.byId('res_uziv').options[i].value == data.defa_res_uziv;
                        }

                        zobrazCombo('operace_zad', '/admin/ajax/nacti/prikaz/ajax_data_operace/parametry/' + dojo.byId('obl_1').value + '---' + dojo.byId('obl_2').value + '---' + dojo.byId('obl_3').value + '---' + data.defa_res_uziv + '---' + dojo.byId('defa_operace').value, '', 'skupina');


                    }

                }

            }


        },
        error: function (error, args) {
            console.warn('Chyba pri defa oblasti 3 ', error);//#DBG;

        }
    });


}

/*
 * V combu id_verze nastavi dohledanou verzi licence z prvku id_licence
 * Format hodnoty prvku licence musi byt id_firmy|zkr_nazev_lic
 */
function nastavVerziKarat(id_verze, id_licence) {
    dojo.xhrGet({
        url: '/admin/ajax/nacti/prikaz/ajax_data_defa_verze/parametry/' + dojo.byId(id_licence).value,
        handleAs: "json",
        load: function (data, args) {
            dojo.byId(id_verze).value = data.verze;
        },
        error: function (error, args) {
            console.warn('Chyba nastaveni defa verze ', error);//#DBG;

        }
    });
}

/* =====================================================================================================
   detail.js
   ===================================================================================================== */
var connections = [];

function novy_vlastnik_onchange() {
    zobrazCombo('res_uziv', '/admin/ajax/nacti/prikaz/ajax_data_resitele/parametry/' + dojo.byId('res_firma').value + '---' + dojo.byId('puv_resitel').value + '---' + dojo.byId('puv_resitel').value, '');
}

function formular_onsubmit(udalost) {
    dojo.stopEvent(udalost);
    return false;
}

function beruto_onclick() {
    var tento = dojo.byId("beruto"), firma = dojo.byId("res_firma"), resitel = dojo.byId("res_uziv"), puv_resitel = dojo.byId('puv_resitel').value, akt_uziv = dojo.byId('uziv_jmeno');
    //console.debug(tento.checked);//#DBG;
    firma.disabled = tento.checked;
    resitel.disabled = tento.checked;
	//uprava kapacitniho rozpisu
	if (tento.checked) {
		upravKapacitniRozpis({'puvodni': dojo.byId('puv_resitel').value, 'novy': akt_uziv.value, 'kapacita': -1, 'musi_byt': [{'uzivatel': akt_uziv.value, 'kapacita': -1}]});
	} else {
		upravKapacitniRozpis({'puvodni': akt_uziv.value, 'novy': resitel.value, 'kapacita': -1, 'musi_byt': [{'uzivatel': resitel.value, 'kapacita': -1}]});
	}
}

function aktualizuj_odvadeni() {
    var ajax_running = dojo.byId('ajax-loader-obr');
    var cil = dojo.byId('prehled-odvadeni');
    var id_poz_zdr = dojo.byId('id_poz_zdr');
    //console.debug("Odeslani pozadavku na aktualizaci odvadeni...");//#DBG;
    var i = 0;
    //nacitam.play();
    ajax_running.style.display = 'inline';
    //samotny ajax
    dojo.xhrGet({
        url: '/admin/ajax/nacti/prikaz/ajax_odvedene_hodiny/parametry/' + id_poz_zdr.value + '---' + dojo.byId('cislo_pripadu').value,
        handleAs: 'json',
        load: function (data) {
            var radky = '', vystup = '', odprac = 0, fak = 0, nar = 0, ver = 0;
            //nejprve prace odvedena primo na pripad
            for (i = 0; i < data.radek.length; i++) {
                //console.debug('radek: ' + i);//#DBG;
                radky += '<tr>';
                radky += '<td>' + upravDatum(data.radek[i][3], false) + '</td>';
                radky += '<td>' + data.radek[i][4] + '</td>';
                if (uroven_firmy > 10 && resime) {
                    radky += '<td>' + data.radek[i][9] + '</td>';
                    radky += '<td class="vpr">' + data.radek[i][0].toFixed(2) + '</td>';
                    odprac += Number(data.radek[i][0]);
                }
                radky += '<td class="vpr">' + data.radek[i][1].toFixed(2) + '</td>';
                fak += Number(data.radek[i][1]);
                if (uroven_firmy > 10 && resime) {
                    if (data.radek[i][11] == '1' || data.radek[i][15] != '0') {
                        radky += '<td class="vpr">' + '<img src="/obrazky/fakturovano.png" width="16" lenght="16" title="Fakturovano..."/>' + '</td>';
                    } else {
                        radky += '<td class="vpr">&nbsp;</td>';
                    }
                }
                if (uroven_firmy > 10 && resime) {
                    radky += '<td class="vpr">' + data.radek[i][2].toFixed(2) + '</td>';
                    nar += Number(data.radek[i][2]);
                    radky += '<td class="vpr">' + data.radek[i][8].toFixed(2) + '</td>';
                    ver += Number(data.radek[i][8]);
                }
                radky += '<td>' + data.radek[i][5] + '</td>';
                radky += '<td>' + data.radek[i][10] + '</td>';
                radky += '<td>' + data.radek[i][6] + '-' + data.radek[i][7];
                if (uroven_firmy > 10 && resime) {
                    radky += '</td><td>';
                    if (data.radek[i][12] == 1) {
                        radky += ' <small>Termín: <b>' + data.radek[i][13] + '</b><br />Konzultant: <b>' + data.radek[i][14] + '</b></small> ';
                    } else {
                        radky += 'ne';
                    }
                }

                radky += '</td>';
                radky += '</tr>';
            }
            odprac = Math.round((odprac * 100)) / 100;
            fak = Math.round((fak * 100)) / 100;
            nar = Math.round((nar * 100)) / 100;
            ver = Math.round((ver * 100)) / 100;
            //samotna tabulka je vzdycky
            vystup += '<table class="datatable" border="0" width="95%"><tbody>';
            vystup += '<tr>';
            vystup += '<th>Datum</th>';
            vystup += '<th>Zdroj</th>';
            if (uroven_firmy > 10 && resime) {
                vystup += '<th>Operace</th>';
                vystup += '<th>Odpracováno: ' + odprac + '</th>';
            }
            if (uroven_firmy > 10 && resime) {
                vystup += '<th colspan="2">Fakturovat: ' + fak + '</th>';
            } else {
                vystup += '<th>Hodin: ' + fak + '</th>';
            }
            if (uroven_firmy > 10 && resime) {
                vystup += '<th>Nárokováno: ' + nar + '</th>';
                vystup += '<th>Verifikováno: ' + ver + '</th>';
            }
            vystup += '<th>Popis</th>';
            if (uroven_firmy > 10 && resime) {
                vystup += '<th>Projekt</th>';
            }
            vystup += '<th>Doklad</th>';
            if (uroven_firmy > 10 && resime) {
                vystup += '<th>Hodnocení</th>';

            }
            vystup += '</tr>';
            if (radky.length > 0) {
                if (uroven_firmy > 10 && resime) {
                    vystup += '<tr><td colspan="12">';
                } else {
                    vystup += '<tr><td colspan="5">';
                }
                vystup += '<span style="font-weight:bold;font-size:120%;">Práce odvedená na tento požadavek</span></td></tr>';
                vystup += radky + '';
            }
            //odkaz na verifikacni seznam
            vystup += '<b><a href="/prehledy/odvody/seznam/filtr-vykmoje/0/filtr-vykverifikuji/0/filtr-vykvlastnim/0/filtr-stav//filtr-fakturace//filtr-proces//filtr-operaceodv//filtr-zdroj//filtr-zakazky/1/filtr-typdata/ODV/filtr-datum-od/2009-01-01/filtr-datum-do/6666-06-06/filtr-razeni/DS/filtr-doklad//filtr-ka-id-poz/' + dojo.byId('cislo_pripadu').value + '/x/">Seznam odvodů</a></b><br/>';

            //a ted prace odvedena s vazbou na pripad
            radky = '';
            for (i = 0; i < data.odkaz.length; i++) {
                //console.debug('odkaz: ' + i);//#DBG;
                radky += '<tr>';
                radky += '<td>' + upravDatum(data.odkaz[i][3], false) + '</td>';
                radky += '<td>' + data.odkaz[i][4] + '</td>';
                if (uroven_firmy > 10 && resime) {
                    radky += '<td>' + data.odkaz[i][9] + '</td>';
                    radky += '<td class="vpr">' + data.odkaz[i][0] + '</td>';
                    odprac += Number(data.odkaz[i][0]);
                }
                radky += '<td class="vpr">' + data.odkaz[i][1] + '</td>';
                fak += Number(data.odkaz[i][1]);
                if (uroven_firmy > 10 && resime) {
                    if (data.odkaz[i][11] == '1') {
                        radky += '<td class="vpr">' + '<img src="/obrazky/fakturovano.png" width="16" lenght="16" title="Fakturovano..."/>' + '</td>';
                    } else {
                        radky += '<td class="vpr">&nbsp;</td>';
                    }
                }
                if (uroven_firmy > 10 && resime) {
                    radky += '<td class="vpr">' + data.odkaz[i][2] + '</td>';
                    nar += Number(data.odkaz[i][2]);
                    radky += '<td class="vpr">' + data.odkaz[i][8] + '</td>';
                    ver += Number(data.odkaz[i][8]);
                }
                radky += '<td>' + data.odkaz[i][5] + '</td>';
                radky += '<td>' + data.odkaz[i][10] + '</td>';
                radky += '<td>' + data.odkaz[i][6] + '-' + data.odkaz[i][7] + '</td>';
                radky += '</tr>';
            }
            odprac = Math.round((odprac * 100)) / 100;
            fak = Math.round((fak * 100)) / 100;
            nar = Math.round((nar * 100)) / 100;
            ver = Math.round((ver * 100)) / 100;
            if (radky.length > 0) {
                if (uroven_firmy > 10 && resime) {
                    vystup += '<tr><td colspan="11">';
                } else {
                    vystup += '<tr><td colspan="5">';
                }
                vystup += '<span style="font-weight:bold;font-size:120%;">Práce odvedená s odkazem na tento případ</span></td></tr>';
                vystup += radky + '</table>';
            }
            cil.innerHTML = vystup;
            try {
                dojo.byId('odv_fak').innerHTML = fak.toString();
                if (uroven_firmy > 10 && resime) {
                    dojo.byId('odv_ver').innerHTML = ver.toString();
                    dojo.byId('odv_odprac').innerHTML = odprac.toString();
                    dojo.byId('odv_nar').innerHTML = nar.toString();
                }
            }
            catch (e) {
                i = i;
            }
            ajax_running.style.display = 'none';
            //console.dir(data);//#DBG;
            dojo.byId('odvody_aktualni').value = 'ano'; //nakonec seznam oznacim za aktualni
            return false;
        },
        // if any error occurs, it goes here:
        error: function (data) {
            console.warn("Chyba pri odavdeni prace...", data);//#DBG;
            ajax_running.style.display = 'none';
            cil.innerHTML = 'Chyba při aktualizaci přehledu odváděné práce:' + data;
        }
    });
}

function zmenastavu() {
    //osetreni zmeny noveho stavu pripadu
    //pokud se stav meni na odlozit nebo ukonceno, musi se zpristupnit dane prvky - datum a zpusob ukonceni
    //jinak jsou disabled
    //alert(dojo.byId('aktstav4').checked);
    if (dojo.byId('aktstav4').checked) { //ukonceni pripadu
        dojo.byId('zp_uko').disabled = false;
    //alert('ukonceni');
    //toggleDialog('hodnoceni');
    } else {
        dojo.byId('zp_uko').disabled = true;
        dojo.byId('hodnoceni').style.display = 'none';
    }
    if (dojo.byId('aktstav6').checked) { //odlozeni reseni
        dijit.byId('odlozit_do').set('disabled', false);
        dijit.byId('termin_dod').set('disabled', true);
    } else {
        dijit.byId('odlozit_do').set('disabled', true);
        if (dijit.byId('termin_dod')) {
            dijit.byId('termin_dod').set('disabled', true);
        }
    }
    // osetreni chybneho zpristupneni termin_dod
    if (dojo.byId('aktstav6').checked || dojo.byId('aktstav4').checked || (dojo.byId('aktstav1').checked && dojo.byId('descr2_uzav'))) {
        // uzavrene, odlozene nebo ve stavu nemenit s tim ze je v db stav uzavren
        dijit.byId('termin_dod').set('disabled', true);
    } else {
        dijit.byId('termin_dod').set('disabled', false);
    }



    if (dojo.byId('descr2_uzav')) { // stav pripadu v db je uzavren
        var vkladani =  dojo.byId('aktstav2').checked;

        if (vkladani) {
            dojo.byId('descr2_uzav').style.display = 'none';
            dijit.byId('descr2').set('disabled', false);
        } else {
            dojo.byId('descr2_uzav').style.display = 'block';
            dojo.byId('descr2').value = '';
            dijit.byId('descr2').set('disabled', true);

        }


    }

}

function uloz_pripad(event) {


    var akce = event.target.id, nalezeno = false, pocet = 0, resitel = {};
    //nejprve nastavim do hidden promenne akci, ktera se ma provest
    dojo.byId('codelat').value = akce;


    if (!(akce == 'vlozaodved' || akce == 'vlozaodved_2' || akce == 'ulozit' || akce == 'ulozit_2' || akce == 'vypnout_zaj' || akce == 'zapnout_zaj' || akce == 'ulozit_vz' || akce == 'ulozit_vz2' || akce == 'uloz_generuj' || akce == 'generuj')) {
        return false;
    }


    //a ted overeni spravnosti vyplnenych dat
    var chyba = false, zprava = "Ve formuláři se vyskytují níže uvedené problémy. Nejprve je, prosím, odstraňte:\n", index = 1;
    //neukoncena AJAX komunikace
    if (dojo.byId('ajaxstav')) {
        if (dojo.byId('ajaxstav').value !== '') {
            chyba = true;
            zprava += index + ') Doposud nebyla načtena všechna data ze serveru. Zkuste formulář uložit znovu' + "\n";
            index++;
        }
    }
    if (dojo.byId('vazba_pripad')) {
        if (dojo.byId('vazba_pripad').value > '' && dojo.byId('typ_vazby').value < 3) {

            if (dojo.byId('vazba_pripad').value != parseInt(dojo.byId('vazba_pripad').value, 10)) {
                chyba = true;
                zprava += index + ') Neplatné ID vazebního případu' + "\n";
                index++;
            } else {
                if (dojo.byId('id_poz').value == dojo.byId('vazba_pripad').value) {
                    chyba = true;
                    zprava += index + ') Nelze provést vazbu na sebe sama.' + "\n";
                    index++;
                } else {
                    dojo.xhrGet({
                        url: '/admin/ajax/nacti/prikaz/ajax_check_ka_vazba/parametry/' + dojo.byId('id_poz').value + '---' + dojo.byId('vazba_pripad').value + '---' + dojo.byId('typ_vazby').value,
                        handleAs: "json",
                        sync: true,
                        load: function (data, args) {

                            if (data.stav == 1) {
                                chyba = true;
                                zprava += index + ') Případ ' + dojo.byId('vazba_pripad').value + " neexistuje.\n";
                                index++;
                            } else
                            if (data.stav == 2) {
                                chyba = true;
                                zprava += index + ') Případy ' + dojo.byId('id_poz').value + " a "  + dojo.byId('vazba_pripad').value + " již mají vazbu.\n";
                                index++;

                            }
                            if (data.stav == 3) {
                                chyba = true;
                                zprava += index + ') Případ ' + dojo.byId('id_poz').value + "  již má nadřízený případ.\n";
                                index++;
                            }



                        },
                        error: function (error, args) {
                            chyba = true;
                            zprava += index + ') Není možné ověřit vazební případ: ' + error + "\n";
                            index++;

                        }
                    });
                }
            }
        }
    }

    var opt =   dojo.byId('projekt_zad');

    //prazdny resitel
    if (dojo.byId('res_uziv') && dojo.byId('beruto')) {
        if (dojo.byId('res_uziv').value === '' && !dojo.byId('beruto').checked) {
            //pokud jiz byl resitel, neni ho mozne smazat
            if (dojo.byId('puv_resitel').value !== '') {
                chyba = true;
                zprava += index + ') Není možné vymazat řešitele.' + "\n";
                index++;
            }
            //pokud je pripad resen - ve stavu vetsim nez zadan, musi mit resitele
            //alert(Number(dojo.byId('stav_poz').value) + ' 2:' + dojo.byId('aktstav2').checked + ' 3:' + dojo.byId('aktstav3').checked + ' 6:' + dojo.byId('aktstav6').checked + ' 4:' + dojo.byId('aktstav4').checked);
            if (Number(dojo.byId('stav_poz').value) > 30 || dojo.byId('aktstav2').checked || dojo.byId('aktstav3').checked || dojo.byId('aktstav6').checked || dojo.byId('aktstav4').checked) {
                chyba = true;
                zprava += index + ') Řešený případ musí mít řešitele.' + "\n";
                index++;
            }
        }
    }
    //vymazani oblasti
    if (dojo.byId('puv_obl_3') && dojo.byId('obl_3')) {
        if (dojo.byId('puv_obl_3').value !== '' && dojo.byId('obl_3').value === '') {
            chyba = true;
            zprava += index + ') Není možné vymazat oblast případu.' + "\n";
            index++;
        }
    }
    //vymazani projektu
    if (dojo.byId('puv_projekt_zad') && dojo.byId('projekt_zad')) {
        if (dojo.byId('puv_projekt_zad').value > 1 && (dojo.byId('projekt_zad').value === '' || dojo.byId('projekt_zad').value <= 1)) {
            chyba = true;
            zprava += index + ') Není možné vymazat projekt.' + "\n";
            index++;
        }
    }
    //chybejici etapa
    if (dojo.byId('etapa_zad')) {
        if (Number(dojo.byId('projekt_zad').value) > 1 && (dojo.byId('etapa_zad').value == '0|||' || dojo.byId('etapa_zad').value === '' || dojo.byId('etapa_zad').value == '-')) {
            chyba = true;
            zprava += index + ') Není uvedena etapa.' + "\n";
            index++;
        }
    }

    if (dojo.byId('projekt_zad') && uroven_firmy > 30) {
        if (Number(dojo.byId('projekt_zad').value) == 1) {
            chyba = true;
            zprava += index + ') Není zadán projekt.' + "\n";
            index++;
        }
    }

    //vymazani operace
    if (dojo.byId('puv_operace_zad') && dojo.byId('operace_zad')) {
        if (dojo.byId('puv_operace_zad').value !== '' && dojo.byId('operace_zad').value === '') {
            chyba = true;
            zprava += index + ') Není možné vymazat operaci.' + "\n";
            index++;
        }
    }
	//fiktivni firma uvedena jako resici firma
	if (dojo.byId('res_firma')) {
		var xrf = dojo.byId('res_firma').value;
		if (xrf == 'KSWALL' || xrf == 'KSWKSO' || xrf == 'KSWKSS') {
            chyba = true;
            zprava += index + ') Není možné jako řešící firmu uvést fiktivní firmu ' + xrf + '.' + "\n";
            index++;
		}
	}
	
    //overeni, ze v rozpisu kapacit je uveden resitel
    if (uroven_firmy > 30 && dojo.byId('max-kapacit')) {
        console.debug('Overim existance resitele v kapacitach. Uroven firmy je: ', uroven_firmy);//#DBG;
        nalezeno = false;
		var nalezeny_index = -1;
		if (dojo.byId('beruto').checked) {
			console.debug('...hledam prihlaseneho uzivatele - prebira si pripad');//#DBG;
			nalezeny_index = najdiKapacitu(dojo.byId('uziv_jmeno').value);
		} else {
			console.debug('...hledam resitele');//#DBG;
			nalezeny_index = najdiKapacitu(dojo.byId('res_uziv').value);
		}
		if (Number(nalezeny_index) > -1) {
			nalezeno = true;
		}
        if (!nalezeno) {
            /** @todo - doresit ASAP !!! */
            //chyba = true;
            zprava += index + ') V rozpisu kapacit musí být uveden \u0159ešitel!' + "\n";
            index++;
        }

        //overeni, ze v rozpisu kapacit neni duplicita
        var j = 0;
        i = 0;
        nalezeno = false;
        while (i <= pocet && !nalezeno) {
            j = 0;
            while (j <= pocet && !nalezeno) {
                if (j != i && dojo.byId('uziv-kap-' + i).value !== '' && dojo.byId('uziv-kap-' + i).value == dojo.byId('uziv-kap-' + j).value) {
                    nalezeno = true;
                }
                j++;
            }
            i++;
        }
        if (nalezeno) {
            chyba = true;
            zprava += index + ') V rozpisu kapacit je duplicita!' + "\n";
            index++;
        }
    }
    //overeni korektniho stavu planu vyvoje
    if (dojo.byId('obl_1') && dojo.byId('pv_stav')) {
		var analytik = dojo.byId('pv_anal'), programator = dojo.byId('pv_prog'), resitel = dojo.byId('res_uziv');
        if (dojo.byId('obl_1').value == 'PV' && dojo.byId('pv_stav').value == '0') {
            chyba = true;
            zprava += index + ') Není uveden stav požadavku v plánu vývoje(přitom oblast 1 je PV)';
            index++;
        }

        if (dojo.byId('obl_1').value != 'PV' && dojo.byId('pv_stav').value != '0') {
            chyba = true;
            zprava += index + ') Požadavek, který nemá oblast plán vývoje má uveden stav v plánu vývoje';
            index++;
        }

        //overeni, ze v rozpisu kapacit je uveden analytik i programátor v rámci PV
        if (Number(dojo.byId('pv_stav').value) == 20 || Number(dojo.byId('pv_stav').value) == 30) {
			nalezeny_index = -1;
			console.debug('Hledam analytika v rozpisu kapacit');//#DBG;
			nalezeny_index = najdiKapacitu(analytik.value);
			if (dojo.trim(analytik.value) != '' & Number(nalezeny_index) == -1) {
				zprava += index + ') V rozpisu kapacit musí být uveden analytik definovaný v plánu vývoje!' + "\n";
				index++;
			}
			console.debug('Hledam programatora v rozpisu kapacit');//#DBG;
			nalezeny_index = najdiKapacitu(programator.value);
			if (dojo.trim(programator.value) != '' & Number(nalezeny_index) == -1) {
				zprava += index + ') V rozpisu kapacit musí být uveden programátor definovaný v plánu vývoje!' + "\n";
				index++;
			}
        }

        //pozadavek ktery jiz prosel do planu vyvoje a zustava v nem, musi mit P projekt
        if (Number(dojo.byId('pv_stav').value) > 10 && Number(dojo.byId('pv_stav').value) < 90 && opt.options[opt.selectedIndex].text.substring(0, 1) != 'P') {
            chyba = true;
            zprava += index + ') Požadavek z plánu vývoje musí mít \"P\" zakázku. Má ' + opt.options[opt.selectedIndex].text + "\n";
            index++;
        }
    }

    var test_descr2_pozn = dijit.byId('descr2_pozn').value;
    if (test_descr2_pozn.length > (32 * 1024 - 1)) { // omezeni delky vyjadreni kvuli karatu
        chyba = true;
        zprava += index + ') Příliš dlouhý text zadání. Limit je 32kB.' + "\n";
        index++;
    }

    var test_descr2 = dijit.byId('descr2').value;
    if (test_descr2.length > (32 * 1024 - 1)) { // omezeni delky vyjadreni kvuli karatu
        chyba = true;
        zprava += index + ') Příliš dlouhý text zadání. Limit je 32kB.' + "\n";
        index++;
    }

    var pocet_novych_priloh = 0;

    var s =  dojo.byId('priloha1').value;

    if (s !== '') { // nepotrebuji vedet presny pocet
        pocet_novych_priloh = 1;
    }

    if (pocet_novych_priloh > 0 && (test_descr2_pozn.length + test_descr2.length) === 0) {
        chyba = true;
        zprava += index + ') Není možné vložit přílohu bez vyjádření nebo poznámky.' + "\n";
        index++;
    }

    var uzavreno = dojo.byId('aktstav4') ? dojo.byId('aktstav4').checked : true; // na urovni bezneho uzivatele se bude tvarit jako uzavreny a nebudou se provadet kontroly terminu
    var odlozeno = dojo.byId('aktstav6') ? dojo.byId('aktstav6').checked : false;

    if (dojo.byId('odsouhlaseni_ano')) { // pokud mam odsouhlasovaci dialog, tak uz neotravovat terminem
        uzavreno = true;

    }



    if (!uzavreno && dojo.byId('stav_poz')) {
        if (dojo.byId('aktstav1')) {
            uzavreno = (dojo.byId('stav_poz').value == 99 || dojo.byId('stav_poz').value == 60) && dojo.byId('aktstav1').checked;
        }
    }

    var nespec_checked = false;
    if (dojo.byId('nespec')) {
        nespec_checked = dojo.byId('nespec').checked;
    }

    //pokud jde o pozadavek na plan vyvoje, tak take neotravovat s terminem
    //alert(dojo.byId('obl_1').value + ' ' + Number(dojo.byId('pv_stav').value));
    if (dojo.byId('pv_stav')) {
        if (dojo.byId('obl_1').value == 'PV' || Number(dojo.byId('pv_stav').value) > 0) {
            uzavreno = true;
        }
    }

    if (dojo.byId('termin_dod') && !uzavreno && !dojo.byId('termin_dod').disabled && !(akce == 'vypnout_zaj' || akce == 'zapnout_zaj' || akce ==    'generujk')) {
        var termin_dod =  (dojo.byId('termin_dod').value);

        var now = new Date();
        var d = vytvorDatum(termin_dod);
        var one_day = 1000 * 60 * 60 * 24;





        if (odlozeno) { // je zaply stav odlozeni

            if (dojo.byId('odlozit_do').value === '') {
                chyba = true;
                zprava += index + ') Není uveden termín odložení\n';
                index++;

            } else {
                var odlozeno_do = vytvorDatum(dojo.byId('odlozit_do').value);
                if (now > odlozeno_do) {
                    chyba = true;
                    zprava += index + ') Termín odložení je v minulosti';
                    index++;
                }
            }
        }
        else
        if (uroven_firmy > 30 && dojo.byId('termin_diff') !== null && !(uzavreno) && opt.options[opt.selectedIndex].text.substring(0, 1) != 'P' && !(nespec_checked && termin_dod === '')) {
            if (termin_dod === '') {

                if (dojo.byId('termin_diff').value >= 2) {
                    chyba = true;
                    zprava += index + ') Není uveden potvrzený termín řešení\n';
                    index++;
                }
            } else {


                if (d < now) {
                    chyba = true;
                    zprava += index + ') Potvrzený termín vypršel je nutné zadat nový termín\n';
                    index++;
                } else {
                    if ((d - now) / one_day > 90) {
                        chyba = true;
                        zprava += index + ') Potvrzený termín je zadán více než 90 dnů v budoucnosti\n';
                    }
                }
            }
        }
    }
    if (chyba) {
        alert(zprava);
        return false;
    }

	//a ted varovani
    var warn = false;
	zprava = "Ve formuláři byly nalezeny níže uvedené možné problémy. Chcete případ opravdu takto uložit?:\n", index = 1;
	if (uroven_firmy > 30 && (Number(dojo.byId('pv_stav').value) == 20 || Number(dojo.byId('pv_stav').value) == 30)) {
		//u planu vyvoje by resitelem mel byt bud analytik nebo programator
		if (resitel.value != analytik.value && resitel.value != programator.value) {
			console.debug('R:', resitel.value, ', A:', analytik.value, 'P:', programator.value);//#DBG;
			warn = true;
			zprava += index + ') U požadavku z plánu vývoje by řešitelem měl být analytik nebo programátor požadavku.' + "\n";
			index++;
		}
	}



    if (dojo.byId('velmi_nespokojen_t') && dojo.byId('velmi_nespokojen_k')) { /* mame uzaviraci dialog  */
        if (dojo.byId('odsouhlaseni_ano').checked && (dojo.byId('velmi_nespokojen_t').checked || dojo.byId('velmi_nespokojen_k').checked)) {
            var dlg = dijit.byId('nespokojenost-dialog');
            dlg.show();
            return false; // o zbytek se postara sam dialog
        }
    }

	if (warn) {
		if (confirm(zprava)) {
			console.debug('budu ukladat');//#DBG;
			return submit_vyjadreni_checked(akce);
			dojo.stopEvent(event);
			return false;
		} else {
			console.debug('nebudu ukladat');//#DBG;
			dojo.stopEvent(event);
			return false;
		}
	} else {
		console.debug('budu ukladat');//#DBG;
		return submit_vyjadreni_checked(akce);
		dojo.stopEvent(event);
		return false;
	}


}

function submit_vyjadreni_checked(akce) {
    var formular = dojo.byId('form_pripad');
    //a v pripade chyby uz tedy dal nejde
    if (akce == 'vlozaodved' || akce == 'vlozaodved_2') {
        ka.odvadeni.dialogOdvadeni();
        var descr2 = dijit.byId('descr2');
        var descr2_pozn = dijit.byId('descr2_pozn');
        var odv = dijit.byId('odv_pozn');
        if (descr2.get('value') !== '') {
            odv.set('value', descr2.get('value'));
        } else {
            if (descr2_pozn.get('value') !== '') {
                odv.set('value', descr2_pozn.get('value'));
            }
        }
        dojo.byId('prace_popis').value = 'Řešení případu ID ' + dojo.byId('id_poz').value;
        zobrazOdvadeni('insert');
    }
    if (akce == 'ulozit' || akce == 'ulozit_2' || akce == 'vypnout_zaj' || akce == 'zapnout_zaj' || akce == 'ulozit_vz' || akce == 'ulozit_vz2' || akce == 'uloz_generuj' || akce == 'generuj') {
        //alert('ulozeni');
        formular.submit();

    }
    return false;
}

function zobrazeniVyjadreni(event) {
    var co = event.target.id;
    if (co == 'vyjverejna') {
        if (dojo.byId('vyjverejna').checked === true) {
            dojo.query('[typradku=vyjadreni]').forEach(
                function (e) {
                    //zasrana konstrukce kvuli zmrdanemu IE - neumi zpet nastavit table-row
                    try {
                        e.style.display = 'table-row';
                    } catch (err1) {
                        e.style.display = 'block';
                    }
                }
                );
        } else {
            dojo.query('[typradku=vyjadreni]').forEach(
                function (e) {
                    //alert(e.id);
                    e.style.display = 'none';
                }
                );
        }
    }
    if (co == 'vyjpoznamky') {
        if (dojo.byId('vyjpoznamky').checked === true) {
            dojo.query('[typradku=poznamka]').forEach(
                function (e) {
                    //zasrana konstrukce kvuli zmrdanemu IE - neumi zpet nastavit table-row
                    try {
                        e.style.display = 'table-row';
                    } catch (err2) {
                        e.style.display = 'block';
                    }
                }
                );
        } else {
            dojo.query('[typradku=poznamka]').forEach(
                function (e) {
                    e.style.display = 'none';
                }
                );
        }
    }
    if (co == 'vyjzmeny') {
        if (dojo.byId('vyjzmeny').checked === true) {
            dojo.query('[typradku=zmena]').forEach(
                function (e) {
                    //zasrana konstrukce kvuli zmrdanemu IE - neumi zpet nastavit table-row
                    try {
                        e.style.display = 'table-row';
                    } catch (err3) {
                        e.style.display = 'block';
                    }
                }
                );
        } else {
            dojo.query('[typradku=zmena]').forEach(
                function (e) {
                    e.style.display = 'none';
                }
                );
        }
    }

    if (co == 'vyjresitele') {

        if (dojo.byId('vyjresitele').checked === true) {
            dojo.query('[typradku=zmena_res]').forEach(
                function (e) {
                    //zasrana konstrukce kvuli zmrdanemu IE - neumi zpet nastavit table-row
                    try {
                        e.style.display = 'table-row';
                    } catch (err3) {
                        e.style.display = 'block';
                    }
                }
                );
        } else {
            dojo.query('[typradku=zmena_res]').forEach(
                function (e) {
                    e.style.display = 'none';
                }
                );
        }
    }

}

function poOdvadeni() {
    var akce = dojo.byId('codelat').value;
    //alert('po odvadeni - akce: ' + akce);
    //vzdycky nastavim seznam odvedene prace jako neaktualni
    //dojo.byId('odvody_aktualni').value = 'ne';
    //vymazu odvadeci formular

    switch (akce) {
    case 'vlozaodved_2': //break tu neni schvalne
    case 'vlozaodved': //bylo stisknuto tlacitko uloz a odved, takze po samotnem odvadeni jeste musim ulozit pripad
        //oznacim odvadeni za neaktualni
        dojo.byId('form_pripad').submit();
        break;
    }
}

function odvodyShow() {
    //alert('odvody show');
    //if (dojo.byId('odvody_aktualni').value == 'ne') {//pokud neni seznam aktualni, tak jej obonovim. jinak nic
    aktualizuj_odvadeni();
//}
}

function zmenaZnacekDetail() {
    //nejdrive si sestavim retezec zaskrtnutych znacek
    var znacky = '';
    dojo.query(".znacka-check").forEach(
        function (inputElement) {
            if (inputElement.checked === true || inputElement.checked == 'checked') {
                znacky = znacky + inputElement.id.substring(3) + ',';
            //znacky = znacky + ' ahoj ';
            }
        }
        );
    //alert('--' + znacky + '--');
    //a ted tedy AJAXi nastaveni znacek
    //uzel.src = 'over_vykazy.asp?id_poz='+id_poz+'&seznam='+seznam_vykazu;
    //a ted samotne overeni vykazu
    dojo.byId('ajax-loader-obr').style.display = 'inline';
    dijit.byId('znacky-dialog').hide();
    //samotny ajax
    dojo.xhrGet({
        url: "/admin/ajax/nacti/prikaz/ajax_znacky/parametry/set---" + dojo.byId('id_poz').value + '---' + znacky + '---' + dojo.byId('uziv_jmeno').value,
        handleAs: "json",
        load: function (data, args) {
            //console.dir(data);//#DBG;
            //projit foreach vracena data a nastavit hodnotu znace dle id spanu...
            dojo.query(".sz").forEach(
                function (e) {
                    var i = 0, delka = data.znacky[0].zn.length, txt = '', trida = '';
                    //alert(delka);
                    for (i = 0; i < delka; i++) {
                        //alert(data.znacky[i].id);
                        switch (data.znacky[0].zn[i].typ) {
                        case 'v':
                            trida = 'verejne';
                            break;
                        case 'i':
                            trida = 'interni';
                            break;
                        case 'p':
                            trida = 'privatni';
                            break;
                        }
                        txt += ', <span class="znacka-' + trida + '">' + data.znacky[0].zn[i].znacka + '</span>';
                    }
                    e.innerHTML = txt.substring(2);
                }
                );
            dojo.byId('ajax-loader-obr').style.display = 'none';
        },
        // if any error occurs, it goes here:
        error: function (error, args) {
            alert('chyba: ' + error);
            console.warn("Chyba pri nastavovani znacek: " + error);//#DBG;
            //alert('chyba: ' + error);
            dojo.byId('ajax-loader-obr').style.display = 'none';
        }
    });

}

function aktualizuj_zmeny() {
    var ajax_running = dojo.byId('ajax-loader-obr');
    var cil = dojo.byId('prehled-zmen');
    if (!cil) {
        return false;
    }
    var modul = dojo.byId('obl_3'), verze = dojo.byId('verze'), patch = dojo.byId('patch');
    if (!modul || !verze || !patch) {
        alert('Nejsou nacteny prvky formulare');
        return false;
    }
    //console.debug("Odeslani pozadavku na aktualizaci zmen patche...");//#DBG;
    var i = 0;
    //nacitam.play();
    ajax_running.style.display = 'inline';
    //samotny ajax
    dojo.xhrGet({
        url: '/admin/ajax/nacti/prikaz/ajax_zmenykpripadu/parametry/' + modul.value + '---' + verze.value + '---' + patch.value,
        handleAs: 'json',
        load: function (data) {
            var radky = '', delka = data.length;
            //console.debug(data);//#DBG;
            for (i = 0; i < delka; i++) {
                radky += '<tr>';
                radky += '<td>' + data[i].patch + '</td>';
                switch (data[i].stav) {
                case '10':
                    radky += '<td><span title="Patch je ve vývoji" style="color:red;"><b>V</b></span></td>';
                    break;
                case '20':
                case '30':
                    radky += '<td><span title="Patch je testován" style="color:red;"><b>T</b></span></td>';
                    break;
                case '40':
                    radky += '<td><span title="Patch je uvolněn">U</span></td>';
                    break;
                }
                switch (data[i].typ) {
                case '10':
                    radky += '<td><span title="Nová funkčnost">N</span></td>';
                    break;
                case '20':
                    radky += '<td><span title="Změna stávající funkčnosti">Z</span></td>';
                    break;
                case '30':
                    radky += '<td><span title="Oprava chyby" style="color:red;"><b>Ch</b></span></td>';
                    break;
                }
                radky += '<td>' + data[i].popis + '</td>';
                radky += '</tr>';
            }
            var vystup = '';
            vystup += '<table class="datatable" border="0" width="95%">';
            vystup += '<tbody>';
            vystup += '<tr>';
            vystup += '<th>Patch</th>';
            vystup += '<th><span title="Stav patche">S</span></th>';
            vystup += '<th><span title="Typ změny">T</span></th>';
            vystup += '<th>Popis</th>';
            vystup += '</tr>';
            vystup += radky + '</table>';
            cil.innerHTML = vystup;
            ajax_running.style.display = 'none';
            dojo.byId('patche_aktualni').value = '1'; //nakonec seznam oznacim za aktualni
            return false;
        },
        // if any error occurs, it goes here:
        error: function (error) {
            console.warn("Chyba pri aktualizaci zmen k patchi...", error);//#DBG;
            ajax_running.style.display = 'none';
            cil.innerHTML = 'Chyba při aktualizaci přehledu změn:' + error;
            return false;
        }
    });
}

function inicializujMaily() {
}

function prepniVstupKapacit(e) {
    var i = e.target.id.substring(20);
    //console.debug(i);//#DBG;
    e.target.style.display = 'none';
    dojo.byId('vstup-kapacit-' + i).style.display = '';
}

function inicializujVyjadreni() {

    var x =  new dijit.form.Textarea({
        style: 'width:1000px;border:2px solid #ffccff;',
        name: 'descr2',
        id: 'descr2'
    }, dojo.byId('descr2'));


    if (dojo.byId('stav_poz').value == '99') {
        x.setAttribute('disabled', true);


    }

    new dijit.form.Textarea({
        style: 'width:1000px;border:2px solid #ccffff;',
        name: 'descr2_pozn',
        id: 'descr2_pozn'
    }, dojo.byId('descr2_pozn'));

    new dijit.form.Textarea({
        style: '',
        name: 'popis_nespokojenosti',
        id: 'popis_nespokojenosti'
    }, dojo.byId('popis_nespokojenosti'));

    if (uroven_firmy > 10 && resime) {
        var rozpad = dojo.byId('datum-odlozit').value.split('-');
        var datum = new Date(rozpad[0], rozpad[1] - 1, rozpad[2]);
        var odlozit = new dijit.form.DateTextBox({
            name: 'odlozit_do',
            id: 'odlozit_do',
            value: datum,
            selector: 'date',
            disabled: true,
            style: 'width:100px;'
        }, dojo.byId('odlozit_do'));
        odlozit.setDisplayedValue = dojo.byId('datum-odlozit').value;

        rozpad = dojo.byId('termin-dodavatel').value.split('-');
        datum = new Date(rozpad[0], rozpad[1] - 1, rozpad[2]);

        if (!dojo.byId('termin_dod').disabled) {
            var termin = {};
            termin = new dijit.form.DateTextBox({
                name: 'termin_dod',
                id: 'termin_dod',
                value: datum,
                selector: 'date',
                style: 'width:100px;'
            }, dojo.byId('termin_dod'));
            odlozit.setDisplayedValue = dojo.byId('termin-dodavatel').value;
        }
    }

    if (resime) {
        dojo.connect(dojo.byId('beruto'), 'onclick', 'beruto_onclick');
        dojo.connect(dojo.byId('res_firma'), 'onchange', 'novy_vlastnik_onchange');
        dojo.connect(dojo.byId('aktstav1'), 'onclick', 'zmenastavu');
        dojo.connect(dojo.byId('aktstav2'), 'onclick', 'zmenastavu');
        dojo.connect(dojo.byId('aktstav3'), 'onclick', 'zmenastavu');
        dojo.connect(dojo.byId('aktstav4'), 'onclick', 'zmenastavu');
        dojo.connect(dojo.byId('aktstav6'), 'onclick', 'zmenastavu');
        dojo.connect(dojo.byId('b-zmena-kategorii'), 'onclick', toggleDialog);
        dojo.connect(dojo.byId('c-zmena-kategorii'), 'onclick', toggleDialog);
        //tlacitka pro zobrazeni jednotlivych podcasti
        dojo.query(".b-show").forEach(
            function (e) {
                dojo.connect(e, 'onclick', prepniCastDetailu);
            }
        );
        //zobrazeni comb s resiteli na rozpisu kapacit
        var i = 0;
        while (dojo.byId('uziv-kap-' + i)) {
            //alert(dojo.byId('res_firma').value);
            aktualizujOdvodKapacity(dojo.byId('uziv-kap-' + i));
            dojo.connect(dojo.byId('rozpis-kapacit-' + i), 'onchange', zmenaKapacity);
            zobrazCombo('uziv-kap-' + i, '/admin/ajax/nacti/prikaz/ajax_data_resitele/parametry/' + dojo.byId('res_firma').value + '---' + dojo.byId('uziv-kap-' + i).value + '---' + dojo.byId('uziv-kap-' + i).value, '');
            dojo.connect(dojo.byId('uziv-kap-' + i), 'onchange', zmenaZdrojeKapacity);
            dojo.connect(dojo.byId('zbyva-real-' + i), 'onchange', zmenaRealnehoOdhadu);
            dojo.connect(dojo.byId('rozpis-kapacit-info-' + i), 'onclick', prepniVstupKapacit);
            i++;
        }
        try {
            if (dojo.byId('pridej-kapacitu')) {
                dojo.connect(dojo.byId('pridej-kapacitu'), 'onclick', doplnKapacitu);
            }
        } catch (err) {}
    }
    /*xxx*/


    if (dojo.byId('zmena-ostatni')) {
        dojo.connect(dojo.byId('b-zmena-ostatni'), 'onclick', toggleDialog);
        dojo.connect(dojo.byId('c-zmena-ostatni'), 'onclick', toggleDialog);
    }
    dojo.connect(dojo.byId('dalsi-priloha'), 'onclick', prilohy, "pridej");

    if (!dojo.byId('ulozit').disabled) {
        dojo.connect(dojo.byId('ulozit'), 'onclick', uloz_pripad);
    }

    dojo.query(".spokojenost_konzultant").forEach(
        function (el) {
            dojo.connect(el, 'onclick', spokojenost);
        }
        );
    dojo.query(".spokojenost_termin").forEach(
        function (el) {
            dojo.connect(el, 'onclick', spokojenost);
        }
        );

    if (dojo.byId('ulozit_2') && !dojo.byId('ulozit').disabled) {
        dojo.connect(dojo.byId('ulozit_2'), 'onclick', uloz_pripad);
    }
    if (dojo.byId('vlozaodved') && !dojo.byId('ulozit').disabled) {
        dojo.connect(dojo.byId('vlozaodved'), 'onclick', uloz_pripad);
    }
    if (dojo.byId('vlozaodved_2') && !dojo.byId('ulozit').disabled) {
        dojo.connect(dojo.byId('vlozaodved_2'), 'onclick', uloz_pripad);
    }
    if (!dojo.byId('ulozit').disabled) {
        dojo.connect(dojo.byId('ulozit_vz'), 'onclick', uloz_pripad);
        dojo.connect(dojo.byId('ulozit_vz2'), 'onclick', uloz_pripad);
    }

    try {
        if (dojo.byId('zapnout_zaj')) {
            dojo.connect(dojo.byId('zapnout_zaj'), 'onclick', uloz_pripad);
        }
        if (dojo.byId('vypnout_zaj')) {
            dojo.connect(dojo.byId('vypnout_zaj'), 'onclick', uloz_pripad);
        }
        dojo.connect(dojo.byId('generuj'), 'onclick', uloz_pripad);

        dojo.connect(dojo.byId('uloz_generuj'), 'onclick', uloz_pripad);



        dojo.connect(dojo.byId('vyjverejna'), 'onclick', zobrazeniVyjadreni);
        if (resime && dojo.byId('vyjpoznamky')) {
            dojo.connect(dojo.byId('vyjpoznamky'), 'onclick', zobrazeniVyjadreni);

        }
        dojo.connect(dojo.byId('vyjresitele'), 'onclick', zobrazeniVyjadreni);
        dojo.connect(dojo.byId('vyjzmeny'), 'onclick', zobrazeniVyjadreni);
        dojo.connect(dojo.byId('obl_1'), 'onchange', zmenaOblasti);
        dojo.connect(dojo.byId('obl_2'), 'onchange', zmenaOblasti);
        dojo.connect(dojo.byId('obl_3'), 'onchange', zmenaPatche);
        dojo.connect(dojo.byId('obl_3'), 'onchange', zmenaOblasti3);
        dojo.connect(dojo.byId('patch'), 'onchange', zmenaPatche);
        dojo.connect(dojo.byId('verze'), 'onchange', zmenaPatche);
        if (uroven_firmy > 30) {
            dojo.connect(dojo.byId('pv_anal_kalk'), 'onchange', CeskeCisloEvent);
            dojo.connect(dojo.byId('pv_prog_kalk'), 'onchange', CeskeCisloEvent);
            dojo.connect(dojo.byId('pv_anal_kalk'), 'onchange', zmenaKalkulacePv);
            dojo.connect(dojo.byId('pv_prog_kalk'), 'onchange', zmenaKalkulacePv);
        }
        if (uroven_firmy > 30) {
            dojo.connect(dojo.byId('kalkulace'), 'onchange', CeskeCisloEvent);
            dojo.connect(dojo.byId('kalkulace'), 'onchange', aktualizujSumyKapacit);
        }
        if (zakazky) {
            dojo.connect(dojo.byId('projekt_zad'), 'onchange', projektZmena);
        }
        if (uroven_firmy > 30) {
            dojo.connect(dojo.byId('res_uziv'), 'onchange', aktualizujOperace);
            dojo.connect(dojo.byId('res_uziv'), 'onchange', 'zmenaResitele');

            dojo.connect(dojo.byId('obl_3'), 'onchange', aktualizujOperace);
        }
        if (uroven_firmy > 30 && resime) {

            connections.push(
                dojo.connect(dojo.byId('k_fakturaci'), 'onclick', fakturacePripadu)
                );

            connections.push(
                dojo.connect(dojo.byId('k_fakturaci'), 'onchange', fakturacePripadu)
                );
            connections.push(
                dojo.connect(dojo.byId('typ_poz'), 'onclick', fakturacePripadu)
                );
            connections.push(
                dojo.connect(dojo.byId('typ_poz'), 'onchange', fakturacePripadu)
                );
            connections.push(
                dojo.connect(dojo.byId('kalkulace'), 'onchange', fakturacePripadu)
                );
            connections.push(
                dojo.connect(dojo.byId('kalkulace_mm'), 'onchange', fakturacePripadu)
                );
            fakturacePripadu();

            dojo.connect(dojo.byId('pv_anal'), 'onchange', zmenaVyvojare);
            dojo.connect(dojo.byId('pv_prog'), 'onchange', zmenaVyvojare);
		
			//ovladac automatickych textu
			if (dojo.byId('at-trigger')) {
				dojo.connect(dojo.byId('at-trigger'), 'onclick', automatickeTexty);
			} 
        }
    } catch (ex) {
        alert(ex);
    }
}

function automatickeTexty() {
	console.debug('Nactu automaticke texty.');//#DBG;
	var texty = '', kam = dojo.byId('at-dialog'), i = 0;
	//atDialog je globalni
		if (!dijit.byId('atDialog')) {
		//nactu seznam textu a sestavim 
		dojo.xhrGet({
			url: "/admin/ajax/nacti/prikaz/ajax_at_texty/parametry/",
			handleAs: "json",
			sync: true,
			load: function (data, args) {
				console.dir(data);//#DBG;
				var ul = dojo.create('ul', {id: 'at-texty-ul'}, kam);
				dojo.create('input', {type: 'radio', name: 'at-kam', id: 'at-kam-vyj', checked: 'checked'}, kam);
				dojo.create('span', {innerHTML: ' vložit do veřejného vyjádření&nbsp;&nbsp;&nbsp;'}, kam);
				dojo.create('input', {type: 'radio', name: 'at-kam', id: 'at-kam-pozn'}, kam);
				dojo.create('span', {innerHTML: ' vložit do poznámky'}, kam);
				dojo.create('br', {}, kam);
				while(data[i] && i < 1000) {
					dojo.create('li', {id: 'at-li-' + data[i].kod, 'class': 'tablike point', innerHTML: data[i].popis}, kam);
					i++;
				}
				dojo.byId('at-kam-vyj').checked = true;
				//vytvorim a naplnim ho
				atDialogObj = new dijit.Dialog({
					id: 'atDialog',
					title: 'Výběr automatického textu'
				},
				dojo.byId('at-dialog')
				);
				//pripojim udalsoti
				dojo.query('li')
					.onmouseover(function(e) {
						e.target.bckcol = e.target.style.backgroundColor;
						e.target.style.backgroundColor = 'silver';
						//console.debug(e.target.id);//#DBG;
					})
					.onmouseout(function(e) {
						e.target.style.backgroundColor = e.target.bckcol;
						//console.debug(e.target.id);//#DBG;
					})
					.onclick(function(e) {
						//e.target.style.backgroundColor = e.target.bckcol;
						//console.debug(e.target.id);//#DBG;
						if (dojo.byId('at-kam-vyj').checked) {
							dojo.byId('descr2').value = e.target.innerHTML;
						} else {
							dojo.byId('descr2_pozn').value = e.target.innerHTML;
						}
						atDialogObj.hide();
					});
				atDialogObj.show();
			},
			// if any error occurs, it goes here:
			error: function (error, args) {
				alert('chyba: ' + error);

			}
		});
	} else {
		//jenom ho zobrazim
		atDialogObj.show();
	}
}

function zmenaKalkulacePv(e) {
    //meni se kalkulace na specifikaci PV a tak zaktualizuji kalkulaci existujicich resitelu v kapacitnim rozpadu
    console.group('zmenaKalkulacePv - ' + e.target.id);//#DBG;
    var analytik = dojo.byId('pv_anal').value, programator = dojo.byId('pv_prog').value,
        kalk_anal = dojo.byId('pv_anal_kalk').value, kalk_prog = dojo.byId('pv_prog_kalk').value,
        pocet_kapacit = dojo.byId('max-kapacit').value, poradi_anal = -1, poradi_prog = -1, i = 0;
    if (analytik != programator) {//#DBG;
        console.debug(analytik, ': ', kalk_anal);//#DBG;
        console.debug(programator, ': ', kalk_prog);//#DBG;
    } else {//#DBG;
        console.debug(analytik, ': ', Number(kalk_anal) + Number(kalk_prog));//#DBG;
    }//#DBG;
    //tak a jdu hledat
    for (i = 0; i <= pocet_kapacit; i++) {
        if (dojo.byId('uziv-kap-' + i).value == analytik) {
            poradi_anal = i;
        }
        if (dojo.byId('uziv-kap-' + i).value == programator) {
            poradi_prog = i;
        }
    }
    console.debug('Poradi analytika: ', poradi_anal);//#DBG;
    console.debug('Poradi programatora: ', poradi_prog);//#DBG;
    //samotna zmena hodnot
    if (poradi_anal != -1) { //tj.nalezl se
        if (analytik != programator) {
            dojo.byId('rozpis-kapacit-' + poradi_anal).value = (Number(kalk_anal) * 8);
            dojo.byId('rozpis-kapacit-info-' + poradi_anal).innerHTML = (Number(kalk_anal) * 8);
        } else {
            dojo.byId('rozpis-kapacit-' + poradi_anal).value = ((Number(kalk_anal) + Number(kalk_prog)) * 8);
            dojo.byId('rozpis-kapacit-info-' + poradi_anal).innerHTML = ((Number(kalk_anal) + Number(kalk_prog)) * 8);
        }
        zmenaKapacityProved(poradi_anal);
    }
    if (analytik != programator && poradi_prog != -1) { //tj.nalezl se
        dojo.byId('rozpis-kapacit-' + poradi_prog).value = (Number(kalk_prog) * 8);
        dojo.byId('rozpis-kapacit-info-' + poradi_prog).innerHTML = (Number(kalk_prog) * 8);
        zmenaKapacityProved(poradi_prog);
    }
    console.groupEnd();//#DBG;
}

function prepniCastDetailu(e) {
    var prvek;
    var puvodni = dojo.byId(e.target.id.substring(2)).style.display;
    //nejprve vsechny skryju
    dojo.query(".b-show").forEach(
        function (el) {
            prvek = dojo.byId(el.id.substring(2));
            if (prvek) {
                prvek.style.display = 'none';
            }
        }
    );
    //a pak ten, na ktery jsem kliknul, zobrazim nebo sktyju
    prvek = dojo.byId(e.target.id.substring(2));
    if (prvek) {
        if (puvodni == 'block') {
            prvek.style.display = 'none';
        } else {
            prvek.style.display = 'block';
        }
    }
    dojo.stopEvent(e);
}

function pridejKapacitu(e) {
	dojo.deprecated('Nahradit volanim funkce doplnKapacitu', 'doplneno 9.11.2011', 'co nejdriv');
    dojo.stopEvent(e);
    //alert(dojo.byId('max-kapacit').value);
    var poradi = Number(dojo.byId('max-kapacit').value) + 1, obl_1 = '';
    var text = '', zbyva = Number(dojo.byId('kalkulace').value) - sumaKapacitnihoRozpadu();
    if (zbyva < 0) {
        zbyva = 0;
    }
    if (dojo.byId('obl_1')) {
        obl_1 = dojo.byId('obl_1').value;
    }
    //alert(poradi);
    text =  '<select name="uziv-kap-' + poradi + '" id="uziv-kap-' + poradi + '"><option value="">Načítám data...</option></select>';
    text += '<span class="kap-druh-prace"';
    if (obl_1 != 'PV') {
        text += ' style="display:none;"';
    }
    text += '><select name="druh-kap-' + poradi + '" id="druh-kap-' + poradi + '">';
    text += '<option value="NEUV">Nespecifikováno</option>';
    text += '<option value="ANAL">Analýza</option>';
    text += '<option value="PROG">Programování</option>';
    text += '</select></span>';
    text += ', plánovaná kapacita <input type="text" id="rozpis-kapacit-' + poradi + '" name="rozpis-kapacit-';
    text += poradi + '" size="3" style="text-align:right;" value ="' + zbyva + '"/> hod.';
    text += ', již odvedeno <span id="kap-odvedeno-' + poradi + '">0</span> hod, zbývá <b><span id="kap-zbyva-' + poradi + '">0</span></b> hod';
    text += '<input type="hidden" id="korekce-' + poradi + '" name="korekce-' + poradi + '" value ="0"/>';
    text += '<input type="hidden" id="zbyva-real-' + poradi + '" name="zbyva-real-' + poradi + '" value ="0"/>';
    text += '<span style="display:none;" id="korekce-puv-' + poradi + '">0</span><br/>';
    dojo.place(text, dojo.byId('kapacity-zadani'));
    dojo.byId('max-kapacit').value = poradi;
    zobrazCombo('uziv-kap-' + poradi, '/admin/ajax/nacti/prikaz/ajax_data_resitele/parametry/' + dojo.byId('res_firma').value + '------');
    dojo.connect(dojo.byId('uziv-kap-' + poradi), 'onchange', zmenaZdrojeKapacity);
    dojo.connect(dojo.byId('rozpis-kapacit-' + poradi), 'onchange', zmenaKapacity);
    aktualizujSumyKapacit();
}

/**
 * Funkce secte hodnoty zadane v kapacitnim rozpadu
 */
function sumaKapacitnihoRozpadu() {
    var i = 0, s = 0, pocet = Number(dojo.byId('max-kapacit').value);
    for (i = 0; i <= pocet; i++) {
        s += Number(dojo.byId('zbyva-real-' + i).value) + Number(dojo.byId('kap-odvedeno-' + i).innerHTML);
    }
    //alert('s: ' + s);
    return s;
}

function zmenaZdrojeKapacity(e) {
    //alert('Zmena na ' + e.target.value);
    var poradi = e.target.id.substring(9), i = 0, pocet = Number(dojo.byId('max-kapacit').value);
    var resitel = dojo.byId('res_uziv'), nalezen_resitel = 0;
    //kontrola duplicity
    for (i = 0; i <= pocet; i++) {
        if (i != poradi) { //sebe sama nekontroluji
            if (dojo.byId('uziv-kap-' + i).value !== '' && dojo.byId('uziv-kap-' + i).value == e.target.value) {
                alert('Duplicita! Kapacitní rozpis pro \u0159ešitele ' + e.target.value + ' ji\u017e existuje.');
                e.target.value = '';
                dojo.stopEvent(e);
                return;
            }
        }
    }
    //kontrola, zda je v kapacitach resitel
    i = 0;
    while (i <= pocet && nalezen_resitel === 0) {
        if (dojo.byId('uziv-kap-' + i).value == resitel.value) {
            nalezen_resitel = 1;
        }
        i++;
    }
    if (nalezen_resitel === 0) {
        alert('V rozpisu kapacit musí být uveden \u0159ešitel!');
        e.target.value = resitel.value;
        dojo.stopEvent(e);
        return;
    }
    dojo.stopEvent(e);
}

function dnyNaHodiny(prvek) {
    console.debug('dnyNaHodiny - prvek: ', prvek);//#DBG;
    if (prvek.value.substr(prvek.value.length - 1) == 'd' || prvek.value.substr(prvek.value.length - 1) == 'D') {
        prvek.value = Number(prvek.value.substr(0, prvek.value.length - 1)) * 8;
    }
}

function zmenaKapacity(e) {
    var poradi = e.target.id.substring(15), prvek = dojo.byId('rozpis-kapacit-' + poradi);
    //alert(e.target.id + '-' + poradi);
    CeskeCisloEvent(e);
    dnyNaHodiny(prvek);
	if (Number(e.target.value) < 0) {
		alert(e.target.value + '? Blbost!');
		e.target.value = '0';
	}
    zmenaKapacityProved(poradi);
    dojo.stopEvent(e);
}

function zmenaKapacityProved(poradi) {
	var zbyva = 0;
	zbyva = dojo.number.round((Number(dojo.byId('rozpis-kapacit-' + poradi).value) - Number(dojo.byId('kap-odvedeno-' + poradi).innerHTML)), 2);
	if (zbyva < 0) {
		zbyva = 0;
	}
    dojo.byId('kap-zbyva-' + poradi).innerHTML = zbyva;
    dojo.byId('zbyva-real-' + poradi).value = zbyva;
    dojo.byId('korekce-puv-' + poradi).innerHTML = '0';
    aktualizujSumyKapacit();
}

function zmenaRealnehoOdhadu(e) {
    CeskeCisloEvent(e);
    dnyNaHodiny(e.target);
	if (Number(e.target.value) < 0) {
		alert(e.target.value + '? Blbost!');
		e.target.value = '0';
	}
    aktualizujSumyKapacit();
    dojo.stopEvent(e);
}

/**
 * Funkce zaktualizuje celkovy rozpis kapacit, uvedeny kdekoliv ve spanu s tridou suma-kapacit a naplni sprovvnou hodnotou korekce odhadu
 */
function aktualizujSumyKapacit() {
    var s = Math.round(100 * sumaKapacitnihoRozpadu(), 2) / 100, k = dojo.byId('kalkulace').value, suma_rezervaci_info = dojo.byId('suma-rezervaci');
    if (Number(suma_rezervaci_info.innerHTML) != s || Number(suma_rezervaci_info.innerHTML) != k) {
        suma_rezervaci_info.style.fontWeight = 'bold';
        suma_rezervaci_info.title = 'Fakturační kalkulace tohoto případu je ' + k + ' čh, kapacitní rozpis ' + s + ' čh';
    } else {
        suma_rezervaci_info.style.fontWeight = 'normal';
        suma_rezervaci_info.title = '';
    }
    dojo.query('.suma-kapacit').forEach(
    function (e) {
        e.innerHTML = s;
        if (Number(s) != Number(k)) {
            e.title = 'Fakturační kalkulace tohoto případu je ' + k + ' čh';
            e.style.fontWeight = 'bold';
        } else {
            e.title = '';
            e.style.fontWeight = 'normal';
        }
    });
    //a ted naplnim korekce
    var i = 0, pocet = Number(dojo.byId('max-kapacit').value);
    s = 0;
    for (i = 0; i <= pocet; i++) {
        dojo.byId('korekce-' + i).value = Math.round(100 * (Number(dojo.byId('zbyva-real-' + i).value) - Number(dojo.byId('kap-zbyva-' + i).innerHTML)), 2) / 100;
    }
}

function aktualizujOdvodKapacity(el) {
    var res_uziv = el.value, poradi = el.id.substring(9), zbyva = 0;
    dojo.xhrGet({
        url: '/admin/ajax/nacti/prikaz/ajax_odvod_kapacit_zdroje/parametry/' + res_uziv + '---' + dojo.byId('cislo_pripadu').value,
        handleAs: 'json',
        load: function (data) {
            dojo.byId('kap-odvedeno-' + poradi).innerHTML = data.odvody;
			zbyva = dojo.number.round(Number(dojo.byId('rozpis-kapacit-' + poradi).value) + Number(dojo.byId('korekce-puv-' + poradi).innerHTML) - Number(dojo.byId('kap-odvedeno-' + poradi).innerHTML), 2);
			if (zbyva < 0) {
				zbyva = 0;
			}
            dojo.byId('kap-zbyva-' + poradi).innerHTML = zbyva;
            dojo.byId('zbyva-real-' + poradi).value = zbyva;
        },
        // if any error occurs, it goes here:
        error: function (error) {
            console.warn("Chyba pri zjisteni odvodu kapacity...", error);//#DBG;
        }
    });
}

function spokojenost(event) {

/*
    if (dojo.byId('velmi_nespokojen_k') && dojo.byId('velmi_nespokojen_t')) {
        if (dojo.byId('velmi_nespokojen_k').checked || dojo.byId('velmi_nespokojen_t').checked ) {
            dojo.byId('pricina_nespokojenosti').style.display='block';

        } else {
             dojo.byId('pricina_nespokojenosti').style.display='none';
        }


    }
*/

}

function fakturacePripadu(event) {
    //alert('ahoj');
    var fakturace = dojo.byId('k_fakturaci');
    var fakturace_puv = dojo.byId('k_fakturaci_puv');
    var helpdesk = dojo.byId('helpdesk');
    var typ_poz = dojo.byId('typ_poz');
    var kalkulace = dojo.byId('kalkulace');
    var kalkulace_mm = dojo.byId('kalkulace_mm');
    var stavajici = dojo.byId('jiz_odvedeno');
    //cervena fakturace
    if ((Number(helpdesk.value) == 1 && Number(typ_poz.value) > 10 && Number(fakturace.value) === 0) || (Number(helpdesk.value) === 0 &&  Number(fakturace.value) > 0) || (Number(helpdesk.value) == 1 && Number(typ_poz.value) == 10 && Number(fakturace.value) > 0)) {
        fakturace.style.color = 'red';
        fakturace.style.fontWeight = 'bold';
    } else {
        fakturace.style.color = 'black';
        fakturace.style.fontWeight = 'normal';
    }

    //uprava odvadeciho dialogu
    if (event && event.target.id == 'k_fakturaci') {
        //zmena priznaku fakturace v odvadecim dialogu, pokud existuje
        if (dojo.byId('typ_vykonu')) { //v odvadecim dialogu
            if (Number(dojo.byId('k_fakturaci').value) === 0) {
                dojo.byId('typ_vykonu').value = 'n';
            } else {
                dojo.byId('typ_vykonu').value = 'f';
            }
        }
    }

    //uprava kalkulaci
    if (event && (event.target.id == 'k_fakturaci' || event.target.id == 'kalkulace' || event.target.id == 'kalkulace_mm')) {
        //pristupnost kalkulaci
        if (Number(fakturace.value) === 0) {
            kalkulace.value = '0';
            kalkulace_mm.value = '0';
        }
        if (Number(fakturace.value) == 10) {
            kalkulace_mm.value = '0';
        }
        if (Number(fakturace.value) == 20) {
            kalkulace.value = '0';
        }
    }
    //barvy a pristupnost kalkulaci vzdy
    if (Number(fakturace.value) === 0) {
        kalkulace.disabled = true;
        kalkulace_mm.disabled = true;
        kalkulace.style.color = 'black';
        kalkulace.style.fontWeight = 'normal';
        kalkulace_mm.style.color = 'black';
        kalkulace_mm.style.fontWeight = 'normal';
        stavajici.style.color = 'red';
        stavajici.style.fontWeight = 'bold';
        if (dojo.byId("fak_poz_row")) {
            dojo.byId("fak_poz_row").style.display = 'none';
        }


    } else {
        if (dojo.byId("fak_poz_row")) {
            dojo.byId("fak_poz_row").style.display = 'block';
        }
    }
    if (Number(fakturace.value) == 10) {
        kalkulace.disabled = false;
        kalkulace_mm.disabled = true;
        kalkulace_mm.style.color = 'black';
        kalkulace_mm.style.fontWeight = 'normal';
        if (Number(kalkulace.value) === 0) {
            kalkulace.style.color = 'red';
            kalkulace.style.fontWeight = 'bold';
        } else {
            kalkulace.style.color = 'black';
            kalkulace.style.fontWeight = 'normal';
        }
        if (Number(kalkulace.value) < Number(dojo.byId('odvedeno_fak').value)) {
            stavajici.style.color = 'red';
            stavajici.style.fontWeight = 'bold';
        } else {
            stavajici.style.color = 'black';
            stavajici.style.fontWeight = 'normal';
        }
    }
    if (Number(fakturace.value) == 20) {
        kalkulace.disabled = true;
        kalkulace_mm.disabled = false;
        kalkulace.style.color = 'black';
        kalkulace.style.fontWeight = 'normal';
        if (Number(kalkulace_mm.value) === 0) {
            kalkulace_mm.style.color = 'red';
            kalkulace_mm.style.fontWeight = 'bold';
        } else {
            kalkulace_mm.style.color = 'black';
            kalkulace_mm.style.fontWeight = 'normal';
        }
        stavajici.style.color = 'black';
        stavajici.style.fontWeight = 'normal';
    }

    if (fakturace.value != fakturace_puv.value && fakturace.value == '0') {
        dojo.forEach(connections, dojo.disconnect);
        connections = [];

        dojo.xhrGet({
            url: '/admin/ajax/nacti/prikaz/ajax_odvedene_fakturacni/parametry/' + dojo.byId('cislo_pripadu').value,
            handleAs: 'json',
            load: function (data) {
                if (data.fakturovano > 0) {
                    alert('Na případ jsou odvedeny fakturační výkazy, nelze tedy přepnout na nefakturační. Upravte prosím nejdřív fakturační odvody na nefakturační.');
                    fakturace.value = fakturace_puv.value;
                    connections.push(
                        dojo.connect(dojo.byId('k_fakturaci'), 'onclick', fakturacePripadu)
                        );

                    connections.push(
                        dojo.connect(dojo.byId('k_fakturaci'), 'onchange', fakturacePripadu)
                        );
                    connections.push(
                        dojo.connect(dojo.byId('typ_poz'), 'onclick', fakturacePripadu)
                        );
                    connections.push(
                        dojo.connect(dojo.byId('typ_poz'), 'onchange', fakturacePripadu)
                        );
                    connections.push(
                        dojo.connect(dojo.byId('kalkulace'), 'onchange', fakturacePripadu)
                        );
                    connections.push(
                        dojo.connect(dojo.byId('kalkulace_mm'), 'onchange', fakturacePripadu)
                        );
                    fakturacePripadu();
                    return;
                }


            },
            // if any error occurs, it goes here:
            error: function (error, args) {
                alert('chyba: ' + error);
                console.warn("Chyba pri zjistovani fakturacnich hodin: " + error);//#DBG;
                //alert('chyba: ' + error);
                dojo.byId('ajax-loader-obr').style.display = 'none';
            }
        });
    }
}

function inicializujZaznamyDetail() {
    if (dojo.byId('ovladani_zadani')) {
        dojo.byId('ovladani_zadani').style.display = 'none';
    }
}

function ulozVyjadreni() {
    var s = dojo.byId('popis_nespokojenosti').value;
    var popis;
    if (s.length === 0) {
        popis = 'Důvod hodnocení nebyl zadán.';
    } else {
        popis = s;
    }
    dojo.byId('popis_nespokojenosti2').value = popis;
    dijit.byId('nespokojenost-dialog').hide();
    var akce =  dojo.byId('codelat').value;
    submit_vyjadreni_checked(akce); // do dialogu jsme se dostali az po kontrole validity, takze je mozne rovnou ulozit


}

function zmenaResitele() {
    var i = 0, chyba = false;
    if (dijit.byId('termin_dod')) {

        if (dojo.byId('res_uziv').value != dojo.byId('puv_resitel').value) {  // termin bude zablokovan, jakekoliv zmeny se vrati na puvodni hodnotu
            dojo.byId('termin_dod').value = dojo.byId('termin-dodavatel').value;
        }

        dojo.byId('termin_dod').disabled = dojo.byId('res_uziv').value != dojo.byId('puv_resitel').value;
        dijit.byId('termin_dod').disabled = dojo.byId('res_uziv').value != dojo.byId('puv_resitel').value;
    }
    //a ted overim dovolenou resitele - KA ID 52300
    dojo.xhrGet({
        url: '/admin/ajax/nacti/prikaz/ajax_dovolena_resitele/parametry/' + dojo.byId('res_uziv').value,
        handleAs: "json",
        sync: true,
        load: function (data, args) {
            console.debug(data);//#DBG;
            var text_dov = '', text_prip = '';
            if (data.items && data.items.length > 0) {
                text_dov = 'Řešitel má plánovanou dovolenou v období\r\n\r\n';
                for (i = 0; i < data.items.length; i++) {
                    text_dov += ' od ' + data.items[i].datum_od.substr(6, 2) + '.' + data.items[i].datum_od.substr(4, 2);// +  '.' + data.items[i].datum_od.substr(0,4);
                    text_dov += ' ' + data.items[i].pul_den_od;
                    text_dov += ' do ' + data.items[i].datum_do.substr(6, 2) + '.' + data.items[i].datum_do.substr(4, 2); // +  '.' + data.items[i].datum_do.substr(0,4);
                    text_dov += ' ' + data.items[i].pul_den_do;
                    text_dov += ', stav: ' + data.items[i].stav;
                    if (data.items[i].zastupuje !== '') {
                        text_dov += ', zastupuje: ' + data.items[i].zastupuje;
                    }
                    text_dov += '\r\n';
                }
            }
            if (Number(data.pripady_po_terminu) > 0) {
                text_prip = 'Řešitel má ' + data.pripady_po_terminu;
                switch (Number(data.pripady_po_terminu)) {
                case 1:
                    text_prip += ' případ';
                    break;
                case 2:
                case 3:
                case 4:
                    text_prip += ' případy';
                    break;
                default:
                    text_prip += ' případů';
                    break;
                }
                text_prip += ' \"S\" zakázek s expirovaným termínem řešení.\r\n';
            }
            if (text_dov !== '' || text_prip !== '') {
                alert(text_dov + '\r\n' + text_prip + '\r\nZvažte, prosím, jiného řešitele.');
            }
        },
        error: function (error, args) {
            chyba = true;
            console.debug('Chyba pri zjisteni dovolene resitele: ' + error + "\n");//#DBG;
        }
    });

    //oprava resitele v rozpisu kapacit
	//jeste predtim ale musim zjisti hodnoty kapacit z plasnu vyvoje, aby se neprepsaly...
	var kapacita_prog = 0, kapacita_anal = 0;
	if (dojo.byId('pv_anal').value == dojo.byId('pv_prog').value) {
		kapacita_anal = dojo.number.round(Number(dojo.byId('pv_anal_kalk').value) * 8 + Number(dojo.byId('pv_prog_kalk').value) * 8, 2);
		kapacita_prog = kapacita_anal;
	} else {
		kapacita_anal = dojo.number.round(Number(dojo.byId('pv_anal_kalk').value) * 8, 2);
		kapacita_prog = dojo.number.round(Number(dojo.byId('pv_prog_kalk').value) * 8, 2);
	}
	var resitel = dojo.byId('res_uziv'), puv_resitel = dojo.byId('res_uziv_before');
	upravKapacitniRozpis({'puvodni': puv_resitel.value, 'novy': resitel.value, 'musi_byt': [
																	{'uzivatel': resitel.value},
																	{'uzivatel': dojo.byId('pv_prog').value, 'druh': 'PROG', 'kapacita': kapacita_prog},
																	{'uzivatel': dojo.byId('pv_anal').value, 'druh': 'ANAL', 'kapacita': kapacita_anal}
																]});
    //a ted doplnim aktualniho resitele do minuleho...
    puv_resitel.value = resitel.value;
	if (dojo.byId('puv_resitel')) {
		dojo.byId('puv_resitel').value = resitel.value;
	}
}

/**
 * Funkce upravi kapacitni rozpis dle pozadovanych parametru
 *
 * @param pars object
 *		pars = {
 *			'puvodni': uzvivatelske jmeno puvodniho nositele kapacity
 *			'novy': uzivatelske jmeno pozadovaneho nositele kapacity
 *			'kapacita': pozadovana kapacita v hodinach
 *			'musi_byt': [{'uzivatel': , 'kapacita': }, {}, ...] pole hodnot, ktere musi po uprave v rozpisu kapacit byt
 *		}
 */
function upravKapacitniRozpis (pars) {
	console.time('Uprava kapacitniho rozpisu');//#DBG;
	console.debug('Data pro upravu kapacit: ', pars);//#DBG;
	var nalezeny_index = 0, i = 0, pocet_nutnych;
	//nejdriv se podivam, jestli uz neexistuje pozadovany
	if (!pars.kapacita) {
		pars.kapacita = -1;
	}
	nalezeny_index = najdiKapacitu(pars.novy);
	if (Number(nalezeny_index) > -1) {
		//pokud pozadovany existuje, upravim jeho kapacitu
		if (pars.kapacita && Number(pars.kapacita) > -1) {
			dojo.byId('rozpis-kapacit-' + nalezeny_index).value = pars.kapacita;
		}
	} else {
		//pokud neexituje, hledam puvodnihu puvodniho
		nalezeny_index = najdiKapacitu(pars.puvodni);
		if (Number(nalezeny_index) > -1) {
			//a pokud existuje, tak ho zmenim
			dojo.byId('uziv-kap-' + nalezeny_index).value = pars.novy;
			if (pars.kapacita && Number(pars.kapacita) > -1) {
				dojo.byId('rozpis-kapacit-' + nalezeny_index).value = pars.kapacita;
			}
			if (pars.druh) {
				dojo.byId('druh-kap-' + nalezeny_index).value = pars.druh;
			}
		} else {
			//pokud neexistuje, pridam noveho
			doplnKapacitu({'uzivatel': pars.novy, 'kapacita': pars.kapacita});
		}
	}
	//a ted zkontroluji, ze existuji pozadovani
	if (dojo.isArray(pars.musi_byt)) {
		pocet_nutnych = pars.musi_byt.length;
		for(i = 0; i < pocet_nutnych; i++) {
			if (pars.musi_byt[i].uzivatel && dojo.trim(pars.musi_byt[i].uzivatel) != '') {
				nalezeny_index = najdiKapacitu(pars.musi_byt[i].uzivatel);
				if (Number(nalezeny_index) > -1) {
					//a pokud ano, overim, ze maji kapacitu v poradku
					if (pars.musi_byt[i].kapacita) {
						dojo.byId('rozpis-kapacit-' + nalezeny_index).value = pars.musi_byt[i].kapacita;
					}
					if (pars.musi_byt[i].druh) {
						dojo.byId('druh-kap-' + nalezeny_index).value = pars.musi_byt[i].druh;
					}
				} else {
					//pokud ne, pridam je
					doplnKapacitu(pars.musi_byt[i]);
				}
			}
		}
	}
	//a nakonec spustim propocty kapacit
	aktualizujSumyKapacit();
	console.timeEnd('Uprava kapacitniho rozpipsu');//#DBG;
}

/**
 * Funkce doplni do kapacitniho rozpisu pozadovanou hodnotu
 *
 * @param pars object
 *		pars = {
 *			'uzivatel': uzivatelske jmeno nositele kapacity
 *			'kapacita': pozadovana kapacita v hodinach
 *		}
 */
function doplnKapacitu (pars) {
	console.time('Pridani kapacity');//#DBG;
	console.debug('Data pro pridani: ', pars);//#DBG;
	if (!pars.uzivatel) {
		pars.uzivatel = '';
	}
	if (!pars.kapacita) {
		pars.kapacita = -1;
	}
	var pocet = dojo.byId('max-kapacit'), poradi = Number(pocet.value) + 1, zadani = dojo.byId('kapacity-zadani'), viditelnost = 'display:none;';
	var zbyva = Number(dojo.byId('kalkulace').value) - sumaKapacitnihoRozpadu();
	if (zbyva < 0) {
		zbyva = 0;
	}
	if (Number(pars.kapacita) > -1) {
		zbyva = Number(pars.kapacita);
	}

    if (dojo.byId('obl_1')) {
        if (dojo.byId('obl_1').value == 'PV') {
			viditelnost = '';
		}
    }
	var combo = dojo.create('select', {value: pars.uzivatel, name: 'uziv-kap-' + poradi, id: 'uziv-kap-' + poradi}, 'kapacity-zadani'),
		moznost = dojo.create('option', {value: pars.uzivatel, innerHTML: 'Načítám data...'}, combo),
		span_druh = dojo.create('span', {'class': 'kap-druh-prace', style: viditelnost}, 'kapacity-zadani'),
		combo_druh = dojo.create('select', {name: 'druh-kap-' + poradi, id: 'druh-kap-' + poradi}, span_druh),
		moznost_d1 = dojo.create('option', {value: 'NEUV', innerHTML: 'Nespecifikovano'}, combo_druh),
		moznost_d2 = dojo.create('option', {value: 'ANAL', innerHTML: 'Analýza'}, combo_druh),
		moznost_d3 = dojo.create('option', {value: 'PROG', innerHTML: 'Programování'}, combo_druh),
		span1 = dojo.create('span', {innerHTML: ', plánovaná kapacita '}, 'kapacity-zadani'),
		plan_kap = dojo.create('input', {type: 'text', id: 'rozpis-kapacit-' + poradi, name: 'rozpis-kapacit-' + poradi, size: '3',
			style: 'text-align:right;', value: zbyva}, 'kapacity-zadani'),
		span_info = dojo.create('span', {id: 'rozpis-kapacit-info-' + poradi, style: 'display:none;', innerHTML: zbyva}, 'kapacity-zadani'),
		span2 = dojo.create('span', {innerHTML: ' hod., již odvedeno '}, 'kapacity-zadani'),
		span3 = dojo.create('span', {id: 'kap-odvedeno-' + poradi, innerHTML: '0'}, 'kapacity-zadani'),
		span4 = dojo.create('span', {innerHTML: ' hod, zbývá '}, 'kapacity-zadani'),
		span5 = dojo.create('span', {id: 'kap-zbyva-' + poradi, innerHTML: '0', style: 'font-weight:bold;'}, 'kapacity-zadani'),
		span6 = dojo.create('span', {innerHTML: ' hod.'}, 'kapacity-zadani'),
		i_korekce = dojo.create('input', {type: 'hidden', id: 'korekce-' + poradi, name: 'korekce-' + poradi, value: '0'}, 'kapacity-zadani'),
		i_zbyva = dojo.create('input', {type: 'hidden', id: 'zbyva-real-' + poradi, name: 'zbyva-real-' + poradi, value: '0'}, 'kapacity-zadani'),
		span7 = dojo.create('span', {id: 'korekce-puv-' + poradi, innerHTML: '0', style: 'display:none;'}, 'kapacity-zadani'),
		br = dojo.create('br', {}, 'kapacity-zadani'),
		xxx = '';
	zobrazCombo('uziv-kap-' + poradi, '/admin/ajax/nacti/prikaz/ajax_data_resitele/parametry/' + dojo.byId('res_firma').value + '------', pars.uzivatel);
	if (pars.druh) {
		combo_druh.value = pars.druh;
	}
	dojo.connect(dojo.byId('uziv-kap-' + poradi), 'onchange', zmenaZdrojeKapacity);
	dojo.connect(dojo.byId('rozpis-kapacit-' + poradi), 'onchange', zmenaKapacity);
	pocet.value = poradi;
	console.timeEnd('Pridani kapacity');//#DBG;
}

/**
 * Funkce najde a vrati index uzivatele v kapacitním rozpadu
 *
 * @param uzivatel string hledane uzivatelske jmeno
 * @return integer index hledaneho uzivatele v koapacitnim rozpisu, pokud se najde, -1 pokud se nenajde
 */
function najdiKapacitu(uzivatel) {
	console.time('Hledani kapacity ' + uzivatel);//#DBG;
    var pocet = Number(dojo.byId('max-kapacit').value), i = 0, nalezeno = false;
    i = -1;
    while (i <= pocet && !nalezeno) {
        i++;
        if (dojo.byId('uziv-kap-' + i) && dojo.byId('uziv-kap-' + i).value == uzivatel) {
            nalezeno = true;
        }
    }
	console.timeEnd('Hledani kapacity ' + uzivatel);//#DBG;
	if (nalezeno) {
		console.debug('Index kapacity uzivatele ', uzivatel, ': ', i);//#DBG;
		return i;
	} else {
		console.debug('Index kapacity uzivatele ', uzivatel, ': nenalezeno');//#DBG;
		return -1;
	}
}

function zmenaVyvojare(e) {
    var vyvojar = e.target, nazev = '', kapacita = -1;
    var predchozi = dojo.byId(vyvojar.id + '_before');
    switch (vyvojar.id) {
    case 'pv_anal':
		/*if (dojo.byId('pv_anal').value == dojo.byId('pv_anal').value) {
			kapacita = dojo.number.round(Number(dojo.byId('pv_anal_kalk').value) * 8 + Number(dojo.byId('pv_prog_kalk').value) * 8, 2);
		} else {
			kapacita = dojo.number.round(Number(dojo.byId('pv_anal_kalk').value) * 8, 2);
		}*/
		upravKapacitniRozpis({'puvodni': predchozi.value, 'novy': vyvojar.value, 'kapacita': kapacita, 'druh': 'ANAL', 'musi_byt': [
																		{'uzivatel': dojo.byId('res_uziv').value},
																		{'uzivatel': dojo.byId('pv_prog').value, 'druh': 'PROG'},
																		{'uzivatel': dojo.byId('pv_anal').value, 'druh': 'ANAL'}
																	]});
		break;
    case 'pv_prog':
		/*if (dojo.byId('pv_anal').value == dojo.byId('pv_anal').value) {
			kapacita = dojo.number.round(Number(dojo.byId('pv_anal_kalk').value) * 8 + Number(dojo.byId('pv_prog_kalk').value) * 8, 2);
		} else {
			kapacita = dojo.number.round(Number(dojo.byId('pv_prog_kalk').value) * 8, 2);
		}*/
		upravKapacitniRozpis({'puvodni': predchozi.value, 'novy': vyvojar.value, 'kapacita': kapacita, 'druh': 'PROG', 'musi_byt': [
																		{'uzivatel': dojo.byId('res_uziv').value},
																		{'uzivatel': dojo.byId('pv_prog').value, 'druh': 'PROG'},
																		{'uzivatel': dojo.byId('pv_anal').value, 'druh': 'ANAL'}
																	]});
		break;
    }
    predchozi.value = vyvojar.value;
    //a ted jeste aktualizace kapacit
    zmenaKalkulacePv(e);
}

function vytvorDatum(s) {
    // vytvori Date object ze stringu ve formatu yyyy-mm-dd

    var d = new Date();

    var year  = s.slice(0, 4);
    var month = s.slice(5, 7);
    var day   = s.slice(8, 10);

    d.setFullYear(year, month - 1, day);

    return d;
}

function detailOnLoad() {
    var secondDlg = new dijit.Dialog({
        id: 'nespokojenost-dialog',
        title: "Hodnocení",
        parseOnLoad: true,
        closable: false,
        onClose: function () {
            var akce =  dojo.byId('codelat').value;
            dojo.byId('popis_nespokojenosti2').value = 'Důvod hodnocení nebyl zadán.';
            submit_vyjadreni_checked(akce); // do dialogu jsme se dostali az po kontrole validity, takze je mozne rovnou ulozit
        },
        onCancel: function () {
            var akce =  dojo.byId('codelat').value;
            dojo.byId('popis_nespokojenosti2').value = 'Důvod hodnocení nebyl zadán.';
            submit_vyjadreni_checked(akce); // do dialogu jsme se dostali az po kontrole validity, takze je mozne rovnou ulozit
        },
        style: "width:60%; height:200px",
        content: "<div style='width:80%;'>Žádáme Vás o upřesnění důvodu hodnocení &quot;<b>velmi nespokojen</b>&quot;. Získané informace použijeme pro zkvalitňování našich služeb<br />  <textarea id='popis_nespokojenosti' cols='30' rows='3'></textarea><span id='wrapper' /></div>"
    }, dojo.byId('nespokojenost-dialog'));

    var button = new dijit.form.Button({
        label: "OK"
    }, "src").placeAt("wrapper");
    dojo.connect(button, "onClick", ulozVyjadreni);

    secondDlg.set('class', 'p10');

    //sestaveni kontejneru zalozek
    var popelnice = new dijit.layout.TabContainer({
        id: 'mainTabContainer',
        style: 'width:98%;height:80%;'
    }, dojo.byId('mainTabContainer'));

    if (!dojo.byId('cislo_pripadu')) {
        return;
    }

    var zadani = new dijit.layout.ContentPane({
        id: 'zadani',
        title: 'Souhrn',
        style: 'overflow: auto;',
        parseOnLoad: false,
        href: '/ka/pripad/detail/id/'  + dojo.byId('cislo_pripadu').value + '/cast/zadani'
    }, dojo.byId('zadani'));
    zadani.set('class', 'p10');


    var poznamky = new dijit.layout.ContentPane({
        id: 'poznamky',
        title: 'Vyjádření',
        selected: false,
        style: 'overflow: auto;',
        href: '/ka/pripad/detail/id/'  + dojo.byId('cislo_pripadu').value + '/cast/poznamky/odkud/'  + dojo.byId('zdroj-volani').value,
        parseOnLoad: false
    }, dojo.byId('poznamky'));

    poznamky.set('class', 'p10');
    dojo.connect(poznamky, 'onLoad', 'inicializujVyjadreni');
    dojo.connect(poznamky, 'onLoad', 'inicializujFormular');

    var odvody = {};
    if (uroven_firmy > 10 && resime && zakazky) {
        odvody = new dijit.layout.ContentPane({
            id: 'odvody',
            title: 'Odvedená práce',
            selected: false,
            style: 'overflow: auto;',
            parseOnLoad: false,
            href: '/ka/pripad/detail/id/'  + dojo.byId('cislo_pripadu').value + '/cast/odvody'
        }, dojo.byId('odvody'));
        odvody.set('class', 'p10');
        dojo.connect(odvody, 'onLoad', 'aktualizuj_odvadeni');
        dojo.connect(poznamky, 'onLoad', 'aktualizujSumyKapacit');
    }
    var patche = new dijit.layout.ContentPane({
        id: 'patche',
        title: 'Následující patche',
        selected: false,
        style: 'overflow: auto;',
        parseOnLoad: false,
        href: '/ka/pripad/detail/id/'  + dojo.byId('cislo_pripadu').value + '/cast/patche'
    }, dojo.byId('patche'));
    patche.set('class', 'p10');
    dojo.connect(patche, 'onLoad', 'aktualizuj_zmeny');
    var emaily = {};
    if (uroven_firmy > 10 && resime) {
        emaily = new dijit.layout.ContentPane({
            id: 'emaily',
            title: 'Zaslané e-maily',
            selected: false,
            style: 'overflow: auto;',
            parseOnLoad: false,
            href: '/ka/pripad/detail/id/'  + dojo.byId('cislo_pripadu').value + '/cast/emaily'
        }, dojo.byId('emaily'));
        emaily.set('class', 'p10');
        dojo.connect(emaily, 'onLoad', 'inicializujMaily');
    } else {
        emaily = new dijit.layout.ContentPane({
            id: 'emaily',
            title: 'Zaslané e-maily',
            selected: false,
            style: 'overflow: auto;',
            parseOnLoad: false,
            href: '/ka/pripad/detail/id/'  + dojo.byId('cislo_pripadu').value + '/cast/emaily'
        }, dojo.byId('emaily'));
        emaily.set('class', 'p10');
        dojo.connect(emaily, 'onLoad', 'inicializujMaily');
    }

    var help = new dijit.layout.ContentPane({
        id: 'help',
        title: 'Vysvětlivky',
        selected: false,
        style: 'overflow: auto;',
        parseOnLoad: false,
        href: '/ka/pripad/detail/id/'  + dojo.byId('cislo_pripadu').value + '/cast/help'
    }, dojo.byId('help'));
    help.set('class', 'p10');

    popelnice.addChild(poznamky);
    popelnice.addChild(zadani);
    popelnice.addChild(patche);
    popelnice.addChild(emaily);
    if (uroven_firmy > 10 && resime && zakazky) {
        popelnice.addChild(odvody);
    }
    popelnice.addChild(help);
    popelnice.startup();
    popelnice.selectChild(poznamky);

    var pjinfo = new dijit.layout.ContentPane({
        id: 'pjinfo',
        title: 'Projekt',
        selected: false,
        style: 'overflow: auto;',
        parseOnLoad: false
    }, dojo.byId('pjinfo'));
    pjinfo.set('class', 'p10');

    var pjpozor = new dijit.layout.ContentPane({
        id: 'pjpozor',
        title: '<span style="color:red;font-weight:bold;">Upozornění projektu</span>',
        selected: false,
        style: 'overflow: auto;',
        parseOnLoad: false
    }, dojo.byId('pjpozor'));
    pjpozor.set('class', 'p10');

    var lide = new dijit.layout.ContentPane({
        id: 'lide',
        title: 'Lidé na projektu',
        selected: false,
        style: 'overflow: auto;',
        parseOnLoad: false
    }, dojo.byId('lide'));
    lide.set('class', 'p10');


    var smlouvy = new dijit.layout.ContentPane({
        id: 'smlouvy',
        title: 'Smlouvy projektu',
        selected: false,
        style: 'overflow: auto;',
        parseOnLoad: false
    }, dojo.byId('smlouvy'));
    smlouvy.set('class', 'p10');


    var zaznamy = new dijit.layout.ContentPane({
        id: 'zaznamy',
        title: 'Nástěnka projektu',
        selected: false,
        style: 'overflow: auto;',
        parseOnLoad: false
    }, dojo.byId('zaznamy'));
    zaznamy.set('class', 'p10');
    //dojo.connect(zaznamy, 'onLoad', 'inicializujZaznamyDetail');

    new dijit.Dialog({
        id: 'znacky-dialog',
        title: 'Změna značek',
        style: 'overflow:auto;height:90%;'
    }, dojo.byId('znacky-dialog'));


    if (dojo.byId('form_pripad')) {
        dojo.connect(dojo.byId('form_pripad'), 'onsubmit', formular_onsubmit);
    }
    if (dojo.byId('licence')) {
        dojo.connect(dojo.byId('licence'), 'onchange', licence_onchange);
    }

    //a nastaveni ukolu v odvadeni
    if (dojo.byId('defa_etapa') && dojo.byId('defa_etapa_zad') && zakazky) {
        dojo.byId('defa_etapa').value = dojo.byId('defa_etapa_zad').value;
    }

    //nastaveni provadeni akce po odvadeni
    if (dojo.byId('posubmitu') && zakazky) {
        dojo.byId('posubmitu').value = 'poOdvadeni();';
    }

    //tlacitko dialogu znacek
    try {
        dojo.connect(dojo.byId('znacky-dialog-button'), 'onclick', zmenaZnacekDetail);
    } catch (e) {
    }
}

/* =====================================================================================================
   seznam_pripadu.js
   ===================================================================================================== */
function zaskrtni(co) {
    dojo.query(".hrom").forEach(
        function (e) {
			var pocet = dojo.byId('pocet-vybranych');
            if (co == 'vse') {
				if (!e.checked) {
					e.checked = true;
					pocet.value = Number(pocet.value) + 1;
				}
            } else {
				if (e.checked) {
					e.checked = false;
					pocet.value = Number(pocet.value) - 1;
				}
            }
        }
        );
	//pro jistotu, ale nemelo by k tomu dochazet
	if (dojo.byId('pocet-vybranych').value < 0) {
		dojo.byId('pocet-vybranych').value = 0;
	}
	zobrazeniHromadnych();
}

function hromadnaClick(e) {
	var pocet = dojo.byId('pocet-vybranych');
	if (e.target.checked) {
		//klikl jsem a pote je zaskrtnuto = zaskrtnul jsem
		pocet.value = Number(pocet.value) + 1;
	} else {
		//odskrtnul jsem
		if (pocet.value > 0) {
			pocet.value = Number(pocet.value) - 1;
		}
	}
	zobrazeniHromadnych();
}

function zobrazeniHromadnych() {
	var dlghrm = dojo.byId('hromadne-akce');
	if (Number(dojo.byId('pocet-vybranych').value) > 0) {
		dlghrm.style.display = '';
	} else {
		dlghrm.style.display = 'none';
	}
}

function inicializacePoctuZaskrtnutych() {
	dojo.byId('pocet-vybranych').value = 0;
    dojo.query(".hrom").forEach(
        function (e) {
			var pocet = dojo.byId('pocet-vybranych');
            if (e.checked) {
				pocet.value = Number(pocet.value) + 1;
            }
        }
        );
}

function dialogZnacky(akce) {
    //dijit.byId('hromadne-akce').hide();
    //nacteni seznamu zaskrtlych pripadu
    var pripady = '';
    dojo.query(".hrom").forEach(
        function (e) {
            if (e.checked === true || e.checked == 'checked') {
                pripady += e.id.substring(7) + ',';
            }
        }
        );
    if (pripady === '') {
        alert('Pro akci nejsou vybrány žádné případy');
        return;
    }
    if (akce.toLowerCase() == 'add') {
        dojo.byId('znackynadpis').innerHTML = 'Přidání značek případům';
    } else if (akce.toLowerCase() == 'del') {
        dojo.byId('znackynadpis').innerHTML = 'Odebrání značek případům';
    }
    dojo.byId('znackyakce').value = akce;
    dojo.byId('znackypripady').value = pripady;
    //projdu vsechny checkboxy a nastavim pristupnost - pri mazani jsou pristupne jen ty, ktere maji na seznamu alespon jeden vyskyt
    var ex = dojo.byId('znexistuji').value;
    dojo.query(".znacka-check").forEach(
        function (e) {
            if (akce.toLowerCase() == 'del' && ex.indexOf(e.id.substring(3)) <= 1) {
                e.disabled = true;
            } else {
                e.disabled = false;
            }
        }
        );

    dijit.byId('znacky-dialog').show();
    return;
}

function dialogZnackyAdd() {
    dialogZnacky('add');
}

function dialogZnackyDel() {
    dialogZnacky('del');
}

function dialogSkupinaAdd() {
  //  alert('skupadd');

    if (dojo.byId('skupina-pridani')) {
            //alert(dojo.byId('skupina-pridani').value);
        var id_skup = dojo.byId('skupina-pridani').value;
        dojo.query(".hrom").forEach(
            function (e) {
                if (e.checked === true || e.checked == 'checked') {
                    // pripady += e.id.substring(7) + ',';
                    var pripad = e.id.substring(7);
                    // alert('pridat pripad ' + pripad + ' do skupiny' + id_skup );
                    skAdd(id_skup, pripad);

                }
            }
        );
    }
    //dijit.byId('hromadne-akce').hide();
    location.href = dojo.byId('request_uri').value;
}

function dialogSkupinaRemove() {
  //  alert('skupadd');

    if (dojo.byId('skupina-odeber')) {
        var id_skup = dojo.byId('skupina-odeber').value;

        dojo.query(".hrom").forEach(
            function (e) {
                if (e.checked === true || e.checked == 'checked') {
                    // pripady += e.id.substring(7) + ',';
                    var pripad = e.id.substring(7);
                    // alert('pridat pripad ' + pripad + ' do skupiny' + id_skup );
                    skRemove(id_skup, pripad);
                }
            }
            );


    }
    //dijit.byId('hromadne-akce').hide();
    location.href = dojo.byId('request_uri').value;

}

function skAdd(id_skupiny, id_pripadu) {
    dojo.xhrGet({
        url: "/admin/ajax/nacti/prikaz/ajax_skupadd/parametry/" + id_skupiny + "---" + id_pripadu,
        handleAs: "json",
        sync: true,
        load: function (data, args) {
            //console.dir(data);//#DBG;

        },
        // if any error occurs, it goes here:
        error: function (error, args) {
            alert('chyba: ' + error);

        }
    });


}

function skRemove(id_skupiny, id_pripadu) {
    dojo.xhrGet({
        url: "/admin/ajax/nacti/prikaz/ajax_skuprem/parametry/" + id_skupiny + "---" + id_pripadu,
        handleAs: "json",
        sync: true,
        load: function (data, args) {
            //console.dir(data);//#DBG;

        },
        // if any error occurs, it goes here:
        error: function (error, args) {
            alert('chyba: ' + error);

        }
    });


}

function zmenaZnacek() {
    //nejdrive si sestavim retezec zaskrtnutych znacek
    var akce = dojo.byId('znackyakce').value, pripady = dojo.byId('znackypripady').value, e = {};
    //alert(akce + '--' + pripady);
    var znacky = '';
    dojo.query(".znacka-check").forEach(
        function (inputElement) {
            if (inputElement.checked === true || inputElement.checked == 'checked') {
                znacky = znacky + inputElement.id.substring(3) + ',';
                inputElement.checked = false;
            //znacky = znacky + ' ahoj ';
            }
        }
        );
    //a ted samotne overeni vykazu
    dojo.byId('ajax-loader-obr').style.display = 'inline';
    dijit.byId('znacky-dialog').hide();
    //samotny ajax
    dojo.xhrGet({
        url: "/admin/ajax/nacti/prikaz/ajax_znacky/parametry/" + akce + "---" + pripady + '---' + znacky + '---' + dojo.byId('uziv_jmeno').value,
        handleAs: "json",
        load: function (data, args) {
            //console.dir(data);//#DBG;
            var delka = data.znacky.length;
            for (i = 0; i < delka; i++) {
                //alert(data.znacky[i].pripad);
                e = dojo.byId('zp' + data.znacky[i].pripad);
                var j = 0, d = data.znacky[i].zn.length, txt = '', trida = '';
                //alert(delka);
                for (j = 0; j < d; j++) {
                    //alert(data.znacky[i].id);
                    switch (data.znacky[i].zn[j].typ) {
                    case 'v':
                        trida = 'verejne';
                        break;
                    case 'i':
                        trida = 'interni';
                        break;
                    case 'p':
                        trida = 'privatni';
                        break;
                    }
                    txt += ', <span class="znacka-' + trida + '">' + data.znacky[i].zn[j].znacka + '</span>';
                }
                e.innerHTML = txt.substring(2);
            }
            dojo.byId('ajax-loader-obr').style.display = 'none';
        },
        // if any error occurs, it goes here:
        error: function (error, args) {
            alert('chyba: ' + error);
            console.warn("Chyba pri nastavovani znacek: " + error);//#DBG;
            //alert('chyba: ' + error);
            dojo.byId('ajax-loader-obr').style.display = 'none';
        }
    });

}

function zajem(akce) {
    //dijit.byId('hromadne-akce').hide();
    //nacteni seznamu zaskrtlych pripadu
    var pripady = '';
    dojo.query(".hrom").forEach(
        function (e) {
            if (e.checked === true || e.checked == 'checked') {
                pripady += e.id.substring(7) + ',';
            }
        }
        );
    if (pripady === '') {
        alert('Pro akci nejsou vybrány žádné případy');
        return;
    }
    dojo.byId('ajax-loader-obr').style.display = 'inline';
    //samotny ajax
    dojo.xhrGet({
        url: "/admin/ajax/nacti/prikaz/ajax_zajem/parametry/" + akce + "---" + pripady + '---' + dojo.byId('uziv_jmeno').value,
        handleAs: "text",
        load: function (data, args) {
            //console.dir(data);//#DBG;
            dojo.byId('ajax-loader-obr').style.display = 'none';
            alert('Nastavení zájmu bylo provedeno.');
        },
        // if any error occurs, it goes here:
        error: function (error, args) {
            alert('chyba: ' + error);
            console.warn("Chyba pri nastavovani zajmu: " + error);//#DBG;
            //alert('chyba: ' + error);
            dojo.byId('ajax-loader-obr').style.display = 'none';
        }
    });

}

function zajemOn() {
    zajem('on');
}

function zajemOff() {
    zajem('off');
}

function sleduj(akce) {
    //dijit.byId('hromadne-akce').hide();
    //nacteni seznamu zaskrtlych pripadu
    var pripady = '';
    dojo.query(".hrom").forEach(
        function (e) {
            if (e.checked === true || e.checked == 'checked') {
                pripady += e.id.substring(7) + ',';
                //alert('sl-' + e.id.substring(7));
                if (akce == 'on') {
                    dojo.byId('sl-' + e.id.substring(7)).src = '/obrazky/binocular.jpg';
                } else {
                    dojo.byId('sl-' + e.id.substring(7)).src = '/obrazky/spacer.gif';
                }
            }
        }
        );
    if (pripady === '') {
        alert('Pro akci nejsou vybrány žádné případy');
        return;
    }
    dojo.byId('ajax-loader-obr').style.display = 'inline';
    //samotny ajax
    dojo.xhrGet({
        url: "/admin/ajax/nacti/prikaz/ajax_sleduj/parametry/" + akce + "---" + pripady + '---' + dojo.byId('uziv_jmeno').value,
        handleAs: "text",
        load: function (data, args) {
            //console.dir(data);//#DBG;
            dojo.byId('ajax-loader-obr').style.display = 'none';
            alert('Nastavení sledování bylo provedeno.');
        },
        // if any error occurs, it goes here:
        error: function (error, args) {
            alert('chyba: ' + error);
            console.warn("Chyba pri nastavovani sledovani: " + error);//#DBG;
            //alert('chyba: ' + error);
            dojo.byId('ajax-loader-obr').style.display = 'none';
        }
    });

}

function sledujOn() {
    sleduj('on');
}

function sledujOff() {
    sleduj('off');
}

function ukazFiltry(data) {
    //z JSON vraceneho filtrovymi funkcemi sestavi text s odkazy a zobrazi ho
    var pocet = data.length;
    var vystup = '', i = 0;

    vystup += "<table width='100%'><tr><th>Název filtru</th><th>&nbsp</th><th></th>";

    for (i = 0; i < pocet; i++) {
        vystup += '<tr><td>';
        vystup += '<a href="/prehledy/seznam/pripady' + data[i].obsah.replace(/___/g, '/') + '">' + data[i].nazev.replace(/\*\*\*/g, ' ') + '</a>';
        vystup += '</td><td align="left">&nbsp;</td>';
        vystup += '<td align="right">';
        vystup += ' <span style="cursor:pointer;" onclick="smazFiltr(\'' + data[i].id + '\');">';
        vystup += '<img src="/obrazky/zamitnuto.png" widht="16" height="16" alt="X" title="Smaž filtr"/></span>';
        vystup += '</td></tr>';


    }

    vystup += "</table>";
    dojo.byId('ulozenefiltry').innerHTML = vystup;
}

function zmenFiltr() {
    var fvalue = dojo.byId('filtr').value;
    var url = '/prehledy/seznam/pripady' + fvalue.replace(/___/g, '/');
    location.href = url;
}

function ulozFiltr() {
    dijit.byId('uloz-filtr-dialog').show();
    //a ted provedeni zmeny
    //dijit.byId('hromadne').hide();
    dojo.byId('ajax-loader-obr').style.display = 'inline';
    dojo.byId('ajax-loader-obr').style.display = 'none';
    //samotny ajax
    //var url = "/admin/ajax/nacti/prikaz/ajax_ulozfiltr/parametry/" + dojo.byId('uziv_jmeno').value + "---" + dojo.byId('nazevfiltru').value.replace(/ /g, '***') + "---" + dojo.byId('odkaz').value.replace(/\//g, '___');
    //location.href = url;
    return;
    /* tohle uz se tedy asi nepouziva...
    dojo.xhrGet({
        url: "/admin/ajax/nacti/prikaz/ajax_ulozfiltr/parametry/" + dojo.byId('uziv_jmeno').value + "---" + dojo.byId('nazevfiltru').value.replace(/ /g, '***') + "---" + dojo.byId('odkaz').value.replace(/\//g, '___'),
        handleAs: "json",
        load: function (data, args) {
            //console.dir(data);//#DBG;
            dojo.byId('ajax-loader-obr').style.display = 'none';
            ukazFiltry(data.filtry);
        //    dojo.byId('nazevfiltru').value = '';
        //    zobrazCombo('filtr',"/admin/ajax/nacti/prikaz/ajax_data_filtry/parametry/" + dojo.byId('uziv_jmeno').value, dojo.byId('defa_filtr').value);



        },

        error: function (error, args) {
            alert('chyba: ' + error);
            console.warn("Chyba pri nastavovani zajmu: " + error);//#DBG;
            alert('Filtr se nepodařilo uložit. Chyba: ' + error);
            dojo.byId('ajax-loader-obr').style.display = 'none';
        }
    });
    */
}

function smazFiltr(idfiltru) {
    dojo.byId('ajax-loader-obr').style.display = 'inline';
    //samotny ajax
    dojo.xhrGet({
        url: "/admin/ajax/nacti/prikaz/ajax_smazfiltr/parametry/" + dojo.byId('uziv_jmeno').value + '---' + idfiltru,
        handleAs: "json",
        load: function (data, args) {
            //console.dir(data);//#DBG;
            dojo.byId('ajax-loader-obr').style.display = 'none';
            ukazFiltry(data.filtry);
        //alert('Filtr byl smazán.');
        },
        // if any error occurs, it goes here:
        error: function (error, args) {
            alert('chyba: ' + error);
            console.warn("Chyba pri nastavovani zajmu: " + error);//#DBG;
            alert('Filtr se nepodařilo smazat. Chyba: ' + error);
            dojo.byId('ajax-loader-obr').style.display = 'none';
        }
    });
}

function nastavFiltr() {

    var url2 = '/prehledy/seznam/pripady/';



    dojo.query(".filtr").forEach(
        function (e) {
            if (!(e.name == 'filtr-zajem' && e.value === '')) {
                url2 += e.name + '/' + e.value + '/';
            }
        }
        );
    location.href = url2;

}

function nastavAUlozFiltr() {
    if (dojo.byId('filtr-nazev-uloz').value === '') {
        alert('Zadejte název filtru');
        return;
    }
    var url2 = '/';

    dojo.query(".filtr").forEach(
        function (e) {
            url2 += e.name + '/' + e.value + '/';
        }
    );

    var url = "/admin/ajax/nacti/prikaz/ajax_ulozfiltr/parametry/" + dojo.byId('uziv_jmeno').value + "---" + dojo.byId('filtr-nazev-uloz').value.replace(/ /g, '***') + "---" + url2.replace(/\//g, '___') + '/cestina/šžťŠŽŤ';

    dojo.xhrGet({
        url: url,
        handleAs: "json",
        load: function (data, args) {
            zobrazCombo('filtr', "/admin/ajax/nacti/prikaz/ajax_data_filtry/parametry/" + dojo.byId('uziv_jmeno').value, '/prehledy/seznam/pripady/' + url2);
            location.href = '/prehledy/seznam/pripady' + url2;
        },
        // if any error occurs, it goes here:
        error: function (error, args) {
            alert('chyba: ' + error);

            alert('Filtr se nepodařilo uložit. Chyba: ' + error);
            dojo.byId('ajax-loader-obr').style.display = 'none';
        }
    });
}

function dialogFiltry() {
    //a ted provedeni zmeny
    //dijit.byId('hromadne').hide();
    dojo.byId('ajax-loader-obr').style.display = 'inline';
    //samotny ajax
    dojo.xhrGet({
        url: "/admin/ajax/nacti/prikaz/ajax_seznamfiltru/parametry/" + dojo.byId('uziv_jmeno').value,
        handleAs: "json",
        load: function (data, args) {
            //console.dir(data);//#DBG;
            dojo.byId('ajax-loader-obr').style.display = 'none';
            ukazFiltry(data.filtry);
            dijit.byId('uloz-filtr-dialog').show();
        },
        // if any error occurs, it goes here:
        error: function (error, args) {
            alert('chyba: ' + error);
            console.warn("Chyba pri nastavovani zajmu: " + error);//#DBG;
            alert('Filtr se nepodařilo uložit. Chyba: ' + error);
            dojo.byId('ajax-loader-obr').style.display = 'none';
        }
    });
}

function filtrMojeSledovani() {
    var p = dojo.byId('jasleduji'), u = dojo.byId('filtr-sleduziv');
    if (p && u) {
        if (p.checked) {
            u.value = dojo.byId('sleduzivdefa').value;
            u.disabled = true;
        } else {
            u.value = '';
            u.disabled = false;
        }
    }
}

function seznamOnLoad() {
    var pom = dojo.byId('defa_filtr').value;
    dojo.byId('defa_filtr').value = pom.replace('%7C', '|');
    zobrazComboX('filtr', '/admin/ajax/nacti/prikaz/ajax_data_filtry/parametry/' + dojo.byId('uziv_jmeno').value, dojo.byId('defa_filtr').value, 'inicializujSeznam()');

    dojo.require("dijit.Dialog");
	inicializacePoctuZaskrtnutych();
    dojo.connect(dojo.byId('b-dalsifiltry'), 'onclick', toggleDialog);
    dojo.connect(dojo.byId('x-dalsifiltry'), 'onclick', toggleDialog);
    dojo.connect(dojo.byId('ulozzmeny'), 'onclick', zmenaZnacek);
    dojo.connect(dojo.byId('ulozfiltr'), 'onclick', ulozFiltr);
    dojo.connect(dojo.byId('filtryakce'), 'onclick', dialogFiltry);
    dojo.connect(dojo.byId('zajemon'), 'onclick', zajemOn);
    dojo.connect(dojo.byId('zajemoff'), 'onclick', zajemOff);
    dojo.connect(dojo.byId('sleduj'), 'onclick', sledujOn);
    dojo.connect(dojo.byId('jasleduji'), 'onclick', filtrMojeSledovani);
    dojo.connect(dojo.byId('nesleduj'), 'onclick', sledujOff);
    dojo.connect(dojo.byId('znackyadd'), 'onclick', dialogZnackyAdd);
    dojo.connect(dojo.byId('znackydel'), 'onclick', dialogZnackyDel);

    dojo.connect(dojo.byId('filtr'), 'onchange', zmenFiltr);
    dojo.connect(dojo.byId('submit2'), 'onclick', nastavFiltr);
    dojo.connect(dojo.byId('uloz_filtr'), 'onclick', nastavAUlozFiltr);
    dojo.connect(dojo.byId('filtr'), 'onload', inicializujSeznam);

	if (dojo.byId('zaskrtni-vse')) {
		dojo.connect(dojo.byId('zaskrtni-vse'), 'onclick', function(){zaskrtni('vse');});
		dojo.connect(dojo.byId('zaskrtni-nic'), 'onclick', function(){zaskrtni('nic');});
	}
	dojo.query('.hrom').onclick('hromadnaClick');
	/*
	 * Tohle je funkcni az od dojo 1.7.1
	 * dojo.require("dojox.NodeList-delegate");
	 * dojo.query('#seznam-pripadu-table').delegate('input.hrom', 'onclick'. hromadnaClick);
	 */

    new dijit.Dialog({
        id: 'znacky-dialog',
        title: 'Změna značek',
        style: 'overflow:auto;height:90%;'
    }, dojo.byId('znacky-dialog'));

    new dijit.Dialog({
        id: 'uloz-filtr-dialog',
        title: 'Správa filtrů',
        style: 'overflow:auto;height:90%;'
    }, dojo.byId('uloz-filtr-dialog'));

    /*new dijit.Dialog({
        id: 'hromadne-akce',
        title: 'Hromadné akce',
        style: 'overflow:auto;height:90%;'
    }, dojo.byId('hromadne-akce'));
	*/
   
    //inicializace stavu filtru pro sledovani
    try {
        var p = dojo.byId('jasleduji'), u = dojo.byId('filtr-sleduziv');
        if (u.value == dojo.byId('sleduzivdefa').value) {
            p.checked = true;
            u.disabled = true;
        } else {
            p.checked = false;
            u.disabled = false;
        }
    } catch (e) {}
	//horni tlacitka
	if (dojo.byId('top-buttons-container')) {
		//priprazeni udalosti
		dojo.query('.seznam-button-top')
			.onmousedown(function(el){el.target.style.backgroundColor = '#7EABCD'})
			.onmouseup(function(el){el.target.style.backgroundColor = '#F7F7F7'})
			.onclick(function(el) {
				if (dojo.hasAttr(el.target, 'odkaz')) {
					//var x = dojo.getAttr(el.target, 'odkaz');
					console.debug('Odkaz: ', dojo.attr(el.target, 'odkaz'));//#DBG;
					window.location.href = dojo.attr(el.target, 'odkaz');
				} else {
					console.warn('Tlacitko nema odkaz.');//#DBG;
				}
			})
		;

		//a ted nactu pocty pripadu
        dojo.xhrGet({
            url: "/admin/ajax/nacti/prikaz/ajax_info_seznam",
            handleAs: "json",
            load: function (data, args) {
                console.debug('Nactene pocty pripadu do horniho menu', data);//#DBG;
				dojo.query('.sbt-spn').forEach(function(prv){
					if (!isNaN(data[prv.id])) {
						prv.innerHTML = data[prv.id];
						if (Number(data[prv.id]) > 0) {
							prv.style.fontWeight = 'bold'
						} else {
							prv.style.fontWeight = 'normal'
						}
					}
				})
            },
            // if any error occurs, it goes here:
            error: function (error, args) {
                console.warn("Chyba pri nacitani poctu pripadu do horniho menu: ", error);//#DBG;
            }
        });
	}
}

function zobrazComboX(idPrvku, url, defa) {
    /*
	Funkce naplni combo hodnotami, ziskanymi xhttp dotazem
	Parametry:
		idPrvku: id prvku typu select, kteremu maji byt aktualizovany options
		url: url na kterou bude poslan dotaz, ktery vrati JSON obsahujici pole items s dvojicemi hodnota, label a defa
		defa: defaultni hodnota, ktera ma byt v combu po nacteni naplnena
*/
    var skupiny = false, skupina = '', skPrvek = {}, volba = {}, proved = '', uz_defa = false;

    if (arguments.length > 3) { // je uveden i kod pro vykonani po nacteni comba
        proved = arguments[3];
    }
    var prvek = dojo.byId(idPrvku);
    prvek.disabled = true;
    removeChildNodes(prvek);
    prvek.options.length = 0;
    prvek.options[0] = new Option('Načítám...', '', false, false);
    ajaxstart(idPrvku);
    dojo.xhrGet({
        url: url,
        handleAs: "json",
        load: function (data, args) {
            //console.dir(data);//#DBG;
            prvek.options.length = 0;
            var pocet = data.items.length; //kvuli rychlosti
            if ((!skupiny || skupina === '') && !data.items[0].skupina) { //to je jednodussi
                for (i = 0; i < pocet; i++) {
                    //console.debug(data.items[i].hodnota + ' -- ' + defa);//#DBG;
                    if (data.items[i].defa === '1' || data.items[i].hodnota === defa) {
                        prvek.options[i] = new Option(data.items[i].label.replace('***', ' '), data.items[i].hodnota, true, true);
                        uz_defa = true;
                    }
                    else {
                        prvek.options[i] = new Option(data.items[i].label.replace('***', ' '), data.items[i].hodnota, false, false);
                    }
                }
            } else { //musim to vytvorit se skupinama
                skupina = 'xxx';
                for (i = 0; i < pocet; i++) {
                    //console.debug(data.items[i].skupina);//#DBG;
                    if (skupina != data.items[i].skupina) {
                        if (skupina != 'xxx') {
                            prvek.appendChild(skPrvek);
                        }
                        skupina = data.items[i].skupina;
                        skPrvek = document.createElement('optgroup');
                        skPrvek.label = skupina;
                    }
                    volba = document.createElement('option');
                    volba.value = data.items[i].hodnota;
                    volba.innerHTML = data.items[i].label.replace('***', ' ');
                    if ((data.items[i].defa === '1' || data.items[i].hodnota === defa) && !uz_defa) {
                        volba.selected = true;
                        uz_defa = true;
                    }
                    skPrvek.appendChild(volba);
                }
                if (i > 0) { //jeste musim pridat posledni skupinu///
                    prvek.appendChild(skPrvek);
                }
            }

            if (uz_defa) {
                prvek.remove(0);
            }

            prvek.disabled = false;
            if (proved !== '') { // je uveden i kod pro vykonani po nacteni comba
                try {
                    eval(proved);
                } catch (e) {
                }
            }
            ajaxkonec(idPrvku);
        },
        error: function (error, args) {
            console.warn('Chyba pri nacitani comba ID ' + idPrvku + '...', error);//#DBG;
            prvek.disabled = false;
        }
    });
}

/* =====================================================================================================
   novy_pripad.js
   ===================================================================================================== */
function owner_onchange() {
    zobrazCombo('resitel', '/admin/ajax/nacti/prikaz/ajax_data_resitele/parametry/' + dojo.byId('owner').value, '');
    if (dojo.byId('pristupy')) {
        zobrazCombo('pristupy', '/admin/ajax/nacti/prikaz/ajax_data_resitele/parametry/' + dojo.byId('owner').value  + '---', '');
    }
}

function zmen_vlastniky() {
    zobrazCombo('vlastnik', '/admin/ajax/nacti/prikaz/ajax_data_vlastnici_pripadu/parametry/' + dojo.byId('uziv_jmeno').value + '---' + dojo.byId('licence').value + '---' + dojo.byId('projekt_zad').value,  dojo.byId('vlastnik').value, '');
}

function novySubmit(e) {
    var chyba = false, hlaska = '', index = 1;
    //neukoncena AJAX komunikace
    if (dojo.byId('ajaxstav')) {
        if (dojo.byId('ajaxstav').value !== '') {
            chyba = true;
            hlaska += "\r\n" + index + ') Doposud nebyla načtena všechna data ze serveru. Zkuste formulář uložit znovu';
            index++;
        }
    }
    if (dojo.byId('typpripadu2')) {
        //externi pripad musi mit licenci
        if (dojo.byId('typpripadu2').checked === true && (dojo.byId('licence').value === '' || dojo.byId('licence').value == '.' || dojo.byId('licence').value == '|')) {
            chyba = true;
            hlaska += "\r\n" + index + ") Není uvedena licence.";
            index++;
        }
        //externi pripad musi mit oblast
        if (dojo.byId('typpripadu2').checked === true && (dojo.byId('obl_1').value === '' || dojo.byId('obl_2').value === '' || dojo.byId('obl_3').value === '')) {
            chyba = true;
            hlaska += "\r\n" + index + ") Není uvedena oblast případu.";
            index++;
        }
    }
    if (dojo.byId('typpripadu')) {
        //externi pripad musi mit licenci
        if (dojo.byId('typpripadu').value == 'h' && (dojo.byId('licence').value === '' || dojo.byId('licence').value == '.' || dojo.byId('licence').value == '|')) {
            chyba = true;
            hlaska += "\r\n" + index + ") Není uvedena licence.";
            index++;
        }
        //externi pripad musi mit oblast
        if (dojo.byId('typpripadu').value == 'h' && (dojo.byId('obl_1').value === '' || dojo.byId('obl_2').value === '' || dojo.byId('obl_3').value === '')) {
            chyba = true;
            hlaska += "\r\n" + index + ") Není uvedena oblast případu.";
            index++;
        }
    }
    if (dojo.byId('typpripadu2')) {
        //interni pripad musi mit projekt
        if (uroven_firmy > 30 && dojo.byId('typpripadu1').checked === true && (dojo.byId('projekt_zad').value === '' || dojo.byId('projekt_zad').value == '.' || dojo.byId('projekt_zad').value == '0' || dojo.byId('projekt_zad').value == '1' || dojo.byId('etapa_zad').value === '' || dojo.byId('projekt_zad').value == '|||')) {
            chyba = true;
            hlaska += "\r\n" + index + ") Není uveden projekt nebo etapa projektu.";
            index++;
        }
    }
    if (dojo.byId('typpripadu2')) {
        //interni pripad musi mit resitele
        if (uroven_firmy > 30 && dojo.byId('typpripadu1').checked === true && (dojo.byId('resitel').value === '' || dojo.byId('resitel').value == '.' || dojo.byId('resitel').value == '-')) {
            chyba = true;
            hlaska += "\r\n" + index + ") Interní případ musí mít uvedeného řešitele.";
            index++;
        }
    }
    if (dojo.byId('obl_1') && dojo.byId('obl_2') && dojo.byId('obl_1')) {
        //oblast musi byt bud kompletne prazdna nebo kompletne naplnena - jinak je s tim integritni problem
        if (!((dojo.byId('obl_1').value === '' && dojo.byId('obl_2').value === '' && dojo.byId('obl_3').value === '') || (dojo.byId('obl_1').value !== '' && dojo.byId('obl_2').value !== '' && dojo.byId('obl_3').value !== ''))) {
            chyba = true;
            hlaska += "\r\n" + index + ") Nesprávně uvedená nebo nespecifikovaná oblast případu.";
            index++;
        }
    }
    if (dojo.byId('obl_1') && (dojo.byId('obl_1').value == 'KARAT' || dojo.byId('obl_1').value == 'DOC' || dojo.byId('obl_1').value == 'PV' || dojo.byId('obl_1').value == 'TST') && dojo.byId('verze').value === '') {
        //u techto oblasti je povinne vyplneni verze
        chyba = true;
        hlaska += "\r\n" + index + ") Není uvedena verze, ve které k problému došlo.";
        index++;
    }
    if (dojo.byId('shname').value.replace(/\s/ig, '') === '' || dojo.byId('shname').value == 'Nezadáno') {
        chyba = true;
        hlaska += "\r\n" + index + ") Není uveden název případu.";
        index++;
    }
    if (dijit.byId('descr').get('value').replace(/\s/ig, '') === '') {
        chyba = true;
        hlaska += "\r\n" + index + ") Není uveden popis případu.";
        index++;
    }

    var now = new Date();

    if (dojo.byId('termin')) {
        var termin = vytvorDatum(dojo.byId('termin').value);
        if (dojo.byId('termin').value !== '' && now > termin) {
            chyba = true;
            hlaska += "\r\n" + index + ') Požadovaný termín je v minulosti';
            index++;
        }
    }

    if (dojo.byId('licence') && dojo.byId('znacka') && dojo.byId('licence').value == '0100000000019001|CAC' && dojo.byId('znacka').value === '') {
        //nesystemove reseni UCL znacek
        chyba = true;
        hlaska += "\r\n" + index + ') Není uvedena oblast/značka problému v rámci UCL řešení';
        index++;
    }

    if (chyba) {
        alert('Ve formuláři jsou následující chyby: ' + hlaska + "\n\r" + 'Opravte je, prosím, a uložte případ znovu.');
        return false;
    } else {
        dojo.byId('novy').submit();
        return true;
    }
}

function zmenaResiteleNew() {
    //a ted overim dovolenou resitele - KA ID 52300
    var chyba = false;
    dojo.xhrGet({
        url: '/admin/ajax/nacti/prikaz/ajax_dovolena_resitele/parametry/' + dojo.byId('resitel').value,
        handleAs: "json",
        sync: true,
        load: function (data, args) {
            console.debug(data);//#DBG;
            if (data.items && data.items.length > 0) {
                var text = 'Řešitel má plánovanou dovolenou v období\r\n\r\n';
                for (i = 0; i < data.items.length; i++) {
                    text += ' od ' + data.items[i].datum_od.substr(6, 2) + '.' + data.items[i].datum_od.substr(4, 2);// +  '.' + data.items[i].datum_od.substr(0,4);
                    text += ' ' + data.items[i].pul_den_od;
                    text += ' do ' + data.items[i].datum_do.substr(6, 2) + '.' + data.items[i].datum_do.substr(4, 2); // +  '.' + data.items[i].datum_do.substr(0,4);
                    text += ' ' + data.items[i].pul_den_do;
                    text += ', stav: ' + data.items[i].stav;
                    if (data.items[i].zastupuje !== '') {
                        text += ', zastupuje: ' + data.items[i].zastupuje;
                    }
                    text += '\r\n';
                }
                text += '\r\nZvažte, prosím, jiného řešitele.';
                alert(text);
            }
        },
        error: function (error, args) {
            chyba = true;
            console.debug('Chyba pri zjisteni dovolene resitele: ' + error + "\n");//#DBG;
        }
    });
}

function vytvorDatum(s) {
    // vytvori Date object ze stringu ve formatu yyyy-mm-dd

    var d = new Date();

    var year  = s.slice(0, 4);
    var month = s.slice(5, 7);
    var day   = s.slice(8, 10);

    d.setFullYear(year, month - 1, day);

    return d;
}

function novyPripadOnLoad() {
    //pozadovane knihovny
    //xxdojo.require("dijit.form.Textarea");
    //xxdojo.require("dijit.form.DateTextBox");

    new dijit.form.Textarea({
        id: 'descr',
        name: 'descr',
        style: 'width:700px;'
    }, dojo.byId('descr'));

    if (uroven_firmy > 30 || muze_termin == 1) {
        new dijit.form.DateTextBox({
            name: 'termin',
            id: 'termin',
            /*selector: 'date',*/
            style: 'width:12em;'
        }, dojo.byId('termin'));
    }
    dojo.connect(dojo.byId('licence'), 'onchange', licence_onchange);
    dojo.connect(dojo.byId('licence'), 'onchange', function () {
        nastavVerziKarat('verze', 'licence');
    });
    dojo.connect(dojo.byId('obl_1'), 'onchange', zmenaOblasti);
    dojo.connect(dojo.byId('obl_2'), 'onchange', zmenaOblasti);
    if (uroven_firmy > 30) {
        dojo.connect(dojo.byId('projekt_zad'), 'onchange', projektZmena);
        dojo.connect(dojo.byId('pv_anal_kalk'), 'onchange', CeskeCisloEvent);
        dojo.connect(dojo.byId('pv_prog_kalk'), 'onchange', CeskeCisloEvent);
        dojo.connect(dojo.byId('resitel'), 'onchange', aktualizujOperace);
        dojo.connect(dojo.byId('resitel'), 'onchange', zmenaResiteleNew);
        dojo.connect(dojo.byId('obl_3'), 'onchange', aktualizujOperace);
    }
    dojo.connect(dojo.byId('obl_3'), 'onchange', zmenaPatche);
    dojo.connect(dojo.byId('obl_3'), 'onchange', zmenaOblasti3);
    dojo.connect(dojo.byId('verze'), 'onchange', zmenaPatche);
    if (uroven_firmy > 10) {
        dojo.connect(dojo.byId('owner'), 'onchange', owner_onchange);
    }
    dojo.connect(dojo.byId('licence'), 'onchange', zmen_vlastniky);
    if (uroven_firmy > 30) {
        dojo.connect(dojo.byId('projekt_zad'), 'onchange', zmen_vlastniky);
    }
    initFormular();
    //	inicializujFormular();

    //oblasti.oblast1Zmena();
    /*if (dojo.byId('defa_licence')) {
		dojo.byId('licence').value = dojo.byId('defa_licence').value;
		licence_onchange();
	} */

    dojo.connect(dojo.byId('novy-submit'), 'onclick', novySubmit);
}

/* =====================================================================================================
   projekt_detail.js
   ===================================================================================================== */
function inicializujPrehled(e) {
    dojo.require('dijit.form.Textarea');
    if (editace) {
        dojo.connect(dojo.byId('uprav-info'), 'onclick', zmenInfo);
        dojo.connect(dojo.byId('uprav-pozor'), 'onclick', zmenPozor);
        //dojo.connect(dojo.byId('naklady-text'), 'onclick', zmenNaklady);
        //dojo.connect(dojo.byId('vynosy-text'), 'onclick', zmenVynosy);
        //dojo.connect(dojo.byId('obr-termin'), 'onclick', zmenStatus);
        //dojo.connect(dojo.byId('obr-kvalita'), 'onclick', zmenStatus);
        //dojo.connect(dojo.byId('obr-finance'), 'onclick', zmenStatus);
        zobrazCombo('filtr-fr', '/admin/ajax/nacti/prikaz/ajax_data_fiskalni_rok/parametry/07------' + fiskalni_rok, fiskalni_rok);
        dojo.connect(dojo.byId('filtr-fr'), 'onchange', zmenFR);
    }
}

function zmenFR(e) {
    dojo.byId('ajax-loader-obr').style.display = 'inline';
    document.location.href = '/zdroje/projekty/detail/id/' + dojo.byId('id_ukolu').value + '/filtr-fr/' + dojo.byId('filtr-fr').value;
}

function aktualizujPlany(e) {
    var ajax_running = dojo.byId('ajax-loader-obr');
    ajax_running.style.display = 'inline';
    //samotny ajax
    dojo.xhrGet({
        url: "/admin/ajax/nacti/prikaz/ajax_plany_projektu/parametry/" + dojo.byId('id_ukolu').value + '---' + dojo.byId('plany_fr').value,
        handleAs: "json",
        load: function (data, args) {
            dojo.byId('naklady_plan_puv_text').innerHTML = data.naklady_plan_text;
            dojo.byId('naklady_plan_puv').value = data.naklady_plan;
            dojo.byId('naklady_plan').value = data.naklady_plan;
            dojo.byId('vynosy_plan_puv_text').innerHTML = data.vynosy_plan_text;
            dojo.byId('vynosy_plan_puv').value = data.vynosy_plan;
            dojo.byId('vynosy_plan').value = data.vynosy_plan;
            if (dojo.byId('hodiny_plan_puv_text')) {
                dojo.byId('hodiny_plan_puv_text').innerHTML = data.hodiny_plan_text;
                dojo.byId('hodiny_plan_puv').value = data.hodiny_plan;
                dojo.byId('hodiny_plan').value = data.hodiny_plan;
            }
            ajax_running.style.display = 'none';
        },
        // if any error occurs, it goes here:
        error: function (error, args) {
            console.warn("Chyba pri overovani nacitani planu projektu: ", error);//#DBG;
            ajax_running.style.display = 'none';
        }
    });
}

function zmenInfo(e) {
    var info = dojo.byId('info-text');
    var txt = info.innerHTML;
    info.innerHTML = '<textarea name="info-vstup" id="info-vstup" cols="0" rows="0">' + txt + '</textarea>';
    new dijit.form.Textarea({
        style: 'width:90%;',
        name: 'info-vstup',
        id: 'info-vstup'
    }, dojo.byId('info-vstup'));
    dojo.byId('form-ulozeni').style.display = 'block';
    dojo.byId('uprav-info').style.display = 'none';
}

function zmenPozor(e) {
    var pozor = dojo.byId('pozor-text');
    var txt = pozor.innerHTML;
    pozor.innerHTML = '<textarea name="pozor-vstup" id="pozor-vstup" cols="0" rows="0">' + txt + '</textarea>';
    new dijit.form.Textarea({
        style: 'width:90%;',
        name: 'pozor-vstup',
        id: 'pozor-vstup'
    }, dojo.byId('pozor-vstup'));
    dojo.byId('form-ulozeni').style.display = 'block';
    dojo.byId('uprav-pozor').style.display = 'none';
}

function zmenNaklady(e) {
    var prv = dojo.byId('naklady-text');
    var txt = prv.innerHTML;
    if (txt.substring(0, 6) != '<input') {
        prv.innerHTML = '<input type="text" name="naklady-vstup" id="naklady-vstup" size="6" value="' + txt + '"/>';
        dojo.byId('form-ulozeni').style.display = 'block';
    }
}

function zmenVynosy(e) {
    var prv = dojo.byId('vynosy-text');
    var txt = prv.innerHTML;
    if (txt.substring(0, 6) != '<input') {
        prv.innerHTML = '<input type="text" name="vynosy-vstup" id="vynosy-vstup" size="6" value="' + txt + '"/>';
        dojo.byId('form-ulozeni').style.display = 'block';
    }
}

function zmenStatus(e) {
    var cil = e.target.id.substring(4);
    //alert(cil);
    if (dojo.byId('menim-' + cil).value != 'ano') {
        var prv = dojo.byId(cil + '-text');
        var hodnota = dojo.byId('menim-' + cil).value;
        prv.innerHTML = '<select id="' + cil + '-vstup" name="' + cil + '-vstup"></select>';
        var opt = dojo.byId(cil + '-vstup');
        opt.options[0] = new Option('Bez problémů', '10', hodnota == '10', hodnota == '10');
        opt.options[1] = new Option('Problém', '20', hodnota == '20', hodnota == '20');
        opt.options[2] = new Option('Velký problém', '30', hodnota == '30', hodnota == '30');
        dojo.byId('menim-' + cil).value = 'ano';
        dojo.byId('form-ulozeni').style.display = 'block';
    }
}

function inicializujZaznamy() {
    console.debug('inicializace zaznamu');//#DBG;
    var odkud = '';
    if (dojo.byId('cislo_pripadu')) {
        odkud = 'pripad';
    } else {
        odkud = 'projekt';
    }
    // zdroje/projekty/detail/id/' . trim($_POST['id_ukolu']) . '/start/zaznamy
    if (odkud == 'projekt') {
        if (editace) {
            dojo.require('dijit.form.Textarea');
            new dijit.form.Textarea({
                style: 'width:700px;',
                name: 'status_poznamky',
                id: 'status_poznamky'
            }, dojo.byId('status_poznamky'));
            new dijit.form.Textarea({
                style: 'width:700px;',
                name: 'status_c_text',
                id: 'status_c_text'
            }, dojo.byId('status_c_text'));
            new dijit.form.Textarea({
                style: 'width:700px;',
                name: 'status_k_text',
                id: 'status_k_text'
            }, dojo.byId('status_k_text'));
            new dijit.form.Textarea({
                style: 'width:700px;',
                name: 'status_f_text',
                id: 'status_f_text'
            }, dojo.byId('status_f_text'));
            new dijit.form.Textarea({
                style: 'width:700px;',
                name: 'naklady_plan_text',
                id: 'naklady_plan_text'
            }, dojo.byId('naklady_plan_text'));
            new dijit.form.Textarea({
                style: 'width:700px;',
                name: 'vynosy_plan_text',
                id: 'vynosy_plan_text'
            }, dojo.byId('vynosy_plan_text'));
            if (odkud == 'projekt') {
                zobrazCombo('plany_fr', '/admin/ajax/nacti/prikaz/ajax_data_fiskalni_rok/parametry/07------' + fiskalni_rok, fiskalni_rok, '', 'aktualizujPlany()');
            }
            dojo.connect(dojo.byId('status_c'), 'onchange', zmenStatusObr);
            dojo.connect(dojo.byId('status_k'), 'onchange', zmenStatusObr);
            dojo.connect(dojo.byId('status_f'), 'onchange', zmenStatusObr);
            dojo.connect(dojo.byId('naklady_plan'), 'onchange', CeskeCisloEvent);
            dojo.connect(dojo.byId('vynosy_plan'), 'onchange', CeskeCisloEvent);
            dojo.connect(dojo.byId('typ'), 'onchange', zmenaTypuZaznamu);
            dojo.connect(dojo.byId('zazn-add'), 'onclick', prepniPridani);
            dojo.connect(dojo.byId('zazn-hide'), 'onclick', prepniPridani);
            dojo.connect(dojo.byId('uloz-zaznam'), 'onclick', overSpravnostZaznamu);
            dojo.connect(dojo.byId('plany_fr'), 'onchange', aktualizujPlany);
            if (dojo.byId('hodiny_plan_puv_text')) { //explicitni plan hodin, jinak nejdou tudy zmenit
                new dijit.form.Textarea({
                    style: 'width:700px;',
                    name: 'hodiny_plan_text',
                    id: 'hodiny_plan_text'
                }, dojo.byId('hodiny_plan_text'));
                dojo.connect(dojo.byId('hodiny_plan'), 'onchange', CeskeCisloEvent);
            }
        }
    } else { //otevreno z detailu pripadu
        dojo.byId('zazn-add').style.display =  'none';
        dojo.byId('zazn-prejdi').style.display =  '';
        dojo.byId('zazn-prejdi').href = '/zdroje/projekty/detail/id/' + dojo.byId('projekt_zad').value + '/start/zaznamy';
    }
}

function zmenStatusObr(e) {
    var cil = dojo.byId(e.target.id + '_img'), obr = '';
    switch (e.target.value) {
    case '10':
        obr = 'green.bmp';
        break;
    case '20':
        obr = 'orange.bmp';
        break;
    case '30':
        obr = 'red.bmp';
        break;
    }
    cil.src = '/obrazky/' + obr;
}

function prepniPridani(e) {
    if (e.target.id == 'zazn-add') {
        dojo.byId('zazn-add').style.display = 'none';
        dojo.byId('zazn-hide').style.display = 'inline';
        dojo.byId('pridani-zaznamu').style.display = 'block';
    } else {
        dojo.byId('zazn-hide').style.display = 'none';
        dojo.byId('zazn-add').style.display = 'inline';
        dojo.byId('pridani-zaznamu').style.display = 'none';
    }
}

function zmenaTypuZaznamu(e) {
    if (e.target.value == '90') {
        dojo.byId('status-report').style.display = 'block';
        dojo.byId('privatni').checked = true;
    } else {
        dojo.byId('status-report').style.display = 'none';
        dojo.byId('privatni').checked = false;
    }
}

function overSpravnostZaznamu(e) {
    var ok = true, zprava = "Nalezeny následující chyby:\n";
    //alert('kontrola');
    if (dijit.byId('status_poznamky').get('value') === '' && dijit.byId('status_c_text').get('value') === '' && dijit.byId('status_k_text').get('value') === '' && dijit.byId('status_f_text').get('value') === '' && dijit.byId('naklady_plan_text').get('value') === '' && dijit.byId('vynosy_plan_text').get('value') === '' && (!dijit.byId('hodiny_plan_text') || dijit.byId('hodiny_plan_text').get('value') === '')) {
        ok = false;
        zprava = zprava + 'Není uveden žádný text\n';
    }
    if (dojo.byId('status_c').value != dojo.byId('status_c_puv').value && dijit.byId('status_c_text').get('value') === '') {
        ok = false;
        zprava = zprava + 'Není uveden důvod změny statusu TERMÍN\n';
    }
    if (dojo.byId('status_k').value != dojo.byId('status_k_puv').value && dijit.byId('status_k_text').get('value') === '') {
        ok = false;
        zprava = zprava + 'Není uveden důvod změny statusu KVALITA\n';
    }
    if (dojo.byId('status_f').value != dojo.byId('status_f_puv').value && dijit.byId('status_f_text').get('value') === '') {
        ok = false;
        zprava = zprava + 'Není uveden důvod změny statusu FINANCE\n';
    }
    if (dojo.byId('naklady_plan').value != dojo.byId('naklady_plan_puv').value && dijit.byId('naklady_plan_text').get('value') === '') {
        ok = false;
        zprava = zprava + 'Není uveden důvod změně PLÁNU NÁKLADŮ\n';
    }
    if (dojo.byId('vynosy_plan').value != dojo.byId('vynosy_plan_puv').value && dijit.byId('vynosy_plan_text').get('value') === '') {
        ok = false;
        zprava = zprava + 'Není uveden důvod změně PLÁNU VÝNOSŮ\n';
    }
    if (dojo.byId('hodiny_plan')) {
        if (dojo.byId('hodiny_plan').value != dojo.byId('hodiny_plan_puv').value && dijit.byId('hodiny_plan_text').get('value') === '') {
            ok = false;
            zprava = zprava + 'Není uveden důvod změně KAPACITNÍHO PLÁNU\n';
        }
    }
    if (ok) {
        dojo.byId('projekt-form').submit();
        return true;
    } else {
        alert(zprava);
        return false;
    }
}

function ulozPoznamkuTkf() {
    var url = "/admin/ajax/nacti/prikaz/ajax_tkf_poznamka";
    var id_ukolu = dojo.byId('f_id_ukolu').value;
    var e = dijit.byId('poznamka_tkf').value;
    dojo.xhrPost({
        url: url,
        handleAs: 'text',
        sync: true,
        content: {
            command: 'ajax_tkf_poznamka',
            value: e,
            id_ukolu: id_ukolu

        },
        load: function (data) {
            var pole = dojo.byId('autor');
            if (pole && dojo.byId('f_user')) {
                pole.innerHtml = dojo.byId('f_user').value;

            }


        },
        error: function (err) {
            alert(err);
        }


    });


}

function zmenaTKF(nazevPole, hodnota) {
    var pole = dojo.byId(nazevPole);


    if (pole) {
        var url = "/admin/ajax/nacti/prikaz/ajax_tkf_" + nazevPole;
        var id_ukolu = dojo.byId('f_id_ukolu').value;

        dojo.xhrPost({
            url: url,
            handleAs: 'text',
            sync: true,
            content: {
                command: 'ajax_tkf_' + nazevPole,
                value: hodnota,
                id_ukolu: id_ukolu,
                field: nazevPole
            },
            load: function (data) {
                pole.innerHTML = '';
                var ikona = '';
                var popisek = '';
                switch (hodnota) {
                case 10:
                    ikona = 'green';
                    popisek = 'Bez problémů';
                    break;
                case 20:
                    ikona = 'orange';
                    popisek = 'Problémy';
                    break;
                case 30:
                    ikona = 'red';
                    popisek = 'Velké problémy';
                    break;
                default:
                    ikona = '';
                    break;
                }

                pole.innerHTML = '<img src="/obrazky/' + ikona + '.bmp" width="20" height="20" title="' + popisek + '"/>';
                pole = dojo.byId('obr-' + nazevPole);
                if (pole) {
                    var d = new Date();
                    pole.src = '/obrazky/' + ikona + '.bmp';
                    pole.title = popisek + ', od: ' + d.getDate() + '.' + (d.getMonth() + 1) + '.' + d.getFullYear() + '(' + dojo.byId('f_user').value + ')';
                }
                pole = dojo.byId('autor');
                if (pole && dojo.byId('f_user')) {
                    pole.innerHtml = dojo.byId('f_user').value;

                }

            },
            error: function (err) {
                alert(err);
            }


        });




    }
}

function ulozNakladyPlan(e) {
    var url = "/admin/ajax/nacti/prikaz/ajax_tkf_naklady";
    var id_ukolu = dojo.byId('f_id_ukolu').value;

    if (Number(e) != e) {
        alert('Zadané náklady nejsou v číselném formátu!');
        return;
    }

    dojo.xhrPost({
        url: url,
        handleAs: 'text',
        sync: true,
        content: {
            command: 'ajax_tkf_naklady',
            value: e,
            id_ukolu: id_ukolu

        },
        load: function (data) {
            var pole = dojo.byId('autor');
            if (pole && dojo.byId('f_user')) {
                pole.innerHtml = dojo.byId('f_user').value;

            }

            if (dojo.byId('zisky_plan')) {
                var x = Number(dojo.byId('vynosy_plan').innerHTML) -  Number(dojo.byId('naklady_plan').innerHTML);
                dojo.byId('zisky_plan').innerHTML = x;
            }


        },
        error: function (err) {
            alert(err);
        }


    });

}

function ulozVynosyPlan(e) {
    var url = "/admin/ajax/nacti/prikaz/ajax_tkf_naklady";
    var id_ukolu = dojo.byId('f_id_ukolu').value;

    if (Number(e) != e) {
        alert('Zadané výnosy nejsou v číselném formátu!');
        return;
    }

    dojo.xhrPost({
        url: url,
        handleAs: 'text',
        sync: true,
        content: {
            command: 'ajax_tkf_vynosy',
            value: e,
            id_ukolu: id_ukolu

        },
        load: function (data) {
            var pole = dojo.byId('autor');
            if (pole && dojo.byId('f_user')) {
                pole.innerHtml = dojo.byId('f_user').value;

            }

            if (dojo.byId('zisky_plan')) {
                var x = Number(dojo.byId('vynosy_plan').innerHTML) -  Number(dojo.byId('naklady_plan').innerHTML);
                dojo.byId('zisky_plan').innerHTML = x;
            }


        },
        error: function (err) {
            alert(err);
        }


    });

}

function ulozHodinyPlan(e) {
    var url = "/admin/ajax/nacti/prikaz/ajax_tkf_hodiny";
    var id_ukolu = dojo.byId('f_id_ukolu').value;

    if (Number(e) != e) {
        alert('Zadané hodiny nejsou v číselném formátu!');
        return;
    }

    dojo.xhrPost({
        url: url,
        handleAs: 'text',
        sync: true,
        content: {
            command: 'ajax_tkf_hodiny',
            value: e,
            id_ukolu: id_ukolu

        },
        load: function (data) {
            var pole = dojo.byId('autor');
            if (pole && dojo.byId('f_user')) {
                pole.innerHtml = dojo.byId('f_user').value;

            }


        },
        error: function (err) {
            alert(err);
        }


    });

}

function inicializujTKF() {
    var eb = {}, datum_od = {}, datum_do = {};
    if (dojo.byId('poznamka_tkf')) {
        eb = new dijit.InlineEditBox({
            editor: 'dijit.form.Textarea',
            autoSave: false
        }, 'poznamka_tkf');
        dojo.connect(dijit.byId('poznamka_tkf'), 'save', ulozPoznamkuTkf);

        var datum = new Date(dojo.byId('f_datum_od').value);

        datum_od = new dijit.form.DateTextBox({
            name: 'datum_od',
            id: 'datum_od',
            value: datum,
            selector: 'date',
            disabled: false,
            style: 'width:100px;'
        }, dojo.byId('datum_od'));

        datum = new Date(dojo.byId('f_datum_do').value);

        datum_do = new dijit.form.DateTextBox({
            name: 'datum_do',
            id: 'datum_do',
            value: datum,
            selector: 'date',
            disabled: false,
            style: 'width:100px;'
        }, dojo.byId('datum_do'));

        //kontextova menu statusu
       //if (hl_kod_projektu.substr(0, 1).toUpperCase() != 'S') {

        var  pMenu_termin = new dijit.Menu({
            targetNodeIds: ["termin"]
        });

        pMenu_termin.addChild(new dijit.MenuItem({
            label: "Bez problémů",

            onClick: function () {
                zmenaTKF('termin', 10);
            }
        }));
        pMenu_termin.addChild(new dijit.MenuItem({
            label: "Problémy",

            onClick: function () {
                zmenaTKF('termin', 20);
            }
        }));

        pMenu_termin.addChild(new dijit.MenuItem({
            label: "Velké problémy",

            onClick: function () {
                zmenaTKF('termin', 30);
            }
        }));

        pMenu_termin.startup();


        var  pMenu_kvalita = new dijit.Menu({
            targetNodeIds: ["kvalita"]
        });

        pMenu_kvalita.addChild(new dijit.MenuItem({
            label: "Bez problémů",

            onClick: function () {
                zmenaTKF('kvalita', 10);
            }
        }));
        pMenu_kvalita.addChild(new dijit.MenuItem({
            label: "Problémy",

            onClick: function () {
                zmenaTKF('kvalita', 20);
            }
        }));

        pMenu_kvalita.addChild(new dijit.MenuItem({
            label: "Velké problémy",

            onClick: function () {
                zmenaTKF('kvalita', 30);
            }
        }));

        pMenu_kvalita.startup();



        var  pMenu_finance = new dijit.Menu({
            targetNodeIds: ["finance"]
        });

        pMenu_finance.addChild(new dijit.MenuItem({
            label: "Bez problémů",

            onClick: function () {
                zmenaTKF('finance', 10);
            }
        }));
        pMenu_finance.addChild(new dijit.MenuItem({
            label: "Problémy",

            onClick: function () {
                zmenaTKF('finance', 20);
            }
        }));

        pMenu_finance.addChild(new dijit.MenuItem({
            label: "Velké problémy",

            onClick: function () {
                zmenaTKF('finance', 30);
            }
        }));

        pMenu_finance.startup();
        //}
    }
}

function projektOnLoad() {
    //potrebne knihovny
    dojo.require("dijit.layout.TabContainer");

    //sestaveni kontejneru zalozek
    var popelnice = new dijit.layout.TabContainer({
        id: 'mainTabContainer',
        style: 'width:98%;height:80%;'
    }, dojo.byId('mainTabContainer'));

    var prehled = new dijit.layout.ContentPane({
        id: 'prehled',
        title: 'Přehled projektu',
        style: 'overflow: auto;',
        parseOnLoad: true,
        href: '/zdroje/projekty/detail/id/'  + dojo.byId('id_ukolu').value + '/cast/prehled'
    }, dojo.byId('prehled'));
    prehled.set('class', 'p10');
    dojo.connect(prehled, 'onLoad', 'inicializujPrehled');


    var lide = new dijit.layout.ContentPane({
        id: 'lide',
        title: 'Lidé na projektu',
        selected: false,
        style: 'overflow: auto;',
        href: '/zdroje/projekty/detail/id/'  + dojo.byId('id_ukolu').value + '/cast/lide',
        parseOnLoad: false
    }, dojo.byId('lide'));
    lide.set('class', 'p10');

    var tkf = {};
    if (ma_tkf) {
        tkf = new dijit.layout.ContentPane({
            id: 'tkf',
            title: 'Status TKF',
            selected: false,
            style: 'overflow: auto;',
            parseOnLoad: false,
            href: '/zdroje/projekty/detail/id/'  + dojo.byId('id_ukolu').value + '/cast/tkf'
        }, dojo.byId('tkf'));
        tkf.set('class', 'p10');
        dojo.connect(tkf, 'onLoad', 'inicializujTKF');
    }

    var smlouvy = new dijit.layout.ContentPane({
        id: 'smlouvy',
        title: 'Smlouvy',
        selected: false,
        style: 'overflow: auto;',
        parseOnLoad: false,
        href: '/zdroje/projekty/detail/id/'  + dojo.byId('id_ukolu').value + '/cast/smlouvy'
    }, dojo.byId('smlouvy'));
    smlouvy.set('class', 'p10');

    var zaznamy = new dijit.layout.ContentPane({
        id: 'zaznamy',
        title: 'Nástěnka',
        selected: false,
        style: 'overflow: auto;',
        parseOnLoad: false,
        href: '/zdroje/projekty/detail/id/'  + dojo.byId('id_ukolu').value + '/cast/zaznamy'
    }, dojo.byId('zaznamy'));
    zaznamy.set('class', 'p10');
    dojo.connect(zaznamy, 'onLoad', 'inicializujZaznamy');

    popelnice.addChild(prehled);
    popelnice.addChild(lide);

    if (ma_tkf) {
        popelnice.addChild(tkf);
    }
    popelnice.addChild(zaznamy);
    popelnice.addChild(smlouvy);

    popelnice.startup();
    popelnice.selectChild(start);
}

/* =====================================================================================================
   seznam_odvodu.js
   ===================================================================================================== */
function seznamOdvoduSubmit() {
	dojo.byId('ajax-loader-obr').style.display = 'inline';
	dojo.byId('seznam_form').submit();
	return false;
}

function dialogRozpor(event) {
    var dialog = dijit.byId('rozpor-dialog'), poradi = '';
    //vytvoreni samotneho dialogu
    if (!dialog) {
        //potrebne knihovny
        //xxdojo.require('dijit.form.Button');
        //xxdojo.require("dijit.form.Textarea");
        dialog = new dijit.Dialog({
            title: "Rozporování odvodu práce",
            id: "rozpor-dialog",
            onClose: function () {
                //alert('zaviram');
                return true;
            }
        }, dojo.byId("rozpor-dialog"));

        new dijit.form.Textarea({
            id: "rozptext",
            name: "rozptext",
            style: "width:700px;"
        }, dojo.byId('rozptext'));

        new dijit.form.Button({
            label: "Odešli e-mail",
            name: "rozpor-submit",
            id: "rozpor-submit",
            onClick: odesliRozpor
        }, dojo.byId('rozpor-submit'));
    }
    dijit.byId('rozptext').set('value', '');
    poradi = event.target.id.substr(2);
    dojo.byId('rozpor-poradi').value = poradi;
    dojo.byId('rozp-proj').innerHTML = dojo.byId('ku-' + poradi).innerHTML + ' - ' + dojo.byId('u-' + poradi).innerHTML;
    dojo.byId('rozp-popis').innerHTML = dojo.byId('p-' + poradi).innerHTML;
    dojo.byId('rozp-datum').innerHTML = dojo.byId('d-' + poradi).innerHTML;
    dojo.byId('rozp-zdroj').innerHTML = dojo.byId('z-' + poradi).innerHTML;
    dojo.byId('rozp-operace').innerHTML = dojo.byId('e_' + poradi).innerHTML;
    dojo.byId('rozp-narok').innerHTML = dojo.byId('n_' + poradi).innerHTML;
    dojo.byId('rozp-vykaz').innerHTML = dojo.byId('id-' + poradi).value;
    dojo.byId('rozporvykaz').value = dojo.byId('id-' + poradi).value;
    dialog.show();
}

function dialogVer(event) {
    var dialog = dijit.byId('ver-dialog'), poradi = '';
    //vytvoreni samotneho dialogu
    if (!dialog) {
        //potrebne knihovny
        //xxdojo.require('dijit.form.Button');
        dialog = new dijit.Dialog({
            title: "Verifikace odvodu práce",
            id: "ver-dialog"
        }, dojo.byId("ver-dialog"));

        new dijit.form.Button({
            label: "Verifikuj",
            name: "ver-submit",
            id: "ver-submit",
            onClick: verifikujOdvod
        }, dojo.byId('ver-submit'));
    }
    poradi = event.target.id.substr(2);
    naplnDialogVerifikace(poradi);
    dialog.show();
}

function dialogRS(event) {
    var dialog = dijit.byId('rozpory-seznam'), poradi = '';
    //vytvoreni samotneho dialogu
    if (!dialog) {
        //potrebne knihovny
        //xxdojo.require('dijit.form.Button');
        dialog = new dijit.Dialog({
            title: "Seznam rozporů odvodu práce",
            id: "rozpory-seznam"
        }, dojo.byId("rozpory-seznam"));
    }

    poradi = event.target.id.substr(4);
    naplnDialogRS(poradi);
    dialog.show();
}

function naplnDialogRS(poradi) {
    var vykaz = dojo.byId('id-' + poradi).value;
    dojo.byId('rs-doklad').innerHTML = vykaz;


    var ajax_running = dojo.byId('ajax-loader-obr');
    var cil = dojo.byId('rs-obsah'), obsah = '';
    var i = 0;
    cil.innerHTML = '<br/>';
    //nacitam.play();
    ajax_running.style.display = 'inline';
    //samotny ajax
    dojo.xhrGet({
        url: '/admin/ajax/nacti/prikaz/ajax_rozpory_odvodu/parametry/' + vykaz,
        handleAs: 'json',
        load: function (data) {
            var max = data.items.length;
            obsah += '<table class="datatable"><tr><th>P</th><th>Rozporuje</th><th>Vyjádření</th><th>Datum</th></tr>';
            for (i = 0; i < max; i++) {
                //console.debug('radek: ' + i);//#DBG;
                //console.debug(data.items[i]);//#DBG;
                obsah += '<tr>';
                obsah += '<td>' + data.items[i].p + '</td>';
                obsah += '<td>' + data.items[i].r + '</td>';
                obsah += '<td>' + data.items[i].v + '</td>';
                obsah += '<td>' + upravDatum(data.items[i].t, false) + '</td>';
                obsah += '</tr>';
            }
            obsah += '</table>';
            ajax_running.style.display = 'none';
            cil.innerHTML = obsah;
            //console.dir(data);//#DBG;
            return false;
        },
        // if any error occurs, it goes here:
        error: function (data) {
            console.warn("Chyba pri nacitani seznamu rozporu...", data);//#DBG;
            ajax_running.style.display = 'none';
            cil.innerHTML = 'Chyba při aktualizaci seznamu rozporů:' + data;
        }
    });
}

function naplnDialogVerifikace(poradi) {
    //  alert(dojo.byId('zdr-'+poradi).value);
    //console.debug('Poradi dialogu: ' + poradi);//#DBG;
    dojo.byId('ver-poradi').value = poradi;
    dojo.byId('ver-proj').innerHTML = dojo.byId('ku-' + poradi).innerHTML + ' - ' + dojo.byId('u-' + poradi).innerHTML;
    dojo.byId('ver-popis').innerHTML = dojo.byId('p-' + poradi).innerHTML;
    dojo.byId('ver-datum').innerHTML = dojo.byId('d-' + poradi).innerHTML;
    dojo.byId('ver-zdroj').innerHTML = dojo.byId('z-' + poradi).innerHTML;
    dojo.byId('ver-operace').innerHTML = dojo.byId('e_' + poradi).innerHTML;
    dojo.byId('ver-narok').innerHTML = dojo.byId('n_' + poradi).innerHTML;
    dojo.byId('ver-km').innerHTML = dojo.byId('k_' + poradi).innerHTML;
    dojo.byId('ver-naklady').innerHTML = dojo.byId('l_' + poradi).innerHTML;
    dojo.byId('ver_cas').value = dojo.byId('n_' + poradi).innerHTML;
    dojo.byId('ver-vykaz').innerHTML = dojo.byId('id-' + poradi).value;
    dojo.byId('vervykaz').value = dojo.byId('id-' + poradi).value;

    dojo.byId('odvod-zdroje').innerHTML = dojo.byId('zdr-' + poradi).value;
    dojo.byId('odvod-projekt').innerHTML = dojo.byId('prj-' + poradi).value;

    //zjisteni predchoziho
    var index = poradi - 1, mozno = false;
    while (index >= 0 && !mozno) {
        if (dojo.byId('g-' + index).value == '1') {
            mozno = true;
        } else {
            index--;
        }
    }
    if (mozno) {
        //console.debug('Poradi predchoziho: ' + index);//#DBG;
        dojo.byId('ver-predch').value = index;
        dojo.byId('ver-prev').disabled = false;
    } else {
        dojo.byId('ver-prev').disabled = true;
    }
    index = poradi - 0 + 1;
    mozno = false;
    while (index < dojo.byId('max-poradi').value - 0 && !mozno) {
        if (dojo.byId('g-' + index).value == '1') {
            mozno = true;
        } else {
            index++;
        }
    }
    if (mozno) {
        //console.debug('Poradi nasledujiciho: ' + index);//#DBG;
        dojo.byId('ver-dalsi').value = index;
        dojo.byId('ver-next').disabled = false;
    } else {
        dojo.byId('ver-next').disabled = true;
    }
    if (dojo.byId('g-' + poradi).value == '1') {
        dojo.byId('ver_cas').disabled = false;
    } else {
        dojo.byId('ver_cas').disabled = true;
    }
    if (dojo.byId('pripad-' + poradi).value + 0 > 1) {
        dojo.byId('ver-odkaz').innerHTML = dojo.byId('pripad-' + poradi).value;
        dojo.byId('ver-odkaz').href = '/ka/pripad/detail/id/' + dojo.byId('pripad-' + poradi).value;
    } else {
        dojo.byId('ver-odkaz').innerHTML = '';
        dojo.byId('ver-odkaz').href = '';
    }
}

function presunDialogVerifikace(event) {
    var akce = event.target.id;
    var poradi = 0;
    if (akce == 'ver-prev') {
        poradi = dojo.byId('ver-predch').value;
    } else if (akce == 'ver-next') {
        poradi = dojo.byId('ver-dalsi').value;
    }
    naplnDialogVerifikace(poradi);
}

function odesliRozpor(event) {
    //alert(event.id);
    var poradi = dojo.byId('rozpor-poradi').value;
    //alert(poradi);
    //alert(event.target.id + '-' + poradi);
    var ajax_running = dojo.byId('ajax-loader-obr');
    var oznameni = dojo.byId('oznameni');
    //console.debug("Odeslani pozadavku na odvadeni. Odpracovano: " + odprac.value);//#DBG;
    ajax_running.style.display = 'inline';
    dijit.byId('rozpor-dialog').hide();
    //samotny ajax
    dojo.xhrPost({
        url: '/admin/ajax/nacti',
        handleAs: 'text',
        load: function (data) {
            ajax_running.style.display = 'none';
            //console.dir(data);//#DBG;
            //oznacim vyjadreni k verifikaci
            dojo.byId('x-' + poradi).innerHTML = '<img id="obr-' + poradi + '" src="/obrazky/pozor.png" width="16" height="16" title="Rozporováno..."/>' + ' <img id="o-r-' + poradi + '" class="rs" src="/obrazky/rozpory.png" width="5" height="16" title="Vyjádření/rozpory k odvodu">';
            dojo.connect(dojo.byId('o-r-' + poradi), 'onclick', dialogRS);
        },
        // if any error occurs, it goes here:
        error: function (error, args) {
            console.warn("Chyba pri odvadeni prace...", error);//#DBG;
            ajax_running.style.display = 'none';
            oznameni.innerHTML = 'Chyba odvádění:' + args;
        },
        form: "f-rozpor"
    });
}

function verifikujOdvod(event) {
    //var doklad = '', polozka='', zdroj = '', pozadavek = '', pomoc = '',
    var poradi = dojo.byId('ver-poradi').value;
    //alert(event.target.id + '-' + poradi);
    var ajax_running = dojo.byId('ajax-loader-obr');
    var oznameni = dojo.byId('oznameni');
    ajax_running.style.display = 'inline';
    dijit.byId('ver-dialog').hide();
    //alert(dojo.byId('vervykaz').value.replace(/-/,'_'));
    //samotny ajax
    dojo.xhrGet({
        url: '/admin/ajax/nacti/prikaz/ajax_verifikuj_vykaz/parametry/' + dojo.byId('vervykaz').value + '---' + dojo.byId('ver_cas').value,
        handleAs: 'text',
        load: function (data) {
            dojo.byId('ver_cas').disabled = true;
            dojo.byId('g-' + poradi).value = '0';
            dojo.byId('ver_vyk_' + dojo.byId('vervykaz').value.replace(/-/, '_')).disabled = true;
            ajax_running.style.display = 'none';
            dojo.byId('obr-' + poradi).src = '/obrazky/odsouhlaseno.png';
            dojo.byId('f-' + poradi).src = '/obrazky/spacer.gif';
            dijit.byId('ver-dialog').show();
        },
        // if any error occurs, it goes here:
        error: function (error, args) {
            console.warn("Chyba pri verifikaci prace...", error);//#DBG;
            ajax_running.style.display = 'none';
            oznameni.innerHTML = 'Chyba verifikace:' + args;
        }
    });
}

function oznac(event) {
    dojo.query(".check").forEach(
        function (el) {
            if (event.target.id == 'zaskrtni') {
                el.checked = true;
            } else {
                el.checked = false;
            }
        }
    );
    return false;
}

function cursorOn(ev) {
    dojo.query('#' + ev.currentTarget.id + ' td').style('backgroundColor', 'silver');
}

function cursorOut(ev) {
    dojo.query('#' + ev.currentTarget.id + ' td').style('backgroundColor', dojo.style(ev.currentTarget, 'backgroundColor'));
}

function hromadnaVerifikace(ev) {
    dojo.stopEvent(ev);
    var pole = ev.target.id.split('_');
    //alert(pole[0]);
    dojo.byId('verifikace-akce').value = pole[0];
    dojo.byId('ajax-loader-obr').style.display = 'inline';
    dojo.byId('vervyk').submit();
}

function odvodyOnLoad() {
    //filtr na datum
    //odprac_datum
    var rozpad = dojo.byId('datum-do').value.split('-');
    var dnes = new Date(rozpad[0], rozpad[1] - 1, rozpad[2]);
    rozpad = dojo.byId('datum-od').value.split('-');
    var minule = new Date(rozpad[0], rozpad[1] - 1, rozpad[2]);
    new dijit.form.DateTextBox(
        {
            id: "filtr-datum-od",
            name: "filtr-datum-od",
            style: "width:8em;",
            value: minule,
            selector: 'date'
        }, dojo.byId('dojo-datum-od'));

    new dijit.form.DateTextBox(
        {
            id: "filtr-datum-do",
            name: "filtr-datum-do",
            style: "width:8em;",
            value: dnes,
            selector: 'date'/*,
            onChange: function(){
                    return seznamOdvoduSubmit();
            }*/
        }, dojo.byId('dojo-datum-do'));

     //prirazeni udalosti
     //rozporovani
    dojo.query(".rozpor").forEach(
        function (e) {
            dojo.connect(e, 'onclick', dialogRozpor);
        }
    );

    //verifikace
    dojo.query(".verify").forEach(
        function (e) {
            dojo.connect(e, 'onclick', dialogVer);
        }
    );

    //seznamy rozporu
    dojo.query(".rs").forEach(
        function (e) {
            dojo.connect(e, 'onclick', dialogRS);
        }
    );

    //cursorovane radky
    dojo.query("tr.cur").forEach(
        function (e) {
            dojo.connect(e, 'onmouseover', cursorOn);
            dojo.connect(e, 'onmouseout', cursorOut);
        }
    );

    dojo.connect(dojo.byId('ver-prev'), 'onclick', presunDialogVerifikace);
    dojo.connect(dojo.byId('ver-next'), 'onclick', presunDialogVerifikace);
    dojo.connect(dojo.byId('ver-submit'), 'onclick', verifikujOdvod);
    dojo.connect(dojo.byId('zaskrtni'), 'onclick', oznac);
    dojo.connect(dojo.byId('odskrtni'), 'onclick', oznac);
    dojo.connect(dojo.byId('verifikuj_vse'), 'onclick', hromadnaVerifikace);
    dojo.connect(dojo.byId('odverifikuj_vse'), 'onclick', hromadnaVerifikace);

    //zobrazeni
    dojo.byId('seznam-filtru').style.display = 'block';
    dojo.byId('odvody-prace').style.display = 'block';
}

/* =====================================================================================================
   kapacity.js
   ===================================================================================================== */

ka.kapacity = {};

// Create a new class
dojo.declare("ka.kapacity.plan", null, {
    rezervaceStore : {},
    kapacityProcesuData: {},
    dovolene: {},
    fondZdroju: {},
    zdroje: {},
    pracDny: {},

    // The constructor
    constructor: function (args) {
        dojo.safeMixin(this, args);
    },

    debugRezervaciPozadavku: function (poz) {
        this.rezervaceStore.query({hl_poz: poz, zdroj : "RHY"}).forEach(function(r){
        console.debug('Zdroj: ', r.zdroj, ', datum: ', r.datum, ', minut: ', r.minut_def);
        });
    },

    debugZiju: function () {
        console.debug('Kapacitni plan zije.');
    },

    provedRezervaci: function () {
        console.time('Provedeni rezervace');//#DBG;
        var id_poz = dojo.byId('rez-idpoz').innerHTML, akce = '', hodin = 0, pretizit = 0, respektovat_proces = 1, datum = '', termin = '', zdroj = dojo.byId('rez-zdroj').innerHTML, txt = [];
        console.debug('Jdu provadet rezervaci pozadavku ', id_poz);//#DBG;
        datum = dojo.byId('rez-datum').innerHTML.substr(6, 4) + '-' + dojo.byId('rez-datum').innerHTML.substr(3, 2) + '-' + dojo.byId('rez-datum').innerHTML.substr(0, 2);
        termin = datum;
        //zjisteni provadene akce
        if (dojo.byId('rez-rez-vp').checked) {
            akce = 'rez-vp'//volny cas procesu v dany den
        } else if (dojo.byId('rez-rez-vc').checked) {
            akce = 'rez-vc'//veskery volny cas dany den
            respektovat_proces = 0;
        } else if (dojo.byId('rez-rez-vs').checked) {
            akce = 'rez-vs'//pretizit o dany cas
            respektovat_proces = 0;
            pretizit = 1;
        } else if (dojo.byId('rez-rez-pk').checked) {
            akce = 'rez-pk'//cely pozadavek s respektovanim kapacity procesu
            termin = '2030-01-01';
        } else if (dojo.byId('rez-rez-pc').checked) {
            akce = 'rez-pc'//cely pozadavek bez respektovani kapacity procesu
            respektovat_proces = 0;
            termin = '2030-01-01';
        }
        datum = dojo.byId('rez-datum').innerHTML.substr(6, 4) + '-' + dojo.byId('rez-datum').innerHTML.substr(3, 2) + '-' + dojo.byId('rez-datum').innerHTML.substr(0, 2);
        if (akce != '') {
            hodin = dojo.byId(akce + '-cas').value;
            console.debug('Akce ', akce, ', cas: ', hodin, ', zdroj: ', zdroj, ', datum: ', datum, ', termin: ', termin, ', repektovat kap. procesu: ', respektovat_proces, ', pretizit: ', pretizit);//#DBG;
            //samotne provedeni rezervace
            //pole parametru
            /*predpokladane parametry: [id_poz]---[zdroj]---[datum]---[termin]---[pretizit]---[hodin]---[respektovat_kapacitu_procesu]*/
            txt = [id_poz, zdroj, datum, termin, pretizit, hodin, respektovat_proces];
            dojo.xhrGet({
                url: '/admin/ajax/nacti/prikaz/ajax_rezervace_casu/parametry/' + txt.join('---'),
                handleAs: 'json',
                load: dojo.hitch(this, function (data) {
                    //overim, ze nedoslo k chybe
                    if (data.ok != 1) {
                        throw 'Rezervace nebyla provedena. Důvod: ' + data.text_chyby;
                    } else {
                        console.debug('Rezervace provedena');//#DBG;
                        this.prekresliRezervace(data.rezervace);
                    }
                    console.timeEnd('Provedeni rezervace');//#DBG;
                    dijit.byId('dialog-rezervace').hide();
                    return false;
                }),
                error: function (error) {
                    txt = ['Chyba pri provedeni rezervace  - akce ', akce, ', cas: ', hodin, ', zdroj: ', zdroj, ', datum: ', datum, ', termin: ', termin, ', repektovat kap. procesu: ', respektovat_proces, ', pretizit: ', pretizit, 'chyba: ', error];
                    console.error(txt);//#DBG;
                    alert(txt.join(''));
                    console.timeEnd('Provedeni rezervace');//#DBG;
                    return false;
                }
            });
        }
    },

    prekresliDen: function(args) {
        console.debug('Prekresleni dne: ', args);//#DBG;
        //return true;
                        /*rezervace byla provedena, takze musim udelat nekolik veci
                            1) prikreslit cervenej obdelnik. pripadne upravit stavajici
                            2) pokud je tam i modrej obdelnik tak ho zmensit a prodlouzit nebo prikreslit na konci - jen v pripade, ze jsem rezervoval neco, co puvodne nebylo tohoto zdroje,
                                pokud to bylo tohoto zdroje, jen to de facto jen zmena barvy - co jsem pridal do rezervaci, ubylo v kapacitach
                            3) obarvit a upravit radek v rozpisu kapacit
                            4) obarvit pripadne bunku dle prekroceni kapacit na proces nebo celkoveho prekroceni
                            5) Upravit popis v tooltipu
                        */
        var puv_proc_rez = 0, puv_proc_kap = 0, obr_rez = {}, obr_kap = {}, fond = 0, bunka = {}, proc_rez = 0, sirka = 0, presun = 0, proc_kap = 0,
            prekrocen_fond = false, posledni_bunka = {}, dalsi_bunka = {}, max_poradi = 0, zdroj = args.zdroj, datum = args.datum.replace(/-/g, ''),
            hodin = dojo.number.round(Number(args.hodin), 2), id_poz = args.id_poz, zd = zdroj + '_' + datum,
            idRadku = zdroj + '-' + id_poz, radek = dojo.byId('rr-' + idRadku), rezTd = dojo.byId('rr-rez-' + idRadku), zapTd = dojo.byId('rr-zap-' + idRadku),
            zrSpan = dojo.byId('zr-' + idRadku), v_rozsahu = true;
        //====================== uprava bunky v den rezervace
        console.time('Prekresleni dne: ' + zdroj + '-' + datum + '-' + hodin + '-' + id_poz);//#DBG;
        console.debug('Hledane ID bunky: ', 'rozp-' + zdroj + '-' + datum.replace(/-/g, ''));//#DBG;
        bunka = dojo.byId('rozp-' + zdroj + '-' + datum.replace(/-/g, ''));
        if (this.fondZdroju[zd] == undefined) {
            v_rozsahu = false;
        }
        console.debug('Je v rozsahu: ', v_rozsahu, '---', this.fondZdroju[zd]);
        if (v_rozsahu) {//prekreslovani aktualni bunky  srezervaci se deje jen v pripade, ze je v zobrazovanem rozsahu
            fond = this.fondZdroju[zd].fond;
            puv_proc_rez = dojo.number.round((this.fondZdroju[zd].rez_pred * 100) / this.fondZdroju[zd].fond, 0);
            obr_rez = dojo.byId('graf-r-' + zdroj + '-' + datum.replace(/-/g, ''));
            obr_kap = dojo.byId('graf-k-' + zdroj + '-' + datum.replace(/-/g, ''));
            if (obr_kap) {
               puv_proc_kap = dojo.attr(obr_kap, 'proc');
            } else {//pokud obrazek pro kapacity neexistuje vytvorim ho - pozdeji s nim mozna budu operovat
               //pokud neexistuje, musi se vytvorit
               obr_kap = document.createElement("img");
               obr_kap.style.width = '0%';
               obr_kap.src = '/obrazky/modra.gif';
               obr_kap.style.height = '20px';
               obr_kap.id = 'graf-k-' + zdroj + '-' + datum.replace(/-/g, '');
               dojo.addClass(obr_kap, 'graf');
               dojo.place(obr_kap, bunka);
               dojo.connect(obr_kap, 'onclick', rozpis);
               dojo.connect(obr_kap, 'onmouseover', denInfo);
               dojo.attr(obr_kap, 'je', '0')
               dojo.attr(obr_kap, 'proc', '0');
            }
            console.debug('Puvodni procento rezervaci: ', puv_proc_rez, '%, puvodni procento kapacit: ', puv_proc_kap, '%');//#DBG;
            proc_rez = dojo.number.round((Number(hodin) * 60 * 100) / Number(fond), 2);
            //spocitam vyslednou sirku rezervaci
            sirka = dojo.number.round(Number(puv_proc_rez) + Number(proc_rez), 0);
            if (sirka > 100) {
               sirka = 100;
               prekrocen_fond = true;
            }
            //pokud existuje modrej ctverecek, updavim jeho velikost
            // pokud neexistuje, urcite uz neni zadnej za nim - kapacitni plan se vypisuje kontinualne zleva
            if (puv_proc_kap > 0 && !dojo.hasClass(radek, 'plan-vyvoje')) {// u planu vuvoje se neprsunuje mezi kapacitami
               //upravim puvodni procento kapacit o procento menenych rezervaci
               proc_kap = puv_proc_kap - proc_rez;
               //upravim pripadne prekrocene meze
               if (proc_kap < 0) {
                   proc_kap = 0;
                   presun = (-1) * dojo.number.round(((Number(puv_proc_kap) - Number(proc_rez)) * 60) / 100, 2); //tolik minut kapacit musim ubrat na konci
               } else if (proc_kap > 100) {
                   proc_kap = 0;
                   presun = (-1) * dojo.number.round(((Number(puv_proc_kap) - Number(proc_rez)) * 60) / 100, 2); //tolik minut kapacit musim pridat na konci
               } else {
                   presun = 0;//jen presun rezervaci a kapacit v ramci daneho dne
               }
               //pokud je to nahodou pres 100%, tak je to jen zaokrouhleni a upravim to
               if (Number(sirka) + Number(proc_kap) > 100) {
                   proc_kap = 100 - Number(sirka);
               }
               //a uopravim a nastavim obrazek kapacit
               obr_kap.style.width = proc_kap + '%';
               //a nastavim novou "puvodni" sirku kapacit pro opakovane rezervace
               console.debug('Nova sirka kapacit: ', proc_kap, '%');//#DBG;
               dojo.attr(obr_kap, 'proc', proc_kap);
            }
            if (puv_proc_kap <= 0 && !dojo.hasClass(radek, 'plan-vyvoje')) {// neni plan vyvoje, ale v dany den nebyl kapacitni rozpis - v takovem pripade musim upravit kapacitni rozpis na konci
                 presun = (-1) * Number(hodin) * 60;//prekreslovane minuty - cast z nich bude mozna treba prevest na zmenu kapacit
            }
            //pokud uz existuje cervenej ctverecek, tak ho upravim
            if (obr_rez) {
               if (dojo.number.round(Number(puv_proc_rez) + Number(proc_rez), 0) > 100) {
                   obr_rez.style.width = '100%';
                   console.debug('Zmena velikosti symbolu rezervaci na', 100, '%');//#DBG;
               } else {
                   obr_rez.style.width = dojo.number.round(Number(puv_proc_rez) + Number(proc_rez), 0) + '%';
                   console.debug('Zmena velikosti symbolu rezervaci na', dojo.number.round(Number(puv_proc_rez) + Number(proc_rez), 0), '%');//#DBG;
               }
               //a pokud uz nezbylo z rezervace tohoto pozadavku, odeberu tridu
               if (false/*jak to poznam?*/) {
                   dojo.removeClass(obr_rez, 'r-' + zdroj + '-' + id_poz);
               }
            } else {
               //pokud neexistuje, musi se vytvorit
               obr_rez = document.createElement("img");
               obr_rez.style.width = sirka + '%';
               obr_rez.src = '/obrazky/cervena.gif';
               obr_rez.style.height = '20px';
               obr_rez.id = 'graf-r-' + zdroj + '-' + datum.replace(/-/g, '');
               dojo.addClass(obr_rez, 'graf');
               dojo.addClass(obr_rez, 'r-' + zdroj + '-' + id_poz);
               dojo.place(obr_rez, bunka, 'first');
               dojo.connect(obr_rez, 'onclick', rozpis);
               dojo.connect(obr_rez, 'onmouseover', denInfo);
               //nastaveni atributu, jestlu uz je tooltip - bud podle kapacitniho obrazku nebo neni
               dojo.attr(obr_rez, 'je', '0')
            }
            //a nastavim novou "puvodni" sirku rezervaci pro opakovane rezervace
            console.debug('Nova sirka rezervaci: ', sirka, '%');//#DBG;
            dojo.attr(obr_rez, 'proc', sirka);
            this.fondZdroju[zd].rez_pred = dojo.number.round(sirka * fond / 100, 0);
            this.fondZdroju[zd].rez_po = dojo.number.round(sirka * fond / 100, 0);
            //pokud je celkove prekrocen rezervacemi fond dne, obarvit pozadi bunky
            if (prekrocen_fond) {
               bunka.style.backgroundColor = '#ff8973';
               bunka.title = 'Pozor, zdroj je celkově přetížen!';
               console.debug('Prekrocen celkovy fond zdroje.');//#DBG;
            } else if (Number(hodin) > Number(dojo.byId('rez-vp-cas').value)) {//to je cas vraceny na proces, pokud je tdy rezervovano vic, musi byt pretizen proces
               bunka.style.backgroundColor = 'yellow';
               bunka.title = 'Pozor, zdroj je přetížen v rámci některého procesu!';
               console.debug('Prekroceni kapacity procesu: ', Number(hodin), ' > ', Number(dojo.byId('rez-vp-cas').value));//#DBG;
            } else {
               bunka.style.backgroundColor = '#f9f9f9';
               bunka.title = '';
               console.debug('Fond v poradku.');//#DBG;
            }
        } else {//pokud dana bunka neni zobrazena, naplnim jen presun
            if (!dojo.hasClass(radek, 'plan-vyvoje')) {// neni plan vyvoje - v takovem pripade musim upravit kapacitni rozpis na konci
                 presun = (-1) * Number(hodin) * 60;//prekreslovane minuty - cast z nich bude mozna treba prevest na zmenu kapacit
            }
        }
        //ted upravim radek v rozpisu rezervaci
        console.debug('Pokracuji...');//#DBG;
        //nastavim novou dobu rezervaci
        rezTd.innerHTML = dojo.number.round(Number(rezTd.innerHTML), 2) + hodin;
        //pokud radek predtoim nepredstavoval rezervace, pridej prisuznou tridu
        if (Number(rezTd.innerHTML) != 0) { //ma jeste nejake rezervace
            dojo.removeClass(radek, 'fronta-prace');
            dojo.addClass(radek, 'rozpad-rezervaci');
            if (zrSpan) {
                zrSpan.style.display = '';
            }
        } else {
            dojo.addClass(radek, 'fronta-prace');
            dojo.removeClass(radek, 'rozpad-rezervaci');
            if (zrSpan) {
                zrSpan.style.display = 'none';
            }
        }
        //zapocitano se meni jen u pozadavku vyvoje, protoze s nich se zobrazuje jen rezervovana cast, u ostatnich je to jen presun
        if (dojo.hasClass(radek, 'plan-vyvoje')) {
            zapTd.innerHTML = dojo.number.round(Number(zapTd.innerHTML), 2) + hodin;
        }
        //a pokud jsem prerezervoval kapacitu, zohlednim to
        if (Number(rezTd.innerHTML) > Number(zapTd.innerHTML)) {
            zapTd.innerHTML = rezTd.innerHTML;
        }
        //a jeste ovladace pro zvyrazneni rezervace
        dojo.connect(radek, 'onmouseover', zvyraznitRezervaceOn);
        dojo.connect(radek, 'onmouseout', zvyraznitRezervaceOff);
        //================== pokud je to potreba, tak uprava bunky kam ma padnout presun kapacit - a to tak dlouho, dokud je co presunovat
        // a to jen v pripade, ze se ma neco presunovat
        var upravovana = {}, rozp = [], indexPole = -1, antiUzlin = 0;
        while (presun != 0 && antiUzlin < 80) {
            antiUzlin++;
            console.debug('Jdu hledat posledni: ', presun);//#DBG;
            //ted pouziju globalni promenne
            max = 0;
            posledni = {};
            //musim najit posledni bunku, kde jsou kapacity a prvni bez kapacit
            //nejprve najdu posledni bunku, ve ktere je nejaky rozpis kapacit
            dojo.query('.prac-' + zdroj).forEach( //bunky pracovnich dni tohoto zdroje
                function (n) {
                    var rozpad = n.id.split('-');
                    if (dojo.byId('graf-k-' + rozpad[1] + '-' + rozpad[2])) {//ma rozpis kapacit
                        if (dojo.attr(dojo.byId('graf-k-' + rozpad[1] + '-' + rozpad[2]), 'proc') > 0 && Number(dojo.attr(n, 'poradi')) > max) {
                            max = Number(dojo.attr(n, 'poradi'));
                            //console.debug('Bunka ', n.id, ' procento: ', dojo.attr(dojo.byId('graf-k-' + rozpad[1] + '-' + rozpad[2]), 'proc'));//#DBG;
                            posledni = n.id;
                        }
                    }
                }
            );
            if (posledni_bunka) { //byla nalezena posledni bunka s nejakym rozpisem
                console.debug('Posledni nalezena bunka: ', posledni);
                upravovana = dojo.byId(posledni);
                rozp = posledni.split('-');
                indexPole = dojo.indexOf(this.pracDny, rozp[2]);
                if (dojo.attr(dojo.byId('graf-k-' + rozp[1] + '-' + rozp[2]), 'proc') >= 100) {//uz je vycerpanej fond, zkusim dalsi bunku
                    //tento problem nastava jen v pripade kladne rezervace. U zaporne mi 100% nevadi. Vadilo by mi 0%, ale to z principu nemuze nastata
                    var nalezeno = false;
                    while (!nalezeno && indexPole <= this.pracDny.length) {
                        indexPole++;
                        nalezeno = this.fondZdroju[rozp[1] + '_' + this.pracDny[indexPole]].fond > 0;
                    }
                    if (!nalezeno) {
                        indexPole = -1;
                    }
                }
            } else {
                console.debug('Nebyla nalezena posledni bunka kapacitou.');
                //v tom pripade zacnu na zacatku
                if (this.pracDny.length > 0) {
                    indexPole = 0;
                } else {
                    indexPole = -1;
                }
            }
            //tak ted uz snad mam spravnou bunku, ktera me zajima
            var proc_kapacit = 0, proc_rezervaci = 0, vysledna_kapacita = 0, volna_kapacita = 0;
            if (indexPole >= 0) {//muzu opravovat
                //pokud obrazek kapacit neexistuje = presunul jsem se na nasledujici, tak ho vytvorim
                if (!dojo.byId('graf-k-' + rozp[1] + '-' + this.pracDny[indexPole])) {
                    var upr_kap = document.createElement("img");
                    upr_kap.style.width = '0%';
                    upr_kap.src = '/obrazky/modra.gif';
                    upr_kap.style.height = '20px';
                    upr_kap.id = 'graf-k-' + rozp[1] + '-' + this.pracDny[indexPole];
                    dojo.addClass(upr_kap, 'graf');
                    dojo.place(upr_kap, dojo.byId('rozp-' + rozp[1] + '-' + this.pracDny[indexPole]));
                    dojo.connect(upr_kap, 'onclick', rozpis);
                    dojo.connect(upr_kap, 'onmouseover', denInfo);
                    dojo.attr(upr_kap, 'je', '0')
                    dojo.attr(upr_kap, 'proc', '0');
                } else {
                    upr_kap = dojo.byId('graf-k-' + rozp[1] + '-' + this.pracDny[indexPole]);
                }
                console.info('Upravovana bunka ma poradi ', indexPole, ' a datum ', this.pracDny[indexPole], ', fond: ', this.fondZdroju[rozp[1] + '_' + this.pracDny[indexPole]].fond);//#DBG;
                proc_kapacit = Number(dojo.attr(dojo.byId('graf-k-' + rozp[1] + '-' + this.pracDny[indexPole]), 'proc'));
                if (dojo.byId('graf-r-' + rozp[1] + '-' + this.pracDny[indexPole])) {
                    proc_rezervaci = dojo.attr(dojo.byId('graf-r-' + rozp[1] + '-' + this.pracDny[indexPole]), 'proc');
                }
                volna_kapacita = dojo.number.round(((100 - Number(proc_kapacit) - Number(proc_rezervaci)) * Number(this.fondZdroju[rozp[1] + '_' + this.pracDny[indexPole]].fond)) / 100, 2);
                console.debug('Puvodni procento kapacit: ', proc_kapacit, ', procento rezervacit: ', proc_rezervaci, ', volna kapacita: ', volna_kapacita);//#DBG;
                if (volna_kapacita < 0) {
                    volna_kapacita = 0
                };
                if (volna_kapacita >= presun) { //vsechno se vleze do tohoto dne
                    vysledna_kapacita = presun;
                    presun = 0;
                } else {
                    vysledna_kapacita = volna_kapacita;
                    presun = presun - volna_kapacita;
                }
                proc_kapacit = proc_kapacit + dojo.number.round((vysledna_kapacita * 100) / Number(this.fondZdroju[rozp[1] + '_' + this.pracDny[indexPole]].fond), 0);
                if ((Number(proc_kapacit) + Number(proc_rezervaci)) > 100) {
                    proc_kapacit = 100 - proc_rezervaci;
                }
                upr_kap.style.width = proc_kapacit + '%';
                dojo.attr(upr_kap, 'proc', proc_kapacit);
                console.debug('Datum: ', this.pracDny[indexPole], ', uprava o ', vysledna_kapacita, ', zbyva ', presun, 'vysledne % kapacit: ', proc_kapacit);//#DBG;
                //presun = 0;
            } else {//nenasel jsem, co bych upravil, tak vynuluju presun a hotovo
                console.warn('Nebyla nalezena bunka pro upravu kapacit!');
                presun = 0;
            }
        }
        if (antiUzlin > 78) {
            console.error('Hledani volne bunky se nejspis zacyklilo!');//#DBG;
        }
        console.timeEnd('Prekresleni dne: ' + zdroj + '-' + datum + '-' + hodin + '-' + id_poz);//#DBG;
    },

    /**
     * Funkce pro jednotlive dotcene dny zavola prekresleni daneho dne
     *
     * @param args - pole objektu vracene AJAXem pro rezervaci, melo by obsahovat radky rotcenych dnu
     * a v nich vzdy alespon zdroj, datum{YYYYMMDD], ID pozadavku a hodin nove zarezervovanych
     */
    prekresliRezervace: function (args) {
        //projdu predane pole a zavolam prekresleni jednotlivych dnu
        dojo.forEach(args, dojo.hitch(this, function(item, index){
            //console.warn('kreslim', args, this);//#DBG;
            this.prekresliDen(item);
        }));
    },

    /**
     * Zruseni rezervaci daneho pozadavku - onclick event handler spanu "zruš rezervace"
     */
    zrusRezervaceInfo: function (e) {
        console.time('Dialog zruseni rezervaci');//#DBG;
        console.debug('Zruseni rezervaci ID: ', e.target.id);
        var dialog = dijit.byId('dialog-zrus-rezervace'), rozpad = e.target.id.split('-'), zdroj = rozpad[1], id_poz = rozpad[2], pars = [];
        dojo.byId('zrez-idpoz').innerHTML = id_poz;
        pars = [id_poz, zdroj];
        dojo.xhrGet({
            url: '/admin/ajax/nacti/prikaz/ajax_zrus_rezervace_info/parametry/' + pars.join('---'),
            handleAs: 'json',
            load: dojo.hitch(this, function (data) {
                //zruseni tela tabulky
                dojo.destroy(dojo.byId('zrez-telo-tabulky'));
                dojo.create('tbody', {id: 'zrez-telo-tabulky'}, dojo.byId('zrez-tabulka'));
                //odskrtnuti comba pro hromadne akce
                dojo.byId('zrez-check-vse').checked = false;
                //znovu vytvoreni tabulky s rezervacemi
                console.log('Nalezene rezervace: ', data.rezervace);
                dojo.forEach(data.rezervace, function (item) {
                    console.debug('Vytvoreni radku tabulky pro ', item.id_poz + '-' + item.datum);//#DBG;
                    var elTbody = {}, elTr = {}, elCheck = {}, elTdCheck = {}, elTdHod = {};
                    elTbody = dojo.byId('zrez-telo-tabulky');
                    elTr = dojo.create('tr', {}, elTbody);
                    elTdCheck = dojo.create('td', {}, elTr);
                    elCheck = dojo.create('input', {type: 'checkbox', name: 'zrez-' + item.zdroj + '-' + item.id_poz + '-' + item.datum, id: 'zrez-' + item.zdroj + '-'  + item.id_poz + '-' + item.datum}, elTdCheck);
                    dojo.addClass(elCheck, 'zrez-check');
                    dojo.create('td', {innerHTML: ka.kratkeDatumCesky(item.datum)}, elTr);
                    elTdHod = dojo.create('td', {innerHTML: dojo.number.round(Number(item.minut) / 60, 2)}, elTr);
                    dojo.addClass(elTdHod, 'vpr');
                }, this);
                console.timeEnd('Dialog zruseni rezervaci');//#DBG;
                dialog.show();
                return false;
            }),
            error: function (error) {
                txt = ['Chyba pri ruseni rezervaci: ', error];
                console.error(txt.join(''));//#DBG;
                alert(txt.join(''));
                console.timeEnd('Zruseni rezervaci');//#DBG;
                return false;
            }
        });
    },

    rezervaceKeZruseni: '',
    /**
     * Funkce provede samotne zruseni rezervaci.
     * Seznam rezervaci ke zkuseni zjisti z checkboxu s tridou zrez-check
     */
    zrusRezervace: function() {
        console.time('Zruseni rezervaci');//#DBG;
        var dialog = dijit.byId('dialog-zrus-rezervace');
        dojo.query('.zrez-check').forEach(dojo.hitch(this, function (item){
            var rozpad = [];
            if (item.checked) {
                rozpad = item.id.split('-');
                this.rezervaceKeZruseni += rozpad[1] + '-' + rozpad[2] + '-' + rozpad[3] + 'xx';
            }
        }));
        console.debug('Retezec rezervaci ke zruseni ', this.rezervaceKeZruseni);//#DBG;
        dojo.xhrGet({
            url: '/admin/ajax/nacti/prikaz/ajax_zrus_rezervace/parametry/' + this.rezervaceKeZruseni,
            handleAs: 'json',
            load: dojo.hitch(this, function (data) {
                console.debug('Vystup z ruseni rezervaci: ', data);//#DBG;
                this.prekresliRezervace(data.rezervace);
                //dijit.byId('dialog-rezervace').hide();
                //vymazani rezervaci ke zruseni
                this.rezervaceKeZruseni = '';
                dialog.hide();
                console.timeEnd('Zruseni rezervaci');//#DBG;
                return false;
            }),
            error: function (error) {
                txt = ['Chyba pri ruseni rezervaci: ', error];
                console.error(txt);//#DBG;
                alert(txt.join(''));
                //vymazani rezervaci ke zruseni
                this.rezervaceKeZruseni = '';
                dialog.hide();
                console.timeEnd('Zruseni rezervaci');//#DBG;
                return false;
            }
        });
    },
    /**
     * pokud se v dialogu pro zadani rezervace rucne zmeni nejakej editovatelnej cas, tak se rovnou prepne radio k tomuto bodu
     */
    autoFocusDialogu : function(e) {
        var rozpad = e.target.id.split('-');
        var radio = dojo.byId('rez-' + rozpad[0] + '-' + rozpad[1]);
        if (radio) {
            radio.checked = true;
        }
    }

});

ka.kapacity.planVystupy = {
	prepniZobrazeni: function(e) {
		var id_prvku = e.target.id, obsah = dojo.byId(id_prvku + '-obsah'), ovladac = dojo.byId(id_prvku + '-ovladac');
		if (obsah.style.display == 'none') {
			obsah.style.display = '';
			e.target.innerHTML = 'Skryj CSV';
		} else {
			obsah.style.display = 'none';
			e.target.innerHTML = 'Zobraz CSV';
		}
	},
	
	prepniZobrazeniDat: function(e) {
		if (dojo.attr(e.target, 'zobrazeno') == 'ano') {
			dojo.query("tr.data").style('display', 'none');
			dojo.attr(e.target, 'zobrazeno', 'ne');
			e.target.innerHTML = '[Zobraz položky]';
		} else {
			dojo.query("tr.data").style('display', '');
			dojo.attr(e.target, 'zobrazeno', 'ano');
			e.target.innerHTML = '[Skryj položky]';
		}
	},
	
	prepniZobrazeniNadpisu: function(e) {
		if (dojo.attr(e.target, 'zobrazeno') == 'ano') {
			dojo.query("tr.sekce").style('display', 'none');
			dojo.attr(e.target, 'zobrazeno', 'ne');
			e.target.innerHTML = '[Zobraz nadpisy]';
		} else {
			dojo.query("tr.sekce").style('display', '');
			dojo.attr(e.target, 'zobrazeno', 'ano');
			e.target.innerHTML = '[Skryj nadpisy]';
		}
	},
	
	odkaz: function(e) {
		var adresa = dojo.attr(e.target, 'cil') + '/datum_od/' + dijit.byId('datum-od').get('displayedValue') + '/datum_do/' + dijit.byId('datum-do').get('displayedValue');
		if (dojo.byId('rozpad') && dojo.byId('rozpad').checked) {
			adresa += '/rozpad/ano';
		} else {
			adresa += '/rozpad/ne';
		}
		if (dojo.byId('mezisoucty') && dojo.byId('mezisoucty').checked) {
			adresa += '/mezisoucty/ano';
		} else {
			adresa += '/mezisoucty/ne';
		}
		console.debug(adresa);//#DBG;
		dojo.attr(e.target, 'href', adresa);
		//dojo.stopEvent(e);
	}
	
};

function planVystupyOnLoad() {
	dojo.query(".zaviraci").connect('onclick', ka.kapacity.planVystupy, ka.kapacity.planVystupy.prepniZobrazeni);
	dojo.query(".prepni-data").connect('onclick', ka.kapacity.planVystupy, ka.kapacity.planVystupy.prepniZobrazeniDat);
	dojo.query(".prepni-nadpisy").connect('onclick', ka.kapacity.planVystupy, ka.kapacity.planVystupy.prepniZobrazeniNadpisu);
	dojo.query(".pvodkaz").connect('onclick', ka.kapacity.planVystupy, ka.kapacity.planVystupy.odkaz);
	if (dojo.byId('datum-od') && dojo.byId('datum-do')) {
		var xdatum = dojo.byId('datum-od').value;
		var dat = new Date(xdatum.substr(0, 4), Number(xdatum.substr(4, 2)) - 1, xdatum.substr(6, 2));
		var dj_datum_od = new dijit.form.DateTextBox(
				{
					id: "datum-od",
					name: "datum-od",
					style: "width:8em;"
				},
				dojo.byId('datum-od')
			);
		dj_datum_od.set('value', dat);
		xdatum = dojo.byId('datum-do').value;
		dat = new Date(xdatum.substr(0, 4), Number(xdatum.substr(4, 2)) - 1, xdatum.substr(6, 2));
		var dj_datum_do = new dijit.form.DateTextBox(
				{
					id: "datum-do",
					name: "datum-do",
					style: "width:8em;"
				},
				dojo.byId('datum-do')
			);
		dj_datum_do.set('value', dat);
	}
}

function nactiInfo() {
    dojo.xhrGet({
        url: '/admin/ajax/nacti/prikaz/ajax_hromadne_maily_info/parametry/' + dojo.byId('id-firmy').value + '---' + dojo.byId('pripad-od').value + '---' + dojo.byId('pripad-do').value,
        handleAs: 'json',
        load: function (data) {
            console.debug(data);//#DBG;
            var pocet = data.pocet;
            dojo.byId('celkem').innerHTML = pocet;
            dojo.byId('provedeno').innerHTML = 0;
            dojo.byId('proc').innerHTML = 0;
            dojo.byId('je-info').value = '1';
            dojo.byId('provadet').value = '1';
            dojo.byId('id-akt').innerHTML = '';
            dojo.byId('proved').innerHTML = '|Proveď|';
        },
        // if any error occurs, it goes here:
        error: function (error) {
            console.warn("Chyba pri zjisteni existence popisu k projektu...", error);//#DBG;
        }
    });
}

function rozpis(e) {
    var pom = e.target.id.split('-');
    var zdroj = pom[2];
    var vnitrni = dojo.byId('vnitrni-' + zdroj), rozpis_prv = dojo.byId('rozpis-' + zdroj), nacteno = dojo.byId('nacteno-' + zdroj), hlaska = dojo.byId('rozpis-hlaska-' + zdroj),
        tabulka = dojo.byId('rozpis-tab-' + zdroj);
    var kalkulace = 0, rezervace = 0, odvody = 0, zapocteno = 0;
    console.debug('Rozpis zdroje ', zdroj, 'jiz nacten: ', nacteno.value, 'target.id: ', e.target.id);//#DBG;
    if (nacteno.value == '0') {
        //vnitrni.innerHTML = '<b>Načítám data...</b>';
        hlaska.style.display = '';
        //neni nacten aktualni prehled, musim ho nacist
        dojo.xhrGet({
            url: '/admin/ajax/nacti/prikaz/ajax_plan_kapacit_zdroje/parametry/' + zdroj + '---' + dojo.byId('datum-od').value + '---' + dojo.byId('datum-do').value,
            handleAs: 'json',
            load: function (data) {
                var rez = '', fronta = '', txt = '', uvod = '', pocet = 0, barva = '', i = 0;
                pocet = data.length;
                for (i = 0; i < pocet; i++) {
                    kalkulace += Number(data[i].kalkulace);
                    rezervace += Number(data[i].rez);
                    odvody += Number(data[i].odvody);
                    zapocteno += Number(data[i].zapocteno);
                    if (Number(data[i].rez_ter) > 0) {
                        rez += txt;
                    } else {
                        fronta += txt;
                    }
                }
                dojo.byId('rozpis-tab-kalkulace-celkem-' + zdroj).innerHTML = Math.round(Number(kalkulace) * 100, 2) / 100;
                dojo.byId('rozpis-tab-rezervace-celkem-' + zdroj).innerHTML = Math.round(Number(rezervace) * 100, 2) / 100;
                dojo.byId('rozpis-tab-odvody-celkem-' + zdroj).innerHTML = Math.round(Number(odvody) * 100, 2) / 100;
                dojo.byId('rozpis-tab-zapocteno-celkem-' + zdroj).innerHTML = Math.round(Number(zapocteno) * 100, 2) / 100;
                // vytvoreni zdroje pro drag and drop
                zdrojeDnd[zdroj] = vytvorZdrojDnd('rozpis-tab-' + zdroj, data);
                dojo.connect(zdrojeDnd[zdroj], 'onDndDrop', polozeno);
                dojo.query("tr.rozpad-rezervaci").forEach(
                    function (f) {
                        dojo.connect(f, 'onmouseover', zvyraznitRezervaceOn);
                        dojo.connect(f, 'onmouseout', zvyraznitRezervaceOff);
                    }
                );
                tabulka.style.display = '';
                hlaska.style.display = 'none';
                nacteno.value = '1';
            },
            // if any error occurs, it goes here:
            error: function (error) {
                console.warn("Chyba pri planu kapacit zdroje ", zdroj, ':' , error);//#DBG;
            }
        });
    } else {
        tabulka.style.display = '';
        hlaska.style.display = 'none';
    }
    if (rozpis_prv.style.display == 'block') {
        //uz je zobrazeno, jen zavru
        rozpis_prv.style.display = 'none';
        //e.target.title = 'Kliknutím zobrazíte rozpis...';
    } else {
        //zobrazim
        rozpis_prv.style.display = 'block';
        //e.target.title = 'Kliknutím zavřete rozpis...';
    }
    //alert(zdroj);
}

function vytvorUzelDndRozpis(item, hint) {
    /**
     * vytvori jeden uzel pro Drag and Drop = radek tabulky
     */
    var tr = document.createElement("tr");
    var idpozTd = document.createElement("td");
    var projektTd = document.createElement("td");
    var shnameTd = document.createElement("td");
    var kalkulaceTd = document.createElement("td");
    var rezervaceTd = document.createElement("td");
    var odvodyTd = document.createElement("td");
    var zapoctenoTd = document.createElement("td");
    var ovladaniTd = document.createElement("td");
    var ovladaniSpan = document.createElement("span");
    var odkaz = document.createElement("a");
    var idRadku = item.zdroj + '-' + item.id_poz;

    //idpoz
    odkaz.href = '/ka/pripad/detail/id/' + item.id_poz;
    odkaz.appendChild(document.createTextNode(item.id_poz));
    idpozTd.appendChild(odkaz);
    tr.appendChild(idpozTd);

    //projekt
    projektTd.appendChild(document.createTextNode(item.projekt));
    tr.appendChild(projektTd);

    //shname
    shnameTd.appendChild(document.createTextNode(item.shname));
    tr.appendChild(shnameTd);

    //kalkulace
    kalkulaceTd.appendChild(document.createTextNode(dojo.number.round(Number(item.kalkulace))));
    dojo.addClass(kalkulaceTd, 'vpr');
    tr.appendChild(kalkulaceTd);

    //rezervace
    rezervaceTd.appendChild(document.createTextNode(dojo.number.round(Number(item.rez))));
    rezervaceTd.id = 'rr-rez-' + idRadku;
    dojo.addClass(rezervaceTd, 'vpr');
    tr.appendChild(rezervaceTd);

    //odvody
    odvodyTd.appendChild(document.createTextNode(dojo.number.round(Number(item.odvody))));
    dojo.addClass(odvodyTd, 'vpr');
    tr.appendChild(odvodyTd);

    //zapocteno
    zapoctenoTd.appendChild(document.createTextNode(dojo.number.round(Number(item.zapocteno))));
    zapoctenoTd.id = 'rr-zap-' + idRadku;
    dojo.addClass(zapoctenoTd, 'vpr');
    tr.appendChild(zapoctenoTd);

    //ovladani
    ovladaniSpan.id = 'zr-' + idRadku;
    dojo.addClass(ovladaniSpan, 'zrus-rez');
    if (item.obl_1 != 'PV' || uzivatel_plan_vyvoje >= 20) {
        ovladaniSpan.appendChild(document.createTextNode('zruš rezervace'));
        dojo.connect(ovladaniSpan, 'onclick', planKapacit, planKapacit.zrusRezervaceInfo);
    }
    if (dojo.number.round(Number(item.rez), 0) == 0) {
        ovladaniSpan.style.display = 'none';
    }
    ovladaniTd.appendChild(ovladaniSpan);
    tr.appendChild(ovladaniTd);

    if (Number(item.rez_ter) > 0) {
        tr.id = 'rr-' + idRadku;
        dojo.addClass(tr, 'rozpad-rezervaci');
    } else {
        tr.id = 'rr-' + idRadku;
        dojo.addClass(tr, 'fronta-prace');
    }

    if (item.obl_1 == 'PV') {
        dojo.addClass(tr, 'plan-vyvoje');
    }
    if (item.obl_1 == 'PV' && uzivatel_plan_vyvoje < 20) {
        return {node: tr, data: item, type: 'xxx-pv'};
    } else {
        return {node: tr, data: item, type: [item.zdroj]};
    }

};

function vytvorZdrojDnd(node, data) {
    var dndObj = new dojo.dnd.Source(node, {copyOnly: true, creator: vytvorUzelDndRozpis, accept: ["nic"], selfAccept: false});
    dndObj.insertNodes(false, data);
    //a ted jeste musim presunout rezervace do prislusne casti tabulky
    /*dndObj.forInItems(function(item, id, map){
        console.debug('Reorganizace tabulky s podkladem pro drag and drop - id radku: ', id);//#DBG;
        var rozpad = id.split('-');
        var zdroj = rozpad[1];
        console.debug('Rozpad ID prvku: ', rozpad);//#DBG;
        if (rozpad[0] == 'rr') {
            dojo.place(id, 'rozpis-tab-cast-rezervace-' + zdroj, 'last');
        } else {
            dojo.place(id, 'rozpis-tab-cast-fronta-' + zdroj, 'last');
        }
    });*/
    return dndObj;
};

function polozeno(source, nodes, copy, target) {
    //pokud nebylo polozeno na me, kasli na to - pokladaci udalosti se posilaci pomalu vsem :-(
    if(dojo.dnd.manager().target !== this){
        return;
    }
    alert('polozeno na ' + target.node.id);//#DBG;
    console.dir(target);//#DBG;
}

function vytvorCilDnd(item, hint) {
    console.time('Polozeni rezervace');//#DBG;
    console.debug('Data predana pri polozeni rezervace: ', item);//#DBG;
    //this je dojo.dnd.Target;
    var prvek = dojo.create('span', {style: 'display:hidden;'}), dialog = dijit.byId('dialog-rezervace'), rez_zdroj = dojo.byId('rez-zdroj'), rez_datum = dojo.byId('rez-datum'),
        rez_idpoz = dojo.byId('rez-idpoz'), rez_proces = dojo.byId('rez-proces'), rez_vp_cas_txt = dojo.byId('rez-vp-cas-txt'), rez_vc_cas_txt = dojo.byId('rez-vc-cas-txt'),
        rez_proc_procesu = dojo.byId('rez-proc-procesu'), rez_hod_procesu = dojo.byId('rez-hod-procesu'), rez_hod_volno = dojo.byId('rez-hod-volno'),
        rez_vp_cas = dojo.byId('rez-vp-cas'), rez_vc_cas = dojo.byId('rez-vc-cas'), rez_vs_cas = dojo.byId('rez-vs-cas'), rez_pk_cas = dojo.byId('rez-pk-cas'),
        rez_pc_cas = dojo.byId('rez-pc-cas'), datum = '', datum_cs = '', rozpad = [], rez_cas = 0, cas_pom = 0;

    if (Number(item.kalkulace) > (Number(item.odvody) + Number(item.rez))) {
        rez_cas = Number(item.kalkulace) - (Number(item.odvody) + Number(item.rez));
    }
    //zjistim fatum
    rozpad = this.node.id.split('-');
    datum = rozpad[2];
    datum_cs = datum.substr(6,2) + '.' + datum.substr(4,2) + '.' + datum.substr(0,4);
    //musim udelat nasledujici:
    //zjistit informace o volnem case zdroje v dany den
    //otevrit dialog s moznostmi pro rezervaci v dany den
    dojo.xhrGet({
        url: '/admin/ajax/nacti/prikaz/ajax_poloz_rezervace_info/parametry/' + item.zdroj + '---' + datum + '---' + item.id_poz,
        handleAs: 'json',
        load: function (data) {
            console.debug("Data z informaci pro polozenou rezervaci: ", data);//#DBG;
            dojo.byId('rez-rez-vp').checked = true;
            rez_zdroj.innerHTML = item.zdroj;
            rez_datum.innerHTML = datum_cs;
            rez_idpoz.innerHTML = item.id_poz;
            rez_proces.innerHTML = data.proces;
            rez_proc_procesu.innerHTML = dojo.number.round(Number(data.koeficient_procesu) * 100, 2);
            rez_hod_procesu.innerHTML = dojo.number.round(data.kapacita_procesu, 2);
            rez_hod_volno.innerHTML = dojo.number.round(data.celkova_kapacita, 2);
            //volny cas procesu
            if (rez_cas > Number(data.volna_kapacita_procesu)) {
                cas_pom = Number(data.volna_kapacita_procesu)
            } else {
                cas_pom = rez_cas
            }
            rez_vp_cas_txt.innerHTML = dojo.number.round(cas_pom, 2);
            rez_vp_cas.value = dojo.number.round(cas_pom, 2);
            //volny cas zdroje v dany den
            if (rez_cas > Number(data.celkova_volna_kapacita)) {
                cas_pom = Number(data.celkova_volna_kapacita)
            } else {
                cas_pom = rez_cas
            }
            rez_vc_cas_txt.innerHTML = dojo.number.round(cas_pom, 2);
            rez_vc_cas.value = dojo.number.round(cas_pom, 2);
            //veskery cas zdroje v dany den
            if (rez_cas > Number(data.celkova_kapacita)) {
                cas_pom = Number(data.celkova_kapacita)
            } else {
                cas_pom = rez_cas
            }
            rez_vs_cas.value = dojo.number.round(Number(cas_pom), 2);
            rez_pk_cas.value = dojo.number.round(rez_cas, 2);
            rez_pc_cas.value = dojo.number.round(rez_cas, 2);
            //rez_vp_cas.value = dojo.number.round(cas_pom, 2);
            dialog.show();
            console.timeEnd('Polozeni rezervace');//#DBG;
            return false;
        },
        // if any error occurs, it goes here:
        error: function (error) {
            console.warn("Chyba při zjištení podkladů pro rezeravci zdroje " + item.zdroj + " na " + datum_cs + " a požadavek " + item.id_poz + ": ", error);//#DBG;
            alert("Chyba při zjištení podkladů pro rezeravci zdroje " + item.zdroj + " na " + datum_cs + " a požadavek " + item.id_poz + ": " + error);//#DBG;
            //dojo.stopEvent(e);
            console.timeEnd('Polozeni rezervace');//#DBG;
            return false;
        }
    });

    return {node: prvek, data: item, type: ['']};
}

function rezervujCasDnd() {
    //musim udelat nasledujici:
    //provest samotnou rezervaci a zjistit informace o pretizeni
    //doplnit cerveny obrazek, pripadne upravit velikost stavajiciho
    //pokud byl u pole i modry obrazek, tak ho o odpovidajici cast zmensit a nasledne najit posledni a ten zvetsit(pripadne pridat dalsi)
}

function denInfo(e) {
    var pom = e.target.id.split('-');
    var sp = dojo.byId('tt-' + pom[2] + '-' + pom[3]);
    //alert('tooltip ' + 'tt-' + pom[2] + '-' + pom[3]);
    if (dojo.attr(e.target, 'je') == '0') {//vytvo5it tooltip
        //alert('tooltip ' + 'tt-' + pom[2] + '-' + pom[3]);
        //console.debug('pripojuji');//#DBG;
        var tool = new dijit.Tooltip({
            connectId: [e.target.id],
            label: sp.innerHTML
        });
        dojo.attr(e.target, 'je', '1');
        tool.open(e.target);
    }
}

function zmenaData(e) {
    var /*datum = e.value, */dod = dijit.byId('datum-od'), ddo = dijit.byId('datum-do');
    console.debug('datum od: ' + dod.value);//#DBG;
    ddo.constraints.min = dod.value;
    var konec = dojo.date.add(dod.value, 'day', 31);
    ddo.constraints.max = konec;
    ddo.set('value', konec);
    console.debug('datum od: ' + dojo.date.add(dod.value, 'day', 31));//#DBG;
    ddo.validate();
    console.debug(ddo.validate());//#DBG;
    console.debug(dojo.byId('datum-od').value + ' => ' + dojo.byId('datum-do').value);//#DBG;
}

function obnov() {
    window.location.href = '/prehledy/kapacity/plan/kouc/' + dojo.byId('kouc').value + '/umi-operaci/' + dojo.byId('umi-operaci').value + '/datum-od/' + dojo.byId('datum-od').value + '/datum-do/' + dojo.byId('datum-do').value;
}

function zvyraznitRezervaceOn(e) {
    //console.log('Zvyrazneni rezervaci radku ', e.currentTarget.id, 'vyvolane prvkem ', e.target.id);//#DBG;
    nastavObrazekRezervace('r-'+ e.currentTarget.id.substr(3), '/obrazky/levandulova.gif')
}

function zvyraznitRezervaceOff(e) {
    //console.log('Zruseni zvyrazneni rezervaci radku ', e.currentTarget.id, 'vyvolane prvkem ', e.target.id);//#DBG;
    nastavObrazekRezervace('r-'+ e.currentTarget.id.substr(3), '/obrazky/cervena.gif')
}

function nastavObrazekRezervace(trida, obr) {
    //console.log('Oznaceni rezervaci tridy ', trida, ', obrazek: ', obr);//#DBG;
    dojo.query("img." + trida).forEach(
        function (e) {
            e.src = obr;
            //console.log('Obarveni rezervaci tridy ', trida, ' id: ', e.id, 'obrazek: ', obr);//#DBG;
        }
    );
}

function kapacityOnLoad() {
    //console.debug('Bahuluv rozpis nacten: ', dojo.byId('nacteno-MBA').value);//#DBG;
    dijit.Tooltip.defaultPosition = ["above", "below"];

    dojo.query("img.graf").forEach(
        function (e) {
            dojo.connect(e, 'onclick', rozpis);
            dojo.connect(e, 'onmouseover', denInfo);
        }
    );

    dojo.query(".auto-fokus").forEach(
        function (e) {
            dojo.connect(e, 'onchange', planKapacit, planKapacit.autoFocusDialogu);
        }
    );

    var datum_od = new dijit.form.DateTextBox({
        id: "datum-od",
        style: 'width:100px;',
        value: dojo.byId('datum-od').value
    }, dojo.byId("datum-od"));

    var datum_do = new dijit.form.DateTextBox({
        id: "datum-do",
        style: 'width:100px;',
        value: dojo.byId('datum-do').value
    }, dojo.byId("datum-do"));
    datum_do.constraints.min = dijit.byId('datum-od').value;
    datum_do.constraints.max = dojo.date.add(datum_od.value, 'day', 31);

    dojo.connect(dijit.byId('datum-od'), 'onChange', zmenaData);
    dojo.connect(dojo.byId('obnov'), 'onclick', obnov);
    //console.debug('Bahuluv rozpis nacten: ', dojo.byId('nacteno-MBA').value);//#DBG;

    //dialog pro rezervace
    var dialog = new dijit.Dialog({
        title: "Rezervace času zdroje pro požadavek",
        id: "dialog-rezervace"
    }, dojo.byId("dialog-rezervace"));

    //stisk tlacitka ma rezervovat
    dojo.connect(dojo.byId('proved-rezervaci'), 'onclick', planKapacit, planKapacit.provedRezervaci);

    //dialog pro zruseni rezervaci
    var dialog = new dijit.Dialog({
        title: "Zrušení rezervací času zdroje pro požadavek",
        id: "dialog-zrus-rezervace"
    }, dojo.byId("dialog-zrus-rezervace"));

    //ovladani hromadneho o(d)znaceni
    dojo.connect(dojo.byId('zrez-check-vse'), 'onclick', ka, ka.hromadnyCheck);
    //spusteni mazani rezervaci tlacitkem
    dojo.connect(dojo.byId('zrez-button-zrus'), 'onclick', planKapacit, planKapacit.zrusRezervace);

    //vytvoreni veci nutnych pro drag and drop rezervace
    dojo.require("dojo.dnd.Source");

    //vytvoreni kontajneru pro umistovani rezeervaci
    dojo.query('.plan-datum').forEach(
        function (e) {
            var rozpad = e.id.split('-');
            zdrojeDnd[rozpad[1] + '_cil'] = new dojo.dnd.Target(e, {accept: [rozpad[1]], selfAccept: false, horizontal: true, creator: vytvorCilDnd});
            //zdrojeDnd[rozpad[1] + '_cil'].dropParent = ('#' + rozpad[1] + '_cil>tr');
            //dojo.connect(zdrojeDnd[rozpad[1] + '_cil'], 'onDndDrop', polozeno);
        }
    );
    //planKapacit.debugRezervaciPozadavku(61638);
    /*planKapacit.prekresliRezervace([
        {zdroj: 'RBL', datum: '20111019', hodin: -1.6, id_poz: '10109'},
        {zdroj: 'RBL', datum: '20111014', hodin: 2, id_poz: '10109'},
        {zdroj: 'RBL', datum: '20111012', hodin: 2, id_poz: '10109'}
    ]);*/
}

/* =====================================================================================================
   mzdy.js
   ===================================================================================================== */
function spocitejMzdy() {
    //alert('zdar');
    var index = 1, s1 = 0, s2 = 0, s3 = 0, celkem = 0, mzda = 0.0, proc = 0, pocet = 0, p1 = 0, p2 = 0, p3 = 0, p4 = 0;
    s1 = Number(dojo.byId('mzd_saz_p1').value);
    s2 = Number(dojo.byId('mzd_saz_p2').value);
    s3 = Number(dojo.byId('mzd_saz_p3').value);
    //alert(s2);
    while (dojo.byId('r' + index + '_mzd')) {
        p1 = Number(dojo.byId('r' + index + '_p1').innerHTML);
        //alert(p1);
        p2 = Number(dojo.byId('r' + index + '_p2').innerHTML);
        p3 = Number(dojo.byId('r' + index + '_p3').innerHTML);
        p4 = Number(dojo.byId('r' + index + '_p4').innerHTML);
        proc = Number(dojo.byId('r' + index + '_mzd_proc').value);
        //mzda = (p1 + p4) * s1 + p2 * s2 + p3 * s3;
        mzda = (p1 + p4) + p2 + p3;
        dojo.byId('r' + index + '_mzd_full').value = mzda;
        dojo.byId('r' + index + '_mzd_full_s').innerHTML = mzda;
        if (proc != 100) {
            if ((mzda * proc / 100) - Math.floor(mzda * proc / 100) < 0.5) {
                mzda = Math.floor(mzda * proc / 100);
            } else {
                mzda = Math.floor(mzda * proc / 100) + 0.5;
            }
        }
        dojo.byId('r' + index + '_mzd').value = mzda;
        dojo.byId('r' + index + '_mzd_s').innerHTML = mzda;
        celkem += mzda;
        if (p1 !== 0) {
            dojo.byId('r' + index + '_saz').value = s1;
        } else if (p2 !== 0) {
            dojo.byId('r' + index + '_saz').value = s2;
        } else if (p3 !== 0) {
            dojo.byId('r' + index + '_saz').value = s3;
        } else if (p4 !== 0) {
            dojo.byId('r' + index + '_saz').value = s1;
        }
        pocet++;
        index++;
    }
    dojo.byId('mzd_celk').innerHTML = celkem;
    //alert('pocet polozek mezd: ' + pocet);
    return false;
}

function ulozMzdy() {
    var ajax_running = dojo.byId('ajax-loader-obr');
    //console.debug("Odeslani pozadavku na odvadeni. Odpracovano: " + odprac.value);//#DBG;
    ajax_running.style.display = 'inline';
    //samotny ajax
    dojo.xhrPost({
        url: '/admin/ajax/ulozmzdy',
        handleAs: 'json',
        load: function (data) {
            var max = data.radky.length, r = 0;
            //console.debug('Radku: ' + max);//#DBG;
            for (i = 0; i < max; i++) {
                r = i;
                dojo.byId('r' + r + '_mzd1').innerHTML = data.radky[i].obdobi1;
            }
            ajax_running.style.display = 'none';
        },
        error: function (error, args) {
            console.warn("Chyba pri ukladani mezd: ", error);//#DBG;
            ajax_running.style.display = 'none';
        },
        form: "mzdy"
    });
}

function oznacMzdy(zaskrtnuto) {
    //alert(zaskrtnuto);
    var i = 0;
    while (dojo.byId('r' + i + '_pm')) {
        if (zaskrtnuto) { //zaskrtavaji se jen zverifikovane
            if (!dojo.byId('r' + i + '_nv')) {
                dojo.byId('r' + i + '_pm').checked = zaskrtnuto;
            }
        } else { //odskrtava se vsechno
            dojo.byId('r' + i + '_pm').checked = zaskrtnuto;
        }
        i++;
    }
}

function zadneMzdy(e) {
    dojo.stopEvent(e);
    oznacMzdy(false);
    return false;
}

function vsechnyMzdy(e) {
    dojo.stopEvent(e);
    oznacMzdy(true);
    return false;
}

function soucty(ev) {
    var styl = 'inline';
    if (dojo.byId('jensoucty').checked) {
        styl = 'none';
    } else {
        styl = 'inline';
    }
    dojo.query(".hist").forEach(
        function (el) {
            el.style.display = styl;
        }
    );
    return true;
}

function platnost(ev) {
    var styl = 'inline';
    if (dojo.byId('jenplatne').checked) {
        styl = 'none';
    } else {
        styl = 'table-row';
    }
    dojo.query(".neplatny_zdroj").forEach(
        function (el) {
            el.style.display = styl;
        }
    );

    soucty(dojo.byId(''));
    return true;
}

function mzdyOnLoad() {
    if (dojo.byId('mzd_spocitej')) {
        dojo.connect(dojo.byId('mzd_spocitej'), 'onclick', spocitejMzdy);
    }
    if (dojo.byId('mzd_uloz')) {
        dojo.connect(dojo.byId('mzd_uloz'), 'onclick', ulozMzdy);
    }
    if (dojo.byId('o_vse')) {
        dojo.connect(dojo.byId('o_vse'), 'onclick', vsechnyMzdy);
    }
    if (dojo.byId('o_nic')) {
        dojo.connect(dojo.byId('o_nic'), 'onclick', zadneMzdy);
    }
    if (dojo.byId('jensoucty')) {
        dojo.connect(dojo.byId('jensoucty'), 'onclick', soucty);
    }
    if (dojo.byId('jenplatne')) {
        dojo.connect(dojo.byId('jenplatne'), 'onclick', platnost);
    }

}

/* =====================================================================================================
   nastaveni.js
   ===================================================================================================== */
function zmenaHesla() {
    if (dojo.byId('zmenheslo').checked === true) {
        dojo.byId('puvheslo').disabled = false;
        dojo.byId('newheslo').disabled = false;
        dojo.byId('newheslo1').disabled = false;
        dojo.byId('puvheslo_ok').value = 'false';
        dojo.byId('newheslo_ok').value = 'false';
        dojo.byId('puvheslo_mess').innerHTML = '';
        dojo.byId('newheslo_mess').innerHTML = '';
    } else {
        dojo.byId('puvheslo').disabled = true;
        dojo.byId('newheslo').disabled = true;
        dojo.byId('newheslo1').disabled = true;
        dojo.byId('puvheslo_ok').value = 'false';
        dojo.byId('newheslo_ok').value = 'false';
        dojo.byId('puvheslo').value = '';
        dojo.byId('newheslo').value = '';
        dojo.byId('newheslo1').value = '';
        dojo.byId('puvheslo_mess').innerHTML = '';
        dojo.byId('newheslo_mess').innerHTML = '';
    }
}

function overNoveHeslo() {
    if (dojo.byId('newheslo').value == dojo.byId('newheslo1').value) {
        dojo.byId('newheslo_mess').innerHTML = '';
        dojo.byId('newheslo_ok').value = 'true';
    } else {
        dojo.byId('newheslo_mess').innerHTML = 'Nové heslo a jeho kontrolní opakování se neshodují!';
        dojo.byId('newheslo_ok').value = 'false';
    }
}

function ulozeni() {
    var jetook = true, zprava = "Formulář nebude uložen. Byly nalezeny následující chyby: \n";
    //spravne zadana hesla
    if (dojo.byId('zmenheslo').checked === true && dojo.byId('puvheslo_ok').value !== 'true') {
        jetook = false;
        zprava += "\n- zadané původní heslo není správné";
    }
    if (dojo.byId('zmenheslo').checked === true && dojo.byId('newheslo_ok').value !== 'true') {
        jetook = false;
        zprava += "\n- nové heslo a jeho kontrolní opakování se neshodují";
    }
    //je vybrana nejaka oblast?
    var oblasti = 0;
    dojo.query(".oblz").forEach(
        function (e) {
            if (e.checked === true) {
                oblasti++;
            }
        }
    );
    if (oblasti === 0 && dojo.byId('jsouoblasti').value == 'true') {
        jetook = false;
        zprava += "\n- není vybrána žádná oblast zájmu(musí být vybrána alespoň jedna)";
    }
    if (jetook) {
        dojo.byId('userinfo').submit();
        return true;
    } else {
        alert(zprava);
        return false;
    }
}

function overStareHeslo() {
    var zprava = dojo.byId('puvheslo_mess');
    zprava.innerHTML = 'Ověřuji zadané heslo...';
    dojo.byId('ulozit').disabled = true;
    dojo.xhrGet({
        url: "/admin/ajax/nacti/prikaz/ajax_overheslo/parametry/" + dojo.byId('puvheslo').value,
        handleAs: "json",
        load: function (data, args) {
            if (data.vysl == 'OK') {
                zprava.innerHTML = 'Zadané heslo je správné.';
                dojo.byId('puvheslo_ok').value = 'true';
                dojo.byId('ulozit').disabled = false;
            } else {
                zprava.innerHTML = 'Zadané heslo je chybné.';
                dojo.byId('puvheslo_ok').value = 'false';
            }
        },
        // if any error occurs, it goes here:
        error: function (error, args) {
            console.warn("Chyba pri overovani hesla: ", error);//#DBG;
        }
    });
}

function smazOblibeny(e) {
	var rozpad = e.target.id.split('-'), id_ukolu = rozpad[2], kod_ukolu = dojo.byId('obl-td-kod-' + id_ukolu).innerHTML;
	if (confirm('Opravdu už není projekt ' + kod_ukolu + ' Tvým oblíbencem?')) {
		dojo.xhrGet({
			url: '/admin/ajax/nacti/prikaz/ajax_smaz_oblibeny/parametry/' + id_ukolu + '---',
			handleAs: 'json',
			load: function (data) {
				dojo.byId('obl-tr-' + id_ukolu).style.display = 'none';
			},
			error: function (error, args) {
				console.warn("Chyba pri mazani oblibeneho projektu", kod_ukolu, id_ukolu, ": ", error);//#DBG;
			}
		});
	}
}

function pridejOblibeny(e) {
	var id_ukolu = dojo.byId('obl-projekt').value;
	dojo.xhrGet({
		url: '/admin/ajax/nacti/prikaz/ajax_pridej_oblibeny/parametry/' + id_ukolu + '---',
		handleAs: 'json',
		load: function (data) {
			dojo.byId('obl-projekt').value = '1';
			var ntr = dojo.create('tr', {id: 'obl-tr-' + id_ukolu}, 'oblibene-projekty'),
				td_kod = dojo.create('td', {id: 'obl-td-kod-' + id_ukolu, innerHTML: data.user_kod}, ntr),
				td_nazev = dojo.create('td', {id: 'obl-td-nazev-' + id_ukolu, innerHTML: data.nazev}, ntr),
				td_smaz = dojo.create('td', {id: 'obl-td-smaz-' + id_ukolu}, ntr),
				span_smaz = dojo.create('span', {id: 'obl-smaz-' + id_ukolu, innerHTML: 'Smaž'}, td_smaz),
				xxx;
			dojo.addClass(span_smaz, 'point');
			dojo.addClass(span_smaz, 'obl-smaz');
			dojo.connect(span_smaz, 'onclick', smazOblibeny);
		},
		error: function (error, args) {
			console.warn("Chyba pri pridani oblibeneho projektu", id_ukolu, ": ", error);//#DBG;
		}
	});
}

function nastaveniOnLoad() {
	dojo.connect(dojo.byId('zmenheslo'), 'onclick', zmenaHesla);
	dojo.connect(dojo.byId('newheslo'), 'onchange', overNoveHeslo);
	dojo.connect(dojo.byId('newheslo1'), 'onchange', overNoveHeslo);
	dojo.connect(dojo.byId('puvheslo'), 'onchange', overStareHeslo);
	dojo.connect(dojo.byId('ulozit'), 'onclick', ulozeni);
	dojo.query('.obl-smaz').connect('onclick', smazOblibeny);
	zobrazCombo('obl-projekt', '/admin/ajax/nacti/prikaz/ajax_data_projekty');
	dojo.connect(dojo.byId('pridej-projekt'), 'onclick', pridejOblibeny);
}

/* =====================================================================================================
   plan_vyvoje.js
   ===================================================================================================== */
function prepni(e) {
    var cil = e.target, druh = e.target.id.substr(0, 1), ukol = 'nic', vybrane = [], i = 0, druh_cile = '', skutecny_cil = {}, check = '';
    //protoze nektere hodnoty lze vybrat kliknutim na checkbox
    switch (e.target.id.substr(0, 1)) {
    case 'c': //checkbox od zdroje
    case 'z':
        druh_cile = 'z';
        check = 'c';
        break;
    case 'o': //checkbox od garanta
    case 'g':
        druh_cile = 'o';
        check = 'g';
        break;
    case 's': //checkbox od sekce
    case 'b':
        druh_cile = 's';
        check = 'b';
        break;
    default:
        druh_cile = e.target.id.substr(0, 1);
        break;
    }
	//pokud menim projekt nebo PM, druhe se vymaze
	if (e.target.id == 'm-puv-pm') {
		dojo.byId('u-puv-projekt').value = '';
	} else if (e.target.id == 'u-puv-projekt') {
		dojo.byId('m-puv-pm').value = '';
	}
    //alert(druh_cile);
    skutecny_cil = dojo.byId(druh_cile + e.target.id.substr(1, (e.target.id.length - 1)));
    //alert(skutecny_cil.id);
    if (druh != 't' && dojo.attr(skutecny_cil, 'selected') == '1') {
        ukol = 'off';
        dojo.attr(skutecny_cil, 'selected', '0');
        skutecny_cil.style.fontWeight = 'normal';
        if (check !== '') {
            dojo.byId(check + cil.id.substr(1)).checked = false;
        }
    } else if (druh != 't' && druh != 'u' && druh != 'm') {
        ukol = 'on';
        dojo.attr(skutecny_cil, 'selected', '1');
        skutecny_cil.style.fontWeight = 'bold';
        if (check !== '') {
            dojo.byId(check + cil.id.substr(1)).checked = true;
        }
    }
    //ted projdu vsechny ovladace a naplnim vybrane tridy
    dojo.query(".prepinac").forEach(
        function (ev) {
            if (dojo.attr(ev, 'selected') == '1') {
                vybrane[i] = 'tr' + ev.id.substr(0, 1)  + '-' + ev.id.substr(2);
                //console.debug('do vybranych: ' + 'tr' + ev.id.substr(0, 1)  + '-' + ev.id.substr(2));//#DBG;
                i++;
            }
        }
    );
	//ted pridam filtr na puvodni projekt a pm
	if (dojo.byId('u-puv-projekt').value !== '') {
	   vybrane[i] = 'tru'  + '-' + dojo.byId('u-puv-projekt').value;
	}
	if (dojo.byId('m-puv-pm').value !== '') {
	   vybrane[i] = 'trm'  + '-' + dojo.byId('m-puv-pm').value;
	}
    //a ted prijdu vsechny radky tabulky a necham zobrazene jen ty, jejich ovladace jsou vybrane
    dojo.query('tr.tab').forEach(
        function (ev) {
            var je_sekce = false, je_oblast = false, je_zdroj = false, zobraz_sekce = false, zobraz_oblast = false, zobraz_zdroj = false, zobraz = false, zobraz_termin = false,
                am = Number(dojo.byId('akt-mesic').value), poz = '', je_pm = false, je_projekt = false, zobraz_pm = false, zobraz_projekt = false;
            //je_sekce = false; je_oblast = false; je_zdroj = false; zobraz_sekce = false; zobraz_oblast = false; zobraz_zdroj = false, zobraz = 0;
            //nejprve termin
            poz = ev.id.substr(3);
            var termin = dojo.byId('t-termin');
            if (termin.value == '.') {
                //console.debug(poz + ' vse: ' + dojo.byId('ter-' + poz).value);//#DBG;
                zobraz_termin = true;
            } else if (termin.value == 'pt') {
                //console.debug(poz + ' po ter: ' + dojo.byId('ter-' + poz).value + ' ' + am);//#DBG;
                zobraz_termin = Number(dojo.byId('ter-' + poz).value) < am;
            } else if (termin.value.substr(0, 3) == 'nad') {
                //console.debug(poz + ' nad: ' + dojo.byId('ter-' + poz).value + ' ' + termin.value.substr(3));//#DBG;
                zobraz_termin = Number(dojo.byId('ter-' + poz).value) > Number(termin.value.substr(3));
            } else {
                //console.debug(poz + ' do: ' + dojo.byId('ter-' + poz).value + ' ' + termin.value);//#DBG;
                zobraz_termin = Number(dojo.byId('ter-' + poz).value) <= Number(termin.value);
            }
            dojo.forEach(vybrane, function (c) {
                switch (c.substr(2, 1)) {
                case 's':
                    je_sekce = true;
                    break;
                case 'o':
                    je_oblast = true;
                    break;
                case 'z':
                    je_zdroj = true;
                    break;
                case 'u':
                    je_projekt = true;
                    break;
                case 'm':
                    je_pm = true;
                    break;
                }
                if (dojo.hasClass(ev, c)) {
                    switch (c.substr(2, 1)) {
                    case 's':
                        zobraz_sekce = true;
                        break;
                    case 'o':
                        zobraz_oblast = true;
                        break;
                    case 'z':
                        zobraz_zdroj = true;
                        break;
                    case 'u':
                        zobraz_projekt = true;
                        break;
                    case 'm':
                        zobraz_pm = true;
                        break;
                    }
                }
            });
            zobraz = (je_sekce && zobraz_sekce) && (!je_oblast || (je_oblast && zobraz_oblast)) && (!je_zdroj || (je_zdroj && zobraz_zdroj)) && zobraz_termin  && (!je_pm || (je_pm && zobraz_pm)) && (!je_projekt || (je_projekt && zobraz_projekt));
            //dojo.attr(e, 'zobraz', zobraz);
            if (zobraz) {
                //e.style.display = 'table-row';
                ev.style.display = '';
            } else {
                ev.style.display = 'none';
            }
        }
    );
    //nakonec ulozim nastaveni do cookie
    ulozNastaveniDoCookie();
}

function ulozNastaveniDoCookie(e) {
    var vybrane = [], i = 0;
    dojo.query(".prepinac").forEach(
        function (e) {
            if (dojo.attr(e, 'selected') == '1') {
                vybrane[i] = e.id;
                i++;
            }
        }
    );
    //alert('jdu na to');
    vybrane[i] = 't-' + dojo.byId('t-termin').value;
    i++;
    vybrane[i] = 'p-' + dojo.byId('termin-planovani').value;
    i++;
    vybrane[i] = 'h-' + dojo.byId('zobrazovat-hodiny-zdroje').value;
    i++;
    vybrane[i] = 'u-' + dojo.byId('u-puv-projekt').value;
    i++;
    vybrane[i] = 'm-' + dojo.byId('m-puv-pm').value;
    dojo.cookie('filtryPlanuVyvoje', dojo.toJson(vybrane));
    try {
        if (e.target.id == 'zobrazovat-hodiny-zdroje') {
            dojo.byId('ajax-loader-obr').style.display = 'inline';
            location.reload();
        }
    } catch (err) {}
}

function filtrujTermin(e) {
    var cil = e.target, am = Number(dojo.byId('akt-mesic').value), poz = '', zobraz = true;
    //a ted prijdu vsechny radky tabulky
    dojo.query('tr.tab').forEach(
        function (f) {
            poz = f.id.substr(3);
            if (cil.value == '.') {
                //console.debug(poz + ' vse: ' + dojo.byId('ter-' + poz).value);//#DBG;
                zobraz = true;
            } else if (cil.value == 'pt') {
                //console.debug(poz + ' po ter: ' + dojo.byId('ter-' + poz).value + ' ' + am);//#DBG;
                zobraz = Number(dojo.byId('ter-' + poz).value) < am;
            } else if (cil.value.substr(0, 3) == 'nad') {
                //console.debug(poz + ' nad: ' + dojo.byId('ter-' + poz).value + ' ' + cil.value.substr(3));//#DBG;
                zobraz = Number(dojo.byId('ter-' + poz).value) > Number(cil.value.substr(3));
            } else {
                //console.debug(poz + ' do: ' + dojo.byId('ter-' + poz).value + ' ' + cil.value);//#DBG;
                zobraz = Number(dojo.byId('ter-' + poz).value) <= Number(cil.value);
            }
            if (zobraz) {
                //f.style.display = 'table-row';
                f.style.display = '';
            } else {
                f.style.display = 'none';
            }
        }
    );
    //alert(druh);
}

function zmenaHodnotRezervace(e) {
    var termin = dojo.byId('a-termin'), termin_anal = dojo.byId('a-termin-anal');
    if (termin.value < termin_anal.value) {
        termin.value = termin_anal.value;
    }
    aktivuj(dojo.byId('a-idpoz').innerHTML, false, e.target.id);
}

function aktivuj(ka, zobraz, odkud) {
    //alert('aktivuji z ' + odkud);
    var ajax_running = dojo.byId('ajax-loader-obr');
    ajax_running.style.display = 'inline';
    var dialog = dijit.byId('aktivuj'), idpoz = '', anal_kalk = dojo.byId('a-anal-kalk'), prog_kalk = dojo.byId('a-prog-kalk'),
        anal_disp = dojo.byId('a-anal-disp'), prog_disp_free = dojo.byId('a-prog-disp-free'), prog_disp = dojo.byId('a-prog-disp'), mozno = true,
        anal_ok = dojo.byId('a-anal-ok'), prog_ok = dojo.byId('a-prog-ok'), dat_prog = dojo.byId('dat-prog'), dat_anal = dojo.byId('dat-anal'),
        pretizit_anal, pretizit_prog, anal_rez = dojo.byId('a-anal-rez'), prog_rez = dojo.byId('a-prog-rez'), jiz_rez_anal = '', jiz_rez_prog = '',
        obsah = dojo.byId('aktivuj-inner'), t = '';
    //na zacatku zrusim vse, co uz obsahuje obsah-inner
    //nejprve musim zrusit datumy
    i = 0;
    while (dijit.byId('rez-datum-od-' + i)) {
        dijit.byId('rez-datum-od-' + i).destroyRecursive();
        dijit.byId('rez-termin-' + i).destroyRecursive();
        i++;
    }
    try {
        dojo.byId('generovane').destroyRecursive();
    } catch (e) {}
    idpoz = ka;
    //jiz_rez_anal = dojo.byId('jiz-rez-anal-' + idpoz).innerHTML;
    //jiz_rez_prog = dojo.byId('jiz-rez-prog-' + idpoz).innerHTML;
    t  = '<div id="generovane"><table class="datatable">';
    t += '<tr><th>Zdroj</th><th>Druh práce</th><th>Kalkulace</th><th>Odvedeno</th><th>Rezervováno</th><th>Do</th><th>Rezervovat</th><th>Od data</th><th>Termín</th><th>K dispozici</th><th>Přetížit</th><th>Lze</th><th>&nbsp;</th></tr>';
    dojo.byId('a-idpoz').innerHTML = idpoz;
    //zjistim vsechny potrebne informace
    dojo.xhrGet({
        url: '/admin/ajax/nacti/prikaz/ajax_aktivace_pv_info/parametry/' + idpoz,
        handleAs: 'json',
        load: function (data) {
            console.debug(data);//#DBG;
            dojo.byId('a-shname').innerHTML = data.shname;
            var pocet_kapacit = data.kap.length, pol = {}, xmax_datum = data.dnes;
            for (i = 0; i < pocet_kapacit; i++) {
                pol = data.kap[i];
                t += '<tr>';
                //jmeno
                t += '<td>' + pol.nazev_zdroje;
                t += '<input type="hidden" id="rez-zdroj-' + i + '" name="rez-zdroj-' + i + '" value="' + pol.zdroj + '"/>';
                t += '</td>';
                //Druh práce
                t += '<td>';
                switch (pol.druh_prace) {
                case 'ANAL':
                    t += 'Analýza';
                    break;
                case 'PROG':
                    t += 'Programování';
                    break;
                default:
                    t += 'Nespecifikováno';
                    break;
                }
                t += '</td>';
                //Kalkulace
                t += '<td style="text-align:right;">' + dojo.number.round(pol.kalkulace, 2) + 'h</td>';
                //Odvedeno
                t += '<td style="text-align:right;">' + dojo.number.round(pol.odvedeno, 2) + 'h</td>';
                //Rezervováno
                t += '<td style="text-align:right;"><span id="rez-jiz-rez-' + i + '">' + dojo.number.round(pol.rezervovano, 2) + '</span>h</td>';
                //Rezervováno do
                t += '<td style="text-align:right;"><span id="rez-jiz-rez-do-' + i + '">';
                t += pol.max_rezervace.substr(6, 2) + '.' + pol.max_rezervace.substr(4, 2) + '.' + pol.max_rezervace.substr(0, 4);
                t += '</span><input type="hidden" id="rez-datum-src-' + i + '" name="rez-datum-src-' + i + '" value="' + pol.max_rezervace + '"/>';
                t += '</td>';
                if (pol.max_rezervace > xmax_datum) {
                    xmax_datum = pol.max_rezervace;
                }
                //Rezervovat
                t += '<td>';
                t += '<input name="rez-hodin-' + i + '" id="rez-hodin-' + i + '" style="text-align:right;" size="5" disabled="disabled" value="';
                if ((dojo.number.round(pol.kalkulace, 2) - dojo.number.round(pol.odvedeno, 2) - dojo.number.round(pol.rezervovano, 2)) > 0) {
                    t += dojo.number.round(dojo.number.round(pol.kalkulace, 2) - dojo.number.round(pol.odvedeno, 2) - dojo.number.round(pol.rezervovano, 2), 2);
                } else {
                    t += '0';
                }
                t += '"/>h';
                t += '</td>';
                //Od data
                t += '<td>';
                t += '<input type="text" id="rez-datum-od-' + i + '" name="rez-datum-od-' + i + '" size="10" value="' + pol.max_rezervace + '"/>';

                t += '</td>';
                //Termín
                t += '<td>';
                t += '<input type="text" id="rez-termin-' + i + '" name="rez-termin-' + i + '" size="10" value="' + pol.max_rezervace + '"/>';
                t += '</td>';
                //K dispozici
                t += '<td style="text-align:right;">';
                t += '<span id="rez-mozno-' + i + '"/>0h</span>';
                t += '</td>';
                //Přetížit
                t += '<td>' + '<input type="checkbox" name="rez-pretizit-' + i + '" id="rez-pretizit-' + i + '" disabled="disabled"/>' + '</td>';
                //Lze
                t += '<td><span  id="rez-lze-' + i + '" style="color:red;">Ne</span>' + '</td>';
                //ovladani
                t += '<td><button id="rez-rez-' + idpoz + '-' + i + '" disabled="disabled">Rezervuj</button>' + '</td>';
                t += '</tr>';
            }
            t += '</table></div>';

            dojo.place(t, obsah, 'only');

            //vytvoreni objektu s datumy
            var ini_datum = new Date(xmax_datum.substr(0, 4), Number(xmax_datum.substr(4, 2)) - 1, xmax_datum.substr(6, 2));
            ini_datum = dojo.date.add(ini_datum, 'day', 1);
            for (i = 0; i < pocet_kapacit; i++) {
                new dijit.form.DateTextBox(
                {
                    id: "rez-datum-od-" + i,
                    name: "rez-datum-od-" + i,
                    style: "width:8em;",
                    value: ini_datum,
                    disabled: true,
                    onChange: function (e) {
                                    aktualizujPv(dojo.byId('a-idpoz').innerHTML, this.id.substr(-1));
                                }
                },
                dojo.byId('rez-datum-od-' + i)
                );
                new dijit.form.DateTextBox(
                {
                    id: "rez-termin-" + i,
                    name: "rez-termin-" + i,
                    style: "width:8em;",
                    value: dijit.byId('termin-planovani').get('value'),
                    disabled: true,
                    onChange: function (e) {
                                    aktualizujPv(dojo.byId('a-idpoz').innerHTML, this.id.substr(-1));
                                }
                },
                dojo.byId('rez-termin-' + i)
                );
                //dj_termin_planovani.attr('value', dat);
            }
            //zaregistrovani ovladacu
            for (i = 0; i < pocet_kapacit; i++) {
                dojo.connect(dojo.byId('rez-pretizit-' + i), 'onchange', function (e) {
                                                                                aktualizujPv(dojo.byId('a-idpoz').innerHTML, e.target.id.substr(13));
                                                                            }
                );
                dojo.connect(dojo.byId('rez-hodin-' + i), 'onchange', function (e) {
                                                                                aktualizujPv(dojo.byId('a-idpoz').innerHTML, e.target.id.substr(10));
                                                                            }
                );
                dojo.connect(dojo.byId('rez-rez-' + idpoz + '-' + i), 'onclick', rezervuj);
            }
            //a nakonec zavolani aktualizaci radku
            for (i = 0; i < pocet_kapacit; i++) {
                aktualizujPv(idpoz, i);
            }
            ajax_running.style.display = 'none';
            if (zobraz) {
                dialog.show();
            }
        },
        // if any error occurs, it goes here:
        error: function (error) {
            console.warn("Chyba při zjištění informací pro zařazení požadavku do PV: ", error);//#DBG;
            ajax_running.style.display = 'none';
            alert("Chyba při zjištění informací pro zařazení požadavku do PV: " + error);
        }
    });
}

function aktualizujPv(ka, poradi) {
    var kalkulace = {}, odvedeno = {}, rezervovano = {}, rezervovano_do = {}, od_data = {}, termin = {}, hodin = {}, pretizit = {}, mozno = {},
        lze = {}, tlacitko = {}, zdroj = {}, ok = false, jiz_rez = {};
    //alert('poradi: ' + poradi);//#DBG;
    hodin = dojo.byId('rez-hodin-' + poradi);
    zdroj = dojo.byId('rez-zdroj-' + poradi);
    od_data = dijit.byId('rez-datum-od-' + poradi);
    termin = dijit.byId('rez-termin-' + poradi);
    tlacitko = dojo.byId('rez-rez-' + ka + '-' + poradi);
    pretizit = dojo.byId('rez-pretizit-' + poradi);
    mozno = dojo.byId('rez-mozno-' + poradi);
    lze = dojo.byId('rez-lze-' + poradi);
    jiz_rez = dojo.byId('rez-jiz-rez-' + poradi);
    //nejprve zdisabluji hodnoty
    hodin.disabled = true;
    od_data.set('disabled', true);
    termin.set('disabled', true);
    tlacitko.disabled = true;
    pretizit.disabled = true;
    lze.innerHTML = 'Ne';
    lze.style.color = 'red';
    //alert('pred nactenim dat aktualizace');
    dojo.xhrGet({
        url: '/admin/ajax/nacti/prikaz/ajax_aktualizace_pv_kap/parametry/' + ka + '---' + zdroj.value + '---' + dojo.byId('rez-datum-od-' + poradi).value + '---' + dojo.byId('rez-termin-' + poradi).value,
        handleAs: 'json',
        load: function (data) {
            console.debug(data);//#DBG;
            //alert('data aktualizace nactena');
            mozno.innerHTML = dojo.number.round(Number(data.k_dispozici), 2);
            jiz_rez.innerHTML = dojo.number.round(Number(data.kap.rezervovano), 2);
            dojo.byId('rez-jiz-rez-do-' + poradi).innerHTML = data.kap.max_rezervace.substr(6, 2) + '.' + data.kap.max_rezervace.substr(4, 2) + '.' + data.kap.max_rezervace.substr(0, 4);
            dojo.byId('rez-datum-src-' + poradi).value = data.kap.max_rezervace;
            /*if ((dojo.number.round(data.kap.kalkulace, 2) - dojo.number.round(data.kap.odvedeno, 2) - dojo.number.round(data.kap.rezervovano, 2)) > 0) {
                hodin.value = dojo.number.round(dojo.number.round(data.kap.kalkulace, 2) - dojo.number.round(data.kap.odvedeno, 2) - dojo.number.round(data.kap.rezervovano, 2), 2);
            } else {
                hodin.value = '0';
            }*/
            //a nakonec povolim, co mam
            ok = dojo.number.round(hodin.value, 2) > 0 && (dojo.number.round(Number(data.k_dispozici), 2) >= dojo.number.round(Number(hodin.value), 2) || pretizit.checked);
            hodin.disabled = false;
            od_data.set('disabled', false);
            termin.set('disabled', false);
            pretizit.disabled = false;
            if (ok) {
                tlacitko.disabled = false;
                lze.innerHTML = 'Ano';
                lze.style.color = 'green';
            }
            //alert('konec aktualizace');
        },
        // if any error occurs, it goes here:
        error: function (err) {
            console.warn("Chyba při zjištění informací o stavu kapacity " + zdroj.value + ", požadavku " + ka + ": ", err.description);//#DBG;
            ajax_running.style.display = 'none';
            alert("Chyba při zjištění informací o stavu kapacity " + zdroj.value + ", požadavku " + ka + ": ", err.message);
        }
    });

}

function rezervuj(e) {
    console.time('rezervuj: ' + e.target.id);//#DBG;
    var pars = e.target.id.split('-');
    var ka = pars[2], poradi = pars[3];
    var ajax_running = dojo.byId('ajax-loader-obr');
    ajax_running.style.display = 'inline';
    var kalkulace = {}, odvedeno = {}, rezervovano = {}, rezervovano_do = {}, od_data = {}, termin = {}, hodin = {}, pretizit = {}, mozno = {},
        lze = {}, tlacitko = {}, zdroj = {}, ok = false, jiz_rez = {}, xpret = '0';
    hodin = dojo.byId('rez-hodin-' + poradi);
    zdroj = dojo.byId('rez-zdroj-' + poradi);
    od_data = dijit.byId('rez-datum-od-' + poradi);
    termin = dijit.byId('rez-termin-' + poradi);
    tlacitko = dojo.byId('rez-rez-' + ka + '-' + poradi);
    pretizit = dojo.byId('rez-pretizit-' + poradi);
    mozno = dojo.byId('rez-mozno-' + poradi);
    lze = dojo.byId('rez-lze-' + poradi);
    jiz_rez = dojo.byId('rez-jiz-rez-' + poradi);
    //nejprve zdisabluji hodnoty
    hodin.disabled = true;
    od_data.set('disabled', true);
    termin.set('disabled', true);
    tlacitko.disabled = true;
    pretizit.disabled = true;
    lze.innerHTML = 'Ne';
    if (pretizit.checked) {
        xpret = '1';
    }
    //predpokladane parametry: [id_poz]---[zdroj]---[od_data]---[termin]---[pretizit]---[hodin]
    //alert('pred rezervaci');
    lze.style.color = 'red';
    dojo.xhrGet({
        url: '/admin/ajax/nacti/prikaz/ajax_rezervace_pv/parametry/' + ka + '---' + zdroj.value + '---' + dojo.byId('rez-datum-od-' + poradi).value + '---' + dojo.byId('rez-termin-' + poradi).value + '---' + xpret + '---' + hodin.value,
        handleAs: 'json',
        load: function (data) {
            console.debug(data);//#DBG;
            ajax_running.style.display = 'none';
            //alert('pred aktualizaci');
            aktualizujPv(ka, poradi);
            //alert('po aktualizaci');
            //dojo.stopEvent(e);
            console.timeEnd('rezervuj: ' + e.target.id);//#DBG;
            return false;
        },
        // if any error occurs, it goes here:
        error: function (error) {
            console.warn("Chyba při rezervaci kapacity " + zdroj.value + ", požadavku " + ka + ": ", error);//#DBG;
            ajax_running.style.display = 'none';
            alert("Chyba při rezervaci kapacity " + zdroj.value + ", požadavku " + ka + ": ", error);
            //dojo.stopEvent(e);
            console.timeEnd('rezervuj: ' + e.target.id);//#DBG;
            return false;
        }
    });
}

function zaradDoAktivnihoPv(id_poz) {
    var radek = dojo.byId('tr-' + id_poz), sekce = dojo.byId('sekce-20');
    if (confirm('Opravdu chcete zařadit požadavek ' + id_poz + ' do aktivního plánu vývoje?')) {
        ajaxstart();
        dojo.xhrGet({
            url: '/admin/ajax/nacti/prikaz/ajax_zarad_do_aktivniho_pv/parametry/' + id_poz,
            handleAs: 'json',
            load: function (data) {
                console.debug(data);//#DBG;
                dojo.place(radek, sekce, "before");
                ajaxkonec();
                aktivuj(id_poz, true, 'menu');
            },
            // if any error occurs, it goes here:
            error: function (error) {
                console.warn("Chyba při rušení rezervací kapacit požadavku " + ka + ": ", error);//#DBG;
                ajaxkonec();
                alert("Chyba při rušení rezervací kapacit požadavku " + ka + ": " + error);
            }
        });
    }
}

function deaktivuj(ka) {
    var ajax_running = dojo.byId('ajax-loader-obr');
    ajax_running.style.display = 'inline';
    var dialog = dijit.byId('deaktivuj');
    dojo.byId('d-idpoz').innerHTML = ka;
    ajax_running.style.display = 'none';
    dialog.show();
}

function odrezervuj(e) {
    var ajax_running = dojo.byId('ajax-loader-obr');
    ajax_running.style.display = 'inline';
    var dialog = dijit.byId('deaktivuj'), id_poz = dojo.byId('d-idpoz').innerHTML, radek, sekce;
    radek = dojo.byId('tr-' + id_poz);
    sekce = dojo.byId('sekce-30');
    dojo.place(radek, sekce, "before");
    //zrusim polozku menu s deaktivaci
    var menu = {};
    menu = dijit.byId('dropdown-' + id_poz);
    menu.destroyRecursive();
    dojo.byId('dd-id-' + id_poz).appendChild(vytvorDdMenuPv20(id_poz).domNode);
    //a ted odrezervuju cas
    dojo.xhrGet({
        url: '/admin/ajax/nacti/prikaz/ajax_odrezervace_pv/parametry/' + id_poz,
        handleAs: 'json',
        load: function (data) {
            console.debug(data);//#DBG;
            ajax_running.style.display = 'none';
            dialog.hide();
        },
        // if any error occurs, it goes here:
        error: function (error) {
            console.warn("Chyba při odrezervaci kapacit pro zařazení požadavku do PV: ", error);//#DBG;
            ajax_running.style.display = 'none';
            dialog.hide();
            alert("Chyba při odrezervaci kapacit pro zařazení požadavku do PV: " + error);
        }
    });
}

function rezervujAnalChange(e) {
    if (!dojo.byId('rez-anal').checked) {
        dojo.byId('rez-prog').checked = false;
    }
}

function nazvyInfo(e) {
    var pom = e.id.split('-');
    var id_poz = pom[1];
    if (dojo.attr(e, 'je-ttn') == '0') {//vytvo5it tooltip
        var tool = new dijit.Tooltip({
            connectId: [e.id],
            label: 'Případ si někteří uživatelé přejmenovali.<br/><br/><table>'
        });
        //tool.open(e.target);
        dojo.attr(e, 'je-ttn', '1');
        //nacteni samotneho seznamu nazvu
        dojo.xhrGet({
            url: '/admin/ajax/nacti/prikaz/ajax_nazvy_info/parametry/' + id_poz,
            handleAs: 'json',
            load: function (data) {
                var text = 'Případ si někteří uživatelé přejmenovali.<br/><br/><table>';
                dojo.forEach(data, function (item) {
                    text += '<tr><td>' + item.uziv + '</td><td>' + item.nazev + '</td></tr>';
                });
                text += '</table><br/>';
                tool.set('label', text);
                dojo.byId('nazvy-' + id_poz).innerHTML = '***';
            },
            // if any error occurs, it goes here:
            error: function (error) {
                console.warn("Chyba při zjištění názvů případu ID" + id_poz + ": ", error);//#DBG;
            }
        });
    }
}

function dorezervuj(ka) {
    aktivuj(ka, true, 'dorezervace');
}

function ukonciVyvoj(ka) {
    if (confirm('Opravdu chcete vývoj požadavku ' + ka + ' označit jako ukončený?')) {
        ajaxstart();
        dojo.xhrGet({
            url: '/admin/ajax/nacti/prikaz/ajax_ukonceni_vyvoje_pv/parametry/' + ka,
            handleAs: 'json',
            load: function (data) {
                console.debug(data);//#DBG;
                dojo.byId('tr-' + ka).style.display = 'none';
                ajaxkonec();
            },
            // if any error occurs, it goes here:
            error: function (error) {
                console.warn("Chyba při rušení rezervací kapacit požadavku " + ka + ": ", error);//#DBG;
                ajaxkonec();
                alert("Chyba při rušení rezervací kapacit požadavku " + ka + ": " + error);
            }
        });
    }
}

function pozastavVyvoj(ka) {
    if (confirm('Opravdu chcete pozastavit vývoj požadavku ' + ka + ', tj.zrušit jeho aktuální rezervace?')) {
        ajaxstart();
        dojo.xhrGet({
            url: '/admin/ajax/nacti/prikaz/ajax_pozastaveni_vyvoje_pv/parametry/' + ka,
            handleAs: 'json',
            load: function (data) {
                console.debug(data);//#DBG;
                //dojo.byId('tr-' + ka).style.display = 'none';
                ajaxkonec();
            },
            // if any error occurs, it goes here:
            error: function (error) {
                console.warn("Chyba při rušení rezervací kapacit požadavku " + ka + ": ", error);//#DBG;
                ajaxkonec();
                alert("Chyba při rušení rezervací kapacit požadavku " + ka + ": " + error);
            }
        });
    }
}

function vytvorDdMenuPv10(ka) {
    var menu = {}, menuItem1 = {}, menuItem2 = {}, menuItem3 = {}, menuItem4 = {}, button = {};
    menu = new dijit.Menu({
        style: "display: none;"
    });
    menuItem1 = new dijit.MenuItem({
        pripad: ka,
        label: "Dorezervovat",
        onClick: function () {
            dorezervuj(this.pripad);
        }
    });
    menu.addChild(menuItem1);

    menuItem2 = new dijit.MenuItem({
        pripad: ka,
        label: "Ukončit vývoj",
        onClick: function () {
            ukonciVyvoj(this.pripad);
        }
    });
    menu.addChild(menuItem2);

    menuItem3 = new dijit.MenuItem({
        pripad: ka,
        label: "Zrušit rezervace",
        onClick: function () {
            pozastavVyvoj(this.pripad);
        }
    });
    menu.addChild(menuItem3);

    menuItem4 = new dijit.MenuItem({
        pripad: ka,
        label: "Vyřadit z aktivního plánu vývoje",
        onClick: function () {
            deaktivuj(this.pripad);
        }
    });
    menu.addChild(menuItem4);


    button = new dijit.form.DropDownButton({
        label: "Akce",
        name: "dropdown-" + ka,
        dropDown: menu,
        id: "dropdown-" + ka
    });
    return button;
}

function vytvorDdMenuPv20(ka) {
    var menu = {}, menuItem1 = {}, button = {};
    menu = new dijit.Menu({
        style: "display: none;"
    });
    menuItem1 = new dijit.MenuItem({
        pripad: ka,
        label: "Zařaď do aktivního plánu vývoje",
        onClick: function () {
            zaradDoAktivnihoPv(this.pripad);
        }
    });
    menu.addChild(menuItem1);

    button = new dijit.form.DropDownButton({
        label: "Akce",
        name: "dropdown-" + ka,
        dropDown: menu,
        id: "dropdown-" + ka
    });
    return button;
}

function vytvorZruseniRezervaci(id) {
    var menu = {}, menuItem1 = {}, menuItem2 = {}, button = {};
    menu = new dijit.Menu({
        style: "display: none;"
    });
    menuItem1 = new dijit.MenuItem({
        label: "Smaž všechny historické(neodvedené) rezervace požadavků plánu vývoje",
        onClick: function () {
            zrusRezervace('hist');
        }
    });
    menu.addChild(menuItem1);

    menuItem2 = new dijit.MenuItem({
        label: "Smaž VŠECHNY rezervace požadavků plánu vývoje",
        onClick: function () {
            zrusRezervace('vse');
        }
    });
    menu.addChild(menuItem2);

    button = new dijit.form.DropDownButton({
        label: "Smazání rezervací",
        name: "zrus-rezervace",
        dropDown: menu,
        id: "zrus-rezervace"
    });

    dojo.byId(id).appendChild(button.domNode);

    return;
}

function zrusRezervace(jake) {
    var ajax_running = dojo.byId('ajax-loader-obr'), vyzva = '';
    vyzva  = 'Opravdu chcete smazat';
    if (jake == 'hist') {
        vyzva += ' historické(neodvedené) ';
    } else {
        vyzva += ' VŠECHNY ';
    }
    vyzva += 'rezervace požadavků plánu vývoje?\r\n\r\nTuto akci nelze vrátit zpět a bude třeba požadavky znovu zarezervovat!';
    //a ted zrusim rezervace
    if (confirm(vyzva)) {
        ajax_running.style.display = 'inline';
        dojo.xhrGet({
            url: '/admin/ajax/nacti/prikaz/ajax_zrus_rezervace_pv/parametry/' + jake,
            handleAs: 'json',
            load: function (data) {
                //console.debug(data);//#DBG;
                location.reload();
            },
            // if any error occurs, it goes here:
            error: function (error) {
                console.warn("Chyba při hromadném rušení rezervací: ", error);//#DBG;
                ajax_running.style.display = 'none';
                alert("Chyba při hromadném rušení rezervací: " + error);
            }
        });
    }
}

function planVyvojeOnLoad() {
    console.time('planVyvojeOnLoad');//#DBG;
    //console.profile();//#DBG;
    /*dojo.require("dojo.cookie");
    if (!dojo.cookie.isSupported) {
        alert('Nepodporuje cookies');
    }
    var pole = dojo.fromJson(dojo.cookie('filtryPlanuVyvoje'));
    alert(pole);*/
    dojo.byId('ajax-loader-obr').style.display = 'inline';
    dojo.query(".prepinac").forEach(
        function (e) {
            dojo.connect(e, 'onclick', prepni);
        }
    );

    dojo.connect(dojo.byId('t-termin'), 'onchange', prepni);

    var dialog = new dijit.Dialog({
        title: "Zařazení požadavku do aktivního plánu vývoje",
        id: "aktivuj"
    }, dojo.byId("aktivuj"));

    dialog = new dijit.Dialog({
        title: "Vyřazení požadavku z aktivního plánu vývoje",
        id: "deaktivuj"
    }, dojo.byId("deaktivuj"));

    var datum = dojo.byId('termin-planovani').value;
    var dat = new Date(datum.substr(0, 4), Number(datum.substr(4, 2)) - 1, datum.substr(6, 2));
    var dj_termin_planovani = new dijit.form.DateTextBox(
    {
        id: "termin-planovani",
        name: "termin-planovani",
        style: "width:8em;",
        onChange: ulozNastaveniDoCookie
    },
    dojo.byId('termin-planovani')
    );
    dj_termin_planovani.set('value', dat);

    dojo.connect(dojo.byId('zobrazovat-hodiny-zdroje'), 'onchange', ulozNastaveniDoCookie);
    dojo.connect(dojo.byId('u-puv-projekt'), 'onchange', prepni);
    dojo.connect(dojo.byId('m-puv-pm'), 'onchange', prepni);

    if (dojo.byId('zobrazovat-hodiny-zdroje').value == '-') {
        vytvorZruseniRezervaci('zrus-rezervace-obal');
    }

    dojo.query(".aktivace").forEach(
        function (e) {
            dojo.connect(e, 'onclick', aktivuj);
        }
    );
    dojo.query(".deaktivace").forEach(
        function (e) {
            dojo.connect(e, 'onclick', deaktivuj);
        }
    );

    dojo.query(".vice-nazvu").forEach(
        function (e) {
            nazvyInfo(e);
            //dojo.connect(e, 'onmouseover', nazvyInfo);
        }
    );
    //function (f) {f.target.style.backgroundColor = 'red'}
    function pozadi(e, barva) {
        dojo.query('td', e).forEach(
            function (g) {
                if (!dojo.hasClass(g, 'prior')) {
                    g.style.backgroundColor = barva;
                }
            });
    }
    dojo.query("tr.tab").forEach(
        function (e) {
            dojo.connect(e, 'onmouseover', function (f) {
                                                pozadi(e, '#eeeeee');
                                            });
            dojo.connect(e, 'onmouseout', function (f) {
                                                pozadi(e, '#f9f9f9');
                                            });
        }
    );

    dojo.connect(dojo.byId('a-termin'), 'onchange', zmenaHodnotRezervace);
    dojo.connect(dojo.byId('a-termin-anal'), 'onchange', zmenaHodnotRezervace);
    dojo.connect(dojo.byId('a-anal-rez'), 'onchange', zmenaHodnotRezervace);
    dojo.connect(dojo.byId('a-prog-rez'), 'onchange', zmenaHodnotRezervace);
    dojo.connect(dojo.byId('pretizit-anal'), 'onchange', function () {
                                                            aktivuj(dojo.byId('a-idpoz').innerHTML, false, 'pretizit-anal');
                                                        });
    dojo.connect(dojo.byId('pretizit-prog'), 'onchange', function () {
                                                            aktivuj(dojo.byId('a-idpoz').innerHTML, false, 'pretizit-prog');
                                                        });
    dojo.connect(dojo.byId('a-enter'), 'onclick', rezervuj);
    dojo.connect(dojo.byId('de-enter'), 'onclick', odrezervuj);
    dojo.connect(dojo.byId('rez-anal'), 'onclick', rezervujAnalChange);
    dojo.connect(dojo.byId('rez-prog'), 'onclick', rezervujAnalChange);
    //dojo.connect(dojo.byId('seznam-koucu'), 'onchange', function () {window.location.href = '/prehledy/kapacity/plan/kouc/' + dojo.byId('seznam-koucu').value;})
    //dropdown menu tlacitka
    var ka = '';
    dojo.query(".dd10").forEach(
    function (e) {
        ka = e.id.substr(6);
        e.appendChild(vytvorDdMenuPv10(ka).domNode);
    });
    dojo.query(".dd20").forEach(
    function (e) {
        ka = e.id.substr(6);
        e.appendChild(vytvorDdMenuPv20(ka).domNode);
    });
    dojo.byId('ajax-loader-obr').style.display = 'none';
    console.timeEnd('planVyvojeOnLoad');//#DBG;
    //console.profileEnd();//#DBG;
}

/* =====================================================================================================
   plugin_dotazniky.js
   ===================================================================================================== */
function dotaznikyOnLoad() {
    dojo.query(".odpoved").forEach(
        function (el) {
            dojo.connect(el, 'click', 'odpovedZmena');
        });


    dojo.query(".odpoved_text").forEach(
        function (el) {
            dojo.connect(el, 'keyup', 'odpovedZmenaText');
        });
}

function odpovedZmena(evt) {
    //  alert(evt.target);
    if (evt.target) {
        var doklad    = evt.target.form.doklad.value;
        var id_otazky = evt.target.form.id_otazky.value;
        var polozka = evt.target.value;
        var checked = evt.target.checked;



        dojo.xhrGet({
            url: '/admin/ajax/nacti/prikaz/ajax_dotaznik/parametry/' + doklad + '---' + id_otazky + '---' +  polozka + '---' + checked,
            handleAs: 'json',
            load: function (data) {

            },
            error: function (err) {
                //alert(err);
            }
        });



    }

}

function odpovedZmenaText(evt) {
    //  alert(evt.target);
    if (evt.target) {
        var doklad    = evt.target.form.doklad.value;
        var id_otazky = evt.target.form.id_otazky.value;
        var polozka   = encodeURIComponent(evt.target.value);


        //alert('post!');

        dojo.xhrPost({
         //   url: '/admin/ajax/uloz/prikaz/ajax_dotaznik/parametry/' + doklad + '---' + id_otazky + '---' +  polozka.replace(/ /g, ';SPACE;').replace(/</g,';LT;').replace(/&/g,';AMP;').replace(/---/g,';M;'),
            url: '/admin/ajax/uloz/',
            handleAs: 'text',
            sync: false,
           // postData: "Some random text",


            content: {
                data: polozka,
                doklad: doklad,
                id_otazky: id_otazky
               // command: 'ajax_dotaznik'
            },

            load: function (data) {

            },
            error: function (err) {
               // alert(err);
            }
        });



    }

}

/* =====================================================================================================
   plugin_skupiny.js
   ===================================================================================================== */
function skupinyOnLoad() {

   // alert('on load');
    var popelnice = new dijit.layout.TabContainer({
        id: 'mainTabContainer',
        style: 'width:98%;height:80%;'
    }, dojo.byId('mainTabContainer'));


    var zadani = new dijit.layout.ContentPane({
        id: 'zadani',
        title: 'Souhrn',
        style: 'overflow: auto;',
        parseOnLoad: false,
        href: '/prehledy/skupiny/detail/id/'  + dojo.byId('id_skup').value + '/cast/zadani'
    }, dojo.byId('zadani'));
    zadani.attr('class', 'p10');

    var pripady = new dijit.layout.ContentPane({
        id: 'pripady',
        title: 'Případy',
        style: 'overflow: auto;',
        parseOnLoad: false,
        href: '/prehledy/skupiny/detail/id/'  + dojo.byId('id_skup').value + '/cast/pripady'
    }, dojo.byId('pripady'));
    pripady.attr('class', 'p10');

    var lide = new dijit.layout.ContentPane({
        id: 'lide',
        title: 'Lidé',
        style: 'overflow: auto;',
        parseOnLoad: false,
        href: '/prehledy/skupiny/detail/id/'  + dojo.byId('id_skup').value + '/cast/lide'
    }, dojo.byId('lide'));
    lide.attr('class', 'p10');

    var udalosti = new dijit.layout.ContentPane({
        id: 'udalosti',
        title: 'Události',
        style: 'overflow: auto;',
        parseOnLoad: false,
        href: '/prehledy/skupiny/detail/id/'  + dojo.byId('id_skup').value + '/cast/udalosti'
    }, dojo.byId('udalosti'));
    udalosti.attr('class', 'p10');


    new dijit.form.Textarea({
        style: 'width:1000px;border:2px solid #ccffff;',
        name: 'poznamka',
        id: 'poznamka'
    }, dojo.byId('poznamka'));

    dojo.connect(lide, 'onLoad', 'initFormular');




//popelnice.addChild(zadani);
//popelnice.selectChild(zadani);

    initFormular();


    popelnice.startup();
}

/* =====================================================================================================
   rozpody.js
   ===================================================================================================== */
function inicializujRozpory() {

    new dijit.form.Textarea({
        style: 'width:1000px;border:2px solid #ffccff;',
        name: 'descr2',
        id: 'descr2'
    }, dojo.byId('descr2'));

}

/* =====================================================================================================
   seznam_oznameni.js
   ===================================================================================================== */
function aktualizuj_oznameni() {
    dojo.byId('ajax-loader-obr').style.display = 'inline';
    dojo.byId('form_seznam').submit();
}

function oznameniOnLoad() {
	//pozadovane knihovny
	dojo.require("dijit.form.CheckBox");
}

/* =====================================================================================================
   seznam_vykazu.js
   ===================================================================================================== */
function verifikuj() {
    //alert('zdar');
    var vykazy = '';
    dojo.query(".check").forEach(
        function (inputElement) {
            if (inputElement.checked === true) {
                vykazy = vykazy + ',' + inputElement.id.substr(6);
            }
        }
    );
    //console.debug('vykazy k verifikaci: ' + vykazy.substr(1));//#DBG;
    if (vykazy === '') {
        alert('Chyba: nebyly vybrány žádné výkazy k verifikaci.');
        return false;
    } else {
        return true;
    }
}

/* =====================================================================================================
   odvadeni.js
   ===================================================================================================== */
ka.odvadeni = {
    pocet_etap: 0,
    pocet_pozadavku: 0,

    dialogOdvadeni: function() {
        /*
                    funkce vraci dialog odvadeni
                    pokud v danou chvili neexistuje, vygeneruje jej
            */
        var dialog = dijit.byId('odvadeni-podrobnosti');
        //vytvoreni samotneho dialogu
        if (!dialog) {

            //nplneni vychozich hodnot
            var ukol = dojo.byId('defa_projekt');
            var defa_ukol = '';
            if (ukol) {
                defa_ukol = ukol.value;
            } else {
                defa_ukol = '-1';
            }
            //vytvoreni samotneho dialogu
            dialog = new dijit.Dialog({
                title: "Odvedení výkonu",
                id: "odvadeni-podrobnosti",
                onClose: function () {
                    return true;
                }
            }, dojo.byId("odvadeni-podrobnosti"));

            //odprac_datum
            new dijit.form.DateTextBox(
            {
                id: "odprac_datum",
                name: "odprac_datum",
                style: "width:9em;"
            },
            dojo.byId('odprac_datum')
                );
            var d = new Date();
            dijit.byId('odprac_datum').set('value', d);
            //auto
            zobrazCombo('auto', '/admin/ajax/nacti/prikaz/ajax_data_auta', '');
            //zakazka
            dojo.hitch(ka.odvadeni, zobrazCombo('projekt', '/admin/ajax/nacti/prikaz/ajax_data_projekty_skup', defa_ukol, 'skup', '', ka.odvadeni.projekt_onchange));

            //odv_pozn
            new dijit.form.Textarea(
            {
                id: "odv_pozn",
                name: "odv_pozn",
                style: "width:700px;"
            },
            dojo.byId('odv_pozn')
                );

            //pokud jdu z pripadu a vim pripad, doplnim jej do vazby
            if (dojo.byId('id_poz')) {
                dojo.byId('ka_vazba').value = dojo.byId('id_poz').value;
            }
            new dijit.form.Button({
                label: "Vymaž formulář",
                name: "odvadeni-reset",
                id: "odvadeni-reset",
                onClick: function () {
                    dojo.byId('prace_popis').value = '';
                    dojo.byId('odprac_zad').value = '';
                    dojo.byId('odprac').value = '0';
                    dojo.byId('odprac_od_zad').value = '';
                    dojo.byId('odprac_do_zad').value = '';
                    dojo.byId('fakturovat_zad').value = '';
                    dojo.byId('fakturovat').value = '0';
                    var dat = new Date();
                    dijit.byId('odprac_datum').attr('value', dat);
                    dojo.byId('defa_etapa').value = '0|||';
                    dojo.byId('defa_pozadavek').value = '0';
                    dojo.byId('operace').value = '';
                    dojo.byId('operace-odvedena').value = '';
                    dojo.byId('projekt').value = '0';
                    dojo.byId('cesta_zad').value = '';
                    dojo.byId('cesta').value = '0';
                    dojo.byId('cesta_km').value = '';
                    dojo.byId('cesta_km_c').value = '';

                    dojo.byId('cesta_popis').value = '';
                    //dijit.byId('auto').set('value', 'STD|');
                    /** @todo overit ulozeni bez zadaneho auta - byvalo tam STD| a ted je tam nic... */
                    dojo.byId('ubytovani').value = '';
                    dojo.byId('ubytovani_popis').value = '';
                    dojo.byId('ubytovani_skym').value = '';
                    dojo.byId('ostatni').value = '';
                    dojo.byId('ostatni_popis').value = '';
                    dojo.byId('ka_vazba').value = '';
                    dijit.byId('odv_pozn').attr('value', '');
                    dojo.byId('ajax-loader-obr').style.display = 'none';
                }
            }, dojo.byId('odvadeni-reset'));

            new dijit.form.Button({
                label: "Uložit",
                name: "odved-praci",
                id: "odved-praci",
                onClick: function () {
                    odvadeni_submit();
                }
            }, dojo.byId('odved-praci'));

            //a ted pripojeni udalosti
            dojo.connect(dojo.byId('odprac_zad'), "onchange", cas, "NormalizujCas");
            dojo.connect(dojo.byId('odprac_zad'), "onchange", cas, "ZpracujCas");
            dojo.connect(dojo.byId('odprac_zad'), "onchange", cas, "VypocitejOdvadeni");
            dojo.connect(dojo.byId('odprac_od_zad'), "onchange", cas, "NormalizujCas");
            dojo.connect(dojo.byId('odprac_od_zad'), "onchange", cas, "ZpracujCas");
            dojo.connect(dojo.byId('odprac_do_zad'), "onchange", cas, "NormalizujCas");
            dojo.connect(dojo.byId('odprac_do_zad'), "onchange", cas, "ZpracujCas");
            dojo.connect(dojo.byId('fakturovat_zad'), "onchange", cas, "NormalizujCas");
            dojo.connect(dojo.byId('fakturovat_zad'), "onchange", cas, "ZpracujCas");
            dojo.connect(dojo.byId('odprac_od_zad'), "onchange", cas, "VypocitejOdvadeni");
            dojo.connect(dojo.byId('odprac_do_zad'), "onchange", cas, "VypocitejOdvadeni");
            dojo.connect(dojo.byId('cesta_km'), "onchange", cas, "VypocitejOdvadeni");
            dojo.connect(dojo.byId('cesta_zad'), "onchange", cas, "NormalizujCas");
            dojo.connect(dojo.byId('cesta_zad'), "onchange", cas, "ZpracujCas");
            dojo.connect(dojo.byId('cesta_zad'), "onchange", cas, "VypocitejOdvadeni");
            dojo.connect(dojo.byId('ubytovani'), "onchange", cas, "VypocitejOdvadeni");
            dojo.connect(dojo.byId('ostatni'), "onchange", cas, "VypocitejOdvadeni");
            dojo.connect(dojo.byId('cesta_km'), 'onchange', CeskeCisloEvent);
            dojo.connect(dojo.byId('cesta_km_c'), 'onchange', CeskeCisloEvent);
            dojo.connect(dojo.byId('ubytovani_noci'), 'onchange', CeskeCisloEvent);
            dojo.connect(dojo.byId('ostatni'), 'onchange', CeskeCisloEvent);
            dojo.connect(dojo.byId('ka_vazba'), 'onchange', kavazba_onchange);
            dojo.connect(dojo.byId('typ_vykonu'), 'onchange', ka.odvadeni, ka.odvadeni.fakturace);
            dojo.connect(dojo.byId('typ_vykonu'), 'onchange', ka.odvadeni, ka.odvadeni.stavFakturace);
            dojo.connect(dojo.byId('u_zakaznika'), 'onchange', u_zakaznika);
            //dojo.connect(dojo.byId('typ_vykonu'), 'onclick', ka.odvadeni, ka.odvadeni.fakturace);
            //dojo.connect(dojo.byId('typ_vykonu'), 'onclick', ka.odvadeni, ka.odvadeni.stavFakturace);
            dojo.connect(dojo.byId('u_zakaznika'), 'onclick', u_zakaznika);
            dojo.connect(dojo.byId('mpd_zad'), "onchange", cas, "NormalizujCas");
            dojo.connect(dojo.byId('mpd_zad'), "onchange", cas, "ZpracujCas");
            dojo.connect(dojo.byId('mpd_od_zad'), "onchange", cas, "NormalizujCas");
            dojo.connect(dojo.byId('mpd_do_zad'), "onchange", cas, "NormalizujCas");
            dojo.connect(dojo.byId('mpd_od_zad'), "onchange", cas, "VypocitejOdvadeni");
            dojo.connect(dojo.byId('mpd_do_zad'), "onchange", cas, "VypocitejOdvadeni");
            dojo.connect(dojo.byId('projekt'), 'onchange', ka.odvadeni, ka.odvadeni.projekt_onchange);
            dojo.connect(dojo.byId('etapa'), 'onchange', ka.odvadeni, ka.odvadeni.etapa_onchange);
            dojo.connect(dojo.byId('pozadavek'), 'onchange', ka.odvadeni, ka.odvadeni.pozadavek_onchange);
            dojo.connect(dojo.byId('cesta_km_c'), 'onchange', cesta_change);
        }
        //nastaveni fakturace podle pripadu
        if (dojo.byId('k_fakturaci')) {
            if (Number(dojo.byId('k_fakturaci').value) === 0 || dojo.byId('k_fakturaci').value == 20) {
                dojo.byId('typ_vykonu').value = 'n';
            } else {
                dojo.byId('typ_vykonu').value = 'f';
            }
        }
        //a jeste nastaveni uvodnich zobrazeni
        //alert('po nastaveni');
        ka.odvadeni.fakturace();
        u_zakaznika();
        return dialog;
    },

    etapa_onchange: function() {
        console.debug('Zmenila se etapa v odvadeni...');//#DBG;
        var etapa = dojo.byId('etapa'), pozadavek = dojo.byId('pozadavek'), defa_pozadavek = dojo.byId('defa_pozadavek'), defa_hodnota = '', ajax_running = dojo.byId('ajax-loader-obr');
        if (defa_pozadavek) {
            defa_hodnota = defa_pozadavek.value;
        }
        pozadavek.disabled = true;
        dojo.hitch(ka.odvadeni, zobrazCombo('pozadavek', '/admin/ajax/nacti/prikaz/ajax_pozadavky_etapy_combo/parametry/' + encodeURI(etapa.value) + '---' + encodeURI(defa_hodnota), defa_hodnota, '', '', ka.odvadeni.pozadavek_onchange));
        pozadavek.disabled = false;
    },

    fakturace: function () {
        //alert(dojo.byId('typ_vykonu').value);
        if (dojo.byId('typ_vykonu').value == 'f') {
            dojo.byId('odvod-fakturace').style.display = 'block';
            dojo.byId('fakturovat_zad').value = dojo.byId('odprac_zad').value;
            dojo.byId('fakturovat').value = dojo.byId('odprac').value;
        } else {
            dojo.byId('odvod-fakturace').style.display = 'none';
            dojo.byId('fakturovat_zad').value = '';
            dojo.byId('fakturovat').value = 0;
        }
    },

    pozadavek_onchange: function () {
        //nacteni a zpracovani informaci o pozadavku
        console.debug('Pozadavek onchange funkce - start');//#DBG;
        console.time('Pozadavek onchange funkce.');//#DBG;
        if (dojo.byId('defa_pozadavek') && dojo.byId('doklad_vykazu').value !== '') {
            if (dojo.byId('pozadavek').value != dojo.byId('defa_pozadavek').value  && dojo.byId('ka_vazba').value > '' && dojo.byId('defa_pozadavek').value !== '' && dojo.byId('pozadavek').value !== '') {
				console.debug('Zmena pozadavku v odvadeni. Defa pozadavek: ' + dojo.byId('defa_pozadavek').value + ', aktualni pozadavek: ' + dojo.byId('pozadavek').value + ', vazba na KA; ' + dojo.byId('ka_vazba').value);//#DBG;
                if (confirm('Došlo ke změně požadavku, přejete si VYMAZAT vazbu na KA?')) {
                    dojo.byId('ka_vazba').value = '';
                }
            }
        }
        dojo.xhrGet({
            url: "/admin/ajax/nacti/prikaz/ajax_pozadavek_info_odvod/parametry/" + dojo.byId('pozadavek').value + '|' + dojo.byId('projekt').value,
            handleAs: "json",
            load: function (data, args) {
                //console.dir(data);//#DBG;
                dojo.byId('odv_fakturovat').value = data.fakturovat;
                dojo.byId('odv_fakt_proj').value = data.fakt_proj;
                dojo.byId('odv_jiz_odvedeno').value = data.jiz_odvedeno;
                dojo.byId('odv_kalkulace_hod').value = data.kalkulace_hod;
                dojo.byId('odv_kalkulace_mm').value = data.kalkulace_mm;
                dojo.byId('odv_hl_poz').value = data.hl_poz;
                dojo.query(".mena").forEach(
                    function (el) {
                        el.innerHTML = data.mena;
                    }
                );
                dojo.hitch(ka.odvadeni, ka.odvadeni.stavFakturace());
				console.debug('odvedena operace: ', dojo.byId('operace-odvedena').value);//#DBG;
				if (dojo.trim(dojo.byId('operace-odvedena').value) != '') { //editace odvadeciho dialogu, tim padem pouziji operaci, ktera byla skutecne odvedena
					console.debug('Zobrazeni comba operace s defa hodnotou ', dojo.byId('operace-odvedena').value);//#DBG;
					zobrazCombo('operace', '/admin/ajax/nacti/prikaz/ajax_data_operace_odvod/parametry/' + dojo.byId('odvadejici').value + '---' + dojo.byId('pozadavek').value + '---' + dojo.byId('doklad_vykazu').value + '---' + dojo.byId('polozka_vykazu').value + '---' + dojo.byId('operace-odvedena').value, dojo.byId('operace-odvedena').value, 'skupina');
				} else {
					console.debug('Zobrazeni comba operace s defa hodnotou ', data.operace);//#DBG;
					zobrazCombo('operace', '/admin/ajax/nacti/prikaz/ajax_data_operace_odvod/parametry/' + dojo.byId('odvadejici').value + '---' + dojo.byId('pozadavek').value + '---' + dojo.byId('doklad_vykazu').value + '---' + dojo.byId('polozka_vykazu').value, data.operace, 'skupina');
				}
				console.debug('Pozadavek onchange konec - typ vykonu: ', dojo.byId('typ_vykonu').value, ', fakturacni cas: ', dojo.byId('fakturovat').value);//#DBG;
		        console.timeEnd('Pozadavek onchange funkce.');//#DBG;
            },
            // if any error occurs, it goes here:
            error: function (error, args) {
                console.warn("Chyba pri nacitani informaci o odvadenem pozadavku ", error);//#DBG;
		        sconsole.timeEnd('Pozadavek onchange funkce.');//#DBG;
            }
        });
    },

    projekt_onchange: function () {
        var projekt = dojo.byId('projekt'), etapa = dojo.byId('etapa'), defa_etapa = dojo.byId('defa_etapa'), pozadavek = dojo.byId('pozadavek'), defa_hodnota = '';
        if (defa_etapa) {
            defa_hodnota = defa_etapa.value;
        } else {
            defa_hodnota = '1|||';
        }
        etapa.disabled = true;
        console.debug('Zmenim etapu...');//#DBG;
        dojo.hitch(ka.odvadeni, zobrazCombo('etapa', '/admin/ajax/nacti/prikaz/ajax_data_etapy/parametry/' + projekt.value, defa_hodnota, '', '', ka.odvadeni.etapa_onchange));
        console.debug('...zmenil jsem etapu');//#DBG;
        etapa.disabled = false;
    },

    stavFakturace: function () {
        //alert('info');
        var mess = dojo.byId('odv_fakturace_info'), odv_fakturovat = dojo.byId('odv_fakturovat').value, fakturovat_zad = dojo.byId('fakturovat_zad'),
            odv_kalkulace_mm = dojo.byId('odv_kalkulace_mm').value, odv_kalkulace_hod = dojo.byId('odv_kalkulace_hod').value,
            odv_jiz_odvedeno = dojo.byId('odv_jiz_odvedeno').value, fakturovat = dojo.byId('fakturovat'),
            fakt_proj = dojo.byId('odv_fakt_proj').value, typ_vykonu = dojo.byId('typ_vykonu'), odv_hl_poz = dojo.byId('odv_hl_poz').value,
            id_ukolu = dojo.byId('projekt').value, zpusob_fakturace = 0;
        var zprava = '';
		console.debug('Stav fakturace, ID ukolu: ', id_ukolu);//#DBG;
        if (Number(id_ukolu) > 1) {
            //nejprve typ fakturace
            //alert(fakt_proj);
            if (Number(fakt_proj) == 5) {//na projektu je zakazana fakturace
                typ_vykonu.value = 'n';
                ka.odvadeni.fakturace();
                zprava = 'Na projektu je zakázán odvod fakturační práce';
                typ_vykonu.disabled = true;
                console.debug('Mazu fakturaci: zakaz fakturace na projektu');//#DBG;
				fakturovat.value = 0;
                fakturovat_zad.value = '';
                dojo.byId('odvod-fakturace').style.display = 'none';
            } else {
                if (odv_fakturovat === '0' && fakt_proj != '20') { //pozadavek je nastaven jako nefakturacni a na projekty neni nastaveno fakturovat jinak
                    typ_vykonu.disabled = true;
                    typ_vykonu.value = 'n';
	                console.debug('Mazu fakturaci: nefakturacni pozadavek');//#DBG;
                    fakturovat.value = 0;
                    fakturovat_zad.value = '';
                    dojo.byId('odvod-fakturace').style.display = 'none';
                } else {
                    typ_vykonu.disabled = false;
                }
                //alert(Number(odv_hl_poz.value));
                //zprava = '(P: ' + id_ukolu + '-' + fakt_proj + 'P: ' + odv_hl_poz + '-' + odv_fakturovat + ')';
                if (Number(odv_hl_poz) > 1) { //znam konkretni pozadavek KA
                    zpusob_fakturace = odv_fakturovat;
                    zprava += 'Požadavek ';
                } else { //neznam KA - tj. beru z projektu
                    zpusob_fakturace = fakt_proj;
                    zprava += 'Projekt ';
                }
                switch (zpusob_fakturace) {
                case '0':
                case '5': //nefakturascni nebo zakazana fakturace
                    zprava += 'není fakturační.';
                    break;
                case '10':
                case '15': //fakturuje se primo
                    zprava += 'je fakturován přímo.';
                    if (Number(odv_hl_poz) > 1) {
                        zprava += ' Kalkulace: ' + odv_kalkulace_hod + 'čh.';
                    }
                    if (Number(dojo.byId('fakturovat_zad').value) !== 0) {
                        dojo.byId('typ_vykonu').value = 'f';
                        dojo.byId('odvod-fakturace').style.display = '';
                    }
                    break;
                case '20'://fakturuje se jinak nebo dle rozpoctu
                    zprava += 'je fakturován jinak.';
                    if (Number(dojo.byId('fakturovat_zad').value) !== 0) {
                        dojo.byId('typ_vykonu').value = 'f';
                        dojo.byId('odvod-fakturace').style.display = '';
                    }
                    if (Number(odv_hl_poz) > 1) {
                        zprava += ' Kalkulace: ' + odv_kalkulace_mm + ',-.';
                    }
                    break;
                }
            }
            if (Number(odv_jiz_odvedeno) > 0) {
                zprava += ' Již odvedeno ' + odv_jiz_odvedeno + 'čh.';
            }

            //obarveni zpravy
            if (
                (zpusob_fakturace == '0' && typ_vykonu.value == 'f') /* ozna4eno jako fakturacni prace, prestoze to ma byt nefakturacni */
                    || (fakt_proj == '5' && (Number(odv_jiz_odvedeno) + Number(fakturovat)) > 0) /*na projektu se zakazanou fakuraci je odvedena nejak fakturacni prace */
                    || (zpusob_fakturace == '0' && (Number(odv_jiz_odvedeno) + Number(fakturovat)) > 0) /*na nefakturacni pozadavek je odvedena nejaka nefakturacni prace */
                    || (Number(odv_hl_poz) > 1 && (odv_fakturovat == '10' || odv_fakturovat == '15') && (Number(odv_jiz_odvedeno) + Number(fakturovat)) > Number(odv_kalkulace_hod)) /*odvadeno v sume vic fakturacnich hodin, nez je kalkulace */
                    || (Number(odv_hl_poz) > 1 && odv_fakturovat == '20' && ((Number(odv_jiz_odvedeno) + Number(fakturovat)) * 1250) > Number(odv_kalkulace_mm)) /*odvedene hodiny v obvykle sazbe jsou vic nez kalkulace v penezich */) {
                mess.style.fontWeight = 'bold';
                mess.style.color = 'red';

            } else {
                mess.style.fontWeight = 'normal';
                mess.style.color = 'black';

            }
            //obarveni typu vykonu
            if (
                (odv_fakturovat == '0' && typ_vykonu.value == 'f') /* ozna4eno jako fakturacni prace, prestoze to ma byt nefakturacni */
                ) {
                typ_vykonu.style.fontWeight = 'bold';
                typ_vykonu.style.color = 'red';


            } else {
                typ_vykonu.style.fontWeight = 'normal';
                typ_vykonu.style.color = 'black';

            }
        }
        mess.innerHTML = zprava;
		//a pokud je to ve finale nefakturacni, vymazat hodnoty k fakturaci
		console.debug('Osetreni nefakturace');//#DBG;
		if (typ_vykonu.value == 'n') {
			console.debug('Nefakturacni vykon - mazu uvedenou fakturacni praci');//#DBG;
			fakturovat_zad.value = '';
			fakturovat.value = 0;
		} 
		console.debug('stavFakturace konec - typ vykonu: ', dojo.byId('typ_vykonu').value, ', fakturacni cas: ', dojo.byId('fakturovat').value);//#DBG;
    },

    xxx: function() {
    }

};

var cas = {
    NormalizujCas: function (event) {
        //upravi cas zadanyv povolenych formatech na cas ve formatu h:m
        //console.debug('Normalizuj cas - vstup: ' +  event.target.value);//#DBG;
        //return false;
        var ma_hodiny = false, hodiny = 0, minuty = 0, chyba = false, rozpad = [];
        var ma_minus  = false;
        var vstup = CeskeCislo(event.target.value.toLowerCase().replace(/ /gi, '').replace(/,/gi, '.'));
        if (vstup.substring(0, 1) == '-') {
            ma_minus = true;
            vstup = vstup.substring(1);
        }

        vstup = '0'.concat(vstup); //protoze nula na zacatku nic neovlivni, ale vyresi se vyhodnoceni vyrazu :mm a hmm
        //console.debug('Vyhodnocovat se bude: ' +  vstup);//#DBG;
        if (Number(vstup)) { //uz je to cislo, nemusim dal nic delat - v hodinach
            //console.debug('...je to cislo');//#DBG;
            hodiny = Math.floor(Number(vstup));
            //console.debug('...konkretne cislo ' + hodiny);//#DBG;
            minuty = Math.floor(((Number(vstup) - hodiny) * 6000) / 100);
        } else {
            //zkusim zjistit, jestli jsou zde hodiny - znaky h nebo :
            if (vstup.indexOf(':') != -1) {
                rozpad = vstup.split(':');
                ma_hodiny = true;
            }
            if (vstup.indexOf('h') != -1) {
                rozpad = vstup.split('h');
                ma_hodiny = true;
            }
            if (ma_hodiny) { //nalezen separator hodin, predpokladam tedy, ze jsou tam bud jen hodiny nebo hodiny a minuty
                if (rozpad.length == 1 || rozpad[1] === '') { //nalezeny jen hodiny
                    if (Number(rozpad[0])) { //hodiny jsou ok
                        hodiny = Number(rozpad[0]);
                        minuty = 0;
                    } else {
                        chyba = true;
                    }
                } else { //nalezeny i minuty
                    rozpad[1] = rozpad[1].replace(/m/gi, '');
                    if (Number(rozpad[0].concat('1')) && Number(rozpad[1].concat('1'))) { //pridavam jednicku, protoze nula se vyhodnoti jako false
                        hodiny = Number(rozpad[0]);
                        minuty = Number(rozpad[1]);
                        // osetreni minut vetsich nez 60
                        while (minuty >= 60) {
                            hodiny++;
                            minuty = minuty - 60;
                        }
                    } else {
                        chyba = true;
                    }
                }
            } else { //hodiny nenalezeny, tak ted by tam jeste mohly byt minuty
                vstup = vstup.replace(/m/gi, '');
                if (Number(vstup)) {
                    hodiny = 0;
                    minuty = Number(vstup);
                    // osetreni minut vetsich nez 60
                    while (minuty >= 60) {
                        hodiny++;
                        minuty = minuty - 60;
                    }
                } else {
                    chyba = true;
                }
            }
        }
        var vysl = '';
        if (!chyba) { //nalezen separator hodin, predpokladam tedy, ze jsou tam bud jen hodiny nebo hodiny a minuty
            //console.debug('...nebyla chyba - ' + '00'.concat(hodiny.toString()).substr(hodiny.toString().length,2));//#DBG;
            vysl = '00'.concat(hodiny.toString()).substr(hodiny.toString().length, 2) + ':' + '00'.concat(minuty.toString()).substr(minuty.toString().length, 2);
            if (ma_minus) {
                vysl = '-'.concat(vysl);
            }

        } else {
            //console.debug('...byla chyba');//#DBG;
            vysl = '';
        }
        //console.debug('Normalizace casu - vysledan hodnota: ' + vysl);//#DBG;
        event.target.value = vysl;
    },

    ZpracujCas: function (event) {
        //zpracuje cas = prvek by mel koncit _zad najde k nemu bez teto koncovky a do nej da cas prepocteny na desetinne cislo hodin
        //vychazim z predpokladu, ze zadany cas je jiz normalizovan...
        var id_zad = event.target.id, id_tran = id_zad.substr(0, id_zad.length - 4), tran = dojo.byId(id_tran), vysledek = 0;
        //console.debug('Zpracovani casu prvku ' + id_zad + ':' + event.target.value);//#DBG;

        var rozpad = event.target.value.split(':');
        if (rozpad.length == 2) { //cas byl ve spravnem formatu


            vysledek = Math.abs(Number(rozpad[0])) + Math.round(((Number(rozpad[1]) * 100) / 60)) / 100;
            if (Number(rozpad[0]) < 0) {
                vysledek = -1 * vysledek;
            }
        //console.debug('Odpracovana doba v hod - do prvku ' + id_tran + ': ' + vysledek);//#DBG;
        } else { //nespravny forma casu
            vysledek = 0;
        }


        tran.value = vysledek.toString();
        if (id_zad == 'fakturovat_zad') {
            ka.odvadeni.stavFakturace();
        }
        return true;
    },

    VypocitejOdvadeni: function (event) {
        //vypocita casy odpracovane doby a cesty
        //console.debug('Vypocet odvadeni - zmeneny prvek: ' + event.target.id + ' hodnota: ' + event.target.value);//#DBG;
        var idz = event.target.id; //id meneneho prvku - kvuli jednodussimu zapisu ;-)
        var prace_min = 0, casod = new Date(), casdo = new Date();
        var od_rozpad = [], do_rozpad = [], minuty = 0;

        switch (idz) {
        case 'odprac_zad':
            if (dojo.byId('fakturovat_zad').value === '' && dojo.byId('typ_vykonu').value == 'f') {
                dojo.byId('fakturovat_zad').value = dojo.byId('odprac_zad').value;
                dojo.byId('fakturovat').value = dojo.byId('odprac').value;
            } else if (dojo.byId('typ_vykonu').value == 'n') {
                dojo.byId('fakturovat_zad').value = '';
                dojo.byId('fakturovat').value = 0;
            }
            break;
        case 'odprac_od_zad':
        case 'odprac_do_zad':
            if (dojo.byId('odprac_od_zad').value !== '' && dojo.byId('odprac_do_zad').value !== '') {
                od_rozpad = dojo.byId('odprac_od_zad').value.split(':');
                do_rozpad = dojo.byId('odprac_do_zad').value.split(':');
                casod.setHours(od_rozpad[0]);
                casod.setMinutes(od_rozpad[1]);
                casod.setSeconds(0);
                casdo.setHours(do_rozpad[0]);
                casdo.setMinutes(do_rozpad[1]);
                casdo.setSeconds(0);
                minuty = dojo.date.difference(casod, casdo, 'minute');
                dojo.byId('odprac_zad').value = MinutyNaCas(minuty);
                dojo.byId('odprac').value = Math.round((Number(minuty) * 100) / 60) / 100;
                //console.debug('--- odpracovany cas: ' + minuty + ' min., tj. ' + dojo.byId('odprac').value + 'hod');//#DBG;
                prace_min = Number(minuty);
                if (dojo.byId('typ_vykonu').value == 'f') {
                    dojo.byId('fakturovat_zad').value = dojo.byId('odprac_zad').value;
                    dojo.byId('fakturovat').value = dojo.byId('odprac').value;
                }
            }
            break;
        case 'mpd_od_zad':
        case 'mpd_do_zad':
            if (dojo.byId('mpd_od_zad').value !== '' && dojo.byId('mpd_do_zad').value !== '') {
                od_rozpad = dojo.byId('mpd_od_zad').value.split(':');
                do_rozpad = dojo.byId('mpd_do_zad').value.split(':');
                casod.setHours(od_rozpad[0]);
                casod.setMinutes(od_rozpad[1]);
                casod.setSeconds(0);
                casdo.setHours(do_rozpad[0]);
                casdo.setMinutes(do_rozpad[1]);
                casdo.setSeconds(0);
                minuty = dojo.date.difference(casod, casdo, 'minute');
                dojo.byId('mpd_zad').value = MinutyNaCas(minuty);
                dojo.byId('mpd').value = Math.round((Number(minuty) * 100) / 60) / 100;
            //console.debug('--- odpracovany cas: ' + minuty + ' min., tj. ' + dojo.byId('odprac').value + 'hod');//#DBG;
            }
            break;
        }
        //a konecne soucty
        aktualizujSouctyOdvadeni();
        ka.odvadeni.stavFakturace();
        return false;
    }
};

function aktualizujSouctyOdvadeni() {
    dojo.byId('doba_celkem').innerHTML = Number(dojo.byId('odprac').value) + Number(CeskeCislo(dojo.byId('cesta').value));
    dojo.byId('vzdalenost_celkem').innerHTML = Number(CeskeCislo(dojo.byId('cesta_km').value)) + 0;
    dojo.byId('naklady_celkem').innerHTML = Number(CeskeCislo(dojo.byId('ubytovani').value.replace(/,/gi, '.'))) + Number(CeskeCislo(dojo.byId('ostatni').value.replace(/,/gi, '.')));
}

function zobrazOdvadeni(akce) {
    //alert(arguments[1] + '-' +arguments[3] + '-' +arguments[3] + '-');
    var ajax_running = dojo.byId('ajax-loader-obr');
    ajax_running.style.display = 'inline';
    //akce - insert,edit,show
    var dialog = ka.odvadeni.dialogOdvadeni();
    //nejprve smazu vsechno, co v dialogu bylo a pak pripadne nactu, co je potreba
    switch (akce) {
    case 'insert':
     //   dojo.byId('odvadeni_nadpis').innerHTML = '<h2>Nový odvod práce</h2>';
        dijit.byId('odved-praci').disabled = false;
        dijit.byId('odvadeni-reset').disabled = false;
        dijit.byId('odprac_datum').set('readOnly', false);
        dojo.byId('doklad_vykazu').value = '';
        dojo.byId('polozka_vykazu').value = '';
        dialog.show();
        ajax_running.style.display = 'none';
        break;
    case 'edit':
   //     dojo.byId('odvadeni_nadpis').innerHTML = '<h3>Editace položky výkazu ' + arguments[1] + '-' + arguments[2] + '</h3>';
        dojo.byId('doklad_vykazu').value = arguments[1];
        dojo.byId('polozka_vykazu').value = arguments[2];
        if (arguments.length > 2) {
            dojo.byId('poradi-radku-odvodu').value = arguments[3];
        }
        dijit.byId('odved-praci').disabled = false;
        dijit.byId('odvadeni-reset').disabled = false;
        dijit.byId('odprac_datum').attr('readOnly', true);
        dojo.xhrGet({
            url: "/admin/ajax/nacti/prikaz/ajax_odvod_info/parametry/" + arguments[1] + '---' + arguments[2],
            handleAs: "json",
            load: function (data, args) {
                dojo.byId('prace_popis').value = data.popis;
                if (data.user_priplatek == '1') {
                    dojo.byId('mpd_zad').value = MinutyNaCas(Math.ceil((data.hodin_odv * 6000) / 100));
                    dojo.byId('mpd').value = data.hodin_odv;
                    dojo.byId('mpd_od_zad').value = data.doba_od.substr(0, 5);
                    dojo.byId('mpd_do_zad').value = data.doba_do.substr(0, 5);
                }

            //    alert('pred nastavenim typu vykonu')

                if (Number(data.mnozstvi_fak) !== 0) {
                    dojo.byId('typ_vykonu').value = 'f';
                    dojo.byId('odvod-fakturace').style.display = 'block';
                } else {
                    dojo.byId('typ_vykonu').value = 'n';
                    dojo.byId('odvod-fakturace').style.display = 'none';
                }

              //  alert('po nastaveni typu vykonu')

                dojo.byId('odprac_zad').value = MinutyNaCas(Math.ceil((data.hodin_odv * 6000) / 100));
                dojo.byId('odprac').value = data.hodin_odv;
                dojo.byId('odprac_od_zad').value = data.doba_od.substr(0, 5);
                dojo.byId('odprac_do_zad').value = data.doba_do.substr(0, 5);
                dojo.byId('odprac').value = data.hodin_odv;
                dojo.byId('fakturovat_zad').value = MinutyNaCas(Math.ceil((data.mnozstvi_fak * 6000) / 100));
                dojo.byId('fakturovat').value = data.mnozstvi_fak;
                var dat = new Date(data.datum.substr(0, 4), (data.datum.substr(4, 2) - 1), data.datum.substr(6, 2));
                dijit.byId('odprac_datum').attr('value', dat);
                dojo.byId('defa_etapa').value = data.id_ukolu + '|' + data.xplan + '|' + data.typ_etapy + '|' + data.etapa;
                dojo.byId('defa_pozadavek').value = data.id_poz;
                //dijit.byId('projekt').attr('value', data.id_ukolu);
                dojo.byId('projekt').value = data.id_ukolu;
                dojo.byId('operace-odvedena').value = data.operace;
                ka.odvadeni.projekt_onchange();
                dojo.byId('cesta_zad').value = MinutyNaCas(Math.floor((data.user_cesta_hod * 6000) / 100));
                dojo.byId('cesta').value = data.user_cesta_hod;
                dojo.byId('cesta_km').value = data.user_cesta_km;
                dojo.byId('cesta_km_c').value = data.user_cesta_km_c;

                dojo.byId('cesta_popis').value = data.user_cesta_popis;
                dojo.byId('auto').value = data.user_auto;
                dojo.byId('ubytovani').value = data.user_ubyt_mm;
                dojo.byId('ubytovani_noci').value = data.user_ubyt_noci;
                dojo.byId('ubytovani_popis').value = data.user_ubyt_popis;
                dojo.byId('ubytovani_skym').value = data.user_ubyt_skym;
                dojo.byId('ostatni').value = data.user_naklady;
                dojo.byId('ostatni_popis').value = data.user_naklady_popis;
                dijit.byId('odv_pozn').attr('value', data.poznamka);
                dojo.byId('ka_vazba').value = data.ka_vazba;
                dojo.byId('ajax-loader-obr').style.display = 'none';
                dojo.byId('posubmitu').value = 'aktualizujSeznam(data);';
                if (data.user_nafirme == '0') {
                    dojo.byId('u_zakaznika').checked = true;
                } else {
                    dojo.byId('u_zakaznika').checked = false;
                }
                aktualizujSouctyOdvadeni();
                dialog.show();
                ajax_running.style.display = 'none';
                u_zakaznika();
                return false;
            },
            error: function (error, args) {
                alert('chyba: ' + error);
                console.warn("Chyba pri zjisteni informaci o polozce vykazu: " + error);//#DBG;
                //alert('chyba: ' + error);
                dojo.byId('ajax-loader-obr').style.display = 'none';
                return false;
            }
        });
        break;
    case 'show':
      //  dojo.byId('odvadeni_nadpis').innerHTML = '<h2>Náhled položky výkazu ' + arguments[1] + '-' + arguments[2] + '</h2>';
        dijit.byId('odved-praci').disabled = true;
        dijit.byId('odvadeni-reset').disabled = true;
        dojo.byId('doklad_vykazu').value = '';
        dojo.byId('polozka_vykazu').value = '';
        dijit.byId('odprac_datum').attr('readOnly', true);
        dojo.xhrGet({
            url: "/admin/ajax/nacti/prikaz/ajax_odvod_info/parametry/" + arguments[1] + '---' + arguments[2],
            handleAs: "json",
            load: function (data, args) {
                if (data.user_priplatek == '1') {
                    dojo.byId('mpd_zad').value = MinutyNaCas(Math.ceil((data.hodin_odv * 6000) / 100));
                    dojo.byId('mpd').value = data.hodin_odv;
                    dojo.byId('mpd_od_zad').value = data.doba_od.substr(0, 5);
                    dojo.byId('mpd_do_zad').value = data.doba_do.substr(0, 5);
                }
                if (Number(data.mnozstvi_fak) !== 0) {
                    dojo.byId('typ_vykonu').value = 'f';
                    dojo.byId('odvod-fakturace').style.display = 'block';
                } else {
                    dojo.byId('typ_vykonu').value = 'n';
                    dojo.byId('odvod-fakturace').style.display = 'none';
                }
                if (data.user_nafirme == '0') {
                    dojo.byId('u_zakaznika').checked = true;
                } else {
                    dojo.byId('u_zakaznika').checked = false;
                }
                dojo.byId('odprac_zad').value = MinutyNaCas(Math.ceil((data.hodin_odv * 6000) / 100));
                dojo.byId('odprac').value = data.hodin_odv;
                dojo.byId('odprac_od_zad').value = data.doba_od.substr(0, 5);
                dojo.byId('odprac_do_zad').value = data.doba_do.substr(0, 5);
                dojo.byId('fakturovat_zad').value = MinutyNaCas(Math.ceil((data.mnozstvi_fak * 6000) / 100));
                dojo.byId('fakturovat').value = data.mnozstvi_fak;
                var dat = new Date(data.datum.substr(0, 4), (data.datum.substr(4, 2) - 1), data.datum.substr(6, 2));
                dijit.byId('odprac_datum').attr('value', dat);
                dojo.byId('prace_popis').value = data.popis;
                if (dojo.byId('defa_etapa')) {
                    dojo.byId('defa_etapa').value = data.id_ukolu + '|' + data.xplan + '|' + data.typ_etapy + '|' + data.etapa;
                }
                if (dojo.byId('defa_pozadavek')) {
                    dojo.byId('defa_pozadavek').value = data.id_poz;
                }
                //dijit.byId('projekt').attr('value', data.id_ukolu);
                dojo.byId('projekt').value = data.id_ukolu;
                zobrazCombo('projekt', '/admin/ajax/nacti/prikaz/ajax_data_projekty_skup/parametry/' + data.id_ukolu, data.id_ukolu, 'skup', '', ka.odvadeni.projekt_onchange);
                //projekt_onchange();
                dojo.byId('operace-odvedena').value = data.operace;
                dojo.byId('cesta_zad').value = MinutyNaCas(Math.floor((data.user_cesta_hod * 6000) / 100));
                dojo.byId('cesta').value = data.user_cesta_hod;
                dojo.byId('cesta_km').value = data.user_cesta_km;
                dojo.byId('cesta_km_c').value = data.user_cesta_km_c;

                dojo.byId('cesta_popis').value = data.user_cesta_popis;
                dojo.byId('auto').value = data.user_auto;
                dojo.byId('ubytovani').value = data.user_ubyt_mm;
                dojo.byId('ubytovani_noci').value = data.user_ubyt_noci;
                dojo.byId('ubytovani_popis').value = data.user_ubyt_popis;
                dojo.byId('ubytovani_skym').value = data.user_ubyt_skym;
                dojo.byId('ostatni').value = data.user_naklady;
                dojo.byId('ostatni_popis').value = data.user_naklady_popis;
                dojo.byId('ka_vazba').value = data.ka_vazba;
                dijit.byId('odv_pozn').attr('value', data.poznamka);
                dojo.byId('ajax-loader-obr').style.display = 'none';
                aktualizujSouctyOdvadeni();
                dialog.show();
                ajax_running.style.display = 'none';
                u_zakaznika();
                return false;
            },
            error: function (error, args) {
                alert('chyba: ' + error);
                console.warn("Chyba pri zjisteni informaci o polozce vykazu: " + error);//#DBG;
                //alert('chyba: ' + error);
                dojo.byId('ajax-loader-obr').style.display = 'none';
                return false;
            }
        });
        break;
    default:
     //   dojo.byId('odvadeni_nadpis').innerHTML = '';
        dijit.byId('odved-praci').disabled = false;
        dijit.byId('odvadeni-reset').disabled = false;
        dijit.byId('odprac_datum').attr('readOnly', false);
        dialog.show();
        ajax_running.style.display = 'none';
        break;
    }
}

function aktualizujSeznam(data) {
    //alert('aktualizace:' + data.doklad);
    //zjistim id_radku
    var radek = dojo.byId('poradi-radku-odvodu').value;
    //alert('Poradi radku: ' + radek);
    //alert('aktualizace ' + radek);
    //nejprve opravim sumy - potrebuji puvodni hodnoty
    //alert(Number(dojo.byId('odprac-sum').innerHTML) + '-' + Number(data.hodin_odv) + '-' + Number(dojo.byId('o_' + radek).innerHTML));
    dojo.byId('odprac-sum').innerHTML = Math.round((0 + Number(dojo.byId('odprac-sum').innerHTML) + Number(data.hodin_odv) - Number(dojo.byId('o_' + radek).innerHTML)) * 100) / 100;
    dojo.byId('fuck-sum').innerHTML = Math.round((0 + Number(dojo.byId('fuck-sum').innerHTML) + Number(data.mnozstvi_fak) - Number(dojo.byId('f_' + radek).innerHTML)) * 100) / 100;
    dojo.byId('nar-sum').innerHTML = Math.round((0 + Number(dojo.byId('nar-sum').innerHTML) + Number(data.user_hodiny_nar) - Number(dojo.byId('n_' + radek).innerHTML)) * 100) / 100;
    dojo.byId('cesta-sum').innerHTML = Math.round((0 + Number(dojo.byId('cesta-sum').innerHTML) + Number(data.user_cesta_hod) - Number(dojo.byId('c_' + radek).innerHTML)) * 100) / 100;
    //a pak jednotlive hodnoty
    dojo.byId('d-' + radek).innerHTML = data.datum.substr(6, 2) + "." + data.datum.substr(4, 2) + "." + data.datum.substr(0, 4);
    dojo.byId('o_' + radek).innerHTML = data.hodin_odv;
    dojo.byId('f_' + radek).innerHTML = data.mnozstvi_fak;
    dojo.byId('n_' + radek).innerHTML = data.user_hodiny_nar;
    dojo.byId('c_' + radek).innerHTML = data.user_cesta_hod;
    dojo.byId('u-' + radek).innerHTML = data.nazev_ukolu;
    dojo.byId('p-' + radek).innerHTML = data.popis;
    dojo.byId('e_' + radek).innerHTML = data.operace;
}


function u_zakaznika() {
    if (dojo.byId('u_zakaznika').checked) {
        dojo.byId('odvod-cesta').style.display = 'block';
    } else {
        dojo.byId('odvod-cesta').style.display = 'none';
        dojo.byId('cesta_km').value = '';
        dojo.byId('cesta_km_c').value = '';

        dojo.byId('auto').value = '';
        dojo.byId('cesta_popis').value = '';
        dojo.byId('cesta_zad').value = '';
        dojo.byId('cesta').value = '0';
        dojo.byId('ubytovani_noci').value = '';
        dojo.byId('ubytovani_popis').value = '';
        dojo.byId('ubytovani_skym').value = '';
        dojo.byId('ubytovani').value = '0';
        dojo.byId('ostatni').value = '';
        dojo.byId('ostatni_popis').value = '';
    }
    dijit.byId('odvadeni-podrobnosti').layout();
}


function kavazba_onchange(e) {
    CeskeCisloEvent(e);
}

function smazOdvadeni(id) {
    var skutecne = confirm('Opravdu chcete tento odvod práce smazat?');
    if (!skutecne) {
        return false;
    }
    //a dale tedy jdu, jen kdyz opravdu chce mazat...
    var ajax_running = dojo.byId('ajax-loader-obr');
    var dkl = dojo.byId('id-' + id).value;
    var rozpad = dkl.split('-');
    //alert('mazu to - id: ' + id + ' ' + rozpad[0] + ' ' + rozpad[1]);
    ajax_running.style.display = 'inline';
    //samotny ajax
    dojo.xhrGet({
        url: "/admin/ajax/nacti/prikaz/ajax_smaz_odvod/parametry/" + rozpad[0] + "---" + rozpad[1],
        handleAs: "json",
        load: function (data, args) {
            dojo.byId('r-' + id).style.display = 'none';
            ajax_running.style.display = 'none';
        },
        // if any error occurs, it goes here:
        error: function (error, args) {
            console.warn("Chyba pri mazani odvodu(vykazu) prace...", error);//#DBG;
            ajax_running.style.display = 'none';
        }
    });
}



function odvadeni_submit() {
    if (!odvadeni_kontrola()) {
        return false;
    }
    //return false;
    var ajax_running = dojo.byId('ajax-loader-obr');
    var oznameni = dojo.byId('oznameni');
    ajax_running.style.display = 'inline';
    dijit.byId('odvadeni-podrobnosti').hide();
    //samotny ajax
    if (!dojo.byId('defa_pozadavek')) {
        dojo.byId('ka_vazba').value = '';
    }
    dojo.xhrPost({
        url: '/admin/ajax/odved',
        handleAs: 'json',
        load: function (data) {
            ajax_running.style.display = 'none';
            //console.dir(data);//#DBG;
            //alert(data.chyba);
            if (data.chyba == 'ano') {
                alert(data.zprava);
            } else {
                //v poli posubmitu muze byt volani funkce nebo obecne cokoliv, co se pusti po submitu odvadeni
                if (dojo.byId('posubmitu') && dojo.byId('posubmitu').value !== '') {
                    eval(dojo.byId('posubmitu').value);
                }
            }
        },
        error: function (error, args) {
            console.warn("Chyba pri odvadeni prace...", error);//#DBG;
            ajax_running.style.display = 'none';
            oznameni.innerHTML = 'Chyba odvádění:' + args;
        },
        form: "odvadeni"
    });
}

function cesta_change() {
    //alert('cesta change');
    if (dojo.byId('cesta_km').value === '' && dojo.byId('typ_vykonu').value == 'f') {
        dojo.byId('cesta_km').value = dojo.byId('cesta_km_c').value;
    }
}

function odvadeni_kontrola() {
    var ok = true, i = 0;
    var err_txt = 'V odváděcím dialogu jsou následující CHYBY:\n';
    var warn_txt = 'VAROVÁNÍ, byly nalezeny následující problémy:\n';
    var warn = false;
    var hodnota;
    //kontrola chyb
    if (dojo.byId('prace_popis').value === '') {
        ok = false;
        i++;
        err_txt += '\n' + i + ') Není uveden popis odváděné práce';
    }
    if ((dojo.byId('odprac').value + 0) === 0) {
        ok = false;
        i++;
        err_txt += '\n' + i + ') Není uvedena odpracovaná doba';
    }
    hodnota = dojo.byId('projekt').value;
    if (hodnota === '' || hodnota == '-' || hodnota == '.' || hodnota == '0' || hodnota == '1') {
        ok = false;
        i++;
        err_txt += '\n' + i + ') Není uveden projekt';
    }
    hodnota = dojo.byId('etapa').value;
    if (hodnota === '' || hodnota == '-' || hodnota == '---' || hodnota == '.' || hodnota == '0|||') {
        ok = false;
        i++;
        err_txt += '\n' + i + ') Není uvedena etapa';
    }
    hodnota = dojo.byId('pozadavek').value;
    if (hodnota === '' || dojo.byId('pozadavek').value == '-' || hodnota == '0' || hodnota == '.' || hodnota == '1') {
        ok = false;
        i++;
        err_txt += '\n' + i + ') Není uveden požadavek';
    }
    hodnota = dojo.byId('operace').value;
    if (hodnota === '' || hodnota == '-') {
        ok = false;
        i++;
        err_txt += '\n' + i + ') Není uvedena operace';
    }

    if (Number(dojo.byId('fakturovat').value) > 0 && Number(dojo.byId('mpd').value) > Number(dojo.byId('fakturovat').value)) {
        ok = false;
        i++;
        err_txt += '\n' + i + ') Uvedená práce přesčas(' + dojo.byId('mpd').value + ' hod) je vyšší než práce k fakturaci(' + dojo.byId('fakturovat').value + ' hod)';
    }
    if (dojo.byId('typ_vykonu').value == 'f' && (dojo.byId('fakturovat').value === '' || dojo.byId('fakturovat').value === 0)) {
        ok = false;
        i++;
        err_txt += '\n' + i + ') Výkon je označen jako fakturační a není uveden čas k fakturaci.';
    }
    if (dojo.byId('typ_vykonu').value == 'n' && Number(dojo.byId('fakturovat').value > 0)) {
        ok = false;
        i++;
        err_txt += '\n' + i + ') Výkon je označen jako nefakturační a je uveden čas k fakturaci(' + dojo.byId('fakturovat').value + ').';
    }

    if ((Number(CeskeCislo(dojo.byId('cesta_km').value)) + 0 > 0 || Number(CeskeCislo(dojo.byId('cesta_km_c').value)) + 0 > 0 || Number(CeskeCislo(dojo.byId('cesta').value)) + 0 > 0) && dojo.trim(dojo.byId('cesta_popis').value) === '') {
        ok = false;
        i++;
        err_txt += '\n' + i + ') Jsou uvedeny údaje o cestě, ale není uvedena trasa.';
    }

    if ((Number(CeskeCislo(dojo.byId('cesta_km').value)) + 0 > 0 || Number(CeskeCislo(dojo.byId('cesta_km_c').value)) + 0 > 0) && (dojo.trim(dojo.byId('auto').value) == '|' || dojo.trim(dojo.byId('auto').value) == 'STD|')) {
        ok = false;
        i++;
        err_txt += '\n' + i + ') Jsou uvedeny ujeté kilometry, ale není uveden automobil.';
    }

    //kontroly varovani
    i = 0;
    if (dojo.byId('odv_fakturovat').value == '0' && dojo.byId('typ_vykonu').value == 'f') {
        warn = true;
        i++;
        warn_txt += '\n' + i + ') Požadavek nemá být fakturován a přesto je odvod označen jako fakturační';
    }
    if (dojo.byId('odv_fakturovat').value == '0' && Number(dojo.byId('fakturovat').value) > 0) {
        warn = true;
        i++;
        warn_txt += '\n' + i + ') Požadavek nemá být fakturován a je odváděna fakturační práce';
    }
    if (Number(dojo.byId('odv_hl_poz').value) > 1 && (dojo.byId('odv_fakturovat').value == '10' || dojo.byId('odv_fakturovat').value == '15') && (Number(dojo.byId('odv_jiz_odvedeno').value) + Number(dojo.byId('fakturovat').value)) > Number(dojo.byId('odv_kalkulace_hod').value)) {
        warn = true;
        i++;
        warn_txt += '\n' + i + ') Je překročena schválená kalkulace časové náročnosti.';
    }
    if (Number(dojo.byId('odv_hl_poz').value) > 1 && (dojo.byId('odv_fakturovat').value == '20') && ((Number(dojo.byId('odv_jiz_odvedeno').value) + Number(dojo.byId('fakturovat').value)) * 1250) > Number(dojo.byId('odv_kalkulace_mm').value)) {
        warn = true;
        i++;
        warn_txt += '\n' + i + ') Je pravděpodobné, že je překročena plánovaná kalkulace. Kontaktujte vedoucího projektu/požadavku.';
    }
    if (Number(dojo.byId('ostatni').value) > 0 && dojo.byId('ostatni_popis').value === '') {
        warn = true;
        i++;
        warn_txt += '\n' + i + ') Při odvodu ostatních nákladů je třeba vyplnit popis.';
    }
    if (Number(dojo.byId('cesta_km_c').value) > 700) {
        warn = true;
        i++;
        warn_txt += '\n' + i + ') Je zadána cesta delší než 700km.';
    }
    if (Number(dojo.byId('cesta').value) > 7) {
        warn = true;
        i++;
        warn_txt += '\n' + i + ') Je zadán čas cesty delší než 7hod.';
    }

    if (!ok) {
        var zprava = err_txt;
        if (warn) {
            zprava += '\n\n' + warn_txt;
        }
        alert(zprava);
        return false;
    } else if (warn) {
        return confirm(warn_txt + '\n\nSkutečně chcete práci takto odvést?');
    } else {
        return true;
    }
}

function odvadeni_kopie() {
    var dialog = ka.odvadeni.dialogOdvadeni();
    dialog.hide();
    dojo.byId('doklad_vykazu').value = '';
    dojo.byId('polozka_vykazu').value = '';
    zobrazOdvadeni('insert');
}

/* =====================================================================================================
   csi6.js
   ===================================================================================================== */
function csi6OnLoad () {
    dojo.connect(dojo.byId('ukaz-vse'), 'onclick', csi6Prepni);
    dojo.connect(dojo.byId('ukaz-10'), 'onclick', csi6Prepni);
}

function csi6Prepni(e) {
    if (e.target.id == 'ukaz-vse') {
        dojo.byId('ukaz-vse').style.display = 'none';
        dojo.byId('ukaz-10').style.display = '';
        dojo.query(".zbytek").style("display", "");
   } else {
        dojo.byId('ukaz-vse').style.display = '';
        dojo.byId('ukaz-10').style.display = 'none';
        dojo.query(".zbytek").style("display", "none");
    }
}

