(function () {
  "use strict";

  const panels = document.querySelectorAll('.panel');
  const panelCount = panels.length; // Otomatik olarak 5 olacaktır.

  const well = document.getElementById('well');

  let scrollPos = 0;
  let isScrolling = false;

  const step = 100; // Normal panel kaydırma miktarı (vh)
  const lastPanelExtraStep = 20; // Özel kaydırma miktarı (vh)

  // Hesaplamaları istediğiniz gibi yeniden düzenliyoruz:
  // İlk 4 panelin toplam kaydırma değeri (Panel 1'i saymadan 3 adet 100vh'lik kaydırma)
  // Bu, 4. panelin tamamen ekrana geldiği zamanki scrollPos değeri olacak:
  // Panel 1 (0vh), Panel 2 (100vh), Panel 3 (200vh), Panel 4 (300vh)
  const scrollPosForFourthPanelEnd = (panelCount - 2) * step; // (5 - 2) * 100 = 3 * 100 = 300vh

  // Özel kaydırmanın ekleneceği son noktadan sonraki toplam maksimum kaydırma:
  // 300vh (4. panelin sonu) + 25vh (ekstra) = 325vh
  const maxScroll = scrollPosForFourthPanelEnd + lastPanelExtraStep; // 325vh

  // Başlangıç transform ayarı
  well.style.transform = 'translateY(0vh)';

  function updateScroll(direction) {
    if (isScrolling) return;

    if (direction === 'down') {
      if (scrollPos < maxScroll) { // Toplam maksimum kaydırmaya ulaşılmadıysa
        if (scrollPos < scrollPosForFourthPanelEnd) {
          // Normal adımlarla kaydır (0, 100, 200)
          scrollPos += step;
        } else if (scrollPos === scrollPosForFourthPanelEnd) {
          // Eğer 4. panelin sonundaysak (300vh), ekstra 25vh ekle.
          scrollPos += lastPanelExtraStep;
        }
      }
    } else if (direction === 'up') {
      if (scrollPos > 0) { // En üstte değilsek
        if (scrollPos === maxScroll) {
          // En sondan (325vh) yukarı çıkarken ekstra adımı geri al (300vh'ye dön).
          scrollPos = scrollPosForFourthPanelEnd;
        } else {
          // Diğer paneller arasında normal adımlarla yukarı kaydır.
          scrollPos -= step;
        }
      }
    } else if (direction === 'top') {
      scrollPos = 0;
    }

    well.style.transform = `translateY(-${scrollPos}vh)`;

    // Sticky navbar örneği (Mevcut haliyle bırakılmıştır)
    const nav = document.querySelector('.site-navigation');
    const navMenu = document.querySelector('.site-navigation-menu');
    const langMenu = document.querySelector('.site-navigation-menu-lang-menu');

    if (scrollPos > 1) {
      nav?.classList.add('stickyHeader');
      navMenu?.classList.add('stickySite-navigation-menu');
      langMenu?.classList.add('sticky-site-navigation-menu-lang-menu');
    } else {
      nav?.classList.remove('stickyHeader');
      navMenu?.classList.remove('stickySite-navigation-menu');
      langMenu?.classList.remove('sticky-site-navigation-menu-lang-menu');
    }

    isScrolling = true;
    setTimeout(() => { isScrolling = false; }, 700);

    console.log("Mevcut Kaydırma Pozisyonu (vh):", scrollPos);
  }

  // Mouse wheel event
  well.addEventListener('wheel', e => {
    e.preventDefault();
    const dir = e.deltaY > 0 ? 'down' : 'up';
    updateScroll(dir);
  }, { passive: false });

  // Touch swipe handler
  function handleSwipe(elem) {
    let startX, startY, startTime;

    elem.addEventListener('touchstart', e => {
      const touch = e.changedTouches[0];
      startX = touch.pageX;
      startY = touch.pageY;
      startTime = Date.now();
    }, { passive: true });

    elem.addEventListener('touchmove', e => e.preventDefault(), { passive: false });

    elem.addEventListener('touchend', e => {
      const touch = e.changedTouches[0];
      const deltaX = touch.pageX - startX;
      const deltaY = touch.pageY - startY;
      const elapsed = Date.now() - startTime;

      const threshold = 100;
      const allowedXSlack = 50;
      const allowedTime = 500;

      if (elapsed <= allowedTime && Math.abs(deltaY) >= threshold && Math.abs(deltaX) <= allowedXSlack) {
        const swipeDir = deltaY < 0 ? 'down' : 'up';
        updateScroll(swipeDir);
      }
    }, { passive: true });
  }

  handleSwipe(well);

  // Top butonları için scroll reset
  document.querySelectorAll('.top').forEach(btn => {
    btn.addEventListener('click', () => updateScroll('top'));
  });

})();