PageSourceSearch

https://www.mikroregion-radbuza.cz/jsphp/check_form.js.php?v=v6.5.0a&lang=cs

js mikroregion-radbuza.cz collected 2026-10-08 11:12:58 UTC 38,809 bytes, 664 lines download raw bytes

1var form_storno = false;
2checkForm = {
3    invalidMsg: "Formulář není vyplněn správně.\nProsím opravte tato políčka:",
4    errors: [],
5
6    invalidClass: "invalid",
7    requiredClass: "required",
8    outsideInvalidClass: "outsideInvalid",
9    defaultAlert: true,
10
11    submitOnceClass: "submitOnce",
12    alreadySubmitedClass: "alreadySubmited",
13
14    fieldType: [],
15    defaultValue: [],
16
17    // inicializacia skriptu
18    init: function () {
19        checkForm.defaultAlert = alert.toString().includes("[native code]");
20
21        // ak mame k dispozicii kniznice evt a cls a browser je standards-compliant, mozeme zacat
22        if (evt && cls && document.getElementById) {
23            // prejdeme vsetky formulare a najdeme v nich vsetky fieldy, zavesime potrebne eventy
24            var forms = document.getElementsByTagName("form");
25            for (var i = 0; i < forms.length; i++) {
26                // Formulare s pristupnou validaci (JustValidate) si legacy checker nesmi prevzit.
27                // Nestaci ho odpojit v modulu - tento skript na stranku vklada i FAQ nebo
28                // teplomery, takze bez pojistky by na takove strance bezely oba validatory
29                // a uzivatel by dostal alert() i pristupnou hlasku.
30                if (forms[i].getAttribute("data-gcm-validate") !== null) {
31                    continue;
32                }
33
34                evt.add(forms[i], "submit", checkForm.checkForm);
35                evt.add(forms[i], "image", checkForm.checkForm);
36                evt.add(forms[i], "reset", checkForm.checkForm);
37
38                var fields = checkForm.getFields(forms[i]);
39                for (var j = 0; j < fields.length; j++) {
40                    evt.add(fields[j], "blur", checkForm.checkField);
41                    evt.add(fields[j], "focus", checkForm.checkField);
42                    evt.add(fields[j], "change", checkForm.checkField);
43                    if ((fields[j].tagName.toLowerCase() == "input") && ((fields[j].type == "text") || (fields[j].type == "email") || (fields[j].type == "tel") || (fields[j].type == "password"))) {
44                        evt.add(fields[j], "keypress", checkForm.checkEnter);
45                    }
46                }
47
48                checkForm.checkForm(forms[i]);
49            }
50            return true;
51        }
52        return false;
53    },
54
55    // vrati pole obsahujuce vsetky polia, ktore budeme kontrolovat
56    getFields: function (frm) {
57        if (frm && frm.getElementsByTagName) {
58            var fields = [];
59
60            var inputs = frm.getElementsByTagName("input");
61            for (var i = 0; i < inputs.length; i++) {
62                // Pravidla se ridi tridami (email, telefon, required), sber poli ale typem.
63                // Bez email/tel by pole s temito typy tise vypadla z validace - viz e-mail
64                // a telefon v editaci rezervace.
65                if (
66                    inputs[i].type == "text" ||
67                    inputs[i].type == "email" ||
68                    inputs[i].type == "tel" ||
69                    inputs[i].type == "hidden" ||
70                    inputs[i].type == "checkbox" ||
71                    inputs[i].type == "password" ||
72                    inputs[i].type == 'file'
73                ) {
74                    fields[fields.length] = inputs[i];
75                }
76            }
77
78            var textareas = frm.getElementsByTagName("textarea");
79            for (var i = 0; i < textareas.length; i++) {
80                fields[fields.length] = textareas[i];
81            }
82
83            var selects = frm.getElementsByTagName("select");
84            for (var i = 0; i < selects.length; i++) {
85                fields[fields.length] = selects[i];
86            }
87            return fields;
88        }
89        return false;
90    },
91
92    // preveri validitu vsetkych policok a povoli alebo nepovoli submit
93    checkForm: function (frm, bExternalCheck) {
94        if (form_storno == true)
95            return true;
96        if (!frm || !frm.tagName || frm.tagName.toLowerCase() != "form") {
97            e = evt.fix(frm);
98            frm = e.target;
99        } else {
100            var e = false;
101        }
102        checkForm.errors = [];
103        var fields = checkForm.getFields(frm);
104        var fieldsOK = true;
105        for (var i = 0; i < fields.length; i++) {
106            fieldsOK = ((checkForm.checkField(fields[i]) == "valid") && fieldsOK) ? true : false;
107        }
108
109        //pokud existuje jeste dalsi testovani formulare,zavolam (existuje object advancedCheckForm)
110        if (typeof (advancedCheckForm) == "object" && bExternalCheck != 2)
111            fieldsOK = ((advancedCheckForm.check(frm)) && fieldsOK) ? true : false;
112
113        if (fieldsOK) {
114            // kontrola formularov, ktore sa mozu odosielat iba raz
115            if (e && (e.type == "submit") && cls.has(frm, checkForm.submitOnceClass)) {
116                if (cls.has(frm, checkForm.alreadySubmitedClass)) {
117                    e.preventDefault;
118                    return false;
119                } else {
120                    cls.add(frm, checkForm.alreadySubmitedClass);
121                }
122            }
123
124            if (typeof (swfu_ta2) == "object" && swfu_ta2.myform) {
125                var stats = swfu_ta2.getStats();
126                if (stats.files_queued > 0) {
127                    swfu_ta2.startUpload();
128                    if (e.preventDefault)
129                        e.preventDefault();
130                    return false;
131                } else if (stats.in_progress == 1) {
132                    if (e.preventDefault)
133                        e.preventDefault();
134                    return false;
135                }
136            }
137
138            return true;
139        } else {
140            if (e && (e.type == "reset")) {
141                return;
142            }
143            if (bExternalCheck == true || bExternalCheck == 2 || (e && ((e.type == "submit") || (e.type == "image")))) {
144                const err = checkForm.errors.join(checkForm.defaultAlert ? "\n- " : ", ");
145
146                if (checkForm.defaultAlert) {
147                    alert(checkForm.invalidMsg + "\n- " + err);
148                } else {
149                    alert(checkForm.invalidMsg, err);
150                }
151
152                if (typeof _mtm !== 'undefined') {
153                    _mtm.push({
154                        'event': 'check_form',
155                        'eventLabel': err
156                    });
157                }
158
159                if (e.preventDefault) {
160                    e.preventDefault();
161                }
162            }
163        }
164
165        return false;
166    },
167
168    //-----proveri validitu formulare pro modul TA2, vstup je id formulare-----
169    checkFormTA2: function (id) {
170        if (form_storno == true)
171            return true;
172        frm = document.getElementById(id);
173        if (!frm || !frm.tagName || frm.tagName.toLowerCase() != "form") {
174            return false;
175        }
176        e = false;    //nastavuji zadny event (z duvodu ukladani editoru pres jeho disketu(je ve frame))
177        checkForm.errors = [];
178        var fields = checkForm.getFields(frm);
179        var fieldsOK = true;
180        for (var i = 0; i < fields.length; i++) {
181            fieldsOK = ((checkForm.checkField(fields[i]) == "valid") && fieldsOK) ? true : false;
182        }
183
184        //pokud existuje jeste dalsi testovani formulare,zavolam (existuje object advancedCheckForm)
185        if (typeof (advancedCheckForm) == "object")
186            fieldsOK = ((advancedCheckForm.check()) && fieldsOK) ? true : false;
187
188        if (fieldsOK) {
189            // kontrola formularov, ktore sa mozu odosielat iba raz
190            if (e && (e.type == "submit") && cls.has(frm, checkForm.submitOnceClass)) {
191                if (cls.has(frm, checkForm.alreadySubmitedClass)) {
192                    e.preventDefault;
193                    return false;
194                } else {
195                    cls.add(frm, checkForm.alreadySubmitedClass);
196                }
197            }
198            return true;
199        } else {
200            const err = checkForm.errors.join(checkForm.defaultAlert ? "\n- " : ", ");
201
202            if (checkForm.defaultAlert) {
203                alert(checkForm.invalidMsg + "\n- " + err);
204            } else {
205                alert(checkForm.invalidMsg, err);
206            }
207
208            if (typeof _mtm !== 'undefined') {
209                _mtm.push({
210                    'event': 'check_form',
211                    'eventLabel': err
212                });
213            }
214
215            if (e.preventDefault) {
216                e.preventDefault();
217            }
218        }
219
220        return false;
221    },
222
223    // preveri validitu policka a vrati "valid" alebo "invalid"
224    checkField: function (elm) {
225        if (!elm || !elm.tagName) {
226            var e = evt.fix(elm);
227            elm = e.target;
228        }
229        if (
230            elm &&
231            (
232                (elm.tagName.toLowerCase() == "input") ||
233                (elm.tagName.toLowerCase() == "select") ||
234                (elm.tagName.toLowerCase() == "textarea")
235            )
236        ) {
237            var fieldOK = true;
238            var elmClasses = cls.get(elm);
239            for (var i = 0; i < elmClasses.length; i++) {
240                if (checkForm.fieldType[elmClasses[i]]) {
241                    var rule = checkForm.fieldType[elmClasses[i]];
242                    if (fieldOK && typeof (rule) == "string") {
243
244                        // pravidlo je string
245                        if (elm.value != "") {
246                            fieldOK = (elm.value.search(new RegExp("^([" + rule + "]){1,}$")) < 0) ? false : true;
247                        }
248
249                    } else if (fieldOK && ((typeof (rule) == "function") || (typeof (rule) == "object")) && rule.source) {
250                        // Mozilla vracia RegExpu typ "function", zatial co ostatne browsery "object"
251
252                        // pravidlo je regExp
253                        if (elm.value != "") {
254                            fieldOK = (elm.value.search(rule) < 0) ? false : true;
255                        }
256
257                    } else if (fieldOK && (typeof (rule) == "function") && rule.prototype) {
258
259                        // pravidlo je funkcia
260                        fieldOK = rule(e, elm);
261
262                    }
263                }
264
265                /* default value
266                if (e && checkForm.defaultValue[elmClasses[i]]) {
267                    var val = checkForm.defaultValue[elmClasses[i]];
268                    if ((e.type == "focus") && (elm.value == "")) {
269                        elm.value = val;
270                    }
271                    if ((e.type == "blur") && (elm.value == val)) {
272                        elm.value = "";
273                    }
274                }
275                */
276            }
277
278            var outsideValidationOK = !cls.has(elm, checkForm.outsideInvalidClass);
279
280            if (fieldOK && outsideValidationOK) {
281                cls.remove(elm, "invalid");
282            } else {
283                cls.add(elm, "invalid");
284                checkForm.errors[checkForm.errors.length] = checkForm.getFieldErrorMsg(elm);
285                //(elm.checkFormErr) ? elm.checkFormErr : (elm.title) ? elm.title : (elm.name) ? elm.name : elm.toString();
286            }
287
288            return (fieldOK && outsideValidationOK) ? "valid" : "invalid";
289        }
290        return false;
291    },
292
293    // prida novy typ policka
294    addFieldType: function (cls, rule, defaultValue) {
295        if (cls && (rule || defaultValue)) {
296            if (rule) {
297                checkForm.fieldType[cls] = rule;
298            }
299            if (defaultValue) {
300                checkForm.defaultValue[cls] = defaultValue;
301            }
302            return true;
303        }
304        return false;
305    },
306
307    getFieldErrorMsg: function (elm) {
308        if (elm) {
309            if (elm.checkFormErrorMsg) {
310                return elm.checkFormErrorMsg;
311            }
312            if (elm.title) {
313                return elm.title;
314            }
315            if (elm.id) {
316                var labels = document.getElementsByTagName("label");
317                for (var i = 0; i < labels.length; i++) {
318                    if (labels[i].attributes["for"] && (labels[i].attributes["for"].value == elm.id)) {
319                        // Opera nezvlada atribut "for"
320                        var str = checkForm.getNodeText(labels[i]);
321                        return str;
322                    }
323                }
324                return elm.id;
325            }
326            if (elm.name) {
327                return elm.name;
328            }
329            return elm.toString();
330        }
331        return false;
332    },
333
334    getNodeText: function (node) {
335        var str = "";
336        if (node && node.hasChildNodes()) {
337            for (var i = 0; i < node.childNodes.length; i++) {
338                // TODO: skladanie toho stringu treba urobit nejak systemovejsie a prehladnejsie
339                str += (node.childNodes[i].nodeType == 3) ? node.childNodes[i].nodeValue : checkForm.getNodeText(node.childNodes[i]);
340                if ((node.childNodes[i].nodeType == 1) && (node.childNodes[i].tagName.toLowerCase() == "img") && (node.childNodes[i].attributes["alt"])) {
341                    str += node.childNodes[i].attributes["alt"].value;
342                }
343            }
344        }
345        return str;
346    }
347}
348
349/* basic field types */
350
351// required field
352checkForm.addFieldType(
353    "required",
354    function (evt, elm) {
355        if (elm) {
356            if (elm.tagName.toLowerCase() == "select") {
357                return (elm.value) ? true : false;
358            } else {
359                if (elm.type == "checkbox")
360                    return (elm.checked) ? true : false;
361                else
362                    return (elm.value.search(/\S/) < 0) ? false : true;
363            }
364        }
365        return false;
366    }
367);
368// numbers only
369checkForm.addFieldType(
370    "int",
371    new RegExp("^\\-?[0-9]*$")
372);
373
374// numbers only
375checkForm.addFieldType(
376    "int_kladny",
377    new RegExp("^[0-9]*$")
378);
379// numbers only
380checkForm.addFieldType(
381    "int_kladny_bez_nuly",
382    new RegExp("^[1-9]+[0-9]*$")
383);
384
385// numbers only
386checkForm.addFieldType(
387    "float",
388    new RegExp("^\\-?[0-9]*(\\.|,)?[0-9]*$")
389);
390
391// numbers only
392checkForm.addFieldType(
393    "float_kladny",
394    new RegExp("^\\+?[0-9]*(\\.|,)?[0-9]*$")
395);
396
397// numbers bettwen 0-1
398checkForm.addFieldType(
399    "float_nulajedna",
400    function (evt, elm) {
401        if (elm) {
402            var re = new RegExp(',');
403            var hodnota = parseFloat(elm.value.replace(re, '.'));
404            return (hodnota < 0 || hodnota > 1) ? false : true;
405        }
406        return false;
407    }
408);
409
410// numbers only
411checkForm.addFieldType(
412    "psc",
413    new RegExp("^[0-9]{3}\\ ?[0-9]{2}$")
414);
415
416// IDs - numbers divided by space
417checkForm.addFieldType(
418    "ids",
419    new RegExp("^[0-9 ]{1,}$")
420);
421
422// safe characters (alphanumeric, numbers and underscore)
423checkForm.addFieldType(
424    "safeChars",
425    new RegExp("^[a-zA-Z0-9_]{1,}$")
426);
427
428// e-mail
429checkForm.addFieldType(
430    "email",
431    new RegExp("^([\\w\\!\\#\\$\\%\\&\\*\\+\\-\\/\\=\\?\\^\\{\\}\\|\\~]+)((\\.){1}[\\w\\!\\#\\$\\%\\&\\*\\+\\-\\/\\=\\?\\^\\{\\}\\|\\~]+)*@[\\w\\!\\#\\$\\%\\&\\*\\+\\-\\/\\=\\?\\^\\{\\}\\|\\~]+((\\.){1}[\\w\\!\\#\\$\\%\\&\\*\\+\\-\\/\\=\\?\\^\\{\\}\\|\\~]+)*\\.(abogado|ac|academy|accountant|accountants|actor|ad|ads|adult|ae|aero|af|africa|ag|agency|ai|airforce|al|alsace|am|amsterdam|an|analytics|ao|apartments|app|aq|ar|arab|archi|army|art|as|asia|associates|at|attorney|au|auction|audio|author|auto|autos|aw|ax|az|ba|baby|band|bank|bar|barcelona|bargains|baseball|basketball|bayern|bb|bcn|bd|be|beauty|beer|berlin|best|bet|bf|bg|bh|bi|bible|bid|bike|bingo|bio|biz|bj|bl|black|blackfriday|blog|blue|bm|bn|bo|boats|boo|book|boston|bot|boutique|box|br|broadway|broker|brussels|bs|bt|budapest|build|builders|business|buy|buzz|bv|bw|by|bz|bzh|ca|cab|cafe|call|cam|camera|camp|cancerresearch|capetown|capital|car|cards|care|career|careers|cars|casa|cash|casino|cat|catering|catholic|cc|cd|center|ceo|cf|cg|ch|channel|charity|chat|cheap|christmas|church|ci|city|ck|cl|claims|cleaning|click|clinic|clothing|cloud|club|cm|cn|co|co.com|coach|codes|coffee|college|cologne|com|community|company|computer|comsec|condos|construction|consulting|contact|contractors|cooking|cool|coop|corp|country|coupon|coupons|courses|cpa|cr|credit|creditcard|creditunion|cricket|cruise|cruises|cu|cv|cx|cy|cymru|cz|dad|dance|data|date|dating|day|dds|de|deal|deals|degree|delivery|democrat|dental|dentist|desi|design|dev|diamonds|diet|digital|direct|directory|discount|diy|dj|dk|dm|do|docs|doctor|dog|domains|dot|download|dubai|dvr|dz|earth|eat|ec|eco|ecom|edu|education|ee|eg|eh|email|energy|engineer|engineering|enterprises|equipment|er|es|esq|estate|et|eu|eus|events|exchange|expert|exposed|express|fail|faith|family|fan|fans|farm|fashion|feedback|fi|film|final|finance|financial|finish|fish|fishing|fit|fitness|fj|fk|flights|florist|flowers|fly|fm|fo|foo|food|football|forsale|forum|foundation|fr|frl|fun|fund|furniture|futbol|fyi|ga|gal|gallery|game|games|garden|gay|gb|gd|ge|ged|gent|gf|gg|gh|gi|gift|gifts|gives|giving|gl|glass|global|gm|gmbh|gn|gold|golf|got|gov|gp|gq|gr|graphics|gratis|green|gripe|grocery|group|gs|gt|gu|guide|guitars|guru|gw|gy|hair|halal|hamburg|haus|health|healthcare|help|helsinki|here|hiphop|hiv|hk|hm|hn|hockey|holdings|holiday|home|homes|horse|hospital|host|hosting|hot|hoteis|hotel|hotels|house|how|hr|ht|hu|id|idn|ie|il|im|immo|immobilien|in|inc|industries|info|info.pl|ing|ink|institute|insurance|insure|int|international|investments|io|iq|ir|irish|is|islam|ismaili|ist|istanbul|it|je|jetzt|jewelry|jm|jo|jobs|joburg|jot|joy|jp|juegos|kaufen|ke|kg|kh|ki|kid|kids|kim|kitchen|kiwi|km|kn|koeln|kosher|kp|kr|kw|ky|kyoto|kz|la|land|lat|latino|law|lawyer|lb|lc|lease|legal|lgbt|li|life|lifeinsurance|lifestyle|lighting|like|limited|limo|link|live|living|lk|llc|llp|loan|loans|lol|london|love|lr|ls|lt|ltd|ltda|lu|luxe|luxury|lv|ly|ma|madrid|mail|maison|makeup|management|map|market|marketing|mba|mc|md|me|med|media|medical|meet|melbourne|meme|memorial|men|menu|mf|mg|mh|miami|mil|mk|ml|mls|mm|mn|mo|mobi|mobile|moda|moe|mom|money|mortgage|moscow|moto|motorcycles|mov|movie|mp|mq|mr|ms|mt|mu|museum|music|mutualfunds|mv|mw|mx|my|mz|na|nagoya|name|navy|nc|ne|net|network|new|news|nf|ng|ngo|ni|ninja|nl|no|now|np|nr|nrw|nu|nyc|nz|okinawa|om|one|ong|onl|online|ooo|org|organic|osaka|ott|pa|paris|pars|partners|parts|party|pay|pe|pet|pets|pf|pg|ph|phd|phone|photo|photography|photos|physio|pics|pictures|pid|ping|pink|pizza|pk|pl|place|play|plumbing|plus|pm|pn|poker|politie|porn|pr|press|pro|productions|prof|promo|properties|property|protection|ps|pt|pub|pw|py|qa|qpon|quebec|racing|radio|re|read|realestate|realtor|realty|recipes|red|rehab|reise|reisen|rent|rentals|repair|report|republican|rest|restaurant|retirement|review|reviews|rich|rip|ro|rocks|rodeo|roma|room|rs|rsvp|ru|rugby|ruhr|run|rw|ryukyu|sa|saarland|safe|safety|sale|salon|sari|sarl|save|sb|sc|scholarships|school|schule|science|scot|sd|se|search|secure|security|services|sex|sexy|sg|sh|shabaka|shabaka-arabic|shia|shiksha|shoes|shop|shopping|show|si|singles|site|sj|sk|ski|sl|sm|smile|sn|so|soccer|social|softw
431are|solar|solutions|song|soy|spa|space|sport|sports|spot|sr|srl|st|stockholm|storage|store|stream|studio|study|style|su|sucks|supplies|supply|support|surf|surgery|sv|swiss|sy|sydney|systems|sz|taipei|talk|tatar|tattoo|tax|taxi|tc|td|team|tech|technology|tel|tennis|tf|tg|th|thai|theater|theatre|tickets|tienda|tips|tires|tirol|tj|tk|tl|tm|tn|to|today|tokyo|tools|top|tours|town|toys|tp-|tr|trade|trading|training|travel|tt|tube|tv|tw|tz|ua|ug|uk|um|university|uno|us|us.com|uy|uz|va|vacations|vc|ve|vegas|ventures|versicherung|vet|vg|vi|viajes|video|villas|vin|vip|vision|vlaanderen|vn|vodka|vote|voting|voto|voyage|vu|wales|wang|watch|watches|weather|web|webcam|webs|website|wedding|wf|wien|wiki|win|wine|winners|work|works|world|wow|ws|wtf|xn--11b4c3d|xn--1qqw23a|xn--30rr7y|xn--3bst00m|xn--3ds443g|xn--3pxu8k|xn--42c2d9a|xn--45q11c|xn--4gbrim|xn--55qw42g|xn--55qx5d|xn--5tzm5g|xn--6frz82g|xn--6qq986b3xl|xn--80asehdb|xn--80aswg|xn--9dbq2a|xn--9et52u|xn--bck1b9a5dre4c|xn--c2br7g|xn--cck2b3b|xn--czr694b|xn--czrs0t|xn--czru2d|xn--d1acj3b|xn--e1a4c|xn--efvy88h|xn--fhbei|xn--fiq228c5hs|xn--fjq720a|xn--g2xx48c|xn--hxt814e|xn--imr513n|xn--io0a7i|xn--j1aef|xn--kput3i|xn--mgbab2bd|xn--mgbca7dzdo|xn--mgbt3dhd|xn--mk1bu44c|xn--mxtq1m|xn--ngbc5azd|xn--ngbrx|xn--nqv7fs00ema|xn--nyqy26a|xn--p1acf|xn--pssy2u|xn--q9jyb4c|xn--rhqv96g|xn--ses554g|xn--t60b56a|xn--tckwe|xn--tiq49xqyj|xn--unup4y|xn--vermgensberater-ctb|xn--vermgensberatung-pwb|xn--vhquv|xn--vuq861b|xn--w4r85el8fhu5dnra|xn--xhq521b|xn--zfr164b|xxx|xyz|yachts|ye|yoga|yokohama|you|yt|yu|za|zero|zip|zm|zone|zw)$")
432    //new RegExp("^[a-z0-9]+[a-z0-9\._-]*[a-z0-9]+@[a-z0-9]+[a-z0-9\._-]*[a-z0-9]+\.[a-z]{2,4}$")
433    //new RegExp("^[a-zA-Z0-9]+[a-zA-Z0-9\._-]*[a-zA-Z0-9]+@[a-zA-Z0-9]+[a-zA-Z0-9\._-]*[a-zA-Z0-9]+\.[a-zA-Z]{2,4}$")
434);
435
436// url
437checkForm.addFieldType(
438    "url",
439//	new RegExp("^http\\:\\/\\/(\\w[\\w\\.\\-]*\\w+\\.)+[a-z]{2,4}(:[0-9]{2,})?(\\/)?((\\w[\\w\\.\\-\\/\\%\\#]+)*(\\?(\\w+[\\w\\!\\#\\$\\%\\&\\*\\+\\-\\/\\=\\?\\^\\{\\}\\|\\~\\,\\@\\:\\.]*)?)?)?$")
440    new RegExp('^(((ht|f)tp(s?))\:\/\/)?(((www\.|[a-zA-Z0-9]+\.)?[a-zA-Z0-9\.-]+\.(abogado|ac|academy|accountant|accountants|actor|ad|ads|adult|ae|aero|af|africa|ag|agency|ai|airforce|al|alsace|am|amsterdam|an|analytics|ao|apartments|app|aq|ar|arab|archi|army|art|as|asia|associates|at|attorney|au|auction|audio|author|auto|autos|aw|ax|az|ba|baby|band|bank|bar|barcelona|bargains|baseball|basketball|bayern|bb|bcn|bd|be|beauty|beer|berlin|best|bet|bf|bg|bh|bi|bible|bid|bike|bingo|bio|biz|bj|bl|black|blackfriday|blog|blue|bm|bn|bo|boats|boo|book|boston|bot|boutique|box|br|broadway|broker|brussels|bs|bt|budapest|build|builders|business|buy|buzz|bv|bw|by|bz|bzh|ca|cab|cafe|call|cam|camera|camp|cancerresearch|capetown|capital|car|cards|care|career|careers|cars|casa|cash|casino|cat|catering|catholic|cc|cd|center|ceo|cf|cg|ch|channel|charity|chat|cheap|christmas|church|ci|city|ck|cl|claims|cleaning|click|clinic|clothing|cloud|club|cm|cn|co|co.com|coach|codes|coffee|college|cologne|com|community|company|computer|comsec|condos|construction|consulting|contact|contractors|cooking|cool|coop|corp|country|coupon|coupons|courses|cpa|cr|credit|creditcard|creditunion|cricket|cruise|cruises|cu|cv|cx|cy|cymru|cz|dad|dance|data|date|dating|day|dds|de|deal|deals|degree|delivery|democrat|dental|dentist|desi|design|dev|diamonds|diet|digital|direct|directory|discount|diy|dj|dk|dm|do|docs|doctor|dog|domains|dot|download|dubai|dvr|dz|earth|eat|ec|eco|ecom|edu|education|ee|eg|eh|email|energy|engineer|engineering|enterprises|equipment|er|es|esq|estate|et|eu|eus|events|exchange|expert|exposed|express|fail|faith|family|fan|fans|farm|fashion|feedback|fi|film|final|finance|financial|finish|fish|fishing|fit|fitness|fj|fk|flights|florist|flowers|fly|fm|fo|foo|food|football|forsale|forum|foundation|fr|frl|fun|fund|furniture|futbol|fyi|ga|gal|gallery|game|games|garden|gay|gb|gd|ge|ged|gent|gf|gg|gh|gi|gift|gifts|gives|giving|gl|glass|global|gm|gmbh|gn|gold|golf|got|gov|gp|gq|gr|graphics|gratis|green|gripe|grocery|group|gs|gt|gu|guide|guitars|guru|gw|gy|hair|halal|hamburg|haus|health|healthcare|help|helsinki|here|hiphop|hiv|hk|hm|hn|hockey|holdings|holiday|home|homes|horse|hospital|host|hosting|hot|hoteis|hotel|hotels|house|how|hr|ht|hu|id|idn|ie|il|im|immo|immobilien|in|inc|industries|info|info.pl|ing|ink|institute|insurance|insure|int|international|investments|i
440o|iq|ir|irish|is|islam|ismaili|ist|istanbul|it|je|jetzt|jewelry|jm|jo|jobs|joburg|jot|joy|jp|juegos|kaufen|ke|kg|kh|ki|kid|kids|kim|kitchen|kiwi|km|kn|koeln|kosher|kp|kr|kw|ky|kyoto|kz|la|land|lat|latino|law|lawyer|lb|lc|lease|legal|lgbt|li|life|lifeinsurance|lifestyle|lighting|like|limited|limo|link|live|living|lk|llc|llp|loan|loans|lol|london|love|lr|ls|lt|ltd|ltda|lu|luxe|luxury|lv|ly|ma|madrid|mail|maison|makeup|management|map|market|marketing|mba|mc|md|me|med|media|medical|meet|melbourne|meme|memorial|men|menu|mf|mg|mh|miami|mil|mk|ml|mls|mm|mn|mo|mobi|mobile|moda|moe|mom|money|mortgage|moscow|moto|motorcycles|mov|movie|mp|mq|mr|ms|mt|mu|museum|music|mutualfunds|mv|mw|mx|my|mz|na|nagoya|name|navy|nc|ne|net|network|new|news|nf|ng|ngo|ni|ninja|nl|no|now|np|nr|nrw|nu|nyc|nz|okinawa|om|one|ong|onl|online|ooo|org|organic|osaka|ott|pa|paris|pars|partners|parts|party|pay|pe|pet|pets|pf|pg|ph|phd|phone|photo|photography|photos|physio|pics|pictures|pid|ping|pink|pizza|pk|pl|place|play|plumbing|plus|pm|pn|poker|politie|porn|pr|press|pro|productions|prof|promo|properties|property|protection|ps|pt|pub|pw|py|qa|qpon|quebec|racing|radio|re|read|realestate|realtor|realty|recipes|red|rehab|reise|reisen|rent|rentals|repair|report|republican|rest|restaurant|retirement|review|reviews|rich|rip|ro|rocks|rodeo|roma|room|rs|rsvp|ru|rugby|ruhr|run|rw|ryukyu|sa|saarland|safe|safety|sale|salon|sari|sarl|save|sb|sc|scholarships|school|schule|science|scot|sd|se|search|secure|security|services|sex|sexy|sg|sh|shabaka|shabaka-arabic|shia|shiksha|shoes|shop|shopping|show|si|singles|site|sj|sk|ski|sl|sm|smile|sn|so|soccer|social|software|solar|solutions|song|soy|spa|space|sport|sports|spot|sr|srl|st|stockholm|storage|store|stream|studio|study|style|su|sucks|supplies|supply|support|surf|surgery|sv|swiss|sy|sydney|systems|sz|taipei|talk|tatar|tattoo|tax|taxi|tc|td|team|tech|technology|tel|tennis|tf|tg|th|thai|theater|theatre|tickets|tienda|tips|tires|tirol|tj|tk|tl|tm|tn|to|today|tokyo|tools|top|tours|town|toys|tp-|tr|trade|trading|training|travel|tt|tube|tv|tw|tz|ua|ug|uk|um|university|uno|us|us.com|uy|uz|va|vacations|vc|ve|vegas|ventures|versicherung|vet|vg|vi|viajes|video|villas|vin|vip|vision|vlaanderen|vn|vodka|vote|voting|voto|voyage|vu|wales|wang|watch|watches|weather|web|webcam|webs|website|wedding|wf|wien|wiki|win|wine|winners|work|works|world|wow|ws|wtf|xn--11b4c3d|xn--1qqw23a|xn--30rr7y|xn--3bst00m|xn--3ds443g|xn--3pxu8k|xn--42c2d9a|xn--45q11c|xn--4gbrim|xn--55qw42g|xn--55qx5d|xn--5tzm5g|xn--6frz82g|xn--6qq986b3xl|xn--80asehdb|xn--80aswg|xn--9dbq2a|xn--9et52u|xn--bck1b9a5dre4c|xn--c2br7g|xn--cck2b3b|xn--czr694b|xn--czrs0t|xn--czru2d|xn--d1acj3b|xn--e1a4c|xn--efvy88h|xn--fhbei|xn--fiq228c5hs|xn--fjq720a|xn--g2xx48c|xn--hxt814e|xn--imr513n|xn--io0a7i|xn--j1aef|xn--kput3i|xn--mgbab2bd|xn--mgbca7dzdo|xn--mgbt3dhd|xn--mk1bu44c|xn--mxtq1m|xn--ngbc5azd|xn--ngbrx|xn--nqv7fs00ema|xn--nyqy26a|xn--p1acf|xn--pssy2u|xn--q9jyb4c|xn--rhqv96g|xn--ses554g|xn--t60b56a|xn--tckwe|xn--tiq49xqyj|xn--unup4y|xn--vermgensberater-ctb|xn--vermgensberatung-pwb|xn--vhquv|xn--vuq861b|xn--w4r85el8fhu5dnra|xn--xhq521b|xn--zfr164b|xxx|xyz|yachts|ye|yoga|yokohama|you|yt|yu|za|zero|zip|zm|zone|zw))|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})|(\\[([a-fA-F0-9\:]+)\\]))(\:[0-9]+)*((/|//)($|[a-zA-Z0-9@\\[\\]\\:!\.\,\;\?\'\\\+&%\$#\=~_\-]+))*$')
441//		new RegExp("^http\:\/\/([a-zA-Z0-9_][a-zA-Z0-9_\.\-]*[a-zA-Z0-9_]+)+\.[a-z]{2,4}(:[0-9]{2,})?(\/)?(([a-zA-Z0-9_\/\%\#\.\-]+)*(\?([a-zA-Z0-9_]+[!a-zA-Z0-9_;\%\&\=\@\#\/\:\.\,\+\-]*)?)?)?$");
442);
443
444// telefon
445checkForm.addFieldType(
446    "telefon",
447    function (evt, elm) {
448        let fieldOk = true;
449        if (elm && elm.value.length !== 0) {
450            let reg = new RegExp("((\\+|00)\\d{3})?\\d{3,10}((\\-|kl\\.)\\d{3})?$");
451            let tmp = elm.value.replace(/\s/g, '');
452            let phoneSplit = tmp.split(",");
453            for (let j = 0; j < phoneSplit.length; j++) {
454                let phone = phoneSplit[j].replace(new RegExp("([0-9])/([0-9])"), '$1$2');
455
456                if (phoneSplit[j].length - phone.length > 1) {
457                    fieldOk = false
458                } else {
459                    if (phone.search(reg) !== 0) {
460                        fieldOk = false;
461                    }
462                }
463            }
464        }
465
466        return fieldOk;
467    }
468);
469// 158
470// 112
471// 00420 331 889 415-420
472// 00420 331 889 415,00420 331 889 297
473// +420 331 889 415-420
474// +420 331 889 415,+420 331 889 297
475// 313 884 235 kl. 208
476// 737 077 322
477// 737077322
478// +420331889415
479// 033/5571 026
480// 0917/178 718
481// 0908/799 055
482// 0850 111 727
483// 12 129
484// 057/244 5 999
485// 057/48 61 411
486// 0850 850 850
487// 057/4865 111
488// 057/4422741
489// 02 45248088
490// +421 2 5920 3303
491// +421 903 267 027
492// 00421 2 5920 3303
493// 00421 903 267 027
494// 12129
495
496checkForm.addFieldType(
497    "mobil",
498    new RegExp("^((\\d{5}|\\+\\d{3})?\\ ?\\d{3}\\ ?\\d{3}\\ ?\\d{3}(\\-\\d{3})?(\\ kl\\.\\ ?\\d+)?(\\ |\\ ?,\\ ?)?)+$")
499);
500//00420
501// +420 331 889 415-420
502// +420 331 889 415,+420 331 889 297
503// 313 884 235 kl. 208
504
505checkForm.addFieldType(
506    "username",
507    new RegExp("^[a-zA-Z0-9](?=[a-zA-Z0-9\\.\\_\\-]{3,})((\\.|\\_|\\-)?[a-zA-Z0-9]{1,})+$")
508);
509
510checkForm.addFieldType(
511    "password",
512    new RegExp("^.*(?=.{6,})(?=.*[0-9])(?=.*[a-zA-Z]).*$")
513//	new RegExp("^.*(?=.*[a-z])(?=.*[0-9])(?=.{6,}).*$")
514);
515
516checkForm.addFieldType(
517    "time",
518    function (evt, elm) {
519        if (elm) {
520            if (elm.value.length == 0)
521                return true;
522            var reg1 = /[0-9]+/g;
523            var result = elm.value.match(reg1);
524            if (result && result.length >= 1 && result.length <= 3) {
525                var iHodin = parseInt(result[0], 10);
526                var iMinut = (result.length >= 2 ? result[1] : 0);
527                var iVterin = (result.length == 3 ? result[2] : 0);
528                if (iHodin >= 0 && iHodin <= 24 && iMinut >= 0 && iMinut <= 59 && iVterin >= 0 && iVterin <= 59)
529                    return true;
530                else
531                    return false;
532            }
533            return false;
534        }
535        return false;
536    }
537);
538checkForm.addFieldType(
539    "email_multi",
540    function (evt, elm) {
541        if (elm) {
542            if (elm.value.length == 0)
543                return true;
544            var reg1 = /[ ,;]+/;
545            var reg2 = new RegExp("^([\\w\\!\\#\\$\\%\\&\\*\\+\\-\\/\\=\\?\\^\\{\\}\\|\\~]+)((\\.){1}[\\w\\!\\#\\$\\%\\&\\*\\+\\-\\/\\=\\?\\^\\{\\}\\|\\~]+)*@[\\w\\!\\#\\$\\%\\&\\*\\+\\-\\/\\=\\?\\^\\{\\}\\|\\~]+((\\.){1}[\\w\\!\\#\\$\\%\\&\\*\\+\\-\\/\\=\\?\\^\\{\\}\\|\\~]+)*\\.(abogado|ac|academy|accountant|accountants|actor|ad|ads|adult|ae|aero|af|africa|ag|agency|ai|airforce|al|alsace|am|amsterdam|an|analytics|ao|apartments|app|aq|ar|arab|archi|army|art|as|asia|associates|at|attorney|au|auction|audio|author|auto|autos|aw|ax|az|ba|baby|band|bank|bar|barcelona|bargains|baseball|basketball|bayern|bb|bcn|bd|be|beauty|beer|berlin|best|bet|bf|bg|bh|bi|bible|bid|bike|bingo|bio|biz|bj|bl|black|blackfriday|blog|blue|bm|bn|bo|boats|boo|book|boston|bot|boutique|box|br|broadway|broker|brussels|bs|bt|budapest|build|builders|business|buy|buzz|bv|bw|by|bz|bzh|ca|cab|cafe|call|cam|camera|camp|cancerresearch|capetown|capital|car|cards|care|career|careers|cars|casa|cash|casino|cat|catering|catholic|cc|cd|center|ceo|cf|cg|ch|channel|charity|chat|cheap|christmas|church|ci|city|ck|cl|claims|cleaning|click|clinic|clothing|cloud|club|cm|cn|co|co.com|coach|codes|coffee|college|cologne|com|community|company|computer|comsec|condos|construction|consulting|contact|contractors|cooking|cool|coop|corp|country|coupon|coupons|courses|cpa|cr|credit|creditcard|creditunion|cricket|cruise|cruises|cu|cv|cx|cy|cymru|cz|dad|dance|data|date|dating|day|dds|de|deal|deals|degree|delivery|democrat|dental|dentist|desi|design|dev|diamonds|diet|digital|direct|directory|discount|diy|dj|dk|dm|do|docs|doctor|dog|domains|dot|download|dubai|dvr|dz|earth|eat|ec|eco|ecom|edu|education|ee|eg|eh|email|energy|engineer|engineering|enterprises|equipment|er|es|esq|estate|et|eu|eus|events|exchange|expert|exposed|express|fail|faith|family|fan|fans|farm|fashion|feedback|fi|film|final|finance|financial|finish|fish|fishing|fit|fitness|fj|fk|flights|florist|flowers|fly|fm|fo|foo|food|football|forsale|forum|foundation|fr|frl|fun|fund|furniture|futbol|fyi|ga|gal|gallery|game|games|garden|gay|gb|gd|ge|ged|gent|gf|gg|gh|gi|gift|gifts|gives|giving|gl|glass|global|gm|gmbh|gn|gold|golf|got|gov|gp|gq|gr|graphics|gratis|green|gripe|grocery|group|gs|gt|gu|guide|guitars|guru|gw|gy|hair|halal|hamburg|haus|health|healthcare|help|helsinki|here|hiphop|hiv|hk|hm|hn|hockey|holdings|holiday|home|homes|horse|hospital|host|hosting|hot|hoteis|hotel|hotels|house|how|hr|ht|hu|id|idn|ie|il|im|immo|immobilien|in|inc|industries|info|info.pl|ing|ink|institute|insurance|insure|int|international|investments|i
545o|iq|ir|irish|is|islam|ismaili|ist|istanbul|it|je|jetzt|jewelry|jm|jo|jobs|joburg|jot|joy|jp|juegos|kaufen|ke|kg|kh|ki|kid|kids|kim|kitchen|kiwi|km|kn|koeln|kosher|kp|kr|kw|ky|kyoto|kz|la|land|lat|latino|law|lawyer|lb|lc|lease|legal|lgbt|li|life|lifeinsurance|lifestyle|lighting|like|limited|limo|link|live|living|lk|llc|llp|loan|loans|lol|london|love|lr|ls|lt|ltd|ltda|lu|luxe|luxury|lv|ly|ma|madrid|mail|maison|makeup|management|map|market|marketing|mba|mc|md|me|med|media|medical|meet|melbourne|meme|memorial|men|menu|mf|mg|mh|miami|mil|mk|ml|mls|mm|mn|mo|mobi|mobile|moda|moe|mom|money|mortgage|moscow|moto|motorcycles|mov|movie|mp|mq|mr|ms|mt|mu|museum|music|mutualfunds|mv|mw|mx|my|mz|na|nagoya|name|navy|nc|ne|net|network|new|news|nf|ng|ngo|ni|ninja|nl|no|now|np|nr|nrw|nu|nyc|nz|okinawa|om|one|ong|onl|online|ooo|org|organic|osaka|ott|pa|paris|pars|partners|parts|party|pay|pe|pet|pets|pf|pg|ph|phd|phone|photo|photography|photos|physio|pics|pictures|pid|ping|pink|pizza|pk|pl|place|play|plumbing|plus|pm|pn|poker|politie|porn|pr|press|pro|productions|prof|promo|properties|property|protection|ps|pt|pub|pw|py|qa|qpon|quebec|racing|radio|re|read|realestate|realtor|realty|recipes|red|rehab|reise|reisen|rent|rentals|repair|report|republican|rest|restaurant|retirement|review|reviews|rich|rip|ro|rocks|rodeo|roma|room|rs|rsvp|ru|rugby|ruhr|run|rw|ryukyu|sa|saarland|safe|safety|sale|salon|sari|sarl|save|sb|sc|scholarships|school|schule|science|scot|sd|se|search|secure|security|services|sex|sexy|sg|sh|shabaka|shabaka-arabic|shia|shiksha|shoes|shop|shopping|show|si|singles|site|sj|sk|ski|sl|sm|smile|sn|so|soccer|social|software|solar|solutions|song|soy|spa|space|sport|sports|spot|sr|srl|st|stockholm|storage|store|stream|studio|study|style|su|sucks|supplies|supply|support|surf|surgery|sv|swiss|sy|sydney|systems|sz|taipei|talk|tatar|tattoo|tax|taxi|tc|td|team|tech|technology|tel|tennis|tf|tg|th|thai|theater|theatre|tickets|tienda|tips|tires|tirol|tj|tk|tl|tm|tn|to|today|tokyo|tools|top|tours|town|toys|tp-|tr|trade|trading|training|travel|tt|tube|tv|tw|tz|ua|ug|uk|um|university|uno|us|us.com|uy|uz|va|vacations|vc|ve|vegas|ventures|versicherung|vet|vg|vi|viajes|video|villas|vin|vip|vision|vlaanderen|vn|vodka|vote|voting|voto|voyage|vu|wales|wang|watch|watches|weather|web|webcam|webs|website|wedding|wf|wien|wiki|win|wine|winners|work|works|world|wow|ws|wtf|xn--11b4c3d|xn--1qqw23a|xn--30rr7y|xn--3bst00m|xn--3ds443g|xn--3pxu8k|xn--42c2d9a|xn--45q11c|xn--4gbrim|xn--55qw42g|xn--55qx5d|xn--5tzm5g|xn--6frz82g|xn--6qq986b3xl|xn--80asehdb|xn--80aswg|xn--9dbq2a|xn--9et52u|xn--bck1b9a5dre4c|xn--c2br7g|xn--cck2b3b|xn--czr694b|xn--czrs0t|xn--czru2d|xn--d1acj3b|xn--e1a4c|xn--efvy88h|xn--fhbei|xn--fiq228c5hs|xn--fjq720a|xn--g2xx48c|xn--hxt814e|xn--imr513n|xn--io0a7i|xn--j1aef|xn--kput3i|xn--mgbab2bd|xn--mgbca7dzdo|xn--mgbt3dhd|xn--mk1bu44c|xn--mxtq1m|xn--ngbc5azd|xn--ngbrx|xn--nqv7fs00ema|xn--nyqy26a|xn--p1acf|xn--pssy2u|xn--q9jyb4c|xn--rhqv96g|xn--ses554g|xn--t60b56a|xn--tckwe|xn--tiq49xqyj|xn--unup4y|xn--vermgensberater-ctb|xn--vermgensberatung-pwb|xn--vhquv|xn--vuq861b|xn--w4r85el8fhu5dnra|xn--xhq521b|xn--zfr164b|xxx|xyz|yachts|ye|yoga|yokohama|you|yt|yu|za|zero|zip|zm|zone|zw)$")
546            var result = elm.value.split(reg1);
547            if (result && result.length >= 1) {
548                var bOk = true;
549                for (var i = 0; result[i]; i++) {
550                    var fieldOK = (result[i].search(reg2) < 0) ? false : true;
551                    if (!fieldOK)
552                        bOk = false;
553                }
554                return bOk;
555            }
556            return false;
557        }
558        return false;
559    }
560);
561
562checkForm.addFieldType(
563    "date",
564    function (evt, elm) {
565        if (elm) {
566            if (elm.value.length == 0) {
567                return true;
568            }
569
570            const reg = RegExp("^[0-9]{1,2}\\.[0-9]{1,2}\\.[0-9]{4}$")
571
572            if (!reg.test(elm.value)) {
573                return false;
574            }
575
576            let day, month, year;
577            [day, month, year] = elm.value.split('.').map(Number);
578
579            if (year < 1900 || year > 2100) {
580                return false;
581            }
582
583            month--;
584            const date = new Date(year, month, day);
585
586            return date.getFullYear() === year && date.getMonth() === month && date.getDate() === day;
587        }
588        return false;
589    }
590);
591checkForm.addFieldType(
592    "date_usr",
593    function (evt, elm) {
594        if (elm) {
595            if (elm.value.length == 0) {
596                return true;
597            }
598            let reg = RegExp("^[0-9]{1,2}\\.[0-9]{1,2}\\.[0-9]{4}$")
599            let bOk = true;
600            let fieldOK = (elm.value.search(reg) < 0) ? false : true;
601
602            if (!fieldOK) {
603                bOk = false;
604            }
605
606            if (bOk) {
607                [day, month, year] = elm.value.split('.').map(Number);
608
609                if ( day < 1 || day > 31 || month < 1 || month > 12 || year < 1900 || year > 2100 ) {
610                    bOk = false;
611                }
612            }
613
614            return bOk;
615        }
616        return false;
617    }
618);
619checkForm.addFieldType(
620    "date_noyear",
621    new RegExp("^[0-9]{1,2}\\.[0-9]{1,2}\\.?$")
622);
623checkForm.addFieldType(
624    "date_usr_noyear",
625    new RegExp("^[0-9]{1,2}\\.[0-9]{1,2}\\.?$")
626);
627
628// numbers only
629checkForm.addFieldType(
630    "time_text",
631    new RegExp("^([0-9]{1,2})(:[0-9]{1,2}){0,2}$")
632);
633checkForm.addFieldType(
634    "iColorPicker",
635    new RegExp('^#(([a-fA-F0-9]){3}){1,2}$')
636);
637/**
638 * Overi, ze je pridan soubor k uploadu pomoci DropZone
639 */
640checkForm.addFieldType('dz-file-check', function (evt, element) {
641    if (typeof (element.parentElement.dropzone) === 'undefined') {
642        return false;
643    }
644
645    var fieldDropzone = Dropzone.forElement(element.parentElement);
646    if (fieldDropzone.files.length > 0) {
647        return true;
648    }
649
650    return false;
651});
652
653checkForm.addFieldType('file-size-check', function (evt, element) {
654    let status = true;
655    if (element.dataset.maxFileSize && element.files && element.files[0]) {
656        status = Number(element.dataset.maxFileSize) > element.files[0].size;
657        console.log('Check file size: ' + element.files[0].size);
658    }
659
660    return status;
661})
662
663// zavolanie inicializacie checkForm-u pri zavedeni dokumentu
664evt.add(window, "load", checkForm.init);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.