// source --> https://kamo-kurage.jp/wp/wp-content/themes/kamo/js/navigation.js?ver=1.0.0 
document.addEventListener('DOMContentLoaded', function() {
    const nav = document.getElementById('full-screen-nav');
    const openBtn = document.getElementById('menu-open');
    const closeBtn = document.getElementById('menu-close');
    const langTrigger = document.getElementById('lang-trigger');
    const langList = document.getElementById('lang-list');

    // 閉じるボタンをMENUボタンの位置に合わせる
    function syncCloseBtn() {
        if (!openBtn || !closeBtn) return;
        var rect = openBtn.getBoundingClientRect();
        closeBtn.style.top = rect.top + 'px';
        closeBtn.style.right = (window.innerWidth - rect.right) + 'px';
        closeBtn.style.width = rect.width + 'px';
        closeBtn.style.height = rect.height + 'px';
    }

    // メニュー開閉
    if (nav && openBtn && closeBtn) {
        openBtn.addEventListener('click', () => {
            syncCloseBtn();
            nav.classList.add('is-open');
            document.body.style.overflow = 'hidden';
        });
        closeBtn.addEventListener('click', () => {
            nav.classList.remove('is-open');
            document.body.style.overflow = '';
        });
        window.addEventListener('resize', () => {
            if (nav.classList.contains('is-open')) syncCloseBtn();
        });
    }

    // Languageクリック
    if (langTrigger && langList) {
        langTrigger.addEventListener('click', (e) => {
            e.stopPropagation();
            langList.classList.toggle('is-active');
        });
        document.addEventListener('click', () => langList.classList.remove('is-active'));
    }

    // スマホ用アコーディオン（列1〜3）
    document.querySelectorAll('.nav-col-accordion').forEach(col => {
        const menu = col.querySelector('.nav-col-menu');
        if (!menu) return;
        // 各トップレベルliの直接のaをトリガーにする
        menu.querySelectorAll(':scope > li > a').forEach(link => {
            link.addEventListener('click', function(e) {
                if (window.innerWidth <= 1024) {
                    e.preventDefault();
                    this.classList.toggle('is-accordion-open');
                    menu.classList.toggle('is-expanded');
                }
            });
        });
    });

    // TOPへ戻るボタン
    const backToTop = document.querySelector('.back-to-top');
    if (backToTop) {
        window.addEventListener('scroll', function() {
            if (window.scrollY > 300) {
                backToTop.classList.add('is-visible');
            } else {
                backToTop.classList.remove('is-visible');
            }
        }, { passive: true });
    }
});
// source --> https://kamo-kurage.jp/wp/wp-content/themes/kamo/js/kamo-slider.js?ver=1778831407 
/**
 * Kamo Slider - 共通スライダー
 * data-cols-pc: PC表示時のカラム数 (デフォルト: 4)
 * data-cols-sp: スマホ表示時のカラム数 (デフォルト: 2)
 * data-auto: 自動再生の間隔ms (例: 5000 = 5秒)
 */
(function () {
    'use strict';

    var SP_BREAKPOINT = 767;

    function initSlider(sliderEl) {
        var wrap = sliderEl.querySelector('.kamo-slider-track-wrap');
        var track = sliderEl.querySelector('.kamo-slider-track');
        if (!wrap || !track) return;

        var items = Array.prototype.slice.call(track.querySelectorAll('.kamo-slider-item'));
        if (items.length === 0) return;

        var colsPc = parseInt(sliderEl.getAttribute('data-cols-pc'), 10) || 4;
        var colsSp = parseInt(sliderEl.getAttribute('data-cols-sp'), 10) || 2;
        var autoInterval = parseInt(sliderEl.getAttribute('data-auto'), 10) || 0;
        var prevBtn = sliderEl.querySelector('.kamo-slider-arrow--prev');
        var nextBtn = sliderEl.querySelector('.kamo-slider-arrow--next');

        // ドットコンテナ (スライダーの次の兄弟要素)
        var dotsContainer = sliderEl.nextElementSibling;
        if (!dotsContainer || !dotsContainer.classList.contains('kamo-slider-dots')) {
            dotsContainer = null;
        }

        var currentPage = 0;
        var totalPages = 1;
        var cols = colsPc;
        var gap = 20;
        var itemWidth = 0;
        var autoTimer = null;

        function getCols() {
            return window.innerWidth <= SP_BREAKPOINT ? colsSp : colsPc;
        }

        function getGap() {
            return window.innerWidth <= SP_BREAKPOINT ? 12 : 20;
        }

        function calcLayout() {
            cols = getCols();
            gap = getGap();
            totalPages = Math.ceil(items.length / cols);
            if (currentPage >= totalPages) {
                currentPage = totalPages - 1;
            }

            var wrapWidth = wrap.clientWidth;
            itemWidth = (wrapWidth - gap * (cols - 1)) / cols;

            items.forEach(function (item) {
                item.style.width = itemWidth + 'px';
                item.style.minWidth = itemWidth + 'px';
            });

            track.style.gap = gap + 'px';
        }

        function goToPage(page) {
            if (page < 0) page = totalPages - 1;
            if (page >= totalPages) page = 0;
            currentPage = page;

            var offset = currentPage * cols * (itemWidth + gap);
            track.style.transform = 'translateX(-' + offset + 'px)';

            updateDots();
            updateArrows();
        }

        function updateDots() {
            if (!dotsContainer) return;
            dotsContainer.innerHTML = '';

            for (var i = 0; i < totalPages; i++) {
                var dot = document.createElement('button');
                dot.className = 'kamo-slider-dot' + (i === currentPage ? ' is-active' : '');
                dot.setAttribute('aria-label', 'ページ ' + (i + 1));
                dot.dataset.page = i;
                dot.addEventListener('click', function () {
                    goToPage(parseInt(this.dataset.page, 10));
                    resetAuto();
                });
                dotsContainer.appendChild(dot);
            }

            dotsContainer.style.display = totalPages <= 1 ? 'none' : 'flex';
        }

        function updateArrows() {
            if (prevBtn) prevBtn.style.display = totalPages <= 1 ? 'none' : 'flex';
            if (nextBtn) nextBtn.style.display = totalPages <= 1 ? 'none' : 'flex';
        }

        // --- 自動再生 ---
        function startAuto() {
            if (!autoInterval || totalPages <= 1) return;
            stopAuto();
            autoTimer = setInterval(function () {
                goToPage(currentPage + 1);
            }, autoInterval);
        }

        function stopAuto() {
            if (autoTimer) {
                clearInterval(autoTimer);
                autoTimer = null;
            }
        }

        function resetAuto() {
            stopAuto();
            startAuto();
        }

        // ホバーで一時停止
        sliderEl.addEventListener('mouseenter', stopAuto);
        sliderEl.addEventListener('mouseleave', startAuto);

        // 矢印イベント
        if (prevBtn) {
            prevBtn.addEventListener('click', function () {
                goToPage(currentPage - 1);
                resetAuto();
            });
        }
        if (nextBtn) {
            nextBtn.addEventListener('click', function () {
                goToPage(currentPage + 1);
                resetAuto();
            });
        }

        // タッチスワイプ
        var touchStartX = 0;

        wrap.addEventListener('touchstart', function (e) {
            touchStartX = e.changedTouches[0].screenX;
            stopAuto();
        }, { passive: true });

        wrap.addEventListener('touchend', function (e) {
            var diff = touchStartX - e.changedTouches[0].screenX;
            if (Math.abs(diff) > 50) {
                goToPage(diff > 0 ? currentPage + 1 : currentPage - 1);
            }
            resetAuto();
        }, { passive: true });

        // 初期化
        calcLayout();
        goToPage(0);
        startAuto();

        // リサイズ対応
        var resizeTimer;
        window.addEventListener('resize', function () {
            clearTimeout(resizeTimer);
            resizeTimer = setTimeout(function () {
                calcLayout();
                goToPage(currentPage);
                resetAuto();
            }, 150);
        });
    }

    function ready(fn) {
        if (document.readyState !== 'loading') {
            fn();
        } else {
            document.addEventListener('DOMContentLoaded', fn);
        }
    }

    ready(function () {
        var sliders = document.querySelectorAll('.kamo-slider');
        for (var i = 0; i < sliders.length; i++) {
            initSlider(sliders[i]);
        }
    });
})();