﻿// pozor na \vz a \vs ... kódování není 1250 ale iso-8859-2
function checkInt(s) {
    var Digits = "0123456789";
    var chr, i = 0;
    while (i < s.length) {
        chr = s.charAt(i++);
        if (Digits.indexOf(chr) == -1) return false;
    }
    return true;
}

function checkRC() {
    var rc = document.aspnetForm.RC.value, ok = checkInt(rc), RC_valid = eval(Pid + '"RC_valid"' + diP);
    RC_valid.innerHTML = '';
    if (!ok) { RC_valid.innerHTML = 'Rodné číslo smí obsahovat pouze číslice.'; return ok; };
    var yy = parseInt(rc.substr(0, 2), 10), mm = parseInt(rc.substr(2, 2), 10), dd = parseInt(rc.substr(4, 2), 10);
    yy = 1800 + (yy < 54 ? 100 : 0) + (rc.length == 10 ? 100 : 0) + yy;
    var sex = document.aspnetForm.sex.value = (mm >= 50 ? "F" : "M");
    document.aspnetForm.sex.value = sex;
    mm = mm - (mm > 50 ? 50 : 0);
    mm = mm - (mm > 20 ? 20 : 0);
    var rcmod = rc % 11;
    if (yy > 1953) {
        if (rcmod > 1) { ok = false; RC_valid.innerHTML = 'Rodné číslo má být dělitelné 11.' };
        if (rcmod == 1 && rc.substr(9) > 0) { ok = false; RC_valid.innerHTML = 'Rodné číslo má být dělitelné 11.' };
        // around 1000 exceptions ... checksum 10 codded as 0
    }
    if (!ok) return ok;
    var dob = new Date(yy, mm - 1, dd), today = new Date();
    if ((dob.getFullYear() != yy) || (dob.getMonth() != mm - 1) || (dob.getDate() != dd)) {
        ok = false; RC_valid.innerHTML = 'Nekorektní datum narození.';
    };
    if (!ok) return ok;
    document.aspnetForm.yearage.value = today.getFullYear() - yy;
    dob.setFullYear(today.getFullYear());
    document.aspnetForm.age.value = document.aspnetForm.yearage.value + (dob < today ? 1 : 0);
    return ok;
}
function checkFilled(fldName, fldText) {// alert(fldName);
    var ok = document.aspnetForm[fldName].value.length != 0,
fldName_valid = eval(Pid + '"' + fldName + '_valid"' + diP);
    fldName_valid.innerHTML = '';
    if (!ok) { fldName_valid.innerHTML = fldText + ' musí být vyplněno.'; return ok; }
    return ok;
}
function checkPSC() {
    var PSC = document.aspnetForm.psc.value, ok = checkInt(PSC),
psc_valid = eval(Pid + '"psc_valid"' + diP);
    psc_valid.innerHTML = '';
    if (!ok) { psc_valid.innerHTML = 'PSČ smí obsahovat pouze číslice.'; return ok; };
    ok = PSC.length == 5;
    if (!ok) { psc_valid.innerHTML = 'PSČ má být pětimístné.'; return ok; };
    return ok;
}
function checkAge() {
    var RC_valid = eval(Pid + '"RC_valid"' + diP);
    if (document.aspnetForm.age.value < 18) {
        RC_valid.innerHTML = 'Smlouvu smí uzavřít pouze plnoletá osoba.'; return false;
    }
    if ((document.aspnetForm.yearage.value > 65) || (document.aspnetForm.yearage.value < 18)) {
        RC_valid.innerHTML = 'Je nám líto, ale pojištění je možno sjednat jen pro osoby ve věku od 18 do 65 let.';
        return false;
    }
    return true;
}
function checkTel() {
    var tel = document.aspnetForm.tel.value,
tel_valid = eval(Pid + '"tel_valid"' + diP);
    tel_valid.innerHTML = '';
    if (tel.length == 0) return true;
    var ok = checkInt(tel);
    if (!ok) { tel_valid.innerHTML = 'Telefon smí obsahovat pouze číslice.'; return ok; };
    ok = tel.length == 9;
    if (!ok) { tel_valid.innerHTML = 'Telefon má být devítimístný.'; return ok; };
    return ok;
}
function checkEmail() {
    var email = document.aspnetForm.email.value,
email_valid = eval(Pid + '"email_valid"' + diP);
    email_valid.innerHTML = '';
    if (email.length == 0) return true;
    var ok = email.indexOf('@') != -1;
    if (!ok) { email_valid.innerHTML = 'Očekáván @ v e-mailové adrese.'; return ok; }
    return ok;
}
function checkSIPO() {
    var SIPO = document.aspnetForm.SIPO.value,
SIPO_valid = eval(Pid + '"SIPO_valid"' + diP),
SIPOspan = eval(Pid + '"SIPOspan"' + diP)
    SIPO_valid.innerHTML = '';
    if (SIPOspan)
        if (SIPOspan.style)
        if (document.aspnetForm.radio.value.substr(2, 1) == "S")
        SIPOspan.style.visibility = "visible";
    else
        SIPOspan.style.visibility = "hidden";
    if (document.aspnetForm.radio.value.substr(2, 1) != "S") return true;
    var ok = checkFilled('SIPO', 'Spojovací číslo SIPO (při zvoleném způsobu placení)');
    if (!ok) return ok;
    ok = checkInt(SIPO);
    if (!ok) { SIPO_valid.innerHTML = 'Spojovací číslo SIPO smí obsahovat pouze číslice.'; return ok; }
    ok = (SIPO.length == 10)
    if (!ok) { SIPO_valid.innerHTML = 'Spojovací číslo SIPO má být desetimístné.'; return ok; }
    var chksum = 0, i, mult = "3731731731", zero = "0".charCodeAt(0);
    for (i = 0; i < SIPO.length; i++)
        chksum = (chksum + (mult.charCodeAt(i) - zero) * (SIPO.charCodeAt(i) - zero)) % 10;
    ok = (chksum == 0);
    if (!ok) { SIPO_valid.innerHTML = 'Nejedná se o spojovací číslo SIPO.'; return ok; }
    return true;
}
function chgPojistne(radio) {
    // alert('chgPojistne('+freq+')');
    // specialne pro dopravni nehody
    if (radio.substr(0, 1) == "M") document.aspnetForm.pojistne.value = "154 Kč měsíčně";
    if (radio.substr(0, 1) == "Q") document.aspnetForm.pojistne.value = "462 Kč čtvrtletně";
    if (radio.substr(0, 1) == "S") document.aspnetForm.pojistne.value = "924 Kč pololetně";
    if (radio.substr(0, 1) == "A") document.aspnetForm.pojistne.value = "po slevě 1 778 Kč ročně";
}
function chgRadio() {
    var freq, method, radio, oradio = document.aspnetForm.radio.value,
omethod = oradio.substr(2, 1), ok = true;
    // radios, at least one checked
    for (i = 0; !document.aspnetForm.freq[i].checked; i++); freq = document.aspnetForm.freq[i].value;
    for (i = 0; !document.aspnetForm.method[i].checked; i++); method = document.aspnetForm.method[i].value;
    radio = freq + '|' + method;
    document.aspnetForm.radio.value = radio;
    if (radio != oradio) chgPojistne(freq + '|' + method);
    ok = checkSIPO();
    return ok
}
function chkProhlaseni() {
    var Prohlaseni_valid = eval(Pid + '"Prohlaseni_valid"' + diP);
    ok = document.aspnetForm.prohlaseni.checked;
    if (ok) Prohlaseni_valid.style.visibility = "hidden";
}
function checkAll() {
    var ok = checkFilled('jmeno', 'Jméno');
    if (ok) ok = checkFilled('prijmeni', 'Příjmení');
    if (ok) ok = checkFilled('RC', 'Rodné číslo');
    if (ok) ok = checkAge();
    if (ok) ok = checkFilled('ulice', 'Ulice, číslo popisné');
    if (ok) ok = checkFilled('mesto', 'Obec (pota)');
    if (ok) ok = checkFilled('psc', 'PSČ');
    if (ok) ok = checkFilled('email', 'E-mail');
    if (ok) ok = chgRadio();
    if (ok) {
        ok = document.aspnetForm.prohlaseni.checked;
        if (!ok) { var Prohlaseni_valid = eval(Pid + '"Prohlaseni_valid"' + diP); Prohlaseni_valid.style.visibility = "visible"; }
    }
    if (ok) ok = checkRC();
    if (ok) ok = checkPSC();
    if (ok) ok = checkTel();
    if (ok) ok = checkEmail();
    return ok;
}
function sendCiphered() {
    if (checkAll()) {
        var CPZ = new RSAKey(); CPZ.CPZsetPublic();
        var msg = document.aspnetForm.jmeno.value +
'|' + document.aspnetForm.prijmeni.value +
'|' + document.aspnetForm.jmeno.value +
'|' + document.aspnetForm.RC.value +
'|' + document.aspnetForm.ulice.value +
'|' + document.aspnetForm.mesto.value +
'|' + document.aspnetForm.psc.value +
'|' + document.aspnetForm.tel.value +
'|' + document.aspnetForm.email.value + '|';
        if (document.aspnetForm.radio.value.substr(2, 1) == "S") msg += document.aspnetForm.SIPO.value;
        msg += '|' + document.aspnetForm.radio.value;
        var res = CPZ.encrypt(msg);
        if (res) {

            document.aspnetForm.ciphertext.value = linebrk(res, 64);

            $.ajax({
                type: "POST",
                cache: false,
                url: "/Handlers/Forms.ashx",
                data: { action: 1, ciphertext: document.aspnetForm.ciphertext.value, emialTo: document.aspnetForm.emailTo.value, subject: document.aspnetForm.subject.value, time: Date() },
                success: function(msg) {
                    if (msg == "1") {
                        alert("Email byl úspěšně odeslán.");
                        window.location.href("http://www.zdravi.cz");
                    }
                    else {
                        alert("Email se nepodařilo odeslat. Zkuste to prosím znovu.");
                    }
                },
                error: function(xhr, ajaxOptions, thrownError) {
                    alert("Email se nepodařilo odeslat. Zkuste to prosím znovu.");
                }
            });     
            
        } else {
            alert('Takto to dopadnout nemělo, kontaktujte nás prosím telefonicky či e-mailem.');
        }
    } else {
        var Odeslat = eval(Pid + '"Odeslat"' + diP);
        EmergeText(Odeslat, 'Pokuste se zprávu odeslat po&nbsp;odstranění výše uvedených <span class="valid">problémů</span>.', 180);
    }
}
