// JavaScript Document

//.:: Biblioteca criada por Eric Bastos Duboc ::.//

/* Funções nesta biblioteca:

  function allTrim(str)
  //Retorna a string passada por parâmetro sem os espaços em branco do início e do fim.

  function obrigaCampo(arrayCampo, arrayMensagem)
	//Exibe a mensagem passada pelo 2º array, caso o campo de respectivo indice do 1º array, esteja vazio.
  //Exemplo de utilização: obrigaCampo([form1.login, form1.senha], ["Informe seu nome.", "Informe sua senha."])
	
  function validaEmail(campo)
	//Verifica se o E-mail (passado pelo parâmetro) tem o formato básico de um E-mail
	
  function validaCPF(numeroCPF)	
	//Valida o CPF passado por parâmetro (o CPF pode ter ou não mácara)
	
	function ValidaCNPJ(numeroCNPJ) 
	//Valida o CNPJ passado por parâmetro (o CNPJ pode ter ou não mácara)

	function validaCampoData(campo)
  //Validar campo data (dd/mm/yyyy)
	
*/

  //Retorna a string passada por parâmetro sem os espaços em branco do início e do fim.
  function allTrim(str)
	{
		while (str.charAt(0) == " ")
		str = str.substr(1,str.length -1);
	
		while (str.charAt(str.length-1) == " ")
		str = str.substr(0,str.length-1);
	
		return str;
	}
	
	//Exibe a mensagem passada pelo 2º array, caso o campo de respectivo indice do 1º array, esteja vazio.
  function obrigaCampo(arrayCampo, arrayMensagem)
	{ 
	  if (arrayCampo.length == arrayMensagem.length)
		{
			for(var i = 0 ; i < arrayCampo.length ; i++)
			{
				if(allTrim(arrayCampo[i].value) == "")
				{
					alert(arrayMensagem[i]);
					arrayCampo[i].focus();
					return false;
				}
			}
			return true;
		}
		else
		{
			alert("Ocorreu um erro nesta página. Favor nos avisar deste erro.");
			return false;
		}
  }
	
	//Verifica se o E-mail (passado pelo parâmetro) tem o formato básico de um E-mail
  function validaEmail(campo)
	{
    var invalid = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/;
	
		if((campo.value == "") ||
		   (invalid.test(campo.value) == false)
			)
		{
			alert('E-mail inválido')
			campo.focus();
			campo.select();
			
			return false;
		}
		else
		{
			return true;
		}
  }
	
	//Valida o CPF passado por parâmetro (o CPF pode ter ou não mácara)
  function validaCPF(numeroCPF) 
	{
	  cpf = desmascaraCPF(numeroCPF);

		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;
		}
		else 
		{
			var numero = new Array();
			
			for(i = 0 ; i < 11 ; i++) 
			{
				numero[i + 1] = parseInt(cpf.substr(i,1));
			}
			
			soma = 10 * numero[1] +
						 9 * numero[2] +
						 8 * numero[3] +
						 7 * numero[4] +
						 6 * numero[5] +
						 5 * numero[6] +
						 4 * numero[7] +
						 3 * numero[8] +
						 2 * numero[9];
			
			soma = soma - (11 * (parseInt(soma/11)));
	
			if (soma == 0 || soma == 1) 
			{
				resultado1 = 0;
			}
			else 
			{
				resultado1 = 11 - soma;
			} 

			if (resultado1 == numero[10]) 
			{
				soma = numero[1] * 11 +
							 numero[2] * 10 +
							 numero[3] * 9 +
							 numero[4] * 8 +
							 numero[5] * 7 +
							 numero[6] * 6 +
							 numero[7] * 5 +
							 numero[8] * 4 +
							 numero[9] * 3 +
							 numero[10] * 2;
							 
				soma = soma - (11 * (parseInt(soma/11)));

				if (soma == 0 || soma == 1)
				{
					resultado2 = 0;
				}
				else 
				{
					resultado2 = 11 - soma;
				} 

				if (resultado2 == numero[11])
				{
					return true;
				}
				else
				{
					return false;
				} 
			}
			else 
			{
				return false;
			} 
		} 
  }
	
	//Valida o CNPJ passado por parâmetro (o CNPJ pode ter ou não mácara)
	function validaCNPJ(numeroCNPJ) 
	{
	  cnpj = desmascaraCNPJ(numeroCNPJ);

		if (
				 (cnpj.length != 14) || 
				 (cnpj == "00000000000000") ||
				 (cnpj == "11111111111111") ||
				 (cnpj == "22222222222222") ||
				 (cnpj == "33333333333333") ||
				 (cnpj == "44444444444444") ||
				 (cnpj == "55555555555555") ||
				 (cnpj == "66666666666666") ||
				 (cnpj == "77777777777777") ||
				 (cnpj == "88888888888888") ||
				 (cnpj == "99999999999999")
			 )
		{
			return false;
		}
		else 
		{
		  var numero = new Array();
			
			for(i = 0 ; i < 14 ; i++) 
			{
			  numero[i + 1] = parseInt(cnpj.substr(i,1));
			}
	
			soma = numero[1] * 5 +
			       numero[2] * 4 +
						 numero[3] * 3 +
						 numero[4] * 2 +
						 numero[5] * 9 +
						 numero[6] * 8 +
						 numero[7] * 7 +
						 numero[8] * 6 +
						 numero[9] * 5 +
						 numero[10] * 4 +
						 numero[11] * 3 +
						 numero[12] * 2;
	
			soma = soma - (11 * (parseInt(soma/11)));
	
		  if (soma == 0 || soma == 1) 
			{
			  resultado1 = 0;
		  }
		  else 
			{
			  resultado1 = 11 - soma;
		  }
		  
			if (resultado1 == numero[13]) 
			{
			  soma = numero[1] * 6 +
				       numero[2] * 5 +
							 numero[3] * 4 +
							 numero[4] * 3 +
							 numero[5] * 2 +
							 numero[6] * 9 +
							 numero[7] * 8 +
							 numero[8] * 7 +
							 numero[9] * 6 +
							 numero[10] * 5 +
							 numero[11] * 4 +
							 numero[12] * 3 +
							 numero[13] * 2;
							 
			  soma = soma - (11 * (parseInt(soma/11)));
				
			  if (soma == 0 || soma == 1) 
			  {
			    resultado2 = 0;
			  }
		    else 
				{
		      resultado2 = 11 - soma;
		    }
		    
				if (resultado2 == numero[14]) 
				{
				  return true;
		    }
				else 
				{
			 	  return false;
		    }
		  }
		  else 
			{
		    return false;
		  }
	  }
	}
	
  //Função para validar campo data (dd/mm/yyyy)
	function validaCampoData(campo)
	{
		if (campo.value != '')
		{
			if ((campo.value.length == 8) && (campo.value.indexOf("/") == -1))
			{
				mascaraCampoData(campo);
			}
			else
			{	
				if((campo.value.length < 10) && (campo.value.indexOf("/") == -1))
				{
					alert("Data inválida.");
					campo.select();
					return false;
				}
			}
			
			var dia = parseInt(campo.value.substr(0,2));
			var mes = parseFloat(campo.value.substr(3,2));
			var ano = parseInt(campo.value.substr(6,4));
			var bisexto = ano % 4;
			var monthMax = new Array(31,31,29,31,30,31,30,31,31,30,31,30,31);
		
			if(bisexto ==0 )
			{
				monthMax[2] = 29;
			}
			else 
			{
				monthMax[2] = 28;
			}
	
			if (dia > parseInt(monthMax[mes]) || mes > 12 || mes < 1)
			{
				alert("Data inválida.");
				campo.select();
				campo.focus();
				
				return false;
			}
			else
			{
						return true;
			}
		}
		else
		{
			return true;
		}
  }	
