/* Add custom JS code below */
// ═══════════════════════════════════════════════════════════
// القسم 6: شريطي الإعلانات الثابتين في أعلى الصفحة
// ═══════════════════════════════════════════════════════════
(function initPromoBanners() {
function createPromoBanners() {
try {
if (document.querySelector('.top-promo-bars-wrapper')) return;
const header = document.querySelector(".store-header") || document.querySelector("header");
if (!header) {
console.warn("Header not found for promo banner");
return;
}
// تحميل Swiper CSS
const swiperCSS = document.createElement("link");
swiperCSS.rel = "stylesheet";
swiperCSS.href = "https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css";
document.head.appendChild(swiperCSS);
const promoBars = document.createElement("div");
promoBars.className = "top-promo-bars-wrapper";
promoBars.innerHTML = `
`;
document.body.insertBefore(
promoBars,
document.body.firstChild
);
// تحميل Swiper JS
const swiperJS = document.createElement("script");
swiperJS.src = "https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js";
swiperJS.onload = function () {
try {
if (typeof Swiper !== 'undefined') {
new Swiper(".promo-slider-container", {
direction: "horizontal",
loop: true,
loopedSlides: 20,
speed: 7000,
autoplay: {
delay: 0,
disableOnInteraction: false,
pauseOnMouseEnter: false
},
slidesPerView: "auto",
spaceBetween: 0,
allowTouchMove: false
});
}
} catch (error) {
console.warn(
"Promo slider initialization error:",
error
);
}
};
swiperJS.onerror = function () {
console.warn(
"Failed to load Swiper for promo banner"
);
};
document.head.appendChild(swiperJS);
} catch (error) {
console.warn(
"Promo banner creation error:",
error
);
}
}
if (document.readyState === "loading") {
document.addEventListener(
"DOMContentLoaded",
createPromoBanners
);
} else {
createPromoBanners();
}
})();
// ═══════════════════════════════════════════════════════════
// نهايه قسم شريطي الإعلانات الثابتين في أعلى الصفحة
// ═══════════════════════════════════════════════════════════
(function() {
function moveAddToCartButtons() {
document.querySelectorAll('.s-product-card-entry').forEach(function(card) {
if (card.querySelector('.add-to-cart-bottom')) return; // اتنقل فعلاً
var content = card.querySelector('.s-product-card-content');
var addBtn = card.querySelector('salla-add-product-button');
if (!content || !addBtn) return;
var wrapper = document.createElement('div');
wrapper.className = 'add-to-cart-bottom';
wrapper.appendChild(addBtn);
content.appendChild(wrapper);
});
}
moveAddToCartButtons();
var observer = new MutationObserver(function() {
moveAddToCartButtons();
});
observer.observe(document.body, { childList: true, subtree: true });
// محاولات احتياطية لمدة أطول (30 ثانية) عشان سلايدرات الرئيسية البطيئة
var retries = 0;
var interval = setInterval(function() {
moveAddToCartButtons();
retries++;
if (retries > 60) clearInterval(interval);
}, 500);
})();
// ─────────────────────────────────────────────────────────────
// Homemark - Google Reviews Slider (الهوم بيج فقط)
// ─────────────────────────────────────────────────────────────
(function initGoogleReviews() {
const isHomePage = document.body.classList.contains('index');
if (!isHomePage) return;
const reviews = [
{ name: "N", rating: 5, text: "هوم مارك صراحة محل مميز وبضاعتهم راااائعة جدآ وكمان البنات ماشاءالله متعاونات ويساعدونكم في التنسيق اذا حابين .. الموظفة رهام عسسسل الله يسعدها ويوفقها اسلوب وذرابة 😍😍تنسيقها خيااااال", date: "منذ 6 أشهر", avatar: "https://ui-avatars.com/api/?name=N&background=cab09b&color=fff&size=80" },
{ name: "mun", rating: 5, text: "I had a great experience at this store, and I would especially like to thank Mr. Mahdi Hassan for his excellent service. He was very helpful, professional, and kind.", date: "منذ شهرين", avatar: "https://ui-avatars.com/api/?name=Mun&background=b89a80&color=fff&size=80" },
{ name: "عفاف أحمد", rating: 5, text: "محل هوم مارك مرا رائع اشتريت منهم اغراض قبل أسبوع يوفر جميع الأذواق وأسعارهم حلوة الله لا يغير عليهم 😅 وألف شكر للموظفة شيماء على ذوقها وتعاملها الراقي تعبتها معايا في حساب الاغراض وكانت مرا متعاونه وخلوقة جداً", date: "منذ 5 أشهر", avatar: "https://ui-avatars.com/api/?name=عفاف+أحمد&background=a68a6e&color=fff&size=80" },
{ name: "Rq", rating: 5, text: "المحل جدا جميل واسعاره حلوه", date: "منذ 9 أشهر", avatar: "https://ui-avatars.com/api/?name=Rq&background=9c8268&color=fff&size=80" },
{ name: "nona ha", rating: 5, text: "يعطيكم العافيه على التعامل الراقي واخص بالشكر لشيماء", date: "منذ شهر", avatar: "https://ui-avatars.com/api/?name=Nona+Ha&background=cab09b&color=fff&size=80" },
{ name: "ابو فاطمة فطووم", rating: 5, text: "ريهام وشيماء وعمرررررران صراحة تعامل طيب وذوق وفنانين", date: "منذ شهر", avatar: "https://ui-avatars.com/api/?name=ابو+فاطمة&background=b89a80&color=fff&size=80" },
{ name: "ضحى", rating: 5, text: "اشكر الموظفه دعا على الاخلاق الحلوة", date: "منذ شهرين", avatar: "https://ui-avatars.com/api/?name=ضحى&background=a68a6e&color=fff&size=80" },
{ name: "Asma Alkere", rating: 5, text: "منسقة دعاء رائعة قمة الاخلاق والابدااع محظوظين فيها صراحة", date: "منذ 3 أشهر", avatar: "https://ui-avatars.com/api/?name=Asma+Alkere&background=9c8268&color=fff&size=80" },
{ name: "Alotibi Abdullah", rating: 5, text: "بضاعه مميزه وجوده عاليه وأسعار تنافسيه", date: "منذ 4 أشهر", avatar: "https://ui-avatars.com/api/?name=Alotibi+Abdullah&background=cab09b&color=fff&size=80" }
];
const businessInfo = {
name: "Homemark",
rating: 5,
totalReviews: reviews.length,
avatar: "https://cdn.files.salla.network/theme/157889033/152f52c8-5ab3-4293-9ab5-1f26f5f9a7b3_260x260.png",
reviewUrl: "https://maps.app.goo.gl/KcPXtcpByLtbRcYE7"
};
function loadSwiperAssets() {
return new Promise((resolve) => {
try {
if (!document.querySelector('link[href*="swiper"]')) {
const link = document.createElement('link');
link.rel = 'stylesheet';
link.href = 'https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css';
document.head.appendChild(link);
}
if (typeof Swiper === 'undefined') {
const script = document.createElement('script');
script.src = 'https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js';
script.onload = () => resolve();
script.onerror = () => { console.warn('Failed to load Swiper library'); resolve(); };
document.head.appendChild(script);
} else {
resolve();
}
} catch (error) {
console.warn('Swiper assets loading error:', error);
resolve();
}
});
}
function createStars(rating) {
let starsHTML = '';
for (let i = 1; i <= 5; i++) {
const starClass = i <= rating ? 'f' : 'e';
starsHTML += `
`;
}
return starsHTML;
}
function createReviewCard(review) {
const textLength = review.text.length;
const needsReadMore = textLength > 150;
const displayText = needsReadMore ? review.text.substring(0, 150) + '...' : review.text;
return `
${createStars(review.rating)}
${displayText}
${needsReadMore ? '
اقرأ المزيد
' : ''}
`;
}
window.toggleReviewText = function (element) {
try {
const textElement = element.previousElementSibling;
if (!textElement) return;
const fullText = textElement.getAttribute('data-full');
const isExpanded = textElement.classList.contains('expanded');
if (isExpanded) {
textElement.textContent = fullText.substring(0, 150) + '...';
textElement.classList.remove('expanded');
element.textContent = 'اقرأ المزيد';
} else {
textElement.textContent = fullText;
textElement.classList.add('expanded');
element.textContent = 'إخفاء';
}
} catch (error) {
console.warn('Toggle review text error:', error);
}
};
function addStyles() {
if (document.getElementById('homemark-reviews-styles')) return;
const style = document.createElement('style');
style.id = 'homemark-reviews-styles';
style.textContent = `
.ti-widget{padding:60px 20px;background:transparent;direction:rtl;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif}
.ti-widget-container{max-width:1400px;margin:0 auto}
.ti-footer{background:white;border-radius:12px;padding:30px;margin-bottom:30px;box-shadow:0 2px 8px rgba(202,176,155,0.25)}
.ti-profile-section{display:flex;align-items:center;flex-direction:column;text-align:center;gap:20px}
.ti-profile-img img{width:80px;height:80px;border-radius:50%;object-fit:cover;border:3px solid #cab09b}
.ti-profile-details{flex:1}
.ti-business-name{font-size:24px;font-weight:700;color:#a68a6e;margin-bottom:8px}
.ti-stars{display:flex;gap:2px;justify-content:center;margin-bottom:5px}
.ti-star{width:17px;height:17px}
.ti-rating-text{font-size:14px;color:#5f6368;margin-bottom:12px}
.ti-write-review-btn{display:inline-block;background:#cab09b;color:white;padding:10px 24px;border-radius:4px;text-decoration:none;font-size:14px;font-weight:500;transition:background 0.3s}
.ti-write-review-btn:hover{background:#a68a6e}
.ti-reviews-container{position:relative;padding-bottom:60px}
.reviewsSwiper{width:100%;padding:0 0 20px 0}
.swiper-slide{height:auto}
.ti-review-item{background:white;border-radius:12px;padding:20px;box-shadow:0 2px 8px rgba(202,176,155,0.2);transition:all 0.3s;cursor:pointer;height:100%;display:flex;flex-direction:column;border:2px solid transparent}
.ti-review-item:hover{transform:translateY(-4px);box-shadow:0 4px 16px rgba(202,176,155,0.35);border-color:#cab09b}
.ti-inner{display:flex;flex-direction:column;gap:12px;flex:1}
.ti-review-header{display:flex;align-items:flex-start;gap:12px;position:relative}
.ti-platform-icon{position:absolute;top:0;left:0}
.ti-platform-icon img{width:20px;height:20px}
.ti-review-header .ti-profile-img{margin-right:25px}
.ti-review-header .ti-profile-img img{width:40px;height:40px;border-radius:50%;object-fit:cover}
.ti-review-header .ti-profile-details{flex:1}
.ti-name{font-size:14px;font-weight:500;color:#202124;margin-bottom:4px}
.ti-date{font-size:12px;color:#5f6368}
.ti-review-text{font-size:14px;line-height:1.6;color:#3c4043;max-height:120px;overflow:hidden;transition:max-height 0.3s}
.ti-review-text.expanded{max-height:none}
.ti-read-more{color:#a68a6e;font-size:13px;cursor:pointer;font-weight:500;user-select:none;margin-top:auto}
.ti-read-more:hover{text-decoration:underline}
.swiper-button-next,.swiper-button-prev{background:white;width:45px;height:45px;border-radius:50%;box-shadow:0 2px 8px rgba(202,176,155,0.3);transition:all 0.3s}
.swiper-button-next:after,.swiper-button-prev:after{font-size:18px;font-weight:bold;color:#a68a6e}
.swiper-button-next:hover,.swiper-button-prev:hover{background:#cab09b;transform:scale(1.1)}
.swiper-button-next:hover:after,.swiper-button-prev:hover:after{color:white}
.swiper-rtl .swiper-button-prev{right:10px;left:auto}
.swiper-rtl .swiper-button-next{left:10px;right:auto}
.swiper-pagination{bottom:0!important}
.swiper-pagination-bullet{width:10px;height:10px;background:#cab09b;opacity:0.3;transition:all 0.3s}
.swiper-pagination-bullet-active{background:#a68a6e;opacity:1;width:30px;border-radius:5px}
@media (max-width:768px){
.ti-widget{padding:40px 15px}
.ti-profile-section{flex-direction:column;text-align:center}
.swiper-button-next,.swiper-button-prev{width:35px;height:35px}
.swiper-button-next:after,.swiper-button-prev:after{font-size:14px}
}
`;
document.head.appendChild(style);
}
function createSection() {
const section = document.createElement('section');
section.className = 'ti-widget';
section.id = 'google-reviews-section';
section.innerHTML = `
`;
return section;
}
function initSwiper() {
try {
if (typeof Swiper === 'undefined') { console.warn('Swiper library not loaded'); return; }
new Swiper('.reviewsSwiper', {
slidesPerView: 1,
spaceBetween: 20,
breakpoints: {
480: { slidesPerView: 1, spaceBetween: 15 },
768: { slidesPerView: 2, spaceBetween: 20 },
1024: { slidesPerView: 3, spaceBetween: 20 },
1280: { slidesPerView: 4, spaceBetween: 20 }
},
navigation: { nextEl: '.swiper-button-next', prevEl: '.swiper-button-prev' },
pagination: { el: '.swiper-pagination', clickable: true, dynamicBullets: true },
autoplay: { delay: 5000, disableOnInteraction: false, pauseOnMouseEnter: true },
loop: true,
speed: 600,
grabCursor: true,
a11y: { enabled: true }
});
} catch (error) {
console.warn('Swiper initialization error:', error);
}
}
function insertSection() {
try {
if (document.getElementById('google-reviews-section')) return;
const section = createSection();
// TODO: عدّل السلكتور ده لو عايز السكشن يتحط بعد عنصر معيّن في هوم مارك
// مثال: const targetImageSrc = 'PART_OF_IMAGE_URL'; ثم دور جوه a.banner-entry زي الكود الأصلي
const fallback = document.querySelector('main') || document.querySelector('body.index');
if (fallback) fallback.appendChild(section);
} catch (error) {
console.warn('Section insertion error:', error);
}
}
function waitForTarget() {
return new Promise((resolve) => {
if (document.querySelector('main')) { resolve(); return; }
const observer = new MutationObserver(() => {
if (document.querySelector('main')) {
observer.disconnect();
resolve();
}
});
observer.observe(document.body, { childList: true, subtree: true });
setTimeout(() => { observer.disconnect(); resolve(); }, 10000);
});
}
async function init() {
try {
await loadSwiperAssets();
addStyles();
await waitForTarget();
insertSection();
setTimeout(initSwiper, 200);
} catch (error) {
console.warn('Google Reviews init error:', error);
}
}
const runWhenIdle = () => {
if ('requestIdleCallback' in window) {
requestIdleCallback(init);
} else {
setTimeout(init, 1000);
}
};
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', runWhenIdle);
} else {
runWhenIdle();
}
})();
(function () {
function changeGiftTitle() {
const title = document.querySelector(".s-list-tile-item-title h3");
if (title && title.textContent.trim() !== "أرسل كهدية") {
title.textContent = "أرسل كهدية";
}
}
changeGiftTitle();
let timer;
const observer = new MutationObserver(function () {
clearTimeout(timer);
timer = setTimeout(changeGiftTitle, 100);
});
observer.observe(document.body, {
childList: true,
subtree: true
});
})();