<!--
/*
	A função abaixo valida um número de cnpj. São validados o tamanho do número,
	se este número possui caracteres não numéricos e se o cnpj fornecido é valido.
	Se é válido, retorna true, senão, retorna false.
	Ela devera ser inserida juntamente como o evento onblur, que permite a validação
	quando o campo de cnpj perde o foco.
	Exemplo de utilização:
	<input type="texto" name="cnpj" onblur="return checkCNPJ(this.value)">
*/	
function checkCNPJ(cnpj)
{	
	if( (cnpj.length > 14) || (cnpj.length < 14) ){				// Se não há 14 dígitos, 
		alert("A quantidade de dígitos (números) não é correta");	// emite alerta
		document.forms[0].elements['cnpj'].focus();			// foca no campo
		return false;								// retorna false
	}
	else if( cnpj.length == 14){				// Se há 14 dígitos		
		var c = new Array();				// cria um array que guardará os digitos		
		for(var i=0; i<14; i++){			// varre este array
			c[i] = parseInt( cnpj.charAt(i) );	// converte cada dígito em um inteiro
			if( isNaN(c[i]) ){			// se não é um número
				alert("Não são permitidos nenhum outro tipo de caracteres.\n\t Somente números.");
				document.forms[0].elements['cnpj'].focus();	// foca no campo
				return false;						// retorna falso
				break;							// pára o processamento
			}
		}
		var soma1 = 0;		// inicia variável soma1
		// Obtem a soma1 com o algoritmo do cnpj. cada dígito é multiplicado por um fator			
		var soma1 = (c[0]*5)+(c[1]*4)+(c[2]*3)+(c[3]*2)+(c[4]*9)+(c[5]*8)+(c[6]*7)+(c[7]*6)+(c[8]*5)+(c[9]*4)+(c[10]*3)+(c[11]*2);
		var resto =  soma1 % 11;		// toma o resto da divisão por 11
		var digito1 = resto < 2 ? 0 : (11 - resto);	// se menor que 2 volta 0, se não, volta 11-resto
		// Obtem a soma2 com o algoritmo do cnpj. cada dígito é multiplicado por um fator diferente de soma1
		var soma2 = (c[0]*6)+(c[1]*5)+(c[2]*4)+(c[3]*3)+(c[4]*2)+(c[5]*9)+(c[6]*8)+(c[7]*7)+(c[8]*6)+(c[9]*5)+(c[10]*4)+(c[11]*3)+(c[12]*2);
		resto = soma2 % 11;			// toma o resto da divisão por 11;
		var digito2 = resto < 2 ? 0 : (11 - resto);	// se menor que 2 volta 0, se não, volta 11-resto
		var check = (c[12] == digito1) && (c[13] == digito2);	// variável check que retorna verdadeiro ou falso
		if(check == true){	// se cnpj é válido
			return true;	// retorna true
		}
		else if(check == false){	// se não é válido
			alert('O CNPJ fornecido não é válido. Verifique suas informações para continuar');	// manda alerta
			document.forms[0].elements['cnpj'].focus();		// foca no campo de cnpj
			return false;							// retorna false
		}	
	}
	
}

/* Função checar valida campos de formulários. Para checar um determinado campo é necessário:
	Para campos que não podem ser vazios:
	1. escrever dois atributos dentro da tag que não pode ser vazia:
		- vazio="false"
		- nome = "nome que vc quer escolher para ser utilizado no alerta para o usuário"
	2. Para demais campos, basta escrever nome="campo", por exemplo:
		nome="email", será um campo de email que passará por validação típica de email.
*/
function checar(form){
			var f = document.forms[form];									// retorna o array do formulário enviado
			var quant = f.elements.length;									// guarda quantos campos existem (inclusive botões)
			for(var i=0; i<quant; i++){										// verificação de cada campo através de um loop for
				var ele = document.forms[form].elements[i];				// armazena cada item do formulário
						  if(ele.getAttribute('vazio') == 'false'){					// este item possuí atributo 'vazio'?
							if(ele.value == ""){									// este item esta vazio
							  var nome = ele.getAttribute('nome');					// guarda o atributo 'nome'
							  alert('O campo ' + nome + ' não pode ficar vazio');	// exibe um alerta amigável
							  ele.focus();											// foca no elemento que não pode ser nulo
							  return false;											// não permite o envio do formulário
							  break;												// finaliza processamento
							}
						  }
						 else if( (ele.getAttribute('email') == 'true') ){					// verifica se o campo é de email
							 var nome = ele.getAttribute('nome');
							 if(ele.value == ""){
								 alert('O campo ' + nome + ' não pode ficar vazio');
								ele.focus();												// foca no elemento	
								 return false;												// não permite o envio de formulário
								 break;	
							} 						
							else if(  (ele.value.indexOf("@") == -1) || (ele.value.indexOf(".") == -1) ){								// considera a existência de @ e ponto
								 alert('O campo ' + nome + ' não é válido. Digite novamente');
								 ele.focus();												// foca no elemento	
								 return false;												// não permite o envio de formulário
								 break;														// finaliza processamento da função					
							}
							
						 }
						 else if(ele.getAttribute('name') == 'conf_senha'){
							 var nome = ele.getAttribute('nome');						 
							 if(ele.value == ""){
							 	alert('O campo ' + nome + ' não pode ficar vazio');
								ele.focus();												// foca no elemento	
								return false;												// não permite o envio de formulário
	 							break;
							 }
							 else if( confirmPass('senha','conf_senha',form) != true ){
							 	alert('Senhas não conferem. Favor redigitar');
								var passfield = document.forms[form].elements['senha'];
								passfield.focus();
								return false;
								break;
							 }
							 
						 
						 }
						
			 }
}

/* A função abaixo verifica a senha digitada e a confirmação de senha.
   Se ambas estiverem iguais, o formulário é submetido. Se não, é enviado um alert
   que as senhas são diferentes, foca na primeira senha e requisita nova digitação.
*/
function confirmPass(pass1,pass2,form){
	var vpass1 = document.forms[form].elements[pass1].value;	// obtem senha
	var vpass2 = document.forms[form].elements[pass2].value;	// obtem confirmação de senha
	if(vpass1 == vpass2){return true; }	 						// se as duas senhas são iguais retorna true
	else{														// se não são iguais
		document.forms[form].elements[pass1].value = "";		// limpa senha
		document.forms[form].elements[pass2].value = "";		// limpa confirmação de senha
		return false;											// retorna false
	}
}
//-->