(function () {
try {
// AQ-r2 (2026-06-09): respect the explicit-denial sentinel
// written by cookie-consent-harden.js writeATR() on any
// marketing-axis denial (payload.marketing === false; cycle-3 F1).
// Without this gate, the next page navigation re-creates
// gmx_first_touch from the current URL+referrer+utm_*+click_ids,
// silently undoing the reject-all deletion (sweep finding #1).
// The sentinel is cleared the moment the visitor grants
// marketing in the banner (analytics-only grant does NOT
// clear), restoring the writer path on the very next
// page load. Page-cache-safe: the sentinel is a
// browser-resident cookie checked in the inline script, so
// varnish/breeze-served HTML still hits this gate.
if (/(?:^|;\s*)gmx_consent_denied=1(?:;|$)/.test(document.cookie || '')) return;
var CLICK_IDS = ['gclid','fbclid','msclkid','ttclid','wbraid','gbraid','li_fat_id'];
var qs = new URLSearchParams(window.location.search);
var urlClickIdKey = null;
for (var i = 0; i < CLICK_IDS.length; i++) {
if (qs.get(CLICK_IDS[i])) { urlClickIdKey = CLICK_IDS[i]; break; }
}// Parse existing cookie.
var existing = null;
var match = document.cookie.match(/(?:^|;\s*)gmx_first_touch=([^;]+)/);
if (match) {
try { existing = JSON.parse(decodeURIComponent(match[1])); } catch (e) { existing = null; }
}// GWP-273 — referrer-enrichment branch.
// Keep existing unless either (a) URL carries a new click id
// the stored payload lacks (paid click is a higher-value
// signal and upgrades direct/organic), OR (b) the stored
// payload has empty referrer AND the current document.referrer
// is non-empty + external (Safari/ITP/policy-quirk catch:
// first-hit may have missed the referrer; later same-session
// page-loads can recover it).
var existingHasRef = !!(existing && existing.referrer && existing.referrer !== '');
var docRef = document.referrer || '';
var refHost = '';
if (docRef) {
try {
refHost = new URL(docRef).hostname.replace(/^www\./, '').toLowerCase();
} catch (e) { refHost = ''; }
}
var ownHost = (location.host || '').replace(/^www\./, '').toLowerCase();
var currentExternalRef = !!(refHost && refHost !== ownHost);
var canEnrichRef = !!existing && !existingHasRef && currentExternalRef;if (existing) {
if (!urlClickIdKey && !canEnrichRef) return;
if (urlClickIdKey && existing[urlClickIdKey] && !canEnrichRef) return;
}var utm_keys = [
'utm_source','utm_medium','utm_campaign','utm_content','utm_term',
'utm_adgroup','utm_matchtype','utm_network','utm_device','utm_placement'
];
// GWP-273 — merge-preserving base. When enriching an existing
// payload, retain its landing_url + ts + prior click ids /
// utms; only overlay referrer (and any click id appended below
// via the forEach). Branches with/without urlClickIdKey were
// collapsed — both produced the identical Object.assign — the
// click id is added uniformly later.
//
// GWP-273 design choice: "latest external referrer wins" —
// accepted edge case where a user opens a new external tab
// post-empty-first-touch and returns; low-volume, simple, no
// sentinel flag needed.
var data;
if (existing && canEnrichRef) {
data = Object.assign({}, existing, { referrer: docRef });
} else {
data = { landing_url: window.location.href, referrer: docRef, ts: Date.now() };
}
utm_keys.concat(CLICK_IDS).forEach(function (k) {
var v = qs.get(k);
if (v) data[k] = v;
});
var encoded = encodeURIComponent(JSON.stringify(data));
if (encoded.length > 3800) return;
var expires = new Date(Date.now() + 90 * 864e5).toUTCString(); // GWP-143 C1: match Google Ads 90-day attribution window
var secure = window.location.protocol === 'https:' ? '; Secure' : '';
document.cookie = 'gmx_first_touch=' + encoded + '; Path=/; Expires=' + expires + '; SameSite=Lax' + secure;
} catch (e) {}
})();
var breeze_prefetch = {"local_url":"https://gomixapp.co.il","ignore_remote_prefetch":"1","ignore_list":["/cart/","/checkout/","/my-account/","/(.)/u05d4u05d8u05d5u05e4u05e1-u05e0u05e9u05dcu05d7-u05d1u05d4u05e6u05dcu05d7u05d4/","wp-admin","wp-login.php"]};
//# sourceURL=breeze-prefetch-js-extra
מחפשים נוסח הודעה על תקלת מעלית? כאן תמצאו עדכון מוכן לדיירים על מעלית מושבתת — מתי אותרה התקלה, מי מטפל, מתי מגיע טכנאי ומה הצפי לחזרה לפעילות. מעתיקים בלחיצה, מדפיסים או מורידים כקובץ PDF או Word, ממלאים את תאריך התקלה — והודעה מרגיעה ומסודרת מוכנה לתלייה על דלת המעלית ובלוח תוך דקות.
מלאו את הפרטים — הנוסח יתעדכן אוטומטית:
עדכון לדיירים — תקלה במעלית
דיירים יקרים,
ביום [תאריך] אותרה תקלה במעלית הבניין ([סיבת התקלה]), והיא הושבתה באופן זמני למניעת סיכון.
מה נעשה עד כה:
– נפתחה קריאת שירות לחברת המעליות [שם החברה], מס' קריאה [מספר קריאה] — אין צורך בקריאות נוספות;
– טכנאי צפוי להגיע ביום [יום ותאריך] בין השעות [טווח שעות];
– להערכת החברה, המעלית תחזור לפעול עד [צפי חזרה לפעילות]. אם יידרש חלק חילוף — נעדכן מיד בלוח ובקבוצת הדיירים.
עד לתיקון נא להשתמש בחדר המדרגות. דיירים המתקשים בעלייה ברגל — קשישים, הורים עם עגלות — מוזמנים לפנות אלינו ונסייע ככל שנוכל.
אנו מצטערים על אי-הנוחות ועוקבים אחר הטיפול באופן צמוד.
ועד הבית — [שם איש קשר], טל' [טלפון]
איך מנסחים הודעה לדיירים על מעלית מקולקלת — ואיפה תולים אותה
בתקלת מעלית ההודעה צריכה להיתלות בשני מקומות בו-זמנית: על דלת המעלית בכל קומה (או לפחות בקומת הקרקע) ובלוח המודעות, ורצוי גם בקבוצת הוואטסאפ של הבניין. דייר שמגלה את התקלה רק כשהוא כבר עומד מול הדלת עם שקיות הקניות — מתעצבן פעמיים: פעם על המעלית ופעם על הוועד ששתק. הודעה מהירה, גם לפני שיש את כל התשובות, עדיפה על שתיקה.
ציינו תמיד את מספר קריאת השירות ואת שם חברת המעליות: זה משדר שהנושא בטיפול ומונע מצב שבו חמישה דיירים פותחים חמש קריאות כפולות לאותה תקלה. הוסיפו מתי צפוי טכנאי ומה הצפי לחזרה לפעילות — ועדכנו את ההודעה ברגע שלוח הזמנים משתנה. הודעה ישנה שתלויה שבוע בלי עדכון גרועה מאי-הודעה: היא מלמדת את הדיירים להפסיק לקרוא.
בדקו מה קובע חוזה השירות מול חברת המעליות: חוזה תקין כולל זמני תגובה מוגדרים לתקלה משביתה — בדרך כלל שעות ספורות עד יום עסקים להגעת טכנאי. אם התיקון מתעכב מעבר לכך, זו עילה לפנייה רשמית לחברה במסגרת החוזה, בכתב ועם ציון מספר הקריאה. המעלית היא רכוש משותף, ולכן עלות האחזקה והתיקונים ממומנת מקופת ועד הבית.
אל תשכחו את הדיירים שהמעלית היא בשבילם הרבה יותר מנוחות: קשישים, אנשים עם מוגבלות והורים עם עגלות. שורה אחת של הצעת עזרה — "מוזמנים לפנות אלינו ונסייע ככל שנוכל" — הופכת הודעה טכנית להודעה של קהילה, ובפועל זה בדיוק מה שזוכרים מהוועד אחרי שהתקלה נשכחת. בבניין עם דייר התלוי במעלית שקלו גם תיאום אישי מולו עד לתיקון.
שאלות נפוצות
כמה זמן אמור לקחת תיקון מעלית מושבתת?
תלוי בחוזה השירות: לתקלה משביתה מקובלים זמני תגובה של שעות ספורות עד יום עסקים להגעת טכנאי. אם נדרש חלק חילוף, התיקון עלול להתארך — ואז חשוב לעדכן את הדיירים בלוח זמנים חדש.
מה כותבים בהודעה לדיירים על מעלית מקולקלת?
מתי אותרה התקלה, שהמעלית הושבתה מטעמי בטיחות, מספר קריאת השירות ושם החברה, מועד הגעת הטכנאי וצפי לתיקון. סיימו בהצעת עזרה לדיירים שמתקשים במדרגות.
מי משלם על תיקון המעלית בבניין משותף?
המעלית היא רכוש משותף, ולכן התיקון ממומן מקופת ועד הבית — בדרך כלל דרך חוזה השירות השנתי מול חברת המעליות, שמכסה תקלות שוטפות. נזק חריג עשוי לחייב תשלום נפרד.
מה עושים אם מישהו נתקע בתוך המעלית?
מרגיעים, מוודאים שהוא לוחץ על לחצן החירום או מתקשר למוקד החברה (הטלפון מופיע בתוך התא), ונשארים בקשר קולי עד הגעת החילוץ. בשום מקרה אין לנסות לחלץ בכוח או לפתוח דלתות — חילוץ מבצעים רק טכנאי מוסמך או כוחות הצלה. לאחר האירוע פותחים קריאת שירות ומעדכנים את הדיירים.
מה עושים אם חברת המעליות לא מגיעה בזמן?
בודקים את זמני התגובה שנקבעו בחוזה השירות ופונים לחברה בכתב עם מספר הקריאה ומועד פתיחתה. עיכוב חוזר מעבר לחוזה הוא עילה לדרישה רשמית — ובהמשך גם שיקול להחלפת חברת השירות באסיפת הדיירים הקרובה.
נקודות מפתח
תולים את ההודעה על דלת המעלית בכל קומה וגם בלוח המודעות — ומעדכנים אותה בכל שינוי בלוח הזמנים
מציינים מספר קריאת שירות ושם חברת המעליות — זה מונע קריאות כפולות ומשדר שהנושא בטיפול
חוזה שירות תקין קובע זמני תגובה לתקלה משביתה — עיכוב מעבר להם הוא עילה לפנייה רשמית לחברה
המעלית היא רכוש משותף — התיקון ממומן מקופת הוועד דרך חוזה השירות השנתי
הנוסח כאן חינמי — העתקה, הדפסה או הורדה כ-PDF/Word
כשהמעלית מושבתת, כל דקה של עדכון חוסכת טלפון מתוסכל לוועד. בלוח מודעות דיגיטלי לבניין עדכון התקלה עולה על המסך בכניסה תוך שניות — מתעדכן מרחוק ומגיע לכל דייר לפני שהוא לוחץ על הכפתור.
document.addEventListener('click', function(e) {
var el = e.target.closest('.gmx-lite-yt');
if (!el) return;
var vid = el.getAttribute('data-vid');
if (!vid) return;
var iframe = document.createElement('iframe');
iframe.src = 'https://www.youtube.com/embed/' + vid + '?autoplay=1';
iframe.style.cssText = 'position:absolute;top:0;left:0;width:100%;height:100%;border:0;';
iframe.allow = 'autoplay;encrypted-media';
iframe.allowFullscreen = true;
el.style.position = 'relative';
el.innerHTML = '';
el.appendChild(iframe);
});
(function () {
var c = document.body.className;
c = c.replace(/woocommerce-no-js/, 'woocommerce-js');
document.body.className = c;
})();
var gmxCf7LegacyUxI18n = {"errName":"Please enter a full name","errPhone":"Please enter a valid phone number","errEmail":"Please enter a valid email address","errRequired":"Required field"};
//# sourceURL=gmx-cf7-legacy-ux-js-extra
(function(){
function cleanUrl(url) {
// Strip query params embedded mid-path: /ID?params/file -> /ID/file
return url.replace(/\?[^\/]+\//g, '/');
}
function addWebPFallback(pic) {
if (pic.getAttribute('data-webp-fb')) return;
pic.setAttribute('data-webp-fb', '1');
var img = pic.querySelector('img');
if (!img) return;
img.onerror = function() {
this.onerror = null;
this.src = cleanUrl(this.src).replace('vi_webp','vi').replace('.webp','.jpg');
var sources = this.parentElement.querySelectorAll('source');
for (var i = 0; i < sources.length; i++) {
sources[i].srcset = cleanUrl(sources[i].srcset).replace('vi_webp','vi').replace('.webp','.jpg');
}
};
}
var observer = new MutationObserver(function() {
var pics = document.querySelectorAll('.video-seo-youtube-picture');
for (var i = 0; i < pics.length; i++) addWebPFallback(pics[i]);
});
observer.observe(document.documentElement, { childList: true, subtree: true });
})();
(function(){
var siteKey = "6Ldnu_gsAAAAAGpkh7vCd_h3L9BA193yFU59I4Do";
var action = "submit_lead_form";
var loaderUrl = "https:\/\/www.google.com\/recaptcha\/enterprise.js?render=6Ldnu_gsAAAAAGpkh7vCd_h3L9BA193yFU59I4Do";
// GWP-506 (perf): the reCAPTCHA Enterprise runtime costs ~900ms of main-thread
// work (PSI contactus TBT 660ms, perf 69). It was loaded eagerly on every page
// carrying a CF7 form. It now loads on the FIRST real page interaction
// (scroll/pointer/key/touch) — warming the runtime well before the user can
// reach submit — and never loads on a no-interaction (lab) page view, so the
// perf win holds. The token is still stamped on form focusin and refreshed at
// submit. IMPORTANT: the server gate is fail-CLOSED by default (GWP-412
// require_token) — a missing token at submit is treated as spam — so the
// runtime MUST be warm before submit; that is exactly why the warm trigger is
// first-page-interaction, NOT focusin-only (focusin-only left a race where a
// fast focus→submit could POST before the ~900ms download finished and drop a
// legit lead). The eager <script src> is gone.
var greReady = false, greWaiters = [], greLoadStarted = false;
function pollGre(attempts) {
if (typeof grecaptcha !== 'undefined' && grecaptcha.enterprise) {
greReady = true;
var queued = greWaiters;
greWaiters = [];
queued.forEach(function (fn) { try { fn(); } catch (e) {} });
return;
}
if (attempts > 200) {
// no-silent-failures: enterprise.js never became ready (network-blocked,
// consent/privacy blocker, or a Google outage). Surface it — a missing
// token fails CLOSED server-side (GWP-412) and drops the lead.
if (window.console && console.warn) {
console.warn('[GMX recaptcha] enterprise.js not ready after ~10s; token will be missing (submit fails closed).');
}
return; // give up after ~10s (200 * 50ms)
}
setTimeout(function () { pollGre(attempts + 1); }, 50);
}
function loadGre() {
if (greLoadStarted) return;
greLoadStarted = true;
var s = document.createElement('script');
s.src = loaderUrl;
s.async = true;
document.head.appendChild(s);
pollGre(0); // begin polling only once the runtime is actually loading
}
function whenGreReady(cb) {
if (greReady) return cb();
greWaiters.push(cb);
}
function stampToken(form) {
if (!form.querySelector('.wpcf7-form-control-wrap input[type="submit"], .wpcf7-submit')) return;
loadGre(); // lazy: kick off enterprise.js on demand (idempotent)
whenGreReady(function () {
grecaptcha.enterprise.ready(function () {
grecaptcha.enterprise.execute(siteKey, { action: action }).then(function (token) {
var hidden = form.querySelector('input[name="gmx_recaptcha_token"]');
if (!hidden) {
hidden = document.createElement('input');
hidden.type = 'hidden';
hidden.name = 'gmx_recaptcha_token';
form.appendChild(hidden);
}
hidden.value = token;
}).catch(function () {
// no-silent-failures: token generation failed; the server gate is
// fail-CLOSED (GWP-412), so this submit will be rejected as spam.
if (window.console && console.warn) {
console.warn('[GMX recaptcha] token execute failed; submit will fail closed.');
}
});
});
});
}
document.addEventListener('wpcf7submit', function (e) { stampToken(e.target); });
// Also stamp on first focus into any CF7 form (so token ready before submit).
// `whenGreReady()` queues the stamp until grecaptcha loads, so the once-
// listener stays safe even if grecaptcha isn't ready at focus-in time.
document.querySelectorAll('form.wpcf7-form').forEach(function (form) {
form.addEventListener('focusin', function once() {
form.removeEventListener('focusin', once);
stampToken(form);
});
});
// GWP-506: warm enterprise.js on the FIRST real page interaction so the ~900ms
// runtime is ready before the user reaches submit (closes the focusin-only race
// against the fail-CLOSED server gate, and covers AJAX/popup-injected forms that
// missed the focusin binding above). Never fires on a no-interaction (lab) view,
// so the perf win holds. Idempotent via loadGre()'s greLoadStarted guard.
var warmOpts = { passive: true, capture: true };
var warmEvents = ['pointerdown', 'keydown', 'touchstart', 'scroll'];
function warmGre() {
loadGre();
warmEvents.forEach(function (e) { window.removeEventListener(e, warmGre, warmOpts); });
}
warmEvents.forEach(function (e) { window.addEventListener(e, warmGre, warmOpts); });
})();
(function(){
var loaded = false;
function loadUserWay() {
if (loaded) return;
loaded = true;
var el = document.createElement('script');
el.setAttribute('data-account', "UX40fo0Ctw");
el.setAttribute('data-language', "he");
el.setAttribute('src', 'https://cdn.userway.org/widget.js');
document.body.appendChild(el);
events.forEach(function(e){ window.removeEventListener(e, loadUserWay, {passive: true}); });
}
var events = ['scroll', 'mousemove', 'touchstart', 'click', 'keydown'];
events.forEach(function(e){ window.addEventListener(e, loadUserWay, {passive: true}); });
})();