<?php

class Agro_View_Helper_EstadosMunicipios extends Zend_View_Helper_Abstract
{
    public static function createEstadosMunicipios(array $estados = [], array $options = [])
    {
        ob_start();

        if (empty($estados)) {
            $dadosEstados = (new Sistema_Model_Estados())->fetchAll(null, 'id')->toArray();
            $estados = [];

            array_walk($dadosEstados, function (&$estado) use (&$estados) {
                $estados[$estado['id']] = $estado;
            });
        }

        $visibilidadeSalvar = isset($options['ocultarSalvar']) ? 'hide' : 'show';
        ?>
      <style>
          ul.alfabeto {
              list-style: none;
              padding: 0;
              margin: 0;
          }

          ul.alfabeto li {
              border: 1px solid #666666;
              float: left;
              margin: 2px;
              display: block;
              text-decoration: none;
              font-weight: bold;
              color: #000000;
              padding: 3px 5px;
              cursor: pointer;
          }

          ul.alfabeto li.selected {
              border: 1px solid #FFFFFF;
              background: #D7D7D7;
              color: #FFFFFF;
          }

          .estado_selecionado {
              color: red !important;
          }

          .divListagemMunicipios {
              display: flex;
              flex-wrap: wrap;
              align-items: flex-start;
          }

          .divListagemMunicipios > div {
              flex: 1 0 20%;
              box-sizing: border-box;
          }

          @media screen and (max-width: 600px) {
              .divListagemMunicipios > div {
                  flex-basis: 50%;
              }
          }
      </style>

      <script type="text/javascript">
        $(document).ready(function () {
          $('.inverterSelecao').click(function () {
            $($(this).attr('rel')).toggleCheckboxes();
          });

          $('.marcarTodos').click(function () {
            $($(this).attr('rel')).checkCheckboxes();
          });

          $('.desmarcarTodos').click(function () {
            $($(this).attr('rel')).unCheckCheckboxes();
          });

          $(".alfabeto li").live('click', function () {
            let id = '#uf_' + this.id;

            $('ul.alfabeto li').removeClass('selected');
            $('.municipios').removeClass('show').addClass('hide');

            $(id).removeClass('hide');
            $(id).addClass('show');

            $('#' + this.id).addClass('selected');
          });
        });
      </script>

      <form class="formDefault" id="formEstadosMunicipios">
        <div id="tabs">
          <ul class="hide">
            <li><a href="#tabs-form">Estados/Municípios</a></li>
          </ul>

          <div class="geral">
            <div id="tabs-form">
              <div class='title-design'>
                <div class='title'>
                  <span>Estados</span>
                </div>
              </div>
              <div class="padding-10">
                <ul class="alfabeto">
                    <?php
                    foreach ($estados as $estado) {
                        $classEstadoSelecionado = !empty($estado['estado_selecionado']) ? 'estado_selecionado' : '';
                        ?>
                      <li id="<?= $estado['ds_sigla'] ?>" class="<?= $classEstadoSelecionado ?>">
                          <?= $estado['ds_sigla'] ?>
                      </li>
                        <?php
                    }
                    ?>
                </ul>
              </div>

              <div class='title-design'>
                <div class='title'>
                  <span>Municípios</span>
                </div>
              </div>

              <div class="padding-10">
                  <?php
                  foreach ($estados as $idEstado => $estado) {
                      ?>
                    <div id="uf_<?= $estado['ds_sigla'] ?>" class="municipios hide">
                      <fieldset class="fieldset-top">
                        <legend><strong>Ações</strong></legend>

                        <div class="divMensagem" style="padding-bottom: 10px">
                          <span style="color: var(--error-border-color)">
                            * <strong>Marcar Todos</strong>: seleciona todos os municípios do estado selecionado
                            <br>
                            * <strong>Desmarcar Todos</strong>: desmarca todos os municípios do estado selecionado
                            <br>
                            * <strong>Inverter Seleção</strong>: inverte as seleções, marcando o que estava desmarcado,
                            e desmarcando o que estava marcado, nos municípios do estado selecionado
                          </span>
                        </div>

                        <table>
                          <tr>
                            <td>
                              <button type="button" class="marcarTodos button-2" rel="#uf_<?= $estado['ds_sigla'] ?>">
                                Marcar Todos
                              </button>
                            </td>
                            <td>
                              <button type="button" class="desmarcarTodos button-2"
                                      rel="#uf_<?= $estado['ds_sigla'] ?>">
                                Desmarcar Todos
                              </button>
                            </td>
                            <td>
                              <button type="button" class="inverterSelecao button-2"
                                      rel="#uf_<?= $estado['ds_sigla'] ?>">
                                Inverter Seleção
                              </button>
                            </td>
                          </tr>
                        </table>
                      </fieldset>

                      <fieldset class="fieldset-top">
                        <legend><strong>Municípios</strong></legend>

                        <table>
                          <tr>
                              <?php
                              $i = 0;
                              $municipios = (new Sistema_Model_Municipios())->getMunicipiosEstado($estado['ds_sigla']);
                              foreach ($municipios as $item) {
                                  if (empty($item['ds_nome_municipio'])) {
                                      continue;
                                  }

                                  $idMunicipio = $item['id'];

                                  if (isset($options['unificarIdEstadoMunicipio'])) {
                                      $idMunicipio = "{$idEstado}#{$item['id']}";
                                  }

                                  if ($i % 6 === 0) {
                                      echo "</tr><tr>";
                                  }
                                  
                                  $checked = "";
                                  if ((empty($estado['municipios']) && !empty($estado['estado_habilitado']))
                                    || (in_array($item['id'], $estado['municipios']))
                                  ) {
                                    $checked = "checked";
                                  }
                              ?>
                                <td>
                                  <div id="divMunicipio_<?= $item['id'] ?>"
                                       class="ufMunicipios_<?= $estado['ds_sigla'] ?>">
                                    <input type="checkbox"
                                           value="<?= $idMunicipio ?>"
                                           class='uf_<?= $estado['ds_sigla'] ?>'
                                           data-municipio="<?= $item['ds_nome_municipio'] ?>"
                                           data-sigla-estado="<?= $estado['ds_sigla'] ?>"
                                           id="check_<?= $item['id'] ?>"
                                           name="municipios[]"
                                           <?=$checked?> />
                                    <label for="check_<?= $item['id'] ?>"><?= $item['ds_nome_municipio'] ?></label>
                                  </div>

                                </td>
                                  <?
                                  $i++;
                              }
                              ?>
                          </tr>
                        </table>
                      </fieldset>
                    </div>
                  <? } ?>
              </div>
            </div>
          </div>
        </div>

        <div class="<?= $visibilidadeSalvar ?>">
          <ul id="buttons" class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">
            <li>
              <button name="salvarMunicipios" id="salvarMunicipios" type="button">Salvar</button>
            </li>
          </ul>
        </div>
      </form>

        <?php
        $html = ob_get_contents();
        ob_end_clean();

        return $html;
    }
}
