document.addEventListener('DOMContentLoaded', function () {
  // 获取所有的表单
  const forms = document.querySelectorAll('form');

  forms.forEach(function (form) {
    // 检查是否包含 normal 属性，若有则跳过
    if (form.hasAttribute('normal')) {
      return; // 跳过此表单
    }

    // 移除之前可能绑定的事件监听器，确保不会重复绑定
    form.removeEventListener('submit', handleFormSubmit);

    // 绑定新的事件监听器
    form.addEventListener('submit', handleFormSubmit);
  });

  function handleFormSubmit(event) {
    event.preventDefault(); // 阻止默认提交

    const form = event.target;

    // 添加防止重复提交的标志
    if (form.dataset.isSubmitting === 'true') {
      return; // 如果已经在提交，则直接返回，防止重复提交
    }

    form.dataset.isSubmitting = 'true'; // 标记表单为正在提交

    // 显示加载提示
    rk.tip('Loading...', '<div class="mdui-progress"><div class="mdui-progress-indeterminate"></div></div>', 6000);

    // 获取表单中的提交按钮
    const submitButton = form.querySelector('button[type="submit"]');

    // 给提交按钮设置禁用状态
    if (submitButton) {
      submitButton.disabled = true;
    }

    // 给id为 rk-form-load 的元素添加 rk-a-show class
    const loader = document.getElementById('rk-form-load');
    if (loader) {
      loader.classList.remove('rk-a-hidden');
      loader.classList.add('rk-a-show');
    }

    // 使用 FormData 对象获取表单数据
    const formData = new FormData(form);

    // 使用 fetch 发起请求
    fetch(form.action, {
      method: form.method,
      body: formData,
    })
      .then(response => response.text()) // 获取纯文本响应
      .then(data => {
        // 提交成功时的处理
        rk.tip('Tip', data, 3); // 使用 rk.tip 输出提示

        // 延迟移除加载的 rk-a-show 类并添加 rk-a-hidden 类
        setTimeout(() => {
          if (loader) {
            loader.classList.remove('rk-a-show');
            loader.classList.add('rk-a-hidden');
          }
          // 恢复提交按钮的可点击状态
          if (submitButton) {
            submitButton.disabled = false;
          }
          form.dataset.isSubmitting = 'false'; // 解除提交锁定
        }, 500); // 延迟 0.5 秒
      })
      .catch(error => {
        // 处理错误情况
        rk.tip('错误', '提交出错: ' + error.message, 3); // 使用 rk.tip 输出错误信息

        // 延迟移除加载的 rk-a-show 类并添加 rk-a-hidden 类
        setTimeout(() => {
          if (loader) {
            loader.classList.add('rk-a-hidden');
            loader.classList.remove('rk-a-show');
          }
          // 恢复提交按钮的可点击状态
          if (submitButton) {
            submitButton.disabled = false;
          }
          form.dataset.isSubmitting = 'false'; // 解除提交锁定
        }, 500); // 延迟 0.5 秒
      });
  }
});
