/**************************
 * Toggle Feature Buttons
 **************************/
function togglePen() {
  console.log("peacekim:: share-bind-button-action - togglepend()");
  $("#coviewPenCtrBtn").click();
  if ($("#penBtn .pen").hasClass("disable")) {
    $("#penBtn .pen").removeClass("disable");
  } else {
    $("#penBtn .pen").addClass("disable");
  }
}

function penOff() {
  console.log("peacekim:: share-bind-button-action - penOff()");
  if (!$("#penBtn .pen").hasClass("disable")) {
    $("#coviewPenCtrBtn").click();
    $("#penBtn .pen").addClass("disable");
  }
}

function togglePhotoOpenPlaceHolder() {
  console.log(
    "peacekim:: share-bind-button-action - togglePhotoOpenPlaceHolder()"
  );
  $("#open_file_upload").trigger("click");
}

function toggleEraser() {
  console.log("peacekim:: share-bind-button-action - toggleEraser()");
  $("#coviewEraserCtrBtn").click();
}

function toggleCapture() {
  console.log("peacekim:: share-bind-button-action - toggleCapture()");
  if ($("#recordBtn").hasClass("bg_red")) {
    screenLock();
    recordStop(function () {
      $("#screenLock").remove();
      coview_api.Capture(serverInfo.cmsURL + "/chatapi/file/uploadArchive");
    });
  } else {
    coview_api.Capture(serverInfo.cmsURL + "/chatapi/file/uploadArchive");
  }
}

function toggleCaptureRequest() {
  console.log("peacekim:: share-bind-button-action - toggleCaptureRequest()");
  FermiWebSocketBridge.captureRequest();
}

function micOn() {
  console.log("peacekim:: share-bind-button-action - micOn()");
  coview_api.MicMuteControl("off");
  $("#micBtn .voice").removeClass("disable");
}

function micOff() {
  console.log("peacekim:: share-bind-button-action - micOff()");
  coview_api.MicMuteControl("on");
  $("#micBtn .voice").addClass("disable");
}

function toggleMic() {
  console.log("peacekim:: share-bind-button-action - toggleMic()");
  if ($("#micBtn .voice").hasClass("disable")) {
    micOn();
  } else {
    micOff();
  }
}

/*************
 * レコード関連
 *************/
function recordStart() {
  console.log("peacekim:: share-bind-button-action - recordStart()");
  MainManRecord("on");
  $("#recordBtn .record").addClass("disable");
  $(".flash-txt").addClass("on");
}

function recordFinished() {
  console.log("peacekim:: share-bind-button-action - recordFinished()");
  $("#recordBtn .record").removeClass("disable");
  $(".flash-txt").removeClass("on");
  // ロック画面の削除
  deleteDOMObject("screenLock");
}

function toggleRecord() {
  console.log("peacekim:: share-bind-button-action - toggleRecord()");
  if (!$("#recordBtn .record").hasClass("disable")) {
    recordStart();
  } else {
    recordStop(function () {
      console.info("Did record stop");
    });
  }
}

function recordStop(callback) {
  console.log("peacekim:: share-bind-button-action - recordStop()");
  if (!$("#recordBtn .record").hasClass("disable")) {
    callback();
    return;
  }
  Common.showLoadingIndicator();
  // アーカイブ保存中は画面操作不可(協業終了,協業切り替え防止)
  screenLock();

  // アーカイブ保存処理
  mainManRecordWithCollaboration(
    "stop",
    serverInfo.cmsURL + "/chatapi/file/uploadArchive",
    callback
  );
}

function mainManRecordWithCollaboration(action, url, callback) {
  console.log(
    "peacekim:: share-bind-button-action - mainManRecordWithCollaboration()"
  );
  try {
    mediaRecorder.stop();
  } catch (exeption) {
    console.error("Record failed");
    callback();
  }

  setTimeout(function () {
    const blob = new Blob(recordedBlobs, { type: "video/webm" });
    const uploadFileName = "record_" + g_webroom + "_" + g_shareCount + ".webm";
    g_shareCount++;
    let formData = new FormData();
    formData.append("fileData", blob, uploadFileName);
    formData.append("sid", globalUserInfo.sid);
    formData.append("roomId", globalUserInfo.roomId);
    let collaborationType =
      globalUserInfo.collaborationType == COLLABORATION_TYPE.VIDEO
        ? ARCHIVE_TYPE.VIDEO
        : ARCHIVE_TYPE.VOICE;
    formData.append("archiveType", collaborationType);

    postRecords(url, formData, callback);
  }, 1000);
}

function postRecords(url, formData, callback) {
  $.ajax({
    type: "post",
    url: url,
    data: formData,
    contentType: false,
    processData: false,
    success: function (res) {
      recordFinished();
      Common.dismissLoadingIndicator();
      callback();
    },
    error: function (err) {
      recordFinished();
      Common.dismissLoadingIndicator();
      callback();
    },
  });
}

// div削除関数
function deleteDOMObject(idName) {
  const domObj = document.getElementById(idName);
  const domObjParent = domObj.parentNode;
  domObjParent.removeChild(domObj);
}