document.addEventListener('DOMContentLoaded',()=>{
  const mainSlider = document.querySelector('.main-slider-swiper');
  if(mainSlider){
    var mainSliderSwiper = new Swiper(mainSlider, {
       spaceBetween: 10,
       effect: "fade",
       autoplay: {
        delay: 3000,
        },
        speed: 1000,
        navigation: {
          nextEl: '.swiper-button-next',
          prevEl: '.swiper-button-prev',
        },
    });
  }
  const timeline = document.querySelector(".timeline");
if(timeline){
        gsap.registerPlugin(ScrollTrigger);
        var items = [
            { side: "right", logo: "./assets/images/post2.png", name: "همراه نسل", icon: "./assets/images/image-scale.png", title: "طراحی اولیه", desc: "لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ توازن شبکه ارزش الگوریتم بازآفرینی هوش. فرهنگ چاپگرها ستون خاک واقعیت مشاوره چاپ آزادی یکپارچگی متن نوآوری؛ محیط گرافیک پرسش هویت جهانی زیستی زمان ذهن شناخت چاپگرها؛ قانون ارتباط مشاوره اخلاق تولید انتشار هماهنگی." },
            { side: "left",  logo: "./assets/images/post1.jpg", name: "Porters",     icon: "./assets/images/image-scale.png", title: "طراحی رابط کاربری", desc: "لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ توازن شبکه ارزش الگوریتم بازآفرینی هوش. فرهنگ چاپگرها ستون خاک واقعیت مشاوره چاپ آزادی یکپارچگی متن نوآوری؛ محیط گرافیک پرسش هویت جهانی زیستی زمان ذهن شناخت چاپگرها؛ قانون ارتباط مشاوره اخلاق تولید انتشار هماهنگی. سازمان جامعه اقتدارزدایی پژوهش سلامت آنلاین خاک پردازش احترام نامفهوم استاندارد؛ همگرایی الگوریتم خلاقیت طراحان ارتباطات توسعه مستمر سازمان کاربری شبکه؛" },
            { side: "right", logo: "./assets/images/post3.jpg", name: "GSM",         icon: "./assets/images/image-scale.png", title: "معماری فرانت‌اند", desc: "انتخاب استک فنی و ساختار پروژه." },
            { side: "left",  logo: "./assets/images/post2.png", name: "GSMPay",      icon: "./assets/images/image-scale.png", title: "توسعه فرانت‌اند", desc: "پیاده‌سازی صفحات و کامپوننت‌ها." },
            { side: "right", logo: "./assets/images/post3.jpg", name: "برند پنج",    icon: "./assets/images/image-scale.png", title: "توسعه بک‌اند", desc: "پیاده‌سازی API و منطق سرور." },
            { side: "left",  logo: "./assets/images/post2.png", name: "برند شش",     icon: "./assets/images/image-scale.png", title: "اتصال سرویس‌ها", desc: "یکپارچه‌سازی با درگاه‌ها و سرویس‌های جانبی." },
            { side: "right", logo: "./assets/images/post1.jpg", name: "برند هفت",    icon: "./assets/images/image-scale.png", title: "تست عملکرد", desc: "بررسی سرعت، امنیت و باگ‌ها." },
            { side: "left",  logo: "./assets/images/post3.jpg", name: "برند هشت",    icon: "./assets/images/image-scale.png", title: "بهینه‌سازی", desc: "بهبود سرعت لود و تجربه کاربری." },
            { side: "right", logo: "./assets/images/post1.jpg", name: "برند نه",     icon: "./assets/images/image-scale.png", title: "استقرار", desc: "انتشار روی سرور اصلی." },
            { side: "left",  logo: "./assets/images/post2.png", name: "برند ده",    icon: "./assets/images/image-scale.png", title: "پشتیبانی", desc: "رفع مشکلات پس از انتشار و بروزرسانی." }
        ];

        var STEP_VH = 30; 

        var section = document.getElementById("pinned-section");
        var sideLeft = document.getElementById("psSideLeft");
        var sideRight = document.getElementById("psSideRight");
        var iconCol = document.getElementById("psIconCol");
        var dotsWrap = document.getElementById("psDots");

        section.style.height = (items.length * STEP_VH) + "vh";

        var itemEls = items.map(function (it, i) {
            var el = document.createElement("div");
            el.className = "ps-item side-" + it.side;
            el.innerHTML =
            `<div class="ps-logo">
<svg width="37" height="40" viewBox="0 0 37 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M25.3965 16.0986C25.4061 23.1781 25.4013 30.2575 25.3965 37.3369C23.6958 38.1692 22.0242 39.0589 20.3857 40C20.4193 32.8778 20.2512 25.7319 20.4668 18.6191C22.0477 17.6639 23.7725 16.9782 25.3965 16.0986ZM9.41895 28.5127C11.0574 29.3261 12.6765 30.1823 14.3389 30.9531C14.4251 33.0432 14.3731 35.1286 14.373 37.2188C12.725 36.3344 11.0762 35.4645 9.39941 34.6416C9.36109 32.5986 9.3423 30.5557 9.41895 28.5127ZM25.8896 4.72949C29.3774 6.51711 32.8465 8.34684 36.3438 10.125C36.3773 17.3133 36.3583 24.4972 36.3535 31.6855C34.6577 32.48 32.9953 33.3317 31.333 34.1924C31.3138 27.056 31.3566 19.9195 31.3135 12.7783C29.5074 11.9507 27.7586 11.0054 25.9717 10.1494C22.0623 12.0175 18.272 14.1125 14.3818 16.0137C14.2669 19.2341 14.3636 22.4545 14.3779 25.6797C12.7155 24.8095 11.067 23.897 9.36621 23.1025C9.32788 19.8299 9.37622 16.5519 9.33789 13.2793C14.8184 10.371 20.3277 7.49122 25.8896 4.72949ZM16.543 0C18.3923 0.917477 20.1941 1.91564 22.0674 2.77637C16.3614 5.57609 10.7029 8.49862 5.08789 11.4639C4.83398 18.4442 5.09298 25.4576 5.00195 32.4521C3.33471 31.5725 1.6385 30.759 0 29.832C0.0239539 22.7145 0.00967371 15.5919 0.00488281 8.46973C5.48081 5.58021 10.9856 2.72873 16.543 0Z" fill="white" style="fill:white;fill-opacity:1;"/>
</svg>
</div>` +
            '<div class="ps-title">' + it.title + '</div>' +
            '<div class="ps-desc">' + it.desc + '</div>';
            (it.side === "right" ? sideRight : sideLeft).appendChild(el);

            var icon = document.createElement("div");
            icon.className = "ps-icon";
            icon.innerHTML = '<img src="' + it.icon + '" alt="">';
            iconCol.appendChild(icon);


            return { content: el, icon: icon };
        });

        gsap.set(itemEls[0].content, { opacity: 1 });
        gsap.set(itemEls[0].icon, { opacity: 1, scale: 1, rotate: 0 });

        // ===== ناوبری پله‌ای: هر اسکرول (چرخ موس / لمس) دقیقاً یک آیتم رو عوض می‌کنه =====
        var currentIndex = 0;
        var isAnimating = false;
        var STEP_DURATION = 0.45; 
        var COOLDOWN_MS = STEP_DURATION * 1000 + 150; 

        function goToStep(newIndex) {
            if (isAnimating || newIndex === currentIndex || newIndex < 0 || newIndex > items.length - 1) return;
            isAnimating = true;
            var prev = itemEls[currentIndex];
            var next = itemEls[newIndex];
            gsap.timeline({
                onComplete: function () { isAnimating = false; }
            })
            .to(prev.content, { opacity: 0, duration: STEP_DURATION }, 0)
            .to(prev.icon, { opacity: 0, scale: 0.5, rotate: 30, duration: STEP_DURATION }, 0)
            .to(next.content, { opacity: 1, duration: STEP_DURATION }, 0)
            .to(next.icon, { opacity: 1, scale: 1, rotate: 0, duration: STEP_DURATION }, 0);
            currentIndex = newIndex;
        }

        var lastStepTime = 0;

        function isSectionFillingViewport() {
            var rect = section.getBoundingClientRect();
          
            return rect.top <= 1 && rect.bottom >= window.innerHeight - 1;
        }

        function jumpToSectionEdge(edge) {
          
            var rect = section.getBoundingClientRect();
            var top = rect.top + window.scrollY;
            var bottom = rect.bottom + window.scrollY;
            var target = edge === "bottom" ? (bottom - window.innerHeight) : top;
            window.scrollTo({ top: target, behavior: "auto" });
        }

        function handleStepGesture(deltaY) {
            if (!isSectionFillingViewport()) return true; // 

            var goingDown = deltaY > 0;
            var atLast = currentIndex === items.length - 1;
            var atFirst = currentIndex === 0;

            // اگه به آخرین/اولین آیتم رسیدیم و کاربر می‌خواد همون جهت ادامه بده، اسکرول عادی رو آزاد کن
            if (goingDown && atLast) {
                jumpToSectionEdge("bottom");
                return true;
            }
            if (!goingDown && atFirst) {
                jumpToSectionEdge("top");
                return true;
            }

            var now = Date.now();
            if (now - lastStepTime < COOLDOWN_MS) return false; // جلوی اسکرول‌های خیلی سریع پشت سر هم رو می‌گیره
            lastStepTime = now;

            goToStep(currentIndex + (goingDown ? 1 : -1));
            return false; // اسکرول عادی صفحه رو متوقف کن
        }

        window.addEventListener('wheel', function (e) {
            if (!handleStepGesture(e.deltaY)) e.preventDefault();
        }, { passive: false });

        // پشتیبانی از لمس (موبایل/تاچ‌پد)
        var touchStartY = null;
        window.addEventListener('touchstart', function (e) {
            touchStartY = e.touches[0].clientY;
        }, { passive: true });
        window.addEventListener('touchmove', function (e) {
            if (touchStartY === null) return;
            var delta = touchStartY - e.touches[0].clientY;
            if (Math.abs(delta) < 12) return; 
            if (!handleStepGesture(delta)) {
                e.preventDefault();
            }
            touchStartY = e.touches[0].clientY;
        }, { passive: false });

      gsap.to(".timeline-top", {
        top: "200px",
        duration: 0.5,
        ease: "power2.out",
        scrollTrigger: {
          trigger: ".timeline",
          start: "top 10%",
          end: "bottom 20%",
          toggleActions: "play reverse play reverse"
        }
      });
        // ===== پایان ناوبری پله‌ای =====
  }
const starSection = document.querySelector('.star');
if(starSection){
const star = document.querySelector('.star-wrapper');

gsap.registerPlugin(ScrollTrigger);
const starItems = document.querySelectorAll(".star-item");

gsap.to(starItems, {
    scrollTrigger: {
        trigger: star,
        start: "top 60%",
        end: "bottom 5%",
        toggleActions: "play reverse play reverse",
    },
    y: 0,
    x: 0,
    scale: 1,
    rotation: 0,
    duration: 1.2,
    ease: "power3.out",
    stagger: 0.08
});
}

const projectsSlider = document.querySelector(".projects-swiper")
if(projectsSlider){
     var projectsSliderSwiper = new Swiper(projectsSlider, {
        slidesPerView: 1.5,
        spaceBetween: 20,
        breakpoints: {
          640: {
            slidesPerView: 2,
            spaceBetween: 20,
          },
          768: {
            slidesPerView: 3.5,
            spaceBetween: 40,
          },
          1024: {
            slidesPerView: 4,
            spaceBetween: 50,
          },
        },
      });
}

const postsSlider = document.querySelector(".posts-swiper")
if(postsSlider){
     var postsSliderSwiper = new Swiper(postsSlider, {
        slidesPerView: 1.5,
        spaceBetween: 20,
        breakpoints: {
          640: {
            slidesPerView: 2,
            spaceBetween: 20,
          },
          768: {
            slidesPerView: 2.6,
            spaceBetween: 40,
          },
          1024: {
            slidesPerView: 3,
            spaceBetween: 50,
          },
        },
      });
}
})

window.addEventListener('load', function () {
  if (window.ScrollTrigger) {
    ScrollTrigger.refresh();
  }


const menu = document.querySelector(".sticky-menu");
const button = document.querySelector(".main-btn");

button.addEventListener("click", () => {
    menu.classList.toggle("active");
});


let gsmtecNetworkSlider = document.querySelector(".gsmtec-network-swiper");
if(gsmtecNetworkSlider){
  var gsmtecNetworkSliderSwiper = new Swiper(gsmtecNetworkSlider, {
    slidesPerView: 2,
    spaceBetween: 10,
    breakpoints: {
          640: {
            slidesPerView: 2,
            spaceBetween: 20,
          },
          768: {
            slidesPerView: 3,
            spaceBetween: 10,
          },
          1024: {
            slidesPerView: 4,
            spaceBetween: 10,
          },
          1300: {
            slidesPerView: 6,
            spaceBetween: 10,
          },
        },
  });
}

});

