/* 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 += '| ' + esc(c) + ' | '; });
h += '
';
d.rows.forEach(function (r) {
h += '| ' + esc(r[0]) + ' | ';
for (var i = 1; i < r.length; i++) {
h += '' + esc(r[i]) + ' | ';
}
h += '
';
});
return h + '
';
}
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); });
})();