// JavaScript Document

//.:: Biblioteca criada por Eric Bastos Duboc ::.//

/* Funções nesta biblioteca:

	function KeyCode(e)
	//Retorna o código da tecla pressionada

	function pressionaTecla(tecla)
	//Envia o código de tecla passado por parâmetro para o event do navegador
	
	function padL(string, tamanho, caracter)
	//Retorna a "string" preenchida com o "caracter" à esquerda 
	//até essa nova string ter o "tamanho" desejado.

	function padR(string, tamanho, caracter)
	//Retorna a "string" preenchida com o "caracter" à direita
	//até essa nova string ter o "tamanho" desejado.

	function somenteNumero()
	//Valida somente o pressionamento de caracteres numéricos
	
	function mascaraCampoData(campo)
	//Coloca mácara no campo que chamá-la. (chamar pelo evento onkeypress do campo)
	//Esta função já valida os caracteres
s
	function mascaraCampoCPF(campo)
	//Coloca a máscara de CPF no campo passado pelo parâmetro

  function desmascaraCampoCPF(campo)
	//Retira a máscara de CPF do campo passado pelo parâmetro

  function mascaraCPF(varCPF)
  //Coloca a máscara de CPF na string passada por parâmetro

  function desmascaraCPF(varCPF)
  //Retira a máscara de CPF da string passada por parâmetro

	function mascaraCampoCNPJ(campo)
	//Coloca a máscara de CNPJ no campo passado pelo parâmetro

	function desmascaraCampoCNPJ(campo)
	//Retira a máscara de CNPJ do campo passado pelo parâmetro

  function mascaraCNPJ(varCNPJ)
  //Coloca a máscara de CNPJ na string passada por parâmetro

  function desmascaraCNPJ(varCNPJ)
  //Retira a máscara de CNPJ da string passada por parâmetro

	function mascaraCampoCEP(campo)
	//Coloca a máscara de CEP no campo passado pelo parâmetro

  function desmascaraCampoCEP(campo)
	//Retira a máscara de CEP do campo passado pelo parâmetro

	function mascaraCEP(varCEP)
	//Coloca a máscara de CEP no string passado pelo parâmetro

	function desmascaraCEP(varCEP)
	//Retira a máscara de CEP da string passada pelo parâmetro

	function eCPF(valor)
  //Verifica se a variável passa é um CPF (independente de ter ou não mácara)

	function eCNPJ(valor)
  //Verifica se a variável passa é um CNPJ (independente de ter ou não mácara)

	function mascaraCampoCPF_CNPJ(campo)
  //Coloca a máscara de CPF ou de CNPJ no campo passado pelo parâmetro

	function mascaraCPF_CNPJ(CPF_CNPJ)
  //Coloca a máscara de CPF ou de CNPJ na variavel passada pelo parâmetro

	function desmascaraCampoCPF_CNPJ(campo)
  //Retira a máscara de CPF ou de CNPJ do campo passado pelo parâmetro

	function desmascaraCPF_CNPJ(CPF_CNPJ)
  //Retira a máscara de CPF ou de CNPJ da variável passada pelo parâmetro

	function campoMaiusculo()
	//Todo caracter digitado no campo fica em maiúsculo.

	function campoMinusculo()
	//Todo caracter digitado no campo fica em minúsculo.

	function colarTextoMinusculo()
	//Passa o texo da área de transferência para minúsculo

	function colarTextoMaiusculo()
	//Passa o texo da área de transferência para maiúsculo

  function colarSemAspas()
  //Remove do texto da área de transferência todas as ocorrências de aspas (simples e dupla)
	//Chamar no evento onPaste

	function impedeAspas()
	//Impede a entrada de aspas no campo (aspas simples e dupla)
	//Chamar no evento onKeyPress

	function impedeCaracteres(arrayTeclas)
	//Impede a entrada dos caracteres, passados pelo array, no campo
  //Exemplo: impedeCaracteres(['a', 'b', 'c'])

*/

  //Detectação do Browser
	var strUserAgent = navigator.userAgent.toLowerCase();
  var isIE = strUserAgent.indexOf("msie") > -1; 
	var isNS6 = strUserAgent.indexOf("netscape6") > -1; 
	var isNS4 = !isIE && !isNS6  && parseFloat(navigator.appVersion) < 5;
	
	//regular expressions
	var reValidChars = /\d/;
	
	//Retorna o código da tecla pressionada
	function KeyCode(e)
	{
		if (isIE) 
		{
			return event.keyCode;
		} 
		/*
		else 
		{
			return event.which;
		}*/
		if(typeof(e)=='undefined') 
			var e=window.event;
		
		var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
		return KeyCode;
		
	}
	
	//Envia o código de tecla passado por parâmetro para o event do navegador
	function pressionaTecla(tecla)
	{
		if(isIE)
		{
			event.keyCode = tecla;
		}
		else
		{
			event.which = tecla;
		}
	}

	//Retorna a "string" preenchida com o "caracter" à esquerda 
	//até essa nova string ter o "tamanho" desejado.
	function padL(string, tamanho, caracter)
	{
		if(string.length < tamanho)
		{
			var str = string;
			
      while (str.length < tamanho)
			{
        str = caracter + str;
			}
		}
		else
		{
			str = string;
		}
		
    return str;
  }
	
	//Retorna a "string" preenchida com o "caracter" à direita
	//até essa nova string ter o "tamanho" desejado.
	function padR(string, tamanho, caracter)
	{
		if(string.length < tamanho)
		{
			var str = string;
			
      while (str.length < tamanho)
			{
        str = str + caracter;
			}
		}
		else
		{
			str = string;
		}
		
    return str;
  }	
	
	//Valida somente o pressionamento de caracteres numéricos
	function somenteNumero()
	{
		var tecla;  
					
		tecla = KeyCode(event);
		
		// numeros de 0 a 9, backspace, tab ou enter
		if ((tecla > 47 && tecla < 58) || 
				(tecla == 8 || tecla == 9 || tecla == 13) 
				) 
		{	
			return true;
		}
		else
		{
			event.keyCode = 0;
			return false;
		}
	}
	
	//Valida somente o pressionamento de caracteres numéricos
	function somenteNumero2(e)
	{
		var tecla;  
					
		if(typeof(e)=='undefined') 
			var e=window.event;
		
		var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
		
		tecla = keyCode;
		
		// numeros de 0 a 9, backspace, tab ou enter
		if ((tecla > 47 && tecla < 58) || 
				(tecla == 8 || tecla == 9 || tecla == 13) 
				) 
		{	
			return true;
		}
		else
		{
			try{e.preventDefault()}catch(E){}
			return false
		}
	}
	
	//Coloca mácara no campo que chamá-la. (chamar pelo evento onkeypress do campo)
	//Esta função já valida os caracteres
	function mascaraCampoData(campo)
	{ 
    var iKeyCode, strKey;  
			
		iKeyCode = KeyCode(event);
		
		if(somenteNumero())
		{		
			strKey = String.fromCharCode(iKeyCode);
					
			if (!reValidChars.test(strKey)) 
			{
				return false;
			}
			else 
			{
				if ((campo.value.length == 2) || (campo.value.length == 5)) 
				{
					campo.value += "/";
				}
			}
		}
		else
		{
		  return false;
		}
	
	}
	
	//Coloca mácara no campo que chamá-la. (chamar pelo evento onkeypress do campo)
	//Esta função já valida os caracteres
	function mascaraCampoData2(evento,campo)
	{
		
		e = evento;
		
		if(typeof(e)=='undefined') 
			var e=window.event;
		
		var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
		
    var iKeyCode, strKey;  
		
		iKeyCode = keyCode;
		
		if(somenteNumero2(evento))
		{		
			strKey = String.fromCharCode(iKeyCode);
					
			if (!reValidChars.test(strKey)) 
			{
				return false;
			}
			else 
			{
				if ((campo.value.length == 2) || (campo.value.length == 5)) 
				{
					campo.value += "/";
				}
			}
		}
		else
		{
		  return false;
		}
	
	}
	
	//Coloca a máscara de CPF no campo passado pelo parâmetro
	function mascaraCampoCPF(campo)
	{ 
		if(campo.value.length == 11)
		{ 		
			var p1 = campo.value.substr(0, 3);
			var p2 = campo.value.substr(3, 3);
			var p3 = campo.value.substr(6, 3);
			var p4 = campo.value.substr(9, 2);
			
			campo.value = p1 + "." + p2 + "." + p3 + "-" + p4;
			
			return true;
		}
		else
		{
			return false;
		}

	}
	
	//Retira a máscara de CPF do campo passado pelo parâmetro
	function desmascaraCampoCPF(campo)
	{ 

		if(campo.value.length == 14)
		{ 		
			var p1 = campo.value.substr(0, 3);
			var p2 = campo.value.substr(4, 3);
			var p3 = campo.value.substr(8, 3);
			var p4 = campo.value.substr(12, 2);
			
			campo.value = p1 + p2 + p3 + p4;
			
			campo.select();
			
			return true;
		}
		else
		{
			return false;
		}

	}	

  //Coloca a máscara de CPF na string passada por parâmetro
  function mascaraCPF(varCPF)
	{		
    if(varCPF.length == 11)
		{
		  var p1 = varCPF.substr(0, 3);
		  var p2 = varCPF.substr(3, 3);
		  var p3 = varCPF.substr(6, 3);
		  var p4 = varCPF.substr(9, 2);	
			
			var resCPF = p1 + "." + p2 + "." + p3 + "-" + p4;
			
			return resCPF;
		}
		else
		{
			return varCPF;
		}		
	}

  //Retira a máscara de CPF da string passada por parâmetro
  function desmascaraCPF(varCPF)
	{ 

		if(varCPF.length == 14)
		{ 		
			var p1 = varCPF.substr(0, 3);
			var p2 = varCPF.substr(4, 3);
			var p3 = varCPF.substr(8, 3);
			var p4 = varCPF.substr(12, 2);
			
			var resCPF = p1 + p2 + p3 + p4;
			
			return resCPF;
		}
		else
		{
			return varCPF;
		}

	}	

	//Coloca a máscara de CNPJ no campo passado pelo parâmetro
	function mascaraCampoCNPJ(campo)
	{ 

		if(campo.value.length == 14)
		{ 		
			var p1 = campo.value.substr(0, 2);
			var p2 = campo.value.substr(2, 3);
			var p3 = campo.value.substr(5, 3);
			var p4 = campo.value.substr(8, 4);
			var p5 = campo.value.substr(12, 2);
			
			campo.value = p1 + "." + p2 + "." + p3 + "/" + p4 + "-" + p5;
			
			return true;
		}
		else
		{
			return false;
		}

	}

	//Retira a máscara de CNPJ do campo passado pelo parâmetro
	function desmascaraCampoCNPJ(campo)
	{ 

		if(campo.value.length == 18)
		{ 		
			var p1 = campo.value.substr(0, 2);
			var p2 = campo.value.substr(3, 3);
			var p3 = campo.value.substr(7, 3);
			var p4 = campo.value.substr(11, 4);
			var p5 = campo.value.substr(16, 2);
			
			campo.value = p1 + p2 + p3 + p4 + p5;
			
			campo.select();
			
			return true;
		}
		else
		{
			return false;
		}

	}	

  //Coloca a máscara de CNPJ na string passada por parâmetro
  function mascaraCNPJ(varCNPJ)
	{		
    if(varCNPJ.length == 14)
		{
			var p1 = varCNPJ.substr(0, 2);
			var p2 = varCNPJ.substr(2, 3);
			var p3 = varCNPJ.substr(5, 3);
			var p4 = varCNPJ.substr(8, 4);
			var p5 = varCNPJ.substr(12, 2);
			
			var resCNPJ = p1 + "." + p2 + "." + p3 + "/" + p4 + "-" + p5;
			
			return resCNPJ;
		}
		else
		{
			return varCNPJ;
		}		
	}

  //Retira a máscara de CNPJ da string passada por parâmetro
  function desmascaraCNPJ(varCNPJ)
	{ 

		if(varCNPJ.length == 18)
		{ 		
      var p1 = varCNPJ.substr(0, 2);
			var p2 = varCNPJ.substr(3, 3);
			var p3 = varCNPJ.substr(7, 3);
			var p4 = varCNPJ.substr(11, 4);
			var p5 = varCNPJ.substr(16, 2);
			
			var resCNPJ = p1 + p2 + p3 + p4 + p5;
		
			return resCNPJ;
		}
		else
		{
			return varCNPJ;
		}

	}	

  //Coloca a máscara de CEP no campo passado pelo parâmetro
	function mascaraCampoCEP(campo)
	{

		if(campo.value.length == 8)
		{ 		
			var p1 = campo.value.substr(0, 5);
			var p2 = campo.value.substr(5, 3);
			
			campo.value = p1 + "-" + p2;
			
			return true;
		}
		else
		{
			return false;
		}
		
	}

	//Retira a máscara de CEP do campo passado pelo parâmetro
	function desmascaraCampoCEP(campo)
	{

		if(campo.value.length == 9)
		{ 		
			var p1 = campo.value.substr(0, 5);
			var p2 = campo.value.substr(6, 3);
			
			campo.value = p1 + p2;
			
			campo.select();
			
			return true;
		}
		else
		{
			return false;
		}
		
	}	
	
	//Coloca a máscara de CEP no string passado pelo parâmetro
	function mascaraCEP(varCEP)
	{

		if(varCEP.length == 8)
		{ 		
			var p1 = varCEP.substr(0, 5);
			var p2 = varCEP.substr(5, 3);
			
			resCEP = p1 + "-" + p2;
			
			return resCEP;
		}
		else
		{
			return varCEP;
		}
		
	}
	
	//Retira a máscara de CEP da string passada pelo parâmetro
	function desmascaraCEP(varCEP)
	{

		if(varCEP.length == 9)
		{ 		
			var p1 = varCEP.substr(0, 5);
			var p2 = varCEP.substr(6, 3);
			
			resCEP = p1 + p2;
			
			return resCEP;
		}
		else
		{
			return varCEP;
		}
		
	}	

  //Verifica se a variável passa é um CPF (independente de ter ou não mácara)
	function eCPF(valor)
	{
		if((valor.length == 11) || 			 
			 (
				 (valor.length == 14) &&
				 (valor.substr(3, 1) == ".") &&
				 (valor.substr(7, 1) == ".") &&
				 (valor.substr(11, 1) == "-")
			 )
			)
		{
			return true;
		}
		else
		{
			return false;
		}
	}

  //Verifica se a variável passa é um CNPJ (independente de ter ou não mácara)
	function eCNPJ(valor)
	{
		if((valor.length == 14) || 			 
			 (
				 (valor.length == 18) &&
				 (valor.substr(2, 1) == ".") &&
				 (valor.substr(6, 1) == ".") &&
				 (valor.substr(10, 1) == "/") &&
				 (valor.substr(15, 1) == "-")
			 )
			)
		{
			return true;
		}
		else
		{
			return false;
		}
	}

  //Coloca a máscara de CPF ou de CNPJ no campo passado pelo parâmetro
	function mascaraCampoCPF_CNPJ(campo)
	{

		if(eCPF(campo.value))
		{
			return mascaraCampoCPF(campo);			
		}
		else
		{
		  if(eCNPJ(campo.value))
			{ 		
			  return mascaraCampoCNPJ(campo);
			}
			else
			{
				return false;
			}			
		}
		
	}

  //Coloca a máscara de CPF ou de CNPJ na variável passada pelo parâmetro
	function mascaraCPF_CNPJ(CPF_CNPJ)
	{

		if(eCPF(CPF_CNPJ))
		{
			return mascaraCPF(CPF_CNPJ);		
		}
		else
		{
		  if(eCNPJ(CPF_CNPJ))
			{ 		
			  return mascaraCNPJ(CPF_CNPJ);
			}
			else
			{
				return CPF_CNPJ;
			}			
		}
		
	}

  //Retira a máscara de CPF ou de CNPJ no campo passado pelo parâmetro
	function desmascaraCampoCPF_CNPJ(campo)
	{

		if(eCPF(campo.value))
		{
			return desmascaraCampoCPF(campo);			
		}
		else
		{
			if(eCNPJ(campo.value))
			{ 		
			  return desmascaraCampoCNPJ(campo);
			}
			else
			{
				return false;
			}			
		}
		
	}
	
  //Retira a máscara de CPF ou de CNPJ da variável passada pelo parâmetro
	function desmascaraCPF_CNPJ(CPF_CNPJ)
	{

		if(eCPF(CPF_CNPJ))
		{
			return desmascaraCPF(CPF_CNPJ);
		}
		else
		{
			if(eCNPJ(CPF_CNPJ))
			{ 		
			  return desmascaraCNPJ(CPF_CNPJ);
			}
			else
			{
				return CPF_CNPJ;
			}			
		}
		
	}		
	
	//Todo caracter digitado no campo fica em maiúsculo.
	function campoMaiusculo()
	{ 
	  tecla = KeyCode(event);
		
		if(tecla >= 97 && tecla <= 122)
		{
			tecla = tecla - 32;
		  pressionaTecla(tecla);
		}
	}
	
	//Todo caracter digitado no campo fica em minúsculo.
	function campoMinusculo()
	{ 
	  tecla = KeyCode(event);
		
		if(tecla >= 65 && tecla <= 90)
		{
			tecla = tecla + 32;
		  pressionaTecla(tecla);
		}
	}	
	
	//Passa o texo da área de transferência para minúsculo
	function colarTextoMinusculo()
	{
	  trans = window.clipboardData.getData('Text');
		
		trans = trans.toLowerCase();

		window.clipboardData.setData('Text', trans);		
	}

	//Passa o texo da área de transferência para maiúsculo
	function colarTextoMaiusculo()
	{
	  trans = window.clipboardData.getData('Text');
		
		trans = trans.toUpperCase();

		window.clipboardData.setData('Text', trans);	
	}

  //Remove do texto da área de transferência todas as ocorrências de aspas (simples e dupla)
	// Chamar no evento onPaste
  function colarSemAspas()
	{
	  trans = window.clipboardData.getData('Text');
		
		aProcurar = /'/g;
		trans = trans.replace(aProcurar, '');
		
		aProcurar = /"/g;
		trans = trans.replace(aProcurar, '');

		window.clipboardData.setData('Text', trans);
	}
	
	//Impede a entrada de aspas no campo (aspas simples e dupla)
	//Chamar no evento onKeyPress
	function impedeAspas()
	{ 
	  tecla = KeyCode(event);

		if(tecla == 34 || tecla == 39)
		{
		  pressionaTecla(0);
		}	

	}
	
	//Impede a entrada de aspas no campo (aspas simples e dupla)
	//Chamar no evento onKeyPress
	function impedeAspas2(event)
	{ 
	  tecla = KeyCode(event);

		if(tecla == 34 || tecla == 39)
		{
		  pressionaTecla(0);
		}	

	}
	
	//Impede a entrada dos caracteres, passados pelo array, no campo
	function impedeCaracteres(arrayTeclas)
	{ 	  
		tecla = KeyCode(event);

		for(var i = 0 ; i < arrayTeclas.length ; i++)		
		{
			if(tecla == arrayTeclas[i].charCodeAt(0))
			{
				pressionaTecla(0);
				return;
			}
		}

	}
	