/***
	FUNÇÕES JAVA SCRIPT UTILIZADAS NO FORMULÁRIO DE INSCRIÇÕES
***/

//Função que percorre todos os elementos (campos) do form enviado por parâmetro e verifica seu conteúdo.
//Esta função é utilizada para os formulários presentes no index.php e para o formulário de envio de Críticas e sugestões
function testeSubmit(form){
	//nro de elementos do formulário para percorrê-lo.
	nroelem = form.elements.length;

	for (i=0; i<nroelem; i++){
		
		if (form.elements[i].id == 'nmInscrito'){
			val = form.elements[i].value;
			if ( val == "" ){
				mostraMsgErro('O campo Nome Completo deve ser preenchido.')
				form.elements[i].focus();
				form.elements[i].select();
				form.elements[i].style.backgroundColor = "#F76A78";
				return false;
			} else {
				form.elements[i].style.backgroundColor = "#FFFFFF";
			}
		}
		
		if (form.elements[i].id == 'dtNascimento'){
			val = form.elements[i].value;
			reDigits = /^((0[1-9]|[12]\d)\/(0[1-9]|1[0-2])|30\/(0[13-9]|1[0-2])|31\/(0[13578]|1[02]))\/\d{4}$/; 							            //expressão regular para dia/mes/ano dd/mm/aaaa
			if ( !reDigits.test(val) ){
				mostraMsgErro('O campo Data de Nascimento foi digitado incorretamente.')
				form.elements[i].focus();
				form.elements[i].select();
				form.elements[i].style.backgroundColor = "#F76A78";
				return false;
			} else {
				form.elements[i].style.backgroundColor = "#FFFFFF";
			}
		}
		
		if (form.elements[i].id == 'nmPai'){
			val = form.elements[i].value;
			if ( val == "" ){
				mostraMsgErro('O campo Nome do Pai deve ser preenchido.')
				form.elements[i].focus();
				form.elements[i].select();
				form.elements[i].style.backgroundColor = "#F76A78";
				return false;
			} else {
				form.elements[i].style.backgroundColor = "#FFFFFF";
			}
		}
		
		if (form.elements[i].id == 'nmMae'){
			val = form.elements[i].value;
			if ( val == "" ){
				mostraMsgErro('O campo Nome da Mãe deve ser preenchido.')
				form.elements[i].focus();
				form.elements[i].select();
				form.elements[i].style.backgroundColor = "#F76A78";
				return false;
			} else {
				form.elements[i].style.backgroundColor = "#FFFFFF";
			}
		}
		
		if (form.elements[i].id == 'nrRG'){
			val = form.elements[i].value;
			reRG = /^[0-9]{5,10}$/;
			if (!reRG.test(val)){
				mostraMsgErro('O campo RG não foi preenchido corretamente (utilize apenas números e um mínimo de 5 caracteres).')
				form.elements[i].focus();
				form.elements[i].select();
				form.elements[i].style.backgroundColor = "#F76A78";
				return false;
			} else {
				form.elements[i].style.backgroundColor = "#FFFFFF";
			}
		}
		
		if (form.elements[i].id == 'nrCPF'){
			val = form.elements[i].value;

			if (!isCpf(val)){			
				mostraMsgErro('O campo CPF não foi preenchido corretamente (utilize apenas números).')
				form.elements[i].focus();
				form.elements[i].select();
				form.elements[i].style.backgroundColor = "#F76A78";
				return false;
			} else {
				form.elements[i].style.backgroundColor = "#FFFFFF";
			}			
		}
		
		if (form.elements[i].id == 'nrCEP'){
			val = form.elements[i].value;
			if ( !isCEP(val) ){
				mostraMsgErro('O campo CEP deve ser preenchido no formato 11111-11.')
				form.elements[i].focus();
				form.elements[i].select();
				form.elements[i].style.backgroundColor = "#F76A78";
				return false;
			} else {
				form.elements[i].style.backgroundColor = "#FFFFFF";
			}
		}
		
		if (form.elements[i].id == 'nmLogradouro'){
			val = form.elements[i].value;
			if ( val == "" ){
				mostraMsgErro('O campo Logradouro deve ser preenchido.')
				form.elements[i].focus();
				form.elements[i].select();
				form.elements[i].style.backgroundColor = "#F76A78";
				return false;
			} else {
				form.elements[i].style.backgroundColor = "#FFFFFF";
			}
		}
		
		if (form.elements[i].id == 'nrLogradouro'){
			val = form.elements[i].value;
			reRG = /^[0-9]{1,8}$/;
			if (!reRG.test(val)){
				mostraMsgErro('O campo Número do Logradouro não foi preenchido corretamente (utilize apenas números).')
				form.elements[i].focus();
				form.elements[i].select();
				form.elements[i].style.backgroundColor = "#F76A78";
				return false;
			} else {
				form.elements[i].style.backgroundColor = "#FFFFFF";
			}
		}
		
		if (form.elements[i].id == 'slEstado'){
			val = form.elements[i].value;
			if (val == 0){
				mostraMsgErro('Informe seu Estado')
				form.elements[i].focus();
				form.elements[i].style.backgroundColor = "#F76A78";
				return false;
			} else {
				form.elements[i].style.backgroundColor = "#FFFFFF";
			}
		}
		
		if (form.elements[i].id == 'slCidade'){
			val = form.elements[i].value;
			if (val == 0){
				mostraMsgErro('Informe sua Cidade')
				form.elements[i].focus();
				form.elements[i].style.backgroundColor = "#F76A78";
				return false;
			} else {
				form.elements[i].style.backgroundColor = "#FFFFFF";
			}
		}
		
		if (form.elements[i].id == 'nrDDD'){
			val = form.elements[i].value;
			reDDD = /^[0-9]{2}$/;
			if (!reDDD.test(val)){
				mostraMsgErro('O campo DDD foi digitado incorretamente.')
				form.elements[i].focus();
				form.elements[i].select();
				form.elements[i].style.backgroundColor = "#F76A78";
				return false;
			} else {
				form.elements[i].style.backgroundColor = "#FFFFFF";
			}
		}
		
		if (form.elements[i].id == 'nrTelefone'){
			val = form.elements[i].value;
			reTelefone = /^[0-9]{8}$/;
			if (!reTelefone.test(val)){
				mostraMsgErro('O campo Telefone foi digitado incorretamente.')
				form.elements[i].focus();
				form.elements[i].select();
				form.elements[i].style.backgroundColor = "#F76A78";
				return false;
			} else {
				form.elements[i].style.backgroundColor = "#FFFFFF";
			}
		}
		
		if (form.elements[i].id == 'dsEmail'){
			val = form.elements[i].value;
			reEmail = /^[\w-]+(\.[\w-]+)*@(([A-Za-z\d][A-Za-z\d-]{0,61}[A-Za-z\d]\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;
			if ( !reEmail.test(val) ){
				mostraMsgErro('O campo Email foi digitado incorretamente.')
				form.elements[i].focus();
				form.elements[i].select();
				form.elements[i].style.backgroundColor = "#F76A78";
				return false;			  
			} else {
				form.elements[i].style.backgroundColor = "#FFFFFF";
			}
		}
		
		if (form.elements[i].id == 'slEscolaridade'){
			val = form.elements[i].value;
			if (val == 0){
				mostraMsgErro('Informe sua Escolaridade')
				form.elements[i].focus();
				form.elements[i].style.backgroundColor = "#F76A78";
				return false;
			} else {
				form.elements[i].style.backgroundColor = "#FFFFFF";
			}
		}
				
		if (form.elements[i].id == 'dsAtividadesRelacionadas'){
			val = form.elements[i].value;
			if ( val == "" ){
				mostraMsgErro('O campo Atividades Relacionadas deve ser preenchido.')
				form.elements[i].focus();
				form.elements[i].select();
				form.elements[i].style.backgroundColor = "#F76A78";
				return false;
			} else {
				form.elements[i].style.backgroundColor = "#FFFFFF";
			}
		}
		
		if (form.elements[i].id == 'nrInscricaoOrgao'){
			val = form.elements[i].value;
			if ( val == "" ){
				mostraMsgErro('O campo Nº do Registro deve ser preenchido.')
				form.elements[i].focus();
				form.elements[i].select();
				form.elements[i].style.backgroundColor = "#F76A78";
				return false;
			} else {
				form.elements[i].style.backgroundColor = "#FFFFFF";
			}
		}
		
		if (form.elements[i].id == 'slTipoSocio'){
			val = form.elements[i].value;
			if (val == 0){
				mostraMsgErro('Informe o Tipo de Sócio que você deseja ser.')
				form.elements[i].focus();
				form.elements[i].style.backgroundColor = "#F76A78";
				return false;
			} else {
				form.elements[i].style.backgroundColor = "#FFFFFF";
			}
		}
			
	}
	
	return true;
}

//Função que verifica se a string passada por parâmetro possui o formato de um CEP
function isCEP(strCEP) {
	var objER = /^[0-9]{5}-[0-9]{3}$/;
	if(strCEP.length > 0) {
		if(objER.test(strCEP)) {
			return true;
		} else {
			return false;
		}
	} else {
	  return false;
	}
}

/**************************** INÍCIO VALIDAÇÕES CPF ****************************/

NUM_DIGITOS_CPF  = 11;
NUM_DIGITOS_CNPJ = 14;
NUM_DGT_CNPJ_BASE = 8;


/**
 * Adiciona mtodo lpad()  classe String.
 * Preenche a String  esquerda com o caractere fornecido,
 * at que ela atinja o tamanho especificado.
 */
String.prototype.lpad = function(pSize, pCharPad)
{
	var str = this;
	var dif = pSize - str.length;
	var ch = String(pCharPad).charAt(0);
	for (; dif>0; dif--) str = ch + str;
	return (str);
} //String.lpad


/**
 * Adiciona mtodo trim()  classe String.
 * Elimina brancos no incio e fim da String.
 */
String.prototype.trim = function()
{
	return this.replace(/^\s*/, "").replace(/\s*$/, "");
} //String.trim


/**
 * Elimina caracteres de formatao e zeros  esquerda da string
 * de nmero fornecida.
 * @param String pNum
 * 	String de nmero fornecida para ser desformatada.
 * @return String de nmero desformatada.
 */
function unformatNumber(pNum)
{
	return String(pNum).replace(/\D/g, "").replace(/^0+/, "");
} //unformatNumber


/**
 * Formata a string fornecida como CNPJ ou CPF, adicionando zeros
 *  esquerda se necessrio e caracteres separadores, conforme solicitado.
 * @param String pCpfCnpj
 * 	String fornecida para ser formatada.
 * @param boolean pUseSepar
 * 	Indica se devem ser usados caracteres separadores (. - /).
 * @param boolean pIsCnpj
 * 	Indica se a string fornecida  um CNPJ.
 * 	Caso contrrio,  CPF. Default = false (CPF).
 * @return String de CPF ou CNPJ devidamente formatada.

 */
function formatCpfCnpj(pCpfCnpj, pUseSepar, pIsCnpj)
{
	if (pIsCnpj==null) pIsCnpj = false;
	if (pUseSepar==null) pUseSepar = true;
	var maxDigitos = pIsCnpj? NUM_DIGITOS_CNPJ: NUM_DIGITOS_CPF;
	var numero = unformatNumber(pCpfCnpj);

	numero = numero.lpad(maxDigitos, '0');
	if (!pUseSepar) return numero;

	if (pIsCnpj)
	{
		reCnpj = /(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})$/;
		numero = numero.replace(reCnpj, "$1.$2.$3/$4-$5");
	}
	else
	{
		reCpf  = /(\d{3})(\d{3})(\d{3})(\d{2})$/;
		numero = numero.replace(reCpf, "$1.$2.$3-$4");
	}
	return numero;
} //formatCpfCnpj


/**
 * Calcula os 2 dgitos verificadores para o nmero-efetivo pEfetivo de
 * CNPJ (12 dgitos) ou CPF (9 dgitos) fornecido. pIsCnpj  booleano e
 * informa se o nmero-efetivo fornecido  CNPJ (default = false).
 * @param String pEfetivo
 * 	String do nmero-efetivo (SEM dgitos verificadores) de CNPJ ou CPF.
 * @param boolean pIsCnpj
 * 	Indica se a string fornecida  de um CNPJ.
 * 	Caso contrrio,  CPF. Default = false (CPF).
 * @return String com os dois dgitos verificadores.
 */
function dvCpfCnpj(pEfetivo, pIsCnpj)
{
	if (pIsCnpj==null) pIsCnpj = false;
	var i, j, k, soma, dv;
	var cicloPeso = pIsCnpj? NUM_DGT_CNPJ_BASE: NUM_DIGITOS_CPF;
	var maxDigitos = pIsCnpj? NUM_DIGITOS_CNPJ: NUM_DIGITOS_CPF;
	var calculado = formatCpfCnpj(pEfetivo, false, pIsCnpj);
	calculado = calculado.substring(2, maxDigitos);
	var result = "";

	for (j = 1; j <= 2; j++)
	{
		k = 2;
		soma = 0;
		for (i = calculado.length-1; i >= 0; i--)
		{
			soma += (calculado.charAt(i) - '0') * k;
			k = (k-1) % cicloPeso + 2;
		}
		dv = 11 - soma % 11;
		if (dv > 9) dv = 0;
		calculado += dv;
		result += dv
	}

	return result;
} //dvCpfCnpj


/**
 * Testa se a String pCpf fornecida  um CPF vlido.
 * Qualquer formatao que no seja algarismos  desconsiderada.
 * @param String pCpf
 * 	String fornecida para ser testada.
 * @return <code>true</code> se a String fornecida for um CPF vlido.
 */
function isCpf(pCpf)
{
	var numero = formatCpfCnpj(pCpf, false, false);
	var base = numero.substring(0, numero.length - 2);
	var digitos = dvCpfCnpj(base, false);
	var algUnico, i;

	// Valida dgitos verificadores
	if (numero != base + digitos) return false;

	/* No sero considerados vlidos os seguintes CPF:
	 * 000.000.000-00, 111.111.111-11, 222.222.222-22, 333.333.333-33, 444.444.444-44,
	 * 555.555.555-55, 666.666.666-66, 777.777.777-77, 888.888.888-88, 999.999.999-99.
	 */
	algUnico = true;
	for (i=1; i<NUM_DIGITOS_CPF; i++)
	{
		algUnico = algUnico && (numero.charAt(i-1) == numero.charAt(i));
	}
	return (!algUnico);
} //isCpf

/**************************** FIM VALIDAÇÕES CPF ****************************/

//Função que exibe uma mensagem no topo da página index.php
function mostraMsgOk(msg) {
	
	var layer = document.getElementById("divMsgErro")
	layer.innerHTML = '&nbsp;';
	var layer = document.getElementById("divMsgOk")
	layer.innerHTML = msg;
}

//Função que exibe uma mensagem no topo da página index.php
function mostraMsgErro(msg) {
	
	var layer = document.getElementById("divMsgOk")
	layer.innerHTML = '&nbsp;';
	var layer = document.getElementById("divMsgErro")
	layer.innerHTML = msg;
}
 
// Função que auto completa as barras "/" enquanto o usuário digita a data
function completaData(obj, teclapres){
	var tecla = teclapres.keyCode;
	var valor = obj.value;
	var tamanho = valor.length;
	
	if (tecla != 8) {
		if((tamanho == 2) || (tamanho == 5)){
			document.getElementById(obj.id).value = valor + "/";
		}
	}
}

/* Função que formata o campo CPF */
function completaCPF(Campo, teclapres){
	
	var tecla = teclapres.keyCode;
	
	var vr = new String(Campo.value);
	vr = vr.replace(".", "");
	vr = vr.replace(".", "");
	vr = vr.replace(".", "");
	vr = vr.replace("/", "");
	vr = vr.replace("-", "");
	
	tam = vr.length + 1 ;
	
	if (tecla != 9 && tecla != 8){
		if (tam >= 10 && tam < 12) {
			Campo.value = vr.substr(0,3) + '.' + vr.substr(3,3) + '.' + vr.substr(6,3) + '-' + vr.substr(9,tam-9);
		} else if (tam >= 7 && tam < 10) {
			Campo.value = vr.substr(0,3) + '.' + vr.substr(3,3) + '.' + vr.substr(6,tam-6);
		} else if (tam > 3 && tam < 7) {
			Campo.value = vr.substr(0, 3) + '.' + vr.substr(3, tam);
		}
	}		
}

//Função que completa automaticamente o "hífen" do campo CEP
function completaCEP(obj){
	var valor = obj.value;
	var tamanho = valor.length;
	
	//Remove qualquer caracter que não seja número ou hífen
	valor = valor.replace(new RegExp('[^0-9-]','gi'), '');
	obj.value = valor;
	
	if(tamanho == 5){
		obj.value = valor + "-";
	}
}

//Função que remove qualquer caracter diferente de dígito (número)
function apenasNumeros (obj) {                                                                  
    var valor = obj.value;
	
	valor = valor.replace(new RegExp('[^0-9]','gi'), '');
	obj.value = valor;	
}

//Função que completa as informações digitadas pelo usuário
function recuperaDadosFormularioInscricao (val1, val2, val3, val4, val5, val6, val7, val8, val9, val10, val11, val12, val13, val14, val15, val16, val17, val18, val19) {
	
	document.getElementById("nmInscrito").value = val1;
	document.getElementById("dtNascimento").value = val2;
	document.getElementById("nmPai").value = val3;
	document.getElementById("nmMae").value = val4;
	document.getElementById("nrRG").value = val5;
	document.getElementById("nrCPF").value = val6;
	document.getElementById("nrCEP").value = val7;
	document.getElementById("nmLogradouro").value = val8;
	document.getElementById("nrLogradouro").value = val9;
	document.getElementById("dsComplemento").value = val10;

	for(x=0;x<document.getElementById('slEstado').options.length;x++) {
		if(document.getElementById('slEstado').options[x].value == val11) {
			document.getElementById('slEstado').options[x].selected = true;
		} 
	}
	
	for(x=0;x<document.getElementById('slCidade').options.length;x++) {
		if(document.getElementById('slCidade').options[x].value == val12) {
			document.getElementById('slCidade').options[x].selected = true;
		} 
	}
	
	document.getElementById("nrDDD").value = val13;
	document.getElementById("nrTelefone").value = val14;
	document.getElementById("dsEmail").value = val15;
	
	for(x=0;x<document.getElementById('slEscolaridade').options.length;x++) {
		if(document.getElementById('slEscolaridade').options[x].value == val16) {
			document.getElementById('slEscolaridade').options[x].selected = true;
		} 
	}
	
	document.getElementById("dsAtividadesRelacionadas").value = val17;
	document.getElementById("nrInscricaoOrgao").value = val18;
	
	for(x=0;x<document.getElementById('slTipoSocio').options.length;x++) {
		if(document.getElementById('slTipoSocio').options[x].value == val19) {
			document.getElementById('slTipoSocio').options[x].selected = true;
		} 
	}
}

function selecionaEstadoCidade(){
	//Select Estados
	var select_estado = document.getElementById('slEstado');
	var selecionado = select_estado.options.selectedIndex;
	
	//Select Cidades
	var select_cidade = document.getElementById('slCidade');
	var opcoes_disponiveis = select_cidade.options.length;
	
	for(x=0;x<opcoes_disponiveis;x++) {
		if(select_estado.options[selecionado].id == select_cidade.options[x].id) {
			select_cidade.options[x].style.display = '';
		} else if (select_estado.options[selecionado].id == '0'){
			select_cidade.options[x].style.display = '';
		} else {
			select_cidade.options[x].style.display = 'none';
			//select_cidade.options[x].disabled;
		}
	}
	select_cidade.options[0].selected = true;
}
