<!doctype html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
    <meta name="color-scheme" content="light dark" />
    <link rel="icon" href="data:," />
    <title>电商工具</title>
    <style>
      :root {
        color-scheme: light dark;
        --bg: #f4f6f5;
        --card: #ffffff;
        --ink: #17211c;
        --ink-2: #5a6a62;
        --line: #dde5e0;
        --accent: #0e7a5f;
        --accent-ink: #ffffff;
        --accent-soft: #e3f2ec;
        --field: #f7faf8;
        --bad: #c93a32;
        --bad-soft: #fbeae8;
        --good: #0e7a5f;
        --shadow: 0 1px 3px rgba(20, 40, 32, .08);
      }
      @media (prefers-color-scheme: dark) {
        :root {
          --bg: #101613;
          --card: #1a211d;
          --ink: #e8efeb;
          --ink-2: #9db0a5;
          --line: #2c3831;
          --accent: #2fae8b;
          --accent-ink: #0c1512;
          --accent-soft: #17362c;
          --field: #141b17;
          --bad: #f0837c;
          --bad-soft: #3a2321;
          --good: #2fae8b;
          --shadow: 0 1px 3px rgba(0, 0, 0, .4);
        }
      }
      * { box-sizing: border-box; }
      html { -webkit-text-size-adjust: 100%; }
      body {
        margin: 0;
        background: var(--bg);
        color: var(--ink);
        font-family: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", system-ui, -apple-system, "Segoe UI", sans-serif;
        font-size: 16px;
        line-height: 1.5;
      }
      main {
        max-width: 560px;
        margin: 0 auto;
        padding: 16px 14px 40px;
      }
      /* 视图切换 */
      .view[hidden] { display: none; }

      /* 导航首页 */
      .nav-head h1 {
        font-size: 22px;
        font-weight: 800;
        margin: 4px 2px 4px;
        letter-spacing: .01em;
      }
      .nav-head p {
        margin: 0 2px 16px;
        font-size: 14px;
        color: var(--ink-2);
      }
      .search {
        margin-bottom: 16px;
      }
      .search .inwrap input { font-size: 16px; font-weight: 400; }
      .tool-list { display: flex; flex-direction: column; gap: 12px; }
      .tool-card {
        display: flex;
        align-items: center;
        gap: 14px;
        width: 100%;
        text-align: left;
        appearance: none;
        font: inherit;
        background: var(--card);
        border: 1px solid var(--line);
        border-radius: 14px;
        box-shadow: var(--shadow);
        padding: 16px;
        cursor: pointer;
        color: var(--ink);
      }
      .tool-icon {
        flex: none;
        width: 46px;
        height: 46px;
        border-radius: 12px;
        background: var(--accent-soft);
        color: var(--accent);
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 23px;
        font-weight: 700;
      }
      .tool-info { flex: 1; min-width: 0; }
      .tool-name { display: block; font-size: 17px; font-weight: 700; }
      .tool-desc { display: block; font-size: 13.5px; color: var(--ink-2); margin-top: 2px; line-height: 1.45; }
      .tool-arrow { flex: none; color: var(--ink-2); font-size: 20px; }
      .no-hit {
        display: none;
        text-align: center;
        color: var(--ink-2);
        font-size: 14px;
        padding: 22px 0 8px;
      }
      .no-hit.show { display: block; }

      /* 工具页顶栏 */
      .tool-top {
        display: flex;
        align-items: center;
        gap: 10px;
        margin-bottom: 14px;
      }
      .back-btn {
        appearance: none;
        border: 1px solid var(--line);
        background: var(--card);
        color: var(--accent);
        font: inherit;
        font-size: 15px;
        font-weight: 600;
        border-radius: 10px;
        padding: 9px 14px;
        min-height: 44px;
        cursor: pointer;
        box-shadow: var(--shadow);
      }
      .tool-top h1 { font-size: 19px; font-weight: 800; margin: 0; }

      .card {
        background: var(--card);
        border: 1px solid var(--line);
        border-radius: 14px;
        box-shadow: var(--shadow);
        padding: 16px;
        margin-bottom: 14px;
      }
      .card h2 {
        font-size: 15px;
        font-weight: 700;
        margin: 0 0 12px;
        letter-spacing: .02em;
      }
      .card h2 .hint {
        font-weight: 400;
        color: var(--ink-2);
        font-size: 13px;
        margin-left: 6px;
      }
      .field { margin-bottom: 12px; }
      .field:last-child { margin-bottom: 0; }
      .field label {
        display: block;
        font-size: 14px;
        color: var(--ink-2);
        margin-bottom: 6px;
      }
      .inwrap {
        display: flex;
        align-items: stretch;
        border: 1.5px solid var(--line);
        border-radius: 10px;
        background: var(--field);
        overflow: hidden;
      }
      .inwrap:focus-within { border-color: var(--accent); }
      .inwrap .unit {
        display: flex;
        align-items: center;
        padding: 0 12px;
        font-size: 15px;
        font-weight: 600;
        color: var(--ink-2);
        background: transparent;
        white-space: nowrap;
      }
      .inwrap input {
        flex: 1;
        min-width: 0;
        border: 0;
        background: transparent;
        color: var(--ink);
        font: inherit;
        font-size: 18px;
        font-weight: 600;
        font-variant-numeric: tabular-nums;
        padding: 13px 12px;
        outline: none;
        min-height: 52px;
      }
      .inwrap input::placeholder { color: var(--ink-2); font-weight: 400; }
      .grid2 {
        display: grid;
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
        gap: 12px;
      }
      .grid2 .field { margin-bottom: 0; min-width: 0; }
      @media (max-width: 380px) {
        .grid2 { grid-template-columns: 1fr; }
      }
      .derived {
        margin-top: 8px;
        font-size: 14px;
        color: var(--ink-2);
      }
      .derived b { color: var(--ink); font-variant-numeric: tabular-nums; }

      /* 结果区 */
      .result-card { border-color: var(--accent); }
      .profit-main {
        display: flex;
        flex-wrap: wrap;
        gap: 8px 28px;
        align-items: baseline;
        padding-bottom: 12px;
        border-bottom: 1px dashed var(--line);
        margin-bottom: 12px;
      }
      .profit-main .lab { font-size: 13px; color: var(--ink-2); display: block; }
      .profit-num {
        font-size: 34px;
        font-weight: 800;
        font-variant-numeric: tabular-nums;
        line-height: 1.15;
      }
      .profit-num.small { font-size: 22px; }
      .neg { color: var(--bad); }
      .stat-row {
        display: grid;
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
        gap: 12px;
        margin-bottom: 12px;
      }
      .stat {
        background: var(--field);
        border: 1px solid var(--line);
        border-radius: 10px;
        padding: 10px 12px;
      }
      .stat .lab { font-size: 13px; color: var(--ink-2); display: block; margin-bottom: 2px; }
      .stat .val { font-size: 21px; font-weight: 700; font-variant-numeric: tabular-nums; }
      .breakdown { margin: 0; padding: 0; list-style: none; font-size: 14.5px; }
      .breakdown li {
        display: flex;
        justify-content: space-between;
        gap: 12px;
        padding: 5px 0;
        border-bottom: 1px solid var(--line);
      }
      .breakdown li:last-child { border-bottom: 0; }
      .breakdown .amt { font-variant-numeric: tabular-nums; white-space: nowrap; }
      .breakdown .minus { color: var(--bad); }
      .warn {
        display: none;
        margin-top: 10px;
        background: var(--bad-soft);
        color: var(--bad);
        border-radius: 10px;
        padding: 10px 12px;
        font-size: 14px;
        font-weight: 600;
      }
      .warn.show { display: block; }

      /* 换算器 */
      .conv-row {
        display: flex;
        align-items: flex-end;
        gap: 8px;
      }
      .conv-row .field { flex: 1; margin-bottom: 0; min-width: 0; }
      select {
        width: 100%;
        font: inherit;
        font-size: 17px;
        font-weight: 600;
        color: var(--ink);
        background: var(--field);
        border: 1.5px solid var(--line);
        border-radius: 10px;
        padding: 13px 10px;
        min-height: 52px;
        outline: none;
      }
      select:focus { border-color: var(--accent); }
      .swap {
        appearance: none;
        border: 1.5px solid var(--line);
        background: var(--card);
        color: var(--accent);
        width: 48px;
        height: 52px;
        border-radius: 10px;
        font-size: 20px;
        cursor: pointer;
        flex: none;
      }
      .conv-result {
        margin-top: 16px;
        background: var(--accent-soft);
        border-radius: 12px;
        padding: 14px 16px;
      }
      .conv-result .lab { font-size: 13px; color: var(--ink-2); display: block; }
      .conv-result .val {
        font-size: 30px;
        font-weight: 800;
        font-variant-numeric: tabular-nums;
        line-height: 1.25;
        word-break: break-all;
      }
      .conv-result .rev { font-size: 14px; color: var(--ink-2); font-variant-numeric: tabular-nums; }
      table.quick {
        width: 100%;
        border-collapse: collapse;
        font-size: 15px;
        font-variant-numeric: tabular-nums;
      }
      table.quick th, table.quick td {
        text-align: right;
        padding: 7px 4px;
        border-bottom: 1px solid var(--line);
      }
      table.quick th { color: var(--ink-2); font-weight: 500; font-size: 13.5px; }
      table.quick tr:last-child td { border-bottom: 0; }
      .note {
        font-size: 13px;
        color: var(--ink-2);
        line-height: 1.65;
        margin: 4px 2px 0;
      }
    </style>
  </head>
  <body>
    <main>
      <!-- ============ 工具导航首页 ============ -->
      <div class="view" id="view-nav">
        <div class="nav-head">
          <h1>工具导航</h1>
          <p>电商常用小工具，点开即用。</p>
        </div>
        <div class="search">
          <div class="inwrap">
            <input id="toolSearch" type="search" placeholder="搜索工具，如：利润、汇率" aria-label="搜索工具" />
          </div>
        </div>
        <div class="tool-list">
          <button type="button" class="tool-card" data-open="view-profit" data-search="利润计算 利润率 保本售价 定价 成本 佣金 tiktok">
            <span class="tool-icon" aria-hidden="true">%</span>
            <span class="tool-info">
              <span class="tool-name">利润计算器</span>
              <span class="tool-desc">泰铢售价、人民币成本，自动算净利润、利润率、保本价，还能按目标利润率反推售价。</span>
            </span>
            <span class="tool-arrow" aria-hidden="true">›</span>
          </button>
          <button type="button" class="tool-card" data-open="view-conv" data-search="汇率换算 泰铢 人民币 美元 换汇 货币">
            <span class="tool-icon" aria-hidden="true">฿</span>
            <span class="tool-info">
              <span class="tool-name">汇率换算</span>
              <span class="tool-desc">泰铢、人民币、美元互换，带常用金额速查表，汇率可手动修改。</span>
            </span>
            <span class="tool-arrow" aria-hidden="true">›</span>
          </button>
        </div>
        <p class="no-hit" id="noHit">没有匹配的工具，换个关键词试试。</p>
      </div>

      <!-- ============ 利润计算 ============ -->
      <div class="view" id="view-profit" hidden>
        <div class="tool-top">
          <button type="button" class="back-btn" data-home>‹ 返回</button>
          <h1>利润计算器</h1>
        </div>
      <section id="panel-profit">
        <div class="card">
          <h2>售价与汇率</h2>
          <div class="field">
            <label for="price">商品售价（泰铢）</label>
            <div class="inwrap">
              <span class="unit">฿</span>
              <input id="price" type="number" inputmode="decimal" min="0" step="any" value="299" />
            </div>
            <div class="derived">折合人民币约 <b id="priceCny">¥59.50</b></div>
          </div>
          <div class="field">
            <label for="rateThb">汇率：1 泰铢 = ? 元人民币（可改）</label>
            <div class="inwrap">
              <span class="unit">¥</span>
              <input id="rateThb" type="number" inputmode="decimal" min="0" step="any" value="0.199" />
            </div>
            <div class="derived">即 1 元 ≈ <b id="rateInv">5.03 泰铢</b></div>
          </div>
        </div>

        <div class="card">
          <h2>平台费用<span class="hint">按售价百分比，可改</span></h2>
          <div class="grid2">
            <div class="field">
              <label for="feeCommission">平台佣金 %</label>
              <div class="inwrap">
                <input id="feeCommission" type="number" inputmode="decimal" min="0" step="any" value="6" />
                <span class="unit">%</span>
              </div>
            </div>
            <div class="field">
              <label for="feeTrans">交易手续费 %</label>
              <div class="inwrap">
                <input id="feeTrans" type="number" inputmode="decimal" min="0" step="any" value="3" />
                <span class="unit">%</span>
              </div>
            </div>
            <div class="field">
              <label for="feeAd">广告费占比 %</label>
              <div class="inwrap">
                <input id="feeAd" type="number" inputmode="decimal" min="0" step="any" value="10" />
                <span class="unit">%</span>
              </div>
            </div>
            <div class="field">
              <label for="feeAffiliate">达人佣金 %（没有填 0）</label>
              <div class="inwrap">
                <input id="feeAffiliate" type="number" inputmode="decimal" min="0" step="any" value="0" />
                <span class="unit">%</span>
              </div>
            </div>
          </div>
        </div>

        <div class="card">
          <h2>成本<span class="hint">人民币，单件</span></h2>
          <div class="field">
            <label for="costBuy">采购成本</label>
            <div class="inwrap">
              <span class="unit">¥</span>
              <input id="costBuy" type="number" inputmode="decimal" min="0" step="any" value="25" />
            </div>
          </div>
          <div class="field">
            <label for="costShip">物流运费（头程 + 尾程）</label>
            <div class="inwrap">
              <span class="unit">¥</span>
              <input id="costShip" type="number" inputmode="decimal" min="0" step="any" value="12" />
            </div>
          </div>
          <div class="field">
            <label for="costOther">包装及其他费用</label>
            <div class="inwrap">
              <span class="unit">¥</span>
              <input id="costOther" type="number" inputmode="decimal" min="0" step="any" value="2" />
            </div>
          </div>
        </div>

        <div class="card result-card" aria-live="polite">
          <h2>计算结果（单件）</h2>
          <div class="profit-main">
            <div>
              <span class="lab">净利润（人民币）</span>
              <span class="profit-num" id="profitCny">¥0.00</span>
            </div>
            <div>
              <span class="lab">净利润（泰铢）</span>
              <span class="profit-num small" id="profitThb">฿0.00</span>
            </div>
          </div>
          <div class="stat-row">
            <div class="stat">
              <span class="lab">利润率（占售价）</span>
              <span class="val" id="margin">0%</span>
            </div>
            <div class="stat">
              <span class="lab">保本售价（泰铢）</span>
              <span class="val" id="breakeven">฿0.00</span>
            </div>
          </div>
          <ul class="breakdown">
            <li><span>售价收入</span><span class="amt" id="bdRevenue">¥0.00</span></li>
            <li><span>平台佣金</span><span class="amt minus" id="bdCommission">−¥0.00</span></li>
            <li><span>交易手续费</span><span class="amt minus" id="bdTrans">−¥0.00</span></li>
            <li><span>广告费</span><span class="amt minus" id="bdAd">−¥0.00</span></li>
            <li><span>达人佣金</span><span class="amt minus" id="bdAffiliate">−¥0.00</span></li>
            <li><span>采购 + 物流 + 其他成本</span><span class="amt minus" id="bdCosts">−¥0.00</span></li>
          </ul>
          <div class="warn" id="lossWarn">按现在的售价在亏钱：净利润为负。可以对照保本售价提价，或压一压成本和广告占比。</div>
        </div>

        <div class="card">
          <h2>按目标利润率定价</h2>
          <div class="field">
            <label for="targetMargin">想要的利润率 %</label>
            <div class="inwrap">
              <input id="targetMargin" type="number" inputmode="decimal" min="0" step="any" value="20" />
              <span class="unit">%</span>
            </div>
            <div class="derived">建议售价至少 <b id="suggestPrice">฿0.00</b>（按上面的费用和成本算）</div>
          </div>
        </div>

        <p class="note">费率默认值是 TikTok 泰国店常见量级，不同类目佣金不一样，请按自己店铺后台的实际费率修改。汇率为参考值，非实时。</p>
      </section>
      </div>

      <!-- ============ 汇率换算 ============ -->
      <div class="view" id="view-conv" hidden>
        <div class="tool-top">
          <button type="button" class="back-btn" data-home>‹ 返回</button>
          <h1>汇率换算</h1>
        </div>
      <section id="panel-conv">
        <div class="card">
          <h2>金额换算</h2>
          <div class="field">
            <label for="convAmount">金额</label>
            <div class="inwrap">
              <input id="convAmount" type="number" inputmode="decimal" min="0" step="any" value="1000" />
            </div>
          </div>
          <div class="conv-row" style="margin-top:12px;">
            <div class="field">
              <label for="convFrom">从</label>
              <select id="convFrom">
                <option value="THB" selected>泰铢 ฿</option>
                <option value="CNY">人民币 ¥</option>
                <option value="USD">美元 $</option>
              </select>
            </div>
            <button type="button" class="swap" id="swapBtn" aria-label="交换币种">⇄</button>
            <div class="field">
              <label for="convTo">到</label>
              <select id="convTo">
                <option value="THB">泰铢 ฿</option>
                <option value="CNY" selected>人民币 ¥</option>
                <option value="USD">美元 $</option>
              </select>
            </div>
          </div>
          <div class="conv-result" aria-live="polite">
            <span class="lab" id="convLab">换算结果</span>
            <div class="val" id="convVal">¥199.00</div>
            <div class="rev" id="convRev"></div>
          </div>
        </div>

        <div class="card">
          <h2>汇率设置<span class="hint">可手动修改</span></h2>
          <div class="field">
            <label for="rateThb2">1 泰铢 = ? 元人民币</label>
            <div class="inwrap">
              <span class="unit">¥</span>
              <input id="rateThb2" type="number" inputmode="decimal" min="0" step="any" value="0.199" />
            </div>
          </div>
          <div class="field">
            <label for="rateUsd">1 美元 = ? 元人民币</label>
            <div class="inwrap">
              <span class="unit">¥</span>
              <input id="rateUsd" type="number" inputmode="decimal" min="0" step="any" value="7.10" />
            </div>
          </div>
        </div>

        <div class="card">
          <h2>常用金额速查（泰铢 → 人民币）</h2>
          <table class="quick">
            <thead>
              <tr><th style="text-align:left;">泰铢 ฿</th><th>人民币 ¥</th><th>美元 $</th></tr>
            </thead>
            <tbody id="quickBody"></tbody>
          </table>
        </div>

        <p class="note">以上汇率为 2026-10-21 核对的市场中间价参考值（1 泰铢 ≈ 0.199 元），不是实时汇率。平台结算、银行换汇会有点差和手续费，实际到手以结算单为准。</p>
      </section>
      </div>
    </main>

    <script>
      (function () {
        var $ = function (id) { return document.getElementById(id); };
        function num(id) {
          var v = parseFloat($(id).value);
          return isNaN(v) || v < 0 ? 0 : v;
        }
        function fmt(n, d) {
          return n.toLocaleString("zh-CN", { minimumFractionDigits: d, maximumFractionDigits: d });
        }
        function moneyCny(n) { return (n < 0 ? "−¥" : "¥") + fmt(Math.abs(n), 2); }
        function moneyThb(n) { return (n < 0 ? "−฿" : "฿") + fmt(Math.abs(n), 2); }

        /* ---------- 视图导航：首页 ↔ 工具页 ---------- */
        var views = [$("view-nav"), $("view-profit"), $("view-conv")];
        function show(viewId) {
          views.forEach(function (v) { v.hidden = v.id !== viewId; });
          window.scrollTo(0, 0);
        }
        document.querySelectorAll("[data-open]").forEach(function (btn) {
          btn.addEventListener("click", function () { show(btn.getAttribute("data-open")); });
        });
        document.querySelectorAll("[data-home]").forEach(function (btn) {
          btn.addEventListener("click", function () { show("view-nav"); });
        });

        /* ---------- 工具搜索 ---------- */
        $("toolSearch").addEventListener("input", function () {
          var q = $("toolSearch").value.trim().toLowerCase();
          var hit = 0;
          document.querySelectorAll(".tool-card").forEach(function (card) {
            var hay = (card.querySelector(".tool-name").textContent + " " +
                       card.querySelector(".tool-desc").textContent + " " +
                       (card.getAttribute("data-search") || "")).toLowerCase();
            var showCard = !q || hay.indexOf(q) !== -1;
            card.style.display = showCard ? "" : "none";
            if (showCard) hit++;
          });
          $("noHit").classList.toggle("show", hit === 0);
        });

        /* ---------- 泰铢汇率两处同步 ---------- */
        var syncing = false;
        function syncRate(srcId, dstId) {
          if (syncing) return;
          syncing = true;
          $(dstId).value = $(srcId).value;
          syncing = false;
        }
        $("rateThb").addEventListener("input", function () { syncRate("rateThb", "rateThb2"); calcAll(); });
        $("rateThb2").addEventListener("input", function () { syncRate("rateThb2", "rateThb"); calcAll(); });

        /* ---------- 利润计算 ---------- */
        function calcProfit() {
          var price = num("price");               // 泰铢
          var rate = num("rateThb");              // 1 泰铢 = rate 元
          var feePct = {
            commission: num("feeCommission"),
            trans: num("feeTrans"),
            ad: num("feeAd"),
            affiliate: num("feeAffiliate")
          };
          var costs = num("costBuy") + num("costShip") + num("costOther"); // 人民币
          var revenue = price * rate;             // 人民币
          var feeTotalPct = feePct.commission + feePct.trans + feePct.ad + feePct.affiliate;

          var feeCny = {
            commission: revenue * feePct.commission / 100,
            trans: revenue * feePct.trans / 100,
            ad: revenue * feePct.ad / 100,
            affiliate: revenue * feePct.affiliate / 100
          };
          var feeSum = feeCny.commission + feeCny.trans + feeCny.ad + feeCny.affiliate;
          var profit = revenue - feeSum - costs;

          $("priceCny").textContent = moneyCny(revenue);
          $("rateInv").textContent = rate > 0 ? fmt(1 / rate, 2) + " 泰铢" : "—";

          var pc = $("profitCny"), pt = $("profitThb");
          pc.textContent = moneyCny(profit);
          pt.textContent = rate > 0 ? moneyThb(profit / rate) : "—";
          pc.classList.toggle("neg", profit < 0);
          pt.classList.toggle("neg", profit < 0);

          var marginEl = $("margin");
          marginEl.textContent = revenue > 0 ? fmt(profit / revenue * 100, 1) + "%" : "—";
          marginEl.classList.toggle("neg", profit < 0);

          // 保本：price * rate * (1 - fee%) = costs
          var keep = 1 - feeTotalPct / 100;
          var beEl = $("breakeven");
          if (rate > 0 && keep > 0) {
            beEl.textContent = "฿" + fmt(costs / (rate * keep), 2);
          } else {
            beEl.textContent = "—";
          }

          $("bdRevenue").textContent = moneyCny(revenue);
          $("bdCommission").textContent = "−" + moneyCny(feeCny.commission);
          $("bdTrans").textContent = "−" + moneyCny(feeCny.trans);
          $("bdAd").textContent = "−" + moneyCny(feeCny.ad);
          $("bdAffiliate").textContent = "−" + moneyCny(feeCny.affiliate);
          $("bdCosts").textContent = "−" + moneyCny(costs);

          $("lossWarn").classList.toggle("show", profit < 0 && price > 0);

          // 目标利润率定价：price*rate*(1-fee%-target%) = costs
          var target = num("targetMargin");
          var denom = rate * (1 - (feeTotalPct + target) / 100);
          $("suggestPrice").textContent = denom > 0 ? "฿" + fmt(costs / denom, 2) : "做不到（费率+目标利润率已 ≥100%）";
        }

        /* ---------- 汇率换算 ---------- */
        var SYM = { THB: "฿", CNY: "¥", USD: "$" };
        var NAME = { THB: "泰铢", CNY: "人民币", USD: "美元" };
        function toCny(amount, cur, rThb, rUsd) {
          if (cur === "THB") return amount * rThb;
          if (cur === "USD") return amount * rUsd;
          return amount;
        }
        function fromCny(cny, cur, rThb, rUsd) {
          if (cur === "THB") return rThb > 0 ? cny / rThb : 0;
          if (cur === "USD") return rUsd > 0 ? cny / rUsd : 0;
          return cny;
        }
        function calcConv() {
          var amount = num("convAmount");
          var from = $("convFrom").value;
          var to = $("convTo").value;
          var rThb = num("rateThb2");
          var rUsd = num("rateUsd");
          var result = fromCny(toCny(amount, from, rThb, rUsd), to, rThb, rUsd);
          $("convLab").textContent = fmt(amount, 2) + " " + NAME[from] + " =";
          $("convVal").textContent = SYM[to] + fmt(result, 2);
          var back = fromCny(toCny(1, to, rThb, rUsd), from, rThb, rUsd);
          $("convRev").textContent = "1 " + NAME[to] + " ≈ " + fmt(back, 4) + " " + NAME[from];

          var amounts = [100, 200, 500, 1000, 2000, 5000, 10000];
          var html = "";
          amounts.forEach(function (a) {
            var cny = a * rThb;
            var usd = rUsd > 0 ? cny / rUsd : 0;
            html += "<tr><td style='text-align:left;'>฿" + fmt(a, 0) + "</td><td>¥" + fmt(cny, 2) + "</td><td>$" + fmt(usd, 2) + "</td></tr>";
          });
          $("quickBody").innerHTML = html;
        }
        $("swapBtn").addEventListener("click", function () {
          var f = $("convFrom").value;
          $("convFrom").value = $("convTo").value;
          $("convTo").value = f;
          calcConv();
        });

        function calcAll() { calcProfit(); calcConv(); }

        ["price", "feeCommission", "feeTrans", "feeAd", "feeAffiliate",
         "costBuy", "costShip", "costOther", "targetMargin",
         "convAmount", "rateUsd"].forEach(function (id) {
          $(id).addEventListener("input", calcAll);
        });
        $("convFrom").addEventListener("change", calcConv);
        $("convTo").addEventListener("change", calcConv);

        calcAll();
      })();
    </script>
  </body>
</html>
