
function FormValidator() {}
FormValidator.valFirstTime=true;
FormValidator.ATTR="valid";
FormValidator.CAPT="caption";
FormValidator.ERRCLS="";
FormValidator.ErrScroll=null;
function validate(pFrm, pShowInElement) {
ValidError.blankError = false;
var err=new Array();
var ret=true;
if (pShowInElement) {
FormValidator.errElement=pShowInElement;
}
for (var i=0;i<pFrm.elements.length;i++) {
if (pFrm.elements[i].getAttribute(FormValidator.ATTR)) {
if(FormValidator.valFirstTime)
pFrm.elements[i].origClass=pFrm.elements[i].className;
var valType = pFrm.elements[i].getAttribute(FormValidator.ATTR);
var currEl = pFrm.elements[i];
testOk = false; 
var params = valType.split("|"); switch (params[0]) {
case 'blank':
ret=Valid.blank(currEl);
break;
case 'number':
ret=Valid.number(currEl);
break;
case 'numberBlank':
ret=Valid.numberBlank(currEl);
break;
case 'equalto':
ret=Valid.equalTo(currEl, pFrm.elements[params[1]]);
break;
case 'length':
ret=Valid.vlength(currEl, params[1]); break;
case 'email':
ret=Valid.email(currEl);
break;
case 'select':
ret=Valid.select(currEl);
break;
case 'selectH':
ret=Valid.selectH(currEl);
break;
case 'cnpj':
ret=Valid.CNPJ(currEl);
break;
case 'cnpjB':
ret=Valid.CNPJB(currEl);
break;
case 'busca':
ret=Valid.busca(currEl);
break;
default:
alert('Clientside validation failed because:\n- Validation Type Not Found ('+params[0]+')\nField: '+pFrm.elements[i].name);
}
if(ret!=true)
err[err.length]=ret;
else if(!FormValidator.valFirstTime) pFrm.elements[i].className=pFrm.elements[i].origClass;
}
}
FormValidator.valFirstTime=false;
if(err.length>0) {
ValidError.showError(err,pFrm);
return false;
}
return true; }
function ValidError(pObj,pSel,pFoc,pMsg) {
this.obj=pObj; this.sel=pSel;
this.foc=pFoc;
this.msg=pMsg;
}
ValidError.lineStart = '\n - ';
ValidError.lineStop = ' ';
ValidError.blankError = false;
ValidError.errMsg=function(pProp,p1,p2) {
p1 = new String(p1).replace(/\<.+\>.*\<\/.+\>/g,""); 
p2 = new String(p2).replace(/\<.+\>.*\<\/.+\>/g,"");
this.blankMsg =ValidError.lineStart+''+p1+' não pode estar em branco.'+ValidError.lineStop;
this.numberMsg =ValidError.lineStart+''+p1+' deve ser um número.'+ValidError.lineStop;
this.equalToMsg =ValidError.lineStart+''+p1+' precisa ser o mesmo que "'+p2+'".'+ValidError.lineStop;
this.lengthMsg =ValidError.lineStart+''+p1+' precisa ter pelo menos '+p2+' caracteres.'+ValidError.lineStop;
this.emailMsg =ValidError.lineStart+''+p1+' não é válido.'+ValidError.lineStop;
this.selectMsg =ValidError.lineStart+''+p1+' precisa ser selecionado.'+ValidError.lineStop;
this.selectHMsg =ValidError.lineStart+''+p1+' precisa ser selecionado.'+ValidError.lineStop;
this.CNPJMsg =ValidError.lineStart+''+p1+' não é válido.'+ValidError.lineStop;
this.buscaMsg =ValidError.lineStart+'Busca não pode estar em branco,\n nem conter caracteres estranhos.'+ValidError.lineStop;
return this[pProp+"Msg"];
}
ValidError.showError=function(pErr,pFrm) {
var i,sel=false;
var formCaption=pFrm.getAttribute(FormValidator.CAPT);
var str = ""+(formCaption ? formCaption : "O formulário")+" não pôde ser enviado!";
if (ValidError.blankError) {
str += ValidError.lineStart+"Preencha todos os campos assinalados com (*)."+ValidError.lineStop;
}
for(i=0;i<pErr.length;i++) {
str+=pErr[i].msg;
if(FormValidator.ERRCLS!="")
pErr[i].obj.className=FormValidator.ERRCLS;
if(!sel)
{
if (pErr[i].obj.type!="hidden") {
if(pErr[i].sel)pErr[i].obj.select();
if(pErr[i].foc)pErr[i].obj.focus();
}
sel=true;
}
}
if (document.getElementById("errorRow") && document.getElementById("errorArea")) {
document.getElementById("errorRow").style.display='block';
document.getElementById("errorArea").innerHTML=str;
document.getElementById("errorRow").scrollIntoView();
}else if (FormValidator.errElement) {
FormValidator.errElement.innerHTML = str;
FormValidator.errElement.style.display='block';
}else {
alert(str);
}
if (FormValidator.ErrScroll) {
FormValidator.ErrScroll.scrollIntoView();
}
}
function Valid() {
}
Valid.blank=function(pCurrEl) {
if (pCurrEl.value == ""){
ValidError.blankError = true;
return new ValidError(pCurrEl,0,1,""); }
return true;
}
Valid.number=function(pCurrEl) {
if (isNaN(pCurrEl.value) && pCurrEl.value!="")
return new ValidError(pCurrEl,0,1,ValidError.errMsg('number',pCurrEl.getAttribute(FormValidator.CAPT)));
return true;
}
Valid.numberBlank=function(pCurrEl) {
if (pCurrEl.value=="") {
ValidError.blankError = true;
return new ValidError(pCurrEl,0,1,""); }
if (isNaN(pCurrEl.value)){
return new ValidError(pCurrEl,0,1,ValidError.errMsg('number',pCurrEl.getAttribute(FormValidator.CAPT)));
}
return true;
}
Valid.equalTo=function(pCurrEl, otherEl) {
var equalToValue = otherEl.value;
if (pCurrEl.value != equalToValue)
return new ValidError(pCurrEl,0,1,ValidError.errMsg('equalTo',pCurrEl.getAttribute(FormValidator.CAPT),otherEl.getAttribute(FormValidator.CAPT)));
return true;
}
Valid.vlength=function(pCurrEl,len) {
if (pCurrEl.value.length < parseInt(len))
return new ValidError(pCurrEl,0,1,ValidError.errMsg('length',pCurrEl.getAttribute(FormValidator.CAPT),len));
return true;
}
Valid.email=function(pCurrEl) {
var emailStr = pCurrEl.value;
var emailReg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/; var emailReg2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,6}|[0-9]{1,3})(\]?)$/; if (!(!emailReg1.test(emailStr) && emailReg2.test(emailStr)))
return new ValidError(pCurrEl,0,1,ValidError.errMsg('email',pCurrEl.getAttribute(FormValidator.CAPT)));
return true;
}
Valid.select=function(pCurrEl) {
if (pCurrEl.selectedIndex == 0)
return new ValidError(pCurrEl,0,1,ValidError.errMsg('select',pCurrEl.getAttribute(FormValidator.CAPT))); return true;
}
Valid.selectH=function(pCurrEl) {
if (pCurrEl.value == "")
return new ValidError(pCurrEl,0,0,ValidError.errMsg('selectH',pCurrEl.getAttribute(FormValidator.CAPT))); return true;
}
Valid.busca=function(pCurrEl) {
if (pCurrEl.value == "" || new String(pCurrEl.value).search(/[\\\']/g) != -1)
return new ValidError(pCurrEl,0,0,ValidError.errMsg('busca'));
return true;
}
Valid.CNPJ=function(pCurrEl) {
var cnpj = pCurrEl.value;
var i, j;
var soma = 0;
if (cnpj.length == 14) {
for (i = 0, j = 5; i < 12; i++) {
soma += j-- * (cnpj.charAt(i) - '0');
if (j < 2) j = 9;
}
soma = 11 - (soma % 11);
if (soma > 9) soma = 0;
if (soma == (cnpj.charAt(12) - '0')) {
soma = 0;
for (i = 0, j = 6; i < 13; i++) {
soma += j-- * (cnpj.charAt(i) - '0');
if (j < 2) j = 9;
}
soma = 11 - (soma % 11);
if (soma > 9) soma = 0;
if (soma == (cnpj.charAt(13) - '0')) {
return true;
}
}
}
return new ValidError(pCurrEl,0,0,ValidError.errMsg('CNPJ',pCurrEl.getAttribute(FormValidator.CAPT)));
}
Valid.CNPJB=function(pCurrEl) {
if (pCurrEl.value=="") {
ValidError.blankError = false;
return true
}else {
var cnpj = pCurrEl.value;
var i, j;
var soma = 0;
if (cnpj.length == 14) {
for (i = 0, j = 5; i < 12; i++) {
soma += j-- * (cnpj.charAt(i) - '0');
if (j < 2) j = 9;
}
soma = 11 - (soma % 11);
if (soma > 9) soma = 0;
if (soma == (cnpj.charAt(12) - '0')) {
soma = 0;
for (i = 0, j = 6; i < 13; i++) {
soma += j-- * (cnpj.charAt(i) - '0');
if (j < 2) j = 9;
}
soma = 11 - (soma % 11);
if (soma > 9) soma = 0;
if (soma == (cnpj.charAt(13) - '0')) {
return true;
}
}
}
return new ValidError(pCurrEl,0,0,ValidError.errMsg('CNPJ',pCurrEl.getAttribute(FormValidator.CAPT)));
}
return true;
}
try {
c.control("FormValidator", "loaded");
} catch (e) {
}
