var arrForm=Array();
function initForm() {if (!document.getElementsByTagName) return;if (document.getElementsByTagName('form')) {var objForms=document.getElementsByTagName('form');for(var i=0,objForm;objForm=objForms[i];i++){objForm.onsubmit=function(){var formName=this.name;if(arrForm[formName]){return arrForm[formName].formSubmit();} else {arrForm[formName] = new CheckForm(this);return arrForm[formName].formSubmit();}}}}}
function CheckForm(f){this.form=f;this.arrInvalid=new Array();this.hazardChars=/[\"\'<>\/]/;}
CheckForm.prototype = {formSubmit: function(){var valid,elNode;var validateIt=true;var frmFields=this.form.getElementsByTagName('*');for(var i=0,frmField;frmField=frmFields[i];i++){var arrClass=frmField.className.split(' ');for(var j=0,theClass;theClass=arrClass[j];j++){if(theClass=="null")validateIt=false;}if (validateIt==true){switch(frmField.nodeName){case 'SELECT':valid=this.checkSelect(frmField);break;case 'TEXTAREA':valid=this.checkTextarea(frmField);break;case 'INPUT':valid=this.checkInput(frmField);break;default:valid=true;}if (!valid){this.arrInvalid.push(frmField);}}validateIt=true;} if(this.arrInvalid.length>0) {this.formatAndShow(this.arrInvalid);return false;} else {return true;}},
formatAndShow: function(){var c=document.getElementById("mensage");var a = this.arrInvalid;if (c) {var html = '<div id="msg">\n<p>Os campos:</p><ul>\n';for(var i=0;i<a.length;i++){ var label=(a[i].title)?a[i].title:this.toTitleCase(a[i].name);html += '<li>'+label+'</li>\n';}html += '</ul>\n<p>Est&atilde;o preenchidos de forma incorreta.</p>\n<p>Por favor verifique se os dados est&atilde;o corretamente preenchidos</p></div><div class="refree"><a href="./" onclick="msgClose(); return false;"><img src="../../img/error_close.png" width="115" height="27" alt="Fechar" title="Fechar"></a></div>'; c.innerHTML=html;msgOpen();} else {var msg="Os campos:\n\n";for(var i=0;i<a.length;i++){var label=(a[i].title)?a[i].title:this.toTitleCase(a[i].name);msg+=' * '+label+"\n";}msg+="\nEstão preenchidos de forma incorreta.\n\nPor favor verifique\nse os dados estão corretamente preenchidos";alert(msg);} a[0].focus();this.arrInvalid = Array();},
toTitleCase: function(t){var ls=t.toLowerCase();var la=ls.split(" ");var firstLetter;for(var i=0;i<la.length;i++){firstLetter=la[i].charAt(0).toUpperCase();la[i]=la[i].replace(la[i].charAt(0), firstLetter);}return la.join(" ");},
clearNumber: function(v){if (!isNaN(v) && v != '') return v;for( var i = 0, digit; digit = v[i]; i++ ){if (isNaN(digit)){v = v.replace(digit, '');}}return v;},
onlyNumbers: function(v){var r=true;if(isNaN(v)&&this.isFull(v))return false;for(var i=0,digit;digit=v[i];i++){if(isNaN(digit))r=false;}return r;},
checkInput: function(f){var elType = f.type;switch(elType){case 'radio':return this.checkRadioAndChackBox(f);break;case 'checkbox':return this.checkRadioAndChackBox(f);break;case 'text':return this.checkTextField(f);break;case 'file':f.className += ' string';return this.checkTextField(f);break;case 'password':return this.comparePasswords(f);break;default:return true;break;}return true;},
checkSelect: function(f){return(this.isFull(f.value)&&f.value!='-1');},
checkTextarea: function(f){return this.isFull(f.value);},
checkRadioAndChackBox: function(f){var inputs=this.form.getElementsByTagName('input');for(var i=0,input;input=inputs[i];i++){if(input.name==f.name){if(input.checked==true)return true;}}return false;},
checkTextField: function(f){var valid=true;var elClasses=f.className.split(' ');for(var i=0,elClass;elClass=elClasses[i];i++) {switch(elClass){case 'string':valid=this.isString(f);break;case 'number':valid=this.isNumber(f.value);break;case 'money':valid=this.isMoney(f.value);break;case 'name':valid=this.isName(f.value);break;case 'email':valid=this.isEmail(f.value);break;case 'url':valid=this.isUrl(f.value);break;case 'date':valid=this.isDate(f.value);break;case 'niver':valid=this.isDate(f.value,true);break;case 'cpf':valid=this.isCpf(f.value);break;case 'cnpj':valid=this.isCnpj(f.value);break;case 'rg':valid=this.isRg(f.value);break;case 'cep':valid=this.isCep(f.value);break;case 'tel':valid=this.isTel(f.value);break;case 'cel':valid=this.isCel(f.value);break;}}return valid;},
isFull: function(v){return (v!=null&&v!=''&&!v.match(this.hazardChars));},
isString: function(f){if (this.isFull(f.value)){var v = f.value.replace(/^\s*|\s*$/g,'');var t = f.title;var mask;var elClasses = f.className.split(' ');for(var i=0,elClass;elClass=elClasses[i];i++){if(elClass=='mask'){if (v==t)return false;}}return true;} else {return false;}},
isNumber: function(v){return(!isNaN(v)&&this.isFull(v));},
isMoney: function(v){return(v.match(/^([0-9]{1,3}\.?)+\,[0-9]{2}$/));},
isEmail: function(v){return(v.match(/^[a-z0-9_-]+(\.[a-z0-9_-]+)*@[a-z0-9-]{2,64}(\.[a-z0-9-]{2,64})*\.[a-z]{2,4}$/));},
isUrl: function(v){return(v.match(/^(ht|f)tp\:\/\/[a-zd][a-zd-]{1,64}(\.[a-zd][a-zd-]{2,64})*\.[a-z]{2,4}.+$/));},
isDate: function(v,b){if (!this.isFull(v)) return false;arrDdate=v.split('/');dia=arrDdate[0];mes=arrDdate[1];ano=arrDdate[2];if((isNaN(parseInt(dia))||isNaN(parseInt(mes))||isNaN(parseInt(ano)))||(ano<1900||ano>2200)|| (mes<1||mes>12)|| (dia<1||dia>31)|| (mes==2&&dia>28&&(ano%4!=0))|| (mes==2&&dia>29&&(ano%4==0))|| (dia>30&&(mes==4||mes==6||mes==9||mes==11))){ return false;}else{if(b){data=new Date (ano,mes,dia);dateInicio=new Date(1900,01,01);dateFim=new Date(2007,01,01);if(data<dateInicio||data>dateFim)return false;}return true;}},
isCpf: function(v){var s=null;var r=null;if(onlyNumbers(v))return false;if(v.length !=11 || v.match(/1{11}|2{11}|3{11}|4{11}|5{11}|6{11}|7{11}|8{11}|9{11}|0{11}/))return false;s=0;for(var i=0;i<9;i++)s+=parseInt(v.charAt(i))*(10-i);r=11-(s%11);if(r==10||r==11)r=0;if(r!=parseInt(v.charAt(9)))return false;s=0;for(var i=0;i<10;i++)s+=parseInt(v.charAt(i))*(11-i);r=11-(s%11);if(r==10||r==11)r=0;if(r!=parseInt(v.charAt(10)))return false;return true;},
isCnpj: function(v){var dig1=0;var dig2=0;var x;var Mult1='543298765432';var Mult2='6543298765432';v = this.clearNumber(v);for(x=0;x<=11;x++)dig1=dig1+(parseInt(v.slice(x,x+1))*parseInt(Mult1.slice(x,x+1)));for(x=0;x<=12;x++)dig2=dig2+(parseInt(v.slice(x, x+1))*parseInt(Mult2.slice(x,x+1)));dig1=(dig1*10)%11;dig2=(dig2*10)%11;if(dig1==10)dig1=0;if(dig2==10)dig2=0;if(dig1!=parseInt(v.slice(12, 13))){return false;}else{if(dig2!=parseInt(v.slice(13, 14))){return false;}else{return true;}}},
isRg: function(v){if(onlyNumbers(v))return false;return (v.match(/[0-9xX]{9}/));},
isCep: function(v){if(onlyNumbers(v))return false;if (v.length<8)return false; return(v.match(/[0-9]{8}/));},
isTel: function(v){return (this.onlyNumbers(v) && v.match(/[0-9]{6,10}/));},
isCel: function(v){return(this.isTel(v)&&(v.charAt(0)==9||v.charAt(0)==8||v.charAt(0)==7));},
comparePasswords: function(f){var valid=true;if(!this.isPassword(f.value))valid=false;if(f.id.indexOf("conf_")!=-1)return valid;if(objCompara=document.getElementById("conf_" + f.id)) {if(f.value!=objCompara.value)valid=false;}return valid;},
isPassword: function(v){return (this.isFull(v)&&v.length>3);}}

