//****************************************************************************
//Autor: Rodrigo Costa Cmargos
//Programa: validaForm(Form)
//Descrição: Valida valores de acordo com o tipo
//Data: 01/12/2003
//Versão: 1.0
//****************************************************************************



//======================Função de validação de dados====================================================		


		//Função que faz validação dos valores do campo de acordo com seu tipo
		//Esta função pode ser chamada por uma função de validação de formulário no evento onSubmit
		//ou pode ser chamada diretamente pelo evento onBlur do controle relacionado
		//Retorna false caso a condição não seja satisfeita

		function checaCampo(campo, tipo, nulo){
		


			//tipo = N -> Tipo Numérico
			//tipo = S -> Tipo String
			//tipo = CPF -> Tipo CPF
			//tipo = PIS -> Tipo PIS
			//tipo = SX -> Tipo sexo
			//tipo = EC -> Tipo estado civil
			//tipo = RDP -> Relação de dependência do beneficiário
			//tipo = GDP -> Grau de dependência do beneficiário
			//tipo = EMAIL ->Valida email
			//nulo = S -> Permite campo ser nulo
			//nulo = N -> Não permite campo nulo



			//executa uma ação após a validação do campo

			function acaoPosValidacao()
			{
				alert("Conteúdo inválido para este campo !");
				campo.value = "";
				campo.focus();  
			}

			

			//==========Valida valor nulo================

			if (nulo == 'N') {
			
				if(campo.value.length == 0) {

					return false
				}
			}


			//==========Valida String=============

			if(tipo == 'S'){

				if (campo.value.length > 0)
				{

					if((campo.value.search("'") != -1) || (campo.value.search("\"") != -1)){
					
						acaoPosValidacao()
						return false;
					}

				}
			
			
			}

			
			
			//==========Valida valor numérico=============

			if(tipo == 'N'){
			
				if (campo.value.length > 0)
				{

						if(isNaN(campo.value)){
						
							acaoPosValidacao()

							return false;
						}

				}
			
			}


			//==========Valida Email=============

			if(tipo == 'EMAIL'){

				if (campo.value.length > 0)
				{

					if(campo.value.search("@") == -1){
					
						acaoPosValidacao()
						return false;
					}

				}
			
			
			}


			//==========Valida sexo=============


			if (tipo == "SX")

			{

				if (campo.value.length > 0)
				{

					if ((campo.value != "M") && (campo.value != "m") && (campo.value != "F") && (campo.value != "f"))
					{
						acaoPosValidacao()
						return false;

					}
					else
					{
						var vSexo = campo.value;
						campo.value = vSexo.toUpperCase();
					}


				}


			}

		//============Valida Estado Civil====================

			if (tipo == "EC")

			{
				if (campo.value.length > 0)
				{

					if ((campo.value != "I") && (campo.value != "i") && (campo.value != "M") && (campo.value != "m") && (campo.value != "D") && (campo.value != "d") && (campo.value != "A") && (campo.value != "a") && (campo.value != "S") && (campo.value != "s") && (campo.value != "W") && (campo.value != "w"))
					{

						acaoPosValidacao()
						return false;

					}
					else
					{
						var vEstadoCivil = campo.value;
						campo.value = vEstadoCivil.toUpperCase();
					}

				}


			}



		//============Valida RDP====================


			if (tipo == 'RDP')
			{

				if (campo.value.length > 0)
				{

					if ((parseInt(campo.value) == "00") || (parseInt(campo.value) == "01") || (parseInt(campo.value) == "02") || (parseInt(campo.value) == "09") || (parseInt(campo.value) >= "10" && parseInt(campo.value) <= "53") || (parseInt(campo.value) >= "60" && parseInt(campo.value) <= "89") || (parseInt(campo.value) >= "90" && parseInt(campo.value) <= "99") )
					{
						return true;
					}
					else 
					{
						acaoPosValidacao()
						return false;
					}

				}

			}

		//============Valida GDP====================

			if (tipo == 'GDP')
			{

				if (campo.value.length > 0)
				{

					if ( (parseInt(campo.value) == "90") || (parseInt(campo.value) == "02") || (parseInt(campo.value) == "01") || (parseInt(campo.value) == "10") || (parseInt(campo.value) == "70") || (parseInt(campo.value) == "80") || (parseInt(campo.value) == "60") || (parseInt(campo.value) == "50") || (parseInt(campo.value) == "52") || (parseInt(campo.value) == "0") )
					{
						return true;

					}
					else
					{
						acaoPosValidacao()
						return false;

					}


				}


			}


		//================Valida PIS===================================

		    if (tipo == 'PIS')
		    {
				if (campo.value.length > 0)
				{

					sString = campo.value;
					sAux = sString.substring(0,sString.length-1);
					sDigito = sString.substring(sString.length-1,sString.length);
						
					if(sCalculaDigitoMod11(sAux,1,2) != sDigito)
					{
						acaoPosValidacao()
					}	


				}

		    }


			function sCalculaDigitoMod11(sValor,iDigSaida,sTipoValidacao)
			{
			  if (sTipoValidacao == 1) iCod = 12  
			  if (sTipoValidacao == 2) iCod = 9   
			  if (sTipoValidacao == 3) iCod = 10   

			  for (t=1;t<=iDigSaida;t++)
				{
				  soma = 0
				  mult = 2
				  for (j=sValor.length;j>0;j--)
				  {
					soma = soma + (mult * parseInt(sValor.substring(j,j-1),10))
					mult++
					if (mult > iCod) mult = 2
				  }
				  soma = (soma * 10) % 11
				  if (soma == 10) sValor = sValor + "0"
				  else sValor = sValor + soma
				}
				return sValor.substring(sValor.length-iDigSaida,sValor.length)
			}




		
		 //============Valida CPF============================

  		    if(tipo == 'CPF') {

				if (campo.value.length > 0)
				{

					if (validaCPF(campo.value) == false)
					{
						acaoPosValidacao()
					}

				}

				
			}


			function validaCPF(CPF) {
  		 
				if (CPF.length != 11 || CPF == "00000000000" || CPF == "11111111111" ||
					CPF == "22222222222" ||	CPF == "33333333333" || CPF == "44444444444" ||
					CPF == "55555555555" || CPF == "66666666666" || CPF == "77777777777" ||
					CPF == "88888888888" || CPF == "99999999999")

					return false;
					soma = 0;
				
				for (i=0; i < 9; i ++)
				
					soma += parseInt(CPF.charAt(i)) * (10 - i);
					resto = 11 - (soma % 11);
					
				if (resto == 10 || resto == 11)
					resto = 0;
						
				if (resto != parseInt(CPF.charAt(9)))

					return false;
					soma = 0;
						
				for (i = 0; i < 10; i ++)
					soma += parseInt(CPF.charAt(i)) * (11 - i);
					resto = 11 - (soma % 11);
						
				if (resto == 10 || resto == 11)
					resto = 0;
							
				if (resto != parseInt(CPF.charAt(10)))

					return false;
					//alert('Correto');
					return true;
				}
			}


//==============================Função RANGE========================
//Descrição: Função que valida uma determinada faixa de valores
//i->valor inicial f->valor final campo->campo a ser validado

 
	function checaRange(campo, i, f)
	{
		if (campo.value.length > 0)
		{
			if (isNaN(campo.value) == false)
			{

				if (campo.value >= i && campo.value <= f)
				{
					return true

				}
				else
				{
					alert("Conteúdo inválido para este campo !");
					campo.value = "";
					campo.focus();  
					return false;
				}

			}
			else
			{
				alert("Conteúdo inválido para este campo !");
				campo.value = "";
				campo.focus();  
				return false;
			}
		}


	}



//===============================Função para validação de datas=========================

	function validaData(vDia, vMes, vAno, nulo) {

		var bissexto = false //indica se é ou não ano bissexto
		resultado = parseInt(vAno.value) / 4;
		produto = parseInt(resultado) * 4;


		if( (parseInt(vAno.value) - produto) == 0)
		{
		  bissexto = true;
		}



		function acaoPosValidacaoData()
		{
			alert("Data com valores inválidos");
			vDia.value = "";
			vMes.value = "";
			vAno.value = "";
			vDia.focus();

		}


		//nulo = N ->Não permite valores nulos

		if (nulo == "N")
		{
				if (vDia.value.length == 0 && vMes.value.length == 0 && vAno.value.length == 0)
				{
					return false
				}
				else
				{

						if (vDia.value.length > 0 || vMes.value.length > 0 || vAno.value.length > 0)
						{


								 if(isNaN(vDia.value)) 
								 {
									acaoPosValidacaoData()
									return false;
								 }
										
								 if(isNaN(vMes.value)) 
								 {
									acaoPosValidacaoData()
									 return false;
								 }

								 if(isNaN(vAno.value)) 
								 {
									acaoPosValidacaoData()

									 return false;
								 }


								  if(vDia.value > 31 || vDia.value < 1) {

									acaoPosValidacaoData()

									 return false
									 }
							 
								  if(vMes.value > 12 || vMes.value < 1) {

									acaoPosValidacaoData()

									 return false
									 }	 
							 
								  if(vAno.value < 1900) {

									acaoPosValidacaoData()

									 return false
									 }	 	 


								  Data = new Date();
								  
								  if (vAno.value > Data.getFullYear() + 2 )
								  {

									  acaoPosValidacaoData()
									  return false;
								  }
							
							 
								  dia_inic = vDia.value	 
								  if(dia_inic.length == 1) {
									 vDia.value = "0" + dia_inic
									 }	 
								 
								  mes_inic = vMes.value	 
								  if(mes_inic.length == 1) {
									 vMes.value = "0" + mes_inic
									 }

								   ano_inic = vAno.value	 	  	 
							 
								  if(dia_inic > 28 && mes_inic == 02) {

									if (bissexto)
									{

										if(dia_inic > 29 && mes_inic == 02) 
										{ 

										  acaoPosValidacaoData()
										  return false
				
										}


									}
									else
									{

									   acaoPosValidacaoData()
									   return false

									}
								  }
							 
								   if(dia_inic > 30 && mes_inic == 04) {

									  acaoPosValidacaoData()

									 return false
									 }          
							 
								   if(dia_inic > 30 && mes_inic == 06) {

									  acaoPosValidacaoData()

									 return false
									 }      
						   
								   if(dia_inic > 30 && mes_inic == 09) {

									  acaoPosValidacaoData()

									 return false
									 }      
						  
								 if(dia_inic > 30 && mes_inic == 11) {

									  acaoPosValidacaoData()

									 return false
									 }    
						}

				  }
		}




		if (nulo == "S")
		{
			if (vDia.value.length > 0 || vMes.value.length > 0 || vAno.value.length > 0)
			{



					 if(isNaN(vDia.value)) 
					 {
						acaoPosValidacaoData()
						return false;
					 }
							
					 if(isNaN(vMes.value)) 
					 {
						acaoPosValidacaoData()
						 return false;
					 }

					 if(isNaN(vAno.value)) 
					 {
						acaoPosValidacaoData()

						 return false;
					 }


					  if(vDia.value > 31 || vDia.value < 1) {

						acaoPosValidacaoData()

						 return false
						 }
				 
					  if(vMes.value > 12 || vMes.value < 1) {

						acaoPosValidacaoData()

						 return false
						 }	 
				 
					  if(vAno.value < 1900) {

						acaoPosValidacaoData()

						 return false
						 }	 	 


					  Data = new Date();
					  
					  if (vAno.value > Data.getFullYear() + 2 )
					  {

                          acaoPosValidacaoData()
						  return false;
					  }
				
				 
					  dia_inic = vDia.value	 
					  if(dia_inic.length == 1) {
						 vDia.value = "0" + dia_inic
						 }	 
					 
					  mes_inic = vMes.value	 
					  if(mes_inic.length == 1) {
						 vMes.value = "0" + mes_inic
						 }

					   ano_inic = vAno.value	 	  	 

				 
					  if(dia_inic > 28 && mes_inic == 02) {


         				if (bissexto)
						{

							if(dia_inic > 29 && mes_inic == 02) 
							{ 


	                          acaoPosValidacaoData()
			                  return false
	
							}


						}
		                else
						{

	                       acaoPosValidacaoData()
						   return false

						}
					  }

				 
					   if(dia_inic > 30 && mes_inic == 04) {

                          acaoPosValidacaoData()

						 return false
						 }          
				 
					   if(dia_inic > 30 && mes_inic == 06) {

                          acaoPosValidacaoData()

						 return false
						 }      
			   
					   if(dia_inic > 30 && mes_inic == 09) {

                          acaoPosValidacaoData()

						 return false
						 }      
			  
					 if(dia_inic > 30 && mes_inic == 11) {

                          acaoPosValidacaoData()

						 return false
						 }    



			}

		}

	}

//========================================Fim da função de validação de data===============================


//Transfere dados para o formulário benef
function PassBack(valorA, valorB, campoA, campoB) {


   win = window.parent;
   //alert('opener.win.document.forms[0].' + campoB + '.value = \"'+valorB+'\"');



   eval('opener.win.document.forms[0].' + campoA + '.value = \"'+valorA+'\"');
   eval('opener.win.document.forms[0].' + campoB + '.value = \"'+valorB+'\"');

   fecha();

}


function fecha() {

  window.close();
}

function abrePesquisa(URL) {

		win = window.parent;
		janela = window.open(""+URL+"","","scrollbars=no,toolbar=no,location=no,directories=no,resizable=no,width=450,height=350")
		//janela = window.open(""+URL+"")	
		janela.moveTo(100,100)

}

	
//============================================================================

