
/*
#############################################################################################################
Padrão de Preenchimento

Os campos que serão validados devem ter o id com a seguinte estrutura

id="campo_validaXY"

X =  tipo de dados a ser validado, este que pode ser:
t: texto qualquer
d: numérico decimal
i: numérico inteiro
e: e-mail
c: cpf
p: senha
a: data

Y = tipo de dados obrigatório ou não obrigatório, este que pode ser:
R: obrigatorio
N: não obrigatorio

Cada campo deve ter sua respectiva DIV, onde será apresentada a mensagem de erro daquele campo
deve ter o id igual ao nome do campo mais "_msg"
<div id="campo_validaXY_msg">

padrão de preenchimento do campo senha (seguindo letras maiúsculas e minúsculas)
senha1_PR
senha2_PR
ou
senha1_PN
senha2_PN



#############################################################################################################
*/

 
function validaCPF(cpf) {
		valor = true;
		erro = "";
		if (cpf.length < 11) erro += "Sao necessarios 11 digitos para verificacao do CPF! \n\n"; 
		var nonNumbers = /\D/;
		if (nonNumbers.test(cpf)) erro += "A verificacao de CPF suporta apenas numeros! \n\n";	
		if (cpf == "00000000000" || cpf == "11111111111" || cpf == "22222222222" || cpf == "33333333333" || cpf == "44444444444" || cpf == "55555555555" || cpf == "66666666666" || cpf == "77777777777" || cpf == "88888888888" || cpf == "99999999999"){
			  erro += "Numero de CPF invalido!"
		}
		var a = [];
		var b = new Number;
		var c = 11;
		for (z=0; z<11; z++){
			a[z] = cpf.charAt(z);
			if (z < 9) b += (a[z] *  --c);
		}
		if ((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11-x }
		b = 0;
		c = 11;
		for (y=0; y<10; y++) b += (a[y] *  c--); 
		if ((x = b % 11) < 2) { a[10] = 0; } else { a[10] = 11-x; }
		if ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10])){
			erro +="Digito verificador com problema!";
		}

		return erro;
	}
	
function verifica(NomeForm) {
	
	var campo;
	var form;
	var errocampo;
	var id;
	
	form = eval('document.' + NomeForm);
	erroGeral = 0;
	
	//alert(form.name);
	
	//alert(form.elements.length);
	
	//limpa todas a div´s de mensagem
	for(i=0; i< form.elements.length ; i++){
		
		if((form.elements[i].type == 'text') || (form.elements[i].type == 'textarea') || (form.elements[i].type == 'password')){
		//alert((form.elements[i].name));
		//alert('document.all.' + form.elements[i].id + '_msg');
			campo = eval('document.all.' + form.elements[i].id + '_msg');
			campo.innerHTML = '';
		}
	}

	//verifica cada campo
	for(i=0; i< form.elements.length ; i++){
	
		
	if((form.elements[i].type == 'text') || (form.elements[i].type == 'textarea') || (form.elements[i].type == 'password')){
	
		errocampo = 0;
	
		valor = form.elements[i].id
		
		Requerido = valor.substring(valor.length - 1,valor.length);
		Requerido = Requerido.toLowerCase();
		TipoValidacao = valor.substring(valor.length - 2,valor.length - 1);
		TipoValidacao = TipoValidacao.toLowerCase();
	
		campo = form.elements[i]
		valor = campo.value;
		msg = eval('document.all.' + campo.id + '_msg');
	
		
		//alert('valor = '+ valor + '\n r = ' + Requerido + '\n tipo = ' + TipoValidacao);
		
		//verifica caracteres inválidos
		//CaracteresInvalidos = '* < > | & %';
		CaracteresInvalidos = '* |';
		vCaracInv = CaracteresInvalidos.split(" ");
			//alert(valor);
			for(q=0;q < vCaracInv.length ; q++){
				//alert(vCaracInv[i] + '---C');
				for(j=0;j<valor.length;j++){
					//alert( vCaracInv[q] + " = " + valor.substring(j,j+1));
					if(vCaracInv[q] == valor.substring(j,j+1)){
						msg.innerHTML = "Caractere Inválido: ( "+CaracteresInvalidos+" )";
						errocampo = 1;
					}
				}
			}
	
	
		if((Requerido=='r') && (valor =="" || valor == null)){
				//caso seja campo do tipo senha exibir apenas uma mensagem
				if(TipoValidacao == 'p'){
					msg = eval('document.all.' + campo.id.substring(0,campo.id.length-4) + '1_P'+ Requerido.toUpperCase() + '_msg');
				}
				msg.innerHTML = 'Preenchimento Obrigatório';
				errocampo = 1;
		}else if(valor !="" ) {
		//alert(TipoValidacao);
				switch(TipoValidacao){
				case 't':
						break;
				case 'd':
						if(isNaN(valor.replace(",",".")) == true){
							msg.innerHTML = 'O Valor deve ser numérico';
							errocampo = 1;
						}
						break;
				case 'i':
						if(isNaN(valor.replace(",",".")) != true){
							if(valor.search(/,/g) > -1){
								msg.innerHTML = 'O Valor deve ser numérico Inteiro';
								errocampo = 1;
							}
						}else{
							msg.innerHTML = 'O Valor deve ser numérico';
							errocampo = 1;
						}
						break;
				case 'e':
							if((valor.search(/@/g) == -1) || (valor.search(/./g) == -1) || (valor.length < 5)){
								msg.innerHTML = 'Endereço de e-mail inválido';
								errocampo = 1;
							}
						break;
				case 'c':
							if(validaCPF(valor) != ""){
								msg.innerHTML = 'CPF inválido, digite apenas números';
								errocampo = 1;
							}
							break;
				case 'p':
						Valor1 = eval('form1.' + campo.id.substring(0,campo.id.length-4) + '1_P'+ Requerido.toUpperCase() +'.value');
						Valor2 = eval('form1.' + campo.id.substring(0,campo.id.length-4) + '2_P'+ Requerido.toUpperCase() +'.value');
						
						msg = eval('document.all.' + campo.id.substring(0,campo.id.length-4) + '1_P'+ Requerido.toUpperCase() + '_msg');
						
						//alert(Valor1 + "!=" + Valor2);
						//alert("\n msg :" + msg);
										
						if((Valor1 == "" || Valor1 == null) || (Valor2 == "" || Valor2 == null)){
							msg.innerHTML = "Preenchimento Obrigatório de ambos os campos";
							errocampo = 1;
						}else{
							if(Valor1 != Valor2){
								msg.innerHTML = "As senhas não são iguais";
								errocampo = 1;
							}
							else{
								msg.innerHTML = "";
								}
						}
						break;
				
				case 'a':
					barras = valor.split("/");
					if (barras.length == 3){
						dia = barras[0];
						mes = barras[1];
						ano = barras[2];
						resultado = (!isNaN(dia) && (dia > 0) && (dia < 32)) && (!isNaN(mes) && (mes > 0) && (mes < 13)) && (!isNaN(ano) && (ano.length == 4));
						if (!resultado) {
							msg.innerHTML = "Formato de data inválido (dd/mm/aaaa)";
							errocampo = 1;
						}
					} else {
						msg.innerHTML = "Formato de data inválido (dd/mm/aaaa)";
						errocampo = 1;
					}
					break;
				}
			}
		}
		
		//alert(campo.id + ' - ' +errocampo);
		if(errocampo == 1){
			erroGeral = 1;
			campo.className = 'Form_Erro'; 
		}
		else{
			campo.className = 'Form'; 
		}
	}

	//alert('Erro Geral: ' + erroGeral);
	if(erroGeral == 1) {
		alert('Existem campos preenchidos incorretamente. Por favor verifique.');
		return false; 
	}
	else{
		return true;
		} 
} 

