var currentTab = 0;
showTab(currentTab);

// Objetos DOM padrões
//const tipo_div = document.getElementById('form-tipo')
const div_pessoa = document.createElement("div");
const title_form_pessoa = document.createElement("p");
const hr_contador = document.createElement("hr");
const div_row_pessoa = document.createElement("div");
const div_col = document.createElement("div");
const input_pessoa = document.createElement("input");

div_pessoa.className = " mt-5 ";
title_form_pessoa.className = "title-form-contador";
hr_contador.className = "hr-contador";
div_row_pessoa.className = " row col-12";
div_col.className = "col";
input_pessoa.className =
  " elementor-field elementor-size-sm  elementor-field-textual";
input_pessoa.type = "text";
input_pessoa.oninput =
  "this.className=' elementor-field elementor-size-sm  elementor-field-textual'";

// CRIA FORMULÁRIO CPF TAB 1
function handleFisica() {
  document.getElementById("form-tipo").innerHTML = "";
  const tipo_div = document.getElementById("form-tipo");
  const div_pessoa = document.createElement("div");
  const title_form_pessoa = document.createElement("p");
  const hr_contador = document.createElement("hr");
  const div_row_pessoa = document.createElement("div");
  const div_col = document.createElement("div");
  const input_pessoa = document.createElement("input");

  div_pessoa.className = " mt-2 ";
  title_form_pessoa.className = "title-form-contador";
  hr_contador.className = "hr-contador";
  div_row_pessoa.className = " row p-0 m-0 col-12";
  div_col.className = "col m-0 p-0";
  input_pessoa.className =
    " elementor-field elementor-size-sm  elementor-field-textual";
  input_pessoa.type = "text";
  input_pessoa.oninput =
    "this.className=' elementor-field elementor-size-sm  elementor-field-textual'";

  let div_pfisica = div_pessoa.cloneNode(true);
  let title_form_pfisica = title_form_pessoa.cloneNode(true);
  let hr_contador_pfisica = hr_contador.cloneNode(true);
  let div_row_pfisica = div_row_pessoa.cloneNode(true);
  let div_col_pfisica = div_col.cloneNode(true);
  let div_col_pfisica2 = div_col.cloneNode(true);
  let div_col_pfisica3 = div_col.cloneNode(true);
  let input_cpf = input_pessoa.cloneNode(true);
  let input_data_nascimento = input_pessoa.cloneNode(true);
  let input_NomeCompleto = input_pessoa.cloneNode(true);
  let label_nome = document.createElement("label");
  let label_data = document.createElement("label");
  let label_cpf = document.createElement("label");

  div_pfisica.id = "div-fisica";
  label_cpf.innerHTML = "CPF:";
  div_col_pfisica3.className = "col-12";
  title_form_pfisica.innerHTML = "Dados Pessoa Fisica";
  input_cpf.placeholder = "CPF";
  input_cpf.name = "cpf";
  input_cpf.id = "cpf";
  input_data_nascimento.placeholder = "Data Nascimento";
  input_data_nascimento.name = "data_nascimento";
  input_data_nascimento.id = "data_nascimento";
  input_data_nascimento.className = "w-100";
  label_data.innerHTML = "Data de Nascimento";
  label_data.className = " col-12";
  tipo_div.empty;
  tipo_div.append(div_pfisica);
  div_pfisica.appendChild(div_row_pfisica);
  div_row_pfisica.appendChild(div_col_pfisica3);
  div_col_pfisica3.appendChild(label_data);
  div_col_pfisica3.appendChild(input_data_nascimento);

  $("#cpf").inputmask("mask", {
    mask: ["999.999.999-99", "99.999.999"],
  });
  $("#data_nascimento").inputmask("mask", {
    mask: ["99-99-9999", "99.99.9999"],
  });

  // document.getElementById('dado-juridico').style.display = 'none'
  // document.getElementById('dado-fisico').style.display = 'block'
}

function handleJuridica() {
  const tipo_div = document.getElementById("form-tipo");
  const div_pessoa = document.createElement("div");
  const title_form_pessoa = document.createElement("p");
  const hr_contador = document.createElement("hr");
  const div_row_pessoa = document.createElement("div");
  const div_col = document.createElement("div");
  const input_pessoa = document.createElement("input");

  div_pessoa.className = " mt-2 ";
  title_form_pessoa.className = "title-form-contador";
  hr_contador.className = "hr-contador";
  div_row_pessoa.className = " row p-0 m-0 col-12";
  div_col.className = "col m-0";
  input_pessoa.className =
    " elementor-field elementor-size-sm  elementor-field-textual";
  input_pessoa.type = "text";
  input_pessoa.oninput =
    "this.className=' elementor-field elementor-size-sm  elementor-field-textual'";

  document.getElementById("form-tipo").innerHTML = "";

  let input_data_nascimento = input_pessoa.cloneNode(true);
  let label_data = document.createElement("label");
  let div_pjuridico = div_pessoa.cloneNode(true);
  let title_form_pjuridico = title_form_pessoa.cloneNode(true);
  let hr_contador_pjuridico = hr_contador.cloneNode(true);
  let div_row_pjuridico = div_row_pessoa.cloneNode(true);
  let div_col_pjuridico = div_col.cloneNode(true);
  let div_col_pjuridico2 = div_col.cloneNode(true);
  let div_col_pjuridico3 = div_col.cloneNode(true);
  let input_cnpj = input_pessoa.cloneNode(true);
  let input_NomeEmpresa = input_pessoa.cloneNode(true);
  let label_nome = document.createElement("label");
  let label_cnpj = document.createElement("label");

  input_data_nascimento.placeholder = "Data Nascimento";
  input_data_nascimento.name = "data_nascimento";
  input_data_nascimento.id = "data_nascimento";
  label_data.innerHTML = "Data de Nascimento";
  div_col_pjuridico.className = "col-12";
  div_pjuridico.id = "div-juridico";
  label_cnpj.innerHTML = "CNPJ:";
  title_form_pjuridico.innerHTML = "Dados Pessoa Juridica";
  label_nome.innerHTML = "CPF do Representante:";
  input_NomeEmpresa.placeholder = "CPF do Representante";
  input_NomeEmpresa.name = "cpf";
  input_NomeEmpresa.id = "cpf";
  input_cnpj.placeholder = "CNPJ";
  input_cnpj.name = "cnpj";
  input_cnpj.id = "cnpj";
  tipo_div.empty;
  tipo_div.append(div_pjuridico);
  div_pjuridico.appendChild(div_row_pjuridico);
  div_row_pjuridico.appendChild(div_col_pjuridico);
  div_row_pjuridico.appendChild(div_col_pjuridico3);
  div_col_pjuridico.appendChild(label_nome);
  div_col_pjuridico.appendChild(input_NomeEmpresa);
  div_col_pjuridico2.appendChild(label_cnpj);
  div_col_pjuridico2.appendChild(input_cnpj);
  div_col_pjuridico3.appendChild(label_data);
  div_col_pjuridico3.appendChild(input_data_nascimento);

  $("#cpf").inputmask("mask", {
    mask: ["999.999.999-99", "99.999.999"],
  });
  $("#data_nascimento").inputmask("mask", {
    mask: ["99-99-9999", "99.99.9999"],
  });
}

let dominioDisponivel = false;
let contParceiro = false;

function handleCampanha(x) {
  let tipo_campanha_title = document.getElementById("tipo_campanha_title");
  let id_campanha = document.getElementById("id_campanha");
  let nome_campanha = document.getElementById("nome_campanha");
  let info_campanha = document.getElementById("info-campanha");
  if (x == 0) {
    tipo_campanha_title.textContent = "Campanha Diamante";
    id_campanha.value = "1";
    nome_campanha.value = "DIAMANTE";
    info_campanha.innerHTML =
      "<h2>Vantages para o contador:</h2> <ul><li>100% do valor líquido da primeira mensalidade dos sistemas PJFIT Sales (Loja virtual, Delivery, PDV)</li><li>50% do valor da implantação do PJFIT ERP</li><li>12% à 20% de prêmio sobre as vendas de certificados digitais associadas ao seu código de campanha</li><li>3 certificados digitais A1 – 12 meses (e-CPF ou e-CNPJ)</li><li>R$ 2.500,00 de bônus em dinheiro na adesão à campanha</li><li>Sistema para gestão dos certificados de seus clientes</li></ul> <h4>Vantagens para seu cliente:</h4><ul><li>Descontos de 6% para compra/renovação de certificados digitais</li><li>Aplicativo para gestão de certificados e realização de assinaturas digitais</li></ul> ";
  } else if (x == 1) {
    tipo_campanha_title.textContent = "Campanha Ouro";
    id_campanha.value = "2";
    nome_campanha.value = "OURO";
    info_campanha.innerHTML =
      "<h2>Vantages para o contador:</h2> <ul><li>100% do valor líquido da primeira mensalidade dos sistemas PJFIT Sales (Loja virtual, Delivery, PDV)</li><li>50% do valor da implantação do PJFIT ERP</li><li>16% de prêmio sobre as vendas de certificados digitais associadas ao seu código de campanha</li><li>1 certificados digitais A1 – 12 meses (e-CPF ou e-CNPJ)</li><li>R$ 100,00 de bônus em dinheiro na adesão à campanha</li><li>Sistema para gestão dos certificados de seus clientes</li></ul> <h4>Vantagens para seu cliente:</h4><ul><li>Aplicativo para gestão de certificados e realização de assinaturas digitais</li></ul> ";
  } else if (x == 2) {
    tipo_campanha_title.textContent = "Campanha Prata";
    id_campanha.value = "3";
    nome_campanha.value = "PRATA";
    info_campanha.innerHTML =
      "<h2>Vantages para o contador:</h2> <ul><li>100% do valor líquido da primeira mensalidade dos sistemas PJFIT Sales (Loja virtual, Delivery, PDV)</li><li>50% do valor da implantação do PJFIT ERP</li><li>10% de prêmio sobre as vendas de certificados digitais associadas ao seu código de campanha</li><li>1 certificados digitais A1 – 12 meses (e-CPF ou e-CNPJ)</li><li>R$ 100,00 de bônus em dinheiro na adesão à campanha</li><li>Sistema para gestão dos certificados de seus clientes</li></ul> <h4>Vantagens para seu cliente:</h4><ul><li>Aplicativo para gestão de certificados e realização de assinaturas digitais</li><li>Descontos de 6% para compra/renovação de certificados digitais</li></ul> ";
  } else if (x == 3) {
    tipo_campanha_title.textContent = "Campanha Bronze";
    id_campanha.value = "4";
    nome_campanha.value = "Bronze";
    info_campanha.innerHTML =
      "<h2>Vantages para o contador:</h2> <ul><li>100% do valor líquido da primeira mensalidade dos sistemas PJFIT Sales (Loja virtual, Delivery, PDV)</li><li>50% do valor da implantação do PJFIT ERP</li><li>1 certificados digitais A1 – 12 meses (e-CPF ou e-CNPJ)</li><li>R$ 100,00 de bônus em dinheiro na adesão à campanha</li><li>Sistema para gestão dos certificados de seus clientes</li></ul> <h4>Vantagens para seu cliente:</h4><ul><li>Descontos de 16% para compra/renovação de certificados digitais</li><li>Aplicativo para gestão de certificados e realização de assinaturas digitais</li></ul> ";
  }
}

function showTab(n) {
  var x = document.getElementsByClassName("tab");
  x[n].style.display = "block";
  //... and fix the Previous/Next buttons:
  if (n == 0) {
  }
  var tab_processando = document.getElementsByClassName("tab_processando")
  if (n == x.length - 1 - tab_processando.length) {
    document.getElementById("nextBtn").className = "d-none";
    document.getElementById("submitForm").style.display = "block";
  } if(n == x.length) {
    document.getElementById("submitForm").style.display = "none";
  } else {
    document.getElementById("nextBtn").innerHTML =
      "Próximo <i class='fas fa-angle-right'></i>";
  }
  fixStepIndicator(n);
}

function nextPrev(n) {
  // This function will figure out which tab to display
  var x = document.getElementsByClassName("tab");
  // Exit the function if any field in the current tab is invalid:
  if (n == 1 && !validateForm()) return false;
  // Hide the current tab:
  x[currentTab].style.display = "none";
  // Increase or decrease the current tab by 1:
  currentTab = currentTab + n;
  var tab_processando = document.getElementsByClassName("tab_processando")
  // if you have reached the end of the form...
  if (currentTab >= (x.length - tab_processando.length)) {
    // ... the form gets submitted:
    return false;
  }
  // Otherwise, display the correct tab:
  showTab(currentTab);
}

function validateForm() {
  // This function deals with validation of the form fields
  var x,
    y,
    i,
    valid = true;
  x = document.getElementsByClassName("tab");
  y = x[currentTab].getElementsByTagName("input");
  z = x[currentTab].getElementsByTagName("select");
  if(!dominioDisponivel && contParceiro){
    valid = false
  }

  // A loop that checks every input field in the current tab:
  for (i = 0; i < y.length; i++) {
    // If a field is empty...
    if(y[i].getAttribute("notrequiredinput")){
      continue;
    }
    if (y[i].value == "" && y[i].readOnly == false && currentTab != 2) {
      // add an "invalid" class to the field:
      y[i].className += " invalid";
      // and set the current valid status to false
      valid = false;
    } else if (currentTab == 2) {
    }
  }
  // If the valid status is true, mark the step as finished and valid:
  if (valid) {
    document.getElementsByClassName("step")[currentTab].className += " finish";
  }
  return valid; // return the valid status
}

function fixStepIndicator(n) {
  // This function removes the "active" class of all steps...
  var i,
    x = document.getElementsByClassName("step");
  for (i = 0; i < x.length; i++) {
    x[i].className = x[i].className.replace(" active", "");
  }
  //... and adds the "active" class on the current step:
  x[n].className += " active";
}

$(document).ready(function () {
  var options = {
    onKeyPress: function (cpf, ev, el, op) {
      var masks = ["000.000.000-000", "00.000.000/0000-00"];
      $(".cpfOuCnpj").mask(cpf.length > 14 ? masks[1] : masks[0], op);

      cpf.length > 14 ? handleJuridica() : handleFisica();
    },
  };

  $(".cpfOuCnpj").length > 11
    ? $(".cpfOuCnpj").mask("00.000.000/0000-00", options)
    : $(".cpfOuCnpj").mask("000.000.000-00#", options);

  let select_default_value = document.getElementsByClassName("select");
  var i;
  for (i = 0; i < select_default_value.length; i++) {
    select_default_value[i].defaultValue = " ";
  }

  var inputNome = document.querySelector("#banco");
  inputNome.addEventListener("keypress", function (e) {
    var keyCode = e.keyCode ? e.keyCode : e.which;

    if (keyCode > 47 && keyCode < 58) {
      e.preventDefault();
    }
  });
  $(".numberonly").keypress(function (e) {
    var charCode = e.which ? e.which : event.keyCode;

    if (String.fromCharCode(charCode).match(/[^0-9]/g)) return false;
  });

  $("#cpf_form").inputmask("mask", {
    mask: ["999.999.999-99", "99.999.999"],
  });
  $("#cep").inputmask("mask", {
    mask: ["99999-999", "99.999.999"],
  });
  $("#data_nascimento_form").inputmask("mask", {
    mask: ["99-99-9999", "99.99.9999"],
  });

  $("#queroparticipar").on("click", function (e) {
    e.preventDefault();

    var data_nascimento = $("#data_nascimento");
    var cpfouCnpj = $("#cpfOuCnpj");
    console.log(cpfouCnpj.val().length);
    if (cpfouCnpj.val().length <= 0) {
      alert("CPF/CNPJ INVALIDO PARA CONSULTA!");
      return;
    }
    if (cpfouCnpj.val().length > 14) {
      var cpf = $("#cpf");
      var tipoPessoa = 1;
      console.log("TIPO PESSOA", cpf.val());
    } else {
      var tipoPessoa = 0;
      var cpf = $("#cpfOuCnpj");
      console.log("TIPO PESSOA", cpf);
    }
    var btn_consulta_enviando = document.getElementById("queroparticipar");
    btn_consulta_enviando.innerHTML = "Enviando...";
    $("#queroparticipar").prop("disabled", true);

    if (cpf.val().length < 11) {
      alert("CPF INVALIDO PARA CONSULTA");
      btn_consulta_enviando.innerHTML = "Quero Participar";
      $("#queroparticipar").prop("disabled", false);
      return "";
    }
    if (data_nascimento.val().length < 8) {
      alert("DATA DE NASCIMENTO INVALIDO PARA CONSULTA");
      btn_consulta_enviando.innerHTML = "Quero Participar";
      $("#queroparticipar").prop("disabled", false);
      return "";
    }

    var cnpj = "";
    if (tipoPessoa == "1") cnpj = $("#cpfOuCnpj").val();

    $.ajax({
      url: "https://app.pjfit.com.br/api/cert/v1/consultaContRFB",
      type: "GET",
      data: {
        cpf: cpf.val(),
        data_nascimento: data_nascimento.val(),
        tipoPessoa: tipoPessoa,
        cnpj: cnpj,
      },
      success: function (response) {
        // you can see the result from the console
        // tab of the developer tools
        var arr = response;
        console.log(arr);

        if (arr.resultado == "Sucesso") {
          btn_consulta_enviando.innerHTML = "Consultar Novamente";
          console.log("Sucesso na consulta RFB ", arr);
          $("#alertSuccessCons").toggleClass("d-block");
          $("#next").prop("disabled", false);
          btn_consulta_enviando.innerHTML = "Quero Participar";
          $("#queroparticipar").prop("disabled", false);
          $( "#nome_dominio_form" ).change(function() {
            dominioDisponivel = false
            $.ajax({
              url: "https://app.pjfit.com.br/api/cert/v1/consultaDominio",
              type: "GET",
              data: {
                dominio: $("#nome_dominio_form").val(),
              },
              success: function (response) {
                console.log(response)
                if(response.error === 'true'){
                  $("#nome_dominio_form").addClass("invalid");
                  $("#erroDominio").show();
                }else{
                  $("#nome_dominio_form").removeClass("invalid");
                  $("#erroDominio").hide();
                  dominioDisponivel = true
                }
              },
              error: function (xmr) {
                console.log(xmr)
              }
            });
          });

          if (tipoPessoa == "0") {
            $("#nome_titular").val(arr.resultConsulta);
            $("#tipo_pessoa_form").val(tipoPessoa);
            $("#nome_completo").val(arr.resultConsulta);
            $("#cpf_form").val(cpf.val());
            $("#data_nascimento_form").val(data_nascimento.val());
            $("#empresa").val(arr.resultConsulta);
            document.getElementById("div_empresa").style.display = "none";
            document.getElementById("div_cnpj_tab1").style.display = "none";
            document.getElementById("div_cnpj_tab1").innerHTML = "";
            $("#cpf_cnpj").val(cpf.val());
            if (!$("#nome_completo").val()) {
              btn_consulta_enviando.innerHTML = "Quero Participar";
              $("#queroparticipar").prop("disabled", false);
              alert(
                "Erro no formulário, por favor entre em contato com nosso suporte!"
              );
            }
          }

          if (tipoPessoa == "1") {
            $("#tipo_pessoa_form").val(tipoPessoa);
            $("#nome_completo").val(arr.resultConsulta);
            $("#nome_titular").val(arr.resultConsulta);
            $("#empresa").val(arr.nome_emp);
            $("#cpf_form").val(cpf.val());
            $("#data_nascimento_form").val(data_nascimento.val());
            $("#cnpj_form").val(cnpj);
            $("#cpf_cnpj").val(cnpj);
          }

          $("#contadorParceiro").modal("show");
        } else if (arr.resultado == "Erro") {
          btn_consulta_enviando.innerHTML = "Quero Participar";
          $("#queroparticipar").prop("disabled", false);
          console.log("Erro na consulta RFB ");
          alert("Erro ao realizar a consulta!");
          alert(arr.erro.mensagem);

          return;
        }
        if (arr.cliente == "false") {
        }
        $("#contadorParceiro").modal("show");
      },
      error: function (xmr) {
        $("#alertErroCons").toggleClass("d-block");
      },
    });
  });

  function limpa_formulário_cep() {
    // Limpa valores do formulário de cep.
    $("#rua").val("");
    $("#bairro").val("");
    $("#cidade").val("");
    $("#uf").val("");
    $("#ibge").val("");
  }

  //Quando o campo cep perde o foco.
  $("#cep").blur(function () {
    //Nova variável "cep" somente com dígitos.
    var cep = $(this).val().replace(/\D/g, "");

    //Verifica se campo cep possui valor informado.
    if (cep != "") {
      //Expressão regular para validar o CEP.
      var validacep = /^[0-9]{8}$/;

      //Valida o formato do CEP.
      if (validacep.test(cep)) {
        //Preenche os campos com "..." enquanto consulta webservice.
        $("#rua").val("...");
        $("#bairro").val("...");
        $("#cidade").val("...");
        $("#uf").val("...");
        $("#ibge").val("...");

        //Consulta o webservice viacep.com.br/
        $.getJSON(
          "https://viacep.com.br/ws/" + cep + "/json/?callback=?",
          function (dados) {
            if (!("erro" in dados)) {
              //Atualiza os campos com os valores da consulta.
              $("#rua").val(dados.logradouro);
              $("#bairro").val(dados.bairro);
              $("#cidade").val(dados.localidade);
              $("#uf").val(dados.uf);
              $("#ibge").val(dados.ibge);
              if (dados.logradouro.length < 2) {
                $("#rua").prop("readonly", false);
                $("#bairro").prop("readonly", false);
              } else {
                $("#rua").prop("readonly", true);
                $("#bairro").prop("readonly", true);
              }
            } //end if.
            else {
              //CEP pesquisado não foi encontrado.
              limpa_formulário_cep();
              alert("CEP não encontrado.");
            }
          }
        );
      } //end if.
      else {
        //cep é inválido.
        limpa_formulário_cep();
        alert("Formato de CEP inválido.");
      }
    } //end if.
    else {
      //cep sem valor, limpa formulário.
      limpa_formulário_cep();
    }
  });

  $("#submitForm").on("click", function (e) {
    
    e.preventDefault();
    let botao_finalizacao = document.getElementById("submitForm");
    let botao_finalizacaoj = $("#submitForm");
    let mensagem = "Enviando";
    let cadastrar = "Tentar Novamente";
    let frm = $("#form_contador");
    var tab_processando = document.getElementsByClassName("tab_processando");
    if(tab_processando.length > 0){
      tab_processando[0].style.display = "block";
      document.getElementById("submitForm").style.display = "none";
    }
    
    $.ajax({
      url: "https://app.pjfit.com.br/api/cert/v1/cadContadorParceiro",
      type: "POST",
      data: frm.serialize(),
      success: function (response) {
        // you can see the result from the console
        // tab of the developer tools
        //	 var arr= JSON.parse(response)
        console.log(response);
        var r = response;

        if (r.resultado == "Erro") {
          botao_finalizacao.innerHTML = cadastrar;
          botao_finalizacao.prop("disabled", false);
          return alert("Erro, verifique os dados");
        }
        if (r.resultado != "Sucesso") {
          botao_finalizacao.innerHTML = "Enviar Novamente";
          botao_finalizacaoj.prop("disabled", false);
          alert("Erro, por favor tente novamente!");

          return alert(r.mensagem);
        } else {
          document.getElementById("steps").classList.remove("d-flex");
          document.getElementById("steps").style.display = "none";
          var x = document.getElementsByClassName("tab");
          var i;
          for (i = 0; i < x.length; i++) {
            x[i].style.display = "none";
          }
          document.getElementById("finalizacao-div").style.display = "block";

          botao_finalizacao.style.display = "none";
        }
      },
      error: function (request, status, error) {
        console.log(request, status, error);
      },
    });
  });
});
