    <!-- Optional JavaScript -->
    <!-- jQuery first, then Popper.js, then Bootstrap JS -->
    <script src="<?php echo base_url(); ?>assets/js/jquery-3.3.1.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
    <script src="<?php echo base_url(); ?>assets/js/jquery.fancybox.min.js"></script>
    <script src="<?php echo base_url(); ?>assets/js/bootstrap.bundle.js"></script>
    <script src="<?php echo base_url(); ?>assets/js/jquery.jclock.js"></script>

    <script type="text/javascript" src="<?php echo base_url(); ?>assets/js/leaflet/leaflet.js"></script>
    <script type="text/javascript" src="<?php echo base_url() ;?>assets/js/radiohelpers.js"></script>

<script type="text/javascript">
  var icon_dot_url = "<?php echo base_url();?>assets/images/dot.png";
</script>

    <?php if ($this->uri->segment(1) == "adif") { ?>
        <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
        <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tempusdominus-bootstrap-4/5.0.1/js/tempusdominus-bootstrap-4.min.js"></script>
        <script type="text/javascript">
            $(function () {
                $('#datetimepicker1').datetimepicker({
                    format: 'DD/MM/YYYY',
                });
            });

            $(function () {
                $('#datetimepicker2').datetimepicker({
                    format: 'DD/MM/YYYY',
                });
            });

            $(function () {
                $('#datetimepicker3').datetimepicker({
                    format: 'DD/MM/YYYY',
                });
            });

            $(function () {
                $('#datetimepicker4').datetimepicker({
                    format: 'DD/MM/YYYY',
                });
            });
        </script>
    <?php } ?>

<?php if ($this->uri->segment(1) == "notes" && ($this->uri->segment(2) == "add" || $this->uri->segment(2) == "edit") ) { ?>
    <script src="<?php echo base_url() ;?>assets/plugins/quill/quill.min.js"></script>
    
    <script>
      var quill = new Quill('#quillArea', { 
        placeholder: 'Compose an epic...',
        theme: 'snow'
      });

      $("#notes_add").on("submit",function(){
        $("#hiddenArea").val(quill.root.innerHTML);
      })
    </script>
<?php } ?>

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

<script type="text/javascript" src="<?php echo base_url() ;?>assets/js/query-builder.standalone.min.js"></script>

<script type="text/javascript">

$(".search-results-box").hide();

    $('#builder').queryBuilder({
    filters: [
      <?php foreach ($get_table_names->result() as $row) {
        $value_name = str_replace("COL_", "", $row->Field);
        if ($value_name != "PRIMARY_KEY" && strpos($value_name, 'MY_') === false && strpos($value_name, '_INTL') == false) { ?>
        {
          id: '<?php echo $row->Field; ?>',
          label: '<?php echo $value_name; ?>',
          <?php if (strpos($row->Type, 'int(') !== false) { ?>
          type: 'integer',
          operators: ['equal', 'not_equal', 'less', 'less_or_equal', 'greater', 'greater_or_equal']
          <?php } elseif(strpos($row->Type, 'double') !== false) { ?>
          type: 'double',
          operators: ['equal', 'not_equal', 'less', 'less_or_equal', 'greater', 'greater_or_equal']
          <?php } elseif(strpos($row->Type, 'datetime') !== false) { ?>
          type: 'datetime',
          operators: ['equal', 'not_equal', 'less', 'less_or_equal', 'greater', 'greater_or_equal']
          <?php } else { ?>
          type: 'string',
          operators: ['equal', 'not_equal', 'begins_with', 'contains', 'ends_with', 'is_empty', 'is_not_empty', 'is_null', 'is_not_null']
          <?php } ?>
        },
        <?php } ?>
      <?php } ?>
    ]
  });

  $('#btn-get').on('click', function() {
    var result = $('#builder').queryBuilder('getRules');
    if (!$.isEmptyObject(result)) {
      //alert(JSON.stringify(result, null, 2));

      $.post( "<?php echo site_url('search/json_result');?>", { search: JSON.stringify(result, null, 2), temp: "testvar" })
      .done(function( data ) {
        //console.log(data)
        //alert( "Data Loaded: " + data );
        $('.qso').remove();
        $(".search-results-box").show();

        $.each(JSON.parse(data), function(i, item) {

          var band = "";
          if(item.COL_SAT_NAME != "") {
            band = item.COL_SAT_NAME;
          } else {
            band = item.COL_BAND;
          }

          var callsign = '<a data-fancybox data-type="iframe" data-src="<?php echo site_url('logbook/view');?>/' + item.COL_PRIMARY_KEY + '" data-src="" href="javascript:;">' + item.COL_CALL + '</a>';
          if (item.COL_SUBMODE == null) {
            $('#results').append('<tr class="qso"><td>' + item.COL_TIME_ON + '</td><td>' + callsign + '</td><td>' + item.COL_MODE + '</td><td>' + item.COL_RST_SENT + '</td><td>' + item.COL_RST_RCVD + '</td><td>' + band + '</td><td>' + item.COL_COUNTRY + '</td><td></td></tr>');
          }
          else {
            $('#results').append('<tr class="qso"><td>' + item.COL_TIME_ON + '</td><td>' + callsign + '</td><td>' + item.COL_SUBMODE + '</td><td>' + item.COL_RST_SENT + '</td><td>' + item.COL_RST_RCVD + '</td><td>' + band + '</td><td>' + item.COL_COUNTRY + '</td><td></td></tr>');
          }
        });

      });
    }
    else{
      //console.log("invalid object :");
    }
  });

  $('#btn-set').on('click', function() {
    //$('#builder').queryBuilder('setRules', rules_basic);
    var result = $('#builder').queryBuilder('getRules');
    if (!$.isEmptyObject(result)) {
      rules_basic = result;
    }
  });

  //When rules changed :
  $('#builder').on('getRules.queryBuilder.filter', function(e) {
    //$log.info(e.value);
  });
</script>
<?php } ?>

<script>
$(document).ready(function() {
	$('#create_station_profile #country').val($("#dxcc_select option:selected").text());
	$("#create_station_profile #dxcc_select" ).change(function() {
	  $('#country').val($("#dxcc_select option:selected").text());
	});
});
</script>

<script>
$('[data-fancybox]').fancybox({
  toolbar  : false,
  smallBtn : true,
  iframe : {
    preload : false
  }
});

</script>

<?php if ($this->uri->segment(1) == "" || $this->uri->segment(1) == "dashboard" ) { ?>
    <script type="text/javascript" src="<?php echo base_url();?>assets/js/leaflet/L.Maidenhead.js"></script>
    <script type="text/javascript" src="<?php echo base_url();?>assets/js/leaflet/leafembed.js"></script>
    <script type="text/javascript">
      $(function () {
        $('[data-toggle="tooltip"]').tooltip()
      });

        <?php if($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 } ?>

        var qso_loc = '<?php echo site_url('dashboard/map');?>';
        var q_zoom = 3;

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

      });
    </script>
<?php } ?>



<?php if ($this->uri->segment(1) == "radio") { ?>
<!-- If this is the admin/radio page run the JS -->
<script type="text/javascript">
    $(document).ready(function(){
        setInterval(function() {
            // Get Mode
            $.get('radio/status/', function(result) {
                    //$('.status').append(result);
                    $('.status').html(result);
            });
        }, 2000);
 });
</script>
<?php } ?>


<?php if ($this->uri->segment(1) == "search") { ?>
<script type="text/javascript">
i=0;

function searchButtonPress(){
    event.preventDefault()
    if ($('#callsign').val()) {
      $('#partial_view').load("logbook/search_result/" + $('#callsign').val(), function() {});
    }
}

$(document).ready(function(){

  <?php if($this->input->post('callsign') != "") { ?>
    $('#partial_view').load("logbook/search_result/<?php echo $this->input->post('callsign'); ?>", function() {
    });
  <?php } ?>
    
$(document).on('keypress',function(e) { 
  if(e.which == 13) {

    if ($('#callsign').val()) {
      $('#partial_view').load("logbook/search_result/" + $('#callsign').val(), function() {});
    }


     event.preventDefault();
        return false;
  }
});


});
</script>
<?php } ?>

<?php if ($this->uri->segment(1) == "logbook" && $this->uri->segment(2) != "view") { ?>
    <script type="text/javascript" src="<?php echo base_url();?>assets/js/leaflet/L.Maidenhead.js"></script>
    <script type="text/javascript" src="<?php echo base_url();?>assets/js/leaflet/leafembed.js"></script>
    <script type="text/javascript">
        <?php if($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 } ?>

        var qso_loc = '<?php echo site_url('logbook/qso_map/25/'.$this->uri->segment(3)); ?>';
        var q_zoom = 3;

        <?php if ($this->config->item('map_gridsquares') != FALSE) { ?>
              var grid = "Yes";
        <?php } else { ?>
              var grid = "No";
        <?php } ?>
            initmap(grid);

    </script>
<?php } ?>

<?php if ($this->uri->segment(1) == "qso") { ?>

<script type="text/javascript">
$( document ).ready(function() {
  /*
    Populate the Satellite Names Field on the QSO Panel
  */
  $.getJSON( "<?php echo base_url();?>assets/json/satellite_data.json", function( data ) {

    // Build the options array
    var items = [];
    $.each( data, function( key, val ) {
      items.push(
        '<option value="' + key + '">' + key + '</option>'
        );
    });

    // Add to the datalist
    $('.satellite_names_list').append(items.join( "" ));
  });

});

var selected_sat;
var selected_sat_mode;

$(document).on('change', 'input', function(){
    var optionslist = $('.satellite_names_list')[0].options;
    var value = $(this).val();
    for (var x=0;x<optionslist.length;x++){
       if (optionslist[x].value === value) {
          $("#sat_mode").val(""); 
          $('.satellite_modes_list').find('option').remove().end();
          selected_sat = value;
          // get Json file
          $.getJSON( "<?php echo base_url();?>assets/json/satellite_data.json", function( data ) {

          // Build the options array
          var sat_modes = [];
          $.each( data, function( key, val ) {
            if (key == value) {
              $.each( val.Modes, function( key1, val2 ) {
                  //console.log (key1);
                  sat_modes.push('<option value="' + key1 + '">' + key1 + '</option>');
              });
            }
          });

          // Add to the datalist
          $('.satellite_modes_list').append(sat_modes.join( "" ));

        });
       }
    }
});

$(document).on('change', 'input', function(){
    var optionslist = $('.satellite_modes_list')[0].options;
    var value = $(this).val();
    for (var x=0;x<optionslist.length;x++){
       if (optionslist[x].value === value) {

          // Store selected sat mode
          selected_sat_mode = value;

          // get Json file
          $.getJSON( "<?php echo base_url();?>assets/json/satellite_data.json", function( data ) {

          // Build the options array
          var sat_modes = [];
          $.each( data, function( key, val ) {
            if (key == selected_sat) {
              $.each( val.Modes, function( key1, val2 ) {
                  if(key1 == selected_sat_mode) {
  
                    if (val2[0].Uplink_Mode == "LSB" || val2[0].Uplink_Mode == "USB") {
                      $("#mode").val("SSB");  
                    } else {
                      $("#mode").val(val2[0].Uplink_Mode);  
                    }
                    $("#band").val(frequencyToBand(val2[0].Uplink_Freq));
                    $("#frequency").val(val2[0].Uplink_Freq);  
                    $("#frequency_rx").val(val2[0].Downlink_Freq); 
                    $("#selectPropagation").val('SAT');
                  }
              });
            }
          });

        });
       }
    }
});

</script>

<script>
  var markers = L.layerGroup();
  var mymap = L.map('qsomap').setView([51.505, -0.09], 13);

  L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
    maxZoom: 18,
    attribution: 'Map data &copy; <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, ' +
      '<a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, ' +
      'Created by Cloudlog',
    id: 'mapbox.streets'
  }).addTo(mymap);

</script>


  <script type="text/javascript">

    var manual = <?php echo $_GET['manual']; ?>;

    $(document).ready(function() {

    $('.callsign-suggest').hide();

    setRst($(".mode").val());

    /* On Page Load */
    var catcher = function() {
      var changed = false;
      $('form').each(function() {
        if ($(this).data('initialForm') != $(this).serialize()) {
          changed = true;
          $(this).addClass('changed');
        } else {
          $(this).removeClass('changed');
        }
      });
      if (changed) {
        return 'Unsaved QSO!';
      }
    };

    $(function() {
      $('form').each(function() {
        $(this).data('initialForm', $(this).serialize());
      }).submit(function(e) {
        var formEl = this;
        var changed = false;
        $('form').each(function() {
          if (this != formEl && $(this).data('initialForm') != $(this).serialize()) {
            changed = true;
            $(this).addClass('changed');
          } else {
            $(this).removeClass('changed');
          }
        });
        if (changed && !confirm('You have an unsaved QSO. Continue with QSO?')) {
          e.preventDefault();
        } else {
          $(window).unbind('beforeunload', catcher);
        }
      });
      $(window).bind('beforeunload', catcher);
    });

     // Callsign always has focus on load
      $("#callsign").focus();  

      if ( ! manual ) {
        $(function($) {
          var options = {
            utc: true,
            format: '%H:%M:%S'
          }
          $('.input_time').jclock(options);
        });

        $(function($) {
          var options = {
            utc: true,
            format: '%d-%m-%Y'
          }
          $('.input_date').jclock(options);
        });
      }
    });

  /* Function: reset_fields is used to reset the fields on the QSO page */
  function reset_fields() {

      $('#locator_info').text("");
      $('#country').val("");
      $('#lotw_info').text("");
      $('#dxcc_id').val("");
      $('#cqz').val("");
      $('#name').val("");
      $('#qth').val("");
      $('#locator').val("");
      $('#iota_ref').val("");
      $("#locator").removeClass("workedGrid");
      $("#locator").removeClass("newGrid");
      $("#callsign").removeClass("workedGrid");
      $("#callsign").removeClass("newGrid");
      $('#callsign_info').removeClass("badge-secondary");
      $('#callsign_info').removeClass("badge-success");
      $('#callsign_info').removeClass("badge-danger");
      $('#qsl_via').val("");
      $('#callsign_info').text("");
      $('#input_usa_state').val("");
      $('#qso-last-table').show();
      $('#partial_view').hide();

      mymap.setView([51.505, -0.09], 13);
      mymap.removeLayer(markers);
      $('.callsign-suggest').hide();
  }

  jQuery(function($) {
  var input = $('#callsign');
  input.on('keydown', function() {
    var key = event.keyCode || event.charCode;

    if( key == 8 || key == 46 ) {
      reset_fields();
    }
  });
  
  $(document).keyup(function(e) {
     if (e.key === "Escape") { // escape key maps to keycode `27`
       reset_fields();
	   $('#callsign').val("");
	   $("#callsign").focus();
    }
});
});


    // On Key up check and suggest callsigns
    $("#callsign").keyup(function() {
    if ($(this).val().length >= 3) {
      $('.callsign-suggest').show();
      $.get('lookup/scp/' + $(this).val().toUpperCase(), function(result) {

        $('.callsign-suggestions').text(result);
      });
    }
    });

    $('#dxcc_id').on('change', function() {
        $.getJSON('logbook/jsonentity/' + $(this).val(), function (result) {
            if (result.dxcc.name != undefined) {

                $('#country').val(convert_case(result.dxcc.name));
                $('#cqz').val(convert_case(result.dxcc.cqz));

                $('#callsign_info').removeClass("badge-secondary");
                $('#callsign_info').removeClass("badge-success");
                $('#callsign_info').removeClass("badge-danger");
                $('#callsign_info').attr('title', '');
                $('#callsign_info').text(convert_case(result.dxcc.name));

                changebadge(result.dxcc.name);

                // Set Map to Lat/Long it locator is not empty
                if($('#locator').val() == "") {
                    var redIcon = L.icon({
                        iconUrl: icon_dot_url,
                        iconSize:     [18, 18], // size of the icon
                    });

                    markers.clearLayers();
                    var marker = L.marker([result.dxcc.lat, result.dxcc.long], {icon: redIcon});
					          mymap.setZoom(8);
					          mymap.panTo([result.dxcc.lat, result.dxcc.long]);
                    markers.addLayer(marker).addTo(mymap);
                }
            }
        });
    });

    function changebadge(entityname) {
        if($("#sat_name" ).val() != "") {
            $.getJSON('logbook/jsonlookupdxcc/' + convert_case(entityname) + '/SAT/0/0', function(result)
            {

                $('#callsign_info').removeClass("badge-secondary");
                $('#callsign_info').removeClass("badge-success");
                $('#callsign_info').removeClass("badge-danger");
                $('#callsign_info').attr('title', '');

                if (result.workedBefore)
                {
                    $('#callsign_info').addClass("badge-success");
                    $('#callsign_info').attr('title', 'DXCC was already worked in the past on this band and mode!');
                }
                else
                {
                    $('#callsign_info').addClass("badge-danger");
                    $('#callsign_info').attr('title', 'New DXCC, not worked on this band and mode!');
                }
            })
        } else {
            $.getJSON('logbook/jsonlookupdxcc/' + convert_case(entityname) + '/0/' + $("#band").val() +'/' + $("#mode").val(), function(result)
            {
                // Reset CSS values before updating
                $('#callsign_info').removeClass("badge-secondary");
                $('#callsign_info').removeClass("badge-success");
                $('#callsign_info').removeClass("badge-danger");
                $('#callsign_info').attr('title', '');

                if (result.workedBefore)
                {
                    $('#callsign_info').addClass("badge-success");
                    $('#callsign_info').attr('title', 'DXCC was already worked in the past on this band and mode!');
                }
                else
                {
                    $('#callsign_info').addClass("badge-danger");
                    $('#callsign_info').attr('title', 'New DXCC, not worked on this band and mode!');
                }
            })
        }
    }
<?php if ($this->config->item('qso_auto_qth')) { ?>
    $('#qth').focusout(function() {
    	if ($('#locator').val() === '') {
			var lat = 0;
			var lon = 0;
			$.ajax({
				async: false,
				type: 'GET',
				dataType: "json",
				url: "https://nominatim.openstreetmap.org/search/?city=" + $(this).val() + "&format=json&addressdetails=1&limit=1",
				data: {},
				success: function (data) {
					if (typeof data[0].lat !== 'undefined') {
						lat = parseFloat(data[0].lat);
					}
					if (typeof data[0].lon !== 'undefined') {
						lon = parseFloat(data[0].lon);
					}
				},
			});
			if (lat !== 0 && lon !== 0) {
				var qthloc = LatLng2Loc(lat, lon, 10);
				if (qthloc.length > 0) {
					$('#locator').val(qthloc.substr(0, 6)).trigger('focusout');
				}
			}
		}
	});

	LatLng2Loc = function(y, x, num) {
		if (x < -180) {
			x = x + 360;
		}
		if (x > 180) {
			x = x - 360;
		}
		var yqth, yi, yk, ydiv, yres, ylp, y;
		var ycalc = new Array(0, 0, 0);
		var yn = new Array(0, 0, 0, 0, 0, 0, 0);

		var ydiv_arr = new Array(10, 1, 1 / 24, 1 / 240, 1 / 240 / 24);
		ycalc[0] = (x + 180) / 2;
		ycalc[1] = y + 90;

		for (yi = 0; yi < 2; yi++) {
			for (yk = 0; yk < 5; yk++) {
				ydiv = ydiv_arr[yk];
				yres = ycalc[yi] / ydiv;
				ycalc[yi] = yres;
				if (ycalc[yi] > 0) ylp = Math.floor(yres); else ylp = Math.ceil(yres);
				ycalc[yi] = (ycalc[yi] - ylp) * ydiv;
				yn[2 * yk + yi] = ylp;
			}
		}

		var qthloc = "";
		if (num >= 2) qthloc += String.fromCharCode(yn[0] + 0x41) + String.fromCharCode(yn[1] + 0x41);
		if (num >= 4) qthloc += String.fromCharCode(yn[2] + 0x30) + String.fromCharCode(yn[3] + 0x30);
		if (num >= 6) qthloc += String.fromCharCode(yn[4] + 0x41) + String.fromCharCode(yn[5] + 0x41);
		if (num >= 8) qthloc += ' ' + String.fromCharCode(yn[6] + 0x30) + String.fromCharCode(yn[7] + 0x30);
		if (num >= 10) qthloc += String.fromCharCode(yn[8] + 0x61) + String.fromCharCode(yn[9] + 0x61);
		return qthloc;
	}
	<?php } ?>

    $("#callsign").focusout(function() {

        if ($(this).val().length >= 3) {
            /* Find and populate DXCC */
            $('.callsign-suggest').hide();

            if($("#sat_name").val() != ""){
              var sat_type = "SAT";
              var json_band = "0";
              var json_mode = "0";
            } else {
              var sat_type = "0";
              var json_band = $("#band").val();
              var json_mode = $("#mode").val();
            }


            $.getJSON('logbook/json/' + $(this).val().toUpperCase() + '/' + sat_type + '/' + json_band + '/' + json_mode, function(result)
            {
              //$('#country').val(result); lotw_info
              if(result.dxcc.entity != undefined) {
                $('#country').val(convert_case(result.dxcc.entity));
                $('#callsign_info').text(convert_case(result.dxcc.entity));
				
				if($("#sat_name" ).val() != "") {
					//logbook/jsonlookupgrid/io77/SAT/0/0
					$.getJSON('logbook/jsonlookupcallsign/' + $("#callsign").val().toUpperCase() + '/SAT/0/0', function(result)
					{
					  // Reset CSS values before updating
					  $('#callsign').removeClass("workedGrid");
					  $('#callsign').removeClass("newGrid");
					  $('#callsign').attr('title', '');

					  if (result.workedBefore)
					  {
						$('#callsign').addClass("workedGrid");
						$('#callsign').attr('title', 'Callsign was already worked in the past on this band and mode!');
					  }
					  else
					  {
						$('#callsign').addClass("newGrid");
						$('#callsign').attr('title', 'New Callsign!');
					  }
					})
				  } else {
					$.getJSON('logbook/jsonlookupcallsign/' + $("#callsign").val().toUpperCase() + '/0/' + $("#band").val() +'/' + $("#mode").val(), function(result)
					{
					  // Reset CSS values before updating
					  $('#callsign').removeClass("workedGrid");
					  $('#callsign').removeClass("newGrid");
					  $('#callsign').attr('title', '');

					  if (result.workedBefore)
					  {
						$('#callsign').addClass("workedGrid");
						$('#callsign').attr('title', 'Callsign was already worked in the past on this band and mode!');
					  }
					  else
					  {
						$('#callsign').addClass("newGrid");
						$('#callsign').attr('title', 'New Callsign!');
					  }
					})
				  }

                  changebadge(result.dxcc.entity);
              }

              if(result.lotw_member == "active") {
                $('#lotw_info').text("LoTW");
              }

              $('#dxcc_id').val(result.dxcc.adif);
              $('#cqz').val(result.dxcc.cqz);
              $('#ituz').val(result.dxcc.ituz);


              var redIcon = L.icon({
                iconUrl: icon_dot_url,
                iconSize:     [18, 18], // size of the icon
              });

              // Set Map to Lat/Long
              markers.clearLayers();
				      mymap.setZoom(8);
              if (typeof result.latlng !== "undefined" && result.latlng !== false) {
                var marker = L.marker([result.latlng[0], result.latlng[1]], {icon: redIcon});
                mymap.panTo([result.latlng[0], result.latlng[1]]);
              } else {
                var marker = L.marker([result.dxcc.lat, result.dxcc.long], {icon: redIcon});
                mymap.panTo([result.dxcc.lat, result.dxcc.long]);
              }

              markers.addLayer(marker).addTo(mymap);
        

            /* Find Locator if the field is empty */
            if($('#locator').val() == "") {
                $('#locator').val(result.callsign_qra);
                $('#locator_info').html(result.bearing);

                if (result.callsign_qra != "")
                {
                  if (result.workedBefore)
                  {
                    $('#locator').addClass("workedGrid");
                    $('#locator').attr('title', 'Grid was already worked in the past');
                  }
                  else
                  {
                    $('#locator').addClass("newGrid");
                    $('#locator').attr('title', 'New grid!');
                  }
                }
                else
                {
                  $('#locator').removeClass("workedGrid");
                  $('#locator').removeClass("newGrid");
                  $('#locator').attr('title', '');
                }
                
            }

            /* Find Operators Name */
            if($('#qsl_via').val() == "") {
                $('#qsl_via').val(result.qsl_manager);
            }

            /* Find Operators Name */
            if($('#name').val() == "") {
                $('#name').val(result.callsign_name);
            }

            if($('#qth').val() == "") {
                $('#qth').val(result.callsign_qth);
            }

            /*
            * Update state with returned value
            */
            if($("#input_usa_state").val() == "") {
              $("#input_usa_state").val(result.callsign_state).trigger('change');
            }


            if($('#iota_ref').val() == "") {
                $('#iota_ref').val(result.callsign_iota);
            }
            // Hide the last QSO table
            $('#qso-last-table').hide();
            $('#partial_view').show();
            /* display past QSOs */
            $('#partial_view').html(result.partial);
            });
          } else {
            /* Reset fields ... */
            $('#callsign_info').text("");
            $('#locator_info').text("");
            $('#country').val("");
            $('#dxcc_id').val("");
            $('#cqz').val("");
            $('#name').val("");
            $('#qth').val("");
            $('#locator').val("");
            $('#iota_ref').val("");
            $("#locator").removeClass("workedGrid");
            $("#locator").removeClass("newGrid");
            $("#callsign").removeClass("workedGrid");
            $("#callsign").removeClass("newGrid");
			      $('#callsign_info').removeClass("badge-secondary");
			      $('#callsign_info').removeClass("badge-success");
			      $('#callsign_info').removeClass("badge-danger");
            $('#input_usa_state').val("");
        }  
    })

        // Only set the frequency when not set by userdata/PHP.
    if ($('#frequency').val() == "")
    {
      $.get('qso/band_to_freq/' + $('#band').val() + '/' + $('.mode').val(), function(result) {
            $('#frequency').val(result);
            $('#frequency_rx').val("");
      });
    } 

    /* on mode change */
    $('.mode').change(function() {
        $.get('qso/band_to_freq/' + $('#band').val() + '/' + $('.mode').val(), function(result) {
            $('#frequency').val(result);
            $('#frequency_rx').val("");
          });  
      });  

    /* Calculate Frequency */
      /* on band change */
      $('#band').change(function() {
        $.get('qso/band_to_freq/' + $(this).val() + '/' + $('.mode').val(), function(result) {
            $('#frequency').val(result);
            $('#frequency_rx').val("");
          });  
      });
  
      /* On Key up Calculate Bearing and Distance */
    $("#locator").keyup(function(){
      if ($(this).val()) {
        var qra_input = $(this).val();

        var qra_lookup = qra_input.substring(0, 4);

        if(qra_lookup.length >= 4) {
          
          // Check Log if satname is provided
          if($("#sat_name" ).val() != "") {

            //logbook/jsonlookupgrid/io77/SAT/0/0

            $.getJSON('logbook/jsonlookupgrid/' + qra_lookup.toUpperCase() + '/SAT/0/0', function(result)
            {
              // Reset CSS values before updating
              $('#locator').removeClass("workedGrid");
              $('#locator').removeClass("newGrid");
              $('#locator').attr('title', '');

              if (result.workedBefore)
              {
                $('#locator').addClass("workedGrid");
                $('#locator').attr('title', 'Grid was already worked in the past');
              }
              else
              {
                $('#locator').addClass("newGrid");
                $('#locator').attr('title', 'New grid!');
              }
            })
          } else {
            $.getJSON('logbook/jsonlookupgrid/' + qra_lookup.toUpperCase() + '/0/' + $("#band").val() +'/' + $("#mode").val(), function(result)
            {
              // Reset CSS values before updating
              $('#locator').removeClass("workedGrid");
              $('#locator').removeClass("newGrid");
              $('#locator').attr('title', '');

              if (result.workedBefore)
              {
                $('#locator').addClass("workedGrid");
                $('#locator').attr('title', 'Grid was already worked in the past');
              }
              else
              {
                $('#locator').addClass("newGrid");
                $('#locator').attr('title', 'New grid!');
              }
            })
          }
        }

        if(qra_input.length >= 4 && $(this).val().length > 0) {
          $.getJSON('logbook/qralatlngjson/' + $(this).val(), function(result)
          {
            // Set Map to Lat/Long
            markers.clearLayers();
            if (typeof result !== "undefined") {
              var redIcon = L.icon({
                        iconUrl: icon_dot_url,
                        iconSize:     [18, 18], // size of the icon
                    });

              var marker = L.marker([result[0], result[1]], {icon: redIcon});
              mymap.setZoom(8);
              mymap.panTo([result[0], result[1]]);
            }
            markers.addLayer(marker).addTo(mymap);
          })
          
          $('#locator_info').load("logbook/searchbearing/" + $(this).val()).fadeIn("slow");
        }
      }
    });

    // Change report based on mode
    $('.mode').change(function(){
      setRst($('.mode') .val());
    });

    function setRst(mode) {
        if(mode == 'JT65' || mode == 'JT65B' || mode == 'JT6C' || mode == 'JTMS' || mode == 'ISCAT' || mode == 'MSK144' || mode == 'JTMSK' || mode == 'QRA64' || mode == 'FT8' || mode == 'FT4' || mode == 'JS8' || mode == 'JT9' || mode == 'JT9-1' || mode == 'ROS'){
            $('#rst_sent').val('-5');
            $('#rst_recv').val('-5');
        } else if (mode == 'FSK441' || mode == 'JT6M') {
            $('#rst_sent').val('26');
            $('#rst_recv').val('26');
        } else if (mode == 'CW' || mode == 'RTTY' || mode == 'PSK31' || mode == 'PSK63') {
            $('#rst_sent').val('599');
            $('#rst_recv').val('599');
        } else {
            $('#rst_sent').val('59');
            $('#rst_recv').val('59');
        }
    }


  /* Javascript for controlling rig frequency. */
<?php if ( $_GET['manual'] == 0 ) { ?>
  var updateFromCAT = function() {
    if($('select.radios option:selected').val() != '0') {
      radioID = $('select.radios option:selected').val(); 
      $.getJSON( "radio/json/" + radioID, function( data ) {
          /* {
              "uplink_freq": "2400210000",
              "downlink_freq": "10489710000",
              "mode": "SSB",
              "satmode": "",
              "satname": "ES'HAIL-2"
          }  */
          if (data.uplink_freq != "")
          {
            $('#frequency').val(data.uplink_freq);
            $("#band").val(frequencyToBand(data.uplink_freq));
          }
          if (data.downlink_freq != "")
          {
            $('#frequency_rx').val(data.downlink_freq);
          }

          old_mode = $(".mode").val();
          if (data.mode == "LSB" || data.mode == "USB" || data.mode == "SSB") {
            $(".mode").val('SSB');
          } else {
            $(".mode").val(data.mode);  
          }

          if (old_mode !== $(".mode").val()) {
            // Update RST on mode change via CAT
            setRst($(".mode").val());
          }
          $("#sat_name").val(data.satname);  
          $("#sat_mode").val(data.satmode);  

          // Display CAT Timeout warnng based on the figure given in the config file
            var minutes = Math.floor(<?php echo $this->config->item('cat_timeout_interval'); ?> / 60);

            if(data.updated_minutes_ago > minutes) {
              if($('.radio_timeout_error').length == 0) {
                $('.qso_panel').prepend('<div class="alert alert-danger radio_timeout_error" role="alert">Radio Connection Error: ' + $('select.radios option:selected').text() + ' data is ' + data.updated_minutes_ago + ' minutes old.</div>');  
              } else {
                $('.radio_timeout_error').text('Radio Connection Error: ' + $('select.radios option:selected').text() + ' data is ' + data.updated_minutes_ago + ' minutes old.');    
              }
            } else {
              $(".radio_timeout_error" ).remove();
            }

      });
    }
  };

  // Update frequency every three second
  setInterval(updateFromCAT, 3000);

  // If a radios selected from drop down select radio update.
  $('.radios').change(updateFromCAT);

  // If radio isn't SatPC32 clear sat_name and sat_mode
  $( ".radios" ).change(function() {
      if ($(".radios option:selected").text() != "SatPC32") {
        $("#sat_name").val("");  
        $("#sat_mode").val("");  
        $("#frequency").val("");  
        $("#frequency_rx").val(""); 
        $("#selectPropagation").val($("#selectPropagation option:first").val());
      }

      if ($(".radios option:selected").text() == "None") {
        $(".radio_timeout_error" ).remove();
      }

  });

<?php } ?>

  function convert_case(str) {
    var lower = str.toLowerCase();
    return lower.replace(/(^| )(\w)/g, function(x) {
      return x.toUpperCase();
    });
  }

  </script>

<?php } ?>

<?php if ($this->uri->segment(1) == "logbook" && $this->uri->segment(2) == "view") { ?>
<script>

  var mymap = L.map('map').setView([lat,long], 5);

  L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token=pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4NXVycTA2emYycXBndHRqcmZ3N3gifQ.rJcFIG214AriISLbB6B5aw', {
    maxZoom: 18,
    attribution: 'Map data &copy; <a href="https://www.openstreetmap.org/">OpenStreetMap</a>, ' +
      'Generated by <a href="http://www.cloudlog.co.uk/">Cloudlog</a>',
    id: 'mapbox.streets'
  }).addTo(mymap);


  var redIcon = L.icon({
      iconUrl: icon_dot_url,
      iconSize:     [18, 18], // size of the icon
  });

  L.marker([lat,long], {icon: redIcon}).addTo(mymap)
    .bindPopup(callsign);

  mymap.on('click', onMapClick);

</script>
<?php } ?>

<?php if ($this->uri->segment(1) == "update") { ?>
<script>
$(document).ready(function(){
    $('#btn_update_dxcc').bind('click', function(){
        $('#dxcc_update_status').show();
        $.ajax({url:"update/dxcc"});
        setTimeout(update_stats,5000);
    });
    function update_stats(){
        $('#dxcc_update_status').load('<?php echo base_url()?>updates/status.html', function(val){
            $('#dxcc_update_staus').html(val);

            if ((val  === null) || (val.substring(0,4) !="DONE")){
                setTimeout(update_stats, 5000);
            }
        });

    }

});
</script>

<?php } ?>

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

<script type="text/javascript" src="<?php echo base_url();?>assets/js/leaflet/L.MaidenheadColoured.js"></script>

<script>

  var layer = L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
    maxZoom: 18,
    attribution: 'Map data &copy; <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, ' +
      '<a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, ' +
      'Created by Cloudlog',
    id: 'mapbox.streets'
  });


  var map = L.map('map', {
    layers: [layer],
    center: [19, 0],
    zoom: 3
  });
  
  var grid_two = <?php echo $grid_2char; ?>;
  var grid_four = <?php echo $grid_4char; ?>;
  var grid_six = <?php echo $grid_6char; ?>;

  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 maidenhead = L.maidenhead().addTo(map);

  map.on('click', onMapClick);

  function onMapClick(event) {
    var LatLng = event.latlng;
    var lat = LatLng.lat; 
    var lng = LatLng.lng;           
    var locator = LatLng2Loc(lat,lng, 10);
    var loc_4char = locator.substring(0, 4);
    console.log(loc_4char);
    console.log(map.getZoom());

    if(map.getZoom() > 5) {
      var search_type = "<?php echo $this->uri->segment(2); ?>";
      if(search_type == "satellites") {
        console.log("satellites search");
        var search_tags = "search_sat/" + loc_4char;
      } else {
        var band = "<?php echo $this->uri->segment(3); ?>";
        console.log(band);
        var search_tags = "search_band/" + band + "/" + loc_4char;
      }

      $.getJSON( "<?php echo site_url('gridsquares/');?>" + search_tags, function( data ) {
        var count = Object.keys(data).length;
        console.log("Count: " + count);
        var items = [];
        $.each( data, function( i, item ) {
          console.log(item.COL_CALL + item.COL_SAT_NAME);
          if(item.COL_SAT_NAME != undefined) {
            items.push( "<tr><td>" + item.COL_TIME_ON + "</td><td>" + item.COL_CALL + "</td><td>" + item.COL_MODE + "</td><td>" + item.COL_SAT_NAME + "</td><td>" + item.COL_GRIDSQUARE + "</td></tr>" );
          } else {
            items.push( "<tr><td>" + item.COL_TIME_ON + "</td><td>" + item.COL_CALL + "</td><td>" + item.COL_MODE + "</td><td>" + item.COL_BAND + "</td><td>" + item.COL_GRIDSQUARE + "</td></tr>" );
          }
        });

        $('#qso_count').text(count);
        if (count > 1) {
           $('#gt1_qso').text("s");
        } else {
           $('#gt1_qso').text("");
        }

        $("#grid_results tbody").empty(); 
        if (count > 0) {
          $("#grid_results tbody").append(items.join( "" ));

          $('#square_number').text(loc_4char);
          $('#exampleModal').modal('show');
        }

      });
    }
  };

<?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 } ?>

</script>
<?php } ?>

<?php if ($this->uri->segment(1) == "dayswithqso") { ?>
    <script src="https://cdn.jsdelivr.net/npm/chart.js@2.8.0"></script>
    <script>
        var baseURL= "<?php echo base_url();?>";
        $.ajax({
            url: baseURL+'index.php/dayswithqso/get_days',
            success: function(data) {
                var labels = [];
                var dataDxcc = [];
                $.each(data, function(){
                    labels.push(this.Year);
                    dataDxcc.push(this.Days);
                });
                var ctx = document.getElementById("myChartDiff").getContext('2d');
                var myChart = new Chart(ctx, {
                    type: 'bar',
                    data: {
                        labels: labels,
                        datasets: [{
                            label: 'Days with QSOs',
                            data: dataDxcc,
                            backgroundColor: 'rgba(54, 162, 235, 0.2)',
                            borderColor: 'rgba(54, 162, 235, 1)',
                            borderWidth: 2
                        }]
                    },
                    options: {
                        scales: {
                            yAxes: [{
                                ticks: {
                                beginAtZero:true
                                }
                            }]
                        },
                    }
                });
            }
        });
    </script>
<?php } ?>

<?php if ($this->uri->segment(1) == "distances") { ?>
    <script src="https://code.highcharts.com/stock/highstock.js"></script>
<script>

  var bands_available = <?php echo $bands_available; ?>;

  $.each(bands_available, function(key, value) {
     $('#distplot_bands')
         .append($("<option></option>")
                    .attr("value",value)
                    .text(value));
  });

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

  function distPlot(form) {
      $(".alert").remove();
      var baseURL= "<?php echo base_url();?>";
      $.ajax({
          url: baseURL+'index.php/distances/get_distances',
          type: 'post',
          data: {'locator': 'JP50HP', 'band': form.distplot_bands.value},
          success: function(tmp) {
              if (tmp.ok == 'OK') {
                  if (!($('#information').length > 0))
                      $("#distances_div").append('<div id="information"></div><div id="graphcontainer" style="height: 600px; margin: 0 auto"></div>');
                  var options = {
                      chart: {
                          type: 'column',
                          zoomType: 'xy',
                          renderTo: 'graphcontainer'
                      },
                      title: {
                          text: 'Mode distribution'
                      },
                      xAxis: {
                          categories: [],
                          crosshair: true,
                          type: "category",
                          min:0,
                          max:100

                      },
                      yAxis: {
                          title: {
                              text: '# QSOs'
                          }
                      },
                      navigator: {
                          enabled: true,
                          xAxis: {
                              labels: {
                                  formatter: function() {
                                      return this.value * '50' + ' km';
                                  }
                              }
                          }
                      },
                      rangeSelector: {
                          selected: 1
                      },
                      tooltip: {
                          formatter: function () {
                              if(this.point) {
                                  return "Distance: " + options.xAxis.categories[this.point.x] +
                                      "<br />Callsign(s) worked (max 5 shown): " + myComments[this.point.x] +
                                      "<br />Number of QSOs: <strong>" + series.data[this.point.x] + "</strong>";
                              }
                          }
                      },
                      series: []
                  };
                  var myComments=[];

                  var series = {
                      data: [],
                      showInNavigator: true
                  };

                  $.each(tmp.qsodata, function(){
                      myComments.push(this.calls);
                      options.xAxis.categories.push(this.dist);
                      series.name = 'Number of QSOs';
                      series.data.push(this.count);

                  });

                  options.series.push(series);

                  $('#information').html(tmp.qrb.Qsoes + " contacts were plotted.<br /> Your furthest contact was with " + tmp.qrb.Callsign
                      + " in gridsquare "+ tmp.qrb.Grid
                      +" the distance was "
                      +tmp.qrb.Distance +"km.");

                  var chart = new Highcharts.Chart(options);
              }
              else {
                  if (($('#information').length > 0)) {
                      $("#information").remove();
                      $("#graphcontainer").remove();
                  }
                  $("#distances_div").append('<div class="alert alert-danger" role="alert"><a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>' + tmp.Error + '</div>');
              }
          }
      });
  }

</script>
<?php } ?>

    <?php if ($this->uri->segment(2) == "import") { ?>
        <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
        <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tempusdominus-bootstrap-4/5.0.1/js/tempusdominus-bootstrap-4.min.js"></script>
        <script type="text/javascript">
            $(function () {
                $('#datetimepicker1').datetimepicker({
                    format: 'DD/MM/YYYY',
                });
            });
        </script>
    <?php } ?>

    <?php if ($this->uri->segment(1) == "qrz") { ?>
        <script>
            function ExportQrz(station_id) {
                if ($(".alert").length > 0) {
                    $(".alert").remove();
                }
                if ($(".errormessages").length > 0) {
                    $(".errormessages").remove();
                }
                $(".ld-ext-right").addClass('running');
                $(".ld-ext-right").prop('disabled', true);
                var baseURL= "<?php echo base_url();?>";
                $.ajax({
                    url: baseURL + 'index.php/qrz/upload_station',
                    type: 'post',
                    data: {'station_id': station_id},
                    success: function (data) {
                        $(".ld-ext-right").removeClass('running');
                        $(".ld-ext-right").prop('disabled', false);
                        if (data.status == 'OK') {
                            $.each(data.info, function(index, value){
                                $('#modcount'+value.station_id).html(value.modcount);
                                $('#notcount'+value.station_id).html(value.notcount);
                                $('#totcount'+value.station_id).html(value.totcount);
                            });
                            $(".card-body").append('<div class="alert alert-success" role="alert"><a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>' + data.infomessage + '</div>');
                        }
                        else {
                            $(".card-body").append('<div class="alert alert-danger" role="alert"><a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>' + data.info + '</div>');
                        }

                        if (data.errormessages.length > 0) {
                            $(".card-body").append('' +
                                '<div class="errormessages"><p>\n' +
                                '                            <button class="btn btn-danger" type="button" data-toggle="collapse" data-target="#collapseExample" aria-expanded="false" aria-controls="collapseExample">\n' +
                                '                                Show error messages\n' +
                                '                            </button>\n' +
                                '                            </p>\n' +
                                '                            <div class="collapse" id="collapseExample">\n' +
                                '                                <div class="card card-body"><div class="errors"></div>\n' +
                                '                            </div>\n' +
                                '                            </div></div>');
                            $.each(data.errormessages, function(index, value) {
                                $(".errors").append('<li>' + value);
                            });
                        }
                    }
                });
            }

        </script>
    <?php } ?>
  </body>
</html>
