PageSourceSearch

https://suttersaga.com/Themes/BBCC2026/Scripts/compass.js?v=639229593238550072

js suttersaga.com collected 2026-09-27 04:00:27 UTC 50,113 bytes, 1,165 lines download raw bytes

1(function () {
2'use strict';
3
4const compassState = window.bbccCompassState || (window.bbccCompassState = {
5    mediaQuery: null,
6    mediaHandler: null,
7    retryTimer: null,
8    shellScrollTarget: null,
9    shellScrollHandler: null,
10    shellScrollSettleTimer: null
11});
12
13const bindCompassCompactNavigation = () => {
14    const mainNav = document.getElementById('mainNav');
15    const scrollTarget = document.body;
16
17    if (!mainNav || !scrollTarget) {
18        return;
19    }
20
21    if (compassState.shellScrollHandler) {
22        window.removeEventListener('scroll', compassState.shellScrollHandler);
23        if (compassState.shellScrollTarget) {
24            compassState.shellScrollTarget.removeEventListener('scroll', compassState.shellScrollHandler);
25        }
26    }
27
28    if (compassState.shellScrollSettleTimer) {
29        clearTimeout(compassState.shellScrollSettleTimer);
30    }
31
32    const updateCompactState = () => {
33        const scrollTop = Math.max(
34            scrollTarget.scrollTop || 0,
35            document.documentElement.scrollTop || 0,
36            window.scrollY || 0
37        );
38        mainNav.classList.toggle('bbcc-nav-compact', scrollTop > 60);
39    };
40
41    compassState.shellScrollHandler = () => {
42        updateCompactState();
43        clearTimeout(compassState.shellScrollSettleTimer);
44        compassState.shellScrollSettleTimer = setTimeout(updateCompactState, 120);
45    };
46
47    compassState.shellScrollTarget = scrollTarget;
48    compassState.shellScrollTarget.addEventListener('scroll', compassState.shellScrollHandler, { passive: true });
49    window.addEventListener('scroll', compassState.shellScrollHandler, { passive: true });
50    updateCompactState();
51};
52
53const migrateCompassNavigationIcons = () => {
54    const iconMap = [
55        ['#mainNav .fa.fa-angle-down', 'fa-angle-down', 'ti-chevron-down'],
56        ['#mainNav .fa.fa-sign-in', 'fa-sign-in', 'ti-login-2'],
57        ['#mainNav .fa.fa-sign-out', 'fa-sign-out', 'ti-logout-2']
58    ];
59
60    iconMap.forEach(([selector, fontAwesomeClass, tablerClass]) => {
61        document.querySelectorAll(selector).forEach((icon) => {
62            icon.classList.remove('fa', fontAwesomeClass);
63            icon.classList.add('ti', tablerClass);
64        });
65    });
66
67    const logoutLink = document.querySelector('#mainNav .nav-profile-logout');
68    if (logoutLink) {
69        logoutLink.setAttribute('aria-label', 'Log out');
70        logoutLink.setAttribute('title', 'Log out');
71    }
72
73    const navbarToggle = document.querySelector('#mainNav .navbar-toggle');
74    if (navbarToggle) {
75        navbarToggle.setAttribute('aria-controls', 'compass-nav');
76        if (!navbarToggle.getAttribute('aria-label')) {
77            navbarToggle.setAttribute('aria-label', 'Toggle navigation');
78        }
79    }
80};
81
82const initCompass = (state = 'load') => {
83
84    var $mainNav = $("#mainNav");
85    migrateCompassNavigationIcons();
86    bindCompassCompactNavigation();
87    var $compassNav = $('#compass-nav');
88
89    function removeInvalidCollapseAria() {
90        // Bootstrap 3 mirrors aria-expanded onto the collapsible container.
91        // Modern ARIA permits it on the controlling button, not this div.
92        $compassNav.removeAttr('aria-expanded');
93    }
94
95    $compassNav
96        .off('show.bs.collapse.compass hide.bs.collapse.compass shown.bs.collapse.compass hidden.bs.collapse.compass')
97        .on('show.bs.collapse.compass', function () {
98            $mainNav.addClass("navOpen");
99        })
100        .on('hide.bs.collapse.compass', function () {
101            $mainNav.removeClass("navOpen");
102        })
103        .on('shown.bs.collapse.compass hidden.bs.collapse.compass', function () {
104            removeInvalidCollapseAria();
105        });
106    removeInvalidCollapseAria();
107
108    // Highlight the top nav as scrolling occurs
109    $('body').scrollspy({
110        target: '.navbar-fixed-top',
111        offset: 51
112    });
113
114    // Closes the Responsive Menu on Menu Item Click
115    $('#compass-nav li a:not(.dropdown-toggle)').off('click.compassNav').on('click.compassNav', function() {
116        //$('.navbar-toggle:visible').click();
117        $mainNav.removeClass("navOpen");
118    });
119
120    // Offset for Main Navigation
121    $('#mainNav').affix({
122        offset: {
123            top: 100
124        }
125    })
126
127	var backTop = document.getElementsByClassName('js-compass-top')[0],
128		// browser window scroll (in pixels) after which the "back to top" link is shown
129		offset = 300,
130		//browser window scroll (in pixels) after which the "back to top" link opacity is reduced
131		offsetOpacity = 1200,
132		scrollDuration = 700,
133		scrolling = false;
134    if ( backTop && !backTop.getAttribute('data-compass-back-top-bound') ) {
135        backTop.setAttribute('data-compass-back-top-bound', 'true');
136        // Update back-to-top visibility on scrolling.
137        window.addEventListener("scroll", function() {
138            if ( !scrolling ) {
139                scrolling = true;
140                (!window.requestAnimationFrame) ? setTimeout(checkBackToTop, 250) : window.requestAnimationFrame(checkBackToTop);
141            }
142        });
143        // Smooth scroll to top.
144        backTop.addEventListener('click', function(event) {
145            event.preventDefault();
146            (!window.requestAnimationFrame) ? window.scrollTo(0, 0) : scrollTop(scrollDuration);
147        });
148    }
149
150	function checkBackToTop() {
151		var windowTop = window.scrollY || document.documentElement.scrollTop;
152		( windowTop > offset ) ? addClass(backTop, 'compass-top--show') : removeClass(backTop, 'compass-top--show', 'compass-top--fade-out');
153		( windowTop > offsetOpacity ) && addClass(backTop, 'compass-top--fade-out');
154		scrolling = false;
155	}
156
157	function scrollTop(duration) {
158	    var start = window.scrollY || document.documentElement.scrollTop,
159	        currentTime = null;
160
161	    var animateScroll = function(timestamp){
162	    	if (!currentTime) currentTime = timestamp;
163	        var progress = timestamp - currentTime;
164	        var val = Math.max(Math.easeInOutQuad(progress, start, -start, duration), 0);
165	        window.scrollTo(0, val);
166	        if(progress < duration) {
167	            window.requestAnimationFrame(animateScroll);
168	        }
169	    };
170
171	    window.requestAnimationFrame(animateScroll);
172	}
173
174	Math.easeInOutQuad = function (t, b, c, d) {
175 		t /= d/2;
176		if (t < 1) return c/2*t*t + b;
177		t--;
178		return -c/2 * (t*(t-2) - 1) + b;
179	};
180
181	//class manipulations - needed if classList is not supported
182	function hasClass(el, className) {
183	  	if (el.classList) return el.classList.contains(className);
184	  	else return !!el.className.match(new RegExp('(\\s|^)' + className + '(\\s|$)'));
185	}
186	function addClass(el, className) {
187		var classList = className.split(' ');
188	 	if (el.classList) el.classList.add(classList[0]);
189	 	else if (!hasClass(el, classList[0])) el.className += " " + classList[0];
190	 	if (classList.length > 1) addClass(el, classList.slice(1).join(' '));
191	}
192	function removeClass(el, className) {
193		var classList = className.split(' ');
194	  	if (el.classList) el.classList.remove(classList[0]);
195	  	else if(hasClass(el, classList[0])) {
196	  		var reg = new RegExp('(\\s|^)' + classList[0] + '(\\s|$)');
197	  		el.className=el.className.replace(reg, ' ');
198	  	}
199	  	if (classList.length > 1) removeClass(el, classList.slice(1).join(' '));
200	}
201
202	/**************************************/
203	/*** Multi-Level Drop Down Addition ***/
204	/**************************************/
205
206	// grab user's desktop-to-mobile width preference
207    let compassMaxMobileWidth = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--mobile-menu'), 10) + 1;
208
209    // Check if responsive menu need
210    function screenIsCompassMobile(max_width) {
211        "use strict";
212        var rez = false;
213        if (max_width > 0) {
214            var w = window.innerWidth;
215            if (w === undefined) {
216                w = jQuery(window).width()+(jQuery(window).height() < jQuery(document).height() || jQuery(window).scrollTop() > 0 ? 16 : 0);
217            }
218            rez = max_width > w;
219        }
220        return rez;
221    }
222
223    let superfish = () => {
224        if (screenIsCompassMobile(compassMaxMobileWidth)) {
225        } else {
226        $('ul.sf-menu').superfish({
227                delay: 0,
228                animation: {
229                    opacity: 'show'
230                },
231                animationOut: {
232                    opacity: 'hide'
233                },
234                speed: 	'fast',
235                speedOut:	'fast',
236                autoArrows: false,
237                dropShadows: true,
238                onBeforeShow: function(ul) {
239                    if ($(this).parents("ul").length > 1){
240                        var w = $(window).width();
241                        var par_offset = $(this).parents("ul").offset().left;
242                        var par_width  = $(this).parents("ul").outerWidth();
243                        var ul_width   = $(this).outerWidth();
244                        if (par_offset+par_width+ul_width > w-20 && par_offset-ul_width > 0) {
245                            $(this).addClass('submenu_left');
246                        } else {
247                            $(this).removeClass('submenu_left');
248                        }
249                    }
250                },
251                onBeforeHide: function(ul) {}
252            });
253        };
254    }
255
256    function bindMobileSubmenus() {
257        $('.dropdown-submenu a.dropdown-submenu-toggle')
258            .off('click.compassSubmenu')
259            .on('click.compassSubmenu', function(e) {
260                $(this).toggleClass('open');
261                $(this).next('ul').slideToggle();
262                e.stopPropagation();
263                e.preventDefault();
264            });
265    }
266
267    // The accessible split label/toggle markup places the Bootstrap toggle
268    // inside .nav-split instead of directly inside the dropdown <li>. Bootstrap
269    // 3 consequently adds .open to the wrapper and leaves the actual menu
270    // hidden. Own the top-level state here so hover, keyboard and touch all
271    // update the element Bootstrap's CSS expects.
272    function bindSplitNavigation() {
273        var $nav = $('#compass-nav');
274        var $items = $nav.find('.navbar-nav > li.dropdown');
275
276        function setOpen($item, open) {
277            var $toggle = $item.children('.nav-split').find('> .nav-split__toggle');
278            $item.toggleClass('open', open);
279            $item.children('.nav-split').toggleClass('open', open);
280            $toggle.attr('aria-expanded', open ? 'true' : 'false');
281
282            var $menu = $item.children('.dropdown-menu');
283            if (open) {
284                $menu.stop(true, true).show();
285            } else {
286                $item.removeClass('sfHover');
287                $menu.stop(true, true).removeAttr('style');
288            }
289        }
290
291        function closeSiblings($item) {
292            $item.siblings('li.dropdown').each(function () {
293                setOpen($(this), false);
294            });
295        }
296
297        $items.off('.bbccSplitNav');
298        $items.children('.nav-split').find('> .nav-split__toggle').off('.bbccSplitNav');
299        $(document).off('click.bbccSplitNav');
300
301        $items
302            .on('mouseenter.bbccSplitNav', function () {
303                if (!screenIsCompassMobile(compassMaxMobileWidth)) {
304                    closeSiblings($(this));
305                    setOpen($(this), true);
306                }
307            })
308            .on('mouseleave.bbccSplitNav', function () {
309                if (!screenIsCompassMobile(compassMaxMobileWidth)) {
310                    setOpen($(this), false);
311                }
312            })
313            .on('focusout.bbccSplitNav', function () {
314                var $item = $(this);
315                window.setTimeout(function () {
316                    if (!$item.find(':focus').length) setOpen($item, false);
317                }, 0);
318            })
319            .on('keydown.bbccSplitNav', function (event) {
320                var $item = $(this);
321                var $targetToggle = $(event.target).closest('.nav-split__toggle');
322
323                if ($targetToggle.length && (event.key === 'Enter' || event.key === ' ')) {
324                    event.preventDefault();
325                    event.stopPropagation();
326                    $targetToggle.trigger('click');
327                    return;
328                }
329
330                if (event.key !== 'Escape') return;
331
332                event.preventDefault();
333                event.stopPropagation();
334                $item.children('.nav-split').find('> .nav-split__toggle').focus();
335                setOpen($item, false);
336            });
337
338        $items.children('.nav-split').find('> .nav-split__toggle')
339            .on('click.bbccSplitNav', function (event) {
340                event.preventDefault();
341                event.stopImmediatePropagation();
342                var $item = $(this).closest('li.dropdown');
343                var open = !$item.hasClass('open');
344                closeSiblings($item);
345                setOpen($item, open);
346            });
347
348        $(document).on('click.bbccSplitNav', function (event) {
349            if (!$(event.target).closest('#compass-nav .navbar-nav > li.dropdown').length) {
350                $items.each(function () { setOpen($(this), false); });
351            }
352        });
353    }
354
355    // Make Secondary Dropdown on Click
356    if (screenIsCompassMobile(compassMaxMobileWidth)) {
357        // initiate bootstrap default dropdowns
358        $('#compass-nav .dropdown-toggle').dropdown();
359        bindMobileSubmenus();
360    }
361
362   // Clear secondary dropdowns on.Hidden
363   $('#compass-nav').off('hidden.bs.dropdown.compass').on('hidden.bs.dropdown.compass', function () {
364      $('.navbar-nav .dropdown-submenu a.dropdown-submenu-toggle').removeClass('open');
365      $('.navbar-nav .dropdown-submenu ul.dropdown-menu').removeAttr('style');
366   });
367
368   // Create a condition that targets viewports at least 768px wide
369    const mediaQuery = window.matchMedia('(min-width: '+compassMaxMobileWidth+'px)')
370
371    function handleTabletChange(e) {
372        // Check if the media query is true
373        $('ul.sf-menu').superfish('destroy'); 
374        $('.dropdown-submenu a.dropdown-submenu-toggle').off('click.compassSubmenu');
375
376        if (e.matches) {
377            // Then log the following message to the console
378            $("#mainNav button.navbar-toggle").attr("aria-expanded","fal
378se").addClass("collapsed");
379            $('#compass-nav').collapse('hide');
380            $('.dropdown-submenu a.dropdown-submenu-toggle').removeClass('open');
381            superfish();
382        } else {
383            // initiate bootstrap default dropdowns
384            $('#compass-nav .dropdown-toggle').dropdown();
385
386            bindMobileSubmenus();
387        }
388    }
389
390    // Add slideDown animation to Bootstrap dropdown when expanding.
391    $('#compass-nav .dropdown').off('show.bs.dropdown.compass').on('show.bs.dropdown.compass', function() {
392        if (screenIsCompassMobile(compassMaxMobileWidth)) {
393            $(this).find('.dropdown-menu').first().stop(true, true).slideDown();
394        }
395    });
396    // Add slideUp animation to Bootstrap dropdown when collapsing.
397    $('#compass-nav .dropdown').off('hide.bs.dropdown.compass').on('hide.bs.dropdown.compass', function() {
398        if (screenIsCompassMobile(compassMaxMobileWidth)) {
399            $(this).find('.dropdown-menu').first().stop(true, true).slideUp();
400        }
401    });
402    
403    // Keep exactly one responsive breakpoint listener across Rock partial-page loads.
404    if (compassState.mediaQuery && compassState.mediaHandler) {
405        compassState.mediaQuery.removeEventListener('change', compassState.mediaHandler);
406    }
407    compassState.mediaQuery = mediaQuery;
408    compassState.mediaHandler = handleTabletChange;
409    compassState.mediaQuery.addEventListener('change', compassState.mediaHandler);
410    handleTabletChange(compassState.mediaQuery);
411    bindSplitNavigation();
412}
413
414const runCompass = (state = 'reload') => {
415    if (!window.jQuery) {
416        if (compassState.retryTimer === null) {
417            compassState.retryTimer = window.setTimeout(function () {
418                compassState.retryTimer = null;
419                runCompass(state);
420            }, 100);
421        }
422        return;
423    }
424
425    initCompass(state);
426};
427
428// Initialize the full page, then safely refresh bindings after Rock partial-page loads.
429runCompass('load');
430Sys.Application.add_load(function () {
431    runCompass('reload');
432});
433
434})();
435
436/* BBCC2026 remaining-page cleanup adapter — 2026-08-03 */
437(function () {
438  "use strict";
439
440  var state = window.BBCC2026RemainingPageAdapter || (window.BBCC2026RemainingPageAdapter = {
441    bound: false
442  });
443
444  function removeStrayMarkdownFence() {
445    var content = document.querySelector("#bid_8853 .content-split__text");
446    if (!content) return;
447
448    Array.prototype.slice.call(content.childNodes).forEach(function (node) {
449      if (node.nodeType === 3 && node.nodeValue.trim() === "```") {
450        content.removeChild(node);
451      }
452    });
453  }
454
455  function upgradeAuditionWorkflowLink() {
456    var link = document.querySelector('#bid_8780 a[href^="http://my.bbcc.church/ExternalWorkflowEntry/"]');
457    if (link) link.href = link.href.replace(/^http:\/\//i, "https://");
458  }
459
460  function enhanceRemainingPages() {
461    removeStrayMarkdownFence();
462    upgradeAuditionWorkflowLink();
463  }
464
465  enhanceRemainingPages();
466
467  if (!state.bound) {
468    state.bound = true;
469
470    if (document.readyState === "loading") {
471      document.addEventListener("DOMContentLoaded", enhanceRemainingPages);
472    }
473
474    if (window.Sys && Sys.Application) {
475      Sys.Application.add_load(enhanceRemainingPages);
476    }
477  }
478})();
479/* BBCC2026 leadership card/dialog accessibility adapter — 2026-08-02 */
480(function () {
481  "use strict";
482
483  var state = window.bbccLeadershipA11y || (window.bbccLeadershipA11y = {
484    bound: false,
485    opener: null
486  });
487
488  function enhanceLeadership() {
489    var modal = document.getElementById("staffModal");
490    if (!modal) return;
491
492    var name = document.getElementById("staffModalName");
493    var close = modal.querySelector(".staff-modal__close");
494
495    modal.setAttribute("role", "dialog");
496    modal.setAttribute("aria-modal", "true");
497    modal.setAttribute("tabindex", "-1");
498
499    if (name) {
500      name.id = "staffModalName";
501      modal.setAttribute("aria-labelledby", name.id);
502    }
503
504    if (close) close.setAttribute("aria-label", "Close leadership profile");
505
506    Array.prototype.forEach.call(document.querySelectorAll(".staff-card"), function (card) {
507      card.setAttribute("role", "button");
508      card.setAttribute("tabindex", "0");
509      card.setAttribute("aria-haspopup", "dialog");
510      var cardName = card.getAttribute("data-name") || "leadership profile";
511      card.setAttribute("aria-label", "Read more about " + cardName);
512    });
513  }
514
515  function bindOnce() {
516    if (state.bound) return;
517    state.bound = true;
518
519    document.addEventListener("keydown", function (event) {
520      if (event.key === "Escape" && state.opener) {
521        window.setTimeout(function () {
522          if (state.opener && document.contains(state.opener)) state.opener.focus();
523        }, 0);
524      }
525
526      var card = event.target && event.target.closest ? event.target.closest(".staff-card") : null;
527      if (card && (event.key === "Enter" || event.key === " ")) {
528        event.preventDefault();
529        state.opener = card;
530        card.click();
531        window.setTimeout(function () {
532          var close = document.querySelector("#staffModal.is-open .staff-modal__close");
533          if (close) close.focus();
534        }, 0);
535      }
536    });
537
538    document.addEventListener("click", function (event) {
539      var card = event.target && event.target.closest ? event.target.closest(".staff-card") : null;
540      if (card) {
541        state.opener = card;
542        window.setTimeout(function () {
543          var close = document.querySelector("#staffModal.is-open .staff-modal__close");
544          if (close) close.focus();
545        }, 0);
546        return;
547      }
548
549      var closesModal = event.target && event.target.closest &&
550        event.target.closest("#staffModal .staff-modal__close, #staffModal .staff-modal__overlay");
551      if (closesModal && state.opener) {
552        window.setTimeout(function () {
553          if (state.opener && document.contains(state.opener)) state.opener.focus();
554        }, 0);
555      }
556    });
557  }
558
559  function init() {
560    enhanceLeadership();
561    bindOnce();
562  }
563
564  if (document.readyState === "loading") {
565    document.addEventListener("DOMContentLoaded", init);
566  } else {
567    init();
568  }
569
570  if (window.Sys && Sys.Application) {
571    Sys.Application.add_load(enhanceLeadership);
572  }
573})();
574
575/* BBCC2026 activation-readiness semantic adapter — 2026-08-03 */
576(function () {
577  "use strict";
578
579  var state = window.BBCC2026ActivationReadiness || (window.BBCC2026ActivationReadiness = {
580    bound: false
581  });
582
583  function ensureMainLandmark() {
584    if (document.querySelector("main, [role='main']")) return;
585    var mainZone = document.querySelector("#zone-main");
586    if (mainZone) mainZone.setAttribute("role", "main");
587  }
588
589  ensureMainLandmark();
590
591  if (!state.bound) {
592    state.bound = true;
593
594    if (document.readyState === "loading") {
595      document.addEventListener("DOMContentLoaded", ensureMainLandmark);
596    }
597
598    if (window.Sys && Sys.Application) {
599      Sys.Application.add_load(ensureMainLandmark);
600    }
601  }
602})();
603
604
605/* BBCC2026 poster-first responsive home video — 2026-08-03 */
606(function () {
607  "use strict";
608
609  var state = window.BBCC2026ResponsiveHeroVideo || (window.BBCC2026ResponsiveHeroVideo = {
610    queued: false
611  });
612
613  function startHeroVideo() {
614    var hero = document.querySelector("#bid_6217 .page-hero .bbcc-hero-media");
615    if (!hero || hero.querySelector(".bbcc-hero-video")) return;
616
617    var desktopViewport = window.matchMedia && window.matchMedia("(min-width: 1200px)").matches;
618    var reducedMotion = window.matchMedia && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
619    var saveData = navigator.connection && navigator.connection.saveData;
620    /* Keep the responsive poster on phones and tablets. The decorative 1.8 MB
621       video is reserved for wide screens after initial page load. */
622    if (!desktopViewport || reducedMotion || saveData) return;
623
624    var video = document.createElement("video");
625    video.className = "bbcc-hero-video";
626    video.muted = true;
627    video.defaultMuted = true;
628    video.loop = true;
629    video.playsInline = true;
630    video.autoplay = true;
631    video.preload = "metadata";
632    video.poster = "/Content/images/frontofchurch-q65.webp";
633    video.setAttribute("muted", "");
634    video.setAttribute("playsinline", "");
635    video.setAttribute("webkit-playsinline", "");
636    video.setAttribute("aria-hidden", "true");
637    video.setAttribute("tabindex", "-1");
638
639    var source = document.createElement("source");
640    source.src = "/Content/images/bbcchero2.mp4";
641    source.type = "video/mp4";
642    video.appendChild(source);
643
644    function revealWhenPlaying() {
645      var playAttempt = video.play();
646      if (playAttempt && typeof playAttempt.then === "function") {
647        playAttempt.then(function () {
648          video.classList.add("is-ready");
649        }).catch(function () {
650          /* The preloaded poster remains visible if autoplay is blocked. */
651        });
652      }
653    }
654
655    video.addEventListener("canplay", revealWhenPlaying, { once: true });
656    hero.appendChild(video);
657    video.load();
658  }
659
660  function queueHeroVideo() {
661    if (document.querySelector("#bid_6217 .bbcc-hero-video")) return;
662    if (state.queued) return;
663    state.queued = true;
664
665    function runAfterInitialLoad() {
666      function launchVideo() {
667        state.queued = false;
668        startHeroVideo();
669      }
670
671      if (window.requestIdleCallback) {
672        window.requestIdleCallback(launchVideo, { timeout: 2500 });
673      } else {
674        window.setTimeout(launchVideo, 650);
675      }
676    }
677
678    if (document.readyState === "complete") {
679      runAfterInitialLoad();
680    } else {
681      window.addEventListener("load", runAfterInitialLoad, { once: true });
682    }
683  }
684
685  if (document.readyState === "loading") {
686    document.addEventListener("DOMContentLoaded", queueHeroVideo, { once: true });
687  } else {
688    queueHeroVideo();
689  }
690
691  if (window.Sys && Sys.Application) {
692    Sys.Application.add_load(queueHeroVideo);
693  }
694})();
695/* BBCC2026 shared-shell quick wins — 2026-08-03 */
696(function () {
697  "use strict";
698
699  var state = window.BBCC2026SharedShellQuickWins || (window.BBCC2026SharedShellQuickWins = {
700    bound: false
701  });
702
703  function enhanceSharedShell() {
704    var eventWrapper = document.querySelector("#bid_8892 .event-list-wrapper");
705    var eventGrid = eventWrapper && eventWrapper.querySelector(".event-grid");
706
707    if (eventWrapper && eventGrid && !eventWrapper.querySelector(".bbcc-event-collection-heading")) {
708      var eventHeading = document.createElement("h2");
709      eventHeading.className = "bbcc-event-collection-heading";
710      eventHeading.textContent = "Upcoming Events";
711      eventWrapper.insertBefore(eventHeading, eventGrid);
712    }
713
714    var giveHeading = document.querySelector("#bid_8266 h1");
715    if (giveHeading && giveHeading.textContent.trim() === "When You Give,Good Things Happen") {
716      giveHeading.setAttribute("aria-label", "When You Give, Good Things Happen");
717    }
718  }
719
720  enhanceSharedShell();
721
722  if (!state.bound) {
723    state.bound = true;
724
725    if (document.readyState === "loading") {
726      document.addEventListener("DOMContentLoaded", enhanceSharedShell);
727    }
728
729    if (window.Sys && Sys.Application) {
730      Sys.Application.add_load(enhanceSharedShell);
731    }
732  }
733})();
734
735
736/* BBCC2026 homepage first-visit journey — 2026-08-03 */
737(function () {
738  "use strict";
739
740  function isHomePage() {
741    var path = (window.location.pathname || "/").replace(/\/+$/, "") || "/";
742    return path === "/" || path.toLowerCase() === "/home";
743  }
744
745  function placeAfter(referenceNode, node) {
746    if (referenceNode && node && referenceNode.nextSibling !== node) {
747      referenceNode.parentNode.insertBefore(node, referenceNode.nextSibling);
748    }
749  }
750
751  function applyHomepageJourney() {
752    if (!isHomePage()) {
753      return;
754    }
755
756    var welcome = document.getElementById("bid_8633");
757    var location = document.getElementById("bid_8658");
758    var duplicateGathering = document.getElementById("bid_8659");
759    var kids = document.getElementById("bid_8632");
760    var eventsTitle = document.getElementById("bid_8941");
761    var events = document.getElementById("bid_8945");
762    var eventsMore = document.getElementById("bid_8946");
763    var message = document.getElementById("bid_8454");
764    var prayer = document.getElementById("bid_8656");
765
766    if (!welcome || !location || !welcome.parentNode) {
767      return;
768    }
769
770    var zone = welcome.parentNode;
771    var intro = zone.querySelector(".bbcc-home-intro");
772    if (!intro) {
773      intro = document.createElement("div");
774      intro.className = "bbcc-home-intro";
775      intro.setAttribute("data-bbcc-home-group", "first-visit");
776      zone.insertBefore(intro, welcome);
777    }
778    intro.appendChild(welcome);
779    intro.appendChild(location);
780
781    if (duplicateGathering) {
782      duplicateGathering.hidden = true;
783      duplicateGathering.setAttribute("aria-hidden", "true");
784    }
785
786    var eventsGroup = zone.querySelector(".bbcc-home-events");
787    if (!eventsGroup) {
788      eventsGroup = document.createElement("section");
789      eventsGroup.className = "bbcc-home-events";
790      eventsGroup.setAttribute("aria-label", "Upcoming events");
791    }
792    if (eventsTitle) eventsGroup.appendChild(eventsTitle);
793    if (events) eventsGroup.appendChild(events);
794    if (eventsMore) eventsGroup.appendChild(eventsMore);
795
796    var cursor = intro;
797    [kids, message, eventsGroup, prayer].forEach(function (node) {
798      if (node) {
799        placeAfter(cursor, node);
800        cursor = node;
801      }
802    });
803
804    document.documentElement.classList.add("bbcc-home-journey-ready");
805  }
806
807  if (document.readyState === "loading") {
808    document.addEventListener("DOMContentLoaded", applyHomepageJourney);
809  } else {
810    applyHomepageJourney();
811  }
812
813  if (window.Sys && Sys.Application && typeof Sys.Application.add_load === "function") {
814    Sys.Application.add_load(applyHomepageJourney);
815  }
816})();
817
818
819
820/* BBCC2026 homepage first-visit repeat-load normalization — 2026-08-03 */
821(function () {
822  "use strict";
823
824  function normalizeHomepageJourney() {
825    var path = (window.location.pathname || "/").replace(/\/+$/, "") || "/";
826    if (path !== "/" && path.toLowerCase() !== "/home") {
827      return;
828    }
829
830    var welcome = document.getElementById("bid_8633");
831    var location = document.getElementById("bid_8658");
832    var kids = document.getElementById("bid_8632");
833    var message = document.getElementById("bid_8454");
834    var eventsTitle = document.getElementById("bid_8941");
835    var events = document.getElementById("bid_8945");
836    var eventsMore = document.getElementById("bid_8946");
837    var prayer = document.getElementById("bid_8656");
838    var duplicateGathering = document.getElementById("bid_8659");
839    var zone = welcome && welcome.closest(".zone-content");
840
841    if (!zone || !location) {
842      return;
843    }
844
845    var introGroups = Array.prototype.slice.call(zone.querySelectorAll(".bbcc-home-intro"));
846    var intro = introGroups[0];
847    if (!intro) {
848      intro = document.createElement("div");
849      intro.className = "bbcc-home-intro";
850      intro.setAttribute("data-bbcc-home-group", "first-visit");
851      zone.insertBefore(intro, welcome);
852    }
853    intro.appendChild(welcome);
854    intro.appendChild(location);
855    introGroups.slice(1).forEach(function (group) {
856      if (group !== intro && !group.children.length) group.remove();
857    });
858
859    var eventGroups = Array.prototype.slice.call(zone.querySelectorAll(".bbcc-home-events"));
860    var eventsGroup = eventGroups[0];
861    if (!eventsGroup) {
862      eventsGroup = document.createElement("section");
863      eventsGroup.className = "bbcc-home-events";
864      eventsGroup.setAttribute("aria-label", "Upcoming events");
865    }
866    if (eventsTitle) eventsGroup.appendChild(eventsTitle);
867    if (events) eventsGroup.appendChild(events);
868    if (eventsMore) eventsGroup.appendChild(eventsMore);
869    eventGroups.slice(1).forEach(function (group) {
870      if (group !== eventsGroup && !group.children.length) group.remove();
871    });
872
873    if (duplicateGathering) {
874      duplicateGathering.hidden = true;
875      duplicateGathering.setAttribute("aria-hidden", "true");
876    }
877
878    var cursor = intro;
879    [kids, message, eventsGroup, prayer].forEach(function (node) {
880      if (!node) return;
881      if (cursor.nextSibling !== node) {
882        cursor.parentNode.insertBefore(node, cursor.nextSibling);
883      }
884      cursor = node;
885    });
886  }
887
888  if (document.readyState === "loading") {
889    document.addEventListener("DOMContentLoaded", normalizeHomepageJourney);
890  } else {
891    normalizeHomepageJourney();
892  }
893
894  if (window.Sys && Sys.Application && typeof Sys.Application.add_load === "function") {
895    Sys.Application.add_load(normalizeHomepageJourney);
896  }
897})();
898
899
900/* The responsive Welcome summary now lives in Rock block 8633. */
901
902
903
904/* BBCC2026 Step 7 accessibility adapter — 2026-08-03 */
905(function () {
906  "use strict";
907
908  function enhanceDuplicateCardLinks() {
909    Array.prototype.forEach.call(document.querySelectorAll(".group-card"), function (card) {
910      var overlay = card.querySelector(".group-card-link");
911      if (!overlay) return;
912
913      /* The visible View Details link already exposes the same destination. */
914      overlay.setAttribute("aria-hidden", "true");
915      overlay.setAttribute("tabindex", "-1");
916    });
917  }
918
919  if (document.readyState === "loading") {
920    document.addEventListener("DOMContentLoaded", enhanceDuplicateCardLinks);
921  } else {
922    enhanceDuplicateCardLinks();
923  }
924
925  if (window.Sys && Sys.Application) {
926    Sys.Application.add_load(enhanceDuplicateCardLinks);
927  }
928})();
929
930
931/* Pastor Sam editorial theme adapter — preview package, 2026-08-03 */
932(function () {
933    "use strict";
934
935    var host = window.location.hostname.toLowerCase();
936    var blogHosts = ["samuelsutter.com", "www.samuelsutter.com", "suttersaga.com", "www.suttersaga.com", "sam.bbcconline.com"];
937
938    if (blogHosts.indexOf(host) === -1 || document.body.classList.contains("sam-blog")) {
939        return;
940    }
941
942    var isPost = window.location.pathname.toLowerCase().indexOf("/post/") === 0;
943    document.body.classList.add("sam-blog", isPost ? "sam-blog-post" : "sam-blog-home");
944
945    function replaceHeading(heading, level) {
946        if (!heading || heading.tagName.toLowerCase() === level) {
947            return heading;
948        }
949
950        var replacement = document.createElement(level);
951        Array.prototype.slice.call(heading.attributes).forEach(function (attribute) {
952            replacement.setAttribute(attribute.name, attribute.value);
953        });
954        replacement.innerHTML = heading.innerHTML;
955        heading.parentNode.replaceChild(replacement, heading);
956        return replacement;
957    }
958
959    var brandLink = Array.prototype.find.call(document.querySelectorAll("nav a[href='/']"), function (link) {
960        return !!link.querySelector("img");
961    });
962
963    if (brandLink) {
964        brandLink.classList.add("sam-blog-brand");
965        brandLink.setAttribute("aria-label", "Samuel Sutter — Pastor and writer");
966        brandLink.innerHTML = "<span class=\"sam-blog-brand-name\">Samuel Sutter</span><span class=\"sam-blog-brand-role\">Pastor · Writer</span>";
967    }
968
969    Array.prototype.forEach.call(document.querySelectorAll("a[href]"), function (link) {
970        var href = link.getAttribute("href") || "";
971        href = href.replace(/^https:\/\/(www\.)?bbcconline\.com/i, "https://bbcc.church");
972        href = href.replace(/^https:\/\/BBCCOnline\.com/i, "https://bbcc.church");
973        link.setAttribute("href", href);
974    });
975
976    var featuredLinks = Array.prototype.filter.call(document.querySelectorAll("#bid_4180 a"), function (link) {
977        return !!link.querySelector(".hero-header");
978    });
979
980    featuredLinks.forEach(function (link, index) {
981        link.classList.add("sam-featured-card");
982        if (index === 0) {
983            link.classList.add("sam-featured-card-lead");
984        }
985        var heading = link.querySelector("h1");
986        if (!isPost && heading) {
987            replaceHeading(heading, "h2");
988        }
989    });
990
991    if (!isPost && featuredLinks.length) {
992        var featuredBlock = document.querySelector("#bid_4180");
993        if (featuredBlock && !document.querySelector(".sam-blog-intro")) {
994            var intro = document.createElement("section");
995            intro.className = "sam-blog-intro";
996            intro.setAttribute("aria-labelledby", "sam-blog-title");
997            intro.innerHTML = "<p class=\"sam-blog-kicker\">Notes from a local pastor</p><h1 id=\"sam-blog-title\">Faith for ordinary life.</h1><p class=\"sam-blog-deck\">Reflections on following Jesus, loving people, raising a family, and noticing grace in the middle of a normal week.</p>";
998            featuredBlock.parentNode.insertBefore(intro, featuredBlock);
999        }
1000    }
1001
1002    var moreHeading = document.querySelector("#bid_4182 .page-header h1");
1003    if (moreHeading) {
1004        moreHeading.textContent = isPost ? "More from Pastor Sam" : "Latest writing";
1005        replaceHeading(moreHeading, "h2");
1006    }
1007
1008    Array.prototype.forEach.call(document.querySelectorAll("#bid_4182 .blog-card"), function (card) {
1009        var titleLink = card.querySelector(".card-title a");
1010        var readMoreLink = card.querySelector(".card-link");
1011        if (titleLink && readMoreLink) {
1012            readMoreLink.setAttribute("href", titleLink.getAttribute("href"));
1013            readMoreLink.textContent = "Read article";
1014        }
1015    });
1016}());
1017
1018
1019/* Pastor Sam detail-layout adapter — 2026-08-03 */
1020(function(){"use strict";if(!document.body.classList.contains("sam-blog-post"))return;var blocks=document.querySelectorAll("[id^=bid_]");var primary=Array.prototype.find.call(blocks,function(b){return !!b.querySelector(".hero-header");});var more=Array.prototype.find.call(blocks,function(b){return !!b.querySelector(".blog-card");});if(primary)primary.classList.add("sam-blog-primary-block");if(!more)return;more.classList.add("sam-blog-more-block");var heading=more.querySelector(".page-header h1");if(heading){var replacement=document.createElement("h2");replacement.textContent="More from Pastor Sam";heading.parentNode.replaceChild(replacement,heading);}Array.prototype.forEach.call(more.querySelectorAll(".blog-card"),function(card,index){if(index<3&&card.parentElement)card.parentElement.classList.add("sam-related-card-visible");var title=card.querySelector(".card-title a");var link=card.querySelector(".card-link");if(title&&link){link.href=title.href;link.textContent="Read article";}});}());
1021
1022
1023/* Pastor Sam blog final quality adapter — 2026-08-03 */
1024(function(){
1025"use strict";
1026var hosts=["samuelsutter.com","www.samuelsutter.com","suttersaga.com","www.suttersaga.com","sam.bbcconline.com"];
1027if(hosts.indexOf(window.location.hostname.toLowerCase())===-1)return;
1028function run(){
1029if(!document.documentElement.getAttribute("lang"))document.documentElement.setAttribute("lang","en");
1030var labels={"facebook.com":"Samuel Sutter on Facebook","x.com":"Samuel Sutter on X","instagram.com":"Samuel Sutter on Instagram","youtube.com":"Boynton Beach Community Church on YouTube"};
1031Array.prototype.forEach.call(document.querySelectorAll("footer a[href]"),function(a){var h=a.getAttribute("href")||"";Object.keys(labels).some(function(d){if(h.indexOf(d)!==-1){a.setAttribute("aria-label",labels[d]);return true;}return false;});});
1032var top=document.querySelector(".compass-top");if(top)top.setAttribute("aria-label","Back to top");
1033var icons={"fa-facebook":"ti-brand-facebook","fa-twitter":"ti-brand-x","fa-instagram":"ti-brand-instagram","fa-youtube":"ti-brand-youtube","fa-map-marker":"ti-map-pin","fa-phone":"ti-phone","fa-envelope-o":"ti-mail","fa-calendar":"ti-calendar","fa-chevron-left":"ti-chevron-left","fa-chevron-right":"ti-chevron-right"};
1034Array.prototype.forEach.call(document.querySelectorAll("i.fa"),function(i){Object.keys(icons).some(function(c){if(i.classList.contains(c)){i.className="ti "+icons[c];i.setAttribute("aria-hidden","true");return true;}return false;});});
1035Array.prototype.forEach.call(document.querySelectorAll(".seth-style-content img:not([alt])"),function(i){i.setAttribute("alt","");});
1036if(window.location.pathname.toLowerCase()!=="/about")return;
1037document.body.classList.add("sam-blog-about");
1038var block=Array.prototype.find.call(document.querySelectorAll("[id^=bid_]"),function(b){return Array.prototype.some.call(b.querySelectorAll("h1,h2"),function(h){return h.textContent.trim().toLowerCase()==="about me";});});
1039if(!block)return;block.classList.add("sam-blog-primary-block");
1040var view=block.querySelector(".block-content > div:first-child"),quick=view&&view.querySelector("h1"),about=view&&Array.prototype.find.call(view.querySelectorAll("h2"),function(h){return h.textContent.trim().toLowerCase()==="about me";});
1041if(view&&quick&&about&&!view.querySelector(".sam-about-layout")){
1042var layout=document.createElement("div"),article=document.createElement("article"),aside=document.createElement("aside"),q2=document.createElement("h2"),title=document.createElement("h1"),container=about.parentNode,node,next;
1043layout.className="sam-about-layout";article.className="sam-about-content";aside.className="sam-about-links";aside.setAttribute("aria-label","Quick links");q2.innerHTML=quick.innerHTML;quick.parentNode.replaceChild(q2,quick);quick=q2;title.innerHTML=about.innerHTML;about.parentNode.replaceChild(title,about);
1044if(quick.parentNode===container){node=quick;while(node&&node!==title){next=node.nextSibling;aside.appendChild(node);node=next;}}else{aside.appendChild(quick);node=container.firstChild;while(node&&node!==title){next=node.nextSibling;aside.appendChild(node);node=next;}}
1045node=title;while(node){next=node.nextSibling;article.appendChild(node);node=next;}layout.appendChild(article);layout.appendChild(aside);view.appendChild(layout);if(container!==view&&!container.hasChildNodes())container.parentNode.removeChild(container);}
1046Array.prototype.forEach.call(block.querySelectorAll("a[href]"),function(a){var h=a.getAttribute("href")||"";if(h==="#"&&/boynton beach community church/i.test(a.textContent))a.setAttribute("href","https://bbcc.church/");if(h.toLowerCase().indexOf("https:/bbcconline.com/contact")===0)a.setAttribute("href","https://bbcc.church/contact");if(a.target==="_blank")a.setAttribute("rel","noopener noreferrer");});
1047}
1048if(document.readyState==="loading")document.addEventListener("DOMContentLoaded",run);else run();
1049}());
1050
1051(function(){if(window.location.pathname.toLowerCase()!=="/about")return;var c=document.querySelector(".connect-section"),a=document.querySelector(".sam-about-content");if(c&&a&&!a.contains(c))a.appendChild(c);}());
1052
1053(function(){function move(){if(window.location.pathname.toLowerCase()!=="/about")return;var c=document.querySelector(".connect-section"),a=document.querySelector(".sam-about-content");
1053if(c&&a&&!a.contains(c))a.appendChild(c);}if(document.readyState==="loading")document.addEventListener("DOMContentLoaded",move);else move();}());
1054
1055
1056/* Pastor Sam blog best-practice wrap-up — 2026-08-03 */
1057(function(){
1058"use strict";
1059var hosts=["samuelsutter.com","www.samuelsutter.com","suttersaga.com","www.suttersaga.com","sam.bbcconline.com"];if(hosts.indexOf(window.location.hostname.toLowerCase())===-1)return;
1060function run(){
1061var path=window.location.pathname.toLowerCase(),isPost=path.indexOf("/post/")===0,isAbout=path==="/about";
1062var replacements={"TRAINING WITNESSES":"Training Witnesses","FEEDING NEIGHBORS - HOW OUR CHURCH HELPS...":"Feeding Neighbors — How Our Church Helps…","BACK-TO-SCHOOL PRAYERS: LET'S SURROUND OUR KIDS!":"Back-to-School Prayers: Let's Surround Our Kids!"};
1063Array.prototype.forEach.call(document.querySelectorAll(".sam-featured-card h2,.sam-blog-post h1"),function(h){var t=h.textContent.trim();if(replacements[t])h.textContent=replacements[t];});
1064Array.prototype.forEach.call(document.querySelectorAll(".blog-card"),function(card){var title=card.querySelector(".card-title a"),more=card.querySelector(".card-link");if(title&&more)more.setAttribute("aria-label","Read article: "+title.textContent.trim());});
1065Array.prototype.forEach.call(document.querySelectorAll(".sam-about-links a[href]"),function(a){if(/twitter/i.test(a.textContent)||/twitter\.com/i.test(a.href)){a.textContent="X";a.setAttribute("href","https://x.com/suttersaga");}});
1066Array.prototype.forEach.call(document.querySelectorAll("footer p"),function(p){if(!p.querySelector("a")&&p.textContent.indexOf("561.733.9400")!==-1)p.innerHTML="<i class=\"ti ti-phone\" aria-hidden=\"true\"></i> <a href=\"tel:+15617339400\">561.733.9400</a>";if(!p.querySelector("a")&&p.textContent.indexOf("[email protected]")!==-1)p.innerHTML="<i class=\"ti ti-mail\" aria-hidden=\"true\"></i> <a href=\"mailto:[email protected]\">[email protected]</a>";});
1067function metaName(n,c){var m=document.querySelector("meta[name='"+n+"']");if(!m){m=document.createElement("meta");m.setAttribute("name",n);document.head.appendChild(m);}m.setAttribute("content",c);}
1068function metaProperty(n,c){var m=document.querySelector("meta[property='"+n+"']");if(!m){m=document.createElement("meta");m.setAttribute("property",n);document.head.appendChild(m);}m.setAttribute("content",c);}
1069function concise(s){s=s.trim().replace(/\s+/g," ");if(s.length<=158)return s;return s.slice(0,155).replace(/\s+\S*$/,"…");}
1070var canonical=document.querySelector("link[rel=canonical]");if(!canonical){canonical=document.createElement("link");canonical.setAttribute("rel","canonical");document.head.appendChild(canonical);}var canonicalUrl="https://samuelsutter.com"+window.location.pathname;canonical.setAttribute("href",canonicalUrl);
1071var title,description;if(isPost){var h=document.querySelector(".sam-blog-primary-block h1,h1"),p=document.querySelector(".sam-blog-primary-block .seth-style-content p,.seth-style-content p");title=(h?h.textContent.trim():"Article")+" | Samuel Sutter";description=p?concise(p.textContent):"Reflections on faith, family, ministry, and everyday life from Samuel Sutter.";}else if(isAbout){title="About Samuel Sutter | Pastor and Writer";description="Meet Samuel Sutter, a pastor and writer reflecting on faith, family, ministry, and the grace of God in ordinary life.";}else{title="Samuel Sutter | Pastor, Writer, and Everyday Faith";description="Reflections from pastor and writer Samuel Sutter on following Jesus, loving people, raising a family, and noticing grace in ordinary life.";}
1072document.title=title;metaName("description",description);metaProperty("og:title",title);metaProperty("og:description",description);metaProperty("og:url",canonicalUrl);
1073}
1074if(document.readyState==="loading")document.addEventListener("DOMContentLoaded",run);else run();
1075}());
1076
1077
1078/* BBCC giving post-upgrade cleanup — 2026-08-03 */
1079(function () {
1080    "use strict";
1081
1082    var hostname = window.location.hostname.toLowerCase();
1083    var isMainSite = hostname === "bbcc.church" || hostname === "www.bbcc.church";
1084    var normalizedPath = window.location.pathname.replace(/\/+$/, "").toLowerCase() || "/";
1085    var connectGivingUrl = "https://my.bbcc.church/givenow";
1086
1087    if (!isMainSite) {
1088        return;
1089    }
1090
1091    if (normalizedPath === "/givenow") {
1092        window.location.replace(connectGivingUrl + window.location.search + window.location.hash);
1093        return;
1094    }
1095
1096    Array.prototype.forEach.call(document.querySelectorAll("a[href]"), function (link) {
1097        var url;
1098
1099        try {
1100            url = new URL(link.getAttribute("href"), window.location.href);
1101        } catch (error) {
1102            return;
1103        }
1104
1105        var linkHost = url.hostname.toLowerCase();
1106        var linkPath = url.pathname.replace(/\/+$/, "").toLowerCase() || "/";
1107        if ((linkHost === "bbcc.church" || linkHost === "www.bbcc.church") && linkPath === "/givenow") {
1108            link.href = connectGivingUrl + url.search + url.hash;
1109        }
1110    });
1111
1112    var path = normalizedPath;
1113
1114    if (path === "/give") {
1115        document.body.classList.add("bbcc-give-current");
1116
1117        var platformSection = document.querySelector(".mywell-section");
1118        if (platformSection) {
1119            var tag = platformSection.querySelector(".tag");
1120            var heading = platformSection.querySelector("h2");
1121            var paragraphs = platformSection.querySelectorAll(".mywell-text > p");
1122            var highlight = platformSection.querySelector(".highlight-box p");
1123            var story = platformSection.querySelector(".mywell-inner > div:last-child");
1124
1125            if (tag) {
1126                tag.textContent = "Secure Online Giving";
1127            }
1128            if (heading) {
1129                heading.innerHTML = "Give Online with <span>My Well Ministry</span>";
1130            }
1131            if (paragraphs[0]) {
1132                paragraphs[0].innerHTML = "BBCC uses <strong>My Well Ministry</strong>, a nonprofit giving platform built for churches, to make one-time and recurring gifts simple and secure.";
1133            }
1134            if (paragraphs[1]) {
1135                paragraphs[1].textContent = "Your generosity helps BBCC share the Good News of Jesus, care for our neighbors, strengthen families, and support ministry locally and around the world.";
1136            }
1137            if (highlight) {
1138                highlight.innerHTML = "<strong>Already giving?</strong> You can manage recurring gifts and payment methods securely through My Well.";
1139            }
1140            if (story) {
1141                story.classList.add("bbcc-mywell-story");
1142            }
1143        }
1144
1145        Array.prototype.forEach.call(document.querySelectorAll(".faq-item"), function (item) {
1146            var question = item.querySelector(".faq-q");
1147            var answer = item.querySelector(".faq-a-inner");
1148            if (question && /switching from pushpay/i.test(question.textContent)) {
1149                var chevron = question.querySelector(".chev");
1150                question.childNodes[0].nodeValue = "Why does BBCC use My Well Ministry?";
1151                if (chevron) {
1152                    question.appendChild(chevron);
1153                }
1154                if (answer) {
1155                    answer.innerHTML = "My Well Ministry is a nonprofit that provides secure donation technology for churches without adding a profit margin to gifts. Lower processing costs allow more of every gift to support ministry. Learn more at <a href=\"https://www.mywell.org\" target=\"_blank\" rel=\"noopener noreferrer\">mywell.org</a>.";
1156                }
1157            }
1158        });
1159    }
1160
1161    if (document.querySelector(".my-well-payment-entry")) {
1162        document.body.classList.add("bbcc-give-entry");
1163        document.title = "Give Online | Boynton Beach Community Church";
1164    }
1165}());

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.