function isCheckGroup(element){return (element.checked+""=="undefined" && element.length+""!="undefined");}function Validator(preMsg){this.firstErrorField=null;if(preMsg!=null){this.msg=preMsg;}else {this.msg="Há informações erradas ou incompletas no formulário. Erros:\n\n";}this.validateSimpleTextField=validateSimpleTextField;this.validateVariableField=validateVariableField;this.validateNumberTextField=validateNumberTextField;this.validateUrlTextField=validateUrlTextField;this.validateEmailField=validateEmailField;this.validateComboField=validateSimpleTextField;this.validateCheckGroup=validateCheckGroup;this.doLog=doLog;this.processLog=processLog;}function validateSimpleTextField(element,errorMsg){if(element.value==""){this.doLog(element,errorMsg);return false;}return true;}function validateVariableField(element,errorMsg){var str=element.value;if(str==""||!isNaN(str.charAt(0))){this.doLog(element,errorMsg);return false;}for (var i=0;i<str.length;i++){if(!((str.charAt(i) >= 'a'&&str.charAt(i) <= 'z')||(str.charAt(i) >= 'A'&&str.charAt(i) <= 'Z') ||(str.charAt(i) >= '0'&&str.charAt(i) <= '9') ||(str.charAt(i)=='_'))){this.doLog(element,errorMsg);return false;}}return true;}function validateNumberTextField(element,maxValue,minValue,errorMsg){if(element.value!=""&&(isNaN(element.value)||(maxValue!=null&&element.value>maxValue)||(minValue!=null&&element.value<minValue))){this.doLog(element,errorMsg);return false;}return true;}function validateUrlTextField(element,errorMsg){var httpUrl=element.value;if(httpUrl==""){this.doLog(element,errorMsg);return false;}if(httpUrl.length<"http://".length){this.doLog(element,"URL inválida. Ela provavelmente não possui http://");return false;}if(httpUrl.substring(0,"http://".length)!="http://" ){this.doLog(element,"URL inválida. Ela deve conter http://");return false;}if(httpUrl.length<"http://".length+1){this.doLog(element,"URL inválida. Ela tem que conter algum dado além de http://");return false;}var dotPos=httpUrl.indexOf(".");if(dotPos==-1){this.doLog(element,"URL inválida. Ela tem que conter um ponto.");return false;}if(!(dotPos>"http://".length&&dotPos<httpUrl.length-1)){this.doLog(element,"URL inválida. O caminho não existe ou está incorreto.");return false;}return true;}function validateEmailField(element,errorMsg){var email=element.value;var atPos=email.indexOf("@");var dotPos=email.indexOf(".");if(email!=""){if(atPos<1||dotPos<1||dotPos==email.length-1||atPos==email.length-1 ||email.length<6||email.indexOf(' ')!=-1 ||dotPos==atPos+1||dotPos==atPos-1||atPos!=email.lastIndexOf("@")||email.indexOf("..")!=-1){this.doLog(element,errorMsg);return false;}}return true;}function validateCheckGroup(element,errorMsg){var ok=false;if(isCheckGroup(element)){for (var i=0;i<element.length;i++){if( element[i].checked){ok=true;}}}else {ok=element.checked;}if(!ok){this.doLog(element,errorMsg);return false;}return true;}function doLog(element,newMsg){if(this.firstErrorField==null){this.firstErrorField=element;}else {this.msg += "\n";}this.msg += "- "+newMsg;}function processLog(){if(this.firstErrorField!=null){alert(this.msg);if(!isCheckGroup(this.firstErrorField)){this.firstErrorField.focus();this.firstErrorField.select();}else{this.firstErrorField[0].focus()}}return (this.firstErrorField==null);}function strReplace(text,searchFor,replaceStr){var re=new RegExp(searchFor,'gi');text=text.replace(re,replaceStr);return text;}function limitTextArea(mf,cf,m){if(mf.value.length>m){mf.value=mf.value.substring(0,m);}else{if(cf!=null){cf.value=m-mf.value.length;}}}
