document.addEventListener('DOMContentLoaded', function() {
    // Récupération des données, temps de trajet, etc.
    fetchRouteTable();
    fetchTravelTimes();

    // Écouteur sur le bouton de calcul
    document.getElementById('calculateBtn').addEventListener('click', calculateRoute);
});

// ... (Vos fonctions existantes loadSampleData, populateDropdowns, etc.)

// Nouvelle fonction pour le calcul par nombre d'étapes (BFS)
function minimumStepsPath(connections, start, end) {
    let queue = [start];
    let visited = {};
    let parent = {};
    visited[start] = true;
    parent[start] = null;

    while (queue.length > 0) {
        let current = queue.shift();
        if (current === end) break;
        for (let neighbor in connections[current]) {
            if (connections[current][neighbor] === 1 && !visited[neighbor]) {
                visited[neighbor] = true;
                parent[neighbor] = current;
                queue.push(neighbor);
            }
        }
    }

    if (!visited[end]) return { path: null, steps: Infinity };

    let path = [];
    for (let node = end; node != null; node = parent[node]) {
        path.unshift(node);
    }
    return { path: path, steps: path.length - 1 };
}

// Fonction principale de calcul qui bascule entre le mode temps ou étapes
function calculateRoute() {
    const startCity = document.getElementById('startCity').value;
    const endCity = document.getElementById('endCity').value;
    const calcMode = document.getElementById('calcMode').value;

    if (startCity === endCity) {
        showResult('Error: Please, select 2 different towns.', '', true);
        return;
    }

    if (calcMode === 'time') {
        calculateFastestPath(startCity, endCity);
    } else if (calcMode === 'steps') {
        calculateMinimumStepsPath(startCity, endCity);
    }
}

// Fonction de calcul basée sur le nombre d'étapes
function calculateMinimumStepsPath(startCity, endCity) {
    const result = minimumStepsPath(connections, startCity, endCity);
    if (!result.path) {
        showResult('No path found between these two towns.', '', true);
        return;
    }
    const steps = result.steps;
    const pathText = result.path.join(' → ');
    const distanceText = `Nombre minimum d'étapes: ${steps} étape${steps > 1 ? 's' : ''}`;
    showResult(pathText, distanceText);
}
