// -*- coding: utf-8 -*-

// === iframe manipulation (begin) ============================================

function window_width() {
    return (window.parent.window.innerWidth ?
            window.parent.window.innerWidth :
            window.parent.window.document.documentElement.clientWidth ?
            window.parent.window.document.documentElement.clientWidth :
            window.parent.window.document.body.clientWidth);
}

function window_height() {
    return (window.parent.window.innerHeight ?
            window.parent.window.innerHeight :
            window.parent.window.document.documentElement.clientHeight ?
            window.parent.window.document.documentElement.clientHeight :
            window.parent.window.document.body.clientHeight);
}

function scrolled_from_left() {
    return (window.parent.window.pageXOffset ?
            window.parent.window.pageXOffset :
            window.parent.window.document.body.scrollLeft ?
            window.parent.window.document.body.scrollLeft :
            window.parent.window.document.documentElement.scrollLeft ?
            window.parent.window.document.documentElement.scrollLeft : 0);
}

function scrolled_from_top() {
    return (window.parent.window.pageYOffset ?
            window.parent.window.pageYOffset :
            window.parent.window.document.body.scrollTop ?
            window.parent.window.document.body.scrollTop :
            window.parent.window.document.documentElement.scrollTop ?
            window.parent.window.document.documentElement.scrollTop : 0);
}

function show_iframe(id, url) {
    if (! window.parent.window.current_iframe && ! id) return;
    if (window.parent.window.current_iframe && id)
        hide_iframe(window.parent.window.current_iframe);
    var win_width = window_width();
    var win_height = window_height();
    var scrll_left = scrolled_from_left();
    var scrll_top = scrolled_from_top();
    var cover = window.parent.window.document.getElementById('coverframe');
    cover.style.width = win_width + "px";
    cover.style.height = win_height + "px";
    cover.style.left = scrll_left + "px";
    cover.style.top = scrll_top + "px";
    var iframe = window.parent.window.document.
                 getElementById(id || window.parent.window.current_iframe);
    if (id) iframe.src = url;
    iframe.style.width = win_width * 0.9 + "px";
    iframe.style.height = win_height * 0.9 + "px";
    iframe.style.left = (win_width * 0.05 + scrll_left) + "px";
    iframe.style.top = (win_height * 0.05 + scrll_top) + "px";
    if (id) iframe.style.border = "solid silver";
    if (id) window.parent.window.current_iframe = id;
}

function hide_iframe(id) {
    window.parent.window.current_iframe = "";
    var iframe = window.parent.window.document.getElementById(id);
    iframe.style.border = "none";
    iframe.style.top = "0";
    iframe.style.left = "0";
    iframe.style.height = "0";
    iframe.style.width = "0";
    var cover = window.parent.window.document.getElementById('coverframe');
    cover.style.top = "0";
    cover.style.left = "0";
    cover.style.height = "0";
    cover.style.width = "0";
}

// === iframe manipulation (end) ==============================================

//===================================================

function setFocusOnFirst(frm, item) {
    if (document.forms[frm])
        if (! document.getElementById('rozam')) {
            if (! document.forms[frm][item].disabled)
	        document.forms[frm][item].focus();
        } else if (document.getElementById('rozam').value != 1) {
            if (! document.forms[frm][item].disabled)
	        document.forms[frm][item].focus();
        }
}

//===================================================

function checkedSubmit(msg1, msg2) {
    return checkedSubmitEx(msg1, msg2, "mainForm");
}

//===================================================

function checkedSubmitEx(msg1, msg2, form) {
    var test1 = true;
    var test2 = true;
    var req_by = document.getElementById('req_by');
    var rozam = document.getElementById('rozam');
    for (var i = 0; i < document.forms[form].elements.length; i++) {
        var e = document.forms[form].elements[i];
        // check required field non-emptiness
	if (e.id.match(/^req_by$/) ||
            e.id.match(/^req_directive$/) && req_by &&
            req_by.value != 'predpis' ||
            (e.id.match(/^(req_activity|req_prog_id|req_date)$/) ||
             e.id.match(/^(req_valid_to|req_number|req_acc_id)$/)) && req_by &&
            req_by.value != 'msmt' ||
            e.id.match(/^req_rozam_/) && (! rozam || rozam.value != 1)) {
            // skip some specific fields
	} else if (e.id.match(/^req/)) {
	    if (e.value.match(/^\s*$/)) test1 = false;
	}
        // check text and textarea length
	if (e.type.match(/^text(area)?$/i))
	    if (e.value.match(/\S{40,}/)) test2 = false;
    }
    if (! test1) {
        window.alert(msg1);
    } else if (! test2) {
        window.alert(msg2);
    }
    return test1 && test2;
}

//===================================================

function checkedSubmitReg(msg1, msg2, msg3, msg4, msg5) {
    // check passwords
    var password = document.forms['mainForm'].usr_password;
    var password2 = document.forms['mainForm'].usr_password2;
    if (password && password2)
        if (password.value != password2.value) {
            window.alert(msg1);
            return false;
        }
    // standard check
    if (! checkedSubmit(msg2, msg3)) return false;
    // check IC format
    var ico = document.forms['mainForm'].ico;
    if (ico) {
        // - clean IC
        ico.value = ico.value.replace(/^\s+|\s+$/g, ''); // trim white spaces
        if (ico.value.match(/\s/) && ico.value.match(/^\s*(\d\s*)*$/))
            ico.value = ico.value.replace(/\s+/g, ''); // remove white spaces
        // - check IC format
        if (! ico.value.match(/^\d{8}$/))
            if (! confirm(msg5)) {
                ico.focus();
                return false;
            }
        }
    // check existing IC count
    var count = document.getElementById('ico_pocet');
    if (ico && count) {
        if (count.value == '')
            setElementByAjaxGET("check_in.act?in=" +
                                encodeURIComponent(ico.value),
                                "ico_pocet", "value");
        for (var i = 5; count.value == '' && i > 0; i--) sleep(1);
        if (count.value != '' && count.value > 0) {
            return confirm(msg4);
        } else {
            return true;
        }
    }
}

//===================================================

function recognizeContentType() {
    var name = document.getElementById("document").value;
    var ext = name.replace(/.*\./, ".");
    if (name.match(/^\s*$/)) {
	document.getElementById("content_type").value = "";
    } else if (ext.match(/^\.rtf$/i)) {
	document.getElementById("content_type").value = "application/rtf";
    } else if (ext.match(/^\.doc$/i)) {
	document.getElementById("content_type").value = "application/doc";
    } else if (ext.match(/^\.pdf$/i)) {
	document.getElementById("content_type").value = "application/pdf";
    } else if (ext.match(/^\.txt$/i)) {
	document.getElementById("content_type").value = "text/plain";
    } else if (ext.match(/^\.html?$/i)) {
	document.getElementById("content_type").value = "text/html";
    } else if (ext.match(/^\.zip$/i)) {
	document.getElementById("content_type").value = "application/zip";
    } else {
	document.getElementById("content_type").value =
	  "application/octet-stream";
    }
}

//===================================================

function resolveDate(msg) {
    if (document.forms['mainForm'].not_restricted.value == 'yes') {
	document.forms['mainForm'].action_from.value = msg;
    } else {
	document.forms['mainForm'].action_from.value = '';
    }
}

//===================================================

function resolveDateAct(control, target, msg) {
    if (document.forms['mainForm'][control].checked) {
	document.forms['mainForm'][target].value = msg;
    } else {
	document.forms['mainForm'][target].value = '';
    }
}

//===================================================

function checkedSubmitOver() {

    var test = true;

    if (document.forms['mainForm'].not_restricted.value == 'no') {
	var pom = document.forms['mainForm'].action_from.value;
	pom = pom.replace(/\s+/g, "");

	if (pom != "")
            test = checkDate(document.forms['mainForm'].action_from.value);
    }

    if (!test) {
	var msg1 = document.forms['msg'].invalid_date.value;
        msg1 = msg1.replace("_DATE_", document.forms['mainForm'].action_from.
               value);
	window.alert(msg1);
	return false;
    } else {
	return true;
    }

}

//===================================================

function checkedSubmitAct(not_spec, msg1, msg2, msg4, alert_date, alert_price,
			  alert_low_price, alert_high_price, alert_perc) {

    var rozam = document.getElementById('rozam');
    rozam = rozam ? rozam.value : 0;

    var pom = document.forms['mainForm'].start_date_fake.value.replace(/\s+/g,
                                                                       '');
    var test1 = true;
    if ((pom != not_spec) && (pom != ''))
	test1 = checkDate(document.forms['mainForm'].start_date_fake.value);
    if (pom == '') {
	window.alert(msg1);
	return false;
    }

    pom = document.forms['mainForm'].end_date_fake.value.replace(/\s+/g, '');
    var test2 = true;
    if ((pom != not_spec) && (pom != ''))
	test2 = checkDate(document.forms['mainForm'].end_date_fake.value);
    if (pom == '') {
	window.alert(msg1);
	return false;
    }

    if (! test1) {
	var msg3 = document.forms['msg'].invalid_date.value.
	           replace('_DATE_',
		           document.forms['mainForm'].start_date_fake.value);
	window.alert(msg3);
	return false;
    } else if (! test2) {
	var msg3 = document.forms['msg'].invalid_date.value.
	           replace('_DATE_', document.forms['mainForm'].end_date_fake.
                   value);
	window.alert(msg3);
	return false;
    } else {
	val1 = document.forms['mainForm'].start_date_fake.value;
	val2 = document.forms['mainForm'].rotation.value.replace(/\s+/g, '');
	var test = true;
	// demand on either start_date either rotation disabled
	//if ((val1 == 'není stanoveno') && (val2 == ''))
	//    test = window.confirm(msg1);
	if (test) {
	    validate = checkedSubmit(msg2, msg4);
	    if (validate) {
		if (document.forms['mainForm'].start_date_fake.value ==
		    not_spec) {
		    document.forms['mainForm'].start_date.value = '';
		} else {
		    document.forms['mainForm'].start_date.value =
		      document.forms['mainForm'].start_date_fake.value;
		}
		if (document.forms['mainForm'].end_date_fake.value ==
		    not_spec) {
		    document.forms['mainForm'].end_date.value = '';
		} else {
		    document.forms['mainForm'].end_date.value =
		      document.forms['mainForm'].end_date_fake.value;
		}
		if (rozam == 1) {
		    if (document.forms['mainForm'].start_date.value == '' ||
			document.forms['mainForm'].end_date.value == '') {
			alert(alert_date);
			return false;
		    }
		    if (! countROZAM(alert_price, alert_perc, '--on-submit--'))
			return false;
		    var price_w_vat =
			Number(document.
                               getElementById('req_rozam_price_w_vat').value);
		    var min_price =
			Number(document.getElementById('min_price').value);
		    var max_price =
			Number(document.getElementById('max_price').value);
		    if (price_w_vat < min_price) {
			alert(alert_low_price);
			return false;
		    }
		    if (price_w_vat > max_price) {
			alert(alert_high_price);
			return false;
		    }
		}
	    }
	    return validate;
	}
    }
}

//===================================================

var opened_help = false;
var okno_help;

var opened_hint = false;
var okno_hint;

var opened_preview = false;
var okno_preview;

//===================================================

//===================================================

function open_help(url_help) {
    open_new(url_help,opened_help,okno_help);
}

//===================================================

function open_preview(url_preview) {
    open_new(url_preview,opened_preview,okno_preview);
}

//===================================================

function open_new(url,opened,okno) {

    var name = url.replace(/\..*/,"");
    var features = "toolbar=no, status=yes, height=400, width=830, " +
                   "scrollbars=yes, resizable=yes";

    if (!opened) {
	opened = true;
	okno = window.open(url,name,features);
	okno.focus();
    } else if (okno.closed) {
	okno = window.open(url,name,features);
    } else {
	okno.focus();
	okno.location.replace(url);
    }

}

//===================================================

function show_edu() {
    show_iframe("auxframe", "dat_edu.act");
}

function show_edu(parent) {
    show_iframe("auxframe", "dat_edu.act?parent=" + parent);
}

//===================================================

function hide_edu() {
    hide_iframe("auxframe");
}

//===================================================

function show_certif() {
    show_iframe("auxframe", "dat_certif.act");
}

//===================================================

function hide_certif() {
    hide_iframe("auxframe");
}

//===================================================

function show_help() {

    //extract the id of page from full url
    var res_detail = false;
    var flname = document.URL;
    if (flname.match(/rgn_id_detail=\d+/)) {
	res_detail = true;
    }
    flname = flname.replace(/.*\/(.*)/,"$1");
    var flname2 = flname.split(".");
    var fln = flname2[0];
    fln = fln.substring(4,fln.length);

    url = "dat_help.act?helpid=" + fln;
    if (res_detail) url = url + "_detail";

    show_iframe("helpframe", url);

}

//===================================================

function hide_help() {
    hide_iframe("helpframe");
}

//===================================================

function show_hint() {

    //extract the id of page from full url
    var res_detail = false;
    var flname = document.URL;
    if (flname.match(/rgn_id_detail=\d+/)) {
	res_detail = true;
    }
    flname = flname.replace(/.*\/(.*)/,"$1");
    var flname2 = flname.split(".");
    var fln = flname2[0];
    fln = fln.substring(4,fln.length);

    url = "dat_hint.act?pageid=" + fln;
    open_help(url);
}

//===================================================

function close_it() {
    window.close();
}

//===================================================

function print_it() {
    this.print();
}

//===================================================

function setCheckProxy(ipt_fake) {
    setCheckProxyEx(ipt_fake, "mainForm");
}

//===================================================

function setCheckProxyEx(ipt_fake, form) {
    //var formName = document.mainForm['x-form-name'].value;
    var ipt = ipt_fake;
    ipt = ipt.replace(/_fake/, "");
    //window.alert("---> setting proxy " + ipt + " for " + ipt_fake);
    if (document.forms[form][ipt_fake].checked) {
	document.forms[form][ipt].value = "1";
    } else {
	document.forms[form][ipt].value = "0";
    }
}

//===================================================

function setCheckProxy2(ipt_fake) {
    //var formName = document.mainForm['x-form-name'].value;
    var ipt = ipt_fake;
    ipt = ipt.replace(/_fake/, "");
    //window.alert("---> setting proxy " + ipt + " for " + ipt_fake);
    if (document.forms['mainForm'][ipt_fake].checked) {
	document.forms['mainForm'][ipt].value = "yes";
    } else {
	document.forms['mainForm'][ipt].value = "no";
    }
}

//===================================================

function setControle() {

    if (document.forms['mainForm']["tg_only"][1].checked) {
	ctest = false;
	for (i=1; i<11; i++) {
	    id = "o_tgrp" + i;
	    if (document.getElementById(id).checked) ctest = true;
	}
	id = "o_tgrp11";
	var pomtest = document.getElementById(id).value;
	document.forms['mainForm'].tg_name.value = pomtest;
	pomtest = pomtest.replace(/\s+/g, "");
	if (pomtest != "") ctest = true;

	if (ctest) {
	    document.forms['mainForm'].tgrp_controle.value = "filled";
	} else {
	    document.forms['mainForm'].tgrp_controle.value = "";
	}
    } else {
	document.forms['mainForm'].tgrp_controle.value = "filled";
	id = "n_tgrp11";
	var pomtest = document.getElementById(id).value;
	document.forms['mainForm'].tg_name.value = pomtest;
    }
}

//===================================================

function toggleTargetActivity() {
    var label = "ac_text";
    if (document.forms['mainForm']["tg_only"][1].checked) {
	//aktivovat only
	for (i=1; i<11; i++) {
	    id1 = "n_tgrp" + i;
	    id2 = "o_tgrp" + i;
	    document.forms['mainForm'][id1].checked = false;
	    if (! document.forms['mainForm']["tg_only"][1].disabled ||
		document.forms['mainForm']["tg_only"][1].disabled == "") {
		document.forms['mainForm'][id1].disabled = "disable";
		document.forms['mainForm'][id2].disabled = "";
	    }
	}
	id1 = "n_tgrp11";
	id2 = "o_tgrp11";
	document.forms['mainForm'][id1].value = "";
	if (! document.forms['mainForm']["tg_only"][1].disabled ||
	    document.forms['mainForm']["tg_only"][1].disabled == "") {
	    document.forms['mainForm'][id1].disabled = "disable";
	    document.forms['mainForm'][id2].disabled = "";
	}
	//label1 = "n_actext";
	//label2 = "o_actext";
	//document.getElementById(label2).style.color= "#000000";
	//document.getElementById(label1).style.color= "#999999";
    } else {
	//aktivovat namely
	for (i=1; i<11; i++) {
	    id1 = "n_tgrp" + i;
	    id2 = "o_tgrp" + i;
	    document.forms['mainForm'][id2].checked = false;
	    if (! document.forms['mainForm']["tg_only"][1].disabled ||
		document.forms['mainForm']["tg_only"][1].disabled == "") {
		document.forms['mainForm'][id2].disabled = "disable";
		document.forms['mainForm'][id1].disabled = "";
	    }
	}
	id1 = "n_tgrp11";
	id2 = "o_tgrp11";
	document.forms['mainForm'][id2].value = "";
	if (! document.forms['mainForm']["tg_only"][1].disabled ||
	    document.forms['mainForm']["tg_only"][1].disabled == "") {
	    document.forms['mainForm'][id2].disabled = "disable";
	    document.forms['mainForm'][id1].disabled = "";
	}
	//label1 = "n_actext";
	//label2 = "o_actext";
	//document.getElementById(label1).style.color= "#000000";
	//document.getElementById(label2).style.color= "#999999";

    }
}

//===================================================

function selectClassification(id) {

    document.forms['advanced'].classproxy.value = id;
    show_edu();

    //var rval = window.prompt("TO-DO: select dialog from Classification enumeration.\nYou can set a value manually now:", Math.random());
    //if (rval) {
    //	var frm = "advanced";
    //	var cls = "class";
    //	document.forms[frm][cls][id].value = rval;
    //}
}

//===================================================

function insertCode (code) {
    var codename = 'code' + code.replace(/-/g, "");
    with (window.parent.window.document)
	if (forms['mainForm']) {
	    forms['mainForm'].classification_id.value = code;
	    forms['mainForm'].classification_name.value =
	    forms['names'][codename].value;
	} else {
	    if (forms['advanced'].classproxy.value == 0) {
		forms['advanced'].class_id_1.value = code;
		forms['advanced'].class_name_1.value =
		forms['names'][codename].value;
	    }
	    if (forms['advanced'].classproxy.value == 1) {
		forms['advanced'].class_id_2.value = code;
		forms['advanced'].class_name_2.value =
		forms['names'][codename].value;
	    }
	    if (forms['advanced'].classproxy.value == 2) {
		forms['advanced'].class_id_3.value = code;
		forms['advanced'].class_name_3.value =
		forms['names'][codename].value;
	    }
	}
    hide_edu();
}

function insertCode2(code) {
    var name = document.getElementById('name' + code).value;
    with (window.parent.window.document) {
        if (forms['mainForm']) {
            forms['mainForm'].classification_id.value = code;
            forms['mainForm'].classification_name.value = name;
        }
        if (forms['advanced']) {
            if (forms['advanced'].classproxy.value == 0) {
                forms['advanced'].class_id_1.value = code;
                forms['advanced'].class_name_1.value = name;
            }
            if (forms['advanced'].classproxy.value == 1) {
                forms['advanced'].class_id_2.value = code;
                forms['advanced'].class_name_2.value = name;
            }
            if (forms['advanced'].classproxy.value == 2) {
                forms['advanced'].class_id_3.value = code;
                forms['advanced'].class_name_3.value = name;
            }
        }
    }
    hide_edu();
}

//===================================================

function insertCertif (code) {
    var codename = 'code' + code.replace(/-/g, "");
    window.parent.window.document.forms['mainForm'].cert_spec_id_fake.value =
      code;
    window.parent.window.document.forms['mainForm'].cert_spec_id.value = code;
    window.parent.window.document.forms['mainForm'].cert_spec_name.value =
       document.forms['names'][codename].value;
    hide_certif();
}

//===================================================

function clearCell(form,element) {
    document.forms[form].elements[element].value = "";
}

//===================================================

function show(what, disp) {
    if (typeof what == 'string') what = document.getElementById(what);
    if (disp == null) disp = "block";
    what.style.visibility = "visible";
    what.style.display = disp;
}

//===================================================

function hide(what) {
    if (typeof what == 'string') what = document.getElementById(what);
    what.style.visibility = "hidden";
    what.style.display = "none";
}

//===================================================

function hide2(what) {
    if (typeof what == 'string') what = document.getElementById(what);
    what.style.visibility = "hidden";
    //what.style.display = "none";
}

//===================================================

function setPaging2(offset) {
//     var l = "";
//     var q = "";
//     with (window.location) {
// 	l = protocol + "//";
// 	l += hostname;
// 	l += pathname;
// 	q = search;
//     }
//     if (!q) {
// 	q = "?offset=" + offset;
//     } else {
// 	var a = q.match(/(\?|&)(offset=(\w*))($|&)/i);
// 	if (a) {
// 	    if (a[3] != offset) {
// 		q = q.replace(a[2], "offset=" + offset);
// 	    }
// 	} else {
// 	    q += "&offset=" + offset;
// 	}
//     }
//     window.location.href = l + q;
    setQuery("offset", offset);
}

//===================================================

function setPagingPost(offset) {
    document.forms['mainForm'].elements['x_offset'].value = offset;
    document.forms['mainForm'].submit();
}

//===================================================

function setQuery(key, value) {
    var l = "";
    var q = "";
    with (window.location) {
	l = protocol + "//";
	l += hostname;
	l += pathname;
	q = search;
    }
    if (!q) {
	q = "?"+key+"=" + value;
    } else {
	var pattern = "(&|\\?)("+key+"=([^&]*))($|&)";
	var keyMatch = new RegExp(pattern,"i");
	var a = keyMatch.exec(q);
	if (a) {
	    if (a[3] != value) {
		q = q.replace(a[2], key+"=" + value);
	    }
	} else {
	    q += "&"+key+"=" + value;
	}
    }
    window.location.href = l + q;
}

//===================================================

function setCompanyFilter(nm,val) {
    if (nm == "x_sort" &&
        document.forms['mainForm'].elements[nm].value == val) {
        document.forms['mainForm'].elements[nm].value = -val;
    } else if (nm != "x_rid") {
	document.forms['mainForm'].elements[nm].value = val;
    }
    document.forms['mainForm'].x_offset.value = 0;
    document.forms['mainForm'].submit();
}

//===================================================

function setInputProxy(ipt_fake, form) {
    var ipt = ipt_fake;
    ipt = ipt.replace(/_fake/, "");
    //window.alert("---> setting proxy " + ipt + " for " + ipt_fake);
    document.forms[form][ipt].value = document.forms[form][ipt_fake].value;
}

//===================================================

function toggleActivity() {
    var label = "ac_text";

    if (document.forms['mainForm'].certificate_id.value == "7") {
	//aktivovat
	document.getElementById(label).style.color= "#000000";
	if (! document.forms['mainForm'].certificate_id.disabled ||
	    document.forms['mainForm'].certificate_id.disabled == "") {
	    document.forms['mainForm'].ac_but.disabled = "";
	    document.forms['mainForm'].cert_spec_id_fake.disabled = "";
	    document.forms['mainForm'].cert_spec_name.disabled = "";
	}
    } else {
	//deaktivovat
	document.getElementById(label).style.color= "#666666";
	document.forms['mainForm'].ac_but.disabled = "disabled";
	clearCell('mainForm','cert_spec_name');
	clearCell('mainForm','cert_spec_id_fake');
	clearCell('mainForm','cert_spec_id');
	document.forms['mainForm'].cert_spec_id_fake.disabled = "disabled";
	document.forms['mainForm'].cert_spec_name.disabled = "disabled";
    }
}

//===================================================

var page_touched;

function resetTouche() {
    page_touched = false;
}

//===================================================

function touchePage() {
    page_touched = true;
}

//===================================================

function controledLink(url) {
    if (page_touched) {
	mes = document.forms["mainForm"].alert2.value;
	var test = window.confirm(mes);
	if (test) {
	    window.location.href = url;
	}
    } else {
	window.location.href = url;
    }
}

//===================================================

function getDatum(offset)
{
    // dd.mm.yyyy
    if (!offset) offset = 0;
    var now = new Date();
    now.setDate(now.getDate() + offset);
    var rval = now.getDate() + ".";
    rval += (now.getMonth() + 1) + ".";
    rval += now.getFullYear();
    return rval;
}

//===================================================

function getNewYearEve() { // jan's strip
    // dd.mm.yyyy
    var now = new Date();
    now.setDate(now.getDate());
    return "31.12." + now.getFullYear();
}

//===================================================

function showRegionSelect() {
    if (document.forms['mainForm']) {
	var sidx = document.forms['mainForm'].country_id.options.selectedIndex;
	var c_id = document.forms['mainForm'].country_id.options[sidx].value;
	var list = document.forms['mainForm'].reg_list.value;
	list = list.split('__');
	for (i=0;i<list.length;i++) {
	    hide(list[i]);
	}
	hide('reg_alert');
	if (c_id != "") {
	    show(c_id);
	} else {
	    show('reg_alert');
	}
    }
}

//===================================================

function setRegionSelect(id) {
    if (id == 'cnt') {
	var sidx = document.forms['mainForm'].country_id.options.selectedIndex;
	var id = 'region_id_' + document.forms['mainForm'].country_id.options[sidx].value;
    }
    if (id == 'region_id_') {
	var val = '';
    } else {
	var sidx = document.forms['mainForm'][id].options.selectedIndex;
	var val = document.forms['mainForm'][id].options[sidx].value;
    }
    document.forms['mainForm'].region_id.value = val;
}

//===================================================

function checkDate(d) { // now this is my playground (jan)
    //alert("Original: " + d);
    if (d.match(/^\s*(\d{1,})[\s\.\-\/]{1,}(\d{1,})[\s\.\-\/]{1,}(\d{2}|\d{4,})\s*$/)) {
	d = d.replace(/^\s*(\d{1,})[\s\.\-\/]{1,}(\d{1,})[\s\.\-\/]{1,}(\d{2}|\d{4,})\s*$/, "$3-$2-$1");
    } else if (d.match(/^\s*(\d{2})(\d{2})((\d{2}){1,2})\s*$/)) {
	d = d.replace(/^\s*(\d{2})(\d{2})((\d{2}){1,2})\s*$/, "$3-$2-$1");
    } else {
	return false;
    }
    var now = new Date();
    var c = now.getFullYear().toString().replace(/\d{1,2}$/, "");
    d = d.replace(/^(\d{2})-(\d*)-(\d*)$/, c + "$1-$2-$3");
    d = d.replace(/^0*(\d{4})-(\d*)-(\d*)$/, "$1-$2-$3");
    d = d.replace(/^(\d*)-(\d)-(\d*)$/, "$1-0$2-$3");
    d = d.replace(/^(\d*)-0*(\d{2})-(\d*)$/, "$1-$2-$3");
    d = d.replace(/^(\d*)-(\d*)-(\d)$/, "$1-$2-0$3");
    d = d.replace(/^(\d*)-(\d*)-0*(\d{2})$/, "$1-$2-$3");
    //alert("Normalized: " + d);
    var a = d.split("-");
    var d2 = new Date(a[0], a[1]-1, a[2]);
    return (a[0] == d2.getFullYear()) && (a[1]-1 == d2.getMonth()) &&
	(a[2] == d2.getDate());
}

//===================================================

function reloadLanguage(lang) {
    setQuery("xlang", lang);
}

//===================================================

function checkedSubmitCourse(msg1, msg2, msg3, msg4) {
    var f = document.forms['mainForm'];
    // adjust fields for check - populate obsolete ones
    if (document.getElementById("elearning_0").checked) {
	// committing standard course
	f.price.value = "---";
	f.contact.value = "---";
    }
    // check
    var validate, value;
    if (! (validate = checkedSubmitEx(msg1, msg2, "mainForm"))) {
        // already alerted
    } else if (f.req_by.value == 'msmt' &&
               ! (validate = checkDate(value = f.req_date.value))) {
        alert(msg3.replace("_DATE_", value));
    } else if (f.req_by.value == 'msmt' &&
               ! (validate = checkDate(value = f.req_valid_to.value))) {
        alert(msg3.replace("_DATE_", value));
    }
    // adjust fields for submit - clear obsolete ones
    if (document.getElementById("elearning_0").checked) {
	// committing standard course
	f.price.value = 0;
	f.contact.value = "";
    }
    if (document.getElementById("elearning_1").checked) {
	// committing e-learning course
	f.hours.value = "";
	f.final_exam.value = "";
	f.certificate_id.selectedIndex = 0;
	f.cert_intl_fake.checked = false;
	f.cert_intl.value = 0;
	f.cert_spec_id_fake.value = "";
	f.cert_spec_id.value = "";
	f.cert_spec_name.value = "";
    }
    // return
    return (validate ? true : false);
}

//===================================================

function checkedSubmitRequalification(msg1, msg2, msg3) {
    var validate =  checkedSubmit(msg1, msg2);
    //check dates
    if (validate) {
	var to_check = document.forms['mainForm'].req_date.value;
	validate = (to_check == '') || checkDate(to_check);
	if (!validate) {
	    msg3 = msg3.replace("_DATE_", to_check);
	    window.alert(msg3);
	} else {
	    var to_check = document.forms['mainForm'].req_valid_to.value;
	    validate = (to_check == '') || checkDate(to_check);
	    if (!validate) {
		msg3 = msg3.replace("_DATE_", to_check);
		window.alert(msg3);
	    } else {
		var to_check = document.forms['mainForm'].sgn_date.value;
		validate = (to_check == '') || checkDate(to_check);
		if (!validate) {
		    msg3 = msg3.replace("_DATE_", to_check);
		    window.alert(msg3);
		}
	    }
	}
    }
    return validate;
}

//=== Show/Hide E-learning Stuff (begin) ======================================

function toggleElearning() { // 0: non-e-learning, 1: e-learning, 2: all
    if (document.getElementById("elearning_0") &&
	document.getElementById("elearning_0").checked) {
	document.getElementById("elearning").value = "0";
    } else if (document.getElementById("elearning_box") &&
	       document.getElementById("elearning_box").checked ||
	       document.getElementById("elearning_1") &&
	       document.getElementById("elearning_1").checked) {
	document.getElementById("elearning").value = "1";
    } else if (document.getElementById("elearning_box") &&
	       ! document.getElementById("elearning_box").checked ||
	       document.getElementById("elearning_2") &&
	       document.getElementById("elearning_2").checked) {
	document.getElementById("elearning").value = "2";
    }
}

// see also files:
// - xml/*/dat_*.xml for attributes eid
// - xslt/dat_*.xsl for attributes id with values '*-items-*' and this and the
//   previous functions usage
// - xml/frame_*.xml for this and the previous functions usage
// - perl/DAT.pm for an appropriate method and its SQL select
// (e.g. xml/cz/dat_item.xml, xslt/dat_item.xsl, xml/frame_dat_item.xml and
// getItem)

function showHideElearning() {
    var elearning = document.getElementById("elearning").value;
    var elements = document.getElementsByTagName("*");
    for (var i = 0; i < elements.length; i++) {
	if (elements[i].id.match(/^standard-items/)) {
	    if ((elearning == 0) || (elearning == 2)) {
		// show standard course items
		elements[i].style.visibility = "visible";
 		elements[i].style.display = "";
	    } else if (elearning == 1) {
		// hide standard course items
		elements[i].style.visibility = "hidden";
		elements[i].style.display = "none";
	    }
	} else if (elements[i].id.match(/^elearning-items/)) {
	    if ((elearning == 0) || (elearning == 2)) {
		// hide elearnig action items
		elements[i].style.visibility = "hidden";
		elements[i].style.display = "none";
	    } else if (elearning == 1) {
		// show elearnig action items
		elements[i].style.visibility = "visible";
 		elements[i].style.display = "";
	    }
	}
    }
}

//=== Show/Hide E-learning Stuff (end) ========================================

//=== Requalify Stuff (begin) =================================================

function showHideRequalificationsAndAccreditations() {
    var req_by = document.getElementById('req_by').value;
    var acc_by = document.getElementById('acc_by').value;
    //var display = navigator.appVersion.match(/MSIE (\d+)/) && $1 * 1 < 8 ?
    //              'block' : 'table-row';
    if (req_by != '' || acc_by != '') {
        setElementPropertyById('req_or_acc', 'disabled', 'disabled');
        hide('no_req_no_acc_row');
        try {
	    show('req_row', 'table-row');
	    show('acc_row', 'table-row');
        } catch(e) { // older IEs (up to 7) do not know display: table-row
	    show('req_row', 'block');
	    show('acc_row', 'block');
        }
    }
    if (req_by == 'msmt') {
        setElementPropertyById('req_activity', 'disabled', '');
        setElementPropertyById('req_prog_id', 'disabled', '');
        setElementPropertyById('req_date', 'disabled', '');
        setElementPropertyById('req_valid_to', 'disabled', ''); 
        setElementPropertyById('req_number', 'disabled', '');
        setElementPropertyById('req_acc_id', 'disabled', '');
        setElementPropertyById('req_activity', 'class', 'Required');
        setElementPropertyById('req_prog_id', 'class', 'Required');
        setElementPropertyById('req_date', 'class', 'Required');
        setElementPropertyById('req_valid_to', 'class', 'Required'); 
        setElementPropertyById('req_number', 'class', 'Required');
        setElementPropertyById('req_acc_id', 'class', 'Required');
    } else {
        setElementPropertyById('req_activity', 'disabled', 'disabled');
        setElementPropertyById('req_prog_id', 'disabled', 'disabled');
        setElementPropertyById('req_date', 'disabled', 'disabled');
        setElementPropertyById('req_valid_to', 'disabled', 'disabled'); 
        setElementPropertyById('req_number', 'disabled', 'disabled');
        setElementPropertyById('req_acc_id', 'disabled', 'disabled');
        setElementPropertyById('req_activity', 'class', '');
        setElementPropertyById('req_prog_id', 'class', '');
        setElementPropertyById('req_date', 'class', '');
        setElementPropertyById('req_valid_to', 'class', ''); 
        setElementPropertyById('req_number', 'class', '');
        setElementPropertyById('req_acc_id', 'class', '');
    }
    if (req_by == 'predpis') {
        setElementPropertyById('req_directive', 'disabled', '');
        setElementPropertyById('req_directive', 'class', 'Required');
    } else {
        setElementPropertyById('req_directive', 'class', '');
    }
}

function addReqPlan(alert1, alert2, alert3) {
    if (checkedSubmitRequalification(alert1, alert2, alert3)) {
	document.forms['mainForm'].anchor.value = "#plan";
	document.forms['mainForm'].submit();
    }
}

function delReqPlan(rpid, alert1, alert2, alert3) {
    if (checkedSubmitRequalification(alert1, alert2, alert3)) {
	var object = "req_plan_object_" + rpid;
	var hours = "req_plan_hours_" + rpid;
	document.forms['mainForm'].anchor.value = "#plan"
	    document.forms['mainForm'].elements[object].value = ""
	    document.forms['mainForm'].elements[hours].value = ""
	    document.forms['mainForm'].submit();
    }
}

//=== Requalify Stuff (end) ===================================================

//=== functions to control popup help and info (start) ========================

var what_open = "";
var div_clicked = false;

function showPopup(what) //show popup
{
    what_open = what;
    document.getElementById(what).style.visibility = "visible";
    document.getElementById(what).style.display = "block";
}

function hidePopup(what) //hide popup
{
    what_open = "";
    document.getElementById(what).style.visibility = "hidden";
    document.getElementById(what).style.display = "none";
}

function clickDiv(state) //let's remember if we clicked into the popup
{
    div_clicked = state;
}

function hideClosePopup() //if we clicked somewere on the page (but not into the popup), let's hide the popup
{
    if (what_open != "") {
	if (!div_clicked) {
	    hidePopup(what_open);
	}
	clickDiv(false);
    }
}

//=== functions to control popup help and info (end) ==========================

//=== ROZAM Stuff (begin) =====================================================

function showHideROZAM() {
    if (document.getElementById('rozam')) {
	var rozam = document.getElementById('rozam').value;
	var rows = document.getElementsByTagName('tr');
	if (rozam == 0) {
            // hide
	    for (var i = 0; i < rows.length; i++)
                if (rows[i].id.match(/^row_rozam_/)) {
		    rows[i].style.visibility = 'hidden';
		    rows[i].style.display = 'none';
                }
	} else if (rozam == 1) {
            // show
	    for (var i = 0; i < rows.length; i++)
                if (rows[i].id.match(/^row_rozam_/)) {
		    rows[i].style.visibility = 'visible';
		    rows[i].style.display = '';
                }
            // set default price_w_vat as price if empty
	    var price = document.getElementById('req_price');
            var price_w_vat =
                document.getElementById('req_rozam_price_w_vat');
	    if (price.value.match('^[0-9]+(\.[0-9]{1,2})?$') &&
		price_w_vat.value == '') price_w_vat.value = price.value;
            // show proper field select
	    showROZAMFieldSelect();
	}
    }
}

function showROZAMFieldSelect() {
    if (document.getElementById('rozam'))
	if (document.getElementById('rozam').value == 1) {
            // get region
	    var region_id = document.getElementById('req_region_id').value;
	    if (! document.getElementById('field_rozam_' + region_id))
		region_id = 'none';
            // show proper field select
	    var divs = document.getElementsByTagName('div');
	    for (var i = 0; i < divs.length; i++)
                if (divs[i].id.match(/^field_rozam_/))
		    if (divs[i].id == 'field_rozam_' + region_id) {
                        // show
		        divs[i].style.visibility = 'visible';
		        divs[i].style.display = '';
                        // set field
		        document.getElementById('req_rozam_field').value =
			    document.
                            getElementById('rozam_field_' + region_id).value;
                        // set dotation, min_price and max_price
		        setROZAMDotation(document.
                                         getElementById('rozam_field_' +
							region_id).value);
		    } else {
                        // hide
		        divs[i].style.visibility = 'hidden';
		        divs[i].style.display = 'none';
		    }
	}
}

function setROZAMDotation(field) {
    // (re)defined in dat_action.xsl
}

function countROZAM(alert_price, alert_perc, when) {
    if (document.getElementById('rozam'))
	if (document.getElementById('rozam').value == 1) {
	    var dotation = document.getElementById('dotation');
	    var price_w_vat = document.getElementById('req_rozam_price_w_vat');
	    var vat_perc = document.getElementById('req_rozam_vat_perc');
	    var sponsored_price = document.getElementById('sponsored_price');
            // count/set sponsored_price
	    if (sponsored_price.value == '' || when == '--on-change--' ||
		when == '--on-submit--' && ! price_w_vat.disabled &&
		! vat_perc.disabled)
		if (price_w_vat.value.match('^[0-9]+(\.[0-9]{1,2})?$')) {
		    if (dotation.value.match('^[0-9]+(\.[0-9]{1,2})?%$')) {
			var sp_pr = Number(price_w_vat.value) *
			    Number(dotation.value.replace(/%$/, '')) / 100;
			sponsored_price.value = sp_pr.toFixed(0);
		    } else if (dotation.value.
			       match('^[0-9]+(\.[0-9]{1,2})?$')) {
			sponsored_price.value = dotation.value;
		    } else {
			sponsored_price.value = '';
		    }
		} else {
		    sponsored_price.value = '';
		}
            // count/set vat and price_wo_vat
	    if (price_w_vat.value.match('^[0-9]+(\.[0-9]{1,2})?$') &&
		vat_perc.value.match('^[0-9]+(\.[0-9]+)?$')) {
		var vat = Number(price_w_vat.value) * Number(vat_perc.value) /
		    (100 + Number(vat_perc.value));
		vat = vat.toFixed(2);
		var price_wo_vat = Number(price_w_vat.value) - vat;
		price_wo_vat = price_wo_vat.toFixed(2);
		document.getElementById('vat').value = vat;
		document.getElementById('price_wo_vat').value = price_wo_vat;
	    } else {
		document.getElementById('vat').value = '';
		document.getElementById('price_wo_vat').value = '';
	    }
            // alert if invalid price_w_vat or vat
	    if (! price_w_vat.value.match('^([0-9]+(\.[0-9]{1,2})?)?$')) {
	        if (alert_price != '') alert(alert_price);
		return false;
	    }
	    if (! vat_perc.value.match('^([0-9]+(\.[0-9]+)?)?$')) {
	        if (alert_perc != '') alert(alert_perc);
		return false;
	    }
	}
    return true;
}

function countROZAM2(alert_price) {
    var price_sponsored = document.getElementById('price_sponsored').value;
    var price_with_vat = document.getElementById('price_with_vat').value;
    if (! price_sponsored.match('^[0-9]+$') ||
	Number(price_with_vat) < Number(price_sponsored)) {
	if (alert_price != '') alert(alert_price);
	return false;
    }
    var price_final = Number(price_with_vat) - Number(price_sponsored);
    price_final = price_final.toFixed(2);
    price_final = price_final.replace(/\.00$/, '');
    document.getElementById('price_final').value = price_final;
    return true;
}

function enableDisableROZAMComment(clear_value) {
    if (document.getElementById('status_approve').checked ||
        document.getElementById('status_leave').checked) {
        if (clear_value) document.getElementById('comment').value = "";
        document.getElementById('comment').disabled = "disable";
    } else if (document.getElementById('status_reject').checked) {
        document.getElementById('comment').disabled = "";
    }
}

//=== ROZAM Stuff (end) =======================================================

// === General Tools ==========================================================

function query(key) {
    var parameters = window.location.search.substr(1).split('&');
    for (var i = 0; i < parameters.length; i++) {
        var parameter = parameters[i].split('=', 2);
        if (key) {
            if (key == parameter[0]) return parameter[1];
        } else {
            parameters[i] = parameter;
        }
    }
    if (key) return;
    return parameters;
}

function adjustQuery(newParameters) { // [key1, value1, ..., keyN, valueN]
    var parameters = query(undefined);
    for (var j = 0; j < newParameters.length; j++)
        for (var i = 0; i < parameters.length; i++)
            if (newParameters[j][0] == parameters[i][0])
                parameters.splice(i, 1);
    parameters = parameters.concat(newParameters);
    for (var i = 0; i < parameters.length; i++)
        parameters[i] = parameters[i].join('=');
    parameters = parameters.join('&');
    window.location.search = '?' + parameters;
}

function setElementValueById(id, value) {
    document.getElementById(id).value = value;
}

function setElementPropertyById(id, property, value) {
    if (property == 'checked') {
        document.getElementById(id).checked = value;
    } else if (property == 'disabled') {
        document.getElementById(id).disabled = value;
    } else if (property == 'class' || property == 'className') {
        document.getElementById(id).className = value;
    }
}

function toggleVisibility(id, disp) {
    with (document.getElementById(id).style)
        if (visibility == "hidden" && display == "none") {
            visibility = "visible";
            display = disp;
        } else if (visibility == "visible" && display == disp) {
            visibility = "hidden";
            display = "none";
        }
}

function sleep(seconds) {
    var start = new Date().getTime();
    while (new Date().getTime() < start + seconds * 1000);
}

function getSelectOptionText(select, value) {
    if (typeof select == 'string') select = document.getElementById(select);
    for (var i = 0; i < select.length; i++)
        if (select.options[i].value == value) return select.options[i].text;
    return null;
}

// === General Tools (end) ====================================================

