// form_mini.js - verze 0.1
//
// (c) Petr Kabrna 2007
// 
// overeni vstupnich poli formularu a volani kodovani

var kontrolaSCh = function (string) {
    // kontrola specialnich znaku
    // vraci true, kdyz string obsahuje nepovolene znaky
    var result;
    
    if (string) {
        result = /[_|<|>|;|\*|\^|\$|\+|\?]/.test(string);
    } else {
        result = true;
    }
    return result;
};

var kontrolaEmail = function (string) {
    // kontrola e-mailu
    // prevzato z http://www.javascriptkit.com/script/script2/acheck.shtml
    // vraci true, jestlize string jako e-mail zda byt v poradku
    
    var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
    
    if (filter.test(string)) {
        return true;
    } else {
        return false;
    }
};

var overitLoginForm = function () {
    // kontrola login formulare
    var nameProblem = false;
    var pwProblem = false; 
    
    var loginNameElm = document.getElementById("loginName");
    var loginPwElm = document.getElementById("loginPw");
    var loginPwMd5Elm = document.getElementById("pwmd5");
    
    if ((loginNameElm.value.length < 3) || (kontrolaSCh(loginNameElm.value))) {
        nameProblem = true;
    }

    if ((loginPwElm.value.length < 3) || (kontrolaSCh(loginPwElm.value))) {
        pwProblem = true;
    }
    
    if (nameProblem || pwProblem) {
        // neco neproslo...
        if (nameProblem) {
            loginNameElm.style.borderColor = "red";
        }
        if (pwProblem) {
            loginPwElm.style.borderColor = "red";
        }
        return false;
    } else {
        /* kodovani */
        var pwmd5 = hex_md5(loginPwElm.value);
        loginPwMd5Elm.value = pwmd5;
        /* loginPwElm.value = "xxxxxxxxxxxxxx"; ******************************* */
        
        document.loginForm.submit();
        return true;
    }
};

var overSearchForm = function () {
    // kontrola search formulare
    var searchStringElm = document.getElementById("searchString");
    var problem = false;
    
    if ((searchStringElm.value.length < 3) || (kontrolaSCh(searchStringElm.value))) {
        searchStringElm.style.borderColor = "red";
        return false;
    } else {
        document.searchForm.submit();
        return true;
    }
};

var overPole = function (id, minLength, noneValueErrorId, smallValueErrorId, schValueErrorId) {
    // zkontroluje pole s id "id" , zda ma minimalni delku hodnoty dle "minLength" a 
    // udela visible span s id "noneValueErrorId" kdyz pole neni zadano, jinak ho udela invisible
    // udela visible span s id "smallValueErrorId" kdyz pole nema dle minLength dostatek znaku, jinak ho udela invisible
    // udela visible span s id "schValueErrorId" kdyz pole obsahuje nedovolene znaky, jinak ho udela invisible
    // vraci true kdyz probehnou vsechny kontroly v poradku, jinak false
    
    var valueElm = document.getElementById(id);
    var value = valueElm.value; 
    var noneValueErrorElm = document.getElementById(noneValueErrorId);
    var smallValueErrorElm = document.getElementById(smallValueErrorId);
    var schValueErrorElm = document.getElementById(schValueErrorId);
    var result = true;
    
    if (value.length < 1) {
        noneValueErrorElm.style.display = "";
        smallValueErrorElm.style.display = "none";
        schValueErrorElm.style.display = "none";
        result = false;
    } else if (value.length < minLength) {
        noneValueErrorElm.style.display = "none";
        smallValueErrorElm.style.display = "";
        schValueErrorElm.style.display = "none";
        result = false;
    } else if (kontrolaSCh(value)) {
        noneValueErrorElm.style.display = "none";
        smallValueErrorElm.style.display = "none";
        schValueErrorElm.style.display = "";
        result = false;
    } else {
        noneValueErrorElm.style.display = "none";
        schValueErrorElm.style.display = "none";
        smallValueErrorElm.style.display = "none";        
    }
    
    return result;
};

var overitNopassword = function () {
    // overeni validity zadanych udaju do formulare pro zaslani zapomenuteho hesla
    
    var result = true;
    
    /* -- kontrola loginu -- */
    var loginResult = overPole("loginNP", 4, "chybalogin", "chybaloginsmall", "chybaloginsch");
    if ((result == true) && (loginResult == false)) {
        result = false;
    }

    /* -- kontrola prijmeni -- */
    var prijmeniResult = overPole("prijmeniNP", 3, "chybaprijmeni", "chybaprijmenismall", "chybaprijmenisch");
    if ((result == true) && (prijmeniResult == false)) {
        result = false;
    }

    return result;
};

var overitZadaniVypoctuCz = function () {
    // overi spravnost zadani formulare pro vypocet ceny (vnitro)
    
    var result = true;
    
    /* -- kontrola PSC od -- */
    var pscOdResult = overPole("pscOd", 5, "chybaPscOd", "chybaPscOdNen", "chybaPscOdSch");
    if ((result == true) && (pscOdResult == false)) {
        result = false;
    }

    /* -- kontrola PSC do -- */
    var pscDoResult = overPole("pscDo", 5, "chybaPscDo", "chybaPscDoNen", "chybaPscDoSch");
    if ((result == true) && (pscDoResult == false)) {
        result = false;
    }
    
    /* -- kontrola volby velikosti -- */
    var selectElm1 = document.getElementById("velikost");
    var noneValueErrorElm1 = document.getElementById("chybaVelikost");
    if (selectElm1.value.length < 1) {
        result = false;
        noneValueErrorElm1.style.display = "";
    } else {
        noneValueErrorElm1.style.display = "none";
    }

    /* -- kontrola volby hmotnosti -- */
    var selectElm2 = document.getElementById("hmotnost");
    var noneValueErrorElm2 = document.getElementById("chybaHmotnost");
    if (selectElm2.value.length < 1) {
        result = false;
        noneValueErrorElm2.style.display = "";
    } else {
        noneValueErrorElm2.style.display = "none";
    }
    
    return result;
};

var overitRegistraci = function () {
    // overeni validity zadanych udaju registracniho formulare
    
    var result = true;
    
    /* -- kontrola loginu -- */
    var loginResult = overPole("login", 4, "chybalogin", "chybaloginsmall", "chybaloginsch");
    if ((result == true) && (loginResult == false)) {
        result = false;
    }
    
    /* -- kontrola hesla -- */
    var pwctrlResult = overPole("pwfirst", 4, "chybapw", "chybapwsmall", "chybapwsch");
    if ((result == true) && (pwctrlResult == false)) {
        result = false;
    }    
    
    /* -- kontrola opakovaneho hesla -- */
    var pwctrlResult = overPole("pwctrl", 4, "chybapwctrl", "chybapwctrlsmall", "chybapwctrlsch");
    if ((result == true) && (pwctrlResult == false)) {
        result = false;
    }
    
    /* -- porovnani hesel -- */
    var pwElm = document.getElementById("pwfirst");
    var pwctrlElm = document.getElementById("pwctrl");
    var chybapwctrlbadElm = document.getElementById("chybapwctrlbad");
    
    if (pwctrlElm.value != pwElm.value) {
        chybapwctrlbadElm.style.display = "";
        result = false;
    } else {
        chybapwctrlbadElm.style.display = "none";
    }
    
    /* -- kontrola jmena -- */
    var jmenoResult = overPole("jmeno", 3, "chybajmeno", "chybajmenosmall", "chybajmenosch");
    if ((result == true) && (jmenoResult == false)) {
        result = false;
    }
    
    /* -- kontrola prijmeni -- */
    var prijmeniResult = overPole("prijmeni", 3, "chybaprijmeni", "chybaprijmenismall", "chybaprijmenisch");
    if ((result == true) && (prijmeniResult == false)) {
        result = false;
    }
    
    /* -- kontrola emailu -- */
    var emailElm = document.getElementById("email");
    var chybaemailformatElm = document.getElementById("chybaemailformat"); 
    
    if (!kontrolaEmail(emailElm.value)) {
        chybaemailformatElm.style.display = "";
        result = false;
    } else {
        chybaemailformatElm.style.display = "none";        
    }
    
    return result;
};

var overitBigLogin = function () {
    // overeni validity zadanych udaju registracniho formulare
    
    var result = true;
    
    /* -- jmeno -- */
    var nameInputElm = document.getElementById("bigLogin");
    var chybaSmallNameInputElm = document.getElementById("chybaBiglogin");
    var chybaSchNameInputElm = document.getElementById("chybaloginsch");
    
    if (nameInputElm.value.length < 4) {
        chybaSmallNameInputElm.style.display = "";
        result = false;
    } else {
        chybaSmallNameInputElm.style.display = "none";
        if (kontrolaSCh(nameInputElm.value)) {
            chybaSchNameInputElm.style.display = "";
            result = false;
        } else {
            chybaSchNameInputElm.style.display = "none";
        }
    }
    
    /* -- heslo -- */
    var pwInputElm = document.getElementById("bigPw");
    var chybaSmallPwInputElm = document.getElementById("chybaBigpw");
    var chybaSchPwInputElm = document.getElementById("chybaBigpwsch");
    
    if (pwInputElm.value.length < 4) {
        chybaSmallPwInputElm.style.display = "";
        result = false;
    } else {
        chybaSmallPwInputElm.style.display = "none";
        if (kontrolaSCh(pwInputElm.value)) {
            chybaSchPwInputElm.style.display = "";
            result = false;
        } else {
            chybaSchPwInputElm.style.display = "none";
        }
    }
    
    return result;
};

var overitUpravuProfilu = function () {
    // overeni validity zadanych udaju registracniho formulare
    
    var result = true;
    
    /* -- kontrola hesla -- */
    var pwctrlResult = overPole("pwfirst", 4, "chybapw", "chybapwsmall", "chybapwsch");
    if ((result == true) && (pwctrlResult == false)) {
        result = false;
    }    
    
    /* -- kontrola opakovaneho hesla -- */
    var pwctrlResult = overPole("pwctrl", 4, "chybapwctrl", "chybapwctrlsmall", "chybapwctrlsch");
    if ((result == true) && (pwctrlResult == false)) {
        result = false;
    }
    
    /* -- porovnani hesel -- */
    var pwElm = document.getElementById("pwfirst");
    var pwctrlElm = document.getElementById("pwctrl");
    var chybapwctrlbadElm = document.getElementById("chybapwctrlbad");
    
    if (pwctrlElm.value != pwElm.value) {
        chybapwctrlbadElm.style.display = "";
        result = false;
    } else {
        chybapwctrlbadElm.style.display = "none";
    }
    
    /* -- kontrola jmena -- */
    var jmenoResult = overPole("jmeno", 3, "chybajmeno", "chybajmenosmall", "chybajmenosch");
    if ((result == true) && (jmenoResult == false)) {
        result = false;
    }
    
    /* -- kontrola prijmeni -- */
    var prijmeniResult = overPole("prijmeni", 3, "chybaprijmeni", "chybaprijmenismall", "chybaprijmenisch");
    if ((result == true) && (prijmeniResult == false)) {
        result = false;
    }
    
    /* -- kontrola emailu -- */
    var emailElm = document.getElementById("email");
    var chybaemailformatElm = document.getElementById("chybaemailformat"); 
    
    if (!kontrolaEmail(emailElm.value)) {
        chybaemailformatElm.style.display = "";
        result = false;
    } else {
        chybaemailformatElm.style.display = "none";        
    }
    
    return result;
};

var overitSchUZadanych = function (idInputElm, idSchErrorElm) {
    // prijima id zkoumaneho inputu a id error elementu pro odkryti v pripade positivniho nalezu
    // vraci true jestlize byly nalezeny chybne znaky
    
    var inputElm = document.getElementById(idInputElm);
    var errorElm = document.getElementById(idSchErrorElm);
    var result = false;
        
    if ((inputElm.value.length > 0) && (kontrolaSCh(inputElm.value))) {
        errorElm.style.display = "";
        result = true;
    } else {
        errorElm.style.display = "none";
    }
    
    return result;
}

var overitUpravuDetailu = function () {
    // overeni formulare pro upravdu detailnich informaci o uzivateli
    
    var result = true;
    
    /* firma */
    if(overitSchUZadanych("firma","firmasch")) {
        result = false;
    }

    /* ico */
    if(overitSchUZadanych("ico","icosch")) {
        result = false;
    }

    /* dic */
    if(overitSchUZadanych("dic","dicsch")) {
        result = false;
    }

    /* ulice */
    if(overitSchUZadanych("ulice","ulicesch")) {
        result = false;
    }

    /* PSČ */
    if(overitSchUZadanych("psc","pscsch")) {
        result = false;
    }
    
    /* kontaktni_osoba */
    if(overitSchUZadanych("kontaktni_osoba","kontaktni_osobasch")) {
        result = false;
    }

    /* telefon */
    if(overitSchUZadanych("telefon","telefonsch")) {
        result = false;
    }
    
    /* telefon_2 */
    if(overitSchUZadanych("telefon_2","telefon_2sch")) {
        result = false;
    }
        
    return result;
}

var overitPlaceForm = function () {
    // overeni formulare oblibeneho mista
    
    var result = true;
    
    /* firma */
    if(overitSchUZadanych("firma","chybafirmasch")) {
        result = false;
    }
    
    /* ulice */
    if(overitSchUZadanych("ulice","chybaulicesch")) {
        result = false;
    }

    /* cp */
    if(overitSchUZadanych("cp","chybacpsch")) {
        result = false;
    }

    /* obec */
    if(overitSchUZadanych("obec","chybaobecsch")) {
        result = false;
    }

    /* okres */
    if(overitSchUZadanych("okres","chybaokressch")) {
        result = false;
    }

    /* psc */
    if(overitSchUZadanych("psc","chybapscsch")) {
        result = false;
    }

    /* prac_doba_od */
    if(overitSchUZadanych("prac_doba_od","chybaprac_doba_odsch")) {
        result = false;
    }

    /* prac_doba_do */
    if(overitSchUZadanych("prac_doba_do","chybaprac_doba_dosch")) {
        result = false;
    }
    
    /* kontakt */
    if(overitSchUZadanych("kontakt","chybakontaktsch")) {
        result = false;
    }

    return result;
}
