/**
 * Back Button Navigation Control - SIMPLIFIED & FIXED
 *
 * Problem: History manipulation (replaceState/pushState) changes URL without reloading page
 * Solution: Let browser handle navigation naturally, only intercept when necessary
 *
 * Requirements:
 * 1. Natural browser back/forward navigation (URL changes = page loads)
 * 2. Prevent going back past home page
 * 3. Ensure page is always interactive after navigation
 */

(function () {
  "use strict";

  // Configuration
  const HOME_PAGES = ["/", "/home.html", "/index.html"];
  const HOME_URL = "/home.html";

  /**
   * Handle popstate (back/forward button) events
   * This fires AFTER the browser has already navigated (URL changed)
   */
  function handlePopState(event) {
    // Get the NEW current path (browser already changed it)
    const currentPath = window.location.pathname;

    // Ensure page is always interactive after back/forward
    document.body.classList.remove("page-transitioning");
    document.body.style.opacity = "1";
    sessionStorage.removeItem("page-transitioning");

    // If we're on home page after a back navigation
    // prevent going back further by adding home to history
    if (HOME_PAGES.includes(currentPath)) {
      // Use setTimeout to avoid interfering with current popstate
      setTimeout(() => {
        window.history.pushState({ page: "home" }, "", HOME_URL);
      }, 0);
    }
  }

  /**
   * Prevent going back past home page
   * Add an extra entry so back button stays on home
   */
  function preventBackPastHome() {
    const currentPath = window.location.pathname;
    if (HOME_PAGES.includes(currentPath)) {
      // Add an extra home entry
      window.history.pushState({ page: "home", initial: true }, "", HOME_URL);
    }
  }

  // Initialize: Add home history entry if on home page
  preventBackPastHome();

  // Listen for popstate (back/forward button)
  // NOTE: Browser handles the actual navigation (page reload)
  // We just ensure interactivity and prevent going back past home
  window.addEventListener("popstate", handlePopState);
})();
