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.