var minVyseUveru = 300000; //[Kc]
var maxVyseUveru = 8000000; //[Kc]
var RPSNposkytnutiAbs_A  = 0; //[Kč]
var RPSNposkytnutimin_A  = 0; //[Kč]
var RPSNposkytnutimax_A  = 0; //[Kč]
var RPSNposkytnutiPerc_A = 0; //[%]
var RPSNsprava_A         = 350; //[Kč]

var baseRate = new Array(1.81, 1.37, 1.44, 1.62, 1.71, 1.86, 1.97, 2.26, 2.55); //[%]

//1 - Koupe nemovitosti
//2 - Vystavba nemovitosti
//3 - Rekonstrukce nemovitosti
//4 - Refinancovani uveri ci pujcky
//5 - Vyporadani majetkovych pomeru
margin_1_5 = new Array(1.37, 1.51, 0.64, 0.56, 0.57, 1.42, 1.81, 1.72, 1.43); //[%]
var marze_0_1999999 = 2.31; //[%]
var marze_2000000_X = 2.11; //[%]
var ltv_90_100 = 1.0; //[%]

//6 - Neucelovy uver - na cokoli
margin_6 = new Array(6.28, 6.72, 6.75, 6.57, 6.58, 6.43, 6.32, 6.03, 5.74); //[%]

//7 - Konsolidace dluhu
//POZOR indexuje se az od treti pozice, prvni dve se neberou v uvahu, je vsak nutne je vyplnit
margin_7 = new Array(   0,    0, 6.37, 6.37, 6.23, 6.10, 6.11, 6.00, 5.51); //[%] 3.9.2010 na zaklade pozadavku businessu je polozka Konsolidace dluhu skryta, tj. toto pole se aktualne nepouziva


var prvneEditovano = new Array(true, true, true);
var ddlPobockaInit;
var numberSeparator = ' '; //pri zmene nutno zmenit i oddelovac v podmince if (txt.value.replace(/[' ']/g, '')
var zmenaVstupu = false;
var provedenVypocet = false;
var SELECTTEXT = "(vyberte pobočku)";
var SELECTVALUE = "select";

window.onload = function() { init(); }
function init() {
    var typ = 1;
    initddlDobaSplatnosti(typ);
    initddlDelkaFixace(typ);
}

document.getElementById('txtInvestice').onkeypress = onParameterChange;
document.getElementById('txtProstredky').onkeypress = onParameterChange;
document.getElementById('txtVyseHypoteky').onkeypress = onParameterChange;
function onParameterChange(e) {
    if( !(typeof(event) == 'undefined' || event == null ) ) {
	    if (event.keyCode > 0 && String.fromCharCode(event.keyCode).length > 0 && event.keyCode < 48)
		    return false;
        else if (event.keyCode > 0 && !(event.keyCode <= 57))
		    return false;
    }
}

function zmenenVstup() {
    zmenaVstupu = true;
    document.getElementById('spnVarovaniPrepocet').style.display = 'none';
}

function onUcelChange() {
    var ddlUcel = document.getElementById('ddlUcel');
    var typ = parseInt(ddlUcel.options[ddlUcel.selectedIndex].value, 10);
    var spnInvestice01 = document.getElementById('spnInvestice01');
    var spnInvestice02 = document.getElementById('spnInvestice02');
    var spnProstredky01 = document.getElementById('spnProstredky01');
    var spnProstredky02 = document.getElementById('spnProstredky02');
    var spnVyseHypotekytxt01 = document.getElementById('spnVyseHypotekytxt01');
    var spnVyseHypotekytxt02 = document.getElementById('spnVyseHypotekytxt02');
    var spnVyseHypotekylbl01 = document.getElementById('spnVyseHypotekylbl01');
    var spnVyseHypotekylbl02 = document.getElementById('spnVyseHypotekylbl02');
    var spnVarovaniUver = document.getElementById('spnVarovaniUver');
    
    zmenenVstup();
    
    document.getElementById('validtxtInvestice').style.display = 'none';
    document.getElementById('validtxtProstredky').style.display = 'none';
    document.getElementById('validtxtVyseHypoteky').style.display = 'none';
    
    var pouzeVyseHypoteky = (typ == 6 || typ == 7);
    spnInvestice01.style.display = spnInvestice02.style.display = spnProstredky01.style.display = spnProstredky02.style.display = spnVyseHypotekylbl01.style.display = spnVyseHypotekylbl02.style.display = (!pouzeVyseHypoteky ? 'block' : 'none');
    spnVyseHypotekytxt01.style.display = spnVyseHypotekytxt02.style.display = (pouzeVyseHypoteky ? 'block' : 'none');
    spnVarovaniUver.style.display = 'none';
    
    initddlDobaSplatnosti(typ);
    initddlDelkaFixace(typ);
    
    document.getElementById('txtUrokovaSazba').value = '';
    document.getElementById('txtMesicniSplatka').value = '';
    document.getElementById('txtRPSN').value = '';
    document.getElementById('txtPlatbyCelkem').value = '';
    clearTable();
}

function initddlDobaSplatnosti(typ) {
    var ddlDobaSplatnosti = document.getElementById('ddlDobaSplatnosti');
    if((typ == 6 || typ == 7) && ddlDobaSplatnosti.options.length > 16) {
        removeAllOptions(ddlDobaSplatnosti);
        for (var i = 5; i <= 20; i++) {
            addOptionElement(ddlDobaSplatnosti, i.toString());
        }
    } else if (typ != 6 && typ != 7 && ddlDobaSplatnosti.options.length < 25) {
        removeAllOptions(ddlDobaSplatnosti);
        for (var i = 5; i <= 30; i++) {
            addOptionElement(ddlDobaSplatnosti, i.toString());
        }
    }
    ddlDobaSplatnosti.selectedIndex = ddlDobaSplatnosti.options.length - 1;
}

function initddlDelkaFixace(typ) {
    var ddlDelkaFixace = document.getElementById('ddlDelkaFixace');
    if(typ == 7 && ddlDelkaFixace.options.length > 7) {
        removeAllOptions(ddlDelkaFixace);
        for (var i = 3; i <= 7; i++) {
            addOptionElement(ddlDelkaFixace, i.toString());
        }
        addOptionElement(ddlDelkaFixace, "10");
        addOptionElement(ddlDelkaFixace, "15");
        ddlDelkaFixace.selectedIndex = 2;
    } else if (typ != 7 && ddlDelkaFixace.options.length < 9) {
        removeAllOptions(ddlDelkaFixace);
        for (var i = 1; i <= 7; i++) {
            addOptionElement(ddlDelkaFixace, i.toString());
        }
        addOptionElement(ddlDelkaFixace, "10");
        addOptionElement(ddlDelkaFixace, "15");
        ddlDelkaFixace.selectedIndex = 4;
    }
}

function removeAllOptions(ddl) {
    while (ddl.options.length > 0)
        ddl.remove(0);
}

function addOptionElement(ddl, text) {
    var o = document.createElement('option');
    o.text = text;
    
    try {
        ddl.add(o, null);
    } catch(ex) {
        ddl.add(o);
    }
}

function clearTable() {
    for (var i = 0; i < 9; i++) {
        document.getElementById(i + "-5").innerHTML = "&#160;";
        document.getElementById(i + "-10").innerHTML = "&#160;";
        document.getElementById(i + "-15").innerHTML = "&#160;";
        document.getElementById(i + "-20").innerHTML = "&#160;";
        document.getElementById(i + "-25").innerHTML = "&#160;";
        document.getElementById(i + "-30").innerHTML = "&#160;";
    }
}

function onddlDobaSplatnostiChange() {
    zmenenVstup();
}

function onddlDelkaFixaceChange() {
    zmenenVstup();
}

function indexPrvneEditovano(txtName) {
    switch(txtName) {
    case 'txtInvestice':
        return 0;
    case 'txtProstredky':
        return 1;
    case 'txtVyseHypoteky':
        return 2;
    }
}

function validujPole(txtName) {
    var txt = document.getElementById(txtName);
    var val = parseMyInt(txt.value);
    var valid = document.getElementById('valid' + txtName);
        
    if (txt.value.replace(/[' ']/g, '') == val) {
        valid.style.display = 'none';
        return true;
    } else {
        valid.style.display = 'inline';
        return false;
    }
}

function getIntDobaSplatnosti() {
    var ddlDobaSplatnosti = document.getElementById('ddlDobaSplatnosti');
    return parseInt(ddlDobaSplatnosti.options[ddlDobaSplatnosti.selectedIndex].text, 10);
}

function getIntDelkaFixace() {
    var ddlDelkaFixace = document.getElementById('ddlDelkaFixace');
    return parseInt(ddlDelkaFixace.options[ddlDelkaFixace.selectedIndex].text, 10);
}

function getFltUrokovaSazba(valVyseUveru, typ, ltv, delkaFixaceSelectedIndex) {
    var fltUrokovaSazba;
    
    if (typ == 6) {
        fltUrokovaSazba = baseRate[delkaFixaceSelectedIndex] + margin_6[delkaFixaceSelectedIndex];
    } else if (typ == 7) {
        fltUrokovaSazba = baseRate[delkaFixaceSelectedIndex + 2] + margin_7[delkaFixaceSelectedIndex + 2]; // U teto varianty nejsou k dispozici prvni dve moznosti dekly fixace. Proto posun v indexovani.
    } else {
        fltUrokovaSazba = baseRate[delkaFixaceSelectedIndex] + margin_1_5[delkaFixaceSelectedIndex];
        if (valVyseUveru < 2000000)
            fltUrokovaSazba += marze_0_1999999;
        else
            fltUrokovaSazba += marze_2000000_X;
        
        if (ltv > 90)
            fltUrokovaSazba += ltv_90_100;
    }
    
    return fltUrokovaSazba;
}

function getFltMesicniSplatka(valVyseUveru, fltUrokovaSazba, intDobaSplatnosti) {
    var fltIpM = (fltUrokovaSazba / 100.0) / 12.0;
    var pomocnaMocnina = Math.pow(1.0 + fltIpM, 12 * intDobaSplatnosti);
    return (valVyseUveru * fltIpM * pomocnaMocnina) / (pomocnaMocnina - 1.0);
}

function vypocet(valVyseUveru, typ, ltv) {
    var intDobaSplatnosti = getIntDobaSplatnosti();
    var fltUrokovaSazba = getFltUrokovaSazba(valVyseUveru, typ, ltv, document.getElementById('ddlDelkaFixace').selectedIndex);
    var fltMesicniSplatka = getFltMesicniSplatka(valVyseUveru, fltUrokovaSazba, intDobaSplatnosti);
    var valA_splatek = intDobaSplatnosti * 12;
    var r = (fltUrokovaSazba / 100.0) / 12.0;
    var poskytnuti = poskytnutifce_A(valVyseUveru);
    var fltMesicniSplatka = (valVyseUveru + poskytnuti) * r / ( 1 - 1 / Math.pow( (1 + r), valA_splatek ) );
    var valIRR = iterace_A(fltMesicniSplatka, valA_splatek, valVyseUveru);
    var valRPSN = (Math.pow( 1.0 + valIRR, 12) - 1.0) * 100;
    var valPlatbyCelkem = valA_splatek * (fltMesicniSplatka + 350);
    
    document.getElementById('txtUrokovaSazba').value = fltUrokovaSazba.toFixed(2).replace(/[.]/g, ',');
    document.getElementById('txtMesicniSplatka').value = formatInt(Math.round(fltMesicniSplatka), numberSeparator);
    document.getElementById('txtRPSN').value = valRPSN.toFixed(2).replace(/[.]/g, ',');
    document.getElementById('txtPlatbyCelkem').value = formatInt(Math.round(valPlatbyCelkem), numberSeparator);
    
    if (typ == 7) {
        for (var i = 0; i < 2; i++) {
            document.getElementById(i + "-5").innerHTML = "-";
            document.getElementById(i + "-10").innerHTML = "-";
            document.getElementById(i + "-15").innerHTML = "-";
            document.getElementById(i + "-20").innerHTML = "-";
            document.getElementById(i + "-25").innerHTML = "-";
            document.getElementById(i + "-30").innerHTML = "-";
        }
        for (var i = 2; i < 9; i++) {
            fltUrokovaSazba = getFltUrokovaSazba(valVyseUveru, typ, ltv, i - 2); // U této varianty nejsou k dispozici první dvě možnosti dékly fixace. Proto posun v indexování.
            fltMesicniSplatka = getFltMesicniSplatka(valVyseUveru, fltUrokovaSazba, 5);
            document.getElementById(i + "-5").innerHTML = formatInt(Math.round(fltMesicniSplatka), numberSeparator) + " Kč";
            fltMesicniSplatka = getFltMesicniSplatka(valVyseUveru, fltUrokovaSazba, 10);
            document.getElementById(i + "-10").innerHTML = formatInt(Math.round(fltMesicniSplatka), numberSeparator) + " Kč";
            fltMesicniSplatka = getFltMesicniSplatka(valVyseUveru, fltUrokovaSazba, 15);
            document.getElementById(i + "-15").innerHTML = formatInt(Math.round(fltMesicniSplatka), numberSeparator) + " Kč";
            fltMesicniSplatka = getFltMesicniSplatka(valVyseUveru, fltUrokovaSazba, 20);
            document.getElementById(i + "-20").innerHTML = formatInt(Math.round(fltMesicniSplatka), numberSeparator) + " Kč";
            document.getElementById(i + "-25").innerHTML = "-";
            document.getElementById(i + "-30").innerHTML = "-";
        }
    } else {
        for (var i = 0; i < 9; i++) {
            fltUrokovaSazba = getFltUrokovaSazba(valVyseUveru, typ, ltv, i);
            fltMesicniSplatka = getFltMesicniSplatka(valVyseUveru, fltUrokovaSazba, 5);
            document.getElementById(i + "-5").innerHTML = formatInt(Math.round(fltMesicniSplatka), numberSeparator) + " Kč";
            fltMesicniSplatka = getFltMesicniSplatka(valVyseUveru, fltUrokovaSazba, 10);
            document.getElementById(i + "-10").innerHTML = formatInt(Math.round(fltMesicniSplatka), numberSeparator) + " Kč";
            fltMesicniSplatka = getFltMesicniSplatka(valVyseUveru, fltUrokovaSazba, 15);
            document.getElementById(i + "-15").innerHTML = formatInt(Math.round(fltMesicniSplatka), numberSeparator) + " Kč";
            fltMesicniSplatka = getFltMesicniSplatka(valVyseUveru, fltUrokovaSazba, 20);
            document.getElementById(i + "-20").innerHTML = formatInt(Math.round(fltMesicniSplatka), numberSeparator) + " Kč";
            if (typ != 6) {
                fltMesicniSplatka = getFltMesicniSplatka(valVyseUveru, fltUrokovaSazba, 25);
                document.getElementById(i + "-25").innerHTML = formatInt(Math.round(fltMesicniSplatka), numberSeparator) + " Kč";
                fltMesicniSplatka = getFltMesicniSplatka(valVyseUveru, fltUrokovaSazba, 30);
                document.getElementById(i + "-30").innerHTML = formatInt(Math.round(fltMesicniSplatka), numberSeparator) + " Kč";
            } else {
                document.getElementById(i + "-25").innerHTML = "-";
                document.getElementById(i + "-30").innerHTML = "-";
            }
        }
    }
    
    zmenaVstupu = false;
    provedenVypocet = true;
    document.getElementById('spnVarovaniPrepocet').style.display = 'none';
}

function validujUver(provedVypocet) {
    var ddlUcel = document.getElementById('ddlUcel');
    var typ = parseInt(ddlUcel.options[ddlUcel.selectedIndex].value, 10);
    if (typ != 6 && typ != 7) {
        if ( provedVypocet && (!validujPole('txtInvestice') | !validujPole('txtProstredky')) )
            return false;
        
        var txtInvestice = document.getElementById('txtInvestice');
        var txtProstredky = document.getElementById('txtProstredky');
        var lblVyseHypoteky = document.getElementById('lblVyseHypoteky');

        var valInvestice = parseMyInt(txtInvestice.value);
        var valProstredky = parseMyInt(txtProstredky.value);
        var valVyseUveru = valInvestice - valProstredky;
        if (valVyseUveru < 0)
            valVyseUveru = 0;

        var ltv = 100 * valVyseUveru / valInvestice;

        lblVyseHypoteky.innerHTML = (txtInvestice.value.replace(/[' ']/g, '') == valInvestice && txtProstredky.value.replace(/[' ']/g, '') == valProstredky ? formatInt(valVyseUveru, numberSeparator) + ' Kč' : '0 Kč' );

        if (valVyseUveru < minVyseUveru && !prvneEditovano[indexPrvneEditovano('txtInvestice')]) {
            document.getElementById('spnVarovaniUver').style.display = 'inline';
            document.getElementById('spnVarovaniUver').innerHTML = 'Hypoteční úvěr je poskytován v rozmezí<br />' + formatInt(minVyseUveru, numberSeparator) + ' Kč až ' + formatInt(maxVyseUveru, numberSeparator) + ' Kč.<br />Zadejte, prosím, výši investice do nemovitosti znovu.<br />';
            return false;
        } else if (valVyseUveru > maxVyseUveru && !prvneEditovano[indexPrvneEditovano('txtInvestice')]) {
            document.getElementById('spnVarovaniUver').style.display = 'inline';
            document.getElementById('spnVarovaniUver').innerHTML = 'Hypoteční úvěr je poskytován v rozmezí<br />' + formatInt(minVyseUveru, numberSeparator) + ' Kč až ' + formatInt(maxVyseUveru, numberSeparator) + ' Kč.<br />Zadejte, prosím, výši investice do nemovitosti nebo výši vlastních prostředků znovu.<br />';
            return false;
        } else {
            document.getElementById('spnVarovaniUver').style.display = 'none';
        }
        
        if (provedVypocet) {
            vypocet(valVyseUveru, typ, ltv);
            return true;
        }
        
    } else {
        if ( provedVypocet && !validujPole('txtVyseHypoteky') )
            return false;

        var txtVyseHypoteky = document.getElementById('txtVyseHypoteky');
        var valVyseUveru = parseMyInt(txtVyseHypoteky.value);

        if ( (valVyseUveru < minVyseUveru || valVyseUveru > maxVyseUveru )  &&  !prvneEditovano[indexPrvneEditovano('txtVyseHypoteky')] ) {
            document.getElementById('spnVarovaniUver').style.display = 'inline';
            document.getElementById('spnVarovaniUver').innerHTML = 'Hypoteční úvěr je poskytován v rozmezí<br />' + formatInt(minVyseUveru, numberSeparator) + ' Kč až ' + formatInt(maxVyseUveru, numberSeparator) + ' Kč.<br />Zadejte, prosím, požadovanou výši hypotéky znovu.<br />';
            return false;
        } else {
            document.getElementById('spnVarovaniUver').style.display = 'none';
        }
        
        if (provedVypocet) {
            vypocet(valVyseUveru, typ, 100);
            return true;
        }
    }
    
    return false;
}

function onKeyUp(txtName) {
    zmenenVstup();    
    validujPole(txtName);
    validujUver(false);
}

function onBlur(txtName) {
    var txt = document.getElementById(txtName);
    var val = parseMyInt(txt.value);
    txt.value = (!isNaN(val) ? formatInt(val, numberSeparator) : '');

    prvneEditovano[indexPrvneEditovano(txtName)] = false;
    
    onKeyUp(txtName);
}

function onSpocitat() {
    var uspesneVypocteno;
    
    for (var i = 0; i <= 2; i++)
        prvneEditovano[i] = false;
    
    uspesneVypocteno = validujUver(true);
    
    return uspesneVypocteno;
}

function onNovyVypocet() {
    var ddlDobaSplatnosti = document.getElementById('ddlDobaSplatnosti');

    zmenaVstupu = false;
    provedenVypocet = false;
    
    //document.getElementById('ddlUcel').selectedIndex = 0;
    onUcelChange();

    document.getElementById('txtInvestice').value = '0';
    document.getElementById('validtxtInvestice').style.display = 'none';
    document.getElementById('txtProstredky').value = '0';
    document.getElementById('validtxtProstredky').style.display = 'none';
    document.getElementById('txtVyseHypoteky').value = '0';
    document.getElementById('lblVyseHypoteky').innerHTML = '0 Kč';
    document.getElementById('validtxtVyseHypoteky').style.display = 'none';
    ddlDobaSplatnosti.selectedIndex = ddlDobaSplatnosti.options.length - 1;
    document.getElementById('ddlDelkaFixace').selectedIndex = 4;
    document.getElementById('txtUrokovaSazba').value = '';
    document.getElementById('txtMesicniSplatka').value = '';
    document.getElementById('txtRPSN').value = '';
    document.getElementById('txtPlatbyCelkem').value = '';
    document.getElementById('ddlUcel').focus();
    clearTable();
    
    for (var i = 0; i <= 2; i++)
        prvneEditovano[i] = true;
}

function onPokracovat() {
    var spnVarovaniPrepocet = document.getElementById('spnVarovaniPrepocet');
    
    spnVarovaniPrepocet.style.display = 'none';
    if (!provedenVypocet || zmenaVstupu) {
        if (onSpocitat()) {
            spnVarovaniPrepocet.style.display = 'inline';
            spnVarovaniPrepocet.innerHTML = 'Byl proveden automatický přepočet polí Úroková sazba (orientační) a Výše měsíční splátky (orientační) dle Vámi zadaných údajů. Pro další postup, prosím, klikněte znovu na tlačítko Pokračovat.<br />';
        }
        return;
    }
    
    var ddlUcel = document.getElementById('ddlUcel');
    var typ = parseInt(ddlUcel.options[ddlUcel.selectedIndex].value, 10);
    var ddlDobaSplatnosti = document.getElementById('ddlDobaSplatnosti');
    var ddlDelkaFixace = document.getElementById('ddlDelkaFixace');
    
    ajaxFunction(); // nacteni comboboxu ddlPobocka

    var s_html = "Účel úvěru: " + ddlUcel.options[ddlUcel.selectedIndex].text + "<br />";
    var s_text = "Účel úvěru: " + ddlUcel.options[ddlUcel.selectedIndex].text + "\n";
    if (typ != 6 && typ != 7) {
        s_html += "Výše investice do nemovitosti: " + document.getElementById('txtInvestice').value + " Kč<br />";
        s_text += "Výše investice do nemovitosti: " + document.getElementById('txtInvestice').value + " Kč\n";

        s_html += "Výše vlastních prostředků: " + document.getElementById('txtProstredky').value + " Kč<br />";
        s_text += "Výše vlastních prostředků: " + document.getElementById('txtProstredky').value + " Kč\n";

        s_html += "Požadovaná výše hypotéky: " + document.getElementById('lblVyseHypoteky').innerHTML + "<br />";
        s_text += "Požadovaná výše hypotéky: " + document.getElementById('lblVyseHypoteky').innerHTML + "\n";
    } else {
        s_html += "Požadovaná výše hypotéky: " + document.getElementById('txtVyseHypoteky').value + " Kč<br />";
        s_text += "Požadovaná výše hypotéky: " + document.getElementById('txtVyseHypoteky').value + " Kč\n";
    }
    s_html += "Doba splatnosti úvěru: " + ddlDobaSplatnosti.options[ddlDobaSplatnosti.selectedIndex].text + " let<br />";
    s_text += "Doba splatnosti úvěru: " + ddlDobaSplatnosti.options[ddlDobaSplatnosti.selectedIndex].text + " let\n";

    s_html += "Délka fixace úrokové sazby: " + ddlDelkaFixace.options[ddlDelkaFixace.selectedIndex].text + " let<br />";
    s_text += "Délka fixace úrokové sazby: " + ddlDelkaFixace.options[ddlDelkaFixace.selectedIndex].text + " let\n";

    s_html += "Úroková sazba (orientační): " + document.getElementById('txtUrokovaSazba').value + " % p.a.<br />";
    s_text += "Úroková sazba (orientační): " + document.getElementById('txtUrokovaSazba').value + " % p.a.\n";

    s_html += "Výše měsíční splátky (orientační): " + document.getElementById('txtMesicniSplatka').value + " Kč<br />";
    s_text += "Výše měsíční splátky (orientační): " + document.getElementById('txtMesicniSplatka').value + " Kč\n";
    
    s_html += "RPSN: " + document.getElementById('txtRPSN').value + " %<br />";
    s_text += "RPSN: " + document.getElementById('txtRPSN').value + " %\n";
    
    s_html += "RPSN: " + document.getElementById('txtPlatbyCelkem').value + " Kč";
    s_text += "RPSN: " + document.getElementById('txtPlatbyCelkem').value + " Kč";
    
    document.getElementById('spnKalkulacka').innerHTML = s_html;
    document.getElementById('tarVysledky').value = s_text;
    
    document.getElementById('form1').style.display = 'none';
    document.getElementById('table1').style.display = 'none';
    document.getElementById('form2').style.display = 'block';    
}

function formatInt(num, sprtr) {
    var val = parseInt(num, 10).toFixed(0);
    
    if      (val.length > 9) val = val.substring(0, val.length - 9) + sprtr + val.substring(val.length - 9, val.length - 6) + sprtr + val.substring(val.length - 6, val.length - 3) + sprtr + val.substring(val.length - 3);
    else if (val.length > 6) val = val.substring(0, val.length - 6) + sprtr + val.substring(val.length - 6, val.length - 3) + sprtr + val.substring(val.length - 3);
    else if (val.length > 3) val = val.substring(0, val.length - 3) + sprtr + val.substring(val.length - 3);
    
    return val;
}

function parseMyInt(val) {
    return parseInt(val.replace(/[^0-9]/g, ''), 10);
}

//---------------------------------------------------------------------------
function ajaxFunction() {
    var xmlHttp;
    
    try {
        // Firefox, Opera 8.0+, Safari
        xmlHttp = new XMLHttpRequest();
    } catch (e) {
        // Internet Explorer
        try {
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {
                alert("Your browser does not support AJAX!");
                return false;
            }
        }
    }
    
    xmlHttp.onreadystatechange = function() {
        if (xmlHttp.readyState == 4) {
            var ddlPobocka = document.getElementById('ddlPobocka');
            for (var i = ddlPobocka.options.length - 1; i >= 0; i--)
              ddlPobocka.remove(i);
            
            var xmlDoc = xmlHttp.responseXML.documentElement;
            var contacts = xmlDoc.getElementsByTagName('contact');
            
            var o = document.createElement('option');
            o.text = SELECTTEXT;
            o.value = SELECTVALUE;
            try {
              ddlPobocka.add(o, null);
            } catch(ex) {
              ddlPobocka.add(o);
            }
            
            for (var i = 0; i < contacts.length; i++) {
              var o = document.createElement('option');
              o.text = contacts[i].childNodes[0].childNodes[0].nodeValue;
              o.value = contacts[i].childNodes[1].childNodes[0].nodeValue;
              try {
                ddlPobocka.add(o, null);
              } catch(ex) {
                ddlPobocka.add(o);
              }
            }
            
            ddlPobockaInit = true;
            onPobockaChange();
            ddlPobockaInit = false;
        }
    }

    var url = "/views/pages/actionforms/kontakty_hypotecni_poradci.jsp";
    // predejiti cache
    url += "?sid=" + Math.random();
    
    xmlHttp.open("GET", url, true);
    xmlHttp.send(null);
}

//---------------------------------------------------------------------------
var prvneEditovanoValid = new Array(true, true);

function indexPrvneEditovanoValid(txtName) {
    switch(txtName) {
    case 'txtTelefon':
        return 0;
    case 'txtEmail':
        return 1;
    }
}

function jmenoOK() {    
    var valJmeno = document.getElementById('txtJmeno').value;
    
    if (valJmeno == null || valJmeno == '') {
        return false;
    }
    
    return true;
}

function kontaktyOK() {
    var valTel = document.getElementById('txtTelefon').value;
    var valEmail = document.getElementById('txtEmail').value;

    var noTel = (valTel == '' ? true : false);
    var noEmail = ((valEmail == '' || valEmail == '@') ? true : false);
    
    if (noTel && noEmail) {
        return false;
    }

    return true;
}

function pobockaOK() {
    var ddlPobocka = document.getElementById('ddlPobocka');
    var valPobocka = ddlPobocka.options[ddlPobocka.selectedIndex].value
    
    if (valPobocka == SELECTVALUE)
        return false;
    
    return true;
}

function mamValidovatKontakty(txtindex, blured) {
    var ret;
    
    if (blured) {
        switch(txtindex) {
        case 0:
            ret = !prvneEditovanoValid[0];
            prvneEditovanoValid[0] = false;
            break;
        case 1:
            ret = true;
            prvneEditovanoValid[0] = false;
            prvneEditovanoValid[1] = false;
            break;
        }
    } else {
        ret = !prvneEditovanoValid[txtindex];
    }
    
    return ret;
}

function onBlurOronKeyUpValid(txtName, blured) {
    if (txtName == 'txtJmeno') {
        document.getElementById('validtxtJmeno').style.display = (jmenoOK() ? 'none' : 'inline');
    } else if (txtName == 'txtTelefon' || txtName == 'txtEmail') {
        if (mamValidovatKontakty(indexPrvneEditovanoValid(txtName), blured)) {
            document.getElementById('validtxtTelefonNeboEmail').style.display = (kontaktyOK() ? 'none' : 'inline');
        }
    } else if (txtName == 'ddlPobocka') {
        document.getElementById('validddlPobocka').style.display = (pobockaOK() ? 'none' : 'inline');
    }
}

function onBlurValid(txtName) {
    onBlurOronKeyUpValid(txtName, true);
}

function onKeyUpValid(txtName) {
    onBlurOronKeyUpValid(txtName, false);
}

function validationOK() {
    var jmeno = jmenoOK();
    var kontakt = kontaktyOK();
    var pobocka = pobockaOK();
    
    prvneEditovanoValid[0] = prvneEditovanoValid[1] = false;
    
    if (!jmeno)
        document.getElementById('validtxtJmeno').style.display = 'inline';

    if (!kontakt)
        document.getElementById('validtxtTelefonNeboEmail').style.display = 'inline';
    
    if (!pobocka)
        document.getElementById('validddlPobocka').style.display = 'inline';

    return (jmeno && kontakt && pobocka);
}

function onPobockaChange() {
  var ddlPobocka = document.getElementById('ddlPobocka');
  document.getElementById('txtBranch').value = ddlPobocka.options[ddlPobocka.selectedIndex].text;
  document.getElementById('to').value = 'hypoteky.web@rb.cz;' + ddlPobocka.options[ddlPobocka.selectedIndex].value;
  
  if (!ddlPobockaInit)
    onBlurOronKeyUpValid('ddlPobocka', false);
}

function iterace_A(vyse_splatky, splatek, vyseUveru) {
    var dir = true;
    var ldir = true;
    var val = 0.1;
    var step = 0.1;
    var lr = krok_A(val, vyse_splatky, splatek, vyseUveru);
    dir = ldir = (r > 0);
    for (var idx = 0; idx < 2000; idx++) {
        val += step * (dir ? 1 : -1);
        var r = krok_A(val, vyse_splatky, splatek, vyseUveru);
        if (Math.abs(r) < 0.000001)
            return val;
        dir = (r > 0);
        if (dir != ldir)
            step /= 10;
        ldir = dir;
        lval = val;
    }
    return val;
}

function krok_A(valIRR, vyse_splatky, splatek, vyseUveru) {
    var sprava = RPSNsprava_A;
    
    var valNPV = 0;
    for (var idx = 1; idx <= splatek + 1; idx++) {
        valNPV += (idx == 1 ? - vyseUveru : vyse_splatky + sprava) / Math.pow(1.0 + valIRR, idx);
    }
    return valNPV;
}

function poskytnutifce_A(valVyseUveru) {
    var poskytnuti = RPSNposkytnutiAbs_A + valVyseUveru * RPSNposkytnutiPerc_A / 100.0;
    if (poskytnuti < RPSNposkytnutimin_A)
        poskytnuti = RPSNposkytnutimin_A;
    else if (poskytnuti > RPSNposkytnutimax_A)
        poskytnuti = RPSNposkytnutimax_A;
    
    return poskytnuti;
}

