<script>
let map, directionsService, directionsRenderer;

function initMap() {
  directionsService = new google.maps.DirectionsService();

  let pickupInput = document.getElementById("trip_from_loc");
  let dropInput = document.getElementById("trip_to_loc");

  let pickupAutocomplete = new google.maps.places.Autocomplete(pickupInput);
  let dropAutocomplete = new google.maps.places.Autocomplete(dropInput);

  let pickupLat = document.getElementById("pickupLat");
  let pickupLng = document.getElementById("pickupLng");
  let dropLat = document.getElementById("dropLat");
  let dropLng = document.getElementById("dropLng");
  let tripDistance = document.getElementById("tripDistance");
  let tripTime = document.getElementById("tripTime");

  function extractLatLng(place, latElement, lngElement) {
    if (place.geometry && place.geometry.location) {
      latElement.value = place.geometry.location.lat();
      lngElement.value = place.geometry.location.lng();
    } else {
      latElement.value = '';
      lngElement.value = '';
    }
  }

  pickupAutocomplete.addListener("place_changed", function() {
    let place = pickupAutocomplete.getPlace();
    extractLatLng(place, pickupLat, pickupLng);
    calculateRoute();
  });

  dropAutocomplete.addListener("place_changed", function() {
    let place = dropAutocomplete.getPlace();
    extractLatLng(place, dropLat, dropLng);
    calculateRoute();
  });

  pickupInput.addEventListener('input', function() {
    if (!this.value.trim()) {
      pickupLat.value = '';
      pickupLng.value = '';
      calculateRoute();
    }
  });

  dropInput.addEventListener('input', function() {
    if (!this.value.trim()) {
      dropLat.value = '';
      dropLng.value = '';
      calculateRoute();
    }
  });

  <%- include('./google-maps-stops') %>
  <%- include('./google-maps-promo') %>
  <%- include('./google-maps-calculate') %>
  <%- include('./google-maps-fare-calc') %>
  <%- include('./google-maps-rental') %>
  <%- include('./google-maps-category') %>
}
</script>

<script src="https://maps.googleapis.com/maps/api/js?key=<%= GoogleMapsAPIKey%>&libraries=places&callback=initMap" async defer></script>
