/* RAWAJ — دليل المقاسات داخل صفحة المنتج */ (function () { if (!/\/p\d+(?:$|[/?#])/.test(location.pathname)) return; var WA = 'https://wa.me/966538956382'; var RULE = 'إذا كان قياسك بين مقاسين، اختاري الأكبر.'; var T = { dress: { name: 'الفساتين وفساتين السهرة', note: 'قصّة مضبوطة على الجسم — تابعي القياسات الثلاثة. الأرقام قياس جسمك بالسنتيمتر، لا قياس القطعة.', cols: ['المقاس', 'محيط الصدر', 'محيط الخصر', 'محيط الورك'], rows: [['S','79 – 83','64 – 68','89 – 93'], ['M','84 – 88','69 – 73','95 – 99'], ['L','89 – 93','74 – 78','100 – 104'], ['XL','95 – 99','79 – 83','105 – 109'], ['XXL','100 – 104','84 – 88','110 – 114']] }, loose: { name: 'الجلابيات والدراعات', note: 'قصّة واسعة تنسدل من الكتف — الخصر والورك غير محدِّدين. يُختار المقاس بمحيط الصدر مع عرض الكتف.', cols: ['المقاس', 'محيط الصدر', 'عرض الكتف'], rows: [['S','88 – 92','36 – 38'], ['M','93 – 98','38 – 40'], ['L','99 – 104','40 – 42'], ['XL','105 – 112','42 – 44']] } }; function title() { var h = document.querySelector('h1'); return h ? h.textContent.trim() : ''; } function pick() { var t = title(); if (/جلابي|دراع|كيمونو|عباي|قفطان|طقم|بشت/.test(t)) return ['loose']; if (/فستان|فساتين/.test(t)) return ['dress']; return ['dress', 'loose']; } function esc(s) { return String(s).replace(/[&<>"]/g, function (c) { return ({ '&': '&', '<': '<', '>': '>', '"': '"' })[c]; }); } function tableHTML(k, showName) { var d = T[k], h = ''; if (showName) h += '

' + esc(d.name) + '

'; h += '

' + esc(d.note) + '

'; h += '
'; d.cols.forEach(function (c) { h += ''; }); h += ''; d.rows.forEach(function (r) { h += ''; for (var i = 1; i < r.length; i++) { h += ''; } h += ''; }); return h + '
' + esc(c) + '
' + esc(r[0]) + '' + esc(r[i]) + '
'; } var dlg = null; function build() { if (dlg) return dlg; var keys = pick(), multi = keys.length > 1; var msg = encodeURIComponent('السلام عليكم، محتارة في المقاس لمنتج: ' + title()); dlg = document.createElement('dialog'); dlg.className = 'rzgm'; dlg.innerHTML = '
دليل المقاسات' + '
' + '
' + esc(RULE) + '
' + '
' + keys.map(function (k) { return tableHTML(k, multi); }).join('') + '
' + '
ما زلتِ محتارة؟ راسلينا بقياساتك ونحدد لك الأنسب. · ' + 'الدليل الكامل
'; document.body.appendChild(dlg); dlg.querySelector('.rzgm-x').addEventListener('click', function () { dlg.close(); }); dlg.addEventListener('click', function (e) { if (e.target === dlg) dlg.close(); }); return dlg; } function open(e) { e.preventDefault(); var d = build(); if (d.showModal) d.showModal(); else d.setAttribute('open',''); } function anchor() { var b = document.querySelector('salla-add-product-button'); if (b) return b; var o = document.querySelector('salla-product-options'); if (o && o.nextElementSibling) return o.nextElementSibling; return null; } function inject() { if (document.querySelector('.rzgm-trigger')) return true; var a = anchor(); if (!a || !a.parentNode) return false; var t = document.createElement('button'); t.type = 'button'; t.className = 'rzgm-trigger'; t.innerHTML = ' دليل المقاسات'; t.addEventListener('click', open); a.parentNode.insertBefore(t, a); return true; } function start() { if (inject()) return; var n = 0, iv = setInterval(function () { if (inject() || ++n > 40) clearInterval(iv); }, 250); } if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', start); else start(); })(); /* ===== RAWAJ — زخرفة عنوان أقسام رواج + نسبة الخصم (٦ سبتمبر) ===== */ (function(){ function ornament(){ var c = document.querySelector('.special-cats .saji-special-cats__content'); if(!c || c.querySelector('.saji-title-ornament')) return; if(!c.querySelector('.saji-special-cats__title')) return; var o = document.createElement('span'); o.className = 'saji-title-ornament saji-title-ornament--style_1 saji-title-ornament--primary'; o.setAttribute('data-title-style','style_1'); o.setAttribute('aria-hidden','true'); o.setAttribute('data-animated','1'); c.appendChild(o); } function num(el){ return parseFloat((el.textContent||'').replace(/[^0-9.]/g,'')) || 0; } function discounts(){ document.querySelectorAll('.product-entry .product-entry__price').forEach(function(p){ if(p.querySelector('.rzg-off')) return; var sale = p.querySelector('.sale-price,.total-price'); var reg = p.querySelector('.regular-price'); if(!sale || !reg) return; var s = num(sale), r = num(reg); if(!(r > s && s > 0)) return; var pct = Math.round((r - s) / r * 100); if(pct < 1) return; var b = document.createElement('span'); b.className = 'rzg-off'; b.textContent = 'خصم '; var n = document.createElement('span'); n.setAttribute('dir','ltr'); n.textContent = pct + '%'; b.appendChild(n); (p.querySelector('div') || p).appendChild(b); }); } function run(){ ornament(); discounts(); } var t; function schedule(){ clearTimeout(t); t = setTimeout(run, 120); } if(document.readyState === 'loading'){ document.addEventListener('DOMContentLoaded', run); } else { run(); } new MutationObserver(schedule).observe(document.documentElement, {childList:true, subtree:true}); })(); /* ===== RAWAJ — شريط الألوان في صفحة المنتج (٦ سبتمبر) ===== */ (function(){ if(!/\/p\d+(?:$|[\/?#])/.test(location.pathname)) return; var ID=(location.pathname.match(/\/p(\d+)/)||[])[1]; if(!ID) return; var KEY='rzgc_cat_v1'; function stem(s){ return (s||'').replace(/-[A-Za-z]{2,5}$/,''); } function label(p,st){ var n=p.name||''; if(n.indexOf(' - ')>-1) return n.split(' - ').pop().trim(); return (p.sku||'').slice(st.length+1)||'لون'; } async function catalog(){ try{ var c=sessionStorage.getItem(KEY); if(c) return JSON.parse(c); }catch(e){} var out=[], u='products?per_page=50'; for(var i=0;i<6;i++){ var r=await salla.api.axios.get(u); ((r.data&&r.data.data)||[]).forEach(function(p){ out.push({id:String(p.id),sku:p.sku||'',name:p.name||'',url:p.url||'',img:(p.image&&p.image.url)||''}); }); var nx=r.data&&r.data.cursor&&r.data.cursor.next; if(!nx) break; u=nx; } try{ sessionStorage.setItem(KEY,JSON.stringify(out)); }catch(e){} return out; } async function run(){ var anchor=document.querySelector('salla-product-options.s-product-options-wrapper'); if(!anchor || !anchor.parentNode || document.querySelector('.rzgc')) return; var list; try{ list=await catalog(); }catch(e){ return; } var me=null; for(var i=0;i -1; var hasPick = t.indexOf('اختر') > -1; lb.textContent = 'المقاس' + (hasStar ? ' *' : '') + (hasPick ? ' اختر' : ''); lb.setAttribute('data-rzgn','1'); } } var t2; function s2(){ clearTimeout(t2); t2 = setTimeout(norm, 200); } if(document.readyState === 'loading'){ document.addEventListener('DOMContentLoaded', s2); } else { s2(); } new MutationObserver(s2).observe(document.documentElement,{childList:true,subtree:true}); [800,2000,4000].forEach(function(ms){ setTimeout(norm, ms); }); })(); /* RAWAJ — تهدئة سلايدرات المنتجات والأقسام (٧ سبتمبر) */ (function(){ function tune(){ var sliders = document.querySelectorAll('salla-slider'); for(var i=0;i -1; if(!isProducts && !isCats) continue; s.setAttribute('data-rzgsp','1'); if(sw.params.autoplay){ sw.params.autoplay.delay = isProducts ? 7000 : 5000; sw.params.autoplay.disableOnInteraction = true; sw.params.autoplay.pauseOnMouseEnter = true; } try{ if(sw.autoplay && sw.autoplay.running){ sw.autoplay.stop(); sw.autoplay.start(); } }catch(e){} (function(inst){ var halt = function(){ try{ if(inst.autoplay && inst.autoplay.running) inst.autoplay.stop(); }catch(e){} }; s.addEventListener('focusin', halt, true); s.addEventListener('change', halt, true); s.addEventListener('pointerdown', halt, true); })(sw); } } var t3; function s3(){ clearTimeout(t3); t3 = setTimeout(tune, 400); } if(document.readyState === 'loading'){ document.addEventListener('DOMContentLoaded', s3); } else { s3(); } new MutationObserver(s3).observe(document.documentElement,{childList:true,subtree:true}); [1000,2500,5000,8000].forEach(function(ms){ setTimeout(tune, ms); }); })(); /* RAWAJ — ترميز FAQPage مبني من الأسئلة الظاهرة فعليًا في الصفحة (٧ سبتمبر) */ (function(){ function build(){ if(document.getElementById('rzg-faq-ld')) return; var items = document.querySelectorAll('.saji-common-questions__item'); if(!items.length) return; var list = []; for(var i=0;i label.s-product-options-disabled .s-product-options-grid-mode-span'); for(var i=0;i0) real++; } var box=sel.closest('.s-block-select')||sel.parentElement; if(box){ box.style.display = (real<2) ? 'none' : ''; } } var wraps=document.querySelectorAll('.installment-wrap'); for(var i=0;i0; }); return nums.length ? Math.min.apply(null,nums) : 0; } function chips(pd){ var p=priceOf(); if(!p) return null; var pts=Math.floor(p*POINT_PER_SAR); var cb=Math.round(p*CASHBACK_RATE*100)/100; var cbTxt=(cb%1===0)?String(cb):cb.toFixed(2); var bar=document.getElementById('rzg-rewards'); if(!bar){ bar=document.createElement('div'); bar.id='rzg-rewards'; pd.insertAdjacentElement('afterend',bar); } var html='اكسبي +'+pts+' نقطة ولاء' + 'كاش باك +'+cbTxt+' ريال'; if(bar.getAttribute('data-h')!==html){ bar.innerHTML=html; bar.setAttribute('data-h',html); } return bar; } function run(){ var pd=document.querySelector('.saji-pdp .saji-pdp__price-display'); if(!pd) return; var native=document.querySelector('.saji-pdp salla-loyalty-points-banner') || document.querySelector('.saji-pdp salla-cashback-banner'); var anchor=pd; var old=document.getElementById('rzg-rewards'); if(native){ if(old){ old.remove(); } } else if(FALLBACK && (Date.now()-started)>2500){ var b=chips(pd); if(b){ if(b.previousElementSibling!==anchor){ anchor.insertAdjacentElement('afterend',b); } anchor=b; } } else if(old){ if(old.previousElementSibling!==anchor){ anchor.insertAdjacentElement('afterend',old); } anchor=old; } for(var i=0;i' + t + ''; }).join(''); var pay = info.querySelector('.saji-pdp__payments'); if(pay){ pay.insertAdjacentElement('beforebegin', bar); } else { info.appendChild(bar); } } } var t; function go(){ clearTimeout(t); t=setTimeout(build,250); } if(document.readyState==='loading'){ document.addEventListener('DOMContentLoaded', go); } else { go(); } new MutationObserver(go).observe(document.documentElement,{childList:true,subtree:true}); [800,2000,4000,8000].forEach(function(ms){ setTimeout(build, ms); }); })(); /* (PDP-17) مقتطف الوصف تحت اسم المنتج — 24 سبتمبر يأخذ أول جملة من الوصف (ما قبل كلمة «الوصف:») ويعرضها تحت الاسم مع «قراءة المزيد». لا يكتب شيئًا من عنده — المصدر وصف المنتج نفسه. */ (function(){ var MAX = 85; function descText(){ var tc = document.querySelector('.saji-pdp salla-tab-content'); if(!tc) return ''; var w = document.createTreeWalker(tc, NodeFilter.SHOW_TEXT, null), parts = [], n; while(n = w.nextNode()){ var s=(n.nodeValue||'').replace(/\s+/g,' ').trim(); if(s) parts.push(s); } var t = parts.join(' '); if(!t) return ''; var cut = t.split(/الوصف\s*:?/)[0].trim(); if(!cut || cut.length < 12) cut = t; if(cut.length > MAX){ cut = cut.slice(0,MAX).replace(/[\s،,.]+[^\s]*$/,'') + '…'; } return cut; } function openDetails(e){ e.preventDefault(); var h = document.querySelector('.saji-pdp salla-tab-header'); if(h){ try{ h.click(); }catch(err){} } var tabs = document.querySelector('.saji-pdp salla-tabs'); if(tabs){ tabs.scrollIntoView({behavior:'smooth', block:'center'}); } } function build(){ var hdr = document.querySelector('.saji-pdp .saji-pdp__header'); if(!hdr) return; var txt = descText(); if(!txt) return; var box = document.getElementById('rzg-excerpt'); if(!box){ box = document.createElement('div'); box.id = 'rzg-excerpt'; hdr.insertAdjacentElement('afterend', box); } if(box.getAttribute('data-t') !== txt){ box.setAttribute('data-t', txt); box.innerHTML = ' قراءة المزيد'; box.querySelector('.rzg-x-t').textContent = txt; box.querySelector('.rzg-x-m').addEventListener('click', openDetails); } } var t; function go(){ clearTimeout(t); t=setTimeout(build,250); } if(document.readyState==='loading'){ document.addEventListener('DOMContentLoaded', go); } else { go(); } new MutationObserver(go).observe(document.documentElement,{childList:true,subtree:true}); [900,2500,5000,9000].forEach(function(ms){ setTimeout(build, ms); }); })();