/* ==========================================================================
   Klinik Psikolog Ezgi Baktır — Site Etkileşimleri
   --------------------------------------------------------------------------
   Bağımlılık yoktur. Saf vanilla JavaScript.
   1. Mobil menü açma/kapama
   2. Sayfa kaydırıldığında başlığın (header) katılaşması
   3. IntersectionObserver ile scroll-reveal animasyonları
   4. Aktif menü bağlantısının işaretlenmesi
   5. Yıl bilgisinin otomatik güncellenmesi
   6. İletişim formunun istemci tarafı doğrulaması (arka uç bağlanana kadar)
   ========================================================================== */

(function () {
  "use strict";

  var prefersReducedMotion = window.matchMedia("(prefers-reduced-motion: reduce)").matches;

  /* ------------------------------------------------------------------
     1. MOBİL MENÜ
     ------------------------------------------------------------------ */
  function initNavToggle() {
    var toggle = document.getElementById("navToggle");
    var nav = document.getElementById("primaryNav");
    if (!toggle || !nav) return;

    var mobileQuery = window.matchMedia("(max-width: 899px)");

    function setExpanded(isOpen) {
      toggle.setAttribute("aria-expanded", String(isOpen));
      toggle.setAttribute("aria-label", isOpen ? "Menüyü kapat" : "Menüyü aç");
      nav.classList.toggle("is-open", isOpen);
      document.body.classList.toggle("nav-open", isOpen && mobileQuery.matches);
    }

    function close() { setExpanded(false); }

    toggle.addEventListener("click", function () {
      var isOpen = toggle.getAttribute("aria-expanded") === "true";
      setExpanded(!isOpen);
    });

    // Menüdeki bir bağlantıya tıklanınca kapat
    nav.addEventListener("click", function (event) {
      if (event.target.closest("a") && mobileQuery.matches) close();
    });

    // Escape tuşu ile kapat
    document.addEventListener("keydown", function (event) {
      if (event.key === "Escape" && toggle.getAttribute("aria-expanded") === "true") {
        close();
        toggle.focus();
      }
    });

    // Menü dışına tıklanınca kapat
    document.addEventListener("click", function (event) {
      if (!mobileQuery.matches) return;
      if (toggle.getAttribute("aria-expanded") !== "true") return;
      if (event.target.closest("#primaryNav") || event.target.closest("#navToggle")) return;
      close();
    });

    // Masaüstü genişliğine geçilirse durumu sıfırla
    var onChange = function () { if (!mobileQuery.matches) close(); };
    if (typeof mobileQuery.addEventListener === "function") {
      mobileQuery.addEventListener("change", onChange);
    } else if (typeof mobileQuery.addListener === "function") {
      mobileQuery.addListener(onChange);
    }
  }

  /* ------------------------------------------------------------------
     2. KAYDIRMADA BAŞLIK DURUMU
     ------------------------------------------------------------------ */
  function initHeaderScroll() {
    var header = document.getElementById("siteHeader");
    if (!header) return;

    var ticking = false;
    var threshold = 24;

    function update() {
      header.classList.toggle("is-scrolled", window.scrollY > threshold);
      ticking = false;
    }

    window.addEventListener("scroll", function () {
      if (!ticking) {
        window.requestAnimationFrame(update);
        ticking = true;
      }
    }, { passive: true });

    update();
  }

  /* ------------------------------------------------------------------
     3. SCROLL-REVEAL
     ------------------------------------------------------------------ */
  function initReveal() {
    var items = document.querySelectorAll(".reveal");
    if (!items.length) return;

    // IntersectionObserver desteklenmiyorsa veya hareket azaltma açıksa
    // tüm içerik anında görünür olsun.
    if (!("IntersectionObserver" in window) || prefersReducedMotion) {
      Array.prototype.forEach.call(items, function (el) { el.classList.add("is-visible"); });
      return;
    }

    var observer = new IntersectionObserver(function (entries) {
      entries.forEach(function (entry) {
        if (entry.isIntersecting) {
          entry.target.classList.add("is-visible");
          observer.unobserve(entry.target);
        }
      });
    }, { root: null, rootMargin: "0px 0px -10% 0px", threshold: 0.12 });

    Array.prototype.forEach.call(items, function (el) { observer.observe(el); });
  }

  /* ------------------------------------------------------------------
     4. AKTİF MENÜ BAĞLANTISI
     Sunucu yapılandırmasından bağımsız çalışır: "/", "/index.html" ve
     "/hizmetler.html" gibi tüm biçimleri doğru eşler.
     ------------------------------------------------------------------ */
  function initActiveNav() {
    var links = document.querySelectorAll(".nav__link");
    if (!links.length) return;

    var path = window.location.pathname.split("/").pop().toLowerCase();
    if (path === "" ) path = "index.html";

    Array.prototype.forEach.call(links, function (link) {
      var target = (link.getAttribute("href") || "").split("/").pop().toLowerCase();
      if (target === "") target = "index.html";

      var isActive = target === path;
      link.classList.toggle("is-active", isActive);

      if (isActive) {
        link.setAttribute("aria-current", "page");
      } else {
        link.removeAttribute("aria-current");
      }
    });
  }

  /* ------------------------------------------------------------------
     5. TELİF YILI
     ------------------------------------------------------------------ */
  function initYear() {
    var nodes = document.querySelectorAll("[data-current-year]");
    var year = String(new Date().getFullYear());
    Array.prototype.forEach.call(nodes, function (node) { node.textContent = year; });
  }

  /* ------------------------------------------------------------------
     6. İLETİŞİM FORMU
     Form henüz bir arka uca bağlı olmadığı için gönderim engellenir ve
     kullanıcıya bilgilendirici bir mesaj gösterilir. Form servisi
     bağlandığında bu blok kaldırılabilir.
     ------------------------------------------------------------------ */
  function initContactForm() {
    var form = document.getElementById("contactForm");
    if (!form) return;

    var status = document.getElementById("formStatus");

    form.addEventListener("submit", function (event) {
      // Tarayıcının yerleşik doğrulaması geçersiz alanları zaten yakalar.
      if (!form.checkValidity()) return;

      event.preventDefault();

      if (status) {
        status.hidden = false;
        status.textContent =
          "Teşekkür ederiz. Form altyapısı yayına alma sırasında bağlanacaktır; " +
          "acil durumlarda lütfen telefon veya e-posta ile ulaşın.";
        status.focus();
      }
    });
  }

  /* ------------------------------------------------------------------
     BAŞLAT
     ------------------------------------------------------------------ */
  function init() {
    initNavToggle();
    initHeaderScroll();
    initReveal();
    initActiveNav();
    initYear();
    initContactForm();
  }

  if (document.readyState === "loading") {
    document.addEventListener("DOMContentLoaded", init);
  } else {
    init();
  }
})();
