<?php
$User = Zend_Auth::getInstance()->getIdentity();

?>
<br/>
<form class="formDefault" id="formDefault">
  <div id="tabs">
    <div class="geral">
      <div id="tabs-form">
          <?= $this->form->id_beneficiario; ?>
          <?= $this->form->id; ?>
          <?php if ($this->beneficiarios) { ?>

              <?php foreach ($this->beneficiarios as $beneficiario): ?>
              <table width="100%" cellpadding="0" cellspacing="0" id="table_propriedade">
                <span class="label"><b>Beneficiário: <?= $beneficiario['ds_nome_beneficiario']; ?></b></span>
                <input type="hidden" name="ds_email_beneficiario_<?= $beneficiario['id'] ?>"
                       id="ds_email_beneficiario_<?= $beneficiario['id'] ?>" value="<?= $beneficiario['ds_email'] ?>">
                <input type="hidden" name="id_beneficiario_<?= $beneficiario['id'] ?>"
                       id="id_beneficiario_<?= $beneficiario['id'] ?>" value="<?= $beneficiario['id'] ?>">
                <input type="hidden" name="cpf_cnpj_<?= $beneficiario['id'] ?>" id="cpf_cnpj_<?= $beneficiario['id'] ?>"
                       value="<?= $beneficiario['cpf_cnpj'] ?>">
                <tr>
                  <td>
                    <fieldset>
                      <table width="100%" border="0" class="tb_endereco_propriedade">
                        <tr>
                          <td>
                            <table>
                              <tr>
                                <td nowrap="nowrap" width="1%" class="required">
                                  <label for="ds_endereco_cep_propriedade" class="optional">CEP</label>
                                  <input type="text" class="cep"
                                         name="ds_endereco_cep_propriedade_busca_<?= $beneficiario['id'] ?>"
                                         id="ds_endereco_cep_propriedade_busca_<?= $beneficiario['id'] ?>"
                                         value="<?= $beneficiario['ds_endereco_cep'] ?>" class="cep" maxlength="10"
                                         size="10" onblur="configurarBuscaCEP(<?= $beneficiario['id'] ?>)">
                                    <?= $beneficiario['ds_endereco_cep'] ?>
                                </td>
                                <td id="busca_cep">Se você não souber o CEP, <a
                                    href="/cep/search/n/ds_endereco_cep_propriedade_busca_<?= $beneficiario['id'] ?>"
                                    class="searchCep fontColorRed" rel="ds_endereco_cep_propriedade">
                                    <b>Clique aqui</b></a> para buscar.
                                </td>
                              </tr>
                            </table>
                          </td>
                        </tr>
                        <tr>
                          <td>
                            <input type="hidden" name="id_estado_<?= $beneficiario['id'] ?>"
                                   value="<?= $beneficiario['id_estado'] ?>" id="id_estado_<?= $beneficiario['id'] ?>">
                            <input type="hidden" name="id_municipio_<?= $beneficiario['id'] ?>"
                                   value="<?= $beneficiario['id_municipio'] ?>"
                                   id="id_municipio_<?= $beneficiario['id'] ?>">
                            <table>
                              <tr>
                                <td class="required">
                                  <label for="ds_nome_estado_propriedade" class="optional">UF</label>
                                  <input type="text" name="ds_nome_estado_<?= $beneficiario['id'] ?>"
                                         id="ds_nome_estado_<?= $beneficiario['id'] ?>"
                                         value="<?= ($beneficiario['estado'] != 'NL' ? $beneficiario['estado'] : '') ?>"
                                         disabled maxlength="2" class="upper" size="2">
                                </td>
                                <td class="required">

                                  <label for="ds_nome_municipio" class="optional">Município</label>
                                  <input type="text" name="ds_nome_municipio_<?= $beneficiario['id'] ?>"
                                         id="ds_nome_municipio_<?= $beneficiario['id'] ?>"
                                         value="<?= ($beneficiario['municipio'] != 'NULO' ? $beneficiario['municipio'] : '') ?>"
                                         maxlength="255" disabled class="upper" size="25"
                                         style="text-transform:uppercase">
                                </td>
                              </tr>
                            </table>
                          </td>
                        </tr>
                        <tr>
                          <td>
                            <table>
                              <tr>
                                <td class="required">
                                  <label for="ds_endereco_logradouro" class="optional">Logradouro</label>
                                  <input type="text" name="ds_endereco_logradouro_<?= $beneficiario['id'] ?>"
                                         id="ds_endereco_logradouro_<?= $beneficiario['id'] ?>"
                                         value="<?= $beneficiario['ds_endereco_logradouro'] ?>" class="upper" size="25">
                                </td>
                                <td class="required">
                                  <label for="ds_endereco_bairro" class="optional">Bairro</label>
                                  <input type="text" name="ds_endereco_bairro_<?= $beneficiario['id'] ?>"
                                         id="ds_endereco_bairro_<?= $beneficiario['id'] ?>"
                                         value="<?= $beneficiario['ds_endereco_bairro'] ?>" maxlength="100"
                                         class="upper" size="25">
                                </td>
                              </tr>
                            </table>
                          </td>
                        </tr>
                        <tr>
                          <td>
                            <table>
                              <tr>
                                <td class="required">
                                  <label for="ds_endereco_complemento_propriedade" class="optional">Número</label>
                                  <input type="text" name="ds_endereco_nro_<?= $beneficiario['id'] ?>"
                                         id="ds_endereco_nro_<?= $beneficiario['id'] ?>"
                                         value="<?= $beneficiario['ds_endereco_nro'] ?>" maxlength="100" class="upper"
                                         size="25">
                                </td>
                                <td class="">
                                  <label for="ds_endereco_bairro_propriedade" class="">Complemento</label>
                                  <input type="text" name="ds_endereco_complem_<?= $beneficiario['id'] ?>"
                                         id="ds_endereco_complem_<?= $beneficiario['id'] ?>"
                                         value="<?= $beneficiario['ds_endereco_complem'] ?>" class="upper" size="25">
                                </td>
                              </tr>
                            </table>
                          </td>
                        </tr>
                        <tr>
                          <td>
                            <table>
                              <tr>
                                <td class="required">
                                  <label for="ds_endereco_tel_<?= $beneficiario['id'] ?>"
                                         class="optional">Telefone</label>
                                  <input type="text" name="ds_endereco_tel_<?= $beneficiario['id'] ?>"
                                         id="ds_endereco_tel_<?= $beneficiario['id'] ?>"
                                         value="<?= $beneficiario['ds_tel'] ?>" maxlength="100"
                                         class="upper telefone validarTelefone" size="25">
                                </td>
                              </tr>
                            </table>
                          </td>
                        </tr>

                      </table>
                    </fieldset>
                  </td>
                </tr>

              </table>
              <?php endforeach ?>
          <?php } ?>


      </div>

    </div>
  </div>

  <div>
    <div class="geral">
      <div id="tabs-form">
          <?= $this->form->id; ?>
          <?php if ($this->novoBeneficiario) {
              for ($i = 0; $i < (int)$this->novoBeneficiario; $i++) {
                  ?>
                <!-- INPUTS HIDDEN PARA CRIAÇÃO DE NOVO BENEFICIÁRIO -->
                <input type="hidden" name="fl_novo_beneficiario_<?= $i ?>" id="fl_novo_beneficiario_<?= $i ?>"
                       value="<?= $i ?>">
                <input type="hidden" name="nr_cpf_<?= $i ?>" id="nr_cpf_<?= $i ?>">
                <input type="hidden" name="ds_nome_beneficiario_<?= $i ?>" id="ds_nome_beneficiario_<?= $i ?>">
                <input type="hidden" name="dt_nascimento_<?= $i ?>" id="dt_nascimento_<?= $i ?>">
                <input type="hidden" name="ds_qualidade_beneficiario_<?= $i ?>"
                       id="ds_qualidade_beneficiario_<?= $i ?>">
                <input type="hidden" name="id_proposta" id="id_proposta">
                <input type="hidden" name="vl_limite_beneficio_<?= $i ?>" id="vl_limite_beneficio_<?= $i ?>">
                <input type="hidden" name="ds_agencia_<?= $i ?>" id="ds_agencia_<?= $i ?>">
                <input type="hidden" name="id_banco" id="id_banco<?= $i ?>">
                <input type="hidden" name="lmga" id="lmga_<?= $i ?>">
                <input type="hidden" name="tp_favorecido_<?= $i ?>" id="tp_favorecido_<?= $i ?>">
                <input type="hidden" name="fl_vinculada_financiamento_<?= $i ?>"
                       id="fl_vinculada_financiamento_<?= $i ?>">
                <input type="hidden" name="ds_email_instituicao_financeira_<?= $i ?>"
                       id="ds_email_instituicao_financeira_<?= $i ?>">
                <input type="hidden" name="fl_nome_social_<?= $i ?>" id="fl_nome_social_<?= $i ?>">
                <input type="hidden" name="id_tipo_beneficiario_<?= $i ?>" id="id_tipo_beneficiario_<?= $i ?>">
                <input type="hidden" name="ds_nome_social_<?= $i ?>" id="ds_nome_social_<?= $i ?>">
                <input type="hidden" id="tp_pessoa_<?= $i ?>" value="F">
                <input type="hidden" id="ds_email_beneficiario_<?= $i ?>">
                <!-- INPUTS HIDDEN PARA CRIAÇÃO DE NOVO BENEFICIÁRIO -->

                <table width="100%" cellpadding="0" cellspacing="0" id="table_propriedade">
                  <input type="hidden" name="id_beneficiario_<?= $i ?>" value="<?= $i ?>">
                  <tr>
                    <td>
                      <fieldset>
                        <table width="100%" border="0" class="tb_endereco_propriedade">
                          <tr>
                            <td>
                              <table>
                                <tr>
                                  <td nowrap="nowrap" width="1%" class="required">
                                    <label for="ds_endereco_cep_propriedade" class="optional">CEP</label>
                                    <input type="text" class="cep" name="ds_endereco_cep_propriedade_busca_<?= $i ?>"
                                           id="ds_endereco_cep_propriedade_busca_<?= $i ?>"
                                           onblur="configurarBuscaCEP(<?= $i ?>)" class="cep" maxlength="10" size="10">
                                      <?= $beneficiario['ds_endereco_cep'] ?>
                                  </td>
                                  <td id="busca_cep">Se você não souber o CEP, <a
                                      href="/cep/search/n/ds_endereco_cep_propriedade_busca_<?= $i ?>"
                                      class="searchCep fontColorRed" rel="ds_endereco_cep_propriedade">
                                      <b>Clique aqui</b></a> para buscar.
                                  </td>
                                </tr>
                              </table>
                            </td>
                          </tr>
                          <tr>
                            <td>
                              <input type="hidden" name="id_estado_<?= $i ?>" id="id_estado_<?= $i ?>" value="25">
                              <input type="hidden" name="id_municipio_<?= $i ?>" id="id_municipio_<?= $i ?>"
                                     value="5495">
                              <table>
                                <tr>
                                  <td class="required">
                                    <label for="ds_nome_estado_propriedade" class="optional">UF</label>
                                    <input type="text" name="ds_nome_estado_<?= $i ?>" id="ds_nome_estado_<?= $i ?>"
                                           disabled maxlength="2" class="upper" size="2">
                                  </td>
                                  <td class="required">
                                    <label for="ds_nome_municipio" class="optional">Município</label>
                                    <input type="text" name="ds_nome_municipio_<?= $i ?>"
                                           id="ds_nome_municipio_<?= $i ?>" maxlength="255" disabled class="upper"
                                           size="25" style="text-transform:uppercase">
                                  </td>
                                </tr>
                              </table>
                            </td>
                          </tr>
                          <tr>
                            <td>
                              <table>
                                <tr>
                                  <td class="required">
                                    <label for="ds_endereco_logradouro" class="optional">Logradouro</label>
                                    <input type="text" name="ds_endereco_logradouro_<?= $i ?>"
                                           id="ds_endereco_logradouro_<?= $i ?>" class="upper" size="25">
                                  </td>
                                  <td class="required">
                                    <label for="ds_endereco_bairro" class="optional">Bairro</label>
                                    <input type="text" name="ds_endereco_bairro_<?= $i ?>"
                                           id="ds_endereco_bairro_<?= $i ?>" class="upper" size="25">
                                  </td>
                                </tr>
                              </table>
                            </td>
                          </tr>
                          <tr>
                            <td>
                              <table>
                                <tr>
                                  <td class="required">
                                    <label for="ds_endereco_complemento_propriedade" class="optional">Número</label>
                                    <input type="text" name="ds_endereco_nro_<?= $i ?>" id="ds_endereco_nro_<?= $i ?>"
                                           maxlength="100" class="upper" size="25">
                                  </td>
                                  <td class="">
                                    <label for="ds_endereco_bairro_propriedade" class="">Complemento</label>
                                    <input type="text" name="ds_endereco_complem_<?= $i ?>"
                                           id="ds_endereco_complem_<?= $i ?>" class="upper" size="25">
                                  </td>
                                </tr>
                              </table>
                            </td>
                          </tr>
                          <tr>
                            <td>
                              <table>
                                <tr>
                                  <td class="required">
                                    <label for="ds_endereco_tel_<?= $i ?>" class="optional">Telefone</label>
                                    <input type="text" name="ds_endereco_tel_<?= $i ?>" id="ds_endereco_tel_<?= $i ?>"
                                           maxlength="100" class="upper telefone validarTelefone" size="25">
                                  </td>
                                </tr>
                              </table>
                            </td>
                          </tr>
                        </table>
                      </fieldset>
                    </td>
                  </tr>
                </table>
              <?php } ?>
          <?php } ?>
      </div>
    </div>
  </div>
  <div id="buttons" class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">
    <button name="salvar" id="salvar" type="button">Salvar</button>
    <button name="cancelar" id="cancelar" type="button" onclick="window.close()">Cancelar</button>
  </div>
</form>
<script>
  function atualizarSufixos(obj, novosIndices) {
    const novoObj = {};
    Object.keys(obj).forEach(key => {
      const match = key.match(/^(.*)_(\d+)$/); // separa prefixo e índice
      if (match) {
        const prefixo = match[1];
        const indiceOriginal = parseInt(match[2], 10);
        const novoIndice = novosIndices[indiceOriginal];

        if (prefixo === "id_beneficiario") {
          // Atualiza sufixo e valor para o novo índice
          novoObj[`${prefixo}_${novoIndice}`] = novoIndice;
        } else {
          // Apenas troca o sufixo
          novoObj[`${prefixo}_${novoIndice}`] = obj[key];
        }
      } else {
        // mantém chaves sem sufixo
        novoObj[key] = obj[key];
      }
    });

    return novoObj;
  }

  $(document).ready(function () {
    let contadorNovosBeneficiarios = 0;
    for (let i = 0; i <= 1; i++) {
      let j = i + 1
      let cc = window.opener.document.getElementById('fl_novo_beneficiario_' + i)

      if (cc) {
        if (cc.value == 'true') {
          let texto = window.opener.$("#ds_nome_beneficiarios_" + i).val()
          if (window.opener.location.href.includes('premio')) {
            let cpf = window.opener.document.getElementById('cpf_cnpj').value

            let ds_nome_beneficiario = window.opener.$("#ds_favorecido").val()
            let dt_nascimento = window.opener.document.getElementById('dt_nasc_beneficiario').value
            let ds_qualidade_de = window.opener.document.getElementById('ds_qualidade').value
            let vl_limite_beneficio = window.opener.document.getElementById('ds_quantia').value
            //ds_quantia
          } else {
            let novos = [];

            novos.push(
              {
                cpf: window.opener.document.getElementById('nr_cpf_cnpj_' + i).value,
                ds_nome_beneficiario: window.opener.$("#ds_nome_beneficiarios_" + i).val(),
                dt_nascimento: window.opener.document.getElementById('beneficiario[' + i + '][dt_nascimento_beneficiario]').value,
                ds_qualidade_de: window.opener.document.getElementById('ds_qualidade_beneficiario_' + i).value,
                vl_limite_beneficio: window.opener.document.getElementById('vl_limite_beneficio_' + i).value,
                ds_agencia: window.opener.document.getElementById('ds_agencia_' + i).value,
                tp_favorecido: window.opener.document.getElementById('ds_tipo_conta_' + i).value,
                fl_vinculada_financiamento: window.opener.document.getElementById('fl_vinculada_financiamento_' + i).value,
                id_tipo_beneficiario: window.opener.document.getElementById('id_tipo_beneficiario_' + i).value,
                fl_nome_social: window.opener.document.getElementById('fl_nome_social_1_' + i).checked ? 1 : 0,
                ds_nome_social: window.opener.document.getElementById('ds_nome_social_' + i).value,
                ds_email_beneficiario: window.opener.document.getElementById('ds_email_beneficiario_' + i).value,
                ds_email_instituicao_financeira: window.opener.document.getElementById('ds_email_instituicao_financeira_' + i).value,
                id_banco: window.opener.document.getElementById('id_banco_' + i).value
              }
            )

            novos.forEach((objeto, indice) => {
              $("#nr_cpf_" + contadorNovosBeneficiarios).val(objeto.cpf)
              $("#ds_nome_beneficiario_" + contadorNovosBeneficiarios).val(objeto.ds_nome_beneficiario)
              $("#tp_favorecido_" + contadorNovosBeneficiarios).val(objeto.tp_favorecido)
              $("#dt_nascimento_" + contadorNovosBeneficiarios).val(objeto.dt_nascimento)
              $("#ds_qualidade_beneficiario_" + contadorNovosBeneficiarios).val(objeto.ds_qualidade_de)
              $("#vl_limite_beneficio_" + contadorNovosBeneficiarios).val(objeto.vl_limite_beneficio)
              $("#ds_agencia_" + contadorNovosBeneficiarios).val(objeto.ds_agencia)
              $("#id_banco" + contadorNovosBeneficiarios).val(objeto.id_banco)
              $("#fl_vinculada_financiamento_" + contadorNovosBeneficiarios).val(objeto.fl_vinculada_financiamento)
              $("#ds_email_instituicao_financeira_" + contadorNovosBeneficiarios).val(objeto.ds_email_instituicao_financeira)
              $("#id_tipo_beneficiario_" + contadorNovosBeneficiarios).val(objeto.id_tipo_beneficiario)
              $("#fl_nome_social_" + contadorNovosBeneficiarios).val(objeto.fl_nome_social)
              $("#ds_nome_social_" + contadorNovosBeneficiarios).val(objeto.ds_nome_social)
              $("#ds_email_beneficiario_" + contadorNovosBeneficiarios).val(objeto.ds_email_beneficiario)
              $("#label_nome_beneficiario_" + contadorNovosBeneficiarios).text(texto)
            })

          }
          let id_proposta = window.opener.document.getElementById('id_proposta').value
          $("#id_proposta").val(id_proposta);
          contadorNovosBeneficiarios++;
        }
      }

      const match = location.href.match(/\/id\/([^/?#]+)/); // captura tudo após /id/ até ?, # ou fim
      const raw = match ? match[1] : null;
      const ids = raw
        ? decodeURIComponent(raw)           // trata %2C
          .split(",")                      // quebra por vírgula
          .map(s => s.trim())              // remove espaços
          .filter(s => s.length > 0)       // remove vazios
          .map(n => Number(n))             // converte para número
          .filter(n => Number.isFinite(n)) // mantém apenas números válidos
        : [];

      ids.forEach(e => {
        let email = window.opener.document.getElementById('ds_email_beneficiario_' + i)
        if (email) {
          $("#ds_email_beneficiario_" + e).val(email.value)
        }
      })
    }
  });

  document.getElementById("salvar").addEventListener('click', (e) => {
    e.preventDefault;
    const inputsEndereco = document.querySelectorAll('[id^="ds_endereco_"]');
    const novosBeneficiarios = [];
    const todosPreenchidos = Array.from(inputsEndereco).filter(input => !input.id.startsWith('ds_endereco_complem')) // remove todos que começam com ds_endereco_complem
      .every(input => input.value.trim() !== '');

    if (!todosPreenchidos) {
      alert('Necessário cadastrar  endereço do(s) beneficiário(s) informado(s)')
      return false;
    } else {
      //pega o form
      const form = document.querySelector('#formDefault');
      //Cria um formdata com o form
      const formData = new FormData(form);
      //pega os inputs do form
      const data = Object.fromEntries(formData.entries());
      if (!window.opener.location.href.includes("endosso")) {
        const objetoLimpo = {};
        for (const [chave, valor] of Object.entries(data)) {
          const chaveLimpa = chave.replace(/_\d+$/, '');
          objetoLimpo[chaveLimpa] = valor;
        }
        const arrayDeObjetos = [objetoLimpo];

        arrayDeObjetos.forEach(obj => {
          window.opener.document.getElementById('ds_cep').value = obj.ds_endereco_cep_propriedade_busca
          window.opener.document.getElementById('id_municipio').value = obj.id_municipio
          window.opener.document.getElementById('id_estado').value = obj.id_estado
          window.opener.document.getElementById('ds_endereco_bairro').value = obj.ds_endereco_bairro
          window.opener.document.getElementById('ds_endereco_logradouro').value = obj.ds_endereco_logradouro
          window.opener.document.getElementById('ds_endereco_nro').value = obj.ds_endereco_nro
          window.opener.document.getElementById('ds_endereco_complem').value = obj.ds_endereco_complem
          window.opener.document.getElementById('ds_tel').value = obj.ds_endereco_tel
          window.opener.document.getElementById('fl_endereco_valido').value = "1"
          alert('Endereço cadastrado com sucesso!')
          window.close()
        });
      } else {
        let flags = document.querySelectorAll('[name^="fl_novo_beneficiario_"]')
        if (flags.length > 0) {
          let params_novos_beneficiarios = []
          const novos_beneficiarios = [];
          //essa rota deve salvar na seguro.beneficiarios e seguro.propostas_beneficiarios
          url = '/seguro/propostaajax/savebeneficiarios';
          //pra cada um dos novos beneficiarios, vou pegar as suas info e colocar no array params_novos_beneficiarios
          flags.forEach((e) => {
            const beneficiario = {
              cpf_cnpj:                         $("#nr_cpf_" + e.value).val(),
              ds_nome_beneficiario:             $("#ds_nome_beneficiario_" + e.value).val(),
              dt_nascimento:                    $("#dt_nascimento_" + e.value).val(),
              ds_qualidade_beneficiario:        $("#ds_qualidade_beneficiario_" + e.value).val(),
              id_proposta:                      $("#id_proposta").val(),
              vl_limite_beneficio:              $("#vl_limite_beneficio_" + e.value).val(),
              ds_agencia:                       $("#ds_agencia_" + e.value).val(),
              id_banco:                         $("#id_banco_" + e.value).val(),
              lmga:                             $("#lmga_" + e.value).val(),
              tp_favorecido:                    $("#tp_favorecido_" + e.value).val(),
              fl_vinculada_financiamento:       $("#fl_vinculada_financiamento_" + e.value).val(),
              ds_email_instituicao_financeira:  $("#ds_email_instituicao_financeira_" + e.value).val(),
              fl_nome_social:                   $("#fl_nome_social" + e.value).val(),
              id_tipo_beneficiario:             $("#id_tipo_beneficiario_" + e.value).val(),
              ds_nome_social:                   $("#ds_nome_social_" + e.value).val(),
              tp_pessoa:                        $("#tp_pessoa_" + e.value).val(),
              ds_email_beneficiario:            $("#ds_email_beneficiario_" + e.value).val(),
              ds_endereco_cep:                  $("#ds_endereco_cep_propriedade_busca_" + e.value).val(),
              id_estado:                        $("#id_estado_"+e.value).val(),
              id_municipio:                     $("#id_municipio_"+e.value).val(),
              ds_endereco_logradouro:           $("#ds_endereco_logradouro_"+e.value).val(),
              ds_endereco_bairro:               $("#ds_endereco_bairro_"+e.value).val(),
              ds_endereco_nro:                  $("#ds_endereco_nro_"+e.value).val(),
              ds_endereco_complem:              $("#ds_endereco_complem_"+e.value).val(),
              ds_endereco_tel:                  $("#ds_endereco_tel_"+e.value).val()
            };
            params_novos_beneficiarios.push(beneficiario);
          })
          //ajax pra cadastrar novo beneficiario + novo endereco
          $.ajax({
            url: url,
            data: {
              beneficiarios: params_novos_beneficiarios
            },
            type: 'POST',
            dataType: 'json',
            success: function (response) {
              if (response.status == false) {
                alert(response.message); 
                return false;
              } else {
                const form      = document.querySelector('#formDefault');
                const formData  = new FormData(form);
                const data      = Object.fromEntries(formData.entries());
                let resultado   = atualizarSufixos(data, response.beneficiarios)
                const params    = { enderecos: JSON.stringify(resultado) };

                //ajax pra cadastrar endereço
                $.ajax({
                  url: '/seguro/propostaajax/cadastrarenderecobeneficiario',
                  data: params,
                  type: 'POST',
                  dataType: 'json',
                  success: function (response) {
                    if (response.status) {
                      Object.entries(data).forEach(([chave, valor]) => {
                        const match = chave.match(/_(\d+)$/);
                        if (!match) return;
                        const id = match[1]; // '4096'

                        if (chave.match(/^cpf_cnpj_(\d+)$/)) {
                          //buscar por input cujo valor é o mesmo que 'valor'.
                          const elementosComNumero = Array.from(window.opener.document.querySelectorAll('[id^="nr_cpf_cnpj_"]')).map(el => {
                            const match = el.id.match(/^nr_cpf_cnpj_(\d+)$/);
                            if (match) {
                              const numero = parseInt(match[1], 10);
                              return {
                                el, numero
                              };
                            }
                            return null;
                          }).filter(item => item !== null);

                          elementosComNumero.forEach((el) => {
                            if (el.el.value === valor) {
                              window.opener.document.getElementById(`fl_endereco_valido_beneficiario_[${el.numero}]`).value = "1"
                            }
                          })
                        }
                      });

                      const form = window.opener.document.getElementById('formBeneficiarios');
                      const botaoSalvar = form.querySelector('button[name="salvar"]');
                      var fls_novos_beneficiarios = window.opener.document.querySelectorAll('[name^="novo_beneficiario_"]');

                      fls_novos_beneficiarios.forEach((e, index) => {
                        e.value = 'false'
                      });

                      alert('Endereço cadastrado com sucesso!')
                      window.close()
                      botaoSalvar.click()
                    }
                  },
                  error: function (xhr, desc, er) {
                    //
                  }
                });
              }
            },
            error: function (xhr, desc, er) {
              alert(xhr.responseText);
            }
          });
        } else {
          const form = document.querySelector('#formDefault');
          const formData = new FormData(form);
          const data = Object.fromEntries(formData.entries());
          const params = {
            enderecos: JSON.stringify(data)
          };
          //ajax pra cadastrar novo endereço
          $.ajax({
            url: '/seguro/propostaajax/cadastrarenderecobeneficiario',
            data: params,
            type: 'POST',
            dataType: 'json',
            success: function (response) {
              if (response.status) {
                Object.entries(data).forEach(([chave, valor]) => {
                  const match = chave.match(/_(\d+)$/);
                  if (!match) return;
                  const id = match[1]; // '4096'

                  if (chave.match(/^cpf_cnpj_(\d+)$/)) {
                    //buscar por input cujo valor é o mesmo que 'valor'.
                    const elementosComNumero = Array.from(window.opener.document.querySelectorAll('[id^="nr_cpf_cnpj_"]')).map(el => {
                      const match = el.id.match(/^nr_cpf_cnpj_(\d+)$/);
                      if (match) {
                        const numero = parseInt(match[1], 10);
                        return {
                          el, numero
                        };
                      }
                      return null;
                    }).filter(item => item !== null);

                    elementosComNumero.forEach((el) => {
                      if (el.el.value === valor) {
                        window.opener.document.getElementById(`fl_endereco_valido_beneficiario_[${el.numero}]`).value = "1"
                      }
                    })
                  }
                });

                const form = window.opener.document.getElementById('formBeneficiarios');
                const botaoSalvar = form.querySelector('button[name="salvar"]');
                var fls_novos_beneficiarios = window.opener.document.querySelectorAll('[name^="novo_beneficiario_"]');

                fls_novos_beneficiarios.forEach((e, index) => {
                  e.value = 'false'
                });

                alert('Endereço cadastrado com sucesso!')
                window.close()
                botaoSalvar.click()
              }
            },
            error: function (xhr, desc, er) {
              //
            }
          });
        }
      }

    }
  });

  jQuery.setBeneficiarios = function (data) {
    window.opener.$('#listBeneficiarios').html('');

    beneficiarioInstituicaoFinanceira = {};
    html = '';
    let htmlFavorecido = '';

    if (data) {
      window.opener.$.each(data, function (i) {
        if (data[i].id) {
          html += '<tr>';

          let nomeBeneficiario = data[i].ds_tipo_conta === 's' ? data[i].ds_nome_banco : data[i].ds_nome_beneficiarios;

          html += '<td align="center">' + nomeBeneficiario + '</td>';
          html += '<td align="center">' + data[i].nr_cpf_cnpj + '</td>';
          html += '<td align="center">R$ ' + moeda.formatar(data[i].vl_limite_beneficio) + '</td>';
          html += '<td align="center">';
          html += '	<a href="#" id="' + data[i].id + '" class="editBeneficiario"><img src="/resources/imagens/mini/edit.png" border="0" /></a>';
          html += '	<a href="#" id="' + data[i].id + '" class="deleteBeneficiario"><img src="/resources/imagens/mini/delete.png" border="0" /></a>';
          html += '</td>';
          html += '</tr>';

          if (data[i].ds_email_instituicao_financeira != '') {
            beneficiarioInstituicaoFinanceira.id = data[i].id;
            beneficiarioInstituicaoFinanceira.nome = nomeBeneficiario;
          }

          window.opener.$('#linhaAutorizacaoCreditoBeneficiario').css('display', '');

          let idPropostaBeneficiario = data[i].id;
          let checkedFavorecido = '';

          if (data[i].fl_favorecido_autorizacao_credito === true) {
            checkedFavorecido = "checked='checked'";
            window.opener.$('#autorizarCreditoBeneficiario').attr('checked', 'checked');
          }

          idPropostaBeneficiario = document.createTextNode(idPropostaBeneficiario).data;
          checkedFavorecido = document.createTextNode(idPropostaBeneficiario).data;
          nomeBeneficiario = document.createTextNode(nomeBeneficiario).data;

          htmlFavorecido += '<tr>';
          htmlFavorecido += '  <td>';
          htmlFavorecido += `    <input type="checkbox" class="favorecidosInput" name="idPropostaBeneficiario" id="favorecido_${idPropostaBeneficiario}" value="${idPropostaBeneficiario}" ${checkedFavorecido} />`;
          htmlFavorecido += `    <label class="favorecidos_label" for="favorecido_${idPropostaBeneficiario}" id="label_${idPropostaBeneficiario}">${nomeBeneficiario}</label>`;
          htmlFavorecido += '  </td>';
          htmlFavorecido += '</tr>';
        }
      });
    }

    window.opener.$('#tableFavorecido').html(htmlFavorecido);
    window.opener.$('.favorecidos_label').css('display', 'inline');

    window.opener.$(".cobertura_gratuita").click(function (e) {
      if ($(this).val()) {
        e.preventDefault();
      }
    });

    if (html === '') {
      window.opener.$('#linhaAutorizacaoCreditoBeneficiario').css('display', 'none');
      window.opener.$('#autorizarCreditoBeneficiario').removeAttr('checked');
    }

    window.opener.$('#listBeneficiarios').html(html);

    if (!window.opener.$('#autorizarCreditoBeneficiario').is(':checked')) {
      window.opener.$('.favorecidosInput').attr('disabled', 'disabled');
    }

    let favorecidosInput = window.opener.$('.favorecidosInput');

    favorecidosInput.live('click', function () {
      let valorClicado = $(this).val();
      let elementoClicado = $(`#favorecido_${valorClicado}`);
      let isChecked = $(this).is(':checked');

      window.opener.$('.favorecidosInput').removeAttr('checked');

      if (isChecked) {
        elementoClicado.attr('checked', 'checked');
      }
    });

    if (favorecidosInput.length === 1 && favorecidosInput.is(':checked')) {
      favorecidosInput.attr('readonly', 'readonly');
      favorecidosInput.addClass('element_disabled');
    }
  };

  jQuery.validarEmail = function (email) {
    const re = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return re.test(email);
  };

  function configurarBuscaCEP(numero) {

    if (numero === "false") {
      campoCepId = `#ds_endereco_cep_propriedade_busca`;
      campoBairroId = `#ds_endereco_bairro`;
      campoLogradouroId = `#ds_endereco_logradouro`;
      campoEstadoNomeId = `#ds_nome_estado`;
      campoMunicipioNomeId = `#ds_nome_municipio`;
      campoEstadoId = `#id_estado`;
      campoMunicipioId = `#id_municipio`;
    } else {
      campoCepId = `#ds_endereco_cep_propriedade_busca_${numero}`;
      campoBairroId = `#ds_endereco_bairro_${numero}`;
      campoLogradouroId = `#ds_endereco_logradouro_${numero}`;
      campoEstadoNomeId = `#ds_nome_estado_${numero}`;
      campoMunicipioNomeId = `#ds_nome_municipio_${numero}`;
      campoEstadoId = `#id_estado_${numero}`;
      campoMunicipioId = `#id_municipio_${numero}`;
    }

    $(campoBairroId).val('');
    $(campoLogradouroId).val('');
    $(campoEstadoNomeId).val('');
    $(campoMunicipioNomeId).val('');

    const cep = $(campoCepId).val();

    if (cep !== '') {
      $.ajax({
        type: 'POST',
        url: '/cep/buscacep',
        data: {cep: cep},
        dataType: 'json',
        success: function (ret) {
          if (ret) {
            if (ret.erro === true) {
              alert(ret.mensagemPersonalizada);
            } else {
              $(campoBairroId).val(ret.bairro);
              $(campoLogradouroId).val(ret.logradouro);
              $(campoEstadoNomeId).val(ret.uf);
              $(campoMunicipioNomeId).val(ret.localidade);
              $(campoEstadoId).val(ret.id_estado);
              $(campoMunicipioId).val(ret.id_municipio);
            }
          } else {
            alert('O endereço correspondente a este CEP não foi encontrado.');
          }
        },
        error: function (xhr, desc, er) {
          alert(xhr.responseText);
        }
      });
    }
  }

  jQuery.resetBeneficiarios = function () {
    window.opener.$('#id_beneficiario').val(0);
    window.opener.$('#ds_favorecido').val('');
    window.opener.$('#ds_qualidade').val('');
    window.opener.$('#ds_agencia').val('');
    window.opener.$('#ds_quantia').val('');
    window.opener.$('#cpf_cnpj').val('');
    window.opener.$('#id_banco').val('');
    window.opener.$('#dt_nasc_beneficiario').val('');
    window.opener.$('#ds_email_beneficiario').val('');
    window.opener.$('#id_tipo_beneficiario').removeAttr('disabled');

    window.opener.$('#tp_favorecido_n').click();

    window.opener.$('#ds_email_instituicao_financeira').val('');
    window.opener.$('#fl_vinculada_financiamento_n').click();
    window.opener.$('#fl_nome_social_0').click();
  };

</script>