/* ════════════════════════════════════════════════════════════ أكواد رقمي شوب المخصصة — الملف الموحد 1) نموذج صفحة «برمجة حسب الطلب» 2) نافذة المقترحات (تفتح من البانر) 3) تنبيه تسجيل الدخول لغير المسجل بعد الإضافة للسلة 4) رقيم — المرشد الخبير (يحل محل ودجت واتساب القديم) ملاحظة: ودجت «كيف نقدر نخدمك؟» القديم أزيل — رقيم يقوم بوظائفه كلها. ════════════════════════════════════════════════════════════ */ /* نموذج «برمجة حسب الطلب» — يلصق في تطبيق الأكواد المخصصة (JavaScript). يبني حقول النموذج داخل صفحة الخدمة ويشغل زر الإرسال لواتساب. لا يعمل إلا في الصفحة التي تحوي العنصر rq-slot ولا يمس غيرها. */ (function () { function init() { var slot = document.getElementById('rq-slot'); if (!slot) return; slot.style.textAlign = 'right'; slot.innerHTML = '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '
اكتب وصف المهمة أولًا حتى نقدر نفيدك
' + '

أو راسلنا مباشرة: 966597093033+

'; } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); } document.addEventListener('click', function (ev) { var b = ev.target.closest && ev.target.closest('#rq-send'); if (!b) return; var v = function (id) { var el = document.getElementById(id); return el ? (el.value || '').trim() : ''; }; if (!v('rq-desc')) { var h = document.getElementById('rq-hint'); if (h) h.style.display = 'block'; var d = document.getElementById('rq-desc'); if (d) d.focus(); return; } var m = '*طلب برمجة حسب الطلب*' + '\n━━━━━━━━━━━━━━' + '\n◆ *الاسم:* ' + (v('rq-name') || 'لم يذكر') + '\n\n◆ *المهمة المطلوبة:*\n' + v('rq-desc') + '\n\n◆ *المدخلات:* ' + (v('rq-in') || 'لم تذكر') + '\n◆ *المخرجات:* ' + (v('rq-out') || 'لم تذكر') + '\n◆ *حفظ السجلات:* ' + v('rq-save') + '\n◆ *الميزانية:* ' + v('rq-budget') + '\n◆ *موعد التسليم:* ' + (v('rq-when') || 'مرن') + '\n━━━━━━━━━━━━━━'; window.open('https://wa.me/966597093033?text=' + encodeURIComponent(m), '_blank'); }); })(); // نافذة المقترحات المستقلة — تفتح من بانر المقترحات وترسل لنفس جدول Google Sheets (function () { var ENDPOINT = "https://script.google.com/macros/s/AKfycbzG8UtGilLI9v2963p0TsqGuSJfpqggG5NqXVQ2UVJ_L_yueEpCvdhdLlnanFuJJ_5NWA/exec"; var built = false; function buildModal() { if (built) return; built = true; var css = "" + "#rqb-overlay{position:fixed;inset:0;background:rgba(10,20,28,.62);z-index:99998;display:none;opacity:0;transition:opacity .25s}" + "#rqb-overlay.rqb-show{display:block;opacity:1}" + "#rqb-modal{position:fixed;left:50%;top:50%;transform:translate(-50%,-46%);width:min(430px,92vw);background:#fff;border-radius:22px;box-shadow:0 24px 70px rgba(0,0,0,.3);z-index:99999;display:none;opacity:0;transition:opacity .25s,transform .25s;direction:rtl;font-family:inherit;padding:26px 22px 22px}" + "#rqb-modal.rqb-show{display:block;opacity:1;transform:translate(-50%,-50%)}" + "#rqb-close{position:absolute;top:12px;right:14px;border:0;background:transparent;font-size:26px;line-height:1;color:#8a94a0;cursor:pointer}" + ".rqb-title{font-size:21px;font-weight:800;color:#1c2430;text-align:center;margin:2px 0 8px}" + ".rqb-desc{font-size:14px;color:#68727e;text-align:center;margin:0 0 14px;line-height:1.7}" + "#rqb-text{width:100%;box-sizing:border-box;min-height:110px;border:1.5px solid #2ecc71;border-radius:14px;padding:12px 14px;font-size:15px;font-family:inherit;resize:vertical;outline:none;color:#1c2430;background:#fff}" + "#rqb-text:focus{box-shadow:0 0 0 3px rgba(46,204,113,.18)}" + "#rqb-phone{width:100%;box-sizing:border-box;border:1.5px solid #dde3ea;border-radius:14px;padding:12px 14px;font-size:15px;font-family:inherit;margin-top:10px;outline:none;color:#1c2430;background:#fff}" + "#rqb-send{width:100%;border:0;border-radius:14px;background:#25b066;color:#fff;font-size:17px;font-weight:800;font-family:inherit;padding:14px;margin-top:12px;cursor:pointer}" + "#rqb-send:disabled{opacity:.6;cursor:default}" + "#rqb-status{font-size:13.5px;text-align:center;margin-top:10px;min-height:18px;color:#c0392b}" + "#rqb-status.rqb-ok{color:#1e8e50}" + ".rqb-done{text-align:center;padding:22px 6px}" + ".rqb-done-icon{width:64px;height:64px;border-radius:50%;background:#e6f7ee;color:#25b066;font-size:34px;line-height:64px;margin:0 auto 12px}"; var st = document.createElement("style"); st.textContent = css; document.head.appendChild(st); var ov = document.createElement("div"); ov.id = "rqb-overlay"; document.body.appendChild(ov); var m = document.createElement("div"); m.id = "rqb-modal"; m.innerHTML = "" + '' + '
وش المنتج اللي تبحث عنه؟
' + '
اكتب لنا المنتج أو الأداة اللي كنت تبحث عنها وما حصلتها في المتجر.
' + '' + '' + '' + '
'; document.body.appendChild(m); ov.addEventListener("click", closeModal); document.getElementById("rqb-close").addEventListener("click", closeModal); document.getElementById("rqb-send").addEventListener("click", send); document.addEventListener("keydown", function (e) { if (e.key === "Escape") closeModal(); }); } function openModal() { buildModal(); document.getElementById("rqb-overlay").classList.add("rqb-show"); document.getElementById("rqb-modal").classList.add("rqb-show"); setTimeout(function () { var t = document.getElementById("rqb-text"); if (t) t.focus(); }, 200); } function closeModal() { var ov = document.getElementById("rqb-overlay"); var m = document.getElementById("rqb-modal"); if (ov) ov.classList.remove("rqb-show"); if (m) m.classList.remove("rqb-show"); } function send() { var text = document.getElementById("rqb-text").value.trim(); var phone = document.getElementById("rqb-phone").value.trim(); var btn = document.getElementById("rqb-send"); var status = document.getElementById("rqb-status"); if (!text) { status.className = ""; status.textContent = "اكتب المنتج اللي تبحث عنه أولًا."; document.getElementById("rqb-text").focus(); return; } btn.disabled = true; btn.textContent = "جاري الإرسال..."; status.textContent = ""; fetch(ENDPOINT, { method: "POST", mode: "no-cors", headers: { "Content-Type": "text/plain;charset=UTF-8" }, body: JSON.stringify({ action: "request", request: text, whatsapp: phone, page_title: document.title, page_url: location.href, device: /Mobi|Android/i.test(navigator.userAgent) ? "جوال" : "كمبيوتر", source: "رقمي شوب - بانر المقترحات" }) }).then(function () { var m = document.getElementById("rqb-modal"); m.innerHTML = "" + '' + '
' + '
وصلنا اقتراحك، شكرًا لك!
' + '
نراجع كل المقترحات، وإن كانت فكرتك تناسب المتجر فستجدها قريبًا.
'; document.getElementById("rqb-close").addEventListener("click", closeModal); setTimeout(closeModal, 3500); }).catch(function () { btn.disabled = false; btn.textContent = "إرسال الاقتراح"; status.className = ""; status.textContent = "تعذر الإرسال، حاول مرة أخرى."; }); } document.addEventListener("click", function (e) { var a = e.target && e.target.closest ? e.target.closest('a[href*="rq-iqtirah"]') : null; if (!a) return; e.preventDefault(); e.stopPropagation(); openModal(); }, true); // الفتح عبر الرابط من صفحة أخرى: نمسح العلامة فورًا حتى لا تعيد التحديثات فتح النافذة if (window.location.hash === "#rq-iqtirah") { try { history.replaceState(null, "", window.location.pathname + window.location.search); } catch (e) {} setTimeout(openModal, 800); } })(); // تنبيه لطيف للزائر غير المسجل بعد إضافته للسلة: سجل دخولك لتحفظ سلتك (function () { var KEY = "rqb_login_nudge"; var SESSION_KEY = "rqb_login_nudge_s"; var MAX_SHOWS = 3; var built = false, timer = null; var T0 = Date.now(); function isGuest() { try { return salla.config.get("user.type") === "guest"; } catch (e) { return false; } } function loginUrl() { try { return salla.url.get("login"); } catch (e) { return "/login"; } } function shows() { try { return parseInt(localStorage.getItem(KEY) || "0", 10) || 0; } catch (e) { return 0; } } function canShow() { try { if (sessionStorage.getItem(SESSION_KEY)) return false; } catch (e) {} return shows() < MAX_SHOWS; } function markShown() { try { localStorage.setItem(KEY, String(shows() + 1)); } catch (e) {} try { sessionStorage.setItem(SESSION_KEY, "1"); } catch (e) {} } function buildToast() { if (built) return; built = true; var st = document.createElement("style"); st.textContent = "" + "#rqn-toast{position:fixed;left:50%;bottom:-220px;transform:translateX(-50%);width:min(420px,92vw);background:#fff;border-radius:18px;box-shadow:0 18px 50px rgba(0,0,0,.28);z-index:99990;direction:rtl;font-family:inherit;padding:18px 18px 16px;transition:bottom .45s cubic-bezier(.2,.8,.25,1)}" + "#rqn-toast.rqn-show{bottom:22px}" + "#rqn-close{position:absolute;top:8px;left:12px;border:0;background:transparent;font-size:22px;line-height:1;color:#98a2ae;cursor:pointer}" + ".rqn-title{font-size:16.5px;font-weight:800;color:#1c2430;margin:0 0 6px}" + ".rqn-body{font-size:13.5px;color:#68727e;line-height:1.7;margin:0 0 12px}" + ".rqn-row{display:flex;gap:8px}" + "#rqn-login{flex:1;border:0;border-radius:12px;background:#25b066;color:#fff;font-size:15px;font-weight:800;font-family:inherit;padding:11px;cursor:pointer;text-align:center;text-decoration:none;display:block}" + "#rqn-later{border:1.5px solid #dde3ea;border-radius:12px;background:#fff;color:#68727e;font-size:14px;font-family:inherit;padding:11px 16px;cursor:pointer}"; document.head.appendChild(st); var t = document.createElement("div"); t.id = "rqn-toast"; t.innerHTML = "" + '' + '
أضفته للسلة؟ خلها محفوظة لك
' + '
سلتك الآن غير محفوظة. بتسجيل الدخول تبقى سلتك على كل أجهزتك.
' + '
' + 'تسجيل الدخول' + '' + '
'; document.body.appendChild(t); document.getElementById("rqn-close").addEventListener("click", hideToast); document.getElementById("rqn-later").addEventListener("click", hideToast); } function showToast() { buildToast(); var t = document.getElementById("rqn-toast"); t.classList.add("rqn-show"); markShown(); setTimeout(hideToast, 14000); } function hideToast() { var t = document.getElementById("rqn-toast"); if (t) t.classList.remove("rqn-show"); } // هل نافذة «تمت الإضافة إلى سلة التسوق» ظاهرة الآن؟ function addedModalVisible() { try { return document.body.innerText.indexOf("تمت الإضافة إلى سلة التسوق") !== -1; } catch (e) { return false; } } function onCartActivity(payload) { // تجاهل نبضة تحميل الصفحة الأولى حتى لا يظهر التنبيه دون فعل من الزائر if (Date.now() - T0 < 4000) return; var count = null; try { count = payload && (payload.count != null ? payload.count : (payload.items ? payload.items.length : null)); } catch (e) {} if (count === 0) return; if (!isGuest() || !canShow()) return; clearInterval(timer); var started = Date.now(); timer = setInterval(function () { var waited = Date.now() - started; if (addedModalVisible() && waited < 12000) return; clearInterval(timer); setTimeout(function () { if (isGuest() && canShow()) showToast(); }, 900); }, 800); } function hook() { try { salla.event.on("cart::item-added", onCartActivity); } catch (e) {} try { salla.event.on("cart::updated", onCartActivity); } catch (e) {} } if (typeof salla !== "undefined" && salla.event) hook(); else document.addEventListener("salla::ready", hook); // الالتقاط الجذري: طلب الشبكة الذي تنفذه كل إضافة حقيقية للسلة var ADD_RE = /\/item\/\d+\/add|cart\/add/i; try { var ox = XMLHttpRequest.prototype.open; XMLHttpRequest.prototype.open = function (m, u) { try { if (String(m).toUpperCase() === "POST" && ADD_RE.test(String(u))) { this.addEventListener("load", function () { if (this.status >= 200 && this.status < 300) onCartActivity({ count: 1 }); }); } } catch (e) {} return ox.apply(this, arguments); }; } catch (e) {} try { var of = window.fetch; if (of) window.fetch = function (u, o) { var url = typeof u === "string" ? u : (u && u.url) || ""; var method = (o && o.method) || (u && u.method) || "GET"; var p = of.apply(this, arguments); try { if (String(method).toUpperCase() === "POST" && ADD_RE.test(url)) p.then(function (r) { if (r && r.ok) onCartActivity({ count: 1 }); }); } catch (e) {} return p; }; } catch (e) {} })(); /* ============================================================ رقيم — المرشد الخبير لرقمي شوب شخصية حية على كل الصفحات: يعرف كل منتج بمعلومته ونصيحته، ويجيب أسئلة الزائر السريعة (تجربة/تسليم/تفعيل/أسعار) بأزرار، يرمش وتتبع عيناه المؤشر، يحتفل عند الإضافة للسلة، ويعرض «نبرمجه لك خصيصًا» لمن لم يجد طلبه. التركيب في سلة: التصميم ← الكود المخصص ← JavaScript. ============================================================ */ (function () { "use strict"; if (window.__rqmRaqeem) return; window.__rqmRaqeem = true; /* ---------------- الإعدادات ---------------- */ var WA_NUMBER = "966597093033"; var WA_TEXT = "مرحبًا، أبحث عن برنامج غير موجود في المتجر وأود طلبه: "; var REQ_ENDPOINT = "https://script.google.com/macros/s/AKfycbzG8UtGilLI9v2963p0TsqGuSJfpqggG5NqXVQ2UVJ_L_yueEpCvdhdLlnanFuJJ_5NWA/exec"; var FREE_QR_URL = "https://raqmishop.com/%D9%85%D9%88%D9%84%D8%AF-%D8%B1%D9%85%D8%B2-qr/p425395513"; var SIDE = "left"; var FIRST_DELAY_MS = 6000; var COOLDOWN_MS = 40000; var IDLE_MS = 35000; var waLink = "https://wa.me/" + WA_NUMBER + "?text=" + encodeURIComponent(WA_TEXT); /* ---------------- قاعدة معرفة المنتجات ---------------- */ // المطابقة على رابط الصفحة أولًا (الروابط قياسية) والعنوان احتياطًا فقط — // العناوين التسويقية تحمل كلمات منتجات أخرى («أوراق تدريب الخط» أوقعتنا في // «أوراق العمل»). الشرطات تطبع مسافات فتعمل الأنماط على الرابط والعنوان معًا. var PRODUCTS = [ { re: /المفرغ الصوتي|transcriber/i, name: "المفرغ الصوتي العربي", one: "يحول تسجيلاتك ومحاضراتك إلى نص عربي — كل المعالجة على جهازك دون إنترنت.", tip: "للمحاضرات الطويلة استخدم «وضع المحاضرة»: يفرغ الكلام أولًا بأول أثناء التسجيل، وجرب نموذج «دقة عالية سريعة» فهو الموصى به." }, { re: /[أا]دوات pdf/i, name: "أدوات PDF العربية", one: "عشر أدوات في برنامج واحد: دمج وتقسيم وضغط وتحويل مع OCR عربي للملفات الممسوحة.", tip: "أقوى ما فيه أداة OCR: تحول الـPDF المصور إلى نص عربي قابل للنسخ والبحث." }, { re: /السيرة الذاتية/i, name: "مولد السيرة الذاتية العربية", one: "سير ذاتية احترافية ثنائية اللغة بمعاينة حية وقوالب متوافقة مع أنظمة التوظيف.", tip: "أنشئ نسختين عربية وإنجليزية من نفس البيانات — أنظمة التوظيف الخليجية تطلب الاثنتين غالبًا." }, { re: /ال[أا]رشيف العربي/i, name: "الأرشيف العربي الذكي", one: "أرشفة مستنداتك بفهرسة وبحث عربي فوري يفهم اللغة لا الحروف فقط.", tip: "البحث يتجاوز «ال» التعريف والتشكيل — اكتب «عقد» يجد «العقد» و«عَقد»." }, { re: /شهادات التقدير/i, name: "مولد شهادات التقدير", one: "شهادات تقدير بالجملة: الصق أسماء طلابك من إكسل واختر قالبًا واطبع الكل دفعة.", tip: "جهز عمود الأسماء في إكسل والصقه كما هو — كل سطر يصبح شهادة باسم صاحبها." }, { re: /الاختبارات و[أا]وراق|مولد الاختبارات/i, name: "مولد الاختبارات وأوراق العمل", one: "أوراق اختبارات منسقة بنماذج متعددة ومفاتيح تصحيح مطابقة.", tip: "فعل خلط الأسئلة لنموذجي أ وب — كل نموذج يخرج بمفتاح إجابته الصحيح تلقائيًا." }, { re: /الناسخ الفوري/i, name: "الناسخ الفوري", one: "اقتص أي نص يظهر على شاشتك — صورة أو فيديو أو برنامج — وينسخه لك نصًا عربيًا.", tip: "يسكن بجوار الساعة ويعمل بمفتاح اختصار — اقتصاص فنسخ في ثانيتين." }, { re: /ال[أا]سر المنتجة/i, name: "دفتر الأسر المنتجة", one: "طلباتك وأرباحك وفواتيرك في مكان واحد — مصمم لمشاريع المنزل.", tip: "سجل الطلب لحظة وصوله واطبع تقرير الربح الشهري بضغطة — ستعرف أي منتجاتك يربح فعلًا." }, { re: /محرر pdf/i, name: "محرر PDF العربي", one: "عبئ النماذج ووقّع واختم وظلل على أي PDF — دون تحويل ولا مواقع أجنبية.", tip: "ارسم توقيعك مرة واحدة واحفظه — يصبح ختمًا جاهزًا تضعه في كل ملفاتك." }, { re: /مستخرج الجداول|الجداول [إا]لى excel/i, name: "مستخرج الجداول إلى Excel", one: "يحول جداول الصور وPDF إلى ملفات إكسل حقيقية قابلة للتحرير.", tip: "كلما كانت حدود الجدول أوضح في الصورة كان الاستخراج أدق — صور المستند عموديًا وبإضاءة جيدة." }, { re: /منشورات المتجر/i, name: "مصمم منشورات المتجر", one: "منشورات مبيعات جاهزة للنشر بقوالب وألوان متعددة — اكتب العرض واختر الشكل.", tip: "النسخة الكاملة تولد المنشورات بالجملة من ملف إكسل — حملة كاملة في دقائق." }, { re: /دفتر المواعيد/i, name: "دفتر المواعيد", one: "مواعيد عيادتك أو صالونك بشبكة يومية وباقات وتذكير واتساب وتقارير.", tip: "فعل الباقات: جلسات كل عميلة تخصم تلقائيًا ويظهر رصيدها المتبقي عند الحجز." }, { re: /كراس الخط/i, name: "كراس الخط", one: "كراسات تحسين خط بنقاط تتبع حقيقية لمسار القلم — أربعة خطوط وثلاثة أحجام.", tip: "لكل طالب كراسه باسمه دفعة واحدة، وابدأ المبتدئين بوضع «التأسيس» بمسطرة السطرين." }, { re: /حافظ الملفات/i, name: "حافظ الملفات", one: "نسخ احتياطي تزايدي لملفاتك المهمة لا يحذف شيئًا أبدًا، مع جدولة تلقائية.", tip: "دعه يكتشف مجلدات بياناتك المهمة تلقائيًا — يعرف أماكن حفظ برامجك الشائعة." }, { re: /منظم الملفات/i, name: "منظم الملفات", one: "يرتب مجلداتك الفوضوية بقواعد عربية مع معاينة قبل التنفيذ وتراجع كامل.", tip: "ابدأ بمجلد التنزيلات — الأكثر فوضى دائمًا — ثم فعل «الحارس التلقائي» ليبقى مرتبًا." }, { re: /الموقع الدفعي/i, name: "الموقع الدفعي", one: "توقيعك وختمك وتاريخ اليوم على كل صفحات PDF دفعة واحدة.", tip: "مثالي للعقود والمعاملات الطويلة — وقّع ملف خمسين صفحة في ثوانٍ." }, { re: /منظف المساحة/i, name: "منظف المساحة", one: "خريطة تفاعلية تريك أين ذهبت مساحة قرصك، وتنظيف آمن كل ما فيه يمر بحجر قابل للاسترداد.", tip: "لا تخف من التنظيف: لا حذف نهائيًا — كل شيء يبقى في الحجر قابلًا للاسترداد بضغطة." }, // أنواع عامة — تُفحص أخيرًا بعد المنتجات المحددة { re: /قالب excel|قوالب excel/i, name: "قالب Excel جاهز", file: true, one: "ملف إكسل مصمم وجاهز للاستخدام — تحمله فور إتمام الطلب ويعمل على أوفيس عندك.", tip: "احفظ نسخة أصلية من الملف قبل تعبئة بياناتك — لتعود إليها متى أردت البدء من جديد." }, { re: /جاهز للطباعة/i, name: "ملف جاهز للطباعة", file: true, one: "ملف PDF مصمم بعناية — تحمله فور إتمام الطلب وتطبعه مباشرة، لا برنامج ولا تثبيت.", tip: "اطبعه بورق 80 غرامًا فأعلى تخرج الألوان بأفضل شكل، ويمكنك الطباعة بعدد ما تحتاج." } ]; /* ---------------- إجابات الأسئلة السريعة ---------------- */ var QA = { trial: { label: "كيف أجرب مجانًا؟", html: "كل برامجنا لها نسخة تجريبية مجانية 👌
في صفحة أي منتج ستجد زر تحميل النسخة التجريبية — جربها على جهازك براحتك، وإن أعجبك البرنامج اشترِ المفتاح وفعّله على نفس النسخة دون إعادة تنزيل." }, delivery: { label: "كيف يصلني البرنامج؟", html: "فور إتمام الطلب يصلك على بريدك مفتاح التفعيل مع رابط التحميل 📧
وإن تأخر تفقد مجلد الرسائل غير المرغوبة، أو راسلنا واتساب ونرسله فورًا." }, activate: { label: "طريقة التفعيل", html: "ثلاث خطوات ⚡
1) افتح البرنامج واذهب إلى الإعدادات ← الترخيص
2) الصق المفتاح
3) اضغط «تفعيل» — ويعمل فورًا دون إنترنت ولا يرتبط بجهاز محدد." }, prices: { label: "الأسعار والمدد", html: "لكل برنامج خيارات مدة: 6 أشهر / سنة / سنتان — والسنة هي الأنسب سعرًا لأغلب عملائنا.
وقاعدتنا الثابتة: لا تجديد تلقائي أبدًا — تدفع مرة وتنتهي القصة." }, privacy: { label: "هل ملفاتي آمنة؟", html: "هذا تخصصنا 🔒
كل برامجنا تعمل على جهازك بالكامل: ملفاتك وتسجيلاتك ونصوصك لا تُرفع إلى أي خادم — يشتغل أغلبها حتى دون إنترنت." }, custom: { label: "أبحث عن برنامج غير موجود", html: "هذا تخصصنا 😊 نبني البرامج حسب الطلب ونبرمجه لك خصيصًا.
اكتب ما تحتاجه هنا ويصل طلبك لفريقنا فورًا:", form: true, wa: true, waLabel: "أو راسلنا واتساب مباشرة" }, deliveryFile: { label: "كيف يصلني الملف؟", html: "فور إتمام الطلب يصلك رابط تحميل الملف مباشرة 📥
وتجده أيضًا في حسابك بالمتجر متى أردت إعادة تنزيله." } }; var MAIN_CHIPS = ["trial", "delivery", "activate", "prices", "privacy", "custom"]; var FILE_CHIPS = ["deliveryFile", "privacy", "custom"]; /* ---------------- التخزين ---------------- */ function lsGet(k) { try { return localStorage.getItem(k); } catch (e) { return null; } } function lsSet(k, v) { try { localStorage.setItem(k, v); } catch (e) {} } function ssGet(k) { try { return sessionStorage.getItem(k); } catch (e) { return null; } } function ssSet(k, v) { try { sessionStorage.setItem(k, v); } catch (e) {} } var returning = lsGet("rqmraqeem_visited") === "1"; lsSet("rqmraqeem_visited", "1"); /* ---------------- تعرف الصفحة والمنتج ---------------- */ function decodedPath() { try { return decodeURIComponent(location.pathname); } catch (e) { return location.pathname; } } function pageKind() { var p = location.pathname; if (/\/cart\b/.test(p)) return "cart"; var og = document.querySelector('meta[property="og:type"]'); if (og && /product/i.test(og.content || "")) return "product"; if (document.querySelector("salla-add-to-cart-button, form.product-form, [class*='product-single']")) return "product"; if (p === "/" || p === "" || /^\/(ar|en)\/?$/.test(p)) return "home"; return "browse"; } var kind = pageKind(); // تطبيع للمطابقة: الشرطات مسافات (روابط سلة تفصل بالشرطات والعناوين بالمسافات) function norm(s) { return String(s || "").replace(/[-_–—]/g, " ").toLowerCase(); } var hayPath = norm(decodedPath()); var hayTitle = norm(document.title); function currentProduct() { if (kind !== "product") return null; // الرابط أولًا — قياسي وموثوق؛ ثم العنوان احتياطًا للصفحات بروابط مختصرة for (var i = 0; i < PRODUCTS.length; i++) if (PRODUCTS[i].re.test(hayPath)) return PRODUCTS[i]; for (var j = 0; j < PRODUCTS.length; j++) if (PRODUCTS[j].re.test(hayTitle)) return PRODUCTS[j]; return null; } function isQrPage() { return kind === "product" && (/مولد رمز qr/.test(hayPath) || /مولد رمز qr/.test(hayTitle)); } var product = currentProduct(); function greeting() { var h = new Date().getHours(); return h >= 5 && h < 12 ? "صباح الخير" : "مساء الخير"; } /* ---------------- الأنماط ---------------- */ var alignItems = SIDE === "left" ? "flex-start" : "flex-end"; var closeSide = SIDE === "left" ? "right" : "left"; var css = "" // الحاوية LTR عمدًا: «بداية» المحاذاة تبقى حافة الشاشة فلا تقفز الشخصية عند اتساع البالون + "#rqm-raqeem{position:fixed;bottom:18px;" + SIDE + ":18px;z-index:99990;display:flex;flex-direction:column;align-items:" + alignItems + ";gap:10px;direction:ltr;font-family:inherit;-webkit-tap-highlight-color:transparent}" + "#rqm-raqeem *{box-sizing:border-box;margin:0;padding:0}" + "#rqm-rq-char{width:86px;height:100px;cursor:pointer;filter:drop-shadow(0 6px 18px rgba(58,200,176,.35));transform:translateY(150px);transition:transform .6s cubic-bezier(.34,1.56,.64,1);border:0;background:none;padding:0}" + "#rqm-raqeem.rqm-in #rqm-rq-char{transform:translateY(0)}" + ".rqm-body-bob{animation:rqmBob 3.4s ease-in-out infinite;transform-origin:50% 100%}" + "@keyframes rqmBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}" + ".rqm-arm-wave{transform-origin:74px 62px}" + "#rqm-raqeem.rqm-waving .rqm-arm-wave{animation:rqmWave 1.1s ease-in-out 3}" + "#rqm-rq-char:hover .rqm-arm-wave{animation:rqmWave 1.1s ease-in-out infinite}" + "@keyframes rqmWave{0%,100%{transform:rotate(0)}30%{transform:rotate(-26deg)}60%{transform:rotate(10deg)}}" + "#rqm-raqeem.rqm-cheer .rqm-arm-wave{animation:rqmCheerA .5s ease-in-out 4 alternate}" + "#rqm-raqeem.rqm-cheer .rqm-arm-side{animation:rqmCheerB .5s ease-in-out 4 alternate;transform-origin:26px 66px}" + "@keyframes rqmCheerA{0%{transform:rotate(0)}100%{transform:rotate(-38deg)}}" + "@keyframes rqmCheerB{0%{transform:rotate(0)}100%{transform:rotate(38deg)}}" + "#rqm-raqeem.rqm-cheer #rqm-rq-char{animation:rqmJump .5s ease-in-out 4 alternate}" + "@keyframes rqmJump{0%{transform:translateY(0)}100%{transform:translateY(-10px)}}" + ".rqm-antenna-dot{animation:rqmPulse 2.2s ease-in-out infinite}" + "@keyframes rqmPulse{0%,100%{opacity:1}50%{opacity:.35}}" + ".rqm-eyes{transition:transform .18s ease-out}" + ".rqm-blink{transform-origin:center;animation:rqmBlink .16s ease-in-out 1}" + "@keyframes rqmBlink{0%,100%{transform:scaleY(1)}50%{transform:scaleY(.08)}}" + ".rqm-face-happy,.rqm-face-think{display:none}" + "#rqm-raqeem.rqm-exp-happy .rqm-face-normal{display:none}" + "#rqm-raqeem.rqm-exp-happy .rqm-face-happy{display:inline}" + "#rqm-raqeem.rqm-exp-think .rqm-face-normal{display:none}" + "#rqm-raqeem.rqm-exp-think .rqm-face-think{display:inline}" + "#rqm-rq-bubble{position:relative;direction:rtl;text-align:right;max-width:320px;background:#23262e;color:#e9eaf0;border:1px solid #3c404e;border-radius:16px;border-bottom-" + SIDE + "-radius:4px;padding:14px 36px 14px 16px;line-height:1.9;font-size:13.5px;box-shadow:0 10px 30px rgba(0,0,0,.35);opacity:0;transform:translateY(14px) scale(.96);transition:opacity .35s ease,transform .35s cubic-bezier(.34,1.56,.64,1);pointer-events:none}" + "#rqm-raqeem.rqm-open #rqm-rq-bubble{opacity:1;transform:translateY(0) scale(1);pointer-events:auto}" + "#rqm-rq-bubble b{color:#3ac8b0;font-weight:700}" + "#rqm-rq-close{position:absolute;top:8px;" + closeSide + ":10px;border:0;background:none;color:#9aa0ae;font-size:15px;cursor:pointer;line-height:1;padding:4px}" + "#rqm-rq-close:hover{color:#e9eaf0}" + "#rqm-rq-wa{display:none;align-items:center;justify-content:center;gap:8px;margin-top:12px;background:#25d366;color:#0b2e1c;font-weight:700;font-size:13.5px;text-decoration:none;border-radius:12px;padding:10px 14px;transition:transform .15s ease,box-shadow .15s ease}" + "#rqm-raqeem.rqm-wa #rqm-rq-wa{display:flex}" + "#rqm-rq-wa:hover{transform:translateY(-1px);box-shadow:0 6px 16px rgba(37,211,102,.35);color:#0b2e1c;text-decoration:none}" + "#rqm-rq-link{display:none;align-items:center;justify-content:center;gap:8px;margin-top:12px;background:#3ac8b0;color:#0d1f23;font-weight:700;font-size:13.5px;text-decoration:none;border-radius:12px;padding:10px 14px;transition:transform .15s ease,box-shadow .15s ease}" + "#rqm-raqeem.rqm-link #rqm-rq-link{display:flex}" + "#rqm-rq-link:hover{transform:translateY(-1px);box-shadow:0 6px 16px rgba(58,200,176,.35);color:#0d1f23;text-decoration:none}" // أزرار الأسئلة السريعة + "#rqm-rq-chips{display:none;flex-wrap:wrap;gap:9px;margin-top:14px}" + "#rqm-raqeem.rqm-chips #rqm-rq-chips{display:flex}" + "#rqm-raqeem .rqm-chip{border:1px solid rgba(58,200,176,.55);background:rgba(58,200,176,.08);color:#8fe0d0;font-size:12px;line-height:1.8;border-radius:24px;padding:8px 17px;cursor:pointer;font-family:inherit;transition:background .15s ease}" + "#rqm-raqeem .rqm-chip:hover{background:rgba(58,200,176,.22);color:#c8f0e8}" + "#rqm-rq-form{display:none;margin-top:12px}" + "#rqm-raqeem.rqm-form #rqm-rq-form{display:block}" + "#rqm-rq-req{width:100%;min-height:74px;box-sizing:border-box;background:#1a1c22;border:1px solid #3c404e;border-radius:12px;color:#e9eaf0;font-family:inherit;font-size:13px;line-height:1.8;padding:10px 12px;resize:vertical;outline:none}" + "#rqm-rq-req:focus,#rqm-rq-phone:focus{border-color:#3ac8b0;box-shadow:0 0 0 3px rgba(58,200,176,.15)}" + "#rqm-rq-phone{width:100%;box-sizing:border-box;background:#1a1c22;border:1px solid #3c404e;border-radius:12px;color:#e9eaf0;font-family:inherit;font-size:13px;padding:10px 12px;margin-top:8px;outline:none;direction:ltr;text-align:right}" + "#rqm-rq-send{width:100%;border:0;border-radius:12px;background:#3ac8b0;color:#0d1f23;font-weight:700;font-size:13.5px;font-family:inherit;padding:11px;margin-top:10px;cursor:pointer;transition:transform .15s ease}" + "#rqm-rq-send:hover{transform:translateY(-1px)}" + "#rqm-rq-send:disabled{opacity:.6;cursor:default;transform:none}" + "#rqm-rq-formstatus{font-size:12px;margin-top:8px;min-height:16px;color:#e07a7a;text-align:center}" + "#rqm-raqeem.rqm-typing #rqm-rq-form{display:none}" + "#rqm-rq-typing{display:none;gap:5px;padding:2px 0}" + "#rqm-raqeem.rqm-typing #rqm-rq-typing{display:flex}" + "#rqm-raqeem.rqm-typing #rqm-rq-text,#rqm-raqeem.rqm-typing #rqm-rq-wa,#rqm-raqeem.rqm-typing #rqm-rq-link,#rqm-raqeem.rqm-typing #rqm-rq-chips{display:none}" + "#rqm-rq-typing span{width:8px;height:8px;border-radius:50%;background:#3ac8b0;animation:rqmDot 1s ease-in-out infinite}" + "#rqm-rq-typing span:nth-child(2){animation-delay:.15s}" + "#rqm-rq-typing span:nth-child(3){animation-delay:.3s}" + "@keyframes rqmDot{0%,100%{opacity:.25;transform:translateY(0)}50%{opacity:1;transform:translateY(-4px)}}" + "@media (max-width:480px){#rqm-rq-char{width:68px;height:80px}#rqm-rq-bubble{max-width:calc(100vw - 104px);font-size:12.5px}}" + "@media (prefers-reduced-motion:reduce){.rqm-body-bob,.rqm-antenna-dot{animation:none}}"; var style = document.createElement("style"); style.textContent = css; document.head.appendChild(style); /* ---------------- الشخصية (SVG) ---------------- */ var raqeemSvg = "" + ''; /* ---------------- البناء ---------------- */ var wrap = document.createElement("div"); wrap.id = "rqm-raqeem"; wrap.innerHTML = "" + '' + ''; document.body.appendChild(wrap); var charBtn = document.getElementById("rqm-rq-char"); var textEl = document.getElementById("rqm-rq-text"); var chipsEl = document.getElementById("rqm-rq-chips"); var eyesEl = document.getElementById("rqm-eyes"); /* ---------------- الحياة: رمش وتتبع العيون ---------------- */ (function blinkLoop() { setTimeout(function () { if (eyesEl) { eyesEl.classList.add("rqm-blink"); setTimeout(function () { eyesEl.classList.remove("rqm-blink"); }, 180); } blinkLoop(); }, 2800 + Math.random() * 3500); })(); var eyeRaf = false; document.addEventListener("mousemove", function (e) { if (eyeRaf || !eyesEl) return; eyeRaf = true; requestAnimationFrame(function () { eyeRaf = false; var r = charBtn.getBoundingClientRect(); var cx = r.left + r.width / 2, cy = r.top + r.height * 0.45; var dx = e.clientX - cx, dy = e.clientY - cy; var d = Math.max(1, Math.hypot(dx, dy)); eyesEl.style.transform = "translate(" + Math.max(-3.2, Math.min(3.2, dx / d * 3.2)).toFixed(1) + "px," + Math.max(-2.4, Math.min(2.4, dy / d * 2.4)).toFixed(1) + "px)"; }); }, { passive: true }); /* ---------------- التعابير ---------------- */ function setExpression(exp) { wrap.classList.remove("rqm-exp-happy", "rqm-exp-think"); if (exp === "happy") wrap.classList.add("rqm-exp-happy"); if (exp === "think") wrap.classList.add("rqm-exp-think"); } function wave() { wrap.classList.remove("rqm-waving"); void wrap.offsetWidth; wrap.classList.add("rqm-waving"); } function cheer() { wrap.classList.remove("rqm-cheer"); void wrap.offsetWidth; wrap.classList.add("rqm-cheer"); setTimeout(function () { wrap.classList.remove("rqm-cheer"); }, 2200); } /* ---------------- عرض الرسائل ---------------- */ var lastShown = 0; var expTimer = null; function buildChips(chipKeys) { chipsEl.innerHTML = ""; (chipKeys || []).forEach(function (item) { var chip = document.createElement("button"); chip.className = "rqm-chip"; chip.type = "button"; if (typeof item === "string") { chip.textContent = QA[item].label; chip.addEventListener("click", function () { answerChip(item); }); } else { chip.textContent = item.label; chip.addEventListener("click", item.onClick); } chipsEl.appendChild(chip); }); wrap.classList.toggle("rqm-chips", chipsEl.children.length > 0); } // opts: {exp, wa, waLabel, link:{href,label}, chips:[...], force} function say(key, html, opts) { opts = opts || {}; if (key && ssGet("rqmmsg_" + key)) return false; if (!opts.force && Date.now() - lastShown < COOLDOWN_MS) return false; if (key) ssSet("rqmmsg_" + key, "1"); lastShown = Date.now(); wrap.classList.add("rqm-open", "rqm-typing"); wrap.classList.toggle("rqm-wa", !!opts.wa); if (opts.waLabel) document.getElementById("rqm-rq-wa-label").textContent = opts.waLabel; wrap.classList.toggle("rqm-form", !!opts.form); var hasLink = !!(opts.link && opts.link.href); wrap.classList.toggle("rqm-link", hasLink); if (hasLink) { document.getElementById("rqm-rq-link").href = opts.link.href; document.getElementById("rqm-rq-link-label").textContent = opts.link.label || "افتح الصفحة"; } buildChips(opts.chips); setExpression("think"); clearTimeout(expTimer); setTimeout(function () { wrap.classList.remove("rqm-typing"); textEl.innerHTML = html; setExpression(opts.exp || ""); if (opts.exp === "happy") cheer(); else wave(); expTimer = setTimeout(function () { setExpression(""); }, 7000); }, 850 + Math.random() * 450); return true; } // إجابة سؤال سريع: تفاعل من الزائر — تتجاوز التهدئة، وتعرض «أسئلة أخرى» بعدها function answerChip(qaKey) { var qa = QA[qaKey]; var chips = MAIN_CHIPS.filter(function (k) { return k !== qaKey; }).slice(0, 4); say(null, qa.html, { force: true, wa: !!qa.wa, waLabel: qa.waLabel, form: !!qa.form, chips: qa.form ? [] : chips, exp: qaKey === "custom" ? "think" : "happy" }); } function productChips() { var base = product && product.file ? FILE_CHIPS : MAIN_CHIPS.slice(0, 3); var chips = []; if (product) { chips.push({ label: "💡 نصيحة خبير", onClick: function () { say(null, "نصيحة من رقيم:
" + product.tip, { force: true, exp: "happy", chips: base }); } }); } return chips.concat(base); } // إرسال طلب المنتج غير الموجود — نفس جدول Google Sheets ونفس الحقول document.getElementById("rqm-rq-send").addEventListener("click", function () { var reqEl = document.getElementById("rqm-rq-req"); var phoneEl = document.getElementById("rqm-rq-phone"); var btn = document.getElementById("rqm-rq-send"); var status = document.getElementById("rqm-rq-formstatus"); var text = reqEl.value.trim(); if (!text) { status.textContent = "اكتب ما تحتاجه أولًا"; reqEl.focus(); return; } btn.disabled = true; btn.textContent = "جارٍ الإرسال..."; status.textContent = ""; fetch(REQ_ENDPOINT, { method: "POST", mode: "no-cors", headers: { "Content-Type": "text/plain;charset=UTF-8" }, body: JSON.stringify({ action: "request", request: text, whatsapp: phoneEl.value.trim(), page_title: document.title, page_url: location.href, device: /Mobi|Android/i.test(navigator.userAgent) ? "جوال" : "كمبيوتر", source: "رقمي شوب - رقيم" }) }).then(function () { reqEl.value = ""; phoneEl.value = ""; btn.disabled = false; btn.textContent = "أرسل الطلب لفريقنا"; say(null, "وصلنا طلبك، شكرًا لك! 🎉
نراجع الطلبات أولًا بأول — وإن تركت رقمك فسنراسلك بما نصل إليه.", { force: true, exp: "happy", chips: ["trial", "prices"] }); }).catch(function () { btn.disabled = false; btn.textContent = "أرسل الطلب لفريقنا"; status.textContent = "تعذر الإرسال — حاول مرة أخرى أو راسلنا واتساب"; }); }); function closeBubble() { wrap.classList.remove("rqm-open"); } document.getElementById("rqm-rq-close").addEventListener("click", function (e) { e.stopPropagation(); closeBubble(); }); // النقر على رقيم يفتح قائمة المرشد دائمًا charBtn.addEventListener("click", function () { if (wrap.classList.contains("rqm-open")) { wrap.classList.remove("rqm-open"); return; } var intro = product ? "أهلًا! أنا رقيم 👋 تشاهد الآن " + product.name + ".
اسألني ما تشاء:" : "أهلًا! أنا رقيم، مرشدك في رقمي شوب 👋
اسألني ما تشاء:"; say(null, intro, { force: true, chips: product ? productChips() : MAIN_CHIPS }); }); /* ---------------- الرسائل التلقائية السياقية ---------------- */ // 1) الترحيب الأول حسب الصفحة setTimeout(function () { wrap.classList.add("rqm-in"); setTimeout(function () { if (kind === "cart") { say("cart", "خيار موفق! 🎉
بعد إتمام الطلب يصلك مفتاح التفعيل على بريدك، وطريقة التفعيل ثلاث خطوات فقط.", { exp: "happy", chips: ["activate", "delivery"] }); } else if (isQrPage()) { say("qrfree:" + hayPath, "بشارة: هذا البرنامج مجاني 100% 🎁
بلا حدود وبلا اشتراك — أتم «الشراء» بصفر ريال ويصلك رابط التحميل، وهديتنا لك لتجرب جودة برامجنا.", { exp: "happy", chips: ["delivery", "privacy"] }); } else if (product) { say("product:" + hayPath, "تشاهد " + product.name + " 👌
" + product.one, { chips: productChips() }); } else if (kind === "product") { say("product:" + hayPath, greeting() + " 👋
لهذا البرنامج نسخة تجريبية مجانية — جربها قبل الشراء. وإن احترت فأنا هنا.", { chips: MAIN_CHIPS.slice(0, 3) }); } else if (returning) { say("welcome_back", "أهلًا بعودتك! 😊
اسألني عن أي شيء، وإن لم تجد منتجًا تريده — نبرمجه لك خصيصًا.", { chips: MAIN_CHIPS }); } else { say("welcome", greeting() + " 👋 أنا رقيم، مرشدك في رقمي شوب.
كل برامجنا عربية وتعمل على جهازك ولها نسخ تجريبية مجانية. اسألني ما تشاء:", { chips: MAIN_CHIPS }); } }, FIRST_DELAY_MS); }, 400); // 1ب) اللمسة الثانية في التصفح: هدية مولد رمز QR if (kind === "home" || kind === "browse") { setTimeout(function () { say("gift_qr", "عندنا لك هدية 🎁
برنامج مولد رمز QR مجاني 100% — روابط وواتساب وواي فاي وبطاقات تعريف، بلا حدود وبلا اشتراك.", FREE_QR_URL ? { link: { href: FREE_QR_URL, label: "حمله مجانًا" }, exp: "happy" } : { exp: "happy" }); }, FIRST_DELAY_MS + COOLDOWN_MS + 15000); } // 2) احتفال الإضافة للسلة — التقاط النداء الشبكي الحقيقي var ADD_RE = /\/item\/\d+\/add|cart\/add/i; function onAdded() { setTimeout(function () { say("added", "أضفته إلى السلة! 🎉
أكمل الطلب ويصلك مفتاح التفعيل على بريدك.", { exp: "happy", force: true, chips: ["activate", "delivery"] }); }, 900); } (function hookNetwork() { var origOpen = XMLHttpRequest.prototype.open; XMLHttpRequest.prototype.open = function (m, u) { try { this.__rqmAdd = ADD_RE.test(String(u)); } catch (e) {} return origOpen.apply(this, arguments); }; var origSend = XMLHttpRequest.prototype.send; XMLHttpRequest.prototype.send = function () { if (this.__rqmAdd) { this.addEventListener("load", function () { if (this.status >= 200 && this.status < 300) onAdded(); }); } return origSend.apply(this, arguments); }; if (window.fetch) { var origFetch = window.fetch; window.fetch = function (input) { var url = typeof input === "string" ? input : (input && input.url) || ""; var p = origFetch.apply(this, arguments); if (ADD_RE.test(url)) { p.then(function (res) { if (res && res.ok) onAdded(); }).catch(function () {}); } return p; }; } })(); // 3) سكون طويل في صفحة منتج = زائر محتار (نصيحة المنتج نفسه إن عرفناه) if (kind === "product") { var idleTimer = null; function resetIdle() { clearTimeout(idleTimer); idleTimer = setTimeout(function () { if (product) say("idle:" + hayPath, "محتار؟ 🤔 خذ نصيحتي في " + product.name + ":
" + product.tip, { exp: "think", chips: MAIN_CHIPS.slice(0, 3), wa: true, waLabel: "اسألنا واتساب" }); else say("idle:" + hayPath, "محتار؟ 🤔
حمل النسخة التجريبية وجرب بنفسك، أو اسألنا مباشرة ونساعدك تختار.", { wa: true, waLabel: "اسألنا واتساب", exp: "think", chips: MAIN_CHIPS.slice(0, 3) }); }, IDLE_MS); } ["scroll", "mousemove", "keydown", "touchstart"].forEach(function (ev) { window.addEventListener(ev, resetIdle, { passive: true }); }); resetIdle(); } // 4) نهاية الصفحة في التصفح = لم يجد ما يريده if (kind === "home" || kind === "browse") { window.addEventListener("scroll", function () { if (window.innerHeight + window.scrollY >= document.documentElement.scrollHeight - 120) { say("bottom", "وصلت إلى النهاية ولم تجد ما تبحث عنه؟
اكتب لنا ما تحتاجه — نبرمجه لك خصيصًا.", { wa: true, chips: ["custom", "trial"] }); } }, { passive: true }); } // 5) نية المغادرة (سطح المكتب) document.addEventListener("mouseout", function (e) { if (e.relatedTarget || e.clientY > 24) return; say("exit", "لحظة قبل أن تذهب 🙏
إن لم تجد المنتج الذي تريده فهذا تخصصنا: اكتب لنا ونبرمجه لك خصيصًا.", { wa: true, chips: ["custom"] }); }); })();