/* 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); })();