
    /**
     *   trim v javascriptu
     */
    function trim(str) {
        return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
    }

    /**
     *   Umoznuje napsat do inputu pouze ciselnou hodnotu
     */
    function form_write_digit(event) {
        var e = event ? event : window.event;
        var code = e.keyCode ? e.keyCode : e.charCode; // IE x NS
        if(!e){
            return true;
        }
        // neni stisknuta klavesa odpovidaji cislu nebo delete, sipkam, carce...  (del IE=44, del Mozz=46)
        if(!((code>=48 && code<=57) || code==37 || code==44 || code==39 || code==8 || code==9 || code==13 || code==46)) {
            e.returnValue=false;
            return false;
        }
        return true;
    }

    /**
     *   Kontrola, jestli se jedna o cislo nebo ne
     */
    function form_control_number(form, field) {
        var testre = /^[0-9]*$/;
        if(field.value.match(testre))
            return true;
        else
            return false;
    }

    /**
     *   Kontrola, jestli se jedna o desetinne cislo nebo ne
     */
    function form_control_decimal(form, field) {
        var testre = /^[0-9 ]*[\.,]{0,1}[0-9 ]*$/;
        if(field.value.match(testre))
            return true;
        else
            return false;
    }

    /**
     *   Kontrola, jestli se jedna o datum
     */
    function form_control_date(form, field) {
        if(field.value)
        {
            var testre = /^[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{4}$/;
            if(!field.value.match(testre)) {
                    return false;
            }
        }
        return true;
    }


    /**
     *   Kontrola, jestli se jedna o datum
     */
    function form_control_date_time(form, field) {
        if(field.value)
        {
            var testre = /^[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{4}( [0-9]{1,2}:[0-9]{1,2})?$/;
            if(!field.value.match(testre)) {
                return false;
            }
        }
        return true;
    }

    function form_control_fill(form, field)
    {
        if(trim(field.value) != '')
            return true;
        else
            return false;
    }

    function form_control_fill_radio(form, field)
    {
        sel = false;
        for(i=0;i<field.length;i++)
        {
            if(field[i].checked) {
                sel = true;
            }
        }
        return sel;
    }

    function form_control_fill_checkbox(form, field)
    {
        if(!field.checked) {
            return false;
        }
        return true;
    }

    function form_control_fill_multicheckbox(form, field_id)
    {
        sel = false;
        field_id = field_id + '_';
        for(i=0; i < form.elements.length; i++) {
            if(form.elements[i].id.indexOf(field_id) == 0) {
                if(form.elements[i].checked) {
                    sel = true;
                }
            }
        }
        return sel;
    }

    function form_radio_disabled(form, field)
    {
        sel = true;
        for(i=0;i<field.length;i++)
        {
            if(field[i].disabled == false) {
                sel = false;
            }
        }
        return sel;
    }

    function form_multicheckbox_disabled(form, field_id)
    {
        sel = true;
        sel = false;
        field_id = field_id + '_';
        for(i=0; i < form.elements.length; i++) {
            if(form.elements[i].id.indexOf(field_id) == 0) {
                if(form.elements[i].disabled == false) {
                    sel = false;
                }
            }
        }
        return sel;
    }

    function form_control_checkbox_checked(form, field)
    {
        if(!field.checked) {
            return false;
        }
        return true;
    }

    function form_control_default(form, field)
    {
        return true;
    }


    /**
     *   Kontrola jmena - minimalne 2 znaky
     */
    function form_control_jmeno(form, field)
    {
        if(field.value)
        {
            if(field.value.length < 2)
                return false;
        }
        return true;
    }

    /**
     *   Kontrola prijmeni - minimalne 2 znaky
     */
    function form_control_prijmeni(form, field)
    {
        if(field.value)
        {
            if(field.value.length < 2)
                return false;
        }
        return true;
    }

    /**
     *   Kontrola ulice s cislem popisnym
     */
    function form_control_ulice(form, field)
    {
        if(field.value)
        {
            var testre = /^.* .*[0-9]+.*$/;
            if(!field.value.match(testre))
                return false;
        }
        return true;
    }

    /**
     *   Kontrola PSC
     */
    function form_control_psc(form, field)
    {
        if(field.value && (typeof(form.form_fakturacni_stat) == 'undefined' || form.form_fakturacni_stat.value == 52 || form.form_fakturacni_stat.value == 192))
        {
           var testre = /^ *[0-9]{3} ?[0-9]{2} *$/;
           if(!field.value.match(testre))
               return false;
        }
        return true;
    }

    /**
     *   Kontrola emailu
     */
    function form_control_email(form, field)
    {
        if(field.value)
        {
           var testre = /^[_a-zA-Z0-9\.\-]+@[_a-zA-Z0-9\.\-]+\.[a-zA-Z]{2,4}$/;
           if(!field.value.match(testre))
               return false;
        }
        return true;
    }

    /**
     *   Kontrola telefonniho cisla
     */
    function form_control_telefon(form, field)
    {
        if(field.value)
        {
            value = field.value.replace(/[ \/]/g, '');
            var testre = /^\+?[0-9]{9,}$/;
            if(!value.match(testre))
                return false;
        }
        return true;
    }

    /**
     *   Kontrola telefonniho cisla
     */
    function form_control_telefon_spaces(form, field)
    {
        if(field.value)
        {
            var testre = /^\+?[0-9\/\ ]+$/;
            if(!field.value.match(testre))
                return false;
        }
        return true;
    }

    /**
     *   Kontrola cisla faxu
     */
    function form_control_fax(form, field)
    {
        if(field.value)
        {
            value = field.value.replace(/[ \/]/g, '');
            var testre = /^\+?[0-9]{9,}$/;
            if(!value.match(testre))
                return false;
        }
        return true;
    }

    /**
     *   Kontrola telefonniho cisla na mobil
     */
    function form_control_mobil(form, field)
    {
        if(field.value)
        {
            value = field.value.replace(/[ \/]/g, '');
            var testre = /^\+?[0-9]{9,}$/;
            if(!value.match(testre))
                return false;
        }
        return true;
    }

    /**
     *   Kontrola aspon jednoho telefonniho udaje. kontrola se provadi u telefonu (ne u mobilu)
     */
    function form_control_telefon_or_mobil(form, field)
    {
        if(!field.value && !form.form_fakturacni_mobil.value)
            return false;
        return true;
    }

    /**
     *   Kontrola ico - povinnost v pripade zadani nazvu firmy
     */
    function form_control_ico_fill(form, field)
    {
        if(typeof(form.form_fakturacni_nazev) != 'undefined') {
            if(!field.value && form.form_fakturacni_nazev.value!='-' && form.form_fakturacni_nazev.value) {
                return false;
            }
        }
        return true;
    }

    /**
     *   Kontrola ico - kontroluje se spravnost formatu
     */
    function form_control_ico(form, field)
    {
        if(field.value && (typeof(form.form_fakturacni_stat) == 'undefined' || form.form_fakturacni_stat.value == 52))
        {
            var i;
            var s = 0;
            var text = field.value;

            testre = /^ *[0-9]{8} *$/;
            if (!text.match(testre))
            {
                return false;
            }
            text = text.replace(/^ *([0-9]{8}) *$/, "$1");
            if (text.length == 8)
            {
                for (i = 0; i < 7; i++)
                {
                    s += (parseInt(text.charAt(i), 10)*(8-i));
                }
                mod11 = s % 11;
                mod10 = (11 - mod11) % 10;
                i = parseInt(text.charAt(7), 10);
                if (i != mod10)
                {
                    return false;
                }
            }
        }
        return true;
    }

    /**
     *   Kontrola dic
     */
    function form_control_dic(form, field)
    {
        if(field.value) {
            if(typeof(form.form_fakturacni_stat) == 'undefined' || form.form_fakturacni_stat.value == 52) {
                var testre = /^CZ[0-9]+$/i;
                if(!field.value.match(testre))
                    return false;
            }
            else if(form.form_fakturacni_stat.value == 192) {
                var testre = /^SK[0-9]+$/i;
                if(!field.value.match(testre))
                    return false;
            }
        }
        return true;
    }

    /**
     *   Kontrola hesel
     *   29.4.2010 JB - upraveno na obecne s pridanim 2 na konec nazvu fieldu
     */
    function form_control_passwd(form, field)
    {
        if(field.value != form[field.name+'2'].value)
            return false;
        return true;
    }

    /**
     *   Kontrola hesel
     */
    function form_control_passwd_osoba(form, field)
    {
        if(field.value != form.form_osoba_passwd2.value)
            return false;
        return true;
    }
    function form_control_ucet(form, field)
    {
        return true;
    }

    function form_control_ckarty(form, field)
    {
        return true;
    }
    
    /**
     *   Kontrola na hledany vyraz - minimalne 3 znaky
     */
    function form_control_searchtext(form, field)
    {
        if(field.value)
        {
            if(field.value.length < 3)
                return false;
        }
        return true;
    }
    
    /**
     *   Kontrola na hledany vyraz - extended - musi byt vyplnene aspon jedno pole
     */
    function form_control_searchtextextfill(form, field)
    {
        if(form.form_search_searchtextand.value != '' || form.form_search_searchtextor.value != '' || form.form_search_searchtextexact.value != '' || form.form_search_searchtextexcept.value != '')
            return true;
        return false;
    }

    /**
     *    Kontrola rodneho cisla
     */
    function form_control_rc(form, field)
    {
        if (field.value) {
            var text = field.value;
            var testre = /^\s*(\d\d)(\d\d)(\d\d)[ /]*(\d\d\d)(\d?)\s*$/;
            var found = text.match(testre);
            if (!found) {
                return false;
            }

            var year = found[1];
            var month = found[2];
            var day = found[3];
            var ext = found[4];
            var c = found[5];

            // do roku 1954 pridelovana devitimistna RC nelze overit
            if (c === '') {
                return year < 54;
            }

            // kontrolní číslice
            var mod = (year+month+day+ext) % 11;
            if (mod === 10) mod = 0;
            if (mod != c) {
                return false;
            }

            // kontrola data
            year = Number(year) + ((year < 54) ? 2000 : 1900);
            month = Number(month);
            day = Number(day);

            // k mesici muze byt pripocteno 20, 50 nebo 70
            if (month > 70 && year > 2003) {
                month -= 70;
            } else if (month > 50) {
                month -= 50;
            } else if (month > 20 && year > 2003) {
                month -= 20;
            }

            var myDate = new Date();
            myDate.setFullYear( year, (month - 1), day );

            return ( (myDate.getMonth()+1) == month );
        }
        
        return true;
        
    }

    /**
    *   Kontrola dodaciho mista u osobniho odberu
    */
    function form_control_dodaci_misto(form, field)
    {
       if(field.value == 0) {
       
           var dopravne = form.dopravne_balne;
           var val = 0;
           for(i=0;i<dopravne.length;i++)
           {
               if(dopravne[i].checked) {
                   val = dopravne[i].value;
               }
           }

           var dopravne_osobne = form['dopravne_balne_dodaci_mista['+val+']'];
           if (dopravne_osobne) {
               return false;
           }

       }
       
       return true;
    }
           
    
