/* 挖藕咨询官网 — 交互脚本 */
(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";
      });
    });
  });

  /* 询盘表单（前端校验 + 双通道提交）
   * A. 平台托管环境（window.__SMART_PAGE__ 存在）→ 写入资料库「询盘登记表」
   * B. 独立站环境（www.wowconsult.cc）→ POST 到 inquiry.php，落地服务器 CSV
   */
  var form = document.getElementById("inquiry-form");
  if (form) {
    var db = window.__SMART_PAGE__ && window.__SMART_PAGE__.database;
    var DATABASE_ID = "dDzHoDBF8GbJgZ2JKrEUqb"; /* 询盘登记表 */
    var LIVE_ENDPOINT = "inquiry.php"; /* 独立站接收端 */
    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);
        });
      }
    }

    if (db) {
      db.getSchema({ databaseId: DATABASE_ID }).then(function (schema) {
        (schema.properties || []).forEach(function (field) {
          if ((field.type === "select" || field.type === "multi_select") && field.config && field.config.options) {
            SCHEMA_OPTIONS[field.name] = field.config.options;
          }
        });
        renderSelectOptions();
        loadDraft();
      }).catch(function (err) {
        console.error("[database] schema 加载失败:", err);
        loadDraft();
      });
    } else {
      /* 独立站：本地渲染预算选项 */
      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", "提交失败，请稍后重试，或直接致电 186-0041-7275。");
      }
      function done() {
        if (submitBtn) { submitBtn.disabled = false; submitBtn.textContent = "提交询盘"; }
      }

      function submitViaSdk() {
        var properties = {
          "公司名称": { text: vals.company },
          "联系人": { text: vals.name },
          "联系电话": { phone_number: vals.tel },
          "预算区间": { select: vals.budget },
          "需求描述": { text: vals.msg }
        };
        db.addRecord({ databaseId: DATABASE_ID, properties: properties })
          .then(onSuccess)
          .catch(function (err) { console.error("[database] 提交失败:", err); onError(); })
          .then(done);
      }

      function submitViaPhp() {
        var fd = new FormData();
        fd.append("company", vals.company);
        fd.append("name", vals.name);
        fd.append("tel", vals.tel);
        fd.append("budget", vals.budget);
        fd.append("msg", vals.msg);
        fd.append("website", ""); /* 蜜罐：正常用户恒为空 */
        fetch(LIVE_ENDPOINT, { method: "POST", body: fd })
          .then(function (res) {
            if (!res.ok) throw new Error("HTTP " + res.status);
            return res.json();
          })
          .then(function (data) {
            if (data && data.ok) onSuccess();
            else onError();
          })
          .catch(function (err) { console.error("[inquiry] 提交失败:", err); onError(); })
          .then(done);
      }

      if (db) submitViaSdk();
      else submitViaPhp();
    });
  }

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