ChatRoom.bindSearchUI = function () {
  const chatSearchForm = $(".chat_room_src_form");
  const chatSearchInput = $('.chat_room_src_form input[type="search"]');
  const searchMessage = $("#searchMessage");

  // 検索アイコン押下イベント
  $(".nav_item_wrap .search_menu").click(function () {
    $(".nav_item_wrap").addClass("none");
    $(".footer-wrap").addClass("none");
    chatSearchForm.removeClass("none");
    $(".room_container").addClass("none");
    $(".overlay_src_msg").removeClass("none");
    // フィルタ表示
    $("#filter").removeClass("none");
    $("#user_list").addClass("none");

    chatSearchInput.focus();
    searchMessage.addClass("onfocus");
    $(".chat_list").removeClass("none");
    
    //メッセージ情報をCMS側から最新に更新
    NativeBridgeDelegate.updatePreMessage("");
  });

  $(".chat_room_src_form .cancel").click(function () {
    $(".nav_item_wrap").removeClass("none");
    $(".footer-wrap").removeClass("none");
    chatSearchForm.addClass("none");
    $(".chat_room_src_form input").val("");
    $(".room_container").removeClass("none");
    $(".overlay_src_msg").empty();
    // ユーザーリスト表示
    $("#filter").addClass("none");
    $("#user_list").removeClass("none");

    chatSearchInput.blur();
    searchMessage.removeClass("onfocus");
    $(".chat_list").addClass("none");
    ChatRoom.scrollToBottom();
  });

  chatSearchInput.click(function () {
    if (searchMessage.hasClass("onfocus")) {
      searchMessage.removeClass("onfocus");
      searchMessage.blur();
    } else {
      searchMessage.addClass("onfocus");
      searchMessage.focus();
    }
  });

  searchMessage.blur(function () {
    searchMessage.removeClass("onfocus");
  });

  // チャットルーム
  // メッセージ検索イベント
  chatSearchInput.keyup(function (e) {
    let workVal = "";
    const keyword = chatSearchInput.val();
    const enterKeyPressed = e.key == "Enter" || e.KeyCode == 13;
    if (enterKeyPressed) {
      if (keyword != "" && keyword.length != 0) {
        chatSearchInput.blur();
        return;
      }
    } else if (keyword == "" || keyword.length < 2) {
      $(".overlay_src_msg").empty();
      return;
    }
    ChatRoom.searchMessage(keyword, workVal);

    if (enterKeyPressed) {
      searchMessage.removeClass("onfocus");
      chatSearchInput.blur();
      return;
    }
  });

  // iOSキーボード変換検知用
  chatSearchInput.on("compositionend", function () {
    if (deviceInfo.isiOS()) {
      let workVal = "";
      var keyword = chatSearchInput.val();
      ChatRoom.searchMessage(keyword, workVal);
    }
  });

  ChatRoom.bindUserFilteredMessage();

  // フィルタ選択イベント
  $(document).on("click", "#filter .img_wrap", function (event) {
    // チェックアイコン追加
    $(this).toggleClass("filter");
  });
};

ChatRoom.bindUserFilteredMessage = function () {
  $(document).on("click", ".filter_img", function (event) {
    const keyword = $('.chat_room_src_form input[type="search"]').val();
    $(".overlay_src_msg").empty();
    let checkedUserList = ChatRoom.getCheckedUserList();
    if (keyword.length == 1) {
      return;
    }
    const messages = NativeBridgeDataSource.searchMessages(
      keyword,
      checkedUserList.join(",")
    );
    ChatRoom.appendSearchMessages(messages);
  });
};

// メッセージ検索
ChatRoom.searchMessage = function (keyword, workVal) {
  $(".overlay_src_msg").empty();
  let checkedUserList = ChatRoom.getCheckedUserList();
  const messages = NativeBridgeDataSource.searchMessages(
    keyword,
    checkedUserList.join(",")
  );

  ChatRoom.appendSearchMessages(messages, workVal);

  if (messages.length == 0) {
    const noResultMsg = getNoResultMessage();
    $(".overlay_src_msg").append(noResultMsg);
  }
};

ChatRoom.getCheckedUserList = function () {
  let checkedUserList = [];
  $(".img_wrap.filter").each(function (user) {
    const selectedUser = $(".img_wrap.filter")[user];
    checkedUserList.push($(selectedUser).data("user-id"));
  });
  return checkedUserList;
};