<script type="text/javascript">
  /*
  *
  * Define global javascript variables
  *
  */
  var base_url = "<?php echo base_url(); ?>"; // Base URL
  var site_url = "<?php echo site_url(); ?>"; // Site URL
  var icon_dot_url = "<?php echo $this->paths->cache_buster('/assets/images/dot.png'); ?>";
  var option_map_tile_server_copyright = '<?php echo $this->optionslib->get_option('option_map_tile_server_copyright');?>';
  var option_map_tile_subdomains = '<?php echo $this->optionslib->get_option('option_map_tile_subdomains') ?? 'abc';?>';
  var lang_general_gridsquares = "<?= __("Gridsquares"); ?>";
  var lang_general_word_search = "<?= __("Search"); ?>";
</script>

<!-- General JS Files used across Wavelog -->
<script src="<?php echo $this->paths->cache_buster('/assets/js/jquery-3.3.1.min.js') ?>"></script>
<script src="<?php echo $this->paths->cache_buster('/assets/js/jquery.fancybox.min.js') ?>"></script>
<script src="<?php echo $this->paths->cache_buster('/assets/js/bootstrap.bundle.js') ?>"></script>
<script type="text/javascript" src="<?php echo $this->paths->cache_buster('/assets/js/leaflet/leaflet.js') ?>"></script>
<script type="text/javascript" src="<?php echo $this->paths->cache_buster('/assets/js/leaflet/L.Maidenhead.qrb.js') ?>"></script>
<script type="text/javascript" src="<?php echo $this->paths->cache_buster('/assets/js/leaflet/leaflet.geodesic.js') ?>"></script>
<script type="text/javascript" src="<?php echo $this->paths->cache_buster('/assets/js/darkmodehelpers.js') ?>"></script>
<script src="<?php echo $this->paths->cache_buster('/assets/js/bootstrapdialog/js/bootstrap-dialog.min.js') ?>"></script>
<script type="text/javascript" src="<?php echo $this->paths->cache_buster('/assets/js/easyprint.js') ?>"></script>

<!-- DATATABLES LANGUAGE -->
<?php
$local_code = $language['locale'];
$lang_code  = $language['code'];

$datatables_language_url = '';
if ($lang_code !== 'en' && file_exists(FCPATH . "assets/json/datatables_languages/" . $local_code . ".json")) {
    $datatables_language_url = $this->paths->cache_buster('/assets/json/datatables_languages/' . $local_code . '.json');
}
?>

<script>
    function getDataTablesLanguageUrl() {
        const datatables_language_url = "<?php echo $datatables_language_url; ?>";

        if (datatables_language_url !== '') {
            return datatables_language_url;
        }

        <?php if ($lang_code !== 'en'): ?>
        console.warn("Datatables language file does not exist for locale: <?php echo $local_code; ?>; Using english instead.");
        <?php endif; ?>

        return null;
    }
</script>
<!-- DATATABLES LANGUAGE END -->

    <script type="text/javascript" src="<?php echo $this->paths->cache_buster('/assets/js/leaflet/L.Maidenhead.js') ?>"></script>
    <script id="leafembed" type="text/javascript" src="<?php echo $this->paths->cache_buster('/assets/js/leaflet/leafembed.js') ?>" tileUrl="<?php echo $this->optionslib->get_option('map_tile_server');?>"></script>
    <script type="text/javascript">
      $(function () {
        $('[data-bs-toggle="tooltip"]').tooltip()
      });

        <?php if(isset($qra) && $qra == "set") { ?>
        var q_lat = <?php echo $qra_lat; ?>;
        var q_lng = <?php echo $qra_lng; ?>;
        <?php } else { ?>
        var q_lat = 40.313043;
        var q_lng = -32.695312;
        <?php } ?>

        <?php if(isset($slug)) { ?>
        var qso_loc = '<?php echo site_url('visitor/map/'.$slug.'/'.$this->uri->segment(3));?>';
        <?php } ?>
        var q_zoom = 3;

      $(document).ready(function(){
            <?php if ($this->config->item('map_gridsquares') != FALSE) { ?>
              var grid = "Yes";
            <?php } else { ?>
              var grid = "No";
            <?php } ?>
            <?php if ($this->uri->segment(2) != "search" && $this->uri->segment(2) != "satellites") { ?>
            initmap(grid);
            <?php } ?>

      });

      </script>

<?php if ($this->uri->segment(2) == "satellites") { ?>

<script type="text/javascript" src="<?php echo $this->paths->cache_buster('/assets/js/sections/gridmap.js'); ?>"></script>
<script type="text/javascript" src="<?php echo $this->paths->cache_buster('/assets/js/leaflet/L.MaidenheadColoured.js'); ?>"></script>

<script>

  // auto setting of gridmap height
  function set_map_height() {

      //header menu
      var headerNavHeight = $('nav').outerHeight();
      // console.log('nav: ' + headerNavHeight);

      // line with coordinates
      // var coordinatesHeight = $('.coordinates').outerHeight();
      // console.log('.coordinates: ' + coordinatesHeight);

      // form for gridsquare map
      var gridsquareFormHeight = $('.gridsquare_map_form').outerHeight();
      // console.log('.gridsquare_map_form: ' + gridsquareFormHeight);

      // calculate correct map height
      var gridsquareMapHeight = window.innerHeight - headerNavHeight - gridsquareFormHeight - 8;

      // and set it
      $('#gridsquare_map').css('height', gridsquareMapHeight + 'px');
      // console.log('#gridsquare_map: ' + gridsquareMapHeight);
  }
</script>

<script>

  var layer = L.tileLayer('<?php echo $this->optionslib->get_option('option_map_tile_server');?>', {
    maxZoom: 18,
    attribution: option_map_tile_server_copyright,
    id: 'mapbox.streets'
  });

  var map = L.map('gridsquare_map', {
    layers: [layer],
    center: [19, 0],
    zoom: 2,
    fullscreenControl: true,
        fullscreenControlOptions: {
          position: 'topleft'
        },
  });

  var printer = L.easyPrint({
        tileLayer: layer,
        sizeModes: ['Current'],
        filename: 'myMap',
        exportOnly: true,
        hideControlContainer: true
    }).addTo(map);

  var grid_two = <?php echo $grid_2char; ?>;
  var grid_four = <?php echo $grid_4char; ?>;
  var grid_six = <?php echo $grid_6char; ?>;

  var grid_two_count = grid_two.length;
  var grid_four_count = grid_four.length;
  var grid_six_count = grid_six.length;


  var grid_two_confirmed = <?php echo $grid_2char_confirmed; ?>;
  var grid_four_confirmed = <?php echo $grid_4char_confirmed; ?>;
  var grid_six_confirmed = <?php echo $grid_6char_confirmed; ?>;

  var grid_two_confirmed_count = grid_two_confirmed.length;
  var grid_four_confirmed_count = grid_four_confirmed.length;
  var grid_six_confirmed_count = grid_six_confirmed.length;

  var maidenhead = L.maidenhead().addTo(map);

<?php if ($this->uri->segment(1) == "gridsquares" && $this->uri->segment(2) == "band") { ?>

  var bands_available = <?php echo $bands_available; ?>;
  $('#gridsquare_bands').append('<option value="All"><?= __("All"); ?></option>');
  $.each(bands_available, function(key, value) {
     $('#gridsquare_bands')
         .append($("<option></option>")
                    .attr("value",value)
                    .text(value));
  });

  var num = "<?php echo $this->uri->segment(3);?>";
    $("#gridsquare_bands option").each(function(){
        if($(this).val()==num){ // EDITED THIS LINE
            $(this).attr("selected","selected");
        }
    });

  $(function(){
      // bind change event to select
      $('#gridsquare_bands').on('change', function () {
          var url = $(this).val(); // get selected value
          if (url) { // require a URL
              window.location = "<?php echo site_url('gridsquares/band/');?>" + url
          }
          return false;
      });
    });
<?php } ?>
<?php } ?>
    </script>
    <?php if ($public_search_enabled || $this->session->userdata('user_type') >= 2) { ?>
    <script type="text/javascript" src="<?php echo $this->paths->cache_buster('/assets/js/datatables.min.js'); ?>"></script>
    <script type="text/javascript" src="<?php echo $this->paths->cache_buster('/assets/js/dataTables.buttons.min.js'); ?>"></script>
    <script type="text/javascript" src="<?php echo $this->paths->cache_buster('/assets/js/buttons.html5.min.js'); ?>"></script>
    <script type="text/javascript" src="<?php echo $this->paths->cache_buster('/assets/js/moment.min.js'); ?>"></script>
    <script type="text/javascript" src="<?php echo $this->paths->cache_buster('/assets/js/datetime-moment.js'); ?>"></script>
    <script>
            <?php switch($this->config->item('qso_date_format')) {
               case 'd/m/y': $usethisformat = 'D/MM/YY';break;
               case 'd/m/Y': $usethisformat = 'D/MM/YYYY';break;
               case 'm/d/y': $usethisformat = 'MM/D/YY';break;
               case 'm/d/Y': $usethisformat = 'MM/D/YYYY';break;
               case 'd.m.Y': $usethisformat = 'D.MM.YYYY';break;
               case 'y/m/d': $usethisformat = 'YY/MM/D';break;
               case 'Y-m-d': $usethisformat = 'YYYY-MM-D';break;
               case 'M d, Y': $usethisformat = 'MMM D, YYYY';break;
               case 'M d, y': $usethisformat = 'MMM D, YY';break;
               default: $usethisformat = 'YYYY-MM-D';
            } ?>

            $.fn.dataTable.moment('<?php echo $usethisformat ?>');
            $.fn.dataTable.ext.buttons.clear = {
                className: 'buttons-clear',
                action: function ( e, dt, node, config ) {
                   dt.search('').draw();
                }
            };
            $('#publicsearchtable').DataTable({
                "pageLength": 25,
                responsive: false,
                ordering: true,
                "scrollY":        "500px",
                "scrollCollapse": true,
                "paging":         true,
                "scrollX": true,
                "order": [ 0, 'desc' ],
                "language": {
                  url: getDataTablesLanguageUrl(),
                     search: '<?= __("Filter Results"); ?>',
                },
                dom: 'Bfrtip',
                buttons: [
                   {
						extend: 'csv',
						text: '<?= __("CSV"); ?>',
						className: 'mb-1 btn btn-primary', // Bootstrap classes
						init: function(api, node, config) {
							$(node).removeClass('dt-button').addClass('btn btn-primary'); // Ensure Bootstrap class applies
						},
                   },
                   {
                      extend: 'clear',
                      text: '<?= __("Clear Filter"); ?>',
					  className: 'mb-1 btn btn-primary', // Bootstrap classes
						init: function(api, node, config) {
							$(node).removeClass('dt-button').addClass('btn btn-primary'); // Ensure Bootstrap class applies
						},
                   }
                ]
            });
            // change color of csv-button if dark mode is chosen
            if (isDarkModeTheme()) {
               $('[class*="buttons"]').css("color", "white");
            }
        </script>
        <script type="text/javascript">
            $(function () {
                $(document).on('shown.bs.tooltip', function (e) {
                    setTimeout(function () {
                        $(e.target).tooltip('hide');
                    }, 3000);
                });
            });
            function validateForm() {
                let x = document.forms["searchForm"]["callsign"].value;
                if (x.trim() == "") {
                    $('#searchcall').tooltip('show')
                    return false;
                }
            }
        </script>
    <?php } ?>
  </body>
</html>
