/*
Email 

Campo númerico 

Campo vazio 

CNPJ 

CPF 

CEP 

Datas 

Máscaras 

Quantidade de caracteres (textarea) 

Campo telefone 

Campo celular 
*/

// funcao de validacao de email 
function VerificaEmail(mail) { 

   var er = new RegExp(/^[A-Za-z0-9_\-\.]+@[A-Za-z0-9_\-\.]{2,}\.[A-Za-z0-9]{2,}(\.[A-Za-z0-9])?/);
   if(typeof(mail) == "string"){
       if(er.test(mail)){ return true; }
   }else if(typeof(mail) == "object"){
       if(er.test(mail.value)){ 
                   return true; 
               }
   }else{
       return false;
       }
} // fim da funcao de validacao de email 





// funcao verifica somente número 

   function numero (x)
   {
     s = new String(x);
       ___ok = 1;
       for (i = 0; i < s.length; i++)
       {
       r = (s.charAt(i) == "0"
       || s.charAt(i) == "1" 
       || s.charAt(i) == "2" 
       || s.charAt(i) == "3" 
       || s.charAt(i) == "4" 
       || s.charAt(i) == "5" 
       || s.charAt(i) == "6"  
       || s.charAt(i) == "7" 
       || s.charAt(i) == "8" 
       || s.charAt(i) == "9");
        ___ok = ___ok & r;
       }
     return ___ok;
   }
// fim da funcao que verifica somente numero 





// funcao verifica campo vazio 

 function CampoVazio (s) { 
   return ((s== null) || (s.length== 0))
 }
// fim da funcao que verifica campo vazio 







// funcao chega CNPJ 
  	function verificaCGC (y)
	{
		foco = "";
		f = document.formulario;
        x = new String (y);
        if (! numero (x)) { return false; }
        if (! numero (x)) { return false; }
		tmp = x;
		soma = 0;
		for (ii = 1; ii <= 12; ii++)
		{
			if (ii < 5)
				soma = soma + tmp.charAt(ii-1) * (6 - ii);
			else
				soma = soma + tmp.charAt(ii-1) * (14 - ii);
		}
		digit1 = 11 - (soma % 11);
		if (digit1 > 9) digit1 = 0;
		soma = 0;
		for (ii = 1; ii <= 13; ii++)
		{
		  if (ii < 6)
			soma = soma + tmp.charAt(ii-1) * (7 - ii)
		  else
			soma = soma + tmp.charAt(ii-1) * (15 - ii)
		}
		digit2 = 11 - (soma % 11);
		if (digit2 > 9) digit2 = 0;
		cgcok = 1
		if (digit1 != tmp.charAt(12)) cgcok = 0
		if (digit2 != tmp.charAt(13)) cgcok = 0
        return cgcok;
	}
// final da funcao de chega cnpj		




//funcao verifica cpf function isCPF(valor){ 
function isCPF(valor){
    var i, total, flatCpf, maskCpf;
    maskCpf = /^\d{11}$/;       // 11 d&iacute;gitos
    if (maskCpf.test(valor)){
        flatCpf = valor;
    }else{
        maskCpf = /^\d{3}\.\d{3}\.\d{3}-\d{2}$/;        // nnn.nnn.nnn-nn
        if (maskCpf.test(valor)){
            flatCpf = valor.substr(0, 3) + valor.substr(4, 3) + valor.substr(8, 3) + fieldValue.substr(12, 2);
        }else{
            return false;
        }
    }

    // Primeiro d&iacute;gito
    if (dvCpf(flatCpf.substr(0, 9))!= flatCpf.substr(9, 1)) return false;

    // Segundo d&iacute;gito
    if (dvCpf(flatCpf.substr(0, 10))!= flatCpf.substr(10, 1)) return false;
    
    
    if (!checkDigCpf(flatCpf)) return false;
    
    return true;
}

// verifica se todos os digitos sao iguais
function checkDigCpf(cpf){
	start = cpf.charAt(0);
    vOk = false
    for(i=1;i<cpf.length; i++){
        if(start != cpf.charAt(i)) vOk = true;
    }
    return vOk;
}


// wrapper
function cpfOK(valor){
    return isCPF(valor);
}
function dvCpf(strVal){
    // recebe uma string representando um valor num&eacute;rico...
    // retorna o d&iacute;gito verificador m&oacute;dulo 11 (CPF)
    var i, n, len, total;
    
    total = 0;
    len = strVal.length;
    
    n = 1; 
    for (i=len; i>0; i--){
        n++;
        total = total + (strVal.substr((i-1), 1) * n);
    }
    total = 11 - (total % 11);
    if(total >9){total = 0};
    return total;
}
//fim da funcao verifica cpf 







//funcao checa cep
   function cep (x)
   {
   	s = new String(x);
   	__ok = true;
   	for (i = 0; i < s.length; i++)
   	{
   		__r = (s.charAt(i) == "0" || s.charAt(i) == "1" ||s.charAt(i) == "2" || s.charAt(i) == "3" || s.charAt(i) == "4" ||s.charAt(i) == "5" || s.charAt(i) == "6"  ||s.charAt(i) == "7" || s.charAt(i) == "8" ||s.charAt(i) == "9");
   		__ok = __ok & __r;
   	}
       if (__ok == false) 
return false; 

       if (__ok == true)
       {
           if (s.length == 8) 
return true; 

           else
               return false;
       }
   }
 // final da funcao checa cep
 

//Início da função de validação de data 
function validaData (x) {
      	s = new String(x);
		var dia = parseInt(x.substring(0,2),10);
		var mes = parseInt(x.substring(3,5),10);
		var ano = parseInt(x.substring(6,10),10);
	  	if (dia > 31 || mes > 12 || ano < 1800) {
			return false;
	  	}
		return true;
}
//fim da função de validação de data



//Início da função de Máscaras
function Limpar(valor, validos) {
	// retira caracteres invalidos da string
	var result = "";
	var aux;
	for (var i=0; i < valor.length; i++) {
		aux = validos.indexOf(valor.substring(i, i+1));
		if (aux>=0) {
			result += aux;
		}
	}
	return result;
}
	
function Formata(campo,tammax,teclapres,decimal) {
var tecla = teclapres.keyCode;
vr = Limpar(campo.value,"0123456789");
tam = vr.length;
dec=decimal

if (tam < tammax && tecla != 8){ tam = vr.length + 1 ; }

if (tecla == 8 )
{ tam = tam - 1 ; }

if ( tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 )
{

if ( tam <= dec )
{ campo.value = vr ; }

if ( (tam > dec) && (tam <= 5) ){
campo.value = vr.substr( 0, tam - 2 ) + "," + vr.substr( tam - dec, tam ) ; }
if ( (tam >= 6) && (tam <= 8) ){
campo.value = vr.substr( 0, tam - 5 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - dec, tam ) ; 
}
if ( (tam >= 9) && (tam <= 11) ){
campo.value = vr.substr( 0, tam - 8 ) + "." + vr.substr( tam - 8, 3 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - dec, tam ) ; }
if ( (tam >= 12) && (tam <= 14) ){
campo.value = vr.substr( 0, tam - 11 ) + "." + vr.substr( tam - 11, 3 ) + "." + vr.substr( tam - 8, 3 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - dec, tam ) ; }
if ( (tam >= 15) && (tam <= 17) ){
campo.value = vr.substr( 0, tam - 14 ) + "." + vr.substr( tam - 14, 3 ) + "." + vr.substr( tam - 11, 3 ) + "." + vr.substr( tam - 8, 3 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - 2, tam ) ;}
} 

}

function Formatacoes(valor, id, mascara, evento)
{
	//inicializa a variavel que vai conter o valor final
	var valorFinal = "";
	
	//verifica o que foi digitada para que seja verificado se é somente números ou não
	var tecla = evento.keyCode;	
	
	//mantem o tamanho original do campo sem retirar a máscara
	var valorOriginal = valor;
	
	//inicializa um array com todos os caracteres que serão retirado
	var arrNaoPermitidos = new Array("-", ".", "/", "\\", "|", "(", ")", ":", " ");
	
	//retira qualquer máscara que já tenha sido colocada
	for(i1=0;i1<valor.length;i1++)
	{
		for(i2=0;i2<arrNaoPermitidos.length;i2++)
		{
			if(valor.charAt(i1) == arrNaoPermitidos[i2])
			{
				valor = valor.toString().replace( arrNaoPermitidos[i2], "" );
			}	
		}	
	}	
	
		
	//verifica se foi precionado o backspae
	if(tecla != 8)
	{			
		//verifica se já não ultrapassou o tamanha máximo da máscara
		if(mascara.length >= valorOriginal.length)
		{			
			//loop em cima do valor do campo sem a máscara
			jaTemMascara = false;
			for(i=0;i<valor.length;i++)
			{			
				//verifica se a string já recebeu alguma máscara ou não
				if(jaTemMascara == false)
				{
					//verifica se o tipo da entrada de dados tem que ser némerica
					if(mascara.charAt(i) == "#")
					{
						//verifica se foi digitado somente números
						if(((tecla > 95) && (tecla < 106)) || ((tecla > 47) && (tecla < 58)) || tecla == 9 || tecla == 16)
						{
							valorFinal = valorFinal  + valor.charAt(i);
						} 
						//se não foi digitado um número é retirado o caracter da string
						else
						{
							valorFinal = valorOriginal.substring(0, valorOriginal.length -1);
						}					
					}
					else if(mascara.charAt(i) == "@") //verifica se o tipo da entrada é qualquer caracter
					{
						valorFinal = valorFinal  + valor.charAt(i);
					}
					//se não for quelaquer caracter é algum elemento da máscara
					else
					{
						//verifica se o próxima depois da máscara é númerica 
						if(mascara.charAt(i + 1) == "#")
						{
							//verifica se foi digitado somente números
							if(((tecla > 95) && (tecla < 106)) || ((tecla > 47) && (tecla < 58)) || tecla == 9 || tecla == 16)
							{
								valorFinal = valorFinal + mascara.charAt(i + jaTemMascara)  + valor.charAt(i);			
								jaTemMascara = jaTemMascara + 1;	
							}
							//se não foi digitado um número é retirado o caracter da string
							else
							{
								valorFinal = valorOriginal.substring(0, valorOriginal.length -1);
							}
						}
						// se não é númerico então pode ser qualuqer caracter
						else
						{
							valorFinal = valorFinal + mascara.charAt(i + jaTemMascara)  + valor.charAt(i);			
							jaTemMascara = jaTemMascara + 1;
						}					
					}
				}
				//else da verificação da máscara
				else
				{
					//verifica se foi digitado somente números
					if(mascara.charAt(i + jaTemMascara) == "#")
					{
						//verifica se foi digitado somente números
						if(((tecla > 95) && (tecla < 106)) || ((tecla > 47) && (tecla < 58)) || tecla == 9 || tecla == 16)
						{
							valorFinal = valorFinal  + valor.charAt(i);
						}
						//se não foi digitado um número é retirado o caracter da string
						else
						{
							valorFinal = valorOriginal.substring(0, valorOriginal.length -1);
						}
					}
					else if(mascara.charAt(i + jaTemMascara) == "@") //verifica se o tipo da entrada é qualquer caracter
					{
						valorFinal = valorFinal  + valor.charAt(i);
					}
					else
					{
						//verifica se foi digitado somente números
						if(mascara.charAt(i + jaTemMascara +1) == "#")
						{
							//verifica se foi digitado somente números
							if(((tecla > 95) && (tecla < 106)) || ((tecla > 47) && (tecla < 58)) || tecla == 9 || tecla == 16)
							{
								valorFinal = valorFinal + mascara.charAt(i + jaTemMascara)  + valor.charAt(i);			
								jaTemMascara = jaTemMascara + 1;	
							}
							//se não foi digitado um número é retirado o caracter da string
							else
							{
								valorFinal = valorOriginal.substring(0, valorOriginal.length -1);
							}
						}
						// se não é númerico então pode ser qualuqer caracter
						else
						{
							valorFinal = valorFinal + mascara.charAt(i + jaTemMascara)  + valor.charAt(i);			
							jaTemMascara = jaTemMascara + 1;
						}							
					}	
				} //fim da verificação da máscara	
			}	
		}
		else
		{
			valorFinal = valorOriginal.substring(0, mascara.length);	
		} //final da verificação do tamanha máximo da string
	}
	else
	{
		//valorFinal = valorOriginal.substring(0, valorOriginal.length -1)
		valorFinal = valorOriginal.substring(0, valorOriginal.length);		
	}//final da verificação do backspace
	document.getElementById(id).value = valorFinal;
}
//Fim da função de Máscaras




//funcao quantidade maxima de caracteres 
function countChars(Pmax,Pcampo) {
campo = eval("document.formulario." + Pcampo); 

       //document.getElementById("cont").innerHTML = campo.value.length;
       if(campo.value.length > Pmax){
           campo.value = campo.value.substring(0, Pmax);
           alert("O texto não pode ultrapassar " + Pmax + " caracteres.");
           campo.focus();
       }
   }
// fim da funcao quantidade maxima de carateres // chamada: onkeyup="countChars(300,'nome_do_campo');" 







//funcao que verifica o primeiro caracter de um campo celular 

function inicioTelefone (x)
   {
     return (x.charAt(0) == "7" || x.charAt(0) == "8" || x.charAt(0) == "9" );
   }
// final que verifica o primeiro caracter de um campo celular 





//funcao que verifica a quantidade de dígitos no campo telefone 

function qtdDigitoTelefone (x)
   {
     return (x.length < 8);
   }
// final que verifica a quantidade de dígitos no campo telefone 

