//formata data para evento de objetos html
function formataData(obj,formato){
    var data = obj.value;
    if(data=="")return false;
    if(data.indexOf("/")==-1){
    //analisa os formatos
    	if(formato=="mm/yyyy"){
    		if(data.length!=6){
    			alert('A <DATA> não se encontra no formato válido mm/yyyy');
    			obj.focus();
    			return false;
    		}else{
    			data = data.slice(0,2)+"/"+data.slice(2,6);
    		}
    	}else if(formato=="dd/mm/yyyy"){
    		if(data.length!=8){
		 	alert('A <DATA> não se encontra no formato válido dd/mm/yyyy');
		 	obj.focus();
		 	return false;
		}else{
			data=data.slice(0,2)+"/"+data.slice(2,4)+"/"+data.slice(4,8);
    		}
    	}
    }
    // verifica se o valor da data está válido
    if(validarData(data,formato)){
        obj.value=data;
        return true;
    }else{
    	if(formato=="dd/mm/yyyy")
    		alert('A <DATA> não está válida ou não está no formato dd/mm/aaaa');
    	else if(formato=="mm/yyyy")
    		alert('A <DATA> não se encontra no formato válido mm/yyyy');
    	obj.focus();
    	return false;
    }
}
//funcao para validar data
function validarData(d,formato) {
    //selecione expressão regular pelo formato
    if(formato=="mm/yyyy"){
        e = new RegExp("^[0-9]{1,2}\/([0-9]{2}|[0-9]{4})$");
        if (!e.test(d))
        return false;
        m = parseInt(d.split("/")[0], 10); // mes
    	a = parseInt(d.split("/")[1], 10); // ano
    }else if(formato=="dd/mm/yyyy"){
    	e = new RegExp("^[0-9]{1,2}\/[0-9]{1,2}\/([0-9]{2}|[0-9]{4})$");
    	if (!e.test(d))
        return false;
    	//converte o texto em inteiro para outras verificacoes
	j = parseInt(d.split("/")[0], 10); // dia
	m = parseInt(d.split("/")[1], 10); // mes
	a = parseInt(d.split("/")[2], 10); // ano
    }
    // se o ano esta composto de apenas 2 numeros verifica e completa os demais digitos
    if (a < 1000) {
        if (a < 89)a+=2000;
        else a+=1900;
    }
    // definicao do mes de fevereiro
    if (a%4 == 0 && a%100 !=0 || a%400 == 0) fev = 29;
    else fev = 28;
    // Número de dias por mes
    nbJours = new Array(31,fev,31,30,31,30,31,31,30,31,30,31);
    // retorna true ou false e testa de acordo com o formato
    if(formato=="mm/yyyy")
    	return ( m >= 1 && m <=12 );//verifica mes
    else if(formato=="dd/mm/yyyy")
    	return ( m >= 1 && m <=12 && j >= 1 && j <= nbJours[m-1] );//verifica dia e mes
}
/*
 * Formata a data em MM/AAAA
 */

function formatarData(campo,pTeclaPres){

  var digitado = document.getElementById(campo).value;
  wTecla = pTeclaPres.keyCode;
  
  //backspace
  if(wTecla!=8){
	  if(digitado.length>6){
		document.getElementById(campo).value = digitado.substr(0,6)
	  }
	
	  if(digitado.length>2 & digitado.length<4){
	     document.getElementById(campo).value = digitado.substr(0,2)+"/"+digitado.substr(2);	
	  }
  }//backspace
}

/* 
 * PULA PARA O PROXIMO CAMPO DO FORMULÁRIO 
 */
function proximoCampo(obj,campo,qtd) {
		
  switch (obj.value.length) {
    case qtd:
	document.getElementById(campo).focus();
	break;
  }
}

/* 
 * VERIFICA DIGITOS 
 */
var reDigits = /^\d+$/;

function doDigits(pStr){

	if (reDigits.test(pStr)) {
		alert(pStr + " contém apenas dígitos.");
	} else if (pStr != null && pStr != "") {
		alert("Caracter inválido para data.");
	}
}

/* USAR:
 * <INPUT maxlength="14" 
          size="25" 
          name="cpf_cnpj" 
          onkeypress="FormataCPF(document.FormCpf,'cpf_cnpj',11,8,5,2,event);">
 */
function FormataCPF(pForm,pCampo,pTamMax,pPos1,pPos2,pPosTraco,pTeclaPres){
	var wTecla, wVr, wTam;

	wTecla = pTeclaPres.keyCode;
	wVr = pForm[pCampo].value;
	wVr = wVr.toString().replace( "-", "" );
	wVr = wVr.toString().replace( ".", "" );
	wVr = wVr.toString().replace( ".", "" );
	wVr = wVr.toString().replace( "/", "" );
	wTam = wVr.length ;

	if(wTam < pTamMax && wTecla != 8) {
		wTam = wVr.length + 1 ;
	}

	if(wTecla == 8 ) {
 		wTam = wTam - 1 ;
	}

	if( wTecla == 8 || wTecla == 88 || wTecla >= 48 && wTecla <= 57 || wTecla >= 96 && wTecla <= 105 ){
		if( wTam <= 2 ){
			pForm[pCampo].value = wVr ;
		}
		if(wTam > pPosTraco && wTam <= pTamMax) {
			wVr = wVr.substr(0, wTam - pPosTraco) + '-' + wVr.substr(wTam - pPosTraco, wTam);
		}
		if( wTam == pTamMax){
			wVr = wVr.substr( 0, wTam - pPos1 ) + '.' + wVr.substr(wTam - pPos1, 3) + '.' + wVr.substr(wTam - pPos2, wTam);
		}	
		pForm[pCampo].value = wVr;

	}
}

/*
 * Filtro para dígitos
 */
function soNumero(evt) {
	evt = (evt) ? evt : window.event
	var charCode = (evt.which) ? evt.which : evt.keyCode
	if (charCode > 31 && (charCode < 48 || charCode > 57)) {
		return false
	}
	return true
}

function passa(obj,campo,qtd) {
		
  switch (obj.value.length) {
    case qtd:
	document.getElementsByName(campo).focus();
	break;
  }
}

function mostraComoCEP(campo){

	var cep = document.getElementById(campo);
				
	pt0 = cep.value.substr(0,5);
	pt1 = cep.value.substr(5,cep.value.length);
				
	document.getElementById(campo).value = pt0+"-"+pt1;
	
}

// USADA EM CEP
function formata(campo, mask, evt) {

alert('p');
 
 	if(document.all) { // Internet Explorer
    	key = evt.keyCode; 
    }else{ // Nestcape
        key = evt.which;
    }

	if (key == 8) {
		return true;
	}

 	string = campo.value;  
 	i = string.length;

 	if (i < mask.length) {
  		if (mask.charAt(i) == '?'){
       		return (key > 47 && key < 58);
    	}else{
       		if(mask.charAt(i) == '!'){  
       			return true;  
       		}
   			for (c = i; c < mask.length; c++){
         		if (mask.charAt(c) != '?' && mask.charAt(c) != '!')
         			campo.value = campo.value + mask.charAt(c);
      			else if (mask.charAt(c) == '!'){
                	return true;
       			}else{
         			return (key > 47 && key < 58);
          		}
       		}
    	}
  	}else 
  		return false;
}

function formatoCep(textField, key){
  wTecla = key.keyCode;
  if(wTecla!=8){
  	var tamanho = textField.value.length;
  	if(tamanho>8){

		textField.value = textField.value.substr(0,textField.value.length-1);
		return;

  	}else if(tamanho>5 & tamanho<8){
		pt0 = textField.value.substr(0,5);
		pt1 = textField.value.substr(5,textField.value.length);
		textField.value = pt0+"-"+pt1;
  	} 
  }
}

/* 
 * Filtra apenas caracteres. 
 */
function somenteNumeros(textField){
	var str = textField.value;
	var caracter = str.substr(str.length-1,str.length);
	
	if(caracter!=1){
		textField.value = textField.value.substr(0,str.length);
	}
}


function numeros(objeto,key){
    valor = key.keyCode;
   
    if(document.all) { // Internet Explorer
    	valor = key.keyCode; 
    }else{ // Nestcape
        valor = key.which;
    }

   if(valor==8){
   	  return true;
   }

   if(valor>=48 & valor<=57){
	// Não descartar.

	return true;
   }else{
	//alert('não é número');
	return false;
   }

}

function seOkFormataCEP(textField,key){

	if(document.all) { // Internet Explorer
    	valor = key.keyCode; 
    }else{ // Nestcape
        valor = key.which;
    }
    
    if(valor!=8){
    
    	if(numeros(textField,key)){
			var tamanho = textField.value.length;

  			if(tamanho>8){

				textField.value = textField.value.substr(0,textField.value.length-1);
				return true;

	  		}else if(tamanho>5 & tamanho<8){
				pt0 = textField.value.substr(0,5);
				pt1 = textField.value.substr(5,textField.value.length);
				textField.value = pt0+"-"+pt1;
				return true;
	  		}	

  		}else{
			return false;
  		}
    }
}

/* função para verificar email */
function checaEmail(emailStr) {
	if (emailStr.length == 0) {
    	return true;
    }
    var emailPat=/^(.+)@(.+)$/;
    var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
    var validChars="\[^\\s" + specialChars + "\]";
    var quotedUser="(\"[^\"]*\")";
    var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
    var atom=validChars + '+';
    var word="(" + atom + "|" + quotedUser + ")";
    var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
    var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$");
    var matchArray=emailStr.match(emailPat);
    if (matchArray == null) {
    	return false;
    }
    var user=matchArray[1];
    var domain=matchArray[2];
    if (user.match(userPat) == null) {
    	return false;
    }
    var IPArray = domain.match(ipDomainPat);
    if (IPArray != null) {
    	for (var i = 1; i <= 4; i++) {
        	if (IPArray[i] > 255) {
            	return false;
             }
        }
    	return true;
    }
    var domainArray=domain.match(domainPat);
    if (domainArray == null) {
    	return false;
    }
    var atomPat=new RegExp(atom,"g");
    var domArr=domain.match(atomPat);
    var len=domArr.length;
    if ((domArr[domArr.length-1].length < 2) ||
    	(domArr[domArr.length-1].length > 3)) {
        return false;
    }
    if (len < 2) {
    	return false;
    }
    return true;
}