var breakpointSp;


/**
 * ---------------------------------------------------- 初期
 */
$(function () {
  function init() {
    initLoader();
    initSvg();
    initGnav();
    initModalWindow();
    initAnimateScroll();
    initScrollStates();
    initFormSubmit();
    initEffects();
    initSlider();
    initScrollBar();
    initQA();
    initTextEffects();
    initSideNav();
  }

  function initSideNav() {
    $(window).on('scroll load', function () {
      let sPower = ($(window).scrollTop()) / ($(document).height() - $(window).height()) * 100;
      $('.c-nav-side-gage').height(sPower + 'vh');
    });
  }



  /**
 * -プリローダー
 */
  function initLoader() {
    if ($('html').hasClass('loaded')) {
      onLoaded1();
      return;
    }
    var $loader = $('.c-opening .bg');
    var totalImgs = $('img').length;
    var loadedImgs = 0;
    var loadedImgPer = 0;
    var isLoaded = false;
    var per = 0;
    function onLoaded() {
      loadedImgPer = ++loadedImgs / totalImgs * 100;
    }
    $('img').each(function (index, el) {
      $img = $('<img>').on('load', onLoaded).attr('src', $(el).attr('src'));
    });
    $(window).on('load', function () {
      isLoaded = true;
    });
    function onLoaded1() {
      $('body').addClass('js-onladed');
    }
    function loadingMove(n) {
      //$loader.animate({ width: n + '%' }, 100, function () {
      $loader.animate({ opacity: n + '%' }, 100, function () {
        loadCheck();
      });
    }
    function loadCheck() {
      if (isLoaded) { //読み込み完了
        //$loader.animate({ width: '100%' }, 500, function () {
        $loader.animate({ opacity: '100%' }, 500, function () {
          setTimeout(onLoaded1, 1000);
        });
        //
        $({ count: per }).animate({ count: 100 }, {
          duration: 500,
        });
      } else {
        per += (100 - per) * 0.05;
        per = Math.min(per, loadedImgPer);
        loadingMove(per)
      }
    }
    setTimeout(() => {
      loadCheck();
    }, 1500);
  }


  /**
   * Q&A
   */
  function initQA() {
    $('.c-list-qa>li').each(function (index, elm) {
      $(elm).find('>h3').on('click', function () {
        $(elm).find('>div').slideToggle(300);
        $(elm).toggleClass('open');
      });
    })
  }



  /**
   * Slider
   */
  function initSlider() {
    var interval = 6000;
    var fadeTime = 2200;
    var totalIndex = $('.c-hero__slide>*').length;
    var currentIndex = -1;
    var nextIndex = -1;
    var timer1;
    var isFirst = true;
    var is_changing = false;

    var $next;
    var $current;

    var reservItem;

    function onComplete() {
      $current.css('z-index', $current.index()).removeClass('zoom').find('.c-hero__slideItem').css({ opacity: 1 });
      $next.css('z-index', totalIndex + 1);
      currentIndex = nextIndex;
      is_changing = false;
      if (reservItem) {
        changeSlide(reservItem);
      }
    }

    function changeSlide(i) {
      if (nextIndex == i) return;
      is_changing = true;
      reservItem = null;
      nextIndex = i;
      $next = $('.c-hero__slide>*').eq(nextIndex).show();
      $next.css('z-index', totalIndex).addClass('zoom').show();

      $current = $('.c-hero__slide>*').eq(currentIndex);
      $current.css('z-index', totalIndex + 1).find('.c-hero__slideItem').stop().animate({ opacity: 0 }, fadeTime, 'easeOutQuint', onComplete);
      cahngeNav(nextIndex);
      //
      //
      if (timer1) clearTimeout(timer1);
      timer1 = setTimeout(function () {
        changeSlide(getNext());
      }, interval);
      //
      if (isFirst) {
        $current.hide();
      }
      isFirst = false;

    }


    function cahngeNav(i) {
      $('.slideInfo>*').removeClass('current').eq(i).addClass('current');
      $('.c-hero__nav .slideNav button').removeClass('current').eq(i).addClass('current');
    }
    $('.c-hero__nav .slideNav button').each(function (index, el) {
      $(el).on('click', function () {
        if (is_changing) {
          reservItem = index;
        } else {
          changeSlide(index);
        }
        return false;
      })
    });

    function getNext() {
      var next = currentIndex + 1;
      if (next == totalIndex) {
        next = 0;
      }
      return next;
    }

    /*
    setInterval(function() {
      changeSlide(getNext());
    }, interval);
    */
    changeSlide(0);

  }

  /**
  * TEXT Effect
  */
  function initTextEffects() {
    let targetTxt = '.c-hero__ttl1';
    if ($(targetTxt)[0]) {
      var newHtml = "";
      var target = $(targetTxt).text();
      $(targetTxt)[0].childNodes.forEach((node) => {
        if (node.nodeType == 3) { //テキストの場合
          newHtml = newHtml + node.textContent.split('').reduce((acc, v) => {
            v = v.replace(/ /ig, '&nbsp;');
            return acc + `<span>${v}</span>`
          }, "");
        } else { //テキスト以外
          newHtml = newHtml + node.outerHTML;
        }
      })
      $(targetTxt).html(newHtml);
      $(targetTxt).find('>*').each(function (index, el) {
        setTimeout(function () {
          $(el).addClass('on');
        }, 100 * index + 1200);
      });
    }
  }


  /**
   * Effect
   */
  function initEffects() {
    var $eff1 = $('.js-fade1>*, .js-fade2>*');
    var $eff2 = $('.js-fadeTrigger1');
    $(window).on('scroll load', function () {
      $eff1.each(function (index, el) {
        if ($(window).scrollTop() > $(el).offset().top - ($(window).height() * .8) && !$(el).hasClass('effOn')) {
          setTimeout(function () {
            $(el).addClass('effOn');
          }, Math.random() * 500);
        }
      });
    });
  }



  /**
   * Navigation
   */
  function initGnav() {
    //サブメニュー
    $('.h-gNav .has_children').each(function (index, el) {
      $(el).find('>a').on('mouseenter', function () {
        $(el).addClass('open');
        $(el).find('>ul').stop().slideDown();
      });
      $(el).on('mouseleave', function () {
        $(el).removeClass('open');
        $(el).find('>ul').stop().slideUp();
      });
    });
    //
    $('.h-menuBtn').on('click', function () {
      $('html').toggleClass('js-menuOpen');
    });

    $('.f-nav .has_children').each(function (index, el) {
      $(el).find('>a').on('click', function () {
        if ($(window).width() <= breakpointSp) {
          $(el).toggleClass('open');
          $(el).find('>ul').slideToggle(300);
          return false;
        }
      });
    });

    $('.c-rec-gNav h1').on('click', function () {
      if ($(window).width() <= breakpointSp) {
        $(this).toggleClass('open');
        $(this).parent().find('>ul').slideToggle(300);
        return false;
      }
    });
    window.addEventListener('onPc', function () {
      $('html').removeClass('js-menuOpen');
      $('.f-nav .has_children').removeClass('open').find('>.children').stop().slideDown(0).attr('style', '');
      $('.c-rec-gNav h1').removeClass('open').parent().find('>ul').stop().attr('style', '').attr('style2', '2');
    });
  }

  /**
   * Modal Window
   */
  function initModalWindow() {

    // stop background scroll for ios
    var modalWin = $('.js-modal')[0];
    if (!modalWin || navigator.userAgent.indexOf('iPhone') == -1 || navigator.userAgent.indexOf('iPad') == -1) return;
    $(modalWin).on('touchmove', function (e) {
      var scroll = modalWin.scrollTop;
      var range = modalWin.scrollHeight - modalWin.offsetHeight - 1;
      if (scroll < 1) {
        e.preventDefault();
        modalWin.scrollTop = 1;
      } else if (scroll > range) {
        e.preventDefault();
        modalWin.scrollTop = range;
      }
    });
  }

  /**
   * Auto Scroll
   */
  function initAnimateScroll() {
    var speed = 500;
    var $fixedHeader = $('.h-header');

    function doScroll(target) {
      if (!target[0]) return;
      var headerH = 80;
      if ($fixedHeader[0] && $fixedHeader.css('position') == 'fixed') {
        headerH = $fixedHeader.height();
      }
      $("html, body").animate({ scrollTop: target.offset().top - headerH }, speed);
      var scrollTargetId = target.attr("id");
      setTimeout(function () { location.hash = scrollTargetId; }, speed);
    }

    function addEventOnClickScroll() {
      $('a[href*="#"]').off('click.scrollAnime').on('click.scrollAnime', function () {
        var target = $('#' + $(this).attr("href").split('#')[1]);
        doScroll(target);
      });
    }
    $(window).on('load', function () {
      try { doScroll($(location.hash)); } catch (e) { }
      addEventOnClickScroll();
    });
    addEventOnClickScroll();

  }

  function initScrollStates() {
    var onScrollHeight = 200;
    var onScrollHeight2 = 600;
    var onScrollHeight3 = 800;
    //__スクロール状態フラグ用
    $(window).on('scroll', function () {
      if ($(window).scrollTop() > onScrollHeight) {
        $('html').addClass('is-scroll');
      } else {
        $('html').removeClass('is-scroll');
      }
      if ($(window).scrollTop() > onScrollHeight2) {
        $('html').addClass('is-scroll2');
      } else {
        $('html').removeClass('is-scroll2');
      }
      if ($(window).scrollTop() > onScrollHeight3) {
        $('html').addClass('is-scroll3');
      } else {
        $('html').removeClass('is-scroll3');
      }
      if ($(window).scrollTop() > $('.f-container, .f-container--en, .c-bnr-recruit').offset().top - $(window).height()) {
        $('html').addClass('is-scroll-footer');
      } else {
        $('html').removeClass('is-scroll-footer');
      }
    });

    // スクロールの上下
    var scroll = 0;
    $(window).on('scroll', function () {
      if ($(this).scrollTop() < scroll) {
        $('html').removeClass('is-scrollDown').addClass('is-scrollUp');
      } else {
        $('html').addClass('is-scrollDown').removeClass('is-scrollUp');
      }
      scroll = $(this).scrollTop();
    });
  }

  /**
   * Svg Link to Inline
   */
  function initSvg() {
    $('.is-inlineSvg, .js-inlineSvg').each(function (index, el) {
      var src = $(el).attr('src');
      var myClass = $(el).attr('class');
      var $parent = $(el).parent();
      $(el).remove();
      $.ajax({
        type: 'get',
        url: src
      }).done(function (data) {
        $parent.append($(data).find('svg').attr({ 'class': myClass }));
      });
    });
  }


  /**
   * Check box for Form Submit
   *
   */
  function initFormSubmit() {

    // mw wp form 遷移画面判定用クラス付加
    if ($('.mw_wp_form_input')[0]) $('body').addClass('is-form-input');
    if ($('.mw_wp_form_confirm')[0]) $('body').addClass('is-form-confirm');
    if ($('.mw_wp_form_complete')[0]) $('body').addClass('is-form-complete');

    //
    $checkBox = $('.c-submitCheckBox').find('input');
    if (!$checkBox) return;

    function checkCb() {
      if ($checkBox.prop('checked') == true || $('.js-formConfirm')[0] || $('.mw_wp_form_confirm')[0]) {
        $('html').addClass('js-submitChecked');
      } else {
        $('html').removeClass('js-submitChecked');
      }
    }
    $checkBox.on('change', function () {
      checkCb();
    });
    checkCb();
  }

  /**
   * Make scrollbars
   *
   */
  function initScrollBar() {
    $('.js-scrollBar').each(function (index, el) {
      $(el).css('position', 'relative');
      var $bar = $('<div>').css({
        width: 1000,
        height: 8,
        'border-radius': 4,
        'background-color': '#bbb',
        'position': 'absolute',
        'top': 0,
        'left': 0
      });
      var $bar2 = $bar.clone();
      $bar2.css({
        'top': 'calc(100% - 8px)',
      });
      $(el).append($bar);
      $(el).append($bar2);
      //
      function resetBars() {
        var l = (($(el).width() - $bar.width()) * $(el).find('>*').scrollLeft() / ($(el).find('>*>*').width() - $(el).width()));
        var w = ($(el).width() / $(el).find('>*>*').width()) * $(el).width();
        var d = 'block';
        if ($(el).width() >= $(el).find('>*>*').width()) { d = 'none'; }
        $bar.css({ left: l, width: w, 'display': d });
        $bar2.css({ left: l, width: w, 'display': d });
      }
      $(el).find('>*').on('scroll', resetBars);
      $(window).on('resize load', resetBars);
      resetBars();
    });
    //$(el).width() - $bar.width();

  }
  init();
});




//即時 ======================================================================================================
(function () {

  //IE用カスタムEventDispatcher
  if (document.documentMode) {
    ! function () {
      var prototype = CustomEvent.prototype

      function CustomEvent(type, option) {
        var eve = document.createEvent("Event")
        option = option || {}
        eve.initEvent(type, !!option.bubbles, !!option.cancelable)
        return eve
      }
      CustomEvent.prototype = prototype
      window.CustomEvent = CustomEvent
    }()
  }


  function init() {
    initResponsive();
    initViewport();
    checkUA();
  }

  /**
   * For Responsive
   *
   */
  function initResponsive() {
    //
    // get breakpoint from css
    $('body').append('<div class="js-breakpointSp">');
    breakpointSp = parseInt($('.js-breakpointSp').css('width'));
    $('.js-breakpointSp').remove();
    //
    function check() {
      if ($(window).width() <= breakpointSp) {
        if (!$('html').hasClass('js-sp')) {
          $('html').removeClass('js-pc').removeClass('js-pcComplet').addClass('js-sp');
          window.dispatchEvent(new CustomEvent('onSp'));
          setTimeout(function () { $('html').addClass('js-spComplet'); }, 500);

        }
      } else {
        if (!$('html').hasClass('js-pc')) {
          $('html').removeClass('js-sp').removeClass('js-spComplet').addClass('js-pc');
          window.dispatchEvent(new CustomEvent('onPc'));
          setTimeout(function () { $('html').addClass('js-pcComplet'); }, 500);
        }
      }
    }
    $(window).on('load resize', check);
    check();
  }

  /**
   * set meta viewport
   *
   */
  function initViewport() {
    var viewportWidthTb;
    var viewportWidthSp;
    var viewportWidthPc;
    var windowWidth;

    function getViewportWidth() {
      if (viewportWidthSp) return;
      $('body').append('<div class="js-breakpointSp">');
      $('body').append('<div class="js-viewportWidthTb">');
      $('body').append('<div class="js-viewportWidthSp">');
      $('body').append('<div class="js-viewportWidthPc">');
      breakpointSp = parseInt($('.js-breakpointSp').css('width'));
      viewportWidthTb = parseInt($('.js-viewportWidthTb').css('width'));
      viewportWidthSp = parseInt($('.js-viewportWidthSp').css('width'));
      viewportWidthPc = parseInt($('.js-viewportWidthPc').css('width'));
      $('.js-breakpointSp').remove();
      $('.js-viewportWidthTb').remove();
      $('.js-viewportWidthSp').remove();
      $('.js-viewportWidthPc').remove();
    }

    function check() {
      getViewportWidth();
      var ww = window.outerWidth;
      if (windowWidth == ww || !viewportWidthSp) return;
      windowWidth = ww;
      var viewportContent = 'width=' + viewportWidthPc + ', shrink-to-fit=yes';
      if (windowWidth <= viewportWidthTb) viewportWidthTb = 'width=' + viewportWidthTb + ', shrink-to-fit=yes';
      if (windowWidth <= breakpointSp) viewportContent = 'width=' + viewportWidthSp + ', shrink-to-fit=yes';
      document.querySelector('meta[name="viewport"]').setAttribute('content', viewportContent);
    }

    document.addEventListener('DOMContentLoaded', check);
    window.addEventListener('resize', check);
    window.addEventListener('load', check);
    window.addEventListener('orientationchange', check);
    setInterval(check, 500);
  }

  /**
   * Check User Agent
   *
   */
  function checkUA() {
    var userAgent = window.navigator.userAgent.toLowerCase();
    if (userAgent.indexOf('msie') != -1 ||
      userAgent.indexOf('trident') != -1) {
      $('html').addClass('is-ie');
    } else if (userAgent.indexOf('edge') != -1) {
      $('html').addClass('is-edge');
    } else if (userAgent.indexOf('chrome') != -1) {
      $('html').addClass('is-chrome');
    } else if (userAgent.indexOf('safari') != -1) {
      $('html').addClass('is-safari');
    } else if (userAgent.indexOf('firefox') != -1) {
      $('html').addClass('is-firefox');
    } else if (userAgent.indexOf('opera') != -1) {
      $('html').addClass('is-opera');
    }

    if (userAgent.indexOf("windows nt") !== -1) {
      $('html').addClass('is-win');
    } else if (userAgent.indexOf("android") !== -1) {
      $('html').addClass('is-android');
    } else if (userAgent.indexOf("iphone") !== -1 || userAgent.indexOf("ipad") !== -1) {
      $('html').addClass('is-ios');
    } else if (userAgent.indexOf("mac os x") !== -1) {
      $('html').addClass('is-mac');
    } else { }


    if ("ontouchstart" in window) {
      $('html').addClass('is-touch'); //タッチデバイス
    } else {
      $('html').removeClass('is-touch');
    }
  }


  init();
})();

/**
 * get home url by js.
 */
function home_url(str) {
  if (!str) str = '';
  return $('[data-home_url]').attr('data-home_url') + str;
}