/* 挖藕咨询官网 — 交互脚本 */
(function () {
  "use strict";

  /* 移动端导航 */
  var toggle = document.querySelector(".nav-toggle");
  var nav = document.querySelector(".main-nav");
  if (toggle && nav) {
    toggle.addEventListener("click", function () {
      nav.classList.toggle("open");
      toggle.setAttribute("aria-expanded", nav.classList.contains("open") ? "true" : "false");
    });
    nav.addEventListener("click", function (e) {
      if (e.target.tagName === "A") {
        nav.classList.remove("open");
        toggle.setAttribute("aria-expanded", "false");
      }
    });
    document.addEventListener("click", function (e) {
      if (nav.classList.contains("open") && !nav.contains(e.target) && !toggle.contains(e.target)) {
        nav.classList.remove("open");
        toggle.setAttribute("aria-expanded", "false");
      }
    });
  }

  /* 滚动进场动效 */
  var revealEls = document.querySelectorAll(".reveal");
  function revealNow(el) {
    el.classList.add("in");
  }
  function isInViewport(el) {
    var rect = el.getBoundingClientRect();
    var winH = window.innerHeight || document.documentElement.clientHeight;
    var winW = window.innerWidth || document.documentElement.clientWidth;
    return rect.top < winH && rect.bottom > 0 && rect.left < winW && rect.right > 0;
  }
  if ("IntersectionObserver" in window && revealEls.length) {
    var io = new IntersectionObserver(function (entries) {
      entries.forEach(function (en) {
        if (en.isIntersecting) {
          revealNow(en.target);
          io.unobserve(en.target);
        }
      });
    }, { threshold: 0.12 });
    revealEls.forEach(function (el) {
      /* 已在视口内的元素立即显示，避免首屏空白 */
      if (isInViewport(el)) revealNow(el);
      io.observe(el);
    });
  } else {
    revealEls.forEach(revealNow);
  }

  /* 案例筛选（行业维度） */
  var filterBtns = document.querySelectorAll(".filter-bar button[data-filter]");
  var caseCards = document.querySelectorAll(".case-grid .case-card");
  filterBtns.forEach(function (btn) {
    btn.addEventListener("click", function () {
      filterBtns.forEach(function (b) { b.classList.remove("active"); });
      btn.classList.add("active");
      var key = btn.getAttribute("data-filter");
      caseCards.forEach(function (card) {
        var ind = card.getAttribute("data-industry") || "";
        card.style.display = (key === "all" || ind.indexOf(key) !== -1) ? "" : "none";
      });
    });
  });

  /* 团队筛选（职能维度） */
  var teamBtns = document.querySelectorAll(".filter-bar button[data-tfilter]");
  var teamCards = document.querySelectorAll(".team-grid.all .team-card");
  teamBtns.forEach(function (btn) {
    btn.addEventListener("click", function () {
      teamBtns.forEach(function (b) { b.classList.remove("active"); });
      btn.classList.add("active");
      var key = btn.getAttribute("data-tfilter");
      teamCards.forEach(function (card) {
        card.style.display = (key === "all" || card.getAttribute("data-tcat") === key) ? "" : "none";
      });
    });
  });

  /* 询盘表单（前端校验 + 提交到同域 PHP 接收端）
   * POST 到页面 <meta name="contact-api"> 指定的地址（线上为 /api/contact.php）。
   * 接收端收到后直接把询盘以邮件形式发送到 xie_jiake@qq.com，不写任何后台数据表。
   * 成功判定：后端返回 JSON 且 ok === true，否则一律按失败提示。
   */
  var form = document.getElementById("inquiry-form");
  if (form) {
    var CONTACT_META = document.querySelector('meta[name="contact-api"]');
    var _metaUrl = (CONTACT_META && (CONTACT_META.getAttribute('content') || '').trim());
    // 提交地址解析顺序：① 页面 <meta name="contact-api"> 绝对地址（线上公网用）
    //                   ② 全局 window.WOW_CONTACT_API（部署时注入）
    //                   ③ 同源相对 /api/contact.php（兜底：同域 PHP 邮件接收端，不依赖后台）
    var LIVE_ENDPOINT = _metaUrl || (window.WOW_CONTACT_API && window.WOW_CONTACT_API.trim()) || "/api/contact.php";
    if (window.console) console.log('[inquiry] 提交地址:', LIVE_ENDPOINT);
    var FALLBACK_BUDGET = ["待定", "5万以内", "5-10万", "10-30万", "30-50万", "50万以上"];
    var SCHEMA_OPTIONS = {};
    var box = document.querySelector(".form-ok");
    var draftKey = "wow_inquiry_draft";

    function setBox(kind, msg) {
      if (!box) return;
      box.style.display = "block";
      if (kind === "error") {
        box.style.borderColor = "#E5484D"; box.style.color = "#E5484D"; box.style.background = "#FDECEC";
      } else {
        box.style.borderColor = ""; box.style.color = ""; box.style.background = "";
      }
      box.textContent = msg;
    }

    /* 表单本地缓存（参与提交字段；成功清除、失败保留） */
    function saveDraft() {
      try {
        var draft = {};
        ["company", "name", "tel", "budget", "msg"].forEach(function (n) {
          var el = form.querySelector('[name="' + n + '"]');
          if (el) draft[n] = el.value;
        });
        localStorage.setItem(draftKey, JSON.stringify(draft));
      } catch (err) { /* storage 不可用则静默降级 */ }
    }
    function loadDraft() {
      try {
        var raw = localStorage.getItem(draftKey);
        if (!raw) return;
        var draft = JSON.parse(raw) || {};
        ["company", "name", "tel", "budget", "msg"].forEach(function (n) {
          var el = form.querySelector('[name="' + n + '"]');
          if (el && draft[n] != null && draft[n] !== "") el.value = draft[n];
        });
      } catch (err) { /* 静默降级 */ }
    }
    function clearDraft() {
      try { localStorage.removeItem(draftKey); } catch (err) {}
    }

    /* 预算区间选项动态渲染（托管环境取数据表 schema，独立站用本地兜底） */
    function renderSelectOptions() {
      var budgetSel = form.querySelector('[name="budget"]');
      var opts = SCHEMA_OPTIONS["预算区间"];
      if (budgetSel && opts && opts.length) {
        budgetSel.innerHTML = "";
        opts.forEach(function (opt) {
          var o = document.createElement("option");
          o.value = (typeof opt === "string") ? opt : (opt.id || opt.text);
          o.textContent = (typeof opt === "string") ? opt : opt.text;
          budgetSel.appendChild(o);
        });
      }
    }

    /* 本地渲染预算选项（独立站 / 后台同源均适用） */
    SCHEMA_OPTIONS["预算区间"] = FALLBACK_BUDGET;
    renderSelectOptions();
    loadDraft();

    var draftTimer = null;
    form.addEventListener("input", function () {
      if (draftTimer) clearTimeout(draftTimer);
      draftTimer = setTimeout(saveDraft, 300);
    });
    form.addEventListener("change", function () {
      if (draftTimer) clearTimeout(draftTimer);
      draftTimer = setTimeout(saveDraft, 300);
    });

    form.addEventListener("submit", function (e) {
      e.preventDefault();
      var ok = true;
      var firstBad = null;
      form.querySelectorAll("[required]").forEach(function (f) {
        if (!f.value || !f.value.trim()) {
          ok = false; f.style.borderColor = "#FF9605"; f.setAttribute("aria-invalid", "true");
          if (!firstBad) firstBad = f;
        } else {
          f.style.borderColor = ""; f.removeAttribute("aria-invalid");
        }
      });
      /* 手机号格式校验 */
      var telField = form.querySelector('[name="tel"]');
      if (telField && telField.value.trim()) {
        var telClean = telField.value.replace(/[\s\-]/g, "");
        if (!/^1[3-9]\d{9}$/.test(telClean) && !/^0\d{2,3}\d{7,8}$/.test(telClean)) {
          ok = false; telField.style.borderColor = "#FF9605"; telField.setAttribute("aria-invalid", "true");
          if (!firstBad) firstBad = telField;
        }
      }
      if (!ok) {
        setBox("error", "请完整填写带 * 的必填项，并确保联系电话格式正确。");
        if (firstBad) firstBad.focus();
        return;
      }
      var vals = {
        company: (form.querySelector('[name="company"]') || {}).value || "",
        name: (form.querySelector('[name="name"]') || {}).value || "",
        tel: (form.querySelector('[name="tel"]') || {}).value || "",
        budget: (form.querySelector('[name="budget"]') || {}).value || "",
        msg: (form.querySelector('[name="msg"]') || {}).value || ""
      };
      var submitBtn = form.querySelector('[type="submit"]');
      if (submitBtn) { submitBtn.disabled = true; submitBtn.textContent = "提交中..."; }

      function onSuccess() {
        setBox("", "提交成功！我们将在 1 个工作日内与您联系。");
        form.reset();
        renderSelectOptions();
        clearDraft();
      }
      function onError() {
        setBox("error", "提交失败，请稍后重试，或直接致电 180-3951-3329（微信同号）。");
      }
      function done() {
        if (submitBtn) { submitBtn.disabled = false; submitBtn.textContent = "提交询盘"; }
      }

      function submitToBackend() {
        // 网络超时兜底：12 秒内未响应则中止并提示失败（避免按钮卡在"提交中..."）
        var controller = (window.AbortController) ? new AbortController() : null;
        var timer = setTimeout(function () { if (controller) controller.abort(); }, 12000);
        fetch(LIVE_ENDPOINT, {
          method: "POST",
          headers: { "Content-Type": "application/json" },
          body: JSON.stringify({
            company: vals.company, name: vals.name, tel: vals.tel,
            budget: vals.budget, msg: vals.msg, website: "" /* 蜜罐：正常用户恒为空 */
          }),
          signal: controller ? controller.signal : undefined
        })
          .then(function (res) {
            if (!res.ok) throw new Error("HTTP " + res.status);
            return res.json();
          })
          .then(function (data) {
            // 仅当后端明确返回 ok:true 才算成功；其余（含 200 但无 ok、空响应）一律视为真实失败
            if (data && data.ok === true) onSuccess();
            else onError();
          })
          .catch(function (err) { console.error("[inquiry] 提交失败:", err); onError(); })
          .then(function () { clearTimeout(timer); done(); });
      }

      submitToBackend();
    });
  }

  /* 页脚年份 */
  var yr = document.getElementById("year");
  if (yr) yr.textContent = new Date().getFullYear();
})();
