document.addEventListener('DOMContentLoaded', function() { const liveTrainForm = document.getElementById('live-train-form'); let map = null; // Variable to hold the map instance let trainMarker = null; // Variable to hold the train marker if (liveTrainForm) { liveTrainForm.addEventListener('submit', function(e) { e.preventDefault(); const trainNumber = document.getElementById('train-number').value; // Use today's date for the demo const trainDate = new Date().toISOString().slice(0, 10).replace(/-/g, ''); const resultDiv = document.getElementById('live-train-result'); resultDiv.innerHTML = '
Loading...
'; fetch(`api/live_train_status_handler.php?train_number=${trainNumber}&date=${trainDate}`) .then(response => response.json()) .then(data => { if(data.ResponseCode == 200) { // Handle route display let routeHtml = ''; data.Route.forEach(station => { let statusClass = station.IsCurrentStation ? 'text-primary fw-bold' : ''; routeHtml += `
  • ${station.StationName} (${station.StationCode})
    Arrival: ${station.ActualArrival} | Departure: ${station.ActualDeparture}
  • `; }); resultDiv.innerHTML = `
    Current Status: ${data.Position}
    `; // Handle map display const coords = data.CurrentStation; if (coords.latitude && coords.longitude) { const latLng = [coords.latitude, coords.longitude]; if (!map) { // Initialize map map = L.map('live-train-map').setView(latLng, 13); L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: '© OpenStreetMap contributors' }).addTo(map); trainMarker = L.marker(latLng).addTo(map); } else { // Update map map.setView(latLng, 13); trainMarker.setLatLng(latLng); } trainMarker.bindPopup(`${data.TrainName}
    ${data.Position}`).openPopup(); } } else { resultDiv.innerHTML = `
    ${data.Message || 'Could not fetch live train status.'}
    `; } }) .catch(err => { console.error('Error:', err); resultDiv.innerHTML = `
    An error occurred.
    `; }); }); } });