{"id":66856,"date":"2024-11-17T07:38:44","date_gmt":"2024-11-17T05:38:44","guid":{"rendered":"https:\/\/wp.djc.com.ua\/calendar\/"},"modified":"2025-09-24T20:50:13","modified_gmt":"2025-09-24T18:50:13","slug":"calendar","status":"publish","type":"page","link":"https:\/\/djc.com.ua\/en\/calendar\/","title":{"rendered":"Calendar"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"66856\" class=\"elementor elementor-66856 elementor-66850\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5683e855 e-flex e-con-boxed e-con e-parent\" data-id=\"5683e855\" data-element_type=\"container\" id=\"page-header-details-button\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6652fcc2 elementor-widget elementor-widget-heading\" data-id=\"6652fcc2\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Calendar<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-aa1ddc9 elementor-widget elementor-widget-html\" data-id=\"aa1ddc9\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<a href=\"https:\/\/djc.com.ua\/en\/prayer-schedule\/\" class=\"button-2 details-button\">Prayer schedule<\/a><br> <a href=\"https:\/\/djc.com.ua\/en\/zmanim\/\" class=\"button-2 details-button\">Zmanim<\/a>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a4a3342 e-flex e-con-boxed e-con e-parent\" data-id=\"a4a3342\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1d48713 elementor-widget elementor-widget-html\" data-id=\"1d48713\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- FullCalendar JS -->\r\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/fullcalendar@6.1.19\/index.global.min.js\"><\/script>\r\n\r\n<!-- FullCalendar JS -->\r\n<script src=\"\/wp-content\/themes\/blankslate\/myjs\/fullcalendar-6.1.19\/fullcalendar-6.1.19\/packages\/core\/locales\/ru.global.js\"><\/script>\r\n\r\n\r\n<div id=\"calendar-wrap\">\r\n    <h1>\u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u0439<\/h1>\r\n<div id=\"calendar-legend\"><\/div>\r\n<div id=\"calendar\"><\/div>\r\n<\/div>\r\n\r\n<script>\r\nconst API_KEY = 'AIzaSyCMB7WBm_tqmCW4zUTJFT4nIUfWPtc-SFI';\r\n\r\nconst CALENDAR_INFO = {\r\n      'c_8b884f66678bdcef5642c6fe7ceb6fcbc9bdba64b2dcac579a15cbbc1e063bbb@group.calendar.google.com': {\r\n    name: '\u041c\u043e\u043b\u0438\u0442\u0432\u044b',\r\n    color: '#2C70D1'\r\n  },\r\n     'c_4d7808d1b41734d8462c6d863bf80331205bbabdd01534bd375a360a22339d6a@group.calendar.google.com': {\r\n    name: '\u0417\u0430\u0436\u0438\u0433\u0430\u043d\u0438\u0435 \u0441\u0432\u0435\u0447\u0435\u0439',\r\n    color: '#0BBCB2'\r\n  },\r\n  'ru.judaism#holiday@group.v.calendar.google.com': {\r\n    name: '\u0415\u0432\u0440\u0435\u0439\u0441\u043a\u0438\u0435 \u043f\u0440\u0430\u0437\u0434\u043d\u0438\u043a\u0438',\r\n    color: '#4DB810'\r\n  },\r\n   'c_719586bed2a4ae2325252e825d27f52c35b6968cebe8bfbe8d106f13dc65b181@group.calendar.google.com': {\r\n    name: '\u041c\u0435\u0440\u043e\u043f\u0440\u0438\u044f\u0442\u0438\u044f \u043e\u0431\u0449\u0438\u043d\u044b',\r\n    color: '#D21E5B'\r\n  },\r\n   'c_aaeee2b0cbe6dcb5e804a5c4dd44b3135dc5bbadb4b62bba7cdfeab90ddf1473@group.calendar.google.com': {\r\n    name: '\u0414\u0440\u0443\u0433\u0438\u0435 \u0441\u043e\u0431\u044b\u0438\u044f',\r\n    color: '#CB7403'\r\n  }\r\n\r\n};\r\n\r\n\/\/ \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0439 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0441 \u0438\u0432\u0440\u0438\u0442\u0430 \u0432 \u043b\u0430\u0442\u0438\u043d\u0438\u0446\u0443\r\nconst monthMap = {\r\n  'Tishrei': 'Tishrei',\r\n  'Cheshvan': 'Marheshvan',\r\n  'Kislev': 'Kislev',\r\n  'Tevet': 'Tevet',\r\n  'Shevat': 'Shevat',\r\n  'Adar': 'Adar',\r\n  'Adar I': 'Adar',\r\n  'Adar II': 'Adar',\r\n  'Nisan': 'Nissan',\r\n  'Iyar': 'Iyar',\r\n  'Sivan': 'Sivan',\r\n  'Tamuz': 'Tammuz',\r\n  'Av': 'Av',\r\n  'Elul': 'Elul'\r\n};\r\n\r\nconst hebrewDateCache = {};\r\n\r\nasync function fetchEvents(calendarId) {\r\n  const url = `https:\/\/www.googleapis.com\/calendar\/v3\/calendars\/${encodeURIComponent(calendarId)}\/events?key=${API_KEY}&singleEvents=true&orderBy=startTime&timeMin=${new Date().toISOString()}`;\r\n  const res = await fetch(url);\r\n  const data = await res.json();\r\n\r\n  return data.items.map(event => ({\r\n    title: event.summary,\r\n    start: event.start.date || event.start.dateTime,\r\n    end: event.end?.date || event.end?.dateTime,\r\n    color: CALENDAR_INFO[calendarId].color\r\n  }));\r\n}\r\n\r\nasync function getHebrewDate(gy, gm, gd) {\r\n  const key = `${gy}-${gm}-${gd}`;\r\n  if (hebrewDateCache[key]) return hebrewDateCache[key];\r\n\r\n  const url = `https:\/\/www.hebcal.com\/converter?cfg=json&gy=${gy}&gm=${gm}&gd=${gd}&g2h=1`;\r\n  const res = await fetch(url);\r\n  const data = await res.json();\r\n\r\n  const day = data.hd;\r\n  const monthOriginal = data.hm;\r\n  const month = monthMap[monthOriginal] || monthOriginal;\r\n  const year = data.hy;\r\n\r\n  const formatted = `${day} ${month} ${year}`;\r\n  hebrewDateCache[key] = formatted;\r\n  return formatted;\r\n}\r\n\r\ndocument.addEventListener('DOMContentLoaded', async function () {\r\n  const calendarEl = document.getElementById('calendar');\r\n  const legendEl = document.getElementById('calendar-legend');\r\n\r\n  const eventsArrays = await Promise.all(Object.keys(CALENDAR_INFO).map(fetchEvents));\r\n  const allEvents = eventsArrays.flat();\r\n\r\n  const calendar = new FullCalendar.Calendar(calendarEl, {\r\n      \r\n      \r\n    initialView: 'dayGridMonth',\r\n    locale: 'ru',\r\n    headerToolbar: {\r\n      left: 'prev,next today',\r\n      center: 'title',\r\n      right: 'dayGridMonth,dayGridWeek'\r\n    },\r\n    events: allEvents,\r\n    \r\n     eventTimeFormat: { \/\/ \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0447\u0430\u0441\u044b \u0438 \u043c\u0438\u043d\u0443\u0442\u044b\r\n    hour: '2-digit',\r\n    minute: '2-digit',\r\n    hour12: false \/\/ 24-\u0447\u0430\u0441\u043e\u0432\u043e\u0439 \u0444\u043e\u0440\u043c\u0430\u0442\r\n  },\r\n\r\n    dayCellContent: function (arg) {\r\n      const date = arg.date;\r\n      const gy = date.getFullYear();\r\n      const gm = date.getMonth() + 1;\r\n      const gd = date.getDate();\r\n\r\n      const container = document.createElement('div');\r\n      container.innerHTML = `<div>${gd}<\/div><div style=\"font-size:10px; color:#555;\" class=\"hebrew-date\">(\u2026)<\/div>`;\r\n\r\n      getHebrewDate(gy, gm, gd).then(hebrew => {\r\n        const span = container.querySelector('.hebrew-date');\r\n        if (span) span.textContent = `(${hebrew})`;\r\n      });\r\n\r\n      return { domNodes: [container] };\r\n    }\r\n  });\r\n\r\n  calendar.render();\r\n\r\n  \/\/ \u041b\u0435\u0433\u0435\u043d\u0434\u0430\r\n  Object.values(CALENDAR_INFO).forEach(({ name, color }) => {\r\n    const item = document.createElement('div');\r\n    item.style.display = 'inline-flex';\r\n    item.style.alignItems = 'center';\r\n    item.style.marginRight = '15px';\r\n    item.style.fontSize = '14px';\r\n\r\n    const colorBox = document.createElement('span');\r\n    colorBox.style.display = 'inline-block';\r\n    colorBox.style.width = '14px';\r\n    colorBox.style.height = '14px';\r\n    colorBox.style.backgroundColor = color;\r\n    colorBox.style.marginRight = '6px';\r\n    colorBox.style.borderRadius = '50%';\r\n\r\n    item.appendChild(colorBox);\r\n    item.appendChild(document.createTextNode(name));\r\n    legendEl.appendChild(item);\r\n  });\r\n});\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Calendar Prayer schedule Zmanim \u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u0439<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"class_list":["post-66856","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.8.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Calendar - DJC<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/djc.com.ua\/en\/calendar\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Calendar - DJC\" \/>\n<meta property=\"og:description\" content=\"Calendar Prayer schedule Zmanim \u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u0439\" \/>\n<meta property=\"og:url\" content=\"https:\/\/djc.com.ua\/en\/calendar\/\" \/>\n<meta property=\"og:site_name\" content=\"DJC\" \/>\n<meta property=\"article:modified_time\" content=\"2025-09-24T18:50:13+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/djc.com.ua\/en\/calendar\/\",\"url\":\"https:\/\/djc.com.ua\/en\/calendar\/\",\"name\":\"Calendar - DJC\",\"isPartOf\":{\"@id\":\"https:\/\/djc.com.ua\/en\/#website\"},\"datePublished\":\"2024-11-17T05:38:44+00:00\",\"dateModified\":\"2025-09-24T18:50:13+00:00\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/djc.com.ua\/en\/calendar\/\"]}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/djc.com.ua\/en\/#website\",\"url\":\"https:\/\/djc.com.ua\/en\/\",\"name\":\"DJC\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/djc.com.ua\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Calendar - DJC","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/djc.com.ua\/en\/calendar\/","og_locale":"en_US","og_type":"article","og_title":"Calendar - DJC","og_description":"Calendar Prayer schedule Zmanim \u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u0439","og_url":"https:\/\/djc.com.ua\/en\/calendar\/","og_site_name":"DJC","article_modified_time":"2025-09-24T18:50:13+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/djc.com.ua\/en\/calendar\/","url":"https:\/\/djc.com.ua\/en\/calendar\/","name":"Calendar - DJC","isPartOf":{"@id":"https:\/\/djc.com.ua\/en\/#website"},"datePublished":"2024-11-17T05:38:44+00:00","dateModified":"2025-09-24T18:50:13+00:00","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/djc.com.ua\/en\/calendar\/"]}]},{"@type":"WebSite","@id":"https:\/\/djc.com.ua\/en\/#website","url":"https:\/\/djc.com.ua\/en\/","name":"DJC","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/djc.com.ua\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/djc.com.ua\/en\/wp-json\/wp\/v2\/pages\/66856","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/djc.com.ua\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/djc.com.ua\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/djc.com.ua\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/djc.com.ua\/en\/wp-json\/wp\/v2\/comments?post=66856"}],"version-history":[{"count":14,"href":"https:\/\/djc.com.ua\/en\/wp-json\/wp\/v2\/pages\/66856\/revisions"}],"predecessor-version":[{"id":418623,"href":"https:\/\/djc.com.ua\/en\/wp-json\/wp\/v2\/pages\/66856\/revisions\/418623"}],"wp:attachment":[{"href":"https:\/\/djc.com.ua\/en\/wp-json\/wp\/v2\/media?parent=66856"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}