checkForm={invalidMsg:"Formulář není vyplněn správně.\n(Form isn\'t filled correctly.)\nProsím opravte následující informace:\n(Please check following informations) %err",errorMsg:"\n- %err",errors:[],invalidClass:"invalid",requiredClass:"required",outsideInvalidClass:"outsideInvalid",submitOnceClass:"submitOnce",alreadySubmitedClass:"alreadySubmited",disablecheck:false,fieldType:[],defaultValue:[],init:function(){if(evt&&cls&&document.getElementById){var forms=document.getElementsByTagName("form");for(var i=0;i<forms.length;i++){evt.add(forms[i],"submit",checkForm.checkForm);evt.add(forms[i],"reset",checkForm.checkForm);var fields=checkForm.getFields(forms[i]);for(var j=0;j<fields.length;j++){evt.add(fields[j],"blur",checkForm.checkField);evt.add(fields[j],"focus",checkForm.checkField);evt.add(fields[j],"change",checkForm.checkField)}checkForm.checkForm(forms[i])}return true}return false},getFields:function(frm){if(frm&&frm.getElementsByTagName){var fields=[];var inputs=frm.getElementsByTagName("input");for(var i=0;i<inputs.length;i++){if(inputs[i].type=="text"||inputs[i].type=="hidden"||inputs[i].type=="password"){fields[fields.length]=inputs[i]}}var textareas=frm.getElementsByTagName("textarea");for(var i=0;i<textareas.length;i++){fields[fields.length]=textareas[i]}var selects=frm.getElementsByTagName("select");for(var i=0;i<selects.length;i++){fields[fields.length]=selects[i]}return fields}return false},checkForm:function(frm){if(!frm||!frm.tagName||frm.tagName.toLowerCase()!="form"){e=evt.fix(frm);frm=e.target}else{var e=false}checkForm.errors=[];var fields=checkForm.getFields(frm);var fieldsOK=true;for(var i=0;i<fields.length;i++){fieldsOK=((checkForm.checkField(fields[i])=="valid")&&fieldsOK)?true:false}if(fieldsOK||checkForm.disablecheck){if(e&&(e.type=="submit")&&cls.has(frm,checkForm.submitOnceClass)){if(cls.has(frm,checkForm.alreadySubmitedClass)){e.preventDefault;return false}else{cls.add(frm,checkForm.alreadySubmitedClass)}}checkForm.disablecheck=false;return true}else{if(e&&(e.type=="reset")){return}if(e&&(e.type=="submit")){var err="";for(var i=0;i<checkForm.errors.length;i++){err+=checkForm.errorMsg.replace("%err",checkForm.errors[i])}alert(checkForm.invalidMsg.replace("%err",err));if(e.preventDefault){e.preventDefault()}}}return false},checkField:function(elm){if(!elm||!elm.tagName){var e=evt.fix(elm);elm=e.target}if(elm&&((elm.tagName.toLowerCase()=="input")||(elm.tagName.toLowerCase()=="select")||(elm.tagName.toLowerCase()=="textarea"))){var fieldOK=true;var elmClasses=cls.get(elm);for(var i=0;i<elmClasses.length;i++){if(checkForm.fieldType[elmClasses[i]]){var rule=checkForm.fieldType[elmClasses[i]];if(fieldOK&&typeof(rule)=="string"){if(elm.value!=""){fieldOK=(elm.value.search(new RegExp("^(["+rule+"]){1,}$"))<0)?false:true}}else if(fieldOK&&((typeof(rule)=="function")||(typeof(rule)=="object"))&&rule.source){if(elm.value!=""){fieldOK=(elm.value.search(rule)<0)?false:true}}else if(fieldOK&&(typeof(rule)=="function")&&rule.prototype){fieldOK=rule(e,elm)}}}var outsideValidationOK=!cls.has(elm,checkForm.outsideInvalidClass);if(fieldOK&&outsideValidationOK){cls.remove(elm,"invalid")}else{cls.add(elm,"invalid");checkForm.errors[checkForm.errors.length]=checkForm.getFieldErrorMsg(elm)}return(fieldOK&&outsideValidationOK)?"valid":"invalid"}return false},addFieldType:function(cls,rule,defaultValue){if(cls&&(rule||defaultValue)){if(rule){checkForm.fieldType[cls]=rule}if(defaultValue){checkForm.defaultValue[cls]=defaultValue}return true}return false},getFieldErrorMsg:function(elm){if(elm){if(elm.checkFormErrorMsg){return elm.checkFormErrorMsg}if(elm.title){return elm.title}if(elm.id){var labels=document.getElementsByTagName("label");for(var i=0;i<labels.length;i++){if(labels[i].attributes["for"]&&(labels[i].attributes["for"].value==elm.id)){var str=checkForm.getNodeText(labels[i]);return str}}return elm.id}if(elm.name){return elm.name}return elm.toString()}return false},getNodeText:function(node){var str="";if(node&&node.hasChildNodes()){for(var i=0;i<node.childNodes.length;i++){str+=(node.childNodes[i].nodeType==3)?node.childNodes[i].nodeValue:checkForm.getNodeText(node.childNodes[i]);if((node.childNodes[i].nodeType==1)&&(node.childNodes[i].tagName.toLowerCase()=="img")&&(node.childNodes[i].attributes["alt"])){str+=node.childNodes[i].attributes["alt"].value}}}return str}};checkForm.addFieldType("required",function(evt,elm){if(elm){if(elm.tagName.toLowerCase()=="select"){return(elm.value)?true:false}else{return(elm.value.search(/\S/)<0)?false:true}}return false});checkForm.addFieldType("numbers","0123456789");checkForm.addFieldType("ids",new RegExp("^[0-9 ]{1,}$"));checkForm.addFieldType("mobil",new RegExp("^\\+[0-9]{2,4}\\s{0,1}[0-9]{8,10}$"));checkForm.addFieldType("time",new RegExp("^[0-9]{1,2}:[0-9]{1,2}$"));checkForm.addFieldType("atleastone",function(evt,elm){return elm.value>0});checkForm.addFieldType("max",function(evt,elm){if(elm.value==""){return true}else{var max=(elm.max*1);return(elm.value>0)&&(elm.value<=max)}});checkForm.addFieldType("safeChars",new RegExp("^[a-zA-Z0-9_]{1,}$"));checkForm.addFieldType("date",function(evt,elm){if(!elm.value){return true}var date=elm.value.split(".");var day=date[0];var month=date[1];var year=date[2];if(!isNaN(day)&&!isNaN(month)&&!isNaN(year)){if((month>12)||(month<1)){return false}if(day<1){return false}var maxDays=31;if(month==2){maxDays=(year%4==0)?29:28}if((month==4)||(month==6)||(month==9)||(month==11)){maxDays=30}if(day>maxDays){return false}return true}return false});checkForm.addFieldType("url",new RegExp("^\\w+://(([\\w\\+\\.\\-]+\\b)(:\\w+)@)?([/\\w\\+\\.\\-]+\\b)(\/{1})?(\\?[\\w\\+\\.\\-/;\\&@=]+\\b)?(#[\\w\\-%]+\\b)?$"),"http://");checkForm.addFieldType("email",new RegExp("^([\\w\\!\\#\\$\\%\\&\\*\\+\\-\\/\\=\\?\\^\\{\\}\\|\\~]+)((\\.){1}[\\w\\!\\#\\$\\%\\&\\*\\+\\-\\/\\=\\?\\^\\{\\}\\|\\~]+)*@[\\w\\!\\#\\$\\%\\&\\*\\+\\-\\/\\=\\?\\^\\{\\}\\|\\~]+((\\.){1}[\\w\\!\\#\\$\\%\\&\\*\\+\\-\\/\\=\\?\\^\\{\\}\\|\\~]+)+$"));if(typeof(evt)!='undefined')evt.add(window,"load",checkForm.init);
