//===============================================================
// スライドショー（標準フェード版）
//===============================================================
$(function(){
  $('.mainimg').each(function(){
    var $mainimg = $(this);
    var slides = $mainimg.find('.slide');
    var slideCount = slides.length;
    // 🐞スライドが1枚だけのときも、1枚目を必ず表示してから終了する。
    // このフレームのCSSは .slide{opacity:0} ＋ .slide.active{opacity:1} なので、
    // active を付けずに return すると画像が透明のまま＝メイン画像が消えて見える。
    // 「静止画フレームで自分の画像を1枚だけ入れてから、このフレームに着せ替える」で必ず再現する
    // （画像を1枚でも入れるとフレーム同梱の標準画像3枚のフォールバックが全部オフになるため）。
    // 他のスライド系フレーム（frame9-slide/kagu1/yado7/frame4-slide/lp4）は
    // 早期returnを持たず 1枚でも active を付けるので、この1行だけが例外だった。
    if (slideCount <= 1) { slides.css('opacity', 1).addClass('active'); return; }

    var INTERVAL = 5000;
    var FADE_MS = 1000;
    var currentIndex = 0;
    var autoTimer;
    var isAnimating = false;

    var $indicators = $mainimg.find('.slide-indicators');
    for (var i = 0; i < slideCount; i++) {
      $indicators.append('<span class="dot" data-index="' + i + '"></span>');
    }
    var $dots = $indicators.find('.dot');

    slides.css('opacity', 0).removeClass('active');
    slides.eq(0).css('opacity', 1).addClass('active');
    $dots.eq(0).addClass('active');

    function setActive(nextIndex) {
      if (nextIndex === currentIndex) return;
      isAnimating = true;
      slides.eq(currentIndex).css('opacity', 0).removeClass('active');
      slides.eq(nextIndex).css('opacity', 1).addClass('active');
      $dots.eq(currentIndex).removeClass('active');
      $dots.eq(nextIndex).addClass('active');
      currentIndex = nextIndex;
      setTimeout(function(){ isAnimating = false; }, FADE_MS);
    }

    function next() {
      var n = (currentIndex + 1) % slideCount;
      setActive(n);
      restartTimer();
    }

    function restartTimer() {
      clearTimeout(autoTimer);
      autoTimer = setTimeout(next, INTERVAL);
    }

    $dots.on('click', function() {
      var to = $(this).data('index');
      if (isAnimating) return;
      if (to === currentIndex) { return restartTimer(); }
      setActive(to);
      restartTimer();
    });

    restartTimer();
  });
});
