var chrValidoAlfa = 'abcdefghijklmnopqrstuvwxyz';
var chrValidoHexa = 'abcdef';
var chrValidoDigito = '0123456789';
var chrValidoDigitoNegativo = '0123456789-';
var chrValidoBinario = '01';
var chrValidoEmail = chrValidoAlfa + chrValidoDigito + '@._-';
var chrValidoCor = chrValidoHexa + chrValidoDigito;
var chrValidoListaEmail = chrValidoAlfa + chrValidoDigito + '@._-,; ';
var chrValidoNumero = chrValidoDigito + ',.';
var chrValidoNumero2 = chrValidoDigito + ',';
var chrValidoNumero3 = chrValidoDigito + '.';
var chrValidoMonetarioNegativo = chrValidoDigitoNegativo + '.,';
var chrValidoCodigo = chrValidoNumero + '/-';
var chrValidoFone = chrValidoDigito + '-() ';
var chrValidoData = chrValidoDigito + '/';
var chrValidoHora = chrValidoDigito + ':';
var chrValidoDatahora = chrValidoDigito + '/:';
var chrAlfaNumero = chrValidoAlfa + chrValidoDigito;
var chrAlfaNumeroEspaco = chrValidoAlfa + chrValidoDigito + " ";
var ChrEmail = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,2})(\]?)$/;
var ChrFone = /^([0-9]{3,4})+([\ |\-]{0,1})+([0-9]{4,4})$/;
var ChrDDD = /^([0-9]{2})/;
var ChrCEP = /^([0-9]{5})+([\ |\-]{0,1})+([0-9]{3})/;
var chrValidoConta = chrValidoDigito + 'Xx';
function valida(hora1, minutos1, segundos1, hora2, minutos2, segundos2) {
var retorno = true;
if (!validaHora(hora1, minutos1, segundos1)) retorno = false;
if (!validaHora(hora2, minutos2, segundos2)) retorno = false;
return retorno;
}
function validaHora(hora, minutos, segundos) {
if (hora.value > 23 || minutos.value > 59 || segundos.value > 59) {
alert("Hora inválida.");
hora.value = "00";
minutos.value = "00";
segundos.value = "00";
hora.focus();
return false;
}
return true;
}
function dataValida(_RefObj){
var exprData = new RegExp("(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/(19|20)[0-9]{2}", "gi");
if(_RefObj.value == ''){
return true;
}
ret = exprData.exec(_RefObj.value);
if(ret == null){
alert('Data Inválida!');
_RefObj.focus();
_RefObj.select();
return false;
} else {
arrData = _RefObj.value.split('/');
testData = new Date(arrData[2], arrData[1]-1, arrData[0], 0, 0, 0, 0);
if((testData.getDate()==arrData[0])&&
((testData.getMonth())==(arrData[1]-1))&&
(testData.getFullYear()==arrData[2])){
return true;
} else {
alert('Data Inválida!');
_RefObj.focus();
_RefObj.select();
return false;
}
}
}
function trim(inputString) {
if (typeof inputString != "string") {
return inputString;
}
var retValue = inputString;
var ch = retValue.substring(0, 1);
while (ch == " ") {
retValue = retValue.substring(1, retValue.length);
ch = retValue.substring(0, 1);
}
ch = retValue.substring(retValue.length-1, retValue.length);
while (ch == " ") {
retValue = retValue.substring(0, retValue.length-1);
ch = retValue.substring(retValue.length-1, retValue.length);
}
while (retValue.indexOf("  ") != -1) {
retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length);
}
return retValue;
}
function diaUtil(data){
arr = data.split('/');
chk = new Date(arr[2], arr[1]-1, arr[0], 0, 0, 0);
return (chk.getDay()!=0 && chk.getDay()!=6);
}
function addDays(data, dias){
var base, ret;
data.setHours(0);
data.setMinutes(0);
data.setSeconds(0);
data.setMilliseconds(0);
base = data.getTime();
ret = new Date(base+(24*60*60*1000*dias));
off = ret.getTimezoneOffset() - data.getTimezoneOffset();
diasMilli = (24*60*60*1000*dias)+(60*1000*off);
ret = new Date(base+diasMilli);
return ret;
}
function strToDate(str){
var dia, mes, ano, ret;
dia = str.substr(0,2);
mes = str.substr(3,2) - 1;
ano = str.substr(6,4);
ret = new Date(ano, mes, dia, 0, 0, 0, 0);
return ret;
}
function dateToStr(data){
if(data == null){
data = new Date();
}
d = data.getDate();
d = (d<10?'0'+d:d);
m = (data.getMonth()+1);
m = (m<10?'0'+m:m);
a = data.getFullYear()
return (d+"/"+m+"/"+a)
}
function validaTecla(campo, event) {
var BACKSPACE=8;
var VIRGULA = 44;
var MENOS = 45;
var key;
var tecla;
CheckTAB=true;
if(navigator.appName.indexOf("Netscape")!= -1) {
tecla= event.which;
} else {
tecla= event.keyCode;
}
key = String.fromCharCode(tecla);
if ( tecla == 13) {
return false;
}
if (tecla == BACKSPACE || tecla == 0 || (tecla == VIRGULA && campo.value.indexOf(',') == -1 && campo.value.length > 0) || (tecla == MENOS && campo.value.length == 0))
return true;
if (isNum(key))
return true;
return false;
}
function isNum(caractere){
var strValidos = "0123456789";
if (strValidos.indexOf(caractere) == -1)
return false;
return true;
}
function formataValor(campo,tammax,teclapres) {
var tecla = teclapres.keyCode;
vr = campo.value;
vr = vr.replace( "/", "" );
vr = vr.replace( "/", "" );
vr = vr.replace( ",", "" );
vr = vr.replace( ".", "" );
vr = vr.replace( ".", "" );
vr = vr.replace( ".", "" );
vr = vr.replace( ".", "" );
tam = vr.length;
if(tam < tammax && tecla != 8){
tam = vr.length;
}
if(tecla == 8 ){
tam = tam - 1 ;
}
if ( tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 ){
if( tam <= 2 ){
campo.value = vr;
}
if( (tam > 2) && (tam <= 5) ){
campo.value = vr.substr( 0, tam - 2 ) + ',' + vr.substr( tam - 2, tam );
}
if( (tam >= 6) && (tam <= 8) ){
campo.value = vr.substr( 0, tam - 5 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam );
}
if ( (tam >= 9) && (tam <= 11) ){
campo.value = vr.substr( 0, tam - 8 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam );
}
if ( (tam >= 12) && (tam <= 14) ){
campo.value = vr.substr( 0, tam - 11 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam );
}
if ( (tam >= 15) && (tam <= 17) ){
campo.value = vr.substr( 0, tam - 14 ) + '.' + vr.substr( tam - 14, 3 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam );
}
}
}
function filtraAlfa(event) {
var chrPressionado = getCharPressed(event);
event.returnValue = (chrPressionado.length == 0) ||
(chrPressionado != '0' && chrPressionado != '1' &&
chrPressionado != '2' && chrPressionado != '3' &&
chrPressionado != '4' && chrPressionado != '5' &&
chrPressionado != '6' && chrPressionado != '7' &&
chrPressionado != '8' && chrPressionado != '9');
}
function filtraEmail(event) {
var chrPressionado = getCharPressed(event);
event.returnValue = (chrPressionado.length == 0) ||
(chrValidoEmail.indexOf(chrPressionado.toLowerCase()) > -1);
}
function filtraAlfaNumero(event) {
var chrPressionado = getCharPressed(event);
event.returnValue = (chrPressionado.length == 0) ||
(chrAlfaNumero.indexOf(chrPressionado.toLowerCase()) > -1);
}
function filtraDigito(event) {
var chrPressionado = getCharPressed(event);
event.returnValue = (chrPressionado.length == 0) ||
(chrValidoDigito.indexOf(chrPressionado) > -1);
}
function filtraConta(event) {
var chrPressionado = getCharPressed(event);
event.returnValue = (chrPressionado.length == 0) ||
(chrValidoConta.indexOf(chrPressionado) > -1);
}
function filtraInteiro(event) {
var chrPressionado = getCharPressed(event);
event.returnValue = (chrPressionado.length == 0) ||
(chrValidoDigito.indexOf(chrPressionado) > -1);
}
function filtraInteiroNegativo(event) {
var chrPressionado = getCharPressed(event);
event.returnValue = (chrPressionado.length == 0) ||
(chrValidoDigitoNegativo.indexOf(chrPressionado) > -1);
}
function filtraNumero(event) {
var chrPressionado = getCharPressed(event);
event.returnValue = (chrPressionado.length == 0) ||
(chrValidoNumero.indexOf(chrPressionado) > -1);
}
function filtraNumero2(event) {
var chrPressionado = getCharPressed(event);
event.returnValue = (chrPressionado.length == 0) ||
(chrValidoNumero2.indexOf(chrPressionado) > -1);
}
function filtraCodigo(event) {
var chrPressionado = getCharPressed(event);
event.returnValue = (chrPressionado.length == 0) ||
(chrValidoCodigo.indexOf(chrPressionado) > -1);
}
function filtraFone(event) {
var chrPressionado = getCharPressed(event);
event.returnValue = (chrPressionado.length == 0) ||
(chrValidoFone.indexOf(chrPressionado) > -1);
}
function filtraData(event) {
var chrPressionado = getCharPressed(event);
event.returnValue = (chrPressionado.length == 0) ||
(chrValidoData.indexOf(chrPressionado) > -1);
}
function filtraHora(event) {
var chrPressionado = getCharPressed(event);
event.returnValue = (chrPressionado.length == 0) ||
(chrValidoHora.indexOf(chrPressionado) > -1);
}
function filtraDatahora(event) {
var chrPressionado = getCharPressed(event);
event.returnValue = (chrPressionado.length == 0) ||
(chrValidoDatahora.indexOf(chrPressionado) > -1);
}
function filtraCor(event) {
var chrPressionado = getCharPressed(event);
event.returnValue = (chrPressionado.length == 0) ||
(chrValidoCor.indexOf(chrPressionado) > -1);
}
function semEspacoComercial(event) {
var chrPressionado = getCharPressed(event);
event.returnValue = (chrPressionado.length == 0) ||
(chrPressionado != '&') && (chrPressionado != ' ');
}
function getCharPressed (e) {
var codeKey = (e.shiftKey || e.shiftLeft) ? (e.keyCode + 1000) : e.keyCode;
switch (codeKey) {
case 32 : { return ' '; break; }
case 49 : { return '1'; break; }
case 50 : { return '2'; break; }
case 51 : { return '3'; break; }
case 52 : { return '4'; break; }
case 53 : { return '5'; break; }
case 54 : { return '6'; break; }
case 55 : { return '7'; break; }
case 56 : { return '8'; break; }
case 57 : { return '9'; break; }
case 48 : { return '0'; break; }
case 65 : { return 'a'; break; }
case 66 : { return 'b'; break; }
case 67 : { return 'c'; break; }
case 68 : { return 'd'; break; }
case 69 : { return 'e'; break; }
case 70 : { return 'f'; break; }
case 71 : { return 'g'; break; }
case 72 : { return 'h'; break; }
case 73 : { return 'i'; break; }
case 74 : { return 'j'; break; }
case 75 : { return 'k'; break; }
case 76 : { return 'l'; break; }
case 77 : { return 'm'; break; }
case 78 : { return 'n'; break; }
case 79 : { return 'o'; break; }
case 80 : { return 'p'; break; }
case 81 : { return 'q'; break; }
case 82 : { return 'r'; break; }
case 83 : { return 's'; break; }
case 84 : { return 't'; break; }
case 85 : { return 'u'; break; }
case 86 : { return 'v'; break; }
case 87 : { return 'w'; break; }
case 88 : { return 'x'; break; }
case 89 : { return 'y'; break; }
case 90 : { return 'z'; break; }
case 96 : { return '0'; break; }
case 97 : { return '1'; break; }
case 98 : { return '2'; break; }
case 99 : { return '3'; break; }
case 100 : { return '4'; break; }
case 101 : { return '5'; break; }
case 102 : { return '6'; break; }
case 103 : { return '7'; break; }
case 104 : { return '8'; break; }
case 105 : { return '9'; break; }
case 106 : { return '*'; break; }
case 107 : { return '+'; break; }
case 109 : { return '-'; break; }
case 110 : { return ','; break; }
case 111 : { return '/'; break; }
case 194 : { return '.'; break; }
case 186 : { return String.fromCharCode(231); break; }
case 187 : { return '='; break; }
case 188 : { return ','; break; }
case 189 : { return '-'; break; }
case 190 : { return '.'; break; }
case 191 : { return ';'; break; }
case 192 : { return '\''; break; }
case 193 : { return '/'; break; }
case 219 : { return '´'; break; }
case 220 : { return ']'; break; }
case 221 : { return '['; break; }
case 222 : { return '~'; break; }
case 226 : { return '\\'; break; }
case 1049 : { return '!'; break; }
case 1050 : { return '@'; break; }
case 1051 : { return '#'; break; }
case 1052 : { return '$'; break; }
case 1053 : { return '%'; break; }
case 1054 : { return '¨'; break; }
case 1055 : { return '&'; break; }
case 1056 : { return '*'; break; }
case 1057 : { return '('; break; }
case 1048 : { return ')'; break; }
case 1065 : { return 'A'; break; }
case 1066 : { return 'B'; break; }
case 1067 : { return 'C'; break; }
case 1068 : { return 'D'; break; }
case 1069 : { return 'E'; break; }
case 1070 : { return 'F'; break; }
case 1071 : { return 'G'; break; }
case 1072 : { return 'H'; break; }
case 1073 : { return 'I'; break; }
case 1074 : { return 'J'; break; }
case 1075 : { return 'K'; break; }
case 1076 : { return 'L'; break; }
case 1077 : { return 'M'; break; }
case 1078 : { return 'N'; break; }
case 1079 : { return 'O'; break; }
case 1080 : { return 'P'; break; }
case 1081 : { return 'Q'; break; }
case 1082 : { return 'R'; break; }
case 1083 : { return 'S'; break; }
case 1084 : { return 'T'; break; }
case 1085 : { return 'U'; break; }
case 1086 : { return 'V'; break; }
case 1087 : { return 'W'; break; }
case 1088 : { return 'X'; break; }
case 1089 : { return 'Y'; break; }
case 1090 : { return 'Z'; break; }
case 1186 : { return String.fromCharCode(199); break; }
case 1187 : { return '+'; break; }
case 1188 : { return '<'; break; }
case 1189 : { return '_'; break; }
case 1190 : { return '>'; break; }
case 1191 : { return ':'; break; }
case 1192 : { return '"'; break; }
case 1193 : { return '?'; break; }
case 1219 : { return '`'; break; }
case 1220 : { return '}'; break; }
case 1221 : { return '{'; break; }
case 1222 : { return '^'; break; }
case 1226 : { return '|'; break; }
default : { return ''; break; }
}
}
function filtraAlfaEspaco(event) {
var chrPressionado = getCharPressed(event);
event.returnValue = (chrPressionado.length == 0) ||
(chrAlfaNumeroEspaco.indexOf(chrPressionado.toLowerCase()) > -1);
}
// FUNÇÕES RETIRADAS DO ARQUIVO VALIDACOES.JS.
function validaCPF(CPF) {
// Descrição : Função de validação de CPF.
CPF = limpaParaMascara(CPF,'numeros');
if (CPF.length == 11){
//if(CPF.length != 11){
//	for(countZeros=0 ; countZeros < ((11-CPF.length)+2) ; countZeros++){
//		CPF = "0"+CPF;
//	}
//}
soma = 0;
cont = 0;
for(i=1;i<CPF.length;i++){
if(CPF.charAt(i) == CPF.charAt(i-1)){
cont++;
}
}
if(cont == (CPF.length)-1){
return false;
}
soma = 0;
for(i=0 ; i<9 ; i++){
soma = soma + eval(CPF.charAt(i) * (10 - i));
}
Resto = 11 - ( soma - (parseInt(soma / 11) * 11) );
if( (Resto == 10) || (Resto == 11) ) { Resto = 0; }
if( Resto != eval( (CPF.charAt(9) ) ) ) { return false; }
soma = 0;
for (i = 0;i<10;i++) {
soma = soma + eval(CPF.charAt(i) * (11 - i));
}
Resto = 11 - ( soma - (parseInt(soma / 11) * 11) );
if( (Resto == 10) || (Resto == 11)) {
Resto = 0;
}
if( Resto != eval( (CPF.charAt(10)) )) {
return false;
}
return true;
}
}
function calcMod11(field,start, finish) {
// Descrição : Cálculo do Módulo 11. Requerida pela validação de CGC.
t_i		= 0;
t_sum	 = 0;
t_aux	 = 0;
t_digito = 0;
t_peso	= 0;
t_tam	 = 0;
t_char	= 'z';
t_peso = start;
t_tam = field.length >= 13 ? t_tam = 13 : t_tam = 12;
for(t_i=0 ; t_i< t_tam ; t_i++) {
t_char = field.charAt(t_i);
t_sum = t_sum + ( (parseInt(t_char)) * t_peso);
t_peso = t_peso > finish ? --t_peso : (start + (9 - start));
}
t_aux = t_sum % 11;
t_aux = 11 - t_aux;
t_digito = (t_aux >= 10 ? 0 : t_aux);
return t_digito;
}
function validaCGC(field) {
// Descrição: Função de validação de CGC.
field = limpaParaMascara(field,'numeros');
if( (field == "") || (field == " ") || (field == '00000000000000')) return false;
if(field.length != 14) {
return false;
}
cont = 0;
for(i=1;i<field.length;i++){
if(field.charAt(i) == field.charAt(i-1)){
cont++;
}
}
if(cont == (field.length)-1){
return false;
}
first_digit  = field.charAt(12);
second_digit = field.charAt(13);
field = field.substring(0,12);
first_verified  = calcMod11(field,5,2);  // Através do modulo 11 descobre qual é o primeiro digito do final
second_verified = calcMod11(field + first_verified,6,2);  // Através do modulo 11 descobre qual é o segundo digito do final
/*
Se os dois digitos gerados pelo modulo11 forem iguais aos dois últimos
digitos digitados pelo usuário, validação de CGC OK.
*/
if( (first_verified == first_digit) && (second_verified==second_digit) ) { return true; }
else {
return false;
}
}
function dataValida(dataValor,tipoTeste){
// Descrição: Retorna false caso o string 'dataValor' não passe no 'tipoTeste', ou true no caso de passar no teste.
// Tipos de teste: anterior,ult120anos,futura,futuraOUigual,anteriorOUigual,2mesesMMAAAA
// Exemplo: if(dataValida(document.form.txtData.value,'anterior')) {alert("a data é anterior à atual e é válida")}
dataValor = limpaCampo(dataValor);
dia = dataValor.substr(0,2);
mes = dataValor.substr(2,2) - 1;
ano = dataValor.substr(4,4);
dataObj = new Date(ano,mes,dia);
diaObj = dataObj.getDate();
mesObj = dataObj.getMonth();
anoObj = dataObj.getFullYear();
dataObj.setHours(0);
dataObj.setMinutes(0);
dataObj.setSeconds(0);
dataObj.setMilliseconds(0);
dataCorr = new Date();
diaCorr = dataCorr.getDate();
mesCorr = dataCorr.getMonth();
anoCorr = dataCorr.getFullYear();
dataCorr.setHours(0);
dataCorr.setMinutes(0);
dataCorr.setSeconds(0);
dataCorr.setMilliseconds(0);
data120 = new Date(anoCorr-120,mesCorr,diaCorr);
data120.setHours(0);
data120.setMinutes(0);
data120.setSeconds(0);
data120.setMilliseconds(0);
if( ( dataValor.length < 8 ) || (dia != diaObj) || (mes != mesObj) || (ano != anoObj) || (ano < 1753) )
return false;
/*
if(tipoTeste != null && tipoTeste != 'anterior' && tipoTeste != 'ult120anos' && tipoTeste != 'futura' && tipoTeste != 'anteriorOUigual' && tipoTeste != '2mesesMMAAAA' && tipoTeste != 'futuraOUigual') {
alert("parâmetro de teste de data inválido");
return false;
}
*/
switch (tipoTeste){
case 'anterior':{
if(dataObj >= dataCorr) {
return false; }
break; }
case 'ult120anos':{
if(dataObj < data120) {
return false; }
if(dataObj >= dataCorr) {
return false; }
break; }
case 'futura':{
if(dataObj <= dataCorr) {
return false; }
break; }
case 'futuraOUigual':{
if(dataObj < dataCorr) {
return false; }
break; }
case 'anteriorOUigual':{
if(dataObj > dataCorr) {
return false; }
break; }
case '2mesesMMAAAA':{
dia = '01';
dataObj = new Date(ano,mes,dia);
dataObj.setHours(0);
dataObj.setMinutes(0);
dataObj.setSeconds(0);
dataObj.setMilliseconds(0);
if( mesCorr >= 2) {mesCorr -= 2;} // mes a partir de março
else {
anoCorr -= 1;
if(mesCorr == 0){mesCorr = 10};
if(mesCorr == 1){mesCorr = 11};
}
data2meses = new Date(anoCorr,mesCorr,dia);
data2meses.setHours(0);
data2meses.setMinutes(0);
data2meses.setSeconds(0);
data2meses.setMilliseconds(0);
if(dataObj < data2meses) {
return false; }
break; }
}
return true;
}
function retornaValidaData(t_data) {
// Descrição: Recebe o value da data e retorna true se é data válida ou false caso contrário.
falhou = false;
t_data = limpaCampo(t_data);
dia = t_data.substr(0,2);
mes = t_data.substr(2,2) - 1;
ano = t_data.substr(4,4);
dataCorr = new Date();
dataObj  = new Date(ano,mes,dia);
diaObj = dataObj.getDate();
mesObj = dataObj.getMonth();
anoObj = dataObj.getFullYear();
if( ( t_data.length < 8 ) || (dia != diaObj) || (mes != mesObj) || (ano != anoObj) || (ano < 1753) || (ano > 3000) )
falhou = true;
if( falhou ) {
return false;
}
else
return true;
}
function retornaValidaDataMes(t_data) {
// Descrição: Recebe o value da data tipo 'MM/AAAA' e retorna true se é data válida ou false caso contrário.
if(t_data == ""){
return false;
}else{
falhou = false;
t_data = limpaCampo(t_data);
mes = t_data.substr(0,2) - 1;
ano = t_data.substr(2,6);
dataObj  = new Date(ano,mes,1);
diaObj = dataObj.getDate();
mesObj = dataObj.getMonth();
anoObj = dataObj.getFullYear();
if( ( t_data.length < 6 ) || (mes != mesObj) || (ano != anoObj) || (ano < 1753) || (ano > 3000))
falhou = true;
if( falhou ) {
return false;
}
else
return true;
}
return true;
}
function retornaValidaDataDiaMes(t_data) {
// Descrição: Recebe o value da data tipo 'DD/MM' e retorna true se é data válida ou false caso contrário.
if(t_data == ""){
return false;
}else{
falhou = false;
t_data = limpaCampo(t_data);
dataCorr = new Date();
dia = t_data.substr(0,2);
mes = t_data.substr(2,2) - 1;
ano = dataCorr.getFullYear();
dataObj  = new Date(ano,mes,dia);
diaObj = dataObj.getDate();
mesObj = dataObj.getMonth();
anoObj = dataObj.getFullYear();
if( ( t_data.length < 4 ) || (dia != diaObj) || (mes != mesObj) )
falhou = true;
if( falhou ) {
return false;
}
else
return true;
}
return true;
}
/*
* variavel que da um confirm
*/
var confirm40anos = false;
/*
* variavel que verifica se ja foi dados um submit
*/
var buscando = false;
/*
* variavel q verifica se há alguma validacao externa a ser feita
*/
var validacao = false;
/*
* Array com a flag para dizer se o campo é obrigatório ou não
*/
var isObrigatorios = new Array();
/*
* Array com os nomes dos campos a serem validados
*/
var obrigatorios = new Array();
/*
* Array com os nomes que apareceram no alert caso estejam invalidos
*/
var nomesObrigatorios = new Array();
/*
* Array com os tipos dos campos. ex: data, literal, cpf, etc...
*/
var tipoObrigatorios = new Array();
/**
* Variável que recebe o primeiro campo com erro. Esse campo receberá o foco após o alert.
* @author gabriel
*/
var colocaFocoPrimeiro;
/*
* Variável que recebe o primeiro campo inválido para colocar o foco na tela.
*/
var primeiro = false;
/*
*	Descrição : pega todos os campos contidos no array obrigatorios e os valida
*   a cada obrigatorio valida conforme o seu tipo. Se o campo não estiver correto
*	Uma mensagem contendo o nome do campo sera concatenada numa string, que ao final
*	será dado um alert com todos os campos inválidos.
*
*	Exemplo:
*		 isObrigatorios("sim","nao","nao","sim");
*		 obrigatorios("des_cli","cd_cli","nm_ger","dt_vencto");
*		 nomesObrigatorios("Descricao Cliente","Cód Cliente","Nome Gerente","Data Vencto");
*		 tipoObrigatorios("literal","numero","literal","data");
*
*	Retorno : String formatada com os campos inválidos
*
*/
function verificaObrigatorios(frm){
var msg = "";
testeIntervalo = false;
primeiro = false;
colocaFocoPrimeiro = "";
for(x=0;x<obrigatorios.length;x++){
aux = obrigatorios[x];
if(eval("document."+frm+"."+obrigatorios[x])){
aux2 = eval("document."+frm+"."+obrigatorios[x]+".value");
if(aux != undefined || aux != null){
if(tipoObrigatorios[x] != "radio"){
if(isObrigatorios[x] == 'sim'){
aux2 = trimWhiteSpaces(aux2);
if(aux2 == ""){
msg = msg + "O campo "+nomesObrigatorios[x]+" é obrigatório.\n";
emFocoObrigatorio(frm,x);
}
}
}
else{
if(isObrigatorios[x] == 'sim'){
tamRadio = eval("document."+frm+"."+obrigatorios[x]+".length");
checkado = false;
for(i=0;i<tamRadio;i++){
radio = eval("document."+frm+"."+obrigatorios[x]+"["+i+"].checked");
if(radio){
checkado = true;
i = tamRadio + 1;
}
}
if(!checkado){
msg = msg + "O campo "+nomesObrigatorios[x]+" é obrigatório.\n";
temp = obrigatorios[x];
obrigatorios[x] = obrigatorios[x]+"[0]";
emFocoObrigatorio(frm,x);
obrigatorios[x] = temp;
}
}
}
if(aux2 != null && aux2 != ""){ // se tiver algum valor em aux2, verifica se está de acordo com tipo
switch(tipoObrigatorios[x]){
case 'alfaNumero':{
for(i = 0; i < aux2.length;i++){
caract = aux2.substring(i,i+1).toLowerCase();
if(chrAlfaNumero.indexOf(caract) < 0){
msg = "O conteúdo " + nomesObrigatorios[x] + " é inválido.\n";
emFocoObrigatorio(frm,x);
break;
}
}
break;}
case 'alfaNumeroDuplo':{
for(i = 0; i < aux2.length;i++){
caract = aux2.substring(i,i+1);
if(chrAlfaNumero.indexOf(caract) < 0){
msg = msg + "Os valores dos campos "+ nomesObrigatorios[x-1] + " e " + nomesObrigatorios[x]+ " são inválidos.\n";
emFocoObrigatorio(frm,x);
break;
}
}
break;}
case 'calendario':{
if(!retornaValidaData(aux2)) {
msg = msg + "A data do campo "+nomesObrigatorios[x]+" é inválida.\n";
emFocoObrigatorio(frm,x);
}
break; }
case 'calendario_duplo':{
if(!retornaValidaData(aux2)) {
msg = msg + "A data do campo "+nomesObrigatorios[x]+" é inválida.\n";
emFocoObrigatorio(frm,x);
}
else{
if(testeIntervalo == false){
testeIntervalo = true;
}
else{
dtIni = eval("document."+frm+"."+obrigatorios[x-1]+".value");
dtFim = aux2;
if(mudaFormatoData(dtFim) - mudaFormatoData(dtIni) < 0){
msg = msg + "A Data Inicial do campo "+nomesObrigatorios[x-1]+" deve ser anterior ou igual à Data Final do período informado.\n";
emFocoObrigatorio(frm,x);
}
testeIntervalo = false;
}
}
break;}
case 'cep':{
if(!ChrCEP.test(aux2)){
msg = msg + "O valor do campo "+nomesObrigatorios[x]+" é inválido.\n";
emFocoObrigatorio(frm,x);
}
break;}
case 'cnpj':{
if(!validaCGC(aux2)){
msg = msg + "O valor do campo "+nomesObrigatorios[x]+" é inválido.\n";
emFocoObrigatorio(frm,x);
}
break;}
case 'conta':{
for(i = 0; i < aux2.length;i++){
caract = aux2.substring(i,i+1);
if(chrValidoConta.indexOf(caract) < 0){
msg = msg + "O valor do campo "+nomesObrigatorios[x]+" é inválido.\n";
emFocoObrigatorio(frm,x);
break;
}
}
break;}
case 'cpf':{
if(!validaCPF(aux2)){
msg = msg + "O valor do campo "+nomesObrigatorios[x]+" é inválido.\n";
emFocoObrigatorio(frm,x);
}
break;}
case 'cpfEcnpj':{
if(aux2.length < 15){
if(!validaCPF(aux2)){
msg = msg + "O valor do campo "+nomesObrigatorios[x]+" é inválido.\n";
emFocoObrigatorio(frm,x);
}
}
else{
if(!validaCGC(aux2)){
msg = msg + "O valor do campo "+nomesObrigatorios[x]+" é inválido.\n";
emFocoObrigatorio(frm,x);
}
}
break;}
case 'data':{
if(!retornaValidaData(aux2)) {
msg = msg + "A data do campo "+nomesObrigatorios[x]+" é inválida.\n";
emFocoObrigatorio(frm,x);
}
break; }
case 'dataDiaMes':{
if(!retornaValidaDataDiaMes(aux2)) {
msg = msg + "A data do campo "+nomesObrigatorios[x]+" é inválida.\n";
emFocoObrigatorio(frm,x);
}
break; }
case 'dataIntervalo':{
if(!retornaValidaData(aux2)) {
msg = msg + "A data do campo "+nomesObrigatorios[x]+" é inválida.\n";
emFocoObrigatorio(frm,x);
}
else{
if(testeIntervalo == false){
testeIntervalo = true;
}
else{
dtIni = eval("document."+frm+"."+obrigatorios[x-1]+".value");
dtFim = aux2;
if(mudaFormatoData(dtFim) - mudaFormatoData(dtIni) < 0){
msg = msg + "A Data Inicial do campo "+nomesObrigatorios[x-1]+" deve ser anterior ou igual à Data Final do período informado.\n";
emFocoObrigatorio(frm,x);
}
testeIntervalo = false;
}
}
break;}
case 'dataIntervaloMes':{
if(!retornaValidaDataMes(aux2)) {
msg = msg + "A data do campo "+nomesObrigatorios[x]+" é inválida.\n";
emFocoObrigatorio(frm,x);
}
else{
if(testeIntervalo == false){
testeIntervalo = true;
}
else{
dtIni = eval("document."+frm+"."+obrigatorios[x-1]+".value");
dtFim = aux2;
if(mudaFormatoDataMesAno(dtFim) - mudaFormatoDataMesAno(dtIni) < 0){
msg = msg + "A Data Inicial do campo "+nomesObrigatorios[x-1]+" deve ser anterior ou igual à Data Final do período informado.\n";
emFocoObrigatorio(frm,x);
}
testeIntervalo = false;
}
}
break;}
case 'dataDiaMesDuplo':{
if(!retornaValidaDataDiaMes(aux2)) {
msg = msg + "A data do campo "+nomesObrigatorios[x]+" é inválida.\n";
emFocoObrigatorio(frm,x);
}
else{
if(testeIntervalo == false){
testeIntervalo = true;
}
else{
dtIni = eval("document."+frm+"."+obrigatorios[x-1]+".value");
dtFim = aux2;
if(mudaFormatoDataDiaMes(dtFim) - mudaFormatoDataDiaMes(dtIni) < 0){
msg = msg + "A Data Inicial do campo "+nomesObrigatorios[x-1]+" deve ser anterior ou igual à Data Final do período informado.\n";
emFocoObrigatorio(frm,x);
}
testeIntervalo = false;
}
}
break;}
case 'dataMes':{
if(!retornaValidaDataMes(aux2)) {
msg = msg + "A data do campo "+nomesObrigatorios[x]+" é inválida.\n";
emFocoObrigatorio(frm,x);
}
break;}
case 'ddd':{
if (!ChrDDD.test(aux2)){
msg = msg + "O DDD do campo "+nomesObrigatorios[x]+" é inválido.\n";
emFocoObrigatorio(frm,x);
}
break}
case 'email':{
if (!ChrEmail.test(aux2)){
msg = msg + "O e-mail do campo "+nomesObrigatorios[x]+" é inválido.\n";
emFocoObrigatorio(frm,x);
}
break}
case 'inteiro':{
for(i = 0; i < aux2.length;i++){
caract = aux2.substring(i,i+1);
if(chrValidoDigito.indexOf(caract) < 0){
msg = msg + "O valor do campo "+nomesObrigatorios[x]+" é inválido.\n";
emFocoObrigatorio(frm,x);
break;
}
}
break;}
case 'inteiroNegativo':{
for(i = 0; i < aux2.length;i++){
caract = aux2.substring(i,i+1);
if(chrValidoDigitoNegativo.indexOf(caract) < 0){
msg = msg + "O valor do campo "+nomesObrigatorios[x]+" é inválido.\n";
emFocoObrigatorio(frm,x);
break;
}
}
break;}
case 'inteiroZero':{
str = aux2;
for(i=0;i<aux2.length;i++){
str = aux2.replace(",",".");
}
if(parseFloat(str) == 0){
msg = msg + "O valor do campo "+nomesObrigatorios[x]+" não pode ser igual à zero.\n";
emFocoObrigatorio(frm,x);
}else{
for(i = 0; i < aux2.length;i++){
caract = aux2.substring(i,i+1);
if(chrValidoDigito.indexOf(caract) < 0){
msg = msg + "O valor do campo "+nomesObrigatorios[x]+" é inválido.\n";
emFocoObrigatorio(frm,x);
break;
}
}
}
break;}
case 'inteiroUmZero':{
str = aux2;
for(i=0;i<aux2.length;i++){
str = aux2.replace(",",".");
}
if(parseFloat(str) == 0){
if (parseFloat(nomesObrigatorios[x-1]) == 0){
msg = msg + "Os valores dos campos "+ nomesObrigatorios[x-1] + " e " + nomesObrigatorios[x]+ " não podem ser iguais à zero.\n";
emFocoObrigatorio(frm,x);
}
}else{
for(i = 0; i < aux2.length;i++){
caract = aux2.substring(i,i+1);
if(chrValidoDigito.indexOf(caract) < 0){
msg = msg + "O valor do campo "+nomesObrigatorios[x]+" é inválido.\n";
emFocoObrigatorio(frm,x);
break;
}
}
}
break;}
case 'monetario':{
for(i=0;i<aux2.length;i++){
caract = aux2.substring(i,i+1);
if(chrValidoNumero.indexOf(caract) < 0){
msg = msg + "O valor do campo "+nomesObrigatorios[x]+" é inválido.\n";
emFocoObrigatorio(frm,x);
break;
}
}
break;}
case 'monetarioNegativo':{
for(i=0;i<aux.length;i++){
caract = aux.substring(i,i+1);
if(chrValidoMonetarioNegativo.indexOf(caract) < 0){
msg = "O conteúdo " + descricao + " é inválido.\n";
break;
}
}
break;}
case 'monetarioZero':{	// Campo Monetário que não permite zero
str = aux2;
for(i=0;i<aux2.length;i++){
str = aux2.replace(",",".");
}
if(parseFloat(str) == 0){
msg = msg + "O valor do campo "+nomesObrigatorios[x]+" não pode ser igual à zero.\n";
emFocoObrigatorio(frm,x);
}
else{
for(i=0;i<aux2.length;i++){
caract = aux2.substring(i,i+1);
if(chrValidoNumero.indexOf(caract) < 0){
msg = msg + "O valor do campo "+nomesObrigatorios[x]+" é inválido.\n";
emFocoObrigatorio(frm,x);
break;
}
}
}
break;}
case 'numero':{
for(i = 0; i < aux.length;i++){
caract = aux2.substring(i,i+1);
if(chrValidoNumero.indexOf(caract) < 0){
msg+= "O valor do campo "+nomesObrigatorios[x]+" é inválido.\n";
emFocoObrigatorio(frm,x);
break;
}
}
break;}
case 'numeroZero':{
str = aux2;
for(i=0;i<aux2.length;i++){
str = aux2.replace(",",".");
}
if(parseFloat(str) == 0){
msg = msg + "O valor do campo "+nomesObrigatorios[x]+" não pode ser igual à zero.\n";
emFocoObrigatorio(frm,x);
}else{
for(i=0;i<aux2.length;i++){
caract = aux2.substring(i,i+1);
if(chrValidoNumero.indexOf(caract) < 0){
msg = msg + "O valor do campo "+nomesObrigatorios[x]+" é inválido.\n";
emFocoObrigatorio(frm,x);
break;
}
}
}
break;}
case 'taxa':{
for(i=0;i<aux2.length;i++){
caract = aux2.substring(i,i+1);
if(chrValidoNumero2.indexOf(caract) < 0){
msg+= "O valor do campo "+nomesObrigatorios[x]+" é inválido.\n";
emFocoObrigatorio(frm,x);
break;
}
}
break;}
case 'telefone':{
if (!ChrFone.test(aux2)){
msg+= "O telefone do campo "+nomesObrigatorios[x]+" é inválido.\n";
emFocoObrigatorio(frm,x);
}
break}
}
}
}
}
}
return msg;
}
var testeIntervalo = false;
function validaTipos(campo,descricao,tipo,limite,campoCor){
var msg = "";
if(descricao != ""){
descricao = "do campo " + descricao;
}
else{
descricao = "deste campo";
}
aux = campo.value;
if(aux != ""){
switch(tipo){
case 'campoCor':{
invalido = true;
if(aux.length < 6 || aux.length > 7){
msg = "O conteúdo " + descricao + " é inválido.\n";
invalido = false;
}
else{
if(aux.length == 6){
for(i = 0; i < aux.length;i++){
caract = aux.substring(i,i+1);
if(chrValidoCor.indexOf(caract.toLowerCase()) < 0){
msg = "O conteúdo " + descricao + " é inválido.\n";
invalido = false;
break;
}
}
}
else if(aux.length == 7){
caract = aux.substring(0,1)
if(caract != "#"){
msg = "O conteúdo " + descricao + " é inválido.\n";
invalido = false;
break;
}
else{
for(i = 1; i < aux.length;i++){
caract = aux.charAt(i);
if(chrValidoCor.indexOf(caract.toLowerCase()) < 0){
msg = "O conteúdo " + descricao + " é inválido.\n";
invalido = false;
break;
}
}
}
}
}
if(!invalido){
campoCor.style.background = "#FFFFFF";
}else{
if(aux.length == 6){
campo.value = "#" + aux;
}
campoCor.style.background = aux;
}
break;}
case 'alfaNumero':{
for(i = 0; i < aux.length;i++){
caract = aux.substring(i,i+1).toLowerCase();
if(chrAlfaNumero.indexOf(caract) < 0){
msg = "O conteúdo " + descricao + " é inválido.\n";
break;
}
}
break;}
case 'cep':{
if(!ChrCEP.test(aux)){
msg = "O conteúdo " + descricao + " é inválido.\n";
}
break;}
case 'cnpj':{
if(!validaCGC(aux)){
msg = "O conteúdo " + descricao + " é inválido.\n";
}
break;}
case 'conta':{
for(i = 0; i < aux.length;i++){
caract = aux.substring(i,i+1);
if(chrValidoConta.indexOf(caract) < 0){
msg = "O conteúdo " + descricao + " é inválido.\n";
break;
}
}
break;}
case 'cpf':{
if(!validaCPF(aux)){
msg = "O conteúdo " + descricao + " é inválido.\n";
}
break;}
case 'cpfEcnpj':{
if(aux.length < 15){
if(!validaCPF(aux)){
msg = "O conteúdo " + descricao + " é inválido.\n";
}
}
else{
if(!validaCGC(aux)){
msg = "O conteúdo " + descricao + " é inválido.\n";
}
}
break;}
case 'data':{
if(!retornaValidaData(aux)){
msg = "O conteúdo " + descricao + " é inválido.\n";
}
break; }
case 'dataDiaMes':{
if(!retornaValidaDataDiaMes(aux)) {
msg = "O conteúdo " + descricao + " é inválido.\n";
}
break; }
case 'dataMes':{
if(!retornaValidaDataMes(aux)) {
msg = "O conteúdo " + descricao + " é inválido.\n";
}
break;}
case 'ddd':{
if (!ChrDDD.test(aux)){
msg = "O conteúdo " + descricao + " é inválido.\n";
}
break}
case 'email':{
if (!ChrEmail.test(aux)){
msg = "O conteúdo " + descricao + " é inválido.\n";
}
break}
case 'inteiro':{
for(i = 0; i < aux.length;i++){
caract = aux.substring(i,i+1);
if(chrValidoNumero.indexOf(caract) < 0){
msg = "O conteúdo " + descricao + " é inválido.\n";
break;
}
}
break;}
case 'inteiroNegativo':{
for(i = 0; i < aux.length;i++){
caract = aux.substring(i,i+1);
if(chrValidoDigitoNegativo.indexOf(caract) < 0){
msg = "O conteúdo " + descricao + " é inválido.\n";
break;
}
}
break;}
case 'monetario':{
for(i=0;i<aux.length;i++){
caract = aux.substring(i,i+1);
if(chrValidoNumero.indexOf(caract) < 0){
msg = "O conteúdo " + descricao + " é inválido.\n";
break;
}
}
break;}
case 'numero':{
for(i = 0; i < aux.length;i++){
caract = aux.substring(i,i+1);
if(chrValidoNumero.indexOf(caract) < 0){
msg = "O conteúdo " + descricao + " é inválido.\n";
break;
}
}
break;}
case 'taxa':{
for(i=0;i<aux.length;i++){
caract = aux.substring(i,i+1);
if(chrValidoNumero2.indexOf(caract) < 0){
msg = "O conteúdo " + descricao + " é inválido.\n";
break;
}
}
break;}
case 'telefone':{
if (!ChrFone.test(aux)){
msg = "O conteúdo " + descricao + " é inválido.\n";
}
break}
case 'texto':{
if(typeof(limite) != 'undefined' && limite != ''){
if(aux.length > limite){
msg = "O conteúdo " + descricao + " é inválido.\nO campo permite somente " + limite + " caracteres.";
}
}
break;}
}
if(msg != ""){
alert(msg);
campo.focus();
campo.select();
}
}
}
function emFocoObrigatorio(frm,x){
campo = eval("document."+frm+"."+obrigatorios[x]);
if(!primeiro){
if(campo.disabled != true && (campo.type).toUpperCase() != "HIDDEN"){
if((campo.type).toUpperCase() != "RADIO"){
colocaFocoPrimeiro = "document."+frm+"."+obrigatorios[x]+".focus();";
if((campo.type).toUpperCase() == "TEXT" && campo.value != ""){
colocaFocoPrimeiro+= "document."+frm+"."+obrigatorios[x]+".select();";
}
}
else if((campo.type).toUpperCase() == "RADIO"){
colocaFocoPrimeiro = "document."+frm+"."+obrigatorios[x]+".focus();";
}
primeiro = true;
}
}
/*	if((campo.type).toUpperCase() != "RADIO"){
emFoco(campo, "#FFC1C1");
}*/
}
var focoValida;
function emFocoValida(campo,frm){
if(!focoValida || campo.disabled != true){
if((campo.type).toUpperCase() != "HIDDEN"){
focoValida = true;
if(colocaFocoPrimeiro == ""){
if((campo.type).toUpperCase() != "RADIO"){
colocaFocoPrimeiro = "document." + frm + "." + campo.name + ".focus();";
if((campo.type).toUpperCase() == "TEXT" && campo.value != ""){
colocaFocoPrimeiro+= "document." + frm + "." + campo.name + ".select();";
}
}
else if((campo.type).toUpperCase() == "RADIO"){
colocaFocoPrimeiro = "document." + frm + "." + campo.name + "[0].focus();";
}
}
}
}
/*	if((campo.type).toUpperCase() != "RADIO"){
emFoco(campo, "#FFC1C1");
}*/
}
