/* Add custom JS code below */
/* LARIB: زر التواصل العائم (واتساب + اتصال) + شريط علوي برقم التواصل */
(function () {
var N = '966543608019', D = '+966 54 360 8019';
function fixFloating() {
var list = document.querySelector('.floating-contact-list');
if (!list || list.getAttribute('data-lr') === '1') return !!list;
list.innerHTML =
'
' +
'واتساب' +
'' +
'اتصال';
list.setAttribute('data-lr', '1');
return true;
}
function topBar() {
if (document.getElementById('lr-top')) return;
var b = document.createElement('div');
b.id = 'lr-top';
b.innerHTML = 'التوصيل فقط بالرياض وقريبًا بكل المدن';
b.style.cssText = 'background:#3b1d2c;color:#fff;text-align:center;font-size:14px;line-height:1.4;padding:7px 10px;position:relative;z-index:60';
document.body.insertBefore(b, document.body.firstChild);
}
function run() {
topBar();
if (!fixFloating()) {
var tries = 0, t = setInterval(function () { if (fixFloating() || ++tries > 40) clearInterval(t); }, 250);
}
}
if (document.readyState !== 'loading') run(); else document.addEventListener('DOMContentLoaded', run);
})();
/* سلايدر الماركات: لمس = إيقاف + سحب يدوي، ويكمل الحركة بعد ما تتركه */
(function () {
function setup(sec) {
if (sec.__lbTouch) return;
var box = sec.querySelector('.marquee');
var uls = sec.querySelectorAll('.marquee__content');
if (!box || !uls.length) return;
sec.__lbTouch = true;
box.style.touchAction = 'pan-y';
var offset = 0, startX = 0, startY = 0, startOff = 0, dragging = false, moved = false, tracking = false, timer = null, dir = 0;
function tx(el) { var m = getComputedStyle(el).transform; if (!m || m === 'none') return 0; return new DOMMatrixReadOnly(m).m41; }
function period() { var g = parseFloat(getComputedStyle(box).columnGap || getComputedStyle(box).gap) || 0; return uls[0].getBoundingClientRect().width + g; }
function apply() { for (var i = 0; i < uls.length; i++) uls[i].style.translate = offset + 'px 0'; }
function normalize() {
var w = period(); if (!w) return;
var eff = tx(uls[0]) + offset;
if (dir <= 0) { while (eff > 0) { offset -= w; eff -= w; } while (eff < -w) { offset += w; eff += w; } }
else { while (eff < 0) { offset += w; eff += w; } while (eff > w) { offset -= w; eff -= w; } }
}
function pause() { for (var i = 0; i < uls.length; i++) uls[i].style.animationPlayState = 'paused'; }
function resume() { for (var i = 0; i < uls.length; i++) uls[i].style.animationPlayState = 'running'; }
var a = tx(uls[0]);
setTimeout(function () { var b = tx(uls[0]); dir = b < a ? -1 : 1; }, 300);
box.addEventListener('touchstart', function (e) {
if (e.touches.length !== 1) return;
clearTimeout(timer); pause();
tracking = true; dragging = false; moved = false;
startX = e.touches[0].clientX; startY = e.touches[0].clientY; startOff = offset;
}, { passive: true });
box.addEventListener('touchmove', function (e) {
if (!tracking) return;
var dx = e.touches[0].clientX - startX, dy = e.touches[0].clientY - startY;
if (!dragging) {
if (Math.abs(dx) > 8 && Math.abs(dx) > Math.abs(dy)) { dragging = true; moved = true; }
else if (Math.abs(dy) > 10) { tracking = false; return; }
}
if (dragging) { offset = startOff + dx; normalize(); startOff = offset - dx; apply(); }
}, { passive: true });
function end() { tracking = false; dragging = false; clearTimeout(timer); timer = setTimeout(resume, 2500); }
box.addEventListener('touchend', end, { passive: true });
box.addEventListener('touchcancel', end, { passive: true });
box.addEventListener('click', function (e) { if (moved) { e.preventDefault(); e.stopPropagation(); moved = false; } }, true);
}
function initBrands() {
var secs = document.querySelectorAll('.s-block--brands.s-block--marquee');
for (var i = 0; i < secs.length; i++) setup(secs[i]);
}
if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', initBrands); else initBrands();
window.addEventListener('load', initBrands);
setTimeout(initBrands, 1500);
})();