לוחיות תצוגה

לוחיות תצוגה

לוחיות תצוגה
לוחיות תצוגהלוחיות תצוגה 2לוחיות תצוגה 3
לוחיות קשיחה שניתן להכניס למסגרת רישוי עם הדפסה יעודית או לוגו של העסק

מחיר משלוח: חינם!


לוחיות קשיחה שניתן להכניס למסגרת רישוי עם הדפסה יעודית או לוגו של העסק
נבנה ע"י פתרונות איכות
0
דף הבית טלפון פייסבוק
המוצר התווסף לסל בהצלחה!
המשך בקניות עבור לקופה
(function () { 'use strict'; /* ── הגדרות – ערוך כאן לפי הצורך ──────────────────────────────────────── */ var CFG = { havdalahMin: 50, // דקות לאחר שקיעה להבדלה (42 / 50 / 72) bgColor: '#0d1b2a', // צבע רקע של המסך accentColor:'#d4a017', // צבע זהב: שעון, כותרת title: 'האתר סגור בשבת ובחגים', subtitle: 'אנו שומרים שבת וחגים.\nהאתר יחזור לפעילות בעוד:', footer: 'שבת שלום ♦ חג שמח', lbl_h: 'שעות', lbl_m: 'דקות', lbl_s: 'שניות', }; /* ──────────────────────────────────────────────────────────────────────── */ /** fetch עם timeout קשיח (ms) – fetch שנתקע לא יתלה את הסקריפט */ function fetchT(url, ms) { var ctrl = new AbortController(); var timer = setTimeout(function () { ctrl.abort(); }, ms); return fetch(url, { signal: ctrl.signal }).then( function (r) { clearTimeout(timer); return r; }, function (e) { clearTimeout(timer); throw e; } ); } /** * קבע את קואורדינטות הגולש וה-timezone שלו. * סדר עדיפויות: IP Geolocation (שקט) ← Geolocation API (מבקש רשות) ← ירושלים. */ function resolveLocation() { // 1. IP Geolocation – אין צורך ברשות המשתמש return fetchT('https://ipapi.co/json/', 6000) .then(function (r) { return r.json(); }) .then(function (d) { if (d && d.latitude && d.longitude && d.timezone) return { lat: d.latitude, lon: d.longitude, tz: d.timezone }; throw new Error('incomplete'); }) .catch(function () { // 2. Browser Geolocation (מציג בקשת הרשאה) return new Promise(function (resolve, reject) { if (!navigator.geolocation) return reject(new Error('no-geo')); navigator.geolocation.getCurrentPosition( function (p) { resolve({ lat: p.coords.latitude, lon: p.coords.longitude, tz: Intl.DateTimeFormat().resolvedOptions().timeZone, }); }, reject, { timeout: 5000, maximumAge: 3600000 } ); }); }) .catch(function () { // 3. ברירת מחדל: ירושלים return { lat: 31.7683, lon: 35.2137, tz: 'Asia/Jerusalem' }; }); } /** בנה URL ל-Hebcal Shabbat API, אופציונלית עם תאריך ספציפי */ function shabbatUrl(lat, lon, tz, date) { var url = 'https://www.hebcal.com/shabbat?cfg=json' + '&latitude=' + lat + '&longitude=' + lon + '&tzid=' + encodeURIComponent(tz) + '&m=' + CFG.havdalahMin + '&b=18'; if (date) { url += '&gy=' + date.getFullYear() + '&gm=' + (date.getMonth() + 1) + '&gd=' + date.getDate(); } return url; } /** * סרוק רשימת אירועים ומצא אם "עכשיו" נמצא בין הדלקת נרות להבדלה. * מחזיר את ה-Date של ההבדלה, או null אם לא. */ function findActivePeriod(items, now) { items = items.slice().sort(function (a, b) { return new Date(a.date) - new Date(b.date); }); for (var i = 0; i < items.length; i++) { if (items[i].category !== 'candles') continue; for (var j = i + 1; j < items.length; j++) { if (items[j].category !== 'havdalah') continue; var s = new Date(items[i].date).getTime(); var e = new Date(items[j].date).getTime(); if (now >= s && now <= e) return new Date(e); break; } } return null; } /** * שלח שתי שאילתות ל-Hebcal: השבוע הנוכחי + השבוע הקודם. * כך נתפסים גם חגים רב-יומיים שהתחילו לפני השבוע הנוכחי (למשל ראש השנה יום ב׳). */ function getActiveHavdalah(lat, lon, tz) { var now = Date.now(); var prevWeek = new Date(now - 7 * 86400000); var reqs = [ fetchT(shabbatUrl(lat, lon, tz, null), 9000) .then(function (r) { return r.json(); }).catch(function () { return null; }), fetchT(shabbatUrl(lat, lon, tz, prevWeek), 9000) .then(function (r) { return r.json(); }).catch(function () { return null; }), ]; return Promise.all(reqs).then(function (results) { var seen = Object.create(null); var items = []; results.forEach(function (data) { if (!data || !data.items) return; data.items.forEach(function (item) { var key = item.date + '|' + item.category; if (!seen[key]) { seen[key] = true; items.push(item); } }); }); return findActivePeriod(items, now); }); } /** הצג את מסך "האתר סגור" עם טיימר ספירה לאחור */ function showOverlay(havdalah) { var savedOverflow = document.body.style.overflow; document.body.style.overflow = 'hidden'; var host = document.createElement('div'); host.id = 'shb-guard'; var css = [ '@keyframes shb-in{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}', '#shb-guard{', 'position:fixed;inset:0;', 'background:' + CFG.bgColor + ';', 'color:#fff;z-index:2147483647;', 'display:flex;align-items:center;justify-content:center;', 'font-family:"Heebo","Arial Hebrew",Arial,sans-serif;', 'direction:rtl;text-align:center;', 'padding:20px;box-sizing:border-box;', 'animation:shb-in .45s ease;', '}', '#shb-guard *{box-sizing:border-box;margin:0;padding:0;}', '#shb-inner{max-width:580px;width:100%;}', /* אייקון */ '#shb-icon{font-size:72px;line-height:1;margin-bottom:16px;}', /* כותרת */ '#shb-title{', 'font-size:clamp(1.35rem,4.5vw,2.2rem);', 'font-weight:800;', 'color:' + CFG.accentColor + ';', 'margin-bottom:12px;line-height:1.3;', '}', /* תת-כותרת */ '#shb-sub{', 'font-size:clamp(.88rem,2.5vw,1.05rem);', 'color:#aaa;margin-bottom:32px;', 'line-height:1.6;white-space:pre-line;', '}', /* שעון */ '#shb-clock{', 'display:flex;justify-content:center;align-items:flex-start;', 'gap:8px;margin-bottom:32px;direction:ltr;', '}', '.shb-u{display:flex;flex-direction:column;align-items:center;min-width:70px;}', '.shb-d{', 'font-size:clamp(2.6rem,11vw,4.5rem);', 'font-weight:800;', 'color:' + CFG.accentColor + ';', 'line-height:1;', 'font-variant-numeric:tabular-nums;', 'letter-spacing:1px;', '}', '.shb-l{', 'font-size:.65rem;color:#555;', 'text-transform:uppercase;letter-spacing:1.5px;', 'margin-top:6px;', '}', '.shb-sep{', 'font-size:clamp(2.6rem,11vw,4.5rem);', 'font-weight:800;color:' + CFG.accentColor + ';', 'line-height:1;padding-bottom:.1em;', 'align-self:flex-start;', 'animation:shb-blink 1s step-start infinite;', '}', '@keyframes shb-blink{0%,100%{opacity:1}50%{opacity:.3}}', /* סרגל כינוי */ '#shb-bar{', 'width:100%;height:3px;border-radius:2px;', 'background:rgba(255,255,255,.07);', 'margin-bottom:26px;overflow:hidden;', '}', '#shb-bar-fill{', 'height:100%;border-radius:2px;', 'background:' + CFG.accentColor + ';', 'transition:width .9s linear;', '}', /* כותרת תחתונה */ '#shb-footer{font-size:.8rem;color:#3a3a3a;letter-spacing:1.5px;}', ].join(''); host.innerHTML = '' + '
' + '
🕍
' + '

' + CFG.title + '

' + '

' + CFG.subtitle + '

' + '
' + '
00' + CFG.lbl_h + '
' + ':' + '
00' + CFG.lbl_m + '
' + ':' + '
00' + CFG.lbl_s + '
' + '
' + '
' + '' + '
'; document.body.appendChild(host); var hEl = document.getElementById('shb-h'); var mEl = document.getElementById('shb-m'); var sEl = document.getElementById('shb-s'); var barEl = document.getElementById('shb-bar-fill'); var endMs = havdalah.getTime(); function pad(n) { return n < 10 ? '0' + n : '' + n; } /* חשב כמה זמן כולל עבר כדי לעדכן את סרגל ההתקדמות */ var totalMs = endMs - Date.now(); (function tick() { var diff = endMs - Date.now(); if (diff <= 0) { host.remove(); document.body.style.overflow = savedOverflow; return; } hEl.textContent = pad(Math.floor(diff / 3600000)); mEl.textContent = pad(Math.floor((diff % 3600000) / 60000)); sEl.textContent = pad(Math.floor((diff % 60000) / 1000)); /* סרגל ספירה: מתמלא ככל שמתקרבים לסוף השבת */ var pct = Math.round(100 - (diff / totalMs) * 100); barEl.style.width = Math.min(pct, 100) + '%'; setTimeout(tick, 1000); }()); } /* ── נקודת כניסה ──────────────────────────────────────────────────────── */ /** * TEST MODE – הוסף ?shabbat_test=1 לכתובת האתר כדי לאלץ הצגת המסך. * שלח את הקישור לעצמך לפני שבת כדי לוודא שהכל עובד. * לדוגמה: https://mysite.co.il/?shabbat_test=1 * ⚠ אל תשתף את הקישור הזה עם גולשים רגילים. */ if (window.location.search.indexOf('shabbat_test=1') !== -1) { var testHavdalah = new Date(Date.now() + 2 * 3600000); // 2 שעות מעכשיו if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function () { showOverlay(testHavdalah); }); } else { showOverlay(testHavdalah); } return; // דלג על הבדיקה האמיתית } resolveLocation() .then(function (loc) { return getActiveHavdalah(loc.lat, loc.lon, loc.tz); }) .then(function (havdalah) { if (!havdalah) return; // לא שבת/חג – לא עושים כלום if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function () { showOverlay(havdalah); }); } else { showOverlay(havdalah); } }) .catch(function () { /* בולע שגיאות בשקט – לעולם לא לגרום לקריסת האתר */ }); }());