(function ($) {
  $(function () {
    var url = window.location.href, // 現在のURL
      // ABテストパターン
      ptr,
      ptrA = new RegExp('auhome-a'),
      ptrB = new RegExp('auhome-b'),
      // クリック計測要素
      carouselPrev = document.querySelector('.slick-prev'),
      carouselNext = document.querySelector('.slick-next'),
      clickCountParams,
      selectorArgs = new Array();

    // ページ毎のパラメータ分け
    if (ptrA.test(url)) {
      ptr = '_a';
    } else if (ptrB.test(url)) {
      ptr = '_b';
    } else if (/charge/.test(url)) {
      ptr = '_charge';
    } else if (/service/.test(url)) {
      ptr = '_service';
    } else if (/device/.test(url)) {
      ptr = '_device';
    } else if (/app/.test(url)) {
      ptr = '_app';
    } else if (/faq/.test(url)) {
      ptr = '_faq';
    } else {
      ptr = '';
    }

    // クリック計測
    if (ptr === '' || ptr === '_a' || ptr === '_b') {
      clickCountTrigger();
    }
    // 滞在時間計測
    residenceTime();

    // クリックイベント計測
    function clickCountTrigger() {
      selectorArgs.push(carouselPrev, carouselNext);
      selectorArgs.forEach(function (selector) {
        selector.addEventListener(
          'click',
          function () {
            switch (selector) {
              case carouselPrev:
                clickCountParams = 'au_auhome' + ptr + '_click_to_slide_left';
                break;
              case carouselNext:
                clickCountParams = 'au_auhome' + ptr + '_click_to_slide_right';
                break;
              default:
                break;
            }
            console.log(clickCountParams);
            clickCount(clickCountParams);
          },
          false
        );
      });
    }

    // 滞在時間計測
    function residenceTime() {
      var vb = [true, true, true],
        visitTime = 0;
      var visitTimer = setInterval(function () {
        visitTime += 1;
        if (visitTime == 5 && vb[0]) {
          window.clickCount('au_auhome' + ptr + '_view5s');
          console.log('au_auhome' + ptr + '_click_to' + '_view5s');
          vb[0] = false;
        } else if (visitTime == 10 && vb[1]) {
          window.clickCount('au_auhome' + ptr + '_view10s');
          console.log('au_auhome' + ptr + '_click_to' + '_view10s');
          vb[1] = false;
        } else if (visitTime == 30 && vb[2]) {
          window.clickCount('au_auhome' + ptr + '_view30s');
          console.log('au_auhome' + ptr + '_click_to' + '_view30s');
          vb[2] = false;
        }
      }, 1000);
    }

    $(window).on('load', function () {
      // ブロック計測
      if (ptr === '' || ptr === '_a' || ptr === '_b') {
        blockAnalyze();
      }
      // 動画再生計測
      onYouTubeIframeAPIReady();
    });

    // 動画再生計測
    var tag = document.createElement('script');
    tag.src = 'https://www.youtube.com/iframe_api';
    var firstScriptTag = document.getElementsByTagName('script')[0];
    firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

    function onYouTubeIframeAPIReady() {
      ytPlayer1 = new YT.Player('movie1', {
        width: 980,
        height: 320,
        videoId: 'kmQCIUp8Mkk',
        events: {
          onStateChange: onPlayerStateChange1
        },
        playerVars: {
          rel: 0
        }
      });
      ytPlayer2 = new YT.Player('movie2', {
        width: 980,
        height: 320,
        videoId: 'T_VMxzYIICQ',
        events: {
          onStateChange: onPlayerStateChange2
        },
        playerVars: {
          rel: 0
        }
      });
      ytPlayer3 = new YT.Player('movie3', {
        width: 980,
        height: 320,
        videoId: 'TvxHo7DhITI',
        events: {
          onStateChange: onPlayerStateChange3
        },
        playerVars: {
          rel: 0
        }
      });
    }

    function onPlayerStateChange1(event) {
      var ytStatus = event.data;
      if (ytStatus == YT.PlayerState.PLAYING) {
        console.log('au_auhome' + ptr + '_click_to_movie_Primary');
        window.clickCount('au_auhome' + ptr + '_click_to_movie_Primary');
      }
    }

    function onPlayerStateChange2(event) {
      var ytStatus = event.data;
      if (ytStatus == YT.PlayerState.PLAYING) {
        console.log('au_auhome' + ptr + '_click_to_movie_work');
        window.clickCount('au_auhome' + ptr + '_click_to_movie_work');
      }
    }

    function onPlayerStateChange3(event) {
      var ytStatus = event.data;
      if (ytStatus == YT.PlayerState.PLAYING) {
        console.log('au_auhome' + ptr + '_click_to_movie_university');
        window.clickCount('au_auhome' + ptr + '_click_to_movie_university');
      }
    }


    // ブロック計測
    var ids,
      positions,
      analyzeObjectArray,
      analyzeObjectArrayBase,
      intSet = true;


    function blockGet() {
      positions = ids.map(function (selector) {
        return $(selector).get(0).offsetTop;
      });
      analyzeObjectArray = positions.map(function (posY, i) {
        return [
          posY,
          'au_auhome' + ptr + '_' + 'click_to_' + ids[i].slice(1),
          true
        ];
      });
      if (intSet) {
        analyzeObjectArrayBase = positions.map(function (posY, i) {
          return [
            posY,
            'au_auhome' + ptr + '_' + 'click_to_' + ids[i].slice(1),
            true
          ];
        });
        intSet = false;
      }
    }

    function blockAnalyze() {
      if (ptr === '') {
        ids = [
          '#block_iot',
          '#block_rich',
          '#block_life',
          '#block_fin',
        ];
      }
      blockGet();
      $(window).scroll(function () {
        var width = window.innerWidth,
          scrollBottom;

        if (width <= 767) {
          // スマホ向け
          scrollBottom = $(window).scrollTop() + $(window).height() + 100; // headerの高さ分;
        } else {
          // PC向け
          scrollBottom = $(window).scrollTop(); // headerの高さ分;
        }

        analyzeObjectArray.forEach(function (analyzeObj, i) {
          // console.log(analyzeObj);
          if (analyzeObjectArrayBase[i][2] && scrollBottom > analyzeObj[0]) {
            console.log(analyzeObj[1]);
            window.clickCount(analyzeObj[1]);
            analyzeObjectArrayBase[i][2] = false;
          }
        });
      });
    }

    if (ptr === '') {
      $(window).on('scroll', function () {
        var scTop = $(window).scrollTop(),
          winHeight = $(window).height(),
          tgtTop = $('#block_set').offset().top,
          tgtHeight = $('#block_set').height();

        if (winHeight + scTop >= tgtTop + tgtHeight) {
          console.log(blockSetArea());
        }
      });

      var toExecutableOnce = function (f) {
        var called = false,
          result = undefined;
        return function () {
          if (!called) {
            result = f.apply(this, arguments);
            called = true;
          }
          return result;
        };
      };
      var blockSetArea = toExecutableOnce(function () {
        window.clickCount('au_auhome' + ptr + '_' + 'click_to_' + 'block_set');
        console.log('au_auhome' + ptr + '_' + 'click_to_' + 'block_set');
        return '';
      });
    }



  });
})(jQuery);
