function formata_campo(campo)
{
  var digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVXWYZabcdefghijklmnopqrstuvxwyz ÉÁÍÓÚéáíóúÇçüÜêÊôÔãÃ.-@/\*ªº$#&()+=";
  var campo_temp;
  for (var i=0;i<campo.value.length;i++)
    {
	  campo_temp = campo.value.substring(i,i+1);
	  if (digits.indexOf(campo_temp)==-1)
	     {
		 campo.value = campo.value.substring(0,i);
		 break;
		 }
	}
 }

function mascara_cep(data){
              var mydata = '';
              mydata = mydata + data;
              if (mydata.length == 5){
                  mydata = mydata + '-';
                  document.forms[0].cxcep.value = mydata;
              }
          }	

function validaEnter(event)
{
 
	var tecla;
	 
	if(navigator.appName.indexOf("Netscape")!= -1)
	 
	tecla= event.which;
	 
	else
	 
	tecla= event.keyCode;
	 
	if ( tecla == 13 )
	 
	return false;
	
	else
	
	return true;
}

  
function validaData(str) 
{ 
if (str.value.length == 8)
    { 
      //quando a data for digitada com 8 dígitos (12/12/07) o sistema adiciona o ano com 4 dígitos
	  var str_temp = str.value.substring(0,6)+'20'+str.value.substring(6,8);
	  str.value = str_temp;
	}

if ((str.value.length > 0) && (str.value.length < 10))
    {
	   alert("Data incompleta!!!"); 
	   str.focus(); 
	   return false;
	}
else if (str.value.length == 0)
   {
    return true;
   }
   
 dia = (str.value.substring(0,2)); 
 mes = (str.value.substring(3,5)); 
 ano = (str.value.substring(6,10)); 
 
 cons = true; 
 
 // verifica se foram digitados números
 if (isNaN(dia) || isNaN(mes) || isNaN(ano)){
  alert("Preencha a data somente com números."); 
  str.value = "";
  str.focus(); 
  return false;
 }
  
    // verifica o dia valido para cada mes 
    if ((dia < 01)||(dia < 01 || dia > 30) && 
  (mes == 04 || mes == 06 || 
   mes == '09' || mes == 11 ) || 
   dia > 31) { 
     cons = false; 
 } 
 
 // verifica se o mes e valido 
 if (mes < 01 || mes > 12 ) { 
  cons = false; 
 } 
 
 // verifica se e ano bissexto 
 if (mes == 2 && ( dia < 01 || dia > 29 || 
    ( dia > 28 && 
    (parseInt(ano / 4) != ano / 4)))) { 
  cons = false; 
 } 
    
 if (cons == false) { 
  alert("A data inserida não é válida: " + str.value); 
  str.value = "";
  str.focus(); 
  return false;
 } 
}
 
// colocar no evento onKeyUp passando o objeto como parametro
function formata(val)
{
    var pass = val.value;
 var expr = /[0123456789]/;
  
 for(i=0; i<pass.length; i++){
  // charAt -> retorna o caractere posicionado no índice especificado
  var lchar = val.value.charAt(i);
  var nchar = val.value.charAt(i+1);
 
  if(i==0){
     // search -> retorna um valor inteiro, indicando a posição do inicio da primeira
     // ocorrência de expReg dentro de instStr. Se nenhuma ocorrencia for encontrada o método retornara -1
     // instStr.search(expReg);
     if ((lchar.search(expr) != 0) || (lchar>3)){
     val.value = "";
     }
     
  }else if(i==1){
      
      if(lchar.search(expr) != 0){
      // substring(indice1,indice2)
      // indice1, indice2 -> será usado para delimitar a string
      var tst1 = val.value.substring(0,(i));
      val.value = tst1;    
       continue;   
      }
      
      if ((nchar != '/') && (nchar != '')){
      var tst1 = val.value.substring(0, (i)+1);
    
     if(nchar.search(expr) != 0) 
      var tst2 = val.value.substring(i+2, pass.length);
     else
      var tst2 = val.value.substring(i+1, pass.length);
 
     val.value = tst1 + '/' + tst2;
      }
 
   }else if(i==4){
   
    if(lchar.search(expr) != 0){
     var tst1 = val.value.substring(0, (i));
     val.value = tst1;
     continue;   
    }
  
    if ((nchar != '/') && (nchar != '')){
     var tst1 = val.value.substring(0, (i)+1);
 
     if(nchar.search(expr) != 0) 
      var tst2 = val.value.substring(i+2, pass.length);
     else
      var tst2 = val.value.substring(i+1, pass.length);
 
     val.value = tst1 + '/' + tst2;
    }
       }
  
    if(i>=6){
     if(lchar.search(expr) != 0) {
     var tst1 = val.value.substring(0, (i));
     val.value = tst1;   
     }
    }
  }
 
     if(pass.length==10)
  validaData(val);
   return true;
}  

    

function mascara_hora(hora){
              var myhora = '';
              myhora = myhora + hora;
              if (myhora.length == 2){
                  myhora = myhora + ':';
                  document.forms[0].cxhora.value = myhora;
              }
              //if (myhora.length == 5){
                  //verifica_hora();
              //}
          }
          
function verifica_hora(){
              hrs = (document.forms[0].cxhora.value.substring(0,2));
              min = (document.forms[0].cxhora.value.substring(3,5));
             
              //alert('hrs '+ hrs);
              //alert('min '+ min);

                situacao = "";
              // verifica data e hora
              if ((hrs < 00 ) || (hrs > 23) || ( min < 00) ||( min > 59)){
                  situacao = "falsa";
              }
              
              if (document.forms[0].cxhora.value == "") {
                  situacao = "falsa";
              }

              if (situacao == "falsa") {
                  alert("Hora inválida!");
                  document.forms[0].cxhora.focus();
              }
          }

function validaCampoNum(event)
 
{
var BACKSPACE= 8;
 
var key;
 
var tecla;
 
 
CheckTAB=true;
 
if(navigator.appName.indexOf("Netscape")!= -1)
 
tecla= event.which;
 
else
 
tecla= event.keyCode;
 
 
key = String.fromCharCode( tecla);
//alert( 'key: ' + tecla + ' -> campo: ' + campo.value);
 
 
if ( tecla == 13 )
 
return false;

if ( tecla == BACKSPACE || tecla == 0 ) 
 
return true;
 
return ( isNum(key));
 
} 

function isNum( caractere )
 
{
 
	var strValidos = "0123456789"
 
	if ( strValidos.indexOf( caractere ) == -1 )
 
		return false;
 
return true;
 
}

function handleEnter (field, event) {
		var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
		if (keyCode == 13) {
			var i;
			for (i = 0; i < field.form.elements.length; i++)
				if (field == field.form.elements[i])
					break;
			i = (i + 1) % field.form.elements.length;
			field.form.elements[i].focus();
			return false;
		}
		else
		return true;
	}

function FormataValor(objeto,teclapres,tammax,decimais) 
{

	var tecla			= teclapres.keyCode;
	var tamanhoObjeto	= objeto.value.length;

	if ((tecla == 8) && (tamanhoObjeto == tammax))
	{
		tamanhoObjeto = tamanhoObjeto - 1 ;
	}



if (( tecla == 8 || tecla == 88 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 ) && ((tamanhoObjeto+1) <= tammax))
	{

		vr	= objeto.value;
		vr	= vr.replace( "/", "" );
		vr	= vr.replace( "/", "" );
		vr	= vr.replace( ",", "" );
		vr	= vr.replace( ".", "" );
		vr	= vr.replace( ".", "" );
		vr	= vr.replace( ".", "" );
		vr	= vr.replace( ".", "" );
		tam	= vr.length;
		
		if (tam < tammax && tecla != 8)
		{
			tam = vr.length + 1 ;
		}

		if ((tecla == 8) && (tam > 1))
		{
			tam = tam - 1 ;
			vr = objeto.value;
			vr = vr.replace( "/", "" );
			vr = vr.replace( "/", "" );
			vr = vr.replace( ",", "" );
			vr = vr.replace( ".", "" );
			vr = vr.replace( ".", "" );
			vr = vr.replace( ".", "" );
			vr = vr.replace( ".", "" );
		}
	
		//Cálculo para casas decimais setadas por parametro
		if ( tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 )
		{
			if (decimais > 0)
			{
				if ( (tam <= decimais) )
				{ 
					objeto.value = ("0," + vr) ;
				}
				if( (tam == (decimais + 1)) && (tecla == 8))
				{
					objeto.value = vr.substr( 0, (tam - decimais)) + ',' + vr.substr( tam - (decimais), tam ) ;	
				}
				if ( (tam > (decimais + 1)) && (tam <= (decimais + 3)) &&  ((vr.substr(0,1)) == "0"))
				{
					objeto.value = vr.substr( 1, (tam - (decimais+1))) + ',' + vr.substr( tam - (decimais), tam ) ;
				}
				if ( (tam > (decimais + 1)) && (tam <= (decimais + 3)) &&  ((vr.substr(0,1)) != "0"))
				{
				    objeto.value = vr.substr( 0, tam - decimais ) + ',' + vr.substr( tam - decimais, tam ) ; 
				}
				if ( (tam >= (decimais + 4)) && (tam <= (decimais + 6)) )
				{
			 		objeto.value = vr.substr( 0, tam - (decimais + 3) ) + '.' + vr.substr( tam - (decimais + 3), 3 ) + ',' + vr.substr( tam - decimais, tam ) ;
				}
			 	if ( (tam >= (decimais + 7)) && (tam <= (decimais + 9)) )
				{
			 		objeto.value = vr.substr( 0, tam - (decimais + 6) ) + '.' + vr.substr( tam - (decimais + 6), 3 ) + '.' + vr.substr( tam - (decimais + 3), 3 ) + ',' + vr.substr( tam - decimais, tam ) ;
				}
				if ( (tam >= (decimais + 10)) && (tam <= (decimais + 12)) )
				{
			 		objeto.value = vr.substr( 0, tam - (decimais + 9) ) + '.' + vr.substr( tam - (decimais + 9), 3 ) + '.' + vr.substr( tam - (decimais + 6), 3 ) + '.' + vr.substr( tam - (decimais + 3), 3 ) + ',' + vr.substr( tam - decimais, tam ) ;
				}
				if ( (tam >= (decimais + 13)) && (tam <= (decimais + 15)) )
				{
			 		objeto.value = vr.substr( 0, tam - (decimais + 12) ) + '.' + vr.substr( tam - (decimais + 12), 3 ) + '.' + vr.substr( tam - (decimais + 9), 3 ) + '.' + vr.substr( tam - (decimais + 6), 3 ) + '.' + vr.substr( tam - (decimais + 3), 3 ) + ',' + vr.substr( tam - decimais, tam ) ;
				}
			}
			else if(decimais == 0)
			{
				if ( tam <= 3 )
				{ 
			 		objeto.value = vr ;
				}
				if ( (tam >= 4) && (tam <= 6) )
				{
					if(tecla == 8)
					{
						objeto.value = vr.substr(0, tam);
						window.event.cancelBubble = true;
						window.event.returnValue = false;
					}
					objeto.value = vr.substr(0, tam - 3) + '.' + vr.substr( tam - 3, 3 ); 
				}
				if ( (tam >= 7) && (tam <= 9) )
				{
					if(tecla == 8)
					{
						objeto.value = vr.substr(0, tam);
						window.event.cancelBubble = true;
						window.event.returnValue = false;
					}
					objeto.value = vr.substr( 0, tam - 6 ) + '.' + vr.substr( tam - 6, 3 ) + '.' + vr.substr( tam - 3, 3 ); 
				}
				if ( (tam >= 10) && (tam <= 12) )
				{
			 		if(tecla == 8)
					{
						objeto.value = vr.substr(0, tam);
						window.event.cancelBubble = true;
						window.event.returnValue = false;
					}
					objeto.value = vr.substr( 0, tam - 9 ) + '.' + vr.substr( tam - 9, 3 ) + '.' + vr.substr( tam - 6, 3 ) + '.' + vr.substr( tam - 3, 3 ); 
				}

				if ( (tam >= 13) && (tam <= 15) )
				{
					if(tecla == 8)
					{
						objeto.value = vr.substr(0, tam);
						window.event.cancelBubble = true;
						window.event.returnValue = false;
					}
					objeto.value = vr.substr( 0, tam - 12 ) + '.' + vr.substr( tam - 12, 3 ) + '.' + vr.substr( tam - 9, 3 ) + '.' + vr.substr( tam - 6, 3 ) + '.' + vr.substr( tam - 3, 3 ) ;
				}			
			}
		}
	}
	else if((window.event.keyCode != 8) && (window.event.keyCode != 9) && (window.event.keyCode != 13) && (window.event.keyCode != 35) && (window.event.keyCode != 36) && (window.event.keyCode != 46))
		{
			window.event.cancelBubble = true;
			window.event.returnValue = false;
		}
}

function cpfcnpj(){ 
    if(document.forms[0].cxcgc_cpf.value.length == 3){ 
        document.forms[0].cxcgc_cpf.value = document.forms[0].cxcgc_cpf.value + '.'; 
        return false; 
    } 
    if(document.forms[0].cxcgc_cpf.value.length == 7){ 
        document.forms[0].cxcgc_cpf.value = document.forms[0].cxcgc_cpf.value + '.'; 
        return false; 
    } 
    if(document.forms[0].cxcgc_cpf.value.length == 11){ 
        document.forms[0].cxcgc_cpf.value = document.forms[0].cxcgc_cpf.value + '-'; 
        return false; 
    } 
    if(document.forms[0].cxcgc_cpf.value.length == 15){ 
        p0=document.forms[0].cxcgc_cpf.value.charAt(0); 
        p1=document.forms[0].cxcgc_cpf.value.charAt(1); 
        p2=document.forms[0].cxcgc_cpf.value.charAt(2); 
        p3=document.forms[0].cxcgc_cpf.value.charAt(4); 
        p4=document.forms[0].cxcgc_cpf.value.charAt(5); 
        p5=document.forms[0].cxcgc_cpf.value.charAt(6); 
        p6=document.forms[0].cxcgc_cpf.value.charAt(8); 
        p7=document.forms[0].cxcgc_cpf.value.charAt(9); 
        p8=document.forms[0].cxcgc_cpf.value.charAt(10); 
        p9=document.forms[0].cxcgc_cpf.value.charAt(12); 
        p10=document.forms[0].cxcgc_cpf.value.charAt(13); 
        p11=document.forms[0].cxcgc_cpf.value.charAt(14); 
        document.forms[0].cxcgc_cpf.value = ''; 
        document.forms[0].cxcgc_cpf.value = p0 + p1 + '.' + p2 + p3 + p4 + '.' + p5 + p6 + p7 + '/' + p8 + p9 + p10 + p11 + '-'; 
        p0=''; 
        p1=''; 
        p2=''; 
        p3=''; 
        p4=''; 
        p5=''; 
        p6=''; 
        p7=''; 
        p8=''; 
        p9=''; 
        p10=''; 
        p11=''; 
        return false; 
    } 
} 

// a função principal de validação 
function validar(obj) { // recebe um objeto 
    var s = (obj.value).replace(/\D/g,''); 
    var tam=(s).length; // removendo os caracteres não numéricos 
    if (!(tam==11 || tam==14)){ // validando o tamanho 
        alert("'"+s+"' Não é um CPF ou um CNPJ válido!" ); // tamanho inválido 
        return false; 
    } 
     
// se for CPF 
    if (tam==11 ){ 
        if (!validaCPF(s)){ // chama a função que valida o CPF 
            alert("'"+s+"' Não é um CPF válido!" ); // se quiser mostrar o erro 
            obj.select();  // se quiser selecionar o campo em questão 
            return false; 
        } 
        //alert("'"+s+"' É um CPF válido!" ); // se quiser mostrar que validou         
        obj.value=maskCPF(s);    // se validou o CPF mascaramos corretamente 
		return true; 
    } 
      
// se for CNPJ             
    if (tam==14){ 
        if(!validaCNPJ(s)){ // chama a função que valida o CNPJ 
            alert("'"+s+"' Não é um CNPJ válido!" ); // se quiser mostrar o erro 
            obj.select();    // se quiser selecionar o campo enviado 
            return false;             
        } 
        //alert("'"+s+"' É um CNPJ válido!" ); // se quiser mostrar que validou                 
        obj.value=maskCNPJ(s);    // se validou o CNPJ mascaramos corretamente 
		return true; 
    } 
} 

function validaCPF(s) { 
    var c = s.substr(0,9); 
    var dv = s.substr(9,2); 
    var d1 = 0; 
    for (var i=0; i<9; i++) { 
        d1 += c.charAt(i)*(10-i); 
     } 
    if (d1 == 0) return false; 
    d1 = 11 - (d1 % 11); 
    if (d1 > 9) d1 = 0; 
    if (dv.charAt(0) != d1){ 
        return false; 
    } 
    d1 *= 2; 
    for (var i = 0; i < 9; i++)    { 
         d1 += c.charAt(i)*(11-i); 
    } 
    d1 = 11 - (d1 % 11); 
    if (d1 > 9) d1 = 0; 
    if (dv.charAt(1) != d1){ 
        return false; 
    } 
    return true; 
} 

// Função que valida CNPJ 
// O algorítimo de validação de CNPJ é baseado em cálculos 
// para o dígito verificador (os dois últimos) 
// Não entrarei em detalhes de como funciona 
function validaCNPJ(CNPJ) { 
    var a = new Array(); 
    var b = new Number; 
    var c = [6,5,4,3,2,9,8,7,6,5,4,3,2]; 
    for (i=0; i<12; i++){ 
        a[i] = CNPJ.charAt(i); 
        b += a[i] * c[i+1]; 
    } 
    if ((x = b % 11) < 2) { a[12] = 0 } else { a[12] = 11-x } 
    b = 0; 
    for (y=0; y<13; y++) { 
        b += (a[y] * c[y]); 
    } 
    if ((x = b % 11) < 2) { a[13] = 0; } else { a[13] = 11-x; } 
    if ((CNPJ.charAt(12) != a[12]) || (CNPJ.charAt(13) != a[13])){ 
        return false; 
    } 
    return true; 
} 


    // Função que permite apenas teclas numéricas 
    // Deve ser chamada no evento onKeyPress desta forma 
    // return (soNums(event)); 
function soNums(e) 
{ 
    if (document.all){var evt=event.keyCode;} 
    else{var evt = e.charCode;} 
    if (evt <20 || (evt >47 && evt<58)){return true;} 
    return false; 
} 

//    função que mascara o CPF 
function maskCPF(CPF){ 
    return CPF.substring(0,3)+"."+CPF.substring(3,6)+"."+CPF.substring(6,9)+"-"+CPF.substring(9,11); 
} 

//    função que mascara o CNPJ 
function maskCNPJ(CNPJ){ 
    return CNPJ.substring(0,2)+"."+CNPJ.substring(2,5)+"."+CNPJ.substring(5,8)+"/"+CNPJ.substring(8,12)+"-"+CNPJ.substring(12,14);     
} 

