{"id":10846,"date":"2026-03-23T12:17:59","date_gmt":"2026-03-23T16:17:59","guid":{"rendered":"https:\/\/www.sheelersda.com\/m\/?page_id=10846"},"modified":"2026-04-04T10:22:49","modified_gmt":"2026-04-04T14:22:49","slug":"events_itinerary_feed","status":"publish","type":"page","link":"https:\/\/www.sheelersda.com\/m\/events_itinerary_feed\/","title":{"rendered":"Events_itinerary_feed"},"content":{"rendered":"<div class=\"wpb-content-wrapper\" id=\"wpb-content-root\"><p>[vc_row][vc_column][vc_column_text css=\u00bb\u00bb woodmart_inline=\u00bbno\u00bb text_larger=\u00bbno\u00bb]        <div id=\"cbran-events-itinerary-feed-1\"\n            class=\"cbran-events-itinerary-feed cbran-events-itinerary-feed-root cbran-event-view-public max-w-4xl mx-auto p-4 sm:p-6 bg-white rounded-xl border border-gray-200 shadow-sm space-y-4\"\n            data-cbran-tailwind=\"1\"\n            data-cbran-ap-ov-base=\"cbran-itin-feed-ov-2\"\n            data-cbran-overlay-id=\"cbran-itin-feed-ov-2\"\n            data-cbran-overlay-cancel-id=\"cbran-itin-feed-ov-2-cancel\"\n            data-cbran-overlay-confirm-id=\"cbran-itin-feed-ov-2-confirm\"\n            data-cbran-ajax-url=\"https:\/\/www.sheelersda.com\/m\/wp-admin\/admin-ajax.php\"\n            data-cbran-itinerary-scope=\"public\"\n                        data-cbran-feed-title=\"\"\n            data-cbran-rendered-eids=\"11316\">\n            <div class=\"cbran-events-itinerary-feed-live-inner\">\n                        <div class=\"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 pb-2 border-b border-gray-200\">\n            <div class=\"flex items-center gap-2 min-w-0\">\n                <span class=\"text-blue-600 shrink-0\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"h-5 w-5\"><circle cx=\"12\" cy=\"12\" r=\"10\"><\/circle><polyline points=\"12 6 12 12 16 14\"><\/polyline><\/svg><\/span>\n                <h2 class=\"text-xl font-semibold text-gray-900 truncate\">Today&#039;s itineraries<\/h2>\n            <\/div>\n            <p class=\"text-sm text-gray-500 shrink-0 cbran-events-itinerary-feed-today-label\">10\/24\/2026<\/p>\n        <\/div>\n                            <div class=\"cbran-events-itinerary-feed-events space-y-6\">\n                                    <div class=\"cbran-itinerary-feed-event-wrap cbran-itinerary-autopilot-host\"\n                        data-cbran-itinerary-feed-wrap=\"1\"\n                        data-eid=\"6012322236a45841d201d29aaa98b963\"\n                        data-event-id=\"11316\"\n                        data-event-date-ymd=\"2026-10-24\"\n                        data-event-all-day=\"0\"\n                        data-can-edit=\"0\"\n                        data-ajax-url=\"https:\/\/www.sheelersda.com\/m\/wp-admin\/admin-ajax.php\"\n                        data-nonce=\"8859125b1c\">\n                        <section class=\"cbran-events-itinerary-feed-event rounded-xl border border-gray-200 bg-white shadow-sm overflow-hidden\">\n                            <div class=\"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 px-4 py-3 border-b border-gray-200 bg-gray-50\">\n                                <h3 class=\"text-base font-semibold text-gray-900 m-0\">S\u00e1bado, 24 de Octubre: \u201c\u00a1EL GRAN PELIGRO!\u201d - Pr. Gerizin Pe\u00f1a<\/h3>\n                                <a href=\"https:\/\/www.sheelersda.com\/m\/event_view\/?eid=6012322236a45841d201d29aaa98b963\" class=\"text-sm font-medium text-blue-600 hover:text-blue-700 hover:underline shrink-0\">Full event details \u2192<\/a>\n                            <\/div>\n                                                        <div class=\"cbran-itinerary-autopilot-banner flex flex-wrap items-center justify-between gap-2 px-4 py-2 border-b border-emerald-200 bg-emerald-50 text-emerald-900 text-sm\" style=\"display:none;\" data-cbran-autopilot-banner=\"1\" aria-live=\"polite\">\n                                <span class=\"font-medium\">Autopilot is on \u2014 sections will start at their scheduled times.<\/span>\n                                <button type=\"button\" class=\"cbran-itinerary-autopilot-stop px-3 py-1 text-xs font-medium rounded-md bg-white border border-emerald-300 text-emerald-900 hover:bg-emerald-100\">Stop autopilot<\/button>\n                            <\/div>\n                                                        <div class=\"cbran-itinerary-feed-list-inner cbran-public-event-itinerary-list p-4 space-y-2\">\n                                <div class=\"cbran-itinerary-public-divider\" role=\"separator\" data-section-type=\"divider\" data-section-id=\"s-1792780706718-d92nk1nvps\" style=\"margin:0.85rem 0 0.35rem;padding:0.7rem 0.9rem;border-radius:0.5rem;background:#1e1b4b;color:#fff;\"><p style=\"margin:0;font-size:0.78rem;font-weight:700;letter-spacing:0.06em;text-transform:uppercase;line-height:1.35;\">Primer Servicio - Escuela Sab\u00e1tica<\/p><\/div><div class=\"cbran-itinerary-public-divider\" role=\"separator\" data-section-type=\"divider\" data-section-id=\"s-1792780706747-w451dzd6z9\" style=\"margin:0.85rem 0 0.35rem;padding:0.7rem 0.9rem;border-radius:0.5rem;background:#1e1b4b;color:#fff;\"><p style=\"margin:0;font-size:0.78rem;font-weight:700;letter-spacing:0.06em;text-transform:uppercase;line-height:1.35;\">SEGUNDO SERVICIO - COMIENZO DE TRANSMISI\u00d3N<\/p><\/div><div class=\"cbran-itinerary-public-divider\" role=\"separator\" data-section-type=\"divider\" data-section-id=\"s-1792780706789-fhb650ai3js\" style=\"margin:0.85rem 0 0.35rem;padding:0.7rem 0.9rem;border-radius:0.5rem;background:#1e1b4b;color:#fff;\"><p style=\"margin:0;font-size:0.78rem;font-weight:700;letter-spacing:0.06em;text-transform:uppercase;line-height:1.35;\">* Quitar Manto<\/p><\/div><div class=\"cbran-itinerary-public-divider\" role=\"separator\" data-section-type=\"divider\" data-section-id=\"s-1792780706789-8gvccgtgy9l\" style=\"margin:0.85rem 0 0.35rem;padding:0.7rem 0.9rem;border-radius:0.5rem;background:#1e1b4b;color:#fff;\"><p style=\"margin:0;font-size:0.78rem;font-weight:700;letter-spacing:0.06em;text-transform:uppercase;line-height:1.35;\">* \u2060Lavado de Manos<\/p><\/div><div class=\"cbran-itinerary-public-divider\" role=\"separator\" data-section-type=\"divider\" data-section-id=\"s-1792780706789-afyesvxhl9j\" style=\"margin:0.85rem 0 0.35rem;padding:0.7rem 0.9rem;border-radius:0.5rem;background:#1e1b4b;color:#fff;\"><p style=\"margin:0;font-size:0.78rem;font-weight:700;letter-spacing:0.06em;text-transform:uppercase;line-height:1.35;\">* \u2060Partir el Pan<\/p><\/div><div class=\"cbran-itinerary-public-divider\" role=\"separator\" data-section-type=\"divider\" data-section-id=\"s-1792780706789-ipdpdxpd79s\" style=\"margin:0.85rem 0 0.35rem;padding:0.7rem 0.9rem;border-radius:0.5rem;background:#1e1b4b;color:#fff;\"><p style=\"margin:0;font-size:0.78rem;font-weight:700;letter-spacing:0.06em;text-transform:uppercase;line-height:1.35;\">* \u2060M\u00fasica Selecta: \u201cEN LA V\u00cdA DOLOROSA\u201d - Jady Ch\u00e1vez<\/p><\/div><div class=\"cbran-itinerary-public-divider\" role=\"separator\" data-section-type=\"divider\" data-section-id=\"s-1792780706789-0istbw9h4gcr\" style=\"margin:0.85rem 0 0.35rem;padding:0.7rem 0.9rem;border-radius:0.5rem;background:#1e1b4b;color:#fff;\"><p style=\"margin:0;font-size:0.78rem;font-weight:700;letter-spacing:0.06em;text-transform:uppercase;line-height:1.35;\">* \u2060Oraci\u00f3n por Emblemas<\/p><\/div><div class=\"cbran-itinerary-public-divider\" role=\"separator\" data-section-type=\"divider\" data-section-id=\"s-1792780706789-227vi97jmrei\" style=\"margin:0.85rem 0 0.35rem;padding:0.7rem 0.9rem;border-radius:0.5rem;background:#1e1b4b;color:#fff;\"><p style=\"margin:0;font-size:0.78rem;font-weight:700;letter-spacing:0.06em;text-transform:uppercase;line-height:1.35;\">* \u2060Servir el Pan<\/p><\/div><div class=\"cbran-itinerary-public-divider\" role=\"separator\" data-section-type=\"divider\" data-section-id=\"s-1792780706789-s8b2gjak2zi\" style=\"margin:0.85rem 0 0.35rem;padding:0.7rem 0.9rem;border-radius:0.5rem;background:#1e1b4b;color:#fff;\"><p style=\"margin:0;font-size:0.78rem;font-weight:700;letter-spacing:0.06em;text-transform:uppercase;line-height:1.35;\">* \u2060Lectura por el Pan<\/p><\/div><div class=\"cbran-itinerary-public-divider\" role=\"separator\" data-section-type=\"divider\" data-section-id=\"s-1792780706790-ox3d6idfmee\" style=\"margin:0.85rem 0 0.35rem;padding:0.7rem 0.9rem;border-radius:0.5rem;background:#1e1b4b;color:#fff;\"><p style=\"margin:0;font-size:0.78rem;font-weight:700;letter-spacing:0.06em;text-transform:uppercase;line-height:1.35;\">* \u2060Servir el Vino<\/p><\/div><div class=\"cbran-itinerary-public-divider\" role=\"separator\" data-section-type=\"divider\" data-section-id=\"s-1792780706790-mme9hks1vnf\" style=\"margin:0.85rem 0 0.35rem;padding:0.7rem 0.9rem;border-radius:0.5rem;background:#1e1b4b;color:#fff;\"><p style=\"margin:0;font-size:0.78rem;font-weight:700;letter-spacing:0.06em;text-transform:uppercase;line-height:1.35;\">* \u2060Lectura por el Vino<\/p><\/div><div class=\"cbran-itinerary-public-divider\" role=\"separator\" data-section-type=\"divider\" data-section-id=\"s-1792780706790-azusz5e79v5\" style=\"margin:0.85rem 0 0.35rem;padding:0.7rem 0.9rem;border-radius:0.5rem;background:#1e1b4b;color:#fff;\"><p style=\"margin:0;font-size:0.78rem;font-weight:700;letter-spacing:0.06em;text-transform:uppercase;line-height:1.35;\">* \u2060Canto Final<\/p><\/div><div class=\"cbran-itinerary-public-divider\" role=\"separator\" data-section-type=\"divider\" data-section-id=\"s-1792780706790-84si7y2qql7\" style=\"margin:0.85rem 0 0.35rem;padding:0.7rem 0.9rem;border-radius:0.5rem;background:#1e1b4b;color:#fff;\"><p style=\"margin:0;font-size:0.78rem;font-weight:700;letter-spacing:0.06em;text-transform:uppercase;line-height:1.35;\">* \u2060Oraci\u00f3n de Cierre<\/p><\/div>                            <\/div>\n                        <\/section>\n                    <\/div>\n                                <\/div>\n                            <\/div>\n            <div id=\"cbran-itin-feed-ov-2\" style=\"display:none; position:fixed; inset:0; z-index:2147483647; background:rgba(0,0,0,0.5); align-items:center; justify-content:center; padding:1rem; min-width:100vw; min-height:100vh;\" class=\"cbran-itinerary-reset-overlay-public cbran-itinerary-feed-reset-overlay\" aria-hidden=\"true\">\n                <div class=\"bg-white rounded-xl shadow-xl max-w-sm w-full p-5\" style=\"box-shadow:0 25px 50px -12px rgba(0,0,0,0.25);\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"cbran-itin-feed-ov-2-title\">\n                    <p id=\"cbran-itin-feed-ov-2-title\" class=\"text-sm font-medium text-gray-900 mb-1\">Reset section<\/p>\n                    <p class=\"text-sm text-gray-600 mb-4\">Do you want to reset this section to Not started? You can start it again later.<\/p>\n                    <div class=\"flex gap-3 justify-end\">\n                        <button type=\"button\" id=\"cbran-itin-feed-ov-2-cancel\" class=\"px-4 py-2 text-sm font-medium rounded-lg border border-gray-300 text-gray-700 bg-white hover:bg-gray-50\">Cancel<\/button>\n                        <button type=\"button\" id=\"cbran-itin-feed-ov-2-confirm\" class=\"px-4 py-2 text-sm font-medium rounded-lg bg-amber-600 text-white hover:bg-amber-700\">Reset<\/button>\n                    <\/div>\n                <\/div>\n            <\/div>\n                        <div id=\"cbran-itin-feed-ov-2-autopilot\" class=\"cbran-itinerary-autopilot-overlay-public cbran-itinerary-feed-autopilot-overlay\" style=\"display:none; position:fixed; inset:0; z-index:2147483647; background:rgba(0,0,0,0.5); align-items:center; justify-content:center; padding:1rem; min-width:100vw; min-height:100vh;\" aria-hidden=\"true\">\n                <div class=\"cbran-itinerary-autopilot-modal\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"cbran-itin-feed-ov-2-autopilot-title\">\n                    <div class=\"cbran-itinerary-autopilot-modal__header\">\n                        <p id=\"cbran-itin-feed-ov-2-autopilot-title\" class=\"cbran-itinerary-autopilot-modal__title\">Itinerary autopilot<\/p>\n                    <\/div>\n                    <p class=\"cbran-itinerary-autopilot-modal__lead\">Start each section yourself when you are ready, or turn on autopilot so \u201cStart\u201d runs automatically at each section\u2019s scheduled time.<\/p>\n                    <label class=\"cbran-itinerary-autopilot-modal__skip\" for=\"cbran-itin-feed-ov-2-autopilot-skip\">\n                        <input type=\"checkbox\" id=\"cbran-itin-feed-ov-2-autopilot-skip\" class=\"cbran-itinerary-autopilot-modal__checkbox\" \/>\n                        <span>Don\u2019t ask again for this event (on this browser)<\/span>\n                    <\/label>\n                    <div class=\"cbran-itinerary-autopilot-modal__actions\">\n                        <button type=\"button\" id=\"cbran-itin-feed-ov-2-autopilot-cancel\" class=\"cbran-itinerary-autopilot-modal__btn cbran-itinerary-autopilot-modal__btn--secondary\">Cancel<\/button>\n                        <button type=\"button\" id=\"cbran-itin-feed-ov-2-autopilot-manual\" class=\"cbran-itinerary-autopilot-modal__btn cbran-itinerary-autopilot-modal__btn--outline\">Manual \u2014 start this section only<\/button>\n                        <button type=\"button\" id=\"cbran-itin-feed-ov-2-autopilot-enable\" class=\"cbran-itinerary-autopilot-modal__btn cbran-itinerary-autopilot-modal__btn--primary\">Enable autopilot and start<\/button>\n                    <\/div>\n                <\/div>\n            <\/div>\n                    <\/div>\n        <script>\n        (function() {\n        (function(w){\nvar AP = w.CbranItineraryAutopilot = w.CbranItineraryAutopilot || {};\nif (!AP.bootHost) {\nvar SK = 'cbran_itinerary_autopilot_';\nvar SKIPK = 'cbran_itinerary_autopilot_skip_prompt_';\nfunction lsGet(k){ try { return w.localStorage.getItem(k); } catch(e){ return null; } }\nfunction lsSet(k,v){ try { w.localStorage.setItem(k,v); } catch(e){} }\nfunction getState(evId) {\ntry { var j = lsGet(SK + evId); return j ? JSON.parse(j) : { active: false }; } catch(e){ return { active: false }; }\n}\nfunction setActive(evId, active) {\nvar o = getState(evId); o.active = !!active; o.since = (Date.now && Date.now()) || +new Date(); lsSet(SK + evId, JSON.stringify(o));\n}\nfunction skipPrompt(evId){ return lsGet(SKIPK + evId) === '1'; }\nfunction setSkipPrompt(evId){ lsSet(SKIPK + evId, '1'); }\nfunction hideOv(el) {\nif (!el) return;\nel.style.display = 'none'; el.setAttribute('aria-hidden','true'); document.body.classList.remove('cbran-public-overlay-open');\n}\nfunction showOv(el) {\nif (!el) return;\nif (el.parentNode !== document.body) { document.body.appendChild(el); }\nel.style.display = 'flex'; el.setAttribute('aria-hidden','false'); document.body.classList.add('cbran-public-overlay-open');\n}\nfunction xhrReconcile(ajaxUrl, nonce, eventId, onDone) {\nvar fd = new FormData();\nfd.append('action','cbran_reconcile_itinerary_autopilot');\nfd.append('nonce', nonce);\nfd.append('event_id', eventId);\nvar xhr = new XMLHttpRequest();\nxhr.open('POST', ajaxUrl, true);\nxhr.withCredentials = true;\nxhr.onreadystatechange = function(){\nif (xhr.readyState !== 4 || typeof onDone !== 'function') return;\ntry {\nvar res = JSON.parse(xhr.responseText);\nvar ok = xhr.status === 200 && res && res.success;\nvar changed = !!(ok && res.data && res.data.changed);\nonDone(!!ok, changed);\n} catch (e2) { onDone(false, false); }\n};\nxhr.send(fd);\n}\nfunction syncBanner(host, evId) {\nvar b = host.querySelector('[data-cbran-autopilot-banner]');\nif (!b) return;\nb.style.display = getState(evId).active ? 'flex' : 'none';\n}\nfunction prefersReducedMotion() {\ntry { return !!(w.matchMedia && w.matchMedia('(prefers-reduced-motion: reduce)').matches); } catch (e) { return false; }\n}\nfunction sectionIdFrom(el) {\nif (!el) return '';\nif (el.getAttribute && el.getAttribute('data-section-id')) return el.getAttribute('data-section-id') || '';\nvar row = el.querySelector ? el.querySelector('.cbran-itinerary-detail-row[data-section-id]') : null;\nreturn row ? (row.getAttribute('data-section-id') || '') : '';\n}\nfunction currentSectionEl(listEl) {\nif (!listEl) return null;\nreturn listEl.querySelector('.cbran-itinerary-in-progress');\n}\nfunction isSectionCentered(el) {\nif (!el || !el.getBoundingClientRect) return false;\nvar rect = el.getBoundingClientRect();\nvar vh = w.innerHeight || (document.documentElement && document.documentElement.clientHeight) || 0;\nif (!vh || rect.height < 1) return false;\nvar delta = (rect.top + (rect.height \/ 2)) - (vh \/ 2);\nreturn Math.abs(delta) <= 20;\n}\nfunction scrollSectionToCenter(el) {\nif (!el || !el.isConnected) return;\nvar rect = el.getBoundingClientRect();\nvar vh = w.innerHeight || (document.documentElement && document.documentElement.clientHeight) || 0;\nif (!vh || rect.height < 1) return;\nvar delta = (rect.top + (rect.height \/ 2)) - (vh \/ 2);\nif (Math.abs(delta) <= 20) return;\nvar behavior = prefersReducedMotion() ? 'auto' : 'smooth';\nvar scroller = null;\nvar node = el.parentElement;\nwhile (node && node !== document.body && node !== document.documentElement) {\nvar oy = '';\ntry { oy = (w.getComputedStyle(node).overflowY || ''); } catch (eOy) { oy = ''; }\nif ((oy === 'auto' || oy === 'scroll' || oy === 'overlay') && node.scrollHeight > node.clientHeight + 2) { scroller = node; break; }\nnode = node.parentElement;\n}\nvar reduce = behavior === 'auto';\ntry {\nif (scroller) {\nscroller.scrollTo({ top: Math.max(0, scroller.scrollTop + delta), behavior: reduce ? 'auto' : 'smooth' });\n} else {\nw.scrollTo({ top: Math.max(0, (w.pageYOffset || document.documentElement.scrollTop || 0) + delta), behavior: reduce ? 'auto' : 'smooth' });\n}\n} catch (err) {\nw.scrollTo(0, Math.max(0, (w.pageYOffset || document.documentElement.scrollTop || 0) + delta));\n}\n}\nAP._lastCenteredSection = AP._lastCenteredSection || {};\n\/** cfg: { host, listEl, ajaxUrl, nonce, eventId, canEdit, overlayEl, cancelEl, manualEl, enableEl, skipCheckEl, refreshFn }\n *\/\nAP.bootHost = function(cfg) {\nvar host = cfg.host, listEl = cfg.listEl, ajaxUrl = cfg.ajaxUrl, nonce = cfg.nonce, eventId = String(cfg.eventId || '');\nvar overlay = cfg.overlayEl, cancelBtn = cfg.cancelEl, manualBtn = cfg.manualEl, enableBtn = cfg.enableEl, skipCheck = cfg.skipCheckEl;\nvar refreshFn = cfg.refreshFn || function(cb){ if (typeof cb === 'function') cb(); };\nvar canEditHost = !!cfg.canEdit;\nif (!host || !listEl || !ajaxUrl || !nonce || !eventId) return;\nif (host.__cbranAutopilot && typeof host.__cbranAutopilot.clearTick === 'function') {\nhost.__cbranAutopilot.clearTick();\n}\nif (host.__cbranAutopilot && typeof host.__cbranAutopilot.clearCenterWatch === 'function') {\nhost.__cbranAutopilot.clearCenterWatch();\n}\nvar reconcileBusy = false;\nvar tickTimer = null;\nfunction clearTick() { if (tickTimer) { clearInterval(tickTimer); tickTimer = null; } }\nvar centerObserver = null;\nvar centerQueued = false;\nvar queuedSid = '';\nvar watchGen = (host.__cbranCenterGen || 0) + 1;\nhost.__cbranCenterGen = watchGen;\nfunction clearCenterWatch() {\nif (centerObserver) { centerObserver.disconnect(); centerObserver = null; }\ncenterQueued = false;\n}\nfunction centerActive() {\nif (!getState(eventId).active || !listEl || !listEl.isConnected) return;\nvar el = currentSectionEl(listEl);\nif (!el) {\nif (AP._lastCenteredSection[eventId]) delete AP._lastCenteredSection[eventId];\nreturn;\n}\nvar sid = sectionIdFrom(el);\nif (!sid || AP._lastCenteredSection[eventId] === sid) return;\nqueuedSid = sid;\nhost.__cbranCenterEl = el;\nif (centerQueued) return;\ncenterQueued = true;\nvar kick = function() {\ncenterQueued = false;\nif (host.__cbranCenterGen !== watchGen) return;\nif (!getState(eventId).active || !listEl || !listEl.isConnected) return;\nvar sidNow = queuedSid;\nvar node = host.__cbranCenterEl;\nif (!node || !node.isConnected || sectionIdFrom(node) !== sidNow) node = currentSectionEl(listEl);\nif (!node || !node.isConnected) return;\nvar got = sectionIdFrom(node);\nif (!got || got !== sidNow) return;\nif (AP._lastCenteredSection[eventId] === got) return;\nif (node.getBoundingClientRect().height < 1) return;\nif (isSectionCentered(node)) { AP._lastCenteredSection[eventId] = got; return; }\nAP._lastCenteredSection[eventId] = got;\nscrollSectionToCenter(node);\n};\nif (w.requestAnimationFrame) w.requestAnimationFrame(function() { w.requestAnimationFrame(kick); });\nelse kick();\n}\nfunction bindCenterWatch() {\nclearCenterWatch();\nif (!listEl || typeof MutationObserver === 'undefined') return;\ncenterObserver = new MutationObserver(function() { centerActive(); });\ncenterObserver.observe(listEl, { childList: true, subtree: true, attributes: true, attributeFilter: ['class'] });\n}\nbindCenterWatch();\nfunction tick() {\nif (!listEl || !listEl.isConnected) { clearTick(); return; }\nif (!getState(eventId).active) return;\nif (!canEditHost) return;\nif (reconcileBusy) return;\nreconcileBusy = true;\nxhrReconcile(ajaxUrl, nonce, eventId, function(ok, changed) {\nreconcileBusy = false;\nif (!ok || !changed) return;\nif (AP._lastCenteredSection) delete AP._lastCenteredSection[eventId];\nrefreshFn(function() {\nif (host.__cbranAutopilot && typeof host.__cbranAutopilot.centerActive === 'function') host.__cbranAutopilot.centerActive();\n});\n});\n}\nfunction startTick() { clearTick(); tick(); tickTimer = setInterval(tick, 5000); }\nif (getState(eventId).active) { syncBanner(host, eventId); startTick(); }\nvar stopBtn = host.querySelector('.cbran-itinerary-autopilot-stop');\nif (stopBtn && !stopBtn.__cbranApBound) {\nstopBtn.__cbranApBound = true;\nstopBtn.addEventListener('click', function() {\nsetActive(eventId, false); syncBanner(host, eventId); clearTick();\n});\n}\nif (overlay && cancelBtn && manualBtn && enableBtn && !AP._apOverlayWired) {\nAP._apOverlayWired = true;\ncancelBtn.addEventListener('click', function() {\nhideOv(overlay);\nvar p = AP._pendingAp;\nAP._pendingAp = null;\nif (p && p.btn) { p.btn.disabled = false; p.btn.removeAttribute('aria-busy'); }\n});\nmanualBtn.addEventListener('click', function() {\nvar p = AP._pendingAp;\nif (skipCheck && p && skipCheck.checked) setSkipPrompt(p.eventId);\nhideOv(overlay);\nAP._pendingAp = null;\nif (p && typeof p.run === 'function') p.run();\n});\nenableBtn.addEventListener('click', function() {\nvar p = AP._pendingAp;\nif (!p) return;\nif (skipCheck && skipCheck.checked) setSkipPrompt(p.eventId);\nsetActive(p.eventId, true);\nsyncBanner(p.host, p.eventId);\nif (typeof p.startTickHost === 'function') p.startTickHost();\nif (p.host && p.host.__cbranAutopilot && typeof p.host.__cbranAutopilot.centerActive === 'function') p.host.__cbranAutopilot.centerActive();\nhideOv(overlay);\nAP._pendingAp = null;\nif (p.btn) { p.btn.disabled = false; p.btn.removeAttribute('aria-busy'); }\n});\n}\nhost.__cbranAutopilot = {\neventId: eventId,\nclearTick: clearTick,\nclearCenterWatch: clearCenterWatch,\ncenterActive: centerActive,\nstartTick: startTick,\ntryFirstStart: function(startBtn, row, runStart) {\nif (!canEditHost) { runStart(); return; }\nvar first = listEl.querySelector('.cbran-itinerary-start-btn');\nif (!first || startBtn !== first) { runStart(); return; }\nif (getState(eventId).active) { runStart(); return; }\nif (skipPrompt(eventId)) { runStart(); return; }\nif (!overlay || !manualBtn || !enableBtn) { runStart(); return; }\nAP._pendingAp = { btn: startBtn, run: runStart, eventId: eventId, host: host, startTickHost: startTick };\nif (skipCheck) skipCheck.checked = false;\nshowOv(overlay);\n}\n};\ncenterActive();\n};\n}\n})(window);            var root = document.getElementById(\"cbran-events-itinerary-feed-1\");\n            if (!root) return;\n            var ajaxUrl = root.getAttribute('data-cbran-ajax-url') || \"https:\\\/\\\/www.sheelersda.com\\\/m\\\/wp-admin\\\/admin-ajax.php\";\n            var feedTitle = root.getAttribute('data-cbran-feed-title') || '';\n            var renderedSig = root.getAttribute('data-cbran-rendered-eids') || '';\n            var feedScope = (root.getAttribute('data-cbran-itinerary-scope') || 'public').toLowerCase();\n            var feedFullToken = root.getAttribute('data-cbran-feed-full-token') || '';\n            var overlayId = root.getAttribute('data-cbran-overlay-id');\n            var overlayCancelId = root.getAttribute('data-cbran-overlay-cancel-id');\n            var overlayConfirmId = root.getAttribute('data-cbran-overlay-confirm-id');\n            var expandedByEvent = {};\n            var pendingReset = { wrap: null, sectionId: '', eventId: '' };\n            var toggleDebounceMs = 400;\n            var lastToggleKey = '';\n            var lastToggleTime = 0;\n            var debug = typeof window !== 'undefined' && (window.location.search.indexOf('debug=1') !== -1 || window.location.search.indexOf('&debug=1') !== -1);\n\n            function getItineraryEventJumpId() {\n                try {\n                    var p = new URLSearchParams(window.location.search);\n                    var v = p.get('cbran_itinerary_event');\n                    if (!v) return '';\n                    v = String(v).replace(\/[^0-9]\/g, '');\n                    return v || '';\n                } catch (e) { return ''; }\n            }\n            var itineraryJumpTarget = getItineraryEventJumpId();\n            var itineraryJumpDone = false;\n            function scrollToItineraryEventTarget() {\n                if (!itineraryJumpTarget || itineraryJumpDone) return;\n                var el = root.querySelector('.cbran-itinerary-feed-event-wrap[data-event-id=\"' + itineraryJumpTarget + '\"]');\n                if (!el) return;\n                itineraryJumpDone = true;\n                el.scrollIntoView({ behavior: 'smooth', block: 'start' });\n                el.classList.add('cbran-itinerary-feed-jump-highlight');\n                setTimeout(function() { el.classList.remove('cbran-itinerary-feed-jump-highlight'); }, 4500);\n            }\n\n            function restoreExpandedForList(listEl, eventId) {\n                var o = expandedByEvent[eventId];\n                if (!o) return;\n                var sectionIds = Object.keys(o);\n                if (!sectionIds.length) return;\n                var cards = listEl.querySelectorAll('.cbran-public-itinerary-card[data-expandable=\"1\"]');\n                for (var i = 0; i < sectionIds.length; i++) {\n                    var sid = sectionIds[i];\n                    if (!sid) continue;\n                    for (var j = 0; j < cards.length; j++) {\n                        var row = cards[j].querySelector('.cbran-itinerary-detail-row');\n                        if (!row || row.getAttribute('data-section-id') !== sid) continue;\n                        var body = cards[j].querySelector('.cbran-public-itinerary-card-body');\n                        var chevron = cards[j].querySelector('.cbran-public-card-chevron');\n                        if (body) {\n                            body.style.display = 'block';\n                            body.setAttribute('aria-hidden', 'false');\n                        }\n                        if (chevron) chevron.style.transform = 'rotate(180deg)';\n                        cards[j].classList.add('cbran-expanded');\n                        break;\n                    }\n                }\n            }\n\n            function refreshWrap(wrap, callback) {\n                var eid = wrap.getAttribute('data-eid');\n                var eventId = wrap.getAttribute('data-event-id');\n                var listEl = wrap.querySelector('.cbran-itinerary-feed-list-inner');\n                if (!listEl || !eid) {\n                    if (typeof callback === 'function') callback();\n                    return;\n                }\n                var xhr = new XMLHttpRequest();\n                var url = ajaxUrl + '?action=cbran_get_public_event_itinerary_html&eid=' + encodeURIComponent(eid) + '&itinerary_feed=1';\n                if (feedScope === 'full' && feedFullToken) {\n                    url += '&page_scope=full&feed_full_token=' + encodeURIComponent(feedFullToken);\n                }\n                url += '&_=' + (Date.now ? Date.now() : new Date().getTime());\n                xhr.open('GET', url, true);\n                xhr.withCredentials = true;\n                xhr.onreadystatechange = function() {\n                    if (xhr.readyState !== 4) return;\n                    if (debug && xhr.status !== 200) console.warn('[cbran itinerary feed] Refresh failed', xhr.status, url);\n                    if (xhr.status === 200) {\n                        try {\n                            var res = JSON.parse(xhr.responseText);\n                            if (res.success && res.data && res.data.html !== undefined) {\n                                listEl.innerHTML = res.data.html;\n                                restoreExpandedForList(listEl, eventId);\n                            }\n                        } catch (err) {\n                            if (debug) console.warn('[cbran itinerary feed] Parse error', err);\n                        }\n                    }\n                    if (typeof callback === 'function') callback();\n                };\n                xhr.send();\n            }\n\n            var apOvBase = root.getAttribute('data-cbran-ap-ov-base') || '';\n            function bootAutopilotForFeedWraps() {\n                if (!window.CbranItineraryAutopilot || !window.CbranItineraryAutopilot.bootHost || !apOvBase) return;\n                var ov = document.getElementById(apOvBase + '-autopilot');\n                var c = document.getElementById(apOvBase + '-autopilot-cancel');\n                var m = document.getElementById(apOvBase + '-autopilot-manual');\n                var en = document.getElementById(apOvBase + '-autopilot-enable');\n                var sk = document.getElementById(apOvBase + '-autopilot-skip');\n                if (!ov) return;\n                var wraps = root.querySelectorAll('[data-cbran-itinerary-feed-wrap]');\n                for (var wi = 0; wi < wraps.length; wi++) {\n                    var w = wraps[wi];\n                    if (w.__cbranApWired) continue;\n                    var listElW = w.querySelector('.cbran-itinerary-feed-list-inner');\n                    if (!listElW) continue;\n                    w.__cbranApWired = true;\n                    window.CbranItineraryAutopilot.bootHost({\n                        host: w,\n                        listEl: listElW,\n                        ajaxUrl: w.getAttribute('data-ajax-url') || ajaxUrl,\n                        nonce: w.getAttribute('data-nonce'),\n                        eventId: w.getAttribute('data-event-id'),\n                        canEdit: w.getAttribute('data-can-edit') === '1',\n                        overlayEl: ov,\n                        cancelEl: c,\n                        manualEl: m,\n                        enableEl: en,\n                        skipCheckEl: sk,\n                        refreshFn: function(cb) { refreshWrap(w, cb); }\n                    });\n                }\n            }\n            bootAutopilotForFeedWraps();\n\n            function refreshAll() {\n                var wraps = root.querySelectorAll('[data-cbran-itinerary-feed-wrap]');\n                for (var i = 0; i < wraps.length; i++) refreshWrap(wraps[i]);\n            }\n\n            function pollFeedStructureThenRefreshRows() {\n                var url = ajaxUrl + '?action=cbran_get_public_events_itinerary_feed_poll&feed_scope=' + encodeURIComponent(feedScope) + '&feed_title=' + encodeURIComponent(feedTitle) + '&sig=' + encodeURIComponent(renderedSig);\n                if (feedScope === 'full' && feedFullToken) {\n                    url += '&feed_full_token=' + encodeURIComponent(feedFullToken);\n                }\n                url += '&_=' + (Date.now ? Date.now() : new Date().getTime());\n                var xhr = new XMLHttpRequest();\n                xhr.open('GET', url, true);\n                xhr.withCredentials = true;\n                xhr.onreadystatechange = function() {\n                    if (xhr.readyState !== 4) return;\n                    if (xhr.status === 200) {\n                        try {\n                            var res = JSON.parse(xhr.responseText);\n                            if (res.success && res.data) {\n                                if (res.data.html_inner !== undefined) {\n                                    var live = root.querySelector('.cbran-events-itinerary-feed-live-inner');\n                                    if (live) live.innerHTML = res.data.html_inner;\n                                }\n                                if (res.data.rendered_eids !== undefined) {\n                                    renderedSig = res.data.rendered_eids;\n                                    root.setAttribute('data-cbran-rendered-eids', renderedSig);\n                                }\n                            }\n                        } catch (err) {\n                            if (debug) console.warn('[cbran itinerary feed] poll parse', err);\n                        }\n                    }\n                    refreshAll();\n                    setTimeout(scrollToItineraryEventTarget, 200);\n                    var feeds = root.querySelectorAll('[data-cbran-itinerary-feed-wrap]');\n                    for (var qi = 0; qi < feeds.length; qi++) feeds[qi].__cbranApWired = false;\n                    bootAutopilotForFeedWraps();\n                };\n                xhr.send();\n            }\n\n            setInterval(pollFeedStructureThenRefreshRows, 2000);\n            setTimeout(pollFeedStructureThenRefreshRows, 300);\n            setTimeout(scrollToItineraryEventTarget, 900);\n            document.addEventListener('visibilitychange', function() {\n                if (document.visibilityState === 'visible') pollFeedStructureThenRefreshRows();\n            });\n            window.addEventListener('focus', pollFeedStructureThenRefreshRows);\n            window.addEventListener('pageshow', function(ev) {\n                if (ev.persisted) pollFeedStructureThenRefreshRows();\n            });\n\n            root.addEventListener('click', function(e) {\n                var wrap = e.target.closest('[data-cbran-itinerary-feed-wrap]');\n                if (!wrap || !root.contains(wrap)) return;\n                var eventId = wrap.getAttribute('data-event-id');\n                var canEdit = wrap.getAttribute('data-can-edit') === '1';\n                var wrapAjax = wrap.getAttribute('data-ajax-url') || ajaxUrl;\n                var nonce = wrap.getAttribute('data-nonce');\n\n                var card = e.target.closest('.cbran-public-itinerary-card[data-expandable=\"1\"]');\n                if (card && wrap.contains(card) && !e.target.closest('.cbran-itinerary-start-btn, .cbran-itinerary-reset-btn, .cbran-itinerary-complete-btn')) {\n                    if (e.target.closest('.cbran-public-itinerary-card-body')) return;\n                    var row = card.querySelector('.cbran-itinerary-detail-row');\n                    var sectionId = row ? row.getAttribute('data-section-id') : '';\n                    var body = card.querySelector('.cbran-public-itinerary-card-body');\n                    var chevron = card.querySelector('.cbran-public-card-chevron');\n                    if (!body || !sectionId) return;\n                    var now = Date.now ? Date.now() : new Date().getTime();\n                    var tKey = eventId + ':' + sectionId;\n                    if (tKey === lastToggleKey && (now - lastToggleTime) < toggleDebounceMs) {\n                        e.preventDefault();\n                        e.stopPropagation();\n                        return;\n                    }\n                    lastToggleKey = tKey;\n                    lastToggleTime = now;\n                    var isHidden = body.style.display === 'none' || body.getAttribute('aria-hidden') === 'true';\n                    if (!expandedByEvent[eventId]) expandedByEvent[eventId] = {};\n                    if (isHidden) {\n                        body.style.display = 'block';\n                        body.setAttribute('aria-hidden', 'false');\n                        if (chevron) chevron.style.transform = 'rotate(180deg)';\n                        card.classList.add('cbran-expanded');\n                        expandedByEvent[eventId][sectionId] = true;\n                    } else {\n                        body.style.display = 'none';\n                        body.setAttribute('aria-hidden', 'true');\n                        if (chevron) chevron.style.transform = 'rotate(0deg)';\n                        card.classList.remove('cbran-expanded');\n                        delete expandedByEvent[eventId][sectionId];\n                    }\n                    return;\n                }\n\n                if (!nonce) return;\n\n                var startBtn = e.target.closest('.cbran-itinerary-start-btn');\n                if (startBtn && wrap.contains(startBtn)) {\n                    e.preventDefault();\n                    if (!canEdit) return;\n                    var rowS = startBtn.closest('.cbran-itinerary-detail-row');\n                    var sidS = rowS ? rowS.getAttribute('data-section-id') : '';\n                    var evIdS = rowS ? rowS.getAttribute('data-event-id') : '';\n                    if (!sidS || !evIdS) return;\n                    var runStart = function() {\n                    startBtn.disabled = true;\n                    startBtn.setAttribute('aria-busy', 'true');\n                    var fd = new FormData();\n                    fd.append('action', 'cbran_set_itinerary_section_in_progress');\n                    fd.append('nonce', nonce);\n                    fd.append('event_id', evIdS);\n                    fd.append('section_id', sidS);\n                    var x = new XMLHttpRequest();\n                    x.open('POST', wrapAjax, true);\n                    x.withCredentials = true;\n                    x.onreadystatechange = function() {\n                        if (x.readyState === 4) {\n                            startBtn.disabled = false;\n                            startBtn.removeAttribute('aria-busy');\n                            if (x.status === 200) {\n                                try {\n                                    var r = JSON.parse(x.responseText);\n                                    if (r.success) refreshWrap(wrap);\n                                } catch (e2) {}\n                            }\n                        }\n                    };\n                    x.send(fd);\n                    };\n                    if (wrap.__cbranAutopilot && typeof wrap.__cbranAutopilot.tryFirstStart === 'function') {\n                        wrap.__cbranAutopilot.tryFirstStart(startBtn, rowS, runStart);\n                    } else {\n                        runStart();\n                    }\n                    return;\n                }\n\n                var completeBtn = e.target.closest('.cbran-itinerary-complete-btn');\n                if (completeBtn && wrap.contains(completeBtn)) {\n                    e.preventDefault();\n                    if (!canEdit) return;\n                    var rowC = completeBtn.closest('.cbran-itinerary-detail-row');\n                    var sidC = rowC ? rowC.getAttribute('data-section-id') : '';\n                    var evIdC = rowC ? rowC.getAttribute('data-event-id') : '';\n                    if (!sidC || !evIdC) return;\n                    completeBtn.disabled = true;\n                    completeBtn.setAttribute('aria-busy', 'true');\n                    var fd2 = new FormData();\n                    fd2.append('action', 'cbran_toggle_itinerary_section');\n                    fd2.append('nonce', nonce);\n                    fd2.append('event_id', evIdC);\n                    fd2.append('section_id', sidC);\n                    var x2 = new XMLHttpRequest();\n                    x2.open('POST', wrapAjax, true);\n                    x2.withCredentials = true;\n                    x2.onreadystatechange = function() {\n                        if (x2.readyState === 4) {\n                            completeBtn.disabled = false;\n                            completeBtn.removeAttribute('aria-busy');\n                            if (x2.status === 200) {\n                                try {\n                                    var r2 = JSON.parse(x2.responseText);\n                                    if (r2.success) refreshWrap(wrap);\n                                } catch (e3) {}\n                            }\n                        }\n                    };\n                    x2.send(fd2);\n                    return;\n                }\n\n                var resetBtn = e.target.closest('.cbran-itinerary-reset-btn');\n                if (resetBtn && wrap.contains(resetBtn)) {\n                    e.preventDefault();\n                    if (!canEdit) return;\n                    var rowR = resetBtn.closest('.cbran-itinerary-detail-row');\n                    var sidR = rowR ? rowR.getAttribute('data-section-id') : '';\n                    var evIdR = rowR ? rowR.getAttribute('data-event-id') : '';\n                    if (!sidR || !evIdR || !overlayId) return;\n                    pendingReset.sectionId = sidR;\n                    pendingReset.eventId = evIdR;\n                    pendingReset.wrap = wrap;\n                    var ov = document.getElementById(overlayId);\n                    if (ov) {\n                        if (ov.parentNode !== document.body) document.body.appendChild(ov);\n                        ov.style.display = 'flex';\n                        ov.setAttribute('aria-hidden', 'false');\n                        document.body.classList.add('cbran-public-overlay-open');\n                    }\n                }\n            });\n\n            var resetCancelBtn = overlayCancelId ? document.getElementById(overlayCancelId) : null;\n            var resetConfirmBtn = overlayConfirmId ? document.getElementById(overlayConfirmId) : null;\n            if (resetCancelBtn) resetCancelBtn.addEventListener('click', function() {\n                var ov = overlayId ? document.getElementById(overlayId) : null;\n                if (ov) { ov.style.display = 'none'; ov.setAttribute('aria-hidden', 'true'); }\n                document.body.classList.remove('cbran-public-overlay-open');\n            });\n            if (resetConfirmBtn) resetConfirmBtn.addEventListener('click', function() {\n                if (!pendingReset.sectionId || !pendingReset.eventId || !pendingReset.wrap) return;\n                var w = pendingReset.wrap;\n                var n = w.getAttribute('data-nonce');\n                var wa = w.getAttribute('data-ajax-url') || ajaxUrl;\n                var ov = overlayId ? document.getElementById(overlayId) : null;\n                if (!n) return;\n                resetConfirmBtn.disabled = true;\n                var fd3 = new FormData();\n                fd3.append('action', 'cbran_reset_itinerary_section');\n                fd3.append('nonce', n);\n                fd3.append('event_id', pendingReset.eventId);\n                fd3.append('section_id', pendingReset.sectionId);\n                var x3 = new XMLHttpRequest();\n                x3.open('POST', wa, true);\n                x3.withCredentials = true;\n                x3.onreadystatechange = function() {\n                    if (x3.readyState === 4) {\n                        resetConfirmBtn.disabled = false;\n                        if (ov) { ov.style.display = 'none'; ov.setAttribute('aria-hidden', 'true'); }\n                        document.body.classList.remove('cbran-public-overlay-open');\n                        if (x3.status === 200) {\n                            try {\n                                var r3 = JSON.parse(x3.responseText);\n                                if (r3.success && pendingReset.wrap) refreshWrap(pendingReset.wrap);\n                            } catch (e4) {}\n                        }\n                    }\n                };\n                x3.send(fd3);\n            });\n        })();\n        <\/script>\n        [\/vc_column_text][\/vc_column][\/vc_row]<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>[vc_row][vc_column][vc_column_text css=\u00bb\u00bb woodmart_inline=\u00bbno\u00bb text_larger=\u00bbno\u00bb][\/vc_column_text][\/vc_column][\/vc_row]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"wpai_generated_summary":"","wpai_meta_description":"","footnotes":""},"class_list":["post-10846","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.sheelersda.com\/m\/wp-json\/wp\/v2\/pages\/10846","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sheelersda.com\/m\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.sheelersda.com\/m\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.sheelersda.com\/m\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sheelersda.com\/m\/wp-json\/wp\/v2\/comments?post=10846"}],"version-history":[{"count":2,"href":"https:\/\/www.sheelersda.com\/m\/wp-json\/wp\/v2\/pages\/10846\/revisions"}],"predecessor-version":[{"id":10852,"href":"https:\/\/www.sheelersda.com\/m\/wp-json\/wp\/v2\/pages\/10846\/revisions\/10852"}],"wp:attachment":[{"href":"https:\/\/www.sheelersda.com\/m\/wp-json\/wp\/v2\/media?parent=10846"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}