(function () { var SIZE_CHART_API_BASE = "https://www.minigiminicileri.xyz"; var SIZE_CHART_SCRIPT_KEY = "mcraf-sizechart-2026-MCYSK"; function isProductPage() { var p = (location.pathname || "").toLowerCase(); return p.indexOf("/urun") >= 0 || p.indexOf("/product") >= 0; } if (!isProductPage()) return; function qsa(sel) { return Array.prototype.slice.call(document.querySelectorAll(sel)); } function createEl(tag, styleText, text) { var n = document.createElement(tag); if (styleText) n.style.cssText = styleText; if (typeof text === "string") n.textContent = text; return n; } function findSku() { var m1 = document.querySelector('meta[name="sku"]'); if (m1 && m1.content) return (m1.content || "").trim(); var dataEl = document.querySelector("[data-sku],[data-product-sku],[data-productcode],[data-modelcode]"); if (dataEl) { var v = dataEl.getAttribute("data-sku") || dataEl.getAttribute("data-product-sku") || dataEl.getAttribute("data-productcode") || dataEl.getAttribute("data-modelcode"); if (v) return String(v).trim(); } var txt = document.body ? (document.body.innerText || "") : ""; var m2 = txt.match(/Stok\s*Kodu\s*[:\-]?\s*([A-Za-z0-9\-_]+)/i); return m2 && m2[1] ? m2[1].trim() : ""; } function getBedenNode() { var nodes = qsa("label,span,div,strong,p,h3,h4"); for (var i = 0; i < nodes.length; i++) { var t = (nodes[i].textContent || "").trim().toLowerCase(); if (t === "beden") return nodes[i]; } return null; } function ensureModal() { var old = document.getElementById("mcraf-size-modal"); if (old) return old; var overlay = createEl("div", "position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:999999;display:none;align-items:center;justify-content:center;padding:24px;"); overlay.id = "mcraf-size-modal"; var box = createEl("div", "width:min(1100px,100%);max-height:90vh;overflow:auto;background:#fff;border-radius:14px;box-shadow:0 20px 60px rgba(0,0,0,.35);border:1px solid #e5e7eb;"); var head = createEl("div", "position:sticky;top:0;background:#fff;padding:14px 16px;border-bottom:1px solid #e5e7eb;display:flex;align-items:center;justify-content:space-between;gap:12px;"); var title = createEl("div", "font-size:14px;font-weight:700;color:#111827;", "Beden Tablosu"); var close = createEl("button", "border:1px solid #e5e7eb;background:#f9fafb;padding:8px 10px;border-radius:10px;cursor:pointer;font-size:12px;", "Kapat"); close.type = "button"; close.onclick = function () { overlay.style.display = "none"; }; var body = createEl("div", "padding:16px;"); body.id = "mcraf-size-body"; body.textContent = "Yükleniyor..."; head.appendChild(title); head.appendChild(close); box.appendChild(head); box.appendChild(body); overlay.appendChild(box); overlay.onclick = function (e) { if (e.target === overlay) overlay.style.display = "none"; }; document.body.appendChild(overlay); return overlay; } function renderChart(chart) { var body = document.getElementById("mcraf-size-body"); if (!body) return; body.innerHTML = ""; if (!chart) { var noData = createEl("div", "font-size:13px;color:#b91c1c;", "Bu ürün için kayıtlı beden tablosu bulunamadı."); body.appendChild(noData); return; } body.appendChild(createEl("div", "font-size:16px;font-weight:800;margin-bottom:6px;color:#111827;", chart.title || "Beden Tablosu")); body.appendChild(createEl("div", "font-size:12px;color:#6b7280;margin-bottom:12px;", "Birim: " + (chart.unitDefault || "cm"))); var cols = (chart.columns || []).slice().sort(function (a, b) { return (a.sortOrder || 0) - (b.sortOrder || 0); }); var rows = (chart.rows || []).slice().sort(function (a, b) { return (a.sortOrder || 0) - (b.sortOrder || 0); }); var cells = chart.cells || []; function cellVal(rowId, colId) { for (var i = 0; i < cells.length; i++) { if (cells[i].rowId === rowId && cells[i].columnId === colId) return cells[i].value || ""; } return ""; } var table = createEl("table", "width:100%;border-collapse:collapse;font-size:12px;"); var thead = createEl("thead", ""); var trh = createEl("tr", ""); var th0 = createEl("th", "text-align:left;padding:10px;border-bottom:1px solid #e5e7eb;background:#f3f4f6;color:#111827;font-weight:700;", "Ölçü"); trh.appendChild(th0); for (var c = 0; c < cols.length; c++) { trh.appendChild(createEl("th", "text-align:left;padding:10px;border-bottom:1px solid #e5e7eb;background:#f3f4f6;color:#111827;font-weight:700;", cols[c].label)); } thead.appendChild(trh); table.appendChild(thead); var tbody = createEl("tbody", ""); for (var r = 0; r < rows.length; r++) { var tr = createEl("tr", ""); tr.appendChild(createEl("td", "padding:10px;border-bottom:1px solid #f1f5f9;background:#fafafa;font-weight:700;white-space:nowrap;", rows[r].label)); for (var cc = 0; cc < cols.length; cc++) { tr.appendChild(createEl("td", "padding:10px;border-bottom:1px solid #f1f5f9;background:#fff;white-space:nowrap;", cellVal(rows[r].id, cols[cc].id))); } tbody.appendChild(tr); } table.appendChild(tbody); body.appendChild(table); if (chart.notes) { body.appendChild(createEl("div", "margin-top:12px;font-size:12px;color:#374151;", "Not: " + chart.notes)); } } function openSizeChart() { var sku = findSku(); if (!sku) { alert("SKU bulunamadı."); return; } var modal = ensureModal(); modal.style.display = "flex"; var body = document.getElementById("mcraf-size-body"); if (body) body.textContent = "Yükleniyor..."; var url = SIZE_CHART_API_BASE + "/api/size-charts/public?sku=" + encodeURIComponent(sku) + "&key=" + encodeURIComponent(SIZE_CHART_SCRIPT_KEY); fetch(url, { method: "GET", credentials: "omit" }) .then(function (r) { return r.json(); }) .then(function (data) { renderChart(data && data.success ? data.chart : null); }) .catch(function (err) { if (!body) return; body.innerHTML = ""; body.appendChild(createEl("div", "font-size:13px;color:#b91c1c;", "Beden tablosu yüklenemedi: " + String(err && err.message ? err.message : err))); }); } function injectButton() { if (document.getElementById("mcraf-size-btn")) return true; var bedenNode = getBedenNode(); if (!bedenNode || !bedenNode.parentNode) return false; var wrap = createEl("span", "display:inline-flex;align-items:center;gap:8px;"); var btn = createEl("button", "border:1px solid #e5e7eb;background:#111827;color:#fff;padding:6px 10px;border-radius:10px;cursor:pointer;font-size:12px;font-weight:700;line-height:1;", "Beden Tablosu"); btn.id = "mcraf-size-btn"; btn.type = "button"; btn.onclick = openSizeChart; bedenNode.parentNode.insertBefore(wrap, bedenNode); wrap.appendChild(bedenNode); wrap.appendChild(btn); return true; } var tries = 0; var timer = setInterval(function () { tries++; var ok = injectButton(); if (ok || tries > 40) clearInterval(timer); }, 500); })();