//<!--

// Limpar_Campo --> Limpa um campo
function Limpar_Campo(Campo){
  Campo.value = "";
}

// Invalidar_Campo --> Limpa o campo, mantém foco e envia mensagem de erro
function Invalidar_Campo(Campo,Msg){
  alert(Msg);
  Campo.value = "";
  Campo.focus();
  return(false);
}

// Formatar_Cep --> Formatar campo CEP
function Formatar_Cep(Campo, teclapres){
  var tecla = teclapres.keyCode;
  var vr = new String(Campo.value);
  vr = vr.replace("-", "");
  tam = vr.length + 1;
  if (tecla != 9 && tecla != 8){
    if (tam > 5 && tam < 9)
      Campo.value = vr.substr(0, 5) + '-' + vr.substr(5, tam);
  }
}

// Formatar_Data --> Formatar campo Data
function Formatar_Data(Campo, teclapres){
  var tecla = teclapres.keyCode;
  var vr = new String(Campo.value);
  vr = vr.replace("/", "");
  vr = vr.replace("/", "");
  tam = vr.length + 1;
  if (tecla != 9 && tecla != 8){
    if (tam > 2 && tam < 5)
      Campo.value = vr.substr(0, 2) + '/' + vr.substr(2, tam);
    if (tam >= 5 && tam <=10)
      Campo.value = vr.substr(0,2) + '/' + vr.substr(2,2) + '/' + vr.substr(4,4);
  }
}

// Formatar_Hora --> Formatar campo Hora
function Formatar_Hora(Campo, teclapres){
  var tecla = teclapres.keyCode;
  var vr = new String(Campo.value);
  vr = vr.replace(":", "");
  vr = vr.replace(":", "");
  tam = vr.length + 1;
  if (tecla != 9 && tecla != 8){
    if (tam > 2 && tam < 5)
      Campo.value = vr.substr(0, 2) + ':' + vr.substr(2, tam);
    if (tam >= 5 && tam < 9)
      Campo.value = vr.substr(0,2) + ':' + vr.substr(2,2) + ':' + vr.substr(4,2);
  }
}

// Formatar_CPF --> Formatar campo CPF
function Formatar_CPF(Campo, teclapres){
  var tecla = teclapres.keyCode;
  var vr = new String(Campo.value);

  vr = vr.replace(".", "");
  vr = vr.replace(".", "");
  vr = vr.replace("-", "");

  tam = vr.length + 1;

//  var Alg = new Array("0","1","2","3","4","5","6","7","8","9");

  if (tecla != 9 && tecla != 8){

//    if (Alg.index(tecla) < 0)
//      Campo.value = vr.substr(0,tam-2);

    if (tam > 3 && tam < 7)
      Campo.value = vr.substr(0,3) + '.' + vr.substr(3,tam);
    if (tam >= 7 && tam < 10)
      Campo.value = vr.substr(0,3) + '.' + vr.substr(3,3) + '.' + vr.substr(6,tam-6);
    if (tam >= 10 && tam < 12)
      Campo.value = vr.substr(0,3) + '.' + vr.substr(3,3) + '.' + vr.substr(6,3) + '-' + vr.substr(9,tam-9);
  }
}

// Formatar_CNPJ --> Formatar campo CNPJ
function Formatar_CNPJ(Campo, teclapres){
  var tecla = teclapres.keyCode;

  var vr = new String(Campo.value);
  vr = vr.replace(".", "");
  vr = vr.replace(".", "");
  vr = vr.replace("/", "");
  vr = vr.replace("-", "");

  tam = vr.length + 1 ;

  if (tecla != 9 && tecla != 8){
    if (tam > 2 && tam < 6)
      Campo.value = vr.substr(0, 2) + '.' + vr.substr(2, tam);
    if (tam >= 6 && tam < 9)
      Campo.value = vr.substr(0,2) + '.' + vr.substr(2,3) + '.' + vr.substr(5,tam-5);
    if (tam >= 9 && tam < 13)
      Campo.value = vr.substr(0,2) + '.' + vr.substr(2,3) + '.' + vr.substr(5,3) + '/' + vr.substr(8,tam-8);
    if (tam >= 13 && tam < 15)
      Campo.value = vr.substr(0,2) + '.' + vr.substr(2,3) + '.' + vr.substr(5,3) + '/' + vr.substr(8,4)+ '-' + vr.substr(12,tam-12);
  }
}

// CalcularDV --> Calcular Dígito Verificador
function CalcularDV(Campo, iPeso){

  function Calcular_Peso(iPosicao, iPeso){
    //Pesos
    //CPF 11
    //CNPJ 9
    return (iPosicao % (iPeso - 1)) + 2;
  }

  var iTamCampo;
  var iPosicao, iDigito;
  var iSoma1 = 0;
  var iSoma2 = 0;
  var iDV1, iDV2;

  iTamCampo = Campo.length;

  for (iPosicao=1; iPosicao<=iTamCampo; iPosicao++){
    iDigito = Campo.substr(iPosicao-1, 1);
    iSoma1 = parseInt(iSoma1,10) + parseInt((iDigito * Calcular_Peso(iTamCampo - iPosicao, iPeso)),10);
    iSoma2 = parseInt(iSoma2,10) + parseInt((iDigito * Calcular_Peso(iTamCampo - iPosicao + 1, iPeso)),10);
  }

  iDV1 = 11 - (iSoma1 % 11);
  if (iDV1 > 9)
    iDV1 = 0;

  iSoma2 = iSoma2 + (iDV1 * 2);
  iDV2 = 11 - (iSoma2 % 11);
  if (iDV2 > 9)
    iDV2 = 0;

  Ret = (parseInt(iDV1 * 10,10) + parseInt(iDV2));

  Ret = "0" + Ret;
  Ret = Ret.substr(Ret.length - 2,Ret.length);

  return(Ret);
}

// rmvFormatChars --> Remove do campo os caracteres que não numéricos
function rmvFormatChars(sValor){
  var tam = sValor.length
  var saida = new String
  for (i=0;i<tam;i++)
    if (!isNaN(parseInt(sValor.substr(i,1))))
      saida = saida + String(sValor.substr(i,1));
  return (saida);
}

// Validar_CNPJ --> Validar campo de CNPJ
function Validar_CNPJ(Campo){
  var Err = "O número do CNPJ informado está incorreto";
  var v = rmvFormatChars(Campo.value);

  if (v.length != 14)
    return(Invalidar_Campo(Campo,Err));

  if (v.substr(12,2) != CalcularDV(v.substr(0,12), 9))
    return(Invalidar_Campo(Campo,Err));

  return(true);
}

// Validar_CPF --> Validar campo de CPF
function Validar_CPF(Campo){
  var Err = "O número do CPF informado está incorreto";
  var v = rmvFormatChars(Campo.value);

  if (v.length != 11)
    return(Invalidar_Campo(Campo,Err));

  if (v.substr(9,2) != CalcularDV(v.substr(0,9), 11))
    return(Invalidar_Campo(Campo,Err));

  return(true);
}

// Validar_Hora --> Validar campo de Hora
function Validar_Hora(Campo){
  var Err = "A hora está incorreta";
  var hora;
  hora = rmvFormatChars(Campo.value);
  var tam = hora.length;
  if (tam != 6)
    return(Invalidar_Campo(Campo,Err));

  var hr = hora.substr(0,2)
  var min = hora.substr (2,2)
  var seg = hora.substr (4,2)

  if ((hr > 23) || (min > 59) || (seg > 59))
    return(Invalidar_Campo(Campo,Err));

  return(true);
}

// Valid_Cep --> Validar campo de Cep
function Validar_Cep(Campo){
  var Err = "O Cep está incorreto";
  var cep;
  cep = rmvFormatChars(Campo.value);
  var tam = cep.length;
  if (tam != 8)
    return(Invalidar_Campo(Campo,Err));

  return(true);
}

// Atualizar_Cep --> Se o Cep for válido, atualizar informações relacionadas ao Cep
function Atualizar_Cep(Campo){
  if (Validar_Cep(Campo) == true) {
    Campo.form.form_comando.value = "cep";
    Campo.form.submit();
  }
}

// Valid_Data --> Validar campo de Data
function Validar_Data(Campo){
  var Err = "A data está incorreta";
  var data;
  data = rmvFormatChars(Campo.value);
  var tam = data.length;
  if (tam != 8)
    return(Invalidar_Campo(Campo,Err));

  var dia = data.substr(0,2)
  var mes = data.substr(2,2)
  var ano = data.substr(4,4)

  if ( (ano < 1900) || (mes < 1) || (mes > 12) )
    return(Invalidar_Campo(Campo,Err));

  var DiasMes = new Array(31,29,31,30,31,30,31,31,30,31,30,31);
  if ((dia < 1) || (dia > DiasMes[mes-1]))
    return(Invalidar_Campo(Campo,Err));

  return(true);
}

// Formatar_CPF_CNPJ --> Formata o campo como CPF ou CNPJ conforme o Tipo de Agente Externo
function Formatar_CPF_CNPJ(Campo, teclapres, Campo_Tipo){
  if (Campo_Tipo[0].checked == 1) // Pessoa Física
    Formatar_CPF(Campo,teclapres)
  else if (Campo_Tipo[1].checked == 1) // Pessoa Jurídica
    Formatar_CNPJ(Campo,teclapres);
}

// Validar_CPF_CNPJ --> Valida o campo como CPF ou CNPJ conforme o Tipo de Agente Externo
function Validar_CPF_CNPJ(Campo, Campo_Tipo){
  if (Campo_Tipo[0].checked == 1) // Pessoa Física
    Validar_CPF(Campo)
  else if (Campo_Tipo[1].checked == 1) // Pessoa Jurídica
    Validar_CNPJ(Campo);
}

// Valid_Form --> Validar Formulário (do lado Cliente)
function Validar_Form(F){

  function Obrig(Campo,Campo_Nome){

    if (Campo.value.length == 0){
      alert("O campo '" + Campo_Nome + "' precisa ser preenchido!");
      return(false);
    }
    else {
      // alert(Campo.value);
      return(true);
    }
  }
  // validar campos obrigatórios
  if (!Obrig(F.AgenteExt_CEP, "CEP")) return(false);

  // remover formatação - Somente quando o formulário já estiver validado!
//  F.AgenteExt_CEP.value = rmvFormatChars(F.AgenteExt_CEP.value);

  // permitir envio
  return(true);
}


