(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;
});
// GWP-208 — carry Meta's first-party click-linker cookies (_fbc
// = fb.1.<ts>.<fbclid>, _fbp) into the captured payload so they
// ride the persistent gmx_first_touch cookie cross-page (LP X →
// LP Y) the same way the URL click-ids do. The CF7 hidden-field
// populator copies the whole payload verbatim, so fbc/fbp reach
// the lead even when the form lives on a page without ?fbclid.
var fbcMatch = document.cookie.match(/(?:^|;\s*)_fbc=([^;]+)/);
if (fbcMatch && fbcMatch[1]) data.fbc = decodeURIComponent(fbcMatch[1]);
var fbpMatch = document.cookie.match(/(?:^|;\s*)_fbp=([^;]+)/);
if (fbpMatch && fbpMatch[1]) data.fbp = decodeURIComponent(fbpMatch[1]);
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) {}
})();
/* Meta Pixel base — inline in wp_head so Breeze Delay-All-JS does not defer it; fbevents.js is async-injected (optimizer-invisible). */
!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,document,'script',
'https://connect.facebook.net/en_US/fbevents.js');/* Symmetric with server GMX_Consent: revoke BEFORE init; cookies/sends held until grant. */
fbq('consent', 'revoke');
fbq('init', '1857131551802431');
fbq('track', 'PageView'); /* queued; flushed to Meta only after consent grant *//* Grant bridge — reads the SAME ATR marketing signal as GMX_Consent.applyConsent(). */
(function () {
function read(name){var m=document.cookie.match('(?:^|; )'+name.replace(/([.*+?^${}()|[\]\\])/g,'\\$1')+'=([^;]*)');return m?decodeURIComponent(m[1]):'';}
function marketingGranted(){
try {
var given = read('atr_cookie_notice_consent_given');
if (!given) return false; // undecided -> stay revoked
var c = JSON.parse(read('atr_cookie_notice_consent') || '{}');
return !!(c.marketing || c.ad_storage === 'granted');
} catch (e) { return false; } // NO-SILENT-OK: parse/read failure degrades gracefully to revoked (consent stays held; no marketing send) — not an error to report.
}
function apply(){ if (marketingGranted()) fbq('consent', 'grant'); }
apply();
document.addEventListener('click', function(ev){
if (ev.target && ev.target.closest && ev.target.closest('[class*="atr-cookie"], #atr-cookie-notice')) setTimeout(apply, 50);
}, true);
window.addEventListener('storage', apply);
})();
var breeze_prefetch = {"local_url":"https://gomixapp.com","ignore_remote_prefetch":"1","ignore_list":["/cart/","/checkout/","/my-account/","https://gomixapp.co.il/(.)/u05d4u05d8u05d5u05e4u05e1-u05e0u05e9u05dcu05d7-u05d1u05d4u05e6u05dcu05d7u05d4/","wp-admin","wp-login.php"]};
//# sourceURL=breeze-prefetch-js-extra
The Jewish calendar is a lunisolar calendar based on 12 months in a regular year (354 days) and 13 in a leap year (384 days). It includes 43 holidays, observances, new-month markers, and fast days. GoMixApp digital signage automatically detects every holiday and displays the relevant content in the synagogue.
The Hebrew calendar is the calendar of the Jewish people since biblical times – a lunisolar calendar synchronized with the cycles of the moon and sun. In this article we’ll review the calendar’s structure, the 12 months of the year, the 43 holidays and observances, the fasts and new-month days, and how to display all of this automatically on digital signage in the synagogue.
Structure of the Hebrew Calendar – A Lunisolar Calendar
The Jewish calendar is lunisolar (luni-solar): months are based on the lunar cycle, but the year is adjusted to the seasons (so the holidays remain in their proper seasons). A Hebrew month = 29.5 days (average) – so months alternate between 29 and 30 days. A regular year = 12 x 29.5 = 354 days.
The problem: a solar year = 365 days. The gap is 11 days per year. Without correction – within 30 years the holidays would drift into another season (Passover would fall in winter!). The solution: a leap year – a 13-month year in which an “Adar I” is added before the regular Adar (“Adar II”). A leap year recurs 7 times every 19 years (the Metonic cycle) – roughly once every 2-3 years.
The 12 Months of the Year (and the 13th)
Tishrei (September-October) – the month of holidays: Rosh Hashanah, Yom Kippur, Sukkot, Shemini Atzeret/Simchat Torah
Cheshvan (Marcheshvan) (October-November) – “the bitter month” (no holidays)
Kislev (November-December) – Hanukkah (starting on the 25th of Kislev)
Tevet (December-January) – the Tenth of Tevet fast
Shevat (January-February) – Tu BiShvat (New Year of the Trees)
Adar (February-March) – Purim (14th of Adar), Purim Katan in a leap year
Nisan (March-April) – Passover (15th-22nd of Nisan), the Counting of the Omer begins
Iyar (April-May) – Pesach Sheni, Israel Independence Day, Lag BaOmer, Jerusalem Day
Sivan (May-June) – Shavuot (6th of Sivan)
Tammuz (June-July) – the 17th of Tammuz fast (start of “The Three Weeks”)
Av (July-August) – Tisha B’Av, Tu B’Av
Elul (August-September) – the month of Selichot, preparation for Rosh Hashanah
In a leap year, Adar I is added after Shevat. The regular Adar becomes Adar II. Purim is celebrated in Adar II (the month adjacent to Nisan), but “Purim Katan” is marked in Adar I.
43 holidays and observances in the annual Hebrew calendar
43 Holidays and Observances
The GoMixApp system supports 43 holidays and observances, grouped by category:
Rosh Chodesh is the first day of a Hebrew month. In months with 30 days – Rosh Chodesh = two days (day 30 of the previous month + day 1 of the new month). In months with 29 days – day 1 only.
Synagogue markers of Rosh Chodesh: “Ya’aleh VeYavo” added in the prayer, half Hallel, the Torah reading (a special portion from Numbers 28), and a unique Haftarah when it falls on Shabbat.
Special Shabbatot are marked in the calendar: Shekalim, Zachor, Parah, HaChodesh (the four Shabbatot before Passover), HaGadol (before Passover), Shirah (Parashat Beshalach), Chazon (before Tisha B’Av), and Nachamu (after Tisha B’Av). For more information, see the Weekly Torah portion guide.
Rosh Chodesh and holidays automatically detected by the system
How to Display a Hebrew Calendar Automatically on the Synagogue Screen
Hebrew date (HEBREW_DATE) – in multiple formats: full (“25th of Adar II 5786”), abbreviated, numeric, or transliteration
43 holidays and observances – automatic scheduling of pages by holiday
Current holiday name (HOLIDAY_NAME) – displayed automatically while an active holiday is in effect
Israel/Diaspora detection – automatic by synagogue location. Handles the Second Day of Yom Tov in the Diaspora.
Yom Tov + Yom Kippur exclusion – separate scheduling for each
Rosh Chodesh (ROSH_CHODESH) and Shabbat Rosh Chodesh (SHABBAT_ROSH_CHODESH)
Special Shabbat (SPECIAL_SHABBAT) – automatically detected
Frequently Asked Questions about the Hebrew Calendar
How many months are there in a Hebrew year?
In a regular year (354 days) – 12 months: Tishrei, Cheshvan, Kislev, Tevet, Shevat, Adar, Nisan, Iyar, Sivan, Tammuz, Av, Elul. In a leap year (384 days) – 13 months, in which “Adar I” and “Adar II” are added (after Shevat, before Nisan). A leap year recurs every 2-3 years, seven times every 19 years.
Why is the Hebrew calendar a lunisolar calendar?
The months are based on the lunar cycle (29.5 days) – so a Hebrew month is 29 or 30 days. But the holidays must fall in specific seasons (Passover in spring, Sukkot in autumn) – so there is a leap year that adds a 13th month every 2-3 years, so the holidays don’t “drift” over time. Coordinating sun and moon = lunisolar.
How many holidays are there in the Hebrew year?
The GoMixApp system supports 43 holidays and observances: biblical religious holidays (Passover, Shavuot, Sukkot, Rosh Hashanah, Yom Kippur), rabbinic holidays (Hanukkah, Purim), Israeli national holidays (Independence Day, Memorial Day, Holocaust Remembrance Day, Jerusalem Day), fasts (Tisha B’Av, 17th of Tammuz, Gedaliah, 10th of Tevet, Esther), and memorial days (Ben-Gurion Day, Rabin, Jabotinsky).
What is Rosh Chodesh?
Rosh Chodesh is the first day of a Hebrew month. In months with 30 days – Rosh Chodesh falls both on day 30 (last day of the previous month) and on day 1 of the new month = two days. In months with 29 days – Rosh Chodesh falls on day 1 only. Halachic sign: on Rosh Chodesh “Ya’aleh VeYavo” is added to the prayer, and half Hallel is recited. The synagogue marks Rosh Chodesh on the calendar.
What are the 4 special Shabbatot before Passover?
On the four Shabbatot before Passover, a supplemental Torah portion is read in addition to the weekly portion: Shabbat Shekalim (before Adar/Adar II), Shabbat Zachor (before Purim), Shabbat Parah (after Purim), Shabbat HaChodesh (before Rosh Chodesh Nisan). All four prepare for Passover. In addition, there is Shabbat HaGadol immediately before Passover (in most cases).
What is the difference between holidays in Israel and the Diaspora?
In the Diaspora, the Second Day of Yom Tov (Yom Tov Sheni shel Galuyot) is observed – an additional day of the holiday (Passover: 8 days in the Diaspora, 7 in Israel; Sukkot: 9 in the Diaspora, 8 in Israel; Shavuot: 2 in the Diaspora, 1 in Israel; Rosh Hashanah: 2 everywhere). The reason: in the past, it was not 100% certain exactly when the holiday fell on the calendar, so in the Diaspora an extra day was added for safety. The GoMixApp system detects this automatically by synagogue location.
Can a Hebrew calendar be displayed automatically on a synagogue screen?
Yes. The GoMixApp system displays automatically: 43 holidays and observances with Israel/Diaspora detection, Rosh Chodesh (one or two days), special Shabbatot (Shekalim/Zachor/Parah/HaChodesh/HaGadol/Shirah/Chazon/Nachamu), Hebrew date in multiple formats, and current holiday name. Page scheduling by holiday is performed automatically.
Summary
The Jewish calendar is one of the most sophisticated calendars in the world – lunisolar, computed on a 19-year cycle, with 43 different holidays that appear precisely in their proper seasons. Manually managing all the holidays and Hebrew date updates in the synagogue is a nightmare. A digital signage system that natively understands the Hebrew calendar – including Israel/Diaspora detection, Rosh Chodesh, special Shabbatot, and per-holiday page scheduling – is the professional solution for every synagogue.
var atrCookieNoticeSettings = {"cookieName":"atr_cookie_notice_consent","decisionCookieName":"atr_cookie_notice_consent_given","expiryDays":"365","autoHideDelay":"0","enableDebug":"","siteName":"GoMixApp","isPrivacyPage":"","privacyPolicyUrl":"https://gomixapp.com/privacy-policy/","privacyNoteText":"\ud83d\udca1 You can read this page while deciding about cookies","mode":"simple"};
//# sourceURL=atr-cookie-notice-simple-js-extra