//
//
// ===== 共通スクリプト =====
//
//

//
// === 初期実行 ===
//

$(function () {
  "use strict";

  //
  // === 共通 ===
  //

  var $window = $(window),
    $body = $("body"),
    $header = $("#page-header");

  //
  // --- メニューをセット ---
  //

  var setMenuList = function ($menu) {
    var $menuList = $menu.children("ul"),
      classGroup = "group",
      classGroupExpanded = "expanded",
      classActive = "active",
      slideSpeed = "fast",
      // location.filepathの場合、file:スキーム時にフルパスとなるためhrefを利用しています
      filename = window.location.href.match(".+/(.+?)([?#;].*)?$")[1];

    // --- グループの開閉 ---
    //$menuList
    //  .children('li')
    //  .has('ul')
    //  .addClass(classGroup);

    $menuList.find("li").each(function () {
      var current = $(this);
      if (current.children("ul").length > 0) {
        current.addClass(classGroup);
      }
    });

    // --- 現在地をセットし、第2階層の場合は開く ---
    $menuList
      .find('a[href="' + filename + '"]')
      .parent("li")
      .addClass(classActive)
      .parents("." + classGroup)
      .addClass(classGroupExpanded)
      .children("ul")
      .show();

    // --- グループの親が現在地の場合も開く ---
    $menuList
      .find(".group.active")
      .addClass(classGroupExpanded)
      .children()
      .show();

    // --- アイコンをクリック ---
    $menuList.find("." + classGroup + " > .icon").click(function (e) {
      var $this = $(this);
      var $parent = $this.parents("li").first();
      var $childList = $parent.children("ul").first();

      if ($parent.hasClass(classGroupExpanded)) {
        $childList.slideUp(slideSpeed, function () {
          checkMenuStatus();
        });
        $parent.removeClass(classGroupExpanded, function () {
          checkMenuStatus();
        });
      } else {
        $childList.slideDown(slideSpeed, function () {
          checkMenuStatus();
        });
        $parent.addClass(classGroupExpanded);
      }
      // 開きありの対応
      if( $('.has-pageindex').length > 0 ){
        $("span.icon.bullet.notchildren").each(function (i, elem) {
          var data = $(elem).parent("li");

          $(data).css({ cssText: "display: none !important;" });
          var targetSpan = $(elem).parent("li").parent("ul").prev().prev();
          $(targetSpan).removeClass("icon");
        });
      }
      return false;
    });

    //開閉状態をチェック
    var checkMenuStatus = function () {
      const classStatusExpanded = "is-expanded";
      const classStatusAllExpanded = "is-allexpanded";
      const $expanded = $(".nav-menu-list").find("." + classGroupExpanded);
      if ($expanded.length > 0) {
        $("body").addClass(classStatusExpanded);
      } else {
        $("body").removeClass(classStatusExpanded);
      }
      if ($(".nav-menu-list").find("ul:hidden").length == 0) {
        $("body").addClass(classStatusAllExpanded);
      } else {
        $("body").removeClass(classStatusAllExpanded);
      }
    };
    checkMenuStatus();

    const $topremoveclass = $("#wiki-content .tab-index-page").find(".mt8");
    if ($topremoveclass.length > 0) {
      $("#wiki-content .tab-index-page table").removeClass("mt8 mb8");
    }
  };

  //
  // --- スクロールバーをセット ---
  //

  var setCustomScrollbar = function ($customScroll) {
    if ($.fn.mCustomScrollbar) {
      var themeName = $customScroll.attr("data-scroll-theme");

      themeName = themeName ? themeName : "light";

      $customScroll.mCustomScrollbar({
        axis: "y",
        theme: themeName,
        autoHideScrollbar: false,
        set_height:
          $(window).height() -
          parseInt($("#page-menu .nav-menu-container").css("margin-top")) -
          $("#page-header").outerHeight() -
          12 +
          "px",
        advanced: {
          //updateOnContentResize: true
        },
      });
    }
    function includeJa(text) {
      try {
        var data = decodeURI(text);
        let gmi = "gmi";
        let regeIncludeHiragana = "^(?=.*[\u3041-\u3096]).*$";
        let regeIncludeKatakana = "^(?=.*[\u30A1-\u30FA]).*$";
        let regeIncludeKanji = "^(?=.*[\u4E00-\u9FFF]).*$";
        let regeHiragana = new RegExp(regeIncludeHiragana, gmi);
        let regeKatakana = new RegExp(regeIncludeKatakana, gmi);
        let regeKanji = new RegExp(regeIncludeKanji, gmi);

        let includeJa = false;
        if (regeHiragana.test(data)) includeJa = true;
        if (regeKatakana.test(data)) includeJa = true;
        if (regeKanji.test(data)) includeJa = true;

        return includeJa;
      } catch (error) {
        alert(error);
      }
    }

    //
    // --- スムーススクロール ---
    //

    if ($.fn.smoothScroll) {
      var scrollOffset = $("#page-header").height() + 20; // 20はヘッダー下部との隙間サイズです

      // --- ページ内 ---
      //console.log("location.hash : " + location.hash);
      //$('#page-content a[href^="#"]').smoothScroll({

      $('#page-content a[href*="#"]').smoothScroll({
        offset: -scrollOffset,
      });

      // --- ページが開いた時 ---

      /*if (location.hash) {
      var locationHash = decodeURI(location.hash);
    function selectorEscape(val){
        return val.replace(/[ !"$%&'()*+,.\/:;<=>?@\[\\\]^`{|}~]/g, '\\$&');
    }
    var href = selectorEscape(locationHash);
       var target = $(href);
       if (target.length) {
            var speed = 0;
            var position = target.position().top ;
            if ($('div.cnt_max').length) {
            $("html, body").animate({scrollTop:position}, speed, "swing");
                return false;
            }
      }
    }*/
    }
  };

  //
  //
  // === ウィンドウイベント ===
  //
  //

  var classScrollDown = "status-scroll-down",
    classScrollUp = "status-scroll-up";

  //
  // --- スクロール位置でクラスを変更（トップから一定量スクロールダウン） ---
  //

  if ($body.hasClass("doc-enable-scroll-down")) {
    var scrollTopThreshold = $header.height();

    $window.scroll(function () {
      var currentPos = $(this).scrollTop();

      if (currentPos > scrollTopThreshold) {
        $body.addClass(classScrollDown);
      } else {
        $body.removeClass(classScrollDown);
      }
    });
  }

    /* 20221011 add メニューが一瞬表示される対応 ここから */
    // 特定のテーマでメニューの開閉機能をセット
    /* 開き用の処理 ここから */
    $("a.a-click-this").on("click", function () {
      // 処理
      var strTarget = $(this).attr("href");
      history.pushState(null, null, null);
      window.location.href = strTarget;
      window.location.reload();
    });

    // スクロール調整 2025.08.12 
    // $(".smoothScroll a").on("click", function () {
    //   //var scrollOffset = $("#page-header").height() + 20; // 20はヘッダー下部との隙間サイズです

    //   var $trigger = $(this);
    //   history.pushState(null, null, null);
    //   var targetId = $trigger.attr("href");
    //   if( targetId.indexOf(".htm") > -1){
    //     return true;
    //   }
    //   targetId = targetId.substring(targetId.indexOf("#"));
    //   var targetBlock = $(targetId);
    //    //var target = $(targetBlock);
    //    //var target = $(this);
    //    if ($(targetBlock).length) {
    //     var speed = 0;
    //     var strHeaderHeight = $("header").outerHeight();
    //     var position = $(targetBlock).offset().top - strHeaderHeight ;
    //     if ($("div.cnt_max").length) {
    //       $("html, body").animate({ scrollTop: position }, speed, "swing");
    //       return false;
    //     }
    //    }
    // });

    /* 開き用の処理 ここまで */
    var $window = $(window),
      $body = $("body"),
      $header = $("#page-header");
    if ($body.hasClass("doc-enable-menu-slide")) {
      // XSサイズであればメニューを閉じる
      if ($window.width() <= 1000) {
        $body.addClass("status-menu-closed");
      }
    }
    // 開きの対応
    if (location.hash.length > 0) {
      var locationHash = decodeURI(location.hash);
      function selectorEscape(val) {
        return val.replace(/[ !"$%&'()*+,.\/:;<=>?@\[\\\]^`{|}~]/g, "\\$&");
      }
      var href = selectorEscape(locationHash);
      var ampersand = "";
      if (href.indexOf("\\&") > -1) {
        ampersand = href.substring(href.indexOf("\\&") + 2, href.length);
      } else if (href.indexOf("&") > -1) {
        ampersand = href.substring(href.indexOf("&") + 1, href.length);
      }
      // ALL-3233 検索結果からのアコーディオンジャンプ対応 s.u 20240919 --->
      if( ampersand.indexOf("\?") > 0 ){
        ampersand = ampersand.substring(0,ampersand.indexOf("\?")-1);
      }
      // ALL-3233 検索結果からのアコーディオンジャンプ対応 s.u 20240919 <---
      if (ampersand != null && ampersand.length > 0) {
        var targetCLM =
          "div#" +
          ampersand +
          " > div.clm > div.accordionSingleLink > div.acd_ttl.accordionTitle a";
        $(targetCLM).trigger("click");
      }

    }
  
    function selectorEscape(val) {
      return val.replace(/[ !"$%&'()*+,.\/:;<=>?@\[\\\]^`{|}~]/g, "\\$&");
    }
    /* 20220726 add 235 No.208 実機でスクロールするとリサイズイベントが発生するので回避 ここから */
    if ($(window).width() <= 769) {
      $("#select-page-tree-search").css("display", "none");
    }
  //
  // --- スクロール位置でクラスを変更（スクロールアップ／ダウン） ---
  //

  if ($body.hasClass("doc-enable-scroll-updown")) {
    var scrollStartPos = 0,
      scrollThreshold = 50,
      isScrollDown = false;

    $window.scroll(function () {
      var currentPos = $(this).scrollTop();

      if (Math.abs(scrollStartPos - currentPos) > scrollThreshold) {
        if (currentPos > scrollStartPos) {
          // 下にスクロール中
          if (!isScrollDown) {
            $body.removeClass(classScrollUp).addClass(classScrollDown);
          }
          isScrollDown = true;
        } else {
          // 上にスクロール中
          if (isScrollDown) {
            $body.removeClass(classScrollDown).addClass(classScrollUp);
          }
          isScrollDown = false;
        }

        scrollStartPos = currentPos;
      }
    });
  }

  //
  // === ピンチイン／アウト対応 ===
  //

  var classPinchOut = "status-pinch-out";

  $body.on("gesturechange", function (event) {
    var orgEvent = event.originalEvent,
      scale = Math.round(orgEvent.scale * 100) / 100;

    if (scale > 1) {
      $body.addClass(classPinchOut);
    } else {
      $body.removeClass(classPinchOut);
    }
  });

  //
  //
  // === ファイルの読み込み ===
  //
  //

  //
  // --- メニューを読み込み ---
  //


    function _resizeTableAtTopPage() {
      const $table = $(".tab-index-page table");
      var num = 0;
      var maxHeight = 0;
      $table.each(function () {
        var tableHeight = $(this).height();
        if (tableHeight > maxHeight) {
          maxHeight = tableHeight;
        }
        num++;
      });
      if ((num = $table.length)) {
        $table.css("height", maxHeight);
      }
    }

    _resizeTableAtTopPage();
    //トップページの画像以外が対象
    //console.log("aaaaa");
    $("main img").each(function (i, elem) {
      var chID = $(elem).attr("id");
      if (chID != "top_page_image") {
        if (
          $(elem).parents("p.smallTableTrigger").length == 0 &&
          $(elem).parent("a").length == 0
        ) {
          var elem_src = $(elem).attr("src");
          //console.log("elem_src : "+ elem_src);
          $(elem).wrap('<a href="' + elem_src + '" rel="lightbox"></a>');
        }
      }
    });

    // 特定のテーマでメニューの開閉機能をセット
    if ($body.hasClass("doc-enable-menu-slide")) {
      // XSサイズであればメニューを閉じる
      if ($window.width() <= 1000) {
        $body.addClass("status-menu-closed");
      }

      setMenuList($(".wiki-toc"));
    }

    // [Stone] の場合メニューを半分にする
    if ($body.hasClass("doc-theme-stone")) {
      var $list = $(".wiki-toc").children("ul").children("li"),
        listCount = $list.length;
      $list
        .eq(Math.ceil(listCount / 2))
        .prevAll()
        .addClass("first-column");
    }

    // カスタムスクロールをセット
    // ALL-2718 20240612 s.u 
    setCustomScrollbar($('.custom-scroll-bar'));

    //画像の高さ指定を幅指定に変換する
    $("div#wiki-content img[height], div.accordion_sct img[height]").each(
      function () {
        var $thisImg = $(this);
        var height_attr = $thisImg.attr("height");

        var img = new Image();
        
        img.onload = function() {
          var img_height = img.height;
          var img_width = img.width;
          
          if (img_height > 0 && img_width > 0) {
            $thisImg.css("width", (height_attr * img_width) / img_height);
            $thisImg.removeAttr("height");
          }
        };
        
        img.src = $thisImg.attr("src");
        
        if (img.complete) {
          img.onload();
        }
      }
    );


    /*const url = $(location).attr('href'),
	// headerの高さを取得してそれに30px追加した値をheaderHeightに代入
	headerHeight = $('header').outerHeight() + 30;

	// urlに「#」が含まれていれば
	if(url.indexOf("#") != -1){
		// urlを#で分割して配列に格納
		const anchor = url.split("#"),
		// 分割した最後の文字列（#◯◯の部分）をtargetに代入
		target = $('#' + anchor[anchor.length - 1]),
		// リンク先の位置からheaderHeightの高さを引いた値をpositionに代入
		position = Math.floor(target.offset().top) - headerHeight;
		// positionの位置に移動
		$("html, body").animate({scrollTop:position}, 500);
	}*/

  /* 164 No.140　本体操作部表示のとき言語プルダウンが出ない トップだけ表示に変更 ここから */
  var pathname = location.pathname;
  if (pathname.indexOf("index_book.htm") >= 0) {
    var html_lang = document.documentElement.lang;
    if (navigator.userAgent.indexOf("ricoh_mfpapnl") >= 0) {
      // console.log(navigator.userAgent.indexOf("ricoh_mfpapnl"));
      $(".btn-change-font").css("display", "none");
      var LANG_LIST_length = Object.keys(LANG_LIST).length;
      if (LANG_LIST_length > 0) {
        var buf = new Array();
        buf.push('<div class="selectLanguage">');
        buf.push('<form name="frmLanguage">');
        buf.push(
          '<select class="languagePulldown" name="opLanguage" id="jump">'
        );

        for (var hash_key in LANG_LIST) {
          if (html_lang.toUpperCase() == hash_key.toUpperCase()) {
            buf.push(
              '<option value="#" selected>' + LANG_LIST[hash_key] + "</option>"
            );
          } else {
            buf.push(
              '<option value="../../../' +
                hash_key +
                '/booklist/int/index_book.htm">' +
                LANG_LIST[hash_key] +
                "</option>"
            );
          }

          //buf.push('<option value="../../../en/booklist/int/index_book.htm">English</option>');
          //buf.push('<option value="../../../de/booklist/int/index_book.htm">Deutsch</option>');
          //buf.push('<option value="../../../fr/booklist/int/index_book.htm">Fran&#231;ais</option>');
        }
        buf.push("</select></form></div>");
        $("div#header-right").prepend(buf.join(""));
        if (document.getElementById("jump") != null) {
          document.getElementById("jump").onchange = function () {
            jump();
          };
        }
        $("div.selectLanguage").css("padding-right", "80px");
      } else {
        $("#page-search form").addClass("no-data");
      }
    }
  }
  /* 164 No.140　本体操作部表示のとき言語プルダウンが出ない トップだけ表示に変更 ここまで */

  //2025.07.08
  if (navigator.userAgent.indexOf("ricoh_mfpapnl") >= 0) {
    document.body.classList.add('ricoh_mfpapnl');
  }

  //20220826　ricoh_mfpapnlの場合は、メニューをスマホに合わせる　修正追加　ここから　田中
  if (navigator.userAgent.indexOf("ricoh_mfpapnl") >= 0) {
    $("#page-menu").addClass("is_mfpapnl");
    $("nav.nav-sequence").addClass(
      "is_nav_mfpapnl"
    ); /* 20221117 アラビア語機種対応 */
    /* 20221205 操作部時はポップアップなし */
    $("#page-menu div#nav-menu-header a.btn-view-switch span.description").css(
      "display",
      "none"
    );
    var platform = navigator.platform;
    /* 20230117 操作部のAndroid 6ベースの対応 */
    if (platform.indexOf("Linux armv7l") >= 0) {
      //console.log("Linux armv7l");
      $("div.to-page-top").css("padding-top", "2px");
    }
  }
  //20220826　ricoh_mfpapnlの場合は、メニューをスマホに合わせる　修正追加　ここまで　田中

  if ($('nav.nav-sequence a[href="index_book.htm"]').length > 0) {
    var indexdata = $('nav.nav-sequence a[href="index_book.htm"]').children();
    $(indexdata).text(CONST_TEXT.breadcrumbTop);
  }
  if ($('nav.nav-sequence a[href="index_book.htm"]').length > 0) {
    var index_book_page = $(
      'nav.nav-sequence a[href="index_book.htm"] span'
    ).text();
    $(
      'footer#page-footer div.bottom-page-link a[href="index_book.htm"] span'
    ).text(index_book_page);
  }
  /* 20230329 アラビア語対応 theme.urbanから移動 ここから s.u */
  var htmlLang = $("html")[0].lang;
  if (htmlLang === "ar" || htmlLang === "he") {// FY24 add s.u 20240909 
    // ALL-3484 20241128 change s.u -->
    $("a").not("div.tab-index-page .index-tab-content table > tbody > tr > td p a").css("text-align", "right");
    // ALL-3484 20241128 change s.u <--
    $("li").css("text-align", "right");
    $("nav.nav-breadcrumb").css("flex-direction", "row-reverse");
    //$("footer#page-footer").css("flex-direction", "row-reverse");
    $(".nav-breadcrumb > ol li").css("float", "right");
    $("h1").parent("div").css("float", "right");
    $("p.index-product-manual").parent("div").css("float", "right");
    $("nav.gen-qr").css("float", "left");
    $('footer#page-footer div.bottom-page-link a[rel="next"]').after(
      $('footer#page-footer div.bottom-page-link a[rel="prev"]')
    );
    $('footer#page-footer div.bottom-page-link a[rel="prev"]').before(
      $("footer#page-footer div.bottom-page-link span.devided")
    );
    $("span.skipHighlight li").css("text-align", "center");

    // ALL-2801 20240711 takeda start
    var tableMacroIcon = $("table tbody tr td a img").closest("td:not(.confluenceTd)");
    var tableMacro = tableMacroIcon.next();
    if (tableMacroIcon.length > 0) {
        for (var i = 0; i < tableMacroIcon.length; i++) {
            var elementIcon = tableMacroIcon[i];
            var element = tableMacro[i];
            //var borderRight = $(elementIcon).css("border-right");//firefoxで、うまく取得できない
            var borderRight = $(elementIcon).attr("style");
            
            if (borderRight && borderRight.toLowerCase().indexOf("border-right: none") !== -1) {
                $(elementIcon).css({
                    "border-right": "",
                    "border-left": "none"
                });
                $(element).css({
                    "border-right": "none",
                })
            }
        }
    }
    // ALL-2801 end
    
    // 20230324 change アラビア語centerの対応 ここから
    //$("p").css("text-align","right");
    var ptagList = $("p");
    for (var i = 0; i < ptagList.length; i++) {
      var ptagcss = $(ptagList[i]).css("text-align");
      if (ptagcss.toLowerCase() == "left") {
        $(ptagList[i]).css("text-align", "right");
      }
    }
    var h5option01List = $("h5.option01");
    for (var i = 0; i < h5option01List.length; i++) {
      var h5option01 = $(h5option01List[i]).css("text-align");
      if (h5option01.toLowerCase() == "left") {
        $(h5option01List[i]).css("text-align", "");
      }
    }
    var h5option04List = $("h5.option04");
    for (var i = 0; i < h5option04List.length; i++) {
      var h5option04 = $(h5option04List[i]).css("text-align");
      if (h5option04.toLowerCase() == "left") {
        $(h5option04List[i]).css("text-align", "");
      }
    }
    var trthList = $("table tbody tr th");
    for (var i = 0; i < trthList.length; i++) {
      var trth = $(trthList[i]).css("text-align");
      if (trth.toLowerCase() == "left") {
        $(trthList[i]).css("text-align", "");
      }
    }
    var trtdList = $("table tbody tr td");
    for (var i = 0; i < trtdList.length; i++) {
      var trtd = $(trtdList[i]).css("text-align");
      if (trtd.toLowerCase() == "left") {
        $(trtdList[i]).css("text-align", "");
      }
    }
    //20230324 add s.u
  }
  /* 20230329 アラビア語対応 theme.urbanから移動 ここまで s.u */

  //
  //
  // === アニメーションの準備完了 ===
  // #ありURLをロードした際にスクロール
  //
  //
  setTimeout(function () {
    if (location.hash) {
      var locationHash = decodeURI(location.hash);
      function selectorEscape(val) {
        return val.replace(/[ !"$%&'()*+,.\/:;<=>?@\[\\\]^`{|}~]/g, "\\$&");
      }

      var href = selectorEscape(locationHash);
      if (href.indexOf("\\&") > -1) {
        href = href.substring(0, href.indexOf("\\&"));
      } else if (href.indexOf("&") > -1) {
        href = href.substring(0, href.indexOf("&"));
      }

      var target = $(href);
      if (target.length) {
        var speed = 300;
        var strHeaderHeight = $("header").outerHeight();
        const marginTop = 20;
        var position = target.offset().top - strHeaderHeight - marginTop;

        //if ($("div.cnt_max").length) {
          $("html, body").animate({ scrollTop: position }, speed, "swing");
          return false;
        //}
      }
    }
  }, 700);
  // --- アニメーションの準備がｋできたらクラスを追加 ---
  setTimeout(function () {
    $body.addClass("animation-ready");
  }, 100);

  /* 164 No.140　本体操作部表示のとき言語プルダウンが出ない トップだけ表示に変更 ここから */
  function jump() {
    var selectNo = document.frmLanguage.opLanguage.selectedIndex;
    var url = document.frmLanguage.opLanguage.options[selectNo].value;
    location.href = url;
  }
  /* 164 No.140　本体操作部表示のとき言語プルダウンが出ない トップだけ表示に変更 ここまで */
  /*  ALL-2839 20240709 s.u  No.463 の対応でクリックするとターゲットに移動してしまう為再度変更 ここから */
  var pathname= location.pathname;
  if( (location.hash == "" ) && pathname.indexOf("index_book.htm") > -1){ 
    $(".nav-tabs-index li").removeClass("active");
    $(".index-tab-content").hide();
    var id = $(".nav-tabs-index a:first").attr("href").replace("#", "");
    $(".index-tab-content[id=" + id + "]").show();
  } 
  /*  ALL-2839 20240709 s.u  No.463 の対応でクリックするとターゲットに移動してしまう為再度変更 ここまで */
});
// --- eof ---
