‏/* Add custom Js styles below */ ‏/* ===== Berllin Size Guide (No Figure) - Fixes v5 ===== */ ‏(function(){ ‏ if (window.__berllinSizeGuideLoadedV5__) return; ‏ window.__berllinSizeGuideLoadedV5__ = true; ‏ Salla.onReady(() => { ‏ Salla.product.event.onSizeGuideFetched((sizes, productId) => { ‏ waitForSizeGuideContainer(initSizesUI, { retries: 50, interval: 120 }, sizes, productId); }); }); ‏ function waitForSizeGuideContainer(cb, opts, sizes, productId) { ‏ const selectors = [ ‏ '.s-product-size-guide-wrapper salla-tabs', ‏ '.s-product-size-guide-wrapper .s-product-size-guide', ‏ '.s-product-size-guide', ‏ '[data-size-guide-target]', ‏ '.product-size-guide, .size-guide' ]; ‏ const wrapperSel = '.s-product-size-guide-wrapper'; ‏ function find() { ‏ const wrapper = document.querySelector(wrapperSel); ‏ for (const sel of selectors) { ‏ const el = wrapper ? wrapper.querySelector(sel) : document.querySelector(sel); ‏ if (el) return el; } ‏ return null; } ‏ let tries = 0; ‏ const timer = setInterval(() => { ‏ const host = find(); ‏ if (host) { clearInterval(timer); cb(host, sizes, productId); } ‏ else if (++tries >= (opts?.retries || 40)) { ‏ clearInterval(timer); ‏ const wrapper = document.querySelector(wrapperSel) || document.body; ‏ const fallback = document.createElement('div'); ‏ fallback.className = 's-product-size-guide-fallback'; ‏ wrapper.appendChild(fallback); ‏ cb(fallback, sizes, productId); } ‏ }, opts?.interval || 100); } ‏ function initSizesUI(sizesHost) { ‏ sizesHost.style.display = 'block'; ‏ sizesHost.style.width = '100%'; ‏ sizesHost.innerHTML = ` ‏

دليل المقاسات

‏ ‏ ‏ ‏ ‏ ‏
الأردافالخصرالصدرالمقاسUK

قد تختلف المقاسات قليلًا حسب قصة الموديل ونوع القماش.

`; ‏ // ===== JS ===== ‏ function $s(sel){ return sizesHost.querySelector(sel); } ‏ function parseNum(x){ if (typeof x === 'string') x = x.replace(/[^\d.\-]/g,'').replace(/,/g,'.'); const n = parseFloat(x); return Number.isFinite(n) ? n : NaN; } ‏ var SIZES = [ ‏ { hip: 36, waist: 26, bust: 32, size: 'S', uk: '6' }, ‏ { hip: 38, waist: 28, bust: 34, size: 'M', uk: '8' }, ‏ { hip: 40, waist: 30, bust: 36, size: 'L', uk: '10' }, ‏ { hip: 42, waist: 32, bust: 38, size: 'XL', uk: '12' }, ‏ { hip: 44, waist: 34, bust: 40, size: 'XXL', uk: '14' }, ‏ { hip: 46, waist: 36, bust: 42, size: '3XL', uk: '16' }, ‏ { hip: 48, waist: 38, bust: 44, size: '4XL', uk: '18' }, ‏ { hip: 50, waist: 40, bust: 46, size: '5XL', uk: '20' }, ‏ { hip: 52, waist: 42, bust: 48, size: '6XL', uk: '22' }, ‏ { hip: 54, waist: 44, bust: 50, size: '7XL', uk: '24' } ]; ‏ var tbody = $s('#sizeBody'), uIn = $s('#u-in'), uCm = $s('#u-cm'); ‏ function toCm(v){ return Math.round(v * 2.54); } ‏ function fmt(v,u){ return u === 'cm' ? (toCm(v) + ' سم') : (v + ' إنش'); } ‏ function renderTable(unit){ ‏ var html = ""; ‏ for (var i=0;i' + fmt(r.hip, unit) + '' ‏ + '' + fmt(r.waist, unit) + '' ‏ + '' + fmt(r.bust, unit) + '' ‏ + '' + r.size + '' ‏ + '' + r.uk + '' ‏ + ''; } ‏ tbody.innerHTML = html; } ‏ uIn.addEventListener('change', function(){ renderTable(this.value); syncModalUnit(); }); ‏ uCm.addEventListener('change', function(){ renderTable(this.value); syncModalUnit(); }); ‏ renderTable('cm'); ‏ // Modal ‏ var modal = $s('#fitModal'), openBtn = $s('#openFit'), closeBtn = $s('#closeFit'), closeFab = $s('#closeFab'); ‏ function syncModalUnit(){ const mIn = $s('#f-in'), mCm = $s('#f-cm'); if (!mIn || !mCm) return; if (uCm.checked) mCm.checked = true; else mIn.checked = true; } ‏ function syncPageUnitFromModal(){ const mCm = $s('#f-cm'); if (mCm && mCm.checked){ uCm.checked = true; renderTable('cm'); } else { uIn.checked = true; renderTable('in'); } } ‏ function show(){ modal.classList.add('show'); syncModalUnit(); } ‏ function hide(){ modal.classList.remove('show'); } ‏ openBtn.addEventListener('click', show); ‏ closeBtn.addEventListener('click', hide); ‏ if (closeFab) closeFab.addEventListener('click', hide); ‏ modal.addEventListener('click', function(e){ if(e.target === modal) hide(); }); ‏ window.addEventListener('keydown', function(e){ if(e.key === 'Escape' && modal.classList.contains('show')) hide(); }); ‏ const mIn = $s('#f-in'), mCm = $s('#f-cm'); ‏ if (mIn) mIn.addEventListener('change', syncPageUnitFromModal); ‏ if (mCm) mCm.addEventListener('change', syncPageUnitFromModal); ‏ // Recommendation ‏ var PADS = { regular: 0, relaxed: 1, snug: -0.5 }; ‏ function clampPad(x){ return Math.max(-1, Math.min(2, x)); } ‏ function pick(userIn, pref){ ‏ var pad = clampPad(PADS[pref || 'regular'] || 0); ‏ var need = { bust: Math.max(0, userIn.bust + pad), waist: Math.max(0, userIn.waist + pad), hip: Math.max(0, userIn.hip + pad) }; ‏ for (var i=0;i= need.bust && r.waist >= need.waist && r.hip >= need.hip) return r; } ‏ return SIZES[SIZES.length-1]; } ‏ var store = { ‏ set: (k,v)=>{ try{ localStorage.setItem(k, JSON.stringify(v)); }catch(e){} }, ‏ get: (k,f)=>{ try{ var s = localStorage.getItem(k); return s ? JSON.parse(s) : f; }catch(e){ return f; } } }; ‏ var form = $s('#fitForm'), ‏ outSize = $s('#recSize'), ‏ oB = $s('#outBust'), oW = $s('#outWaist'), oH = $s('#outHip'), ‏ note = $s('#fitNote'), ‏ saveBtn = $s('#saveMySize'), fillBtn = $s('#fillFromSaved'); ‏ $s('#resetForm').addEventListener('click', function(){ ‏ form.reset(); outSize.textContent = oB.textContent = oW.textContent = oH.textContent = '—'; ‏ note.textContent = 'أدخلي القياسات ثم احسبي المقاس.'; }); ‏ function getUnit(){ const modChecked = $s('[name="fitUnit"]:checked'); if (modChecked) return modChecked.value === 'cm' ? 'cm' : 'in'; return uCm && uCm.checked ? 'cm' : 'in'; } ‏ function readForm(){ ‏ const unit = getUnit(); ‏ const pref = $s('#fitPref').value; ‏ const bust = parseNum($s('#bust').value); ‏ const waist= parseNum($s('#waist').value); ‏ const hip = parseNum($s('#hip').value); ‏ if (!(bust>0) || !(waist>0) || !(hip>0)) return null; ‏ const toIn = v => unit === 'cm' ? v/2.54 : v; ‏ return { unit, pref, raw:{bust,waist,hip}, inch:{bust:toIn(bust),waist:toIn(waist),hip:toIn(hip)} }; } ‏ form.addEventListener('submit', function(e){ ‏ e.preventDefault(); ‏ const st = readForm(); ‏ if (!st){ note.textContent = 'يرجى إدخال جميع القياسات بشكل صحيح.'; return; } ‏ const rec = pick(st.inch, st.pref); ‏ outSize.textContent = 'UK ' + rec.uk + ' — ' + rec.size; ‏ const outFmt = v => st.unit === 'cm' ? Math.round(v) + ' سم' : (+v.toFixed(1)) + ' إنش'; ‏ if (oB) oB.textContent = outFmt(st.raw.bust); ‏ if (oW) oW.textContent = outFmt(st.raw.waist); ‏ if (oH) oH.textContent = outFmt(st.raw.hip); ‏ if (note) note.textContent = 'تطابق مباشر مع جدول berllin؛ قد يختلف حسب قصة الموديل والقماش.'; ‏ store.set('lastMeasures', st); }); ‏ if (saveBtn){ ‏ saveBtn.addEventListener('click', function(){ ‏ const st = readForm(); if (!st){ note.textContent = 'أدخلي القياسات أولًا قبل الحفظ.'; return; } ‏ store.set('mySize', st); note.textContent = 'تم حفظ مقاسك على هذا المتصفح.'; }); } ‏ if (fillBtn){ ‏ fillBtn.addEventListener('click', function(){ ‏ const sv = store.get('mySize') || store.get('lastMeasures'); ‏ if (!sv){ note.textContent = 'لا توجد قياسات محفوظة بعد.'; return; } ‏ (sv.unit === 'cm' ? $s('#f-cm') : $s('#f-in')).checked = true; ‏ $s('#bust').value = sv.raw?.bust ?? ''; ‏ $s('#waist').value = sv.raw?.waist ?? ''; ‏ $s('#hip').value = sv.raw?.hip ?? ''; ‏ if (sv.pref) $s('#fitPref').value = sv.pref; ‏ note.textContent = 'تم استرجاع القياسات — احسبي المقاس الآن.'; ‏ syncPageUnitFromModal(); }); } } })();