//funçoes para formatar data e Telefone
function mascara(o,f){
    v_obj=o
    v_fun=f
    setTimeout("execmascara()",1)
}
function execmascara(){
    v_obj.value=v_fun(v_obj.value)
}
function telefone(v){
    v=v.replace(/\D/g,"")                 //Remove tudo o que não é dígito
    v=v.replace(/^(\d\d)(\d)/g,"($1) $2") //Coloca parênteses em volta dos dois primeiros dígitos
    v=v.replace(/(\d{4})(\d)/,"$1-$2")    //Coloca hífen entre o quarto e o quinto dígitos
    return v
}
function mcep(v){
    v=v.replace(/\D/g,"")                    //Remove tudo o que não é dígito
    v=v.replace(/^(\d{5})(\d)/,"$1-$2") 
    return v
}
function mdata(v){
    v=v.replace(/\D/g,"");                    //Remove tudo o que não é dígito
    v=v.replace(/(\d{2})(\d)/,"$1/$2");       
    v=v.replace(/(\d{2})(\d)/,"$1/$2");               
    v=v.replace(/(\d{2})(\d{2})$/,"$1$2");
    return v;
}
//fim das funçoes Data e Telefone

//funçoes para formatar e validar CPF e CNPJ
function numbersonly(myfield, e, dec) {
	var key;
	var keychar;
	
	if (window.event)
		key = window.event.keyCode;
	else if (e)
		key = e.which;
	else
		return true;
	
	keychar = String.fromCharCode(key);
	
	// control keys
	if ((key==null) || (key==0) || (key==8) ||
		(key==9) || (key==13) || (key==27) )
		return true;
	
	// numbers
	else if ((("0123456789").indexOf(keychar) > -1))
		return true;
	
	// decimal point jump
	else if (dec && (keychar == ".")) {
		myfield.form.elements[dec].focus();
		return false;
	}
	else
		return false;
}


function somenteNumeros(e){
//Alterada para funcionar no firefox.

	var validos = "0123456789";
	var codTecla;
	var tecla;
	
	if (window.event)
		codTecla = window.event.keyCode;
	else if (e)
		codTecla = e.which;
	else
		return true;
		
	tecla = String.fromCharCode(codTecla);
	
	//Teclas de Controle
	if ((codTecla==null) || (codTecla==0) || (codTecla==8) ||
		(codTecla==9) || (codTecla==13) || (codTecla==27) ){
		return true;
	}
	
	//Numeros
	if (validos.indexOf(tecla) > -1){
		return true;
	}
	
	return false;
}


function substitui(strIsso,strAquilo)
{
  var strOriginal = this.toString();
  var resultado = ""
  var intInicio, intFim;

  while(strOriginal.indexOf(strIsso) >= 0)
  {
    intInicio   = 0;
    intFim      = strOriginal.indexOf(strIsso);
    resultado  += strOriginal.substring(intInicio,intFim) + strAquilo;
    intInicio   = parseInt(intFim) + parseInt(strIsso.length);
    strOriginal = strOriginal.substring(intInicio,strOriginal.length);
  }
  resultado += strOriginal;
  return resultado;
}

String.prototype.substitui = substitui;

function validaIdentificador(obj){
	var vr = obj.value;
	vr = vr.substitui(".","");
	vr = vr.substitui("/","");
	vr = vr.substitui("-","");
	tam = vr.length;
	
	if (tam == 11){
	    if (validarCPF(vr) == false){
	    	alert("CPF inválido");
			obj.focus();
			return(false);
	    }
	}
	if (tam == 14){
		if (validarCGC(vr) == false){
	    	alert("CNPJ inválido");
			obj.focus();
			return(false);
	    }
	}
}


function formataIdentificador(obj, e){
	var vr = obj.value;
	vr = vr.substitui(".","");
	vr = vr.substitui("/","");
	vr = vr.substitui("-","");
	tam = vr.length;
	
	if (tam == 11){
		formataCpf(11, obj, e);
	}
	else{
		if (tam == 14){
			formataCnpj(14, obj, e);
		}
		else{
			if (tam > 0){
				alert("Informe corretamente o CPF");
				obj.focus();
				return(false);
			}
		}
	}
}

function formataCpf(tammax, obj, e) {

	if (somenteNumeros(e)) {
	 	//var tecla = window.event.keyCode;
	 
		var tecla;
		
		if (window.event)
			tecla = window.event.keyCode;
		else if (e)
			tecla = e.which;
		else
			return true;
		  
		 var vr = obj.value;
		 vr = vr.substitui('.','');
		 vr = vr.substitui('-','');
		 tam = vr.length;
		
		 if (tam < tammax && tecla != 8 && tecla != 0){ tam = vr.length + 1 ; }
		
		 if (tecla == 8 ){ tam = tam - 1 ; }
		  
		 if ( tecla == 0 || tecla == 8 || tecla == 13 || (tecla >= 48 && tecla <= 57) || (tecla >= 96 && tecla <= 105) ){
		   if ( tam <= 3 ){
		    obj.value = vr ; }
		   if ( (tam > 3) && (tam <= 7) ){
		    obj.value = vr.substr( 0, 3 ) + '.' + vr.substr( 3, 3 ) ; }
		   if ( (tam >= 7) && (tam <= 10) ){
		    obj.value = vr.substr( 0, 3 ) + '.' + vr.substr( 3, 3 ) + '.' + vr.substr( 6, 3 ) ; }
		   if ( (tam >= 10) && (tam <= 11) ){
		    obj.value = vr.substr( 0, 3 ) + '.' + vr.substr( 3, 3 ) + '.' + vr.substr( 6, 3 ) + '-' + vr.substr( 9, 2 ) ; }
		 }
		 return true;
	} else {
		return false;
	}
		

}

function formataCnpj(tammax, obj, e) {

	if (somenteNumeros(e)) {
	
		//var tecla = window.event.keyCode;
		var tecla;
	
		if (window.event)
			tecla = window.event.keyCode;
		else if (e)
			tecla = e.which;
		else
			return true;
	  
		var vr = obj.value;
		vr = vr.substitui(".","");
		vr = vr.substitui("/","");
		vr = vr.substitui("-","");
		tam = vr.length;
	
		if (tam < tammax && tecla != 8 && tecla != 0){ tam = vr.length + 1 ; }
		if (tecla == 8 ){ tam = tam - 1 ; }
		if ( tecla == 0 || tecla == 8 || tecla == 13 ||(tecla >= 48 && tecla <= 57) || (tecla >= 96 && tecla <= 105) ){
			if ( tam <= 2 ){ 
				obj.value = vr ; }
			if ( (tam > 2) && (tam <= 5) ){
				obj.value = vr.substr( 0, 2) + '.' + vr.substr( 2, 3 ) ; }
			if ( (tam >= 6) && (tam <= 8) ){
				obj.value = vr.substr( 0, 2) + '.' + vr.substr( 2, 3 ) + '.' + vr.substr( 5, 3 ) ; }
			if ( (tam >= 9) && (tam <= 12) ){
				obj.value = vr.substr( 0, 2) + '.' + vr.substr( 2, 3 ) + '.' + vr.substr( 5, 3 ) + '/' + vr.substr( 8, 4 ) ; }
			if ( (tam >= 13) && (tam <= 14) ){
				obj.value = vr.substr( 0, 2) + '.' + vr.substr( 2, 3 ) + '.' + vr.substr( 5, 3 ) + '/' + vr.substr( 8, 4 ) + '-' + vr.substr( 12, 2 ) ; }
		}  
		return true;
	} else {
		return false;
	}
}


function validarCGC(strCGC)
{
  var d1,d4,d2,Conta,fator,sobra,digito1,digito2;
  var check;

  strCGC = strCGC.substitui(".","");
  strCGC = strCGC.substitui("/","");
  strCGC = strCGC.substitui("-","");

  if (strCGC.length != 14)
  {
    return false;
  }

  d1 = 0;  //valor padrao
  d4 = 0;  //valor padrao
  d2 = 1;  //valor padrao
  for(conta= 0; conta <=strCGC.length -3; conta++)
  {
      if (d2 < 5)
      {
        fator = 6 - d2
      }
      else
      {
        fator = 14 - d2;
      }

      d1 = d1 + strCGC.substr(conta,1)* fator;
      if (d2 < 6)
      {
        fator = 7 - d2;
      }
      else
      {
        fator = 15 - d2;
      }
      d4 = d4 + strCGC.substr(conta,1) * fator;
      d2 = d2 + 1;
  }
  sobra = (d1 % 11);
  if(sobra < 2)
  {
    digito1 = 0;
  }
  else
  {
    digito1 = 11 - sobra;
  }
  d4 = d4 + (2 * digito1);
  sobra = (d4 % 11);

  if (sobra < 2)
  {
    digito2 = 0;
  }
  else
  {
    digito2 = 11 - sobra;
  }
  check  = new String(digito1) + new String(digito2);
  return (check == strCGC.substr(strCGC.length-2,2));
}

function validarCPF(strCPF)
{
  var strInvalidos = '11111111111 22222222222 33333333333 44444444444 55555555555 66666666666 77777777777 88888888888 99999999999 00000000000';
  var contador, num1, num2, posicao,fator;
  var cpf,digitos;

  strCPF = strCPF.substitui('.','');
  strCPF = strCPF.substitui('-','');

  if (strCPF.length != 11 || strInvalidos.indexOf(strCPF) >= 0)
  {
    return false;
  }
  else
  {
    digitos = strCPF.substr(9,2);
    cpf     = strCPF.substr(0,9);
    fator   = 0;
    for(contador = 1; contador <= cpf.length; contador++)
    {
      fator = fator + contador * cpf.charAt(contador-1);
    }
    num1  = fator % 11;
    if(num1 == 10)
    {
      num1 = 0;
    }

    cpf     = strCPF.substr(0,9) + parseInt(num1);
    fator   = 0;
    posicao = 0;

    for(contador = cpf.length; contador >= 1; contador--)
    {
      fator   = fator + (contador + 1) * cpf.charAt(posicao);
      posicao = posicao + 1;
    }

    num2 = (fator * 10) % 11;
    if (num2 == 10)
    {
      num2 = 0;
    }

    return (new String(num1) + new String(num2) == digitos);
  }
}
//fim das funçoes para CPF/CNPJ

//função para digitar somente numeros
function Tecla(e)
{
	if (document.all) 
		var tecla = event.keyCode;
	else if(document.layers) 
		var tecla = e.which;
		if (tecla > 47 && tecla < 58)
			return true;
		else
			{
				if (tecla != 8) 
					event.keyCode = 0;
					
				else
					return true;
			}
}
//fim da função numeros


function checkForm(form) {
	var campo;
	var campo_valor;
	var campo_nome;
	var msg = '';
	var erro = 0;
	var icampo = -1;
	var pEmail = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/;

	for (var i = 0; i < form.length; i++) {
		try {
			campo = form[i].id.split('|');
			campo_valor = form[i].value;
			campo_nome = campo[1].toUpperCase();

			if (campo[0] == "v") {
				/* CAMPO VAZIO */
				if ((campo_valor.length < 1) || (campo_valor == "[]")) {
					erro++;
					msg += '- O campo ' + campo_nome + ' deve ser preenchido.\n';
					if (icampo == -1) {
						icampo = i;
					}
				}
				/* VALIDAÇÃO ESPECÍFICA */
				else if (campo.length > 2) {
					/* E-MAIL */
					if ( (campo[2] == 1) && (!pEmail.test(campo_valor)) ) {
						erro++;
						msg += '- O campo ' + campo_nome + ' deve ser preenchido com um e-mail válido.\n';
						if (icampo == -1) {
							icampo = i;
						}
					}
					/* NUMÉRICO */
					else if ( (campo[2] == 2) && (isNaN(campo_valor)) ) {
						erro++;
						msg += '- O campo ' + campo_nome + ' deve conter somente números.\n';
						if (icampo == -1) {
							icampo = i;
						}
					}
				}
			}
		} catch(e) {}
	}
	if (erro > 0)
	{
		alert('Atenção, foi detectado '+erro+' erro(s) no preenchimento do formulário:\n\n'+msg);
		form[icampo].focus();
		return false;
	} else
	{
		return true;
	}
}

