var applicationContext = getApplicationContext();
var wsContext = getApplicationContext(); 

var reportListShortAction = applicationContext + "/viewReportListShortAction.do";
var kOOKWSUrl = wsContext + "/CiselnikSoapHttpPort/vratCiselnik1";

var suggestionUrl1 = wsContext + "/CiselnikSoapHttpPort/vratCiselnik1";
var suggestionUrl2 = wsContext + "/CiselnikSoapHttpPort/vratCiselnik2";
var suggestionUrl3 = wsContext + "/CiselnikSoapHttpPort/vratCiselnik3";

var kOOKelementList = ['selectedKrajKod', 'selectedOkresKod', 'selectedObecKod', 'selectedKuKod', 'ucastnik.vlastnikFO.adresa.obec', 'zmenaAdresy.staraAdresa.obec', 'ucastnik.vlastnikPO.adresa.obec', 'ucastnik.vlastnikPO.kontaktnaOsobaUdaje.adresa.obec', 'ucastnik.vlastnikFO.spoluVlastnik.adresa.obec', 'zmenaAdresy.staraAdresaSpoluvlastnik.obec'];

var aktualnostDatLayer = 'selectedOkresKod';

var suggestionFunctions = [null, [null, 'zoznamOkresovCezNazov'], ['zoznamObciCezKodKrajaNazovObce', null, 'zoznamObciCezNazov'], ['zoznamKUCezKodKrajaNazovKU', 'zoznamKUCezKodOkresuNazovKU', null, 'zoznamKUCezNazov'], ['zoznamObciCezNazov'], ['zoznamObciCezNazov'], ['zoznamObciCezNazov'], ['zoznamObciCezNazov'], ['zoznamObciCezNazov'], ['zoznamObciCezNazov']];

var kOOKWSFunctionList = ['zoznamOkresovCezKodKraja', 'zoznamObciCezKodOkresu', 'zoznamKUCezKodObce'];

var ajaxActionPostfix = "_ajax";

var getTotalReportWaitTimeUrl = wsContext + "/ServiceSoapHttpPort/getTotalReportWaitTime?reportID=";

function setAction(formName, action) {
    //alert ("Posielam pomocou JS");
    var ajaxPos = action.indexOf(ajaxActionPostfix);
    if (ajaxPos != -1) {
        action = action.substr(0, ajaxPos) + action.substr(ajaxPos + ajaxActionPostfix.length);
    }
    hideInfoBlock();
    document.forms[formName].action=action;
    if(typeof event != 'undefined' && event!=null) {
        if (event.preventDefault) event.preventDefault();
        event.returnValue = false;
        event.cancelBubble = false;
    }
    if (document.forms[formName].onsubmit==null || document.forms[formName].onsubmit()) document.forms[formName].submit();
}

function setSSLAction(formName, action) {
    //alert ("Posielam pomocou JS");
    var ajaxPos = action.indexOf(ajaxActionPostfix);
    if (ajaxPos != -1) {
        action = action.substr(0, ajaxPos) + action.substr(ajaxPos + ajaxActionPostfix.length);
    }
    hideInfoBlock();
    if (jsTexts["applicationContext.useRedirect"]!='false') document.forms[formName].action= getApplicationSSLURL() +  applicationContext + "/" + action;
    else document.forms[formName].action=action;
    if(typeof event != 'undefined' && event!=null) {
        if (event.preventDefault) event.preventDefault();
        event.returnValue = false;
        event.cancelBubble = false;
    }
    if (document.forms[formName].onsubmit==null || document.forms[formName].onsubmit()) document.forms[formName].submit();
}

function setLink(anchor, action) {
    if (jsTexts["applicationContext.useRedirect"]!='false' && window.location.protocol!='http:') {
        pos = anchor.href.indexOf(".do")
        anchor.href = anchor.href.substring(0, pos) + "Redirect" + anchor.href.substring(pos);
    }
}

function setSSLLink(anchor, action) {
    if (jsTexts["applicationContext.useRedirect"]!='false') anchor.href = getApplicationSSLURL() + applicationContext + action;
}

function refreshCaptchaImage() {
    if (document['captcha']!=null) document['captcha'].src=document['captcha'].src+'?'+(new Date()).getTime();
    return false;
}

function confirmBookingAndSetAction(formName, action, text) {
    if (confirm(text)) {
        document.forms[formName].elements['enableBooking'].value="true";
        setAction(formName, action);
    }
    else {
        if(event!=null) {
            if (event.preventDefault) event.preventDefault();
            event.returnValue = false;
            event.cancelBubble = false;
        }
    }
}

function runReportAction(formName, action) {
    hideInfoBlock();
    if(event!=null) {
        if (event.preventDefault) event.preventDefault();
        event.returnValue = false;
        event.cancelBubble = false;
    }
    //alert('zaradenie zostavy');
    if (!isAjaxEnabled()) {
//        alert("Ajax je vypnuty, pokus preposlat cez JS");
        setAction(formName, action);
        return;
    }
//    alert ("Pokusam poslat cez ajax");
    var service = new RunReportClass();
    service.setFormName(formName);
    service.setAction(action);
    var url = getApplicationURL() + applicationContext + "/" + action + "?ajaxRequest=true&" + getQueryString(formName);
    if (!sendXmlhttprequest(formName, action, url, "GET", service)) {
//        alert("Ajax nie je podporovany, pokus preposlat cez JS");
        setAction(formName, action);
        return;
    }
    //alert('zostava zaradena');
}

function runReportActionURL(formName, action, queryString) {
    hideInfoBlock();
    if(event!=null) {
        if (event.preventDefault) event.preventDefault();
        event.returnValue = false;
        event.cancelBubble = false;
    }
    //alert('zaradenie zostavy');
    if (!isAjaxEnabled()) {
        return true;
    }
//    alert ("Pokusam poslat cez ajax");
    var service = new RunReportClass();
    service.setFormName(formName);
    service.setAction(action);
    var url = getApplicationURL() + applicationContext + "/" + action + "?" + queryString;
    service.setURL(url);
    if (!sendXmlhttprequest(formName, action, url + "&ajaxRequest=true", "GET", service)) {
//        alert("Ajax nie je podporovany, pokus preposlat cez JS");
        return true;
    }
    //alert('zostava zaradena');
    return false;
}

function resetKookForm(formName, event) {
    resetForm(formName, event);
    clearKOOK(null);
    hideInfoBlock();
    resultSetBlock();
    showFormButtons();
}

function resetForm(formName, event) {
    if(typeof event != 'undefined' && event!=null) {
        if (event.preventDefault) event.preventDefault();
        event.returnValue = false;
        event.cancelBubble = false;
    }
    
    var form = document.forms[formName];
    var elements = form.elements;
    var element;
    for (var i=0; i<elements.length; i++) {
        element = elements[i];
        if (!element.disabled) {
            switch(element.type) {
                case 'text': case 'password': case 'textarea':
                    element.value="";
                    break;
                case 'select-one':
                    element.selectedIndex=0;
                    break;
                case 'select-multiple':
                    for (var j=0; j<element.options.length; j++) {
                        if (element.options[j].selected) {
                            element.options[j].selected=false;
                        }
                    }
                    break;
            }
        }
    }
}

function getQueryString(formName) {
    var form = document.forms[formName];
    var elements = form.elements;
    var element;
    var queryString = "";
    for (var i=0; i<elements.length; i++) {
        var element = elements[i];
        if (!element.disabled) {
            switch(element.type) {
                case 'text': case 'password': case 'hidden': case 'textarea':
                    queryString = addURLParameter (queryString, element.name,element.value);
                    break;
                case 'select-one':
                    if (element.selectedIndex>=0) queryString = addURLParameter (queryString, element.name,element.options[element.selectedIndex].value);
                    break;
                case 'select-multiple':
                    for (var j=0; j<element.options.length; j++) {
                        if (element.options[j].selected) {
                            queryString = addURLParameter (queryString, element.name,element.options[j].value);
                        }
                    }
                    break;
                case 'checkbox': case 'radio':
                    if (element.checked) queryString = addURLParameter (queryString, element.name, element.value);
                    break;
            }
        }
        //alert("qs"+queryString);
    }
    return queryString;
}

function addURLParameter(url, name,value) { 
    if (url.length>0) url += "&";
    url += encodeURIComponent(name) + "=" + encodeURIComponent(value);
    return url;
}

function isAjaxEnabled() {
    if (document.forms['nehnutelnostForm']!=null 
        || document.forms['prevodcaForm']
        || document.forms['nadobudatelForm']) return true;
    return !(document.forms['ajaxStateForm'] == null
    || document.forms['ajaxStateForm'].ajaxEnabled == null
    || !document.forms['ajaxStateForm'].ajaxEnabled.checked);
}

function sendAjaxChangeKOOKAction(formName, action, sourceElementName, targetElementName, finderName, selectedSourceKod, selectedTargetKod, isLast, tryNumber) {
//alert('sendAjaxChangeKOOKAction');
    hideInfoBlock();
    sourceElement = document.getElementById(sourceElementName);
    var selectedKod;
    if (selectedTargetKod==null) {
        selectedKod = sourceElement.options[sourceElement.selectedIndex].value;
        if (selectedKod==0) {
            clearKOOK(sourceElementName);
            return;
        }
    }
    else {
        selectedKod = selectedSourceKod;
    }
    //nastavime aktualnost
    if (sourceElementName==aktualnostDatLayer && okresyList!=null && selectedKod!=0 && okresyList[sourceElement.selectedIndex-1]!=null) {
        setAktualnostDat(okresyList[sourceElement.selectedIndex-1]['aktualnostDatSpi'], okresyList[sourceElement.selectedIndex-1]['aktualnostDatKk']);
    }
    //request neposleme, ak target neexituje
    if (formName!=null && document.forms[formName]!=null && document.forms[formName].elements[targetElementName]==null) return;

    if (!isAjaxEnabled()) {
//	alert("Ajax je vypnuty, pokus preposlat cez JS");
        setAction(formName, action);
        return;
    }
    //alert ("Pokusam poslat cez ajax");
    var service = new ViewChangeKOOKClass();
    service.setParameters(formName, action, sourceElementName, finderName, selectedSourceKod, selectedTargetKod, tryNumber);
    service.setTargetElementName(targetElementName);
    if (isLast!=null) service.setIsLast(isLast);
    if (selectedTargetKod!=null) service.setSelectedKod(selectedTargetKod);
    var parameters = "?nazovCiselniku=" + finderName + "&obmedzujuciParameter1=" + selectedKod;
    if (tryNumber!=null) parameters += "&try=" + tryNumber;
    if (!sendXmlhttprequest(formName, action, getApplicationURL()+kOOKWSUrl + parameters, "GET", service)) {
//        alert("Ajax nie je podporovany, pokus preposlat cez JS");
        setAction(formName, action);
        return;
    }
    //alert ("Poslanie cez ajax uspesne");
}

function getSuggestionURL(targetElementName,filter) {
    hideInfoBlock();
    var url = null;
    for (var finderNum=0; finderNum<kOOKelementList.length; finderNum++) {
        if (kOOKelementList[finderNum]==targetElementName) break;
    }
    var suggestionFunction = suggestionFunctions[finderNum];
    if (suggestionFunction==null) return null;
    var previousElement;
    var parameterIndex = 1;
    
    if (finderNum>=4) {
        url = getApplicationURL() + suggestionUrl1 + "?nazovCiselniku=" + suggestionFunction[0];
    }
    else {
        for (var i=finderNum-2; i>=0; i--) {
            previousElement = document.getElementById(kOOKelementList[i]);
            if(previousElement.selectedIndex!=0) {
                url = getApplicationURL() + suggestionUrl2 + "?nazovCiselniku=" + suggestionFunction[i];
                url += "&obmedzujuciParameter" + (parameterIndex++) + "="+ previousElement.options[previousElement.selectedIndex].value;
                break;
            }
        }
    }
    if (url==null) {
        url = getApplicationURL() + suggestionUrl1 + "?nazovCiselniku=" + suggestionFunction[finderNum];
    }
    url += "&obmedzujuciParameter" + parameterIndex + "=" + filter;
    return(url);
}

function sendAjaxReadSuggestion(inputElement, targetElementName) {
    //request neposleme, ak target neexituje
    if (document.getElementById(targetElementName)==null){
//        alert("target neexistuje");
        return;
    }
    if (!isAjaxEnabled()) {
//		alert("Ajax je vypnuty, suggestion nenacitam");
		return;
    }
//    alert ("Pokusam poslat cez ajax");
    filter = inputElement.value;
    if (filter.length==0) return;
    
    var service = new ViewSuggestionListClass();
    service.setSuggestionFilter(filter);
    service.setTargetElementName(targetElementName);
    service.setInputElement(inputElement);
    var url = getSuggestionURL(targetElementName,filter);
    if (url == null) {
//        alert("zle url");
        return;
    }
//    alert(url);
    if (!sendXmlhttprequest(null, null, url, "GET", service)) {
//        alert("Ajax nie je podporovany, pokus preposlat cez JS");
        return;
    }
//    alert ("Poslanie cez ajax uspesne");
}

function getTotalReportWaitTime(reportId) {
    var service = new ViewReportWaitTimeClass();
    service.setReportId(reportId);
    var url = getTotalReportWaitTimeUrl + reportId;
    if (!sendXmlhttprequest(null, null, url, "GET", service)) {
        return;
    }
}

var selectedSuggestion = 0;
var suggestionList = null;
var okresyList = null;
function kOOKSuggestionEvent(event, inputElement, targetElementName) {
    var keyCode = event.keyCode;
//    if (event.preventDefault) event.preventDefault();
    var changeSelection = 0;
    switch (keyCode) {
        case 13: kOOKSuggestionSelect(document.getElementById("sugg"+selectedSuggestion), inputElement.name, targetElementName);
                if (event.preventDefault) event.preventDefault();
                //if (event.stopPropagation) event.stopPropagation(true);
                event.returnValue = false;
                event.cancelBubble = false;
                return;
        case 38: changeSelection=-1; break; //hore
        case 40: changeSelection=1; break;  //dole
    }
    if (changeSelection == 0) {
        return;
    }
    if (event.preventDefault) event.preventDefault();
    //if (event.stopPropagation) event.stopPropagation(true);
    event.returnValue = false;
    event.cancelBubble = false;
    var aktualSelected = selectedSuggestion;

    var nextElement = document.getElementById("sugg"+(selectedSuggestion+changeSelection));
    if (selectedSuggestion+changeSelection<0
        ||  nextElement== null) {
        return;
    }
    selectedSuggestion += changeSelection;
    changeSuggestionSelectedElement(aktualSelected, selectedSuggestion, inputElement.name);
}

function kOOKSuggestionMouseOver(element, inputElementName) {
    var aktualSelected = selectedSuggestion;
    
    selectedSuggestion = getKOOKElementId(element);
    changeSuggestionSelectedElement(aktualSelected, selectedSuggestion, inputElementName);
}

function getKOOKElementId(element) {
    return (new Number(element.id.substr(4)));
}

function changeSuggestionSelectedElement(aktualElementNumber, nextElementNumber, inputElementName) {
    if (suggestionList!=null) {
        var aktualElement = document.getElementById("sugg"+aktualElementNumber);
        var nextElement = document.getElementById("sugg"+nextElementNumber);
        var inputElement = document.getElementById(inputElementName);
        aktualElement.className = "notSelected";
        nextElement.className = "selected"; 
        inputElement.value = suggestionList[nextElementNumber]['nazov'];
    }
}

function kOOKSuggestionSelect(selectedElement, inputElementName, targetElementName) {
    //alert("kOOKSuggestionSelect");
    if(suggestionList!=null) {
        hideSuggestionList();
        
        inputElement = document.getElementById(inputElementName);
        selectedElementNumber = getKOOKElementId(selectedElement);
        inputElement.value = suggestionList[selectedElementNumber]['nazov'];
        if (targetElementName=="selectedKuKod") {
            sendAjaxChangeKOOKAction(null, null, 'selectedKrajKod', 'selectedOkresKod', 'zoznamOkresovCezKodKraja', suggestionList[selectedElementNumber]['krajeKod'], suggestionList[selectedElementNumber]['okresyKod']);
            sendAjaxChangeKOOKAction(null, null, 'selectedOkresKod', 'selectedObecKod', 'zoznamObciCezKodOkresu', suggestionList[selectedElementNumber]['okresyKod'], suggestionList[selectedElementNumber]['obceKod']);
            sendAjaxChangeKOOKAction(null, null, 'selectedObecKod', 'selectedKuKod', 'zoznamKUCezKodObce', suggestionList[selectedElementNumber]['obceKod'], suggestionList[selectedElementNumber]['kod'], true);
        } else if (targetElementName=="selectedObecKod") {
            var a = 1;
            sendAjaxChangeKOOKAction(null, null, 'selectedKrajKod', 'selectedOkresKod', 'zoznamOkresovCezKodKraja', suggestionList[selectedElementNumber]['krajeKod'], suggestionList[selectedElementNumber]['okresyKod']);
            sendAjaxChangeKOOKAction(null, null, 'selectedOkresKod', 'selectedObecKod', 'zoznamObciCezKodOkresu', suggestionList[selectedElementNumber]['okresyKod'], suggestionList[selectedElementNumber]['kod'], true);
        } else if (targetElementName=="selectedOkresKod") {
            //setAktualnostDat(suggestionList[selectedElementNumber]['aktualnostDatSpi'], suggestionList[selectedElementNumber]['aktualnostDatKk']);
            sendAjaxChangeKOOKAction(null, null, 'selectedKrajKod', 'selectedOkresKod', 'zoznamOkresovCezKodKraja', suggestionList[selectedElementNumber]['krajeKod'], suggestionList[selectedElementNumber]['kod'], true);
        }
        
        
        suggestionList = null;
    }
}

function setAktualnostDat(aktualnostDatSpi, aktualnostDatKk) {
    element = document.getElementById("aktualnostDatSpi");
    if (element!=null) element.className = "visible";
    element = document.getElementById("aktualnostDatSpiOut");
    if (element!=null) element.innerHTML = aktualnostDatSpi;
    element = document.getElementById("aktualnostDatKk");
    if (element!=null) element.className = "visible";
    element = document.getElementById("aktualnostDatKkOut");
    if (element!=null) element.innerHTML = aktualnostDatKk;
}

function hideAktualnostDat() {
    element = document.getElementById("aktualnostDatSpi");
    if (element!=null) element.className = "unvisible";
    element = document.getElementById("aktualnostDatKk");
    if (element!=null) element.className = "unvisible";
}

function switchExtendedMenu(show) {
    setCookie('extendedMenu', show, 365);
    if (show) {
        newClass = "visible";
        newShowClass = "unvisible";
    }
    else {
        newClass = "unvisible";
        newShowClass = "visible";
    }
    for (var i=0; i<4; i++) {
        elementReg = document.getElementById('extendedMenu'+i);
        if (elementReg!=null) {
            if (i==2) elementReg.className = newShowClass;
            else elementReg.className = newClass;
        }
    }
    return false;
}

function hideSuggestionList() {
    var outMainDOM = document.getElementById('suggestionList');
    if (outMainDOM!=null)outMainDOM.style.display = "none";
    
    //zobrazenie combo boxov
    var element = document.getElementById('selectedDruhPriestoruKod');
    if (element!=null)element.style.display = "";
    element = document.getElementById('selectedZnackaListinyKod');
    if (element!=null)element.style.display = "";
}

function showSuggestionList() {
    var outMainDOM = document.getElementById('suggestionList');
    if (outMainDOM!=null)outMainDOM.style.display = "";

    //skytie combo boxov, ktore prekryju zoznam
    var element = document.getElementById('selectedDruhPriestoruKod');
    if (element!=null)element.style.display = "none";
    element = document.getElementById('selectedZnackaListinyKod');
    if (element!=null)element.style.display = "none";
}

function dismissEnter(event) {
     if (event.keyCode==13 && event.preventDefault) event.preventDefault();
}

var reReadSuggestionTimer = 0;
var reReadSuggestionWait = 500;
function kOOKReadSuggetstions(event, inputElement, targetElementName) {
    if (event.keyCode==13
        || event.keyCode==38
        || event.keyCode==40) {
        if (event.preventDefault) event.preventDefault();
        return;
    }
    if (reReadSuggestionTimer) clearTimeout(reReadSuggestionTimer);
    if(inputElement.value.length<1) return;
    var reReadSuggestionFunction = function() {
        sendAjaxReadSuggestion(inputElement, targetElementName);
    };
    reReadSuggestionTimer = setTimeout(reReadSuggestionFunction, reReadSuggestionWait);
}

function getApplicationURL() {
    return window.location.protocol + "//" + window.location.host;
}

function getApplicationSSLURL() {
    return jsTexts["app.https.protocol"] + "//" + window.location.hostname + jsTexts["app.https.port"];
}

function getApplicationNonSSLURL() {
    return "http://" + window.location.hostname + jsTexts["app.http.port"];
}

function getApplicationContext() {
    var pathname = window.location.pathname;
    var slashPos = pathname.lastIndexOf("/");
    var applicationContext;
    if(slashPos!=-1) applicationContext = pathname.substr(0,slashPos);
    else appliactionContext = pathname;
    return applicationContext;
}

function sendXmlhttprequest(formName, action, url, method, serviceObject, content, headers) {
    var xmlHttp = (window.XMLHttpRequest ? new XMLHttpRequest : (window.ActiveXObject ?  new ActiveXObject("MSXML2.XMLHTTP.3.0")  : false));
    if (!xmlHttp) {
        return false;
    }
    xmlHttp.open(method, url, true);
    xmlHttp.onreadystatechange = function() {
        serviceAjaxFunction(xmlHttp, formName, action, serviceObject);
    };
    if (headers) {
        for (var key in headers) {
            xmlHttp.setRequestHeader(key, headers[key]);
        }
    }
    xmlHttp.send(content);
    //serviceAjaxFunction(xmlHttp, action, serviceObject); - pre synchronne posielanie
    return true;
}

function hideSelectElement(elementName) {
    var element = document.getElementById(elementName+"Select");
    if (element!=null) element.className = "tag-unvisible";
    element = document.getElementById(elementName+"SelectBtn");
    if (element!=null) element.className = "tag-unvisible";
    
    element = document.getElementById(elementName+"Text");
    if (element!=null) element.className = "tag-visible";
    element = document.getElementById(elementName+"TextBtn");
    if (element!=null) element.className = "tag-visible";
}

function hideTextElement(elementName) {
    var element = document.getElementById(elementName+"Text");
    if (element!=null) element.className = "tag-unvisible";
    element = document.getElementById(elementName+"TextBtn");
    if (element!=null) element.className = "tag-unvisible";
    
    element = document.getElementById(elementName+"Select");
    if (element!=null) element.className = "tag-visible";
    element = document.getElementById(elementName+"SelectBtn");
    if (element!=null) element.className = "tag-visible";
}

function serviceAjaxFunction(xmlHttp, formName, action, serviceObject) {
    if (xmlHttp.readyState == 4) {
        if (xmlHttp.status!=200) {
//            alert ("Nacitanie cez ajax neuspesne");
            if (action != null && formName!=null) {
//                alert ("Pokusam preposlat cez JS");
                setAction(formName, action);
            }
            return;
        }
//        alert ("Nacitanie cez ajax uspesne");
        serviceObject.setXmlHttp(xmlHttp);
        serviceObject.execute();
    }
}

hideList = ['submitActiononChangeKrajAction', 'submitActiononChangeOkresAction', 'submitActiononChangeObecAction'];
formsList = ['vyhladavanieLVForm', 'vyhladavanieParcelaForm', 'vyhladavanieStavbaForm', 'vyhladavanieBytForm', 'vyhladavanieVlastnikForm', 'vyhladavanieNezistVlastnikForm', 
    'regVlastnikovForm', 'regObciForm', 'regKuForm', 'uhdpForm', 'statistikaForm',
    'supisParcielForm', 'supisStaviebForm', 
    'informacieKKForm', 'prehladKKForm', 'prijateKKForm', 
    'nehnutelnostForm'];
function hideButtons() {
    var i = 0;
    var form = 0;
/*    for(form=0; form<document.forms.length; form++) {
        for(i=0;i<document.forms[form].elements.length;i++) {
            if (document.forms[form].elements[i].name.indexOf("submitAction")==0) document.forms[form].elements[i].style.display="none";
        }
    }*/
    element = document.getElementById('pagingNacitat');
    if (element!=null) element.className="tag-unvisible";

    var element;
    for (i=0;i<hideList.length;i++) {
        for (var j=0;j<formsList.length;j++) {
            element = document.getElementById(hideList[i]+"_"+formsList[j]+".do");
            if (element!=null) element.className="tag-unvisible";
        }
    }
}


//viewExceedLimit
var countDownUpdateInterval = 1000;
var countDownTimer = 0;
function refreshCountDownTime(isAjaxEnqueueReport, formName, action) {
    var time = document.getElementById('countDown').innerHTML;
    time -= countDownUpdateInterval/1000;
    var displayTime = time;
    if (displayTime<0) displayTime = 0;
    document.getElementById('countDown').innerHTML=displayTime;
    
    if (time < -0.5) {
        if (countDownTimer) clearTimeout(countDownTimer);
	if (isAjaxEnqueueReport) runReportAction(formName, action);
        else window.location.reload( false );
        return;
    }
    var refreshFunction = function() {
        refreshCountDownTime(isAjaxEnqueueReport, formName, action);
    };
    countDownTimer = setTimeout(refreshFunction, countDownUpdateInterval);
}


//reportListShort
var reportListShortTimer = 0;
function startRefreshReportListShort(interval) {
    var refreshFunction = function() {
        refreshReportListShort(interval);
    };
    reportListShortTimer = setTimeout(refreshFunction, interval*1000);
}

function refreshReportListShort(interval) { 
    var service = new ViewReportListShortClass();
    sendXmlhttprequest(null, null, getApplicationURL()+reportListShortAction, "GET", service);
    //if (interval>5) startRefreshReportListShort(interval);
}


//info block
var infoBlackTimer = 0;
//startHideInfoBlockShort();
function startHideInfoBlockShort() {
    var hideInfoBlockFunction = function() {
        hideInfoBlock();
    };
    infoBlackTimer = setTimeout(hideInfoBlockFunction, 5000);
}

function hideInfoBlock() {
    element = document.getElementById("jsInfo");
    if (element!=null) element.className = "tag-unvisible";
    element = document.getElementById("strutsInfo");
    if (element!=null) element.className = "tag-unvisible";
}

function resultSetBlock() {
    element = document.getElementById("resultSet");
    if (element!=null) element.className = "tag-unvisible";
}

function showFormButtons() {
    element = document.getElementById("zaradit");
    if (element!=null) element.className = "tag-visible";
    element = document.getElementById("vytvorit");
    if (element!=null) element.className = "tag-visible";
    element = document.getElementById("zaraditInfo");
    if (element!=null) element.className = "tag-visible";
}

function ViewReportListShortClass() {
    var xmlHttp;
    this.execute = execute;
    this.setXmlHttp = setXmlHttp;
    
    function execute() {
        document.getElementById('tlsReportList').innerHTML = xmlHttp.responseText;
        if (xmlHttp.responseText.indexOf("<script")!=-1) {    
            var refreshTime = 10;
            var refreshFunction = "startRefreshReportListShort(";
            var refreshTimePos = xmlHttp.responseText.indexOf(refreshFunction);
            if (refreshTimePos!=-1) {
                var refreshTimePosEnd = xmlHttp.responseText.indexOf(")", refreshTimePos);
                if (refreshTimePosEnd!=-1) refreshTime = xmlHttp.responseText.substr(refreshTimePos + refreshFunction.length, refreshTimePosEnd-refreshTimePos-refreshFunction.length);
            }
            startRefreshReportListShort(refreshTime);
        }
    }
    
    function setXmlHttp (xmlHttpIn) {
        xmlHttp = xmlHttpIn;
    }
}

function ViewChangeKOOKClass() {
    var xmlHttp;
    var targetElementName;
    var selectedKod = 0;
    var isLast = false;

    var formName;
    var action;
    var sourceElementName;
    var finderName;
    var selectedSourceKod;
    var selectedTargetKod;
    var tryNumber;
    
    this.execute = execute;
    this.setXmlHttp = setXmlHttp;
    this.setSelectedKod = setSelectedKod;
    this.setTargetElementName = setTargetElementName;
    this.setIsLast = setIsLast;
    this.setParameters = setParameters;
    
    function execute() {
        var targetElement = document.getElementById(targetElementName);
        var odpovede = xmlHttp.responseXML.getElementsByTagName("element");

        if (odpovede.length==0) {
            if (tryNumber==null || tryNumber<4) {
                if (tryNumber==null) tryNumber=1;
                else if (tryNumber<3) tryNumber++;
                else tryNumber = 4 + Math.floor(Math.random()*100);
                sendAjaxChangeKOOKAction(formName, action, sourceElementName, targetElementName, finderName, selectedSourceKod, selectedTargetKod, isLast, tryNumber);
            }
            else if (formName!=null && action!=null){
                setAction(formName, action);
            }
            return;
        }

        var kod;
        var nazov;
        var krajeKod;
        var aktualnostDatSpi;
        var aktualnostDatKk;

        var kodXML;
        var nazovXML;
        var krajeKodXML;
        var aktualnostDatSpiXML;
        var aktualnostDatKkXML;
        
        var i;
        targetElement.selectedIndex = 0;
        
        var targetElementLength = targetElement.length;
        for (i=1; i<targetElementLength; i++) targetElement.options[1]=null;

        if (selectedKod==0) clearKOOK(targetElementName);
        var offset = 1;
        //if (odpovede.length!=1) targetElement.options[offset++] = new Option('Vyber',0, true);
        var selectedId=0;
        if(aktualnostDatLayer==targetElementName) okresyList = new Array();

        for (i=0; i < odpovede.length; i++) {
            kodXML = odpovede[i].getElementsByTagName("kod");
            nazovXML = odpovede[i].getElementsByTagName("nazov");
            krajeKodXML = odpovede[i].getElementsByTagName("krajeKod");
            kod = kodXML[0].firstChild.nodeValue;
            nazov = nazovXML[0].firstChild.nodeValue;
            if (krajeKodXML!=null && krajeKodXML.length>0 && krajeKodXML[0].firstChild!=null) krajeKod = krajeKodXML[0].firstChild.nodeValue;
            else krajeKod = null;
            if(aktualnostDatLayer==targetElementName) {
                aktualnostDatSpiXML = odpovede[i].getElementsByTagName("aktualnostDatSpi");
                aktualnostDatKkXML = odpovede[i].getElementsByTagName("aktualnostDatKk");
                if (aktualnostDatSpiXML!=null && aktualnostDatSpiXML.length>0 && aktualnostDatSpiXML[0].firstChild!=null) aktualnostDatSpi = aktualnostDatSpiXML[0].firstChild.nodeValue;
                else aktualnostDatSpi = jsTexts["txt.js.aktualnost.nedodane"];
                if (aktualnostDatKkXML!=null && aktualnostDatKkXML.length>0 && aktualnostDatKkXML[0].firstChild!=null) aktualnostDatKk = aktualnostDatKkXML[0].firstChild.nodeValue;
                else aktualnostDatKk = jsTexts["txt.js.aktualnost.nedodane"];
                if (selectedKod==kod) setAktualnostDat(aktualnostDatSpi, aktualnostDatKk);
                okresyListElement = new Array();
                okresyListElement['kod'] = kod;
                okresyListElement['nazov'] = nazov;
                okresyListElement['aktualnostDatSpi'] = aktualnostDatSpi;
                okresyListElement['aktualnostDatKk'] = aktualnostDatKk;
                okresyList.push(okresyListElement);
            }
            targetElement.options[i+offset] = new Option(nazov, kod, odpovede.length==1);
            if (selectedKod!=0 && selectedKod == kod) selectedId = i+offset;
        }
        
        if (selectedKod!=0 && krajeKod!=null) {
            krajElement = document.getElementById(kOOKelementList[0]);
            for (i=0; i<krajElement.length; i++) {
                if (krajElement.options[i].value==krajeKod) {
                    krajElement.selectedIndex = i;
                    break;
                }
            }
        }
                
        hideTextElement(targetElementName);
        if (selectedKod!=0) {
            targetElement.selectedIndex = selectedId;
            if (isLast && targetElement.onchange) targetElement.onchange();
        }
        if (odpovede.length==1) {
            targetElement.selectedIndex = 1;
            if (targetElement.onchange) targetElement.onchange();
        }
    }
    
    function setParameters(formNameIn, actionIn, sourceElementNameIn, finderNameIn, selectedSourceKodIn, selectedTargetKodIn, tryNumberIn) {
        formName = formNameIn;
        action = actionIn;
        sourceElementName = sourceElementNameIn;
        finderName = finderNameIn;
        selectedSourceKod = selectedSourceKodIn;
        selectedTargetKod = selectedTargetKodIn;
        tryNumber = tryNumberIn;
    }
    
    function setXmlHttp (xmlHttpIn) {
        xmlHttp = xmlHttpIn;
    }
    
    function setTargetElementName(targetElementNameIn) {
    	targetElementName = targetElementNameIn;
    }
    
    function setSelectedKod(selectedKodIn) {
    	selectedKod = selectedKodIn;
    }
    
    function setIsLast(isLastIn) {
    	isLast = isLastIn;
    }
}

function ViewSuggestionListClass() {
    var xmlHttp;
    var targetElementName;
    var inputElement;
    var suggestionFilter;
    this.execute = execute;
    this.setXmlHttp = setXmlHttp;
    this.setTargetElementName = setTargetElementName;
    this.setInputElement = setInputElement;
    this.setSuggestionFilter = setSuggestionFilter;
    
    function execute() {
        if (suggestionFilter != inputElement.value) {
            return;
        }
        
        var targetElement = document.getElementById(targetElementName);
        var odpovede = xmlHttp.responseXML.getElementsByTagName("element");
        var out= '<table class="suggestion">';
        var outMainDOM = document.getElementById('suggestionList');
//        alert(targetElementName);
        var targetTextElement = document.getElementById(targetElementName+"Text");
        if (targetTextElement ==null) targetTextElement = document.getElementById(targetElementName);
        var textElementPosition = getElementPosition(targetTextElement);
        outMainDOM.style.left = textElementPosition[0] - 3 +"px";
        outMainDOM.style.top = textElementPosition[1] + getElementHeight(targetTextElement) + "px";
        var outDOM = document.getElementById('suggestionListOut');

        var kod;
        var nazov;
        var okresyKod;
        var krajeKod;
        var obceKod;
        var aktualnostDatSpi;
        var aktualnostDatKk;
        var okresyNazovIfNotDistinct;
        
        var kodXML;
        var nazovXML;
        var okresyKodXML;
        var krajeKodXML;
        var obceKodXML;
        var aktualnostDatSpiXML;
        var aktualnostDatKkXML;
        var okresyNazovIfNotDistinctXML;
        suggestionList = new Array();
        if (odpovede.length==0) {
            out += '<tr class="noResult"><td nowrap>' + jsTexts["txt.js.suggestion.noRows"] + '</td></tr>';
        }
        else {
            for (var i=0; i < odpovede.length; i++) {
                kodXML = odpovede[i].getElementsByTagName("kod");
                nazovXML = odpovede[i].getElementsByTagName("nazov");
                obceKodXML = odpovede[i].getElementsByTagName("obceKod");
                okresyKodXML = odpovede[i].getElementsByTagName("okresyKod");
                krajeKodXML = odpovede[i].getElementsByTagName("krajeKod");
                aktualnostDatSpiXML = odpovede[i].getElementsByTagName("aktualnostDatSpi");
                aktualnostDatKkXML = odpovede[i].getElementsByTagName("aktualnostDatKk");
                okresyNazovIfNotDistinctXML = odpovede[i].getElementsByTagName("okresyNazovIfNotDistinct");
                
                kod = kodXML[0].firstChild.nodeValue;
                nazov = nazovXML[0].firstChild.nodeValue;
                if (obceKodXML!=null && obceKodXML.length>0 && obceKodXML[0].firstChild!=null) obceKod = obceKodXML[0].firstChild.nodeValue;
                else obceKod = null;
                if (okresyKodXML!=null && okresyKodXML.length>0 && okresyKodXML[0].firstChild!=null) okresyKod = okresyKodXML[0].firstChild.nodeValue;
                else okresyKod = null;
                if (krajeKodXML!=null && krajeKodXML.length>0 && krajeKodXML[0].firstChild!=null) krajeKod = krajeKodXML[0].firstChild.nodeValue;
                else krajeKod = null;
                if (aktualnostDatSpiXML!=null && aktualnostDatSpiXML.length>0 && aktualnostDatSpiXML[0].firstChild!=null) aktualnostDatSpi = aktualnostDatSpiXML[0].firstChild.nodeValue;
                else aktualnostDatSpi = jsTexts["txt.js.aktualnost.nedodane"];
                if (aktualnostDatKkXML!=null && aktualnostDatKkXML.length>0 && aktualnostDatKkXML[0].firstChild!=null) aktualnostDatKk = aktualnostDatKkXML[0].firstChild.nodeValue;
                else aktualnostDatKk = jsTexts["txt.js.aktualnost.nedodane"];
                
                if (okresyNazovIfNotDistinctXML!=null && okresyNazovIfNotDistinctXML.length>0 && okresyNazovIfNotDistinctXML[0].firstChild!=null) okresyNazovIfNotDistinct = okresyNazovIfNotDistinctXML[0].firstChild.nodeValue;
                else okresyNazovIfNotDistinct = null;
                
                suggestionElement = new Array();
                suggestionElement['kod'] = kod;
                suggestionElement['nazov'] = nazov;
                suggestionElement['obceKod'] = obceKod;
                suggestionElement['okresyKod'] = okresyKod;
                suggestionElement['krajeKod'] = krajeKod;
                suggestionElement['aktualnostDatSpi'] = aktualnostDatSpi;
                suggestionElement['aktualnostDatKk'] = aktualnostDatKk;
                suggestionList.push(suggestionElement);
                if (i<11) out += '<tr class="' + ((i==0)?"selected":"notSelected") + '" id="sugg' + i + '" onmouseover="kOOKSuggestionMouseOver(this, \'' + inputElement.name + '\')" onmousedown="kOOKSuggestionSelect(this, \'' + inputElement.name + '\', \'' + targetElementName + '\')"><td>'
                                +nazov
                                + (okresyNazovIfNotDistinct?" (" + okresyNazovIfNotDistinct + ")":"")
                                +"</td></tr>";
                else {
                    out += '<tr class="' + ((i==0)?"selected":"notSelected") + '"><td>...</td></tr>';
                    break;
                }
            }
        }
        out+="</table>";
        selectedSuggestion = 0;
        outDOM.innerHTML = out;
        //doplnenie ostatneho textu
        /*
        if (odpovede.length>0 && inputElement.createTextRange!=null) {
                kodXML = odpovede[0].getElementsByTagName("Kod");
                nazovXML = odpovede[0].getElementsByTagName("Nazov");
                kod = kodXML[0].firstChild.nodeValue;
                nazov = nazovXML[0].firstChild.nodeValue;
                var origTxt = inputElement.value;
                //document.getElementById('ku').value=kod;
                inputElement.value=nazov;
                var range = inputElement.createTextRange();
                range.moveStart("character", origTxt.length);
                range.moveEnd("character", nazov.length);
                range.select();
        }*/
        showSuggestionList();
    }
    
    function setXmlHttp (xmlHttpIn) {
        xmlHttp = xmlHttpIn;
    }
    
    function setTargetElementName(targetElementNameIn) {
    	targetElementName = targetElementNameIn;
    }
    
    function setInputElement(inputElementIn) {
    	inputElement = inputElementIn;
    }
    
    function setSuggestionFilter(suggestionFilterIn) {
    	suggestionFilter = suggestionFilterIn;
    }
    
}


function RunReportClass() {
    var xmlHttp;
    var targetElementName;
    var inputElement;
    var formName;
    var action;
    var url = null;
    this.execute = execute;
    this.setXmlHttp = setXmlHttp;
    this.setTargetElementName = setTargetElementName;
    this.setInputElement = setInputElement;
    this.setFormName = setFormName;
    this.setAction = setAction;
    this.setURL = setURL;
    
    function execute() {
        if (xmlHttp.responseText.indexOf("<needStandardAction/>")!=-1) {
            if (url==null)setAction(formName, action);
            else location.replace(url);
            return;
        }
        refreshCaptchaImage();
        hideInfoBlock();
        element = document.getElementById("jsInfo");
        if (element!=null) element.className = "tag-visible";
        //element = document.getElementById("jsInfoOut");
        element.innerHTML = xmlHttp.responseText;
        if (xmlHttp.responseText.indexOf(jsTexts["msg.report.enqueue.ok"])!=-1) {
            startRefreshReportListShort(3);
            //startHideInfoBlockShort();
        }
        else if (xmlHttp.responseText.indexOf("countDown")!=-1) {
            refreshCountDownTime(true, formName, action);
        }
    }
    
    function setXmlHttp (xmlHttpIn) {
        xmlHttp = xmlHttpIn;
    }
    
    function setTargetElementName(targetElementNameIn) {
    	targetElementName = targetElementNameIn;
    }
    
    function setInputElement(inputElementIn) {
    	inputElement = inputElementIn;
    }
    
    function setFormName(formNameIn) {
    	formName = formNameIn;
    }
    
    function setAction(actionIn) {
    	action = actionIn;
    }
    
    function setURL(urlIn) {
    	url = urlIn;
    }
}

function ViewReportWaitTimeClass() {
    var xmlHttp;
    var reportId;
    this.execute = execute;
    this.setXmlHttp = setXmlHttp;
    this.setReportId = setReportId;
    
    function execute() {
        var odpoved = xmlHttp.responseXML.getElementsByTagName("result");
        element = document.getElementById("reportWaitTime"+reportId);
        var waitTimeStr;
        if (odpoved!=null && odpoved[0]!=null && odpoved[0].firstChild!=null) {
            waitTimeStr = odpoved[0].firstChild.nodeValue;
        }
        else waitTimeStr = jsTexts["txt.report.ws.wait.nezist"];;
        if (element!=null) element.innerHTML = waitTimeStr;
    }
    
    function setXmlHttp (xmlHttpIn) {
        xmlHttp = xmlHttpIn;
    }
    
    function setReportId (reportIdIn) {
        reportId = reportIdIn;
    }
}

function clearKOOK (fromElementName) {
    //document.getElementById("out").innerHTML += "clearKOOK("+fromElementName+")";
    var i=0;
    if (fromElementName!=null) {
        for (i=0; i<kOOKelementList.length; i++) {
            if (kOOKelementList[i]==fromElementName) break;
        }
        if (kOOKelementList[i]==aktualnostDatLayer) hideAktualnostDat();
        i++;
    }
    var targetElementLength;
    if (i<kOOKelementList.length)
        for (var n=i;n<kOOKelementList.length;n++) {
            var targetElement = document.getElementById(kOOKelementList[n]);
            if (targetElement==null) continue;
            if (kOOKelementList[n]==aktualnostDatLayer) hideAktualnostDat();
            targetElementLength = targetElement.length;
            if (n!=0) for (var j=1; j<targetElementLength; j++) {targetElement.options[1]=null;}
            else targetElement.selectedIndex=0;
            hideSelectElement(kOOKelementList[n]);
        }
}

function getElementPosition(element) {
    var curLeft = curRop = 0;
    if (element.offsetParent) {
        curLeft = element.offsetLeft;
        curTop = element.offsetTop;
        while (element = element.offsetParent) {
            curLeft += element.offsetLeft;
            curTop += element.offsetTop;
        }
    }
    return [curLeft,curTop];
}

function getElementWidth(element) {
    var n,x,obj=element;
    return (( (x=obj.style.pixelWidth) || (x=obj.clientWidth) || (x=obj.offsetWidth) || (x=parseInt(obj.style.width)) ) ? x:null);
}

function getElementHeight(element) {
    var n,x,obj=element;
    return (( (x=obj.style.pixelHeight) || (x=obj.clientHeight) || (x=obj.offsetHeight) || (x=parseInt(obj.style.height)) ) ? x:null);
}



/*******************************************************************************
    ContextHelp
*/

function showContextHelp(contextElement, messageKey, valign, align) {
    contextHelpState = true;
    stopHidingContextHelp();
    if (contextHelpViewTimer) clearTimeout(contextHelpViewTimer);
    var viewFunction = function() {
        showContextHelpWait(contextElement, messageKey, valign, align);
    };
    contextHelpViewTimer = setTimeout(viewFunction, viewContextHelpWait);
}

function showContextHelpWait(contextElement, messageKey, valign, align) {
    if(!contextHelpState) return;
    var element = document.getElementById("contextHelpTableOut");
    element.innerHTML = contextHelpMsg[messageKey];   
    element = document.getElementById("contextHelpTable");
    if (element!=null) element.style.display="";
    
    var contextElementPosition = getElementPosition(contextElement);
    var x = contextElementPosition[0];
    var y = contextElementPosition[1];
    if (valign=="top") y -= getElementHeight(element);
    else if (valign=="bottom") y += getElementHeight(contextElement);
    else y -= (getElementHeight(element) - getElementHeight(contextElement))/2;
    
    if (align=="left") x -= getElementWidth(element);
    else if (align=="right") x += getElementWidth(contextElement);
    else x -= (getElementWidth(element) - getElementWidth(contextElement))/2;
    element.style.left = x + "px";
    element.style.top = y + "px";
}

function hideContextHelp() {
    element = document.getElementById("contextHelpTable");
    if (element!=null) element.style.display="none";
}

var hideContextHelpDuration = 1000;
var contextHelpTimer = 0;
var viewContextHelpWait = 200;
var contextHelpViewTimer = 0;
var contextHelpState = 0;
function stopHidingContextHelp() {
    if (contextHelpTimer) clearTimeout(contextHelpTimer);
}

function startHidingContextHelp() {
    contextHelpState = false;
    stopHidingContextHelp();
    var hideFunction = function() {
        hideContextHelp();
    };
    contextHelpTimer = setTimeout(hideFunction, hideContextHelpDuration);
}

/*******************************************************************************
    Registracia
*/
function switchRegistration(formName, element) {
    var quickRegistrationClass = "unvisible";
    var fullRegistrationClass = "visible";
    if (!element.checked) {
        quickRegistrationClass = "visible";
        fullRegistrationClass = "unvisible";
    }
    var elementReg = document.getElementById('quickRegistration');
    if (elementReg!=null) elementReg.className = quickRegistrationClass;
    for (var i=0; i<13; i++) {
        elementReg = document.getElementById('fullRegistrationParameter'+i);
        if (elementReg!=null) elementReg.className = fullRegistrationClass;
    }
}

/*******************************************************************************
    Cookie
*/
function setCookie(c_name,value,expiredays) {
var exdate=new Date();
if (expiredays!=null) exdate.setDate(exdate.getDate()+expiredays);
document.cookie=c_name+ "=" +escape(value)+ ((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}

function getCookieValue(key) {
    cookies = document.cookie ;
    begin = cookies.indexOf(key.concat('=')) ;
    cookies = cookies.substring(begin+5) ;
    result = (cookies.split(';'))[0] ;
    return result
}

function switchAjaxEnabled(formName, element) {
    if (element.checked) document.cookie = 'ajaxEnabled=true;';
    else document.cookie = 'ajaxEnabled=;';
 }
 
 
/*******************************************************************************
    Potvrdenie odoslania uhrady
*/
var wasSubmit = false;

function sendPayment(formName) {
    if(wasSubmit) {
        alert(jsTexts["txt.js.offLineUhrada.retry"]);
        return false;
    }
    if(confirm(jsTexts["txt.js.offLineUhrada.confirm"])) {
        wasSubmit = true;
        setAction(formName, 'bookOffLineUhradaActionAdmin.do');
        return true;
    }
    else return false;

}