// enterキーをtabキーに変換
$(document).on(
  'keydown'
  , 'input:enabled, select'
  , function (ev) {
    if ($("body").hasClass("loading")) {
      return false;
    }

    var $me = $(this);
    var $list = $('input:enabled:not([readonly]):visible:not([tabindex=-1]), select:enabled:visible:not([tabindex=-1])').not(".noevent *:not(.close,.noEventException)").not(".wd-func").not(".a-Toolbar-input");
    if ($me.prop("tabindex") > 0) {
      $list = $tabIndexList = $("[tabindex]:not([tabindex='0']):not([tabindex='-1']):enabled:not([readonly])");

      function compare(a, b) {
        let comparison = 0;

        if (a.tabIndex > b.tabIndex) {
          comparison = 1;
        } else if (b.tabIndex > a.tabIndex) {
          comparison = -1;
        }

        return comparison;
      }

      $list.sort(compare);
    }

    if (ev.keyCode == 13 || ev.keyCode == 9) {
      if ($me.data("isStopChange")) {
        return false;
      }
      var isInNoevent = false;
      if ($me.closest(".noevent").length > 0) {
        isInNoevent = true;
      }

      for (var i = 0; i < $list.length; i++) {
        var obj = $list[i];
        if ($(obj).is($me) || isInNoevent) {
          var next = 1;

          if (ev.shiftKey) {
            next = -1;
          }
          if ($me.hasClass("customFocus")) {
            ev.preventDefault();
            $me.blur();
            return true;
          }
          if (i + next < $list.length) {
            $list.eq(i + next).focus();
          } else {
            $($list[0]).focus();
          }
          ev.preventDefault();
          //$me.change();
          return true;
        }
      }

    }
    if (ev.keyCode == 32) {
      if ($me.prop("tagName") == "INPUT" && $me.attr("type") == "button") {
        $(this).trigger('click')
        return false;
      }
    }
    if (ev.keyCode == 8) {
      common.clearError($(this));
    }

  });

$(function () {
  //------------------------
  // ファンクションキー制御
  //------------------------
  $(document).keydown(function (ev) {

    var popup = $("#popup div.contents");
    var main = $("#main");

    // ファンクションキーを制御する
    //F1
    if (ev.keyCode == 112) {
      var $focused = $(':focus');
      $focused.trigger("blur");
      ev.preventDefault();
      chkDisplay("Func1", main, popup);
    }

    //F2
    if (ev.keyCode == 113) {
      var $focused = $(':focus');
      $focused.trigger("blur");
      ev.preventDefault();
      chkDisplay("Func2", main, popup);
    }

    //F3
    if (ev.keyCode == 114) {
      var $focused = $(':focus');
      $focused.trigger("blur");
      ev.preventDefault();
      chkDisplay("Func3", main, popup);
    }

    //F4
    if (ev.keyCode == 115) {
      var $focused = $(':focus');
      $focused.trigger("blur");
      ev.preventDefault();
      chkDisplay("Func4", main, popup);
    }

    //F5
    if (ev.keyCode == 116) {
      var $focused = $(':focus');
      $focused.trigger("blur");
      ev.preventDefault();
      chkDisplay("Func5", main, popup);
    }

    //F6
    if (ev.keyCode == 117) {
      var $focused = $(':focus');
      $focused.trigger("blur");
      ev.preventDefault();
      chkDisplay("Func6", main, popup);
    }

    //F7
    if (ev.keyCode == 118) {
      var $focused = $(':focus');
      $focused.trigger("blur");
      ev.preventDefault();
      chkDisplay("Func7", main, popup);
    }

    //F8
    if (ev.keyCode == 119) {
      var $focused = $(':focus');
      $focused.trigger("blur");
      ev.preventDefault();
      chkDisplay("Func8", main, popup);
    }

    //F9
    if (ev.keyCode == 120) {
      var $focused = $(':focus');
      $focused.trigger("blur");
      ev.preventDefault();
      chkDisplay("Func9", main, popup);
    }

    //F10
    if (ev.keyCode == 121) {
      var $focused = $(':focus');
      $focused.trigger("blur");
      ev.preventDefault();
      chkDisplay("Func10", main, popup);
    }

    //F11
    if (ev.keyCode == 122) {
      var $focused = $(':focus');
      $focused.trigger("blur");
      ev.preventDefault();
      chkDisplay("Func11", main, popup);
    }

    //F12
    if (ev.keyCode == 123) {
      var $focused = $(':focus');
      $focused.trigger("blur");
      ev.preventDefault();
      chkDisplay("Func12", main, popup);
    }
  });
});

//表示されている画面からFunction対象を選択
function chkDisplay(func, main, popup) {

  if (main.css('display') == 'block') {// メインが表示されている
    if(!$("#funcMenu").hasClass("noevent")) {
      $('.' + func).trigger('click');
    } else {
      if($("#af895x").css("display")=='block') {
        $("#af895x").find("." + func).trigger('click');
      }
    }
  } else {// メイン非表示(popup表示)の場合の処理
    popup.each(function (e) {


      //検索画面
      if ($(this).hasClass("afm02x") && $(this).css('display') == 'block') {//jan
        $('.popafm02x' + func).trigger('click');
        return false;
      } else if ($(this).hasClass("afm02x1") && $(this).css('display') == 'block') {//jan後方一致選択
        $('.popafm02x1' + func).trigger('click');
        return false;1
      } else if ($(this).hasClass("afm03x") && $(this).css('display') == 'block') {//cucd
        $('.popafm03x' + func).trigger('click');
        return false;
      } else if ($(this).hasClass("afm03x1") && $(this).css('display') == 'block') {//得意先複数
        $('.popafm03x1' + func).trigger('click');
        return false;
      } else if ($(this).hasClass("afm032x") && $(this).css('display') == 'block') {//cuscd
        $('.popafm032x' + func).trigger('click');
        return false;
      } else if ($(this).hasClass("afm032x1") && $(this).css('display') == 'block') {//取引先
        $('.popafm032x1' + func).trigger('click');
        return false;
      } else if ($(this).hasClass("afm036x") && $(this).css('display') == 'block') {//得意先センター
        $('.popafm036x' + func).trigger('click');
        return false;
      } else if ($(this).hasClass("afm03cx") && $(this).css('display') == 'block') {//オンライン識別子
        $('.popafm03cx' + func).trigger('click');
        return false;
      } else if ($(this).hasClass("afm04x") && $(this).css('display') == 'block') {//mcd
        $('.popafm04x' + func).trigger('click');
        return false;
      } else if ($(this).hasClass("afm05x") && $(this).css('display') == 'block') {//ktktcd
        $('.popafm05x' + func).trigger('click');
        return false;
      } else if ($(this).hasClass("afm08x") && $(this).css('display') == 'block') {//chgcd
        $('.popafm08x' + func).trigger('click');
        return false;
      } else if ($(this).hasClass("afm90x") && $(this).css('display') == 'block') {//雑マスタ
        $('.popafm90x' + func).trigger('click');
        return false;

      } else if ($(this).hasClass("af02m") && $(this).css('display') == 'block') {//商品Excel
        $('.popaf02m' + func).trigger('click');
        return false;
      } else if ($(this).hasClass("af04m") && $(this).css('display') == 'block') {//仕入先Excel
        $('.popaf04m' + func).trigger('click');
      } else if ($(this).hasClass("af03m") && $(this).css('display') == 'block') {//得意先Excel
        $('.popaf03m' + func).trigger('click');
        return false;
      } else if ($(this).hasClass("af032m") && $(this).css('display') == 'block') {//得意先店舗Excel
        $('.popaf032m' + func).trigger('click');
        return false;
      } else if ($(this).hasClass("af036m") && $(this).css('display') == 'block') {//得意先センターExcel
        $('.popaf036m' + func).trigger('click');
        return false;
      } else if ($(this).hasClass("af0311m") && $(this).css('display') == 'block') {//得意先単価商品Excel
        $('.popaf0311m' + func).trigger('click');
        return false;
      } else if ($(this).hasClass("af031m") && $(this).css('display') == 'block') {//得意先商品Excel
        $('.popaf031m' + func).trigger('click');
        return false;
      } else if ($(this).hasClass("af08m") && $(this).css('display') == 'block') {//社員Excel
        $('.popaf08m' + func).trigger('click');
        return false;
      } else if ($(this).hasClass("af993m") && $(this).css('display') == 'block') {//権限Excel
        $('.popaf993m' + func).trigger('click');
        return false;
      } else if ($(this).hasClass("af05m") && $(this).css('display') == 'block') {//倉庫Excel
        $('.popaf05m' + func).trigger('click');
        return false;
      } else if ($(this).hasClass("af90m") && $(this).css('display') == 'block') {//雑Excel
        $('.popaf90m' + func).trigger('click');
        return false;


      //画面固有
      } else if ($(this).hasClass("af203x1") && $(this).css('display') == 'block') {//受注入力複写画面
        $('.popaf203x1' + func).trigger('click');
        return false;
      } else if ($(this).hasClass("af203x2") && $(this).css('display') == 'block') {//受注入力伝票検索
        $('.popaf203x2' + func).trigger('click');
        return false;
      } else if ($(this).hasClass("af212x1") && $(this).css('display') == 'block') {//発注番号検索
        $('.popaf212x1' + func).trigger('click');
        return false;
      } else if ($(this).hasClass("af215x1") && $(this).css('display') == 'block') {//直送発注入力複写画面
        $('.popaf215x1' + func).trigger('click');
        return false;
      } else if ($(this).hasClass("af222x1") && $(this).css('display') == 'block') {//売上伝票検索
        $('.popaf222x1' + func).trigger('click');
        return false;
      } else if ($(this).hasClass("af233x1") && $(this).css('display') == 'block') {//仕入伝票検索
        $('.popaf233x1' + func).trigger('click');
        return false;
      } else if ($(this).hasClass("af241x1") && $(this).css('display') == 'block') {//得意先返品伝票検索
        $('.popaf241x1' + func).trigger('click');
        return false;
      } else if ($(this).hasClass("af244x1") && $(this).css('display') == 'block') {//仕入先返品伝票検索
        $('.popaf244x1' + func).trigger('click');
        return false;
      } else if ($(this).hasClass("af251x1") && $(this).css('display') == 'block') {//転送出庫指示伝票検索
        $('.popaf251x1' + func).trigger('click');
        return false;
      } else if ($(this).hasClass("af254x1") && $(this).css('display') == 'block') {//転送入庫伝票検索
        $('.popaf254x1' + func).trigger('click');
        return false;
      } else if ($(this).hasClass("af265x1") && $(this).css('display') == 'block') {//入金伝票検索
        $('.popaf265x1' + func).trigger('click');
        return false;
      } else if ($(this).hasClass("af271x1") && $(this).css('display') == 'block') {//支払伝票検索
        $('.popaf271x1' + func).trigger('click');
        return false;
      }
    });
  }

  return true;
};
