PageSourceSearch

https://www.mymanatee.org/js/functions.js?v=3

js mymanatee.org collected 2026-09-24 09:06:46 UTC 10,168 bytes, 389 lines download raw bytes

1function initializeMobileNavigationScrollLock() {
2    const mobileNavigationElement = document.getElementById("mobileNav");
3
4    if (mobileNavigationElement === null) {
5        return;
6    }
7
8    const desktopMediaQuery = window.matchMedia("(min-width: 992px)");
9
10    function lockDocumentScroll(event) {
11        if (event.target !== mobileNavigationElement) {
12            return;
13        }
14
15        document.body.classList.add("fixed");
16    }
17
18    function unlockDocumentScroll(event) {
19        if (event.target !== mobileNavigationElement) {
20            return;
21        }
22
23        document.body.classList.remove("fixed");
24    }
25
26    function resetNavigationAtDesktopWidth(event) {
27        if (event.matches) {
28            document.body.classList.remove("fixed");
29        }
30    }
31
32    mobileNavigationElement.addEventListener(
33        "show.bs.collapse",
34        lockDocumentScroll
35    );
36
37    mobileNavigationElement.addEventListener(
38        "hidden.bs.collapse",
39        unlockDocumentScroll
40    );
41
42    desktopMediaQuery.addEventListener(
43        "change",
44        resetNavigationAtDesktopWidth
45    );
46
47    if (mobileNavigationElement.classList.contains("show")) {
48        document.body.classList.add("fixed");
49    }
50}
51
52if (document.readyState === "loading") {
53    document.addEventListener(
54        "DOMContentLoaded",
55        initializeMobileNavigationScrollLock
56    );
57} else {
58    initializeMobileNavigationScrollLock();
59}
60
61document.addEventListener("DOMContentLoaded", function () {
62    // For the AppModal. Detects if page is being loaded on a mobile
63    // device before opening. Sets cookie if modal has been closed.
64    const modalElement = document.querySelector(
65        '[id^="appModalUnique-"]'
66    );
67
68    if (modalElement) {
69        var cookieName = "modalClosed-" + modalElement.id;
70
71        if (
72            /Mobi|Android/i.test(navigator.userAgent) ||
73            window.innerWidth <= 800
74        ) {
75            const setCookie = (name, value, days) => {
76                let expires = "";
77
78                if (days) {
79                    let date = new Date();
80
81                    date.setTime(
82                        date.getTime() + days * 24 * 60 * 60 * 1000
83                    );
84
85                    expires = "; expires=" + date.toUTCString();
86                }
87
88                document.cookie =
89                    `${name}=${value || ""}${expires}; path=/`;
90            };
91
92            const getCookie = name => {
93                let nameEQ = `${name}=`;
94                let ca = document.cookie.split(";");
95
96                for (let c of ca) {
97                    while (c.charAt(0) === " ") {
98                        c = c.substring(1);
99                    }
100
101                    if (c.indexOf(nameEQ) === 0) {
102                        return c.substring(nameEQ.length);
103                    }
104                }
105
106                return null;
107            };
108
109            if (!getCookie(cookieName)) {
110                var appModal = new bootstrap.Modal(modalElement);
111
112                appModal.show();
113
114                modalElement.addEventListener(
115                    "hidden.bs.modal",
116                    () => {
117                        setCookie(cookieName, "true", 7);
118                    }
119                );
120            }
121        }
122    }
123
124    const searchInputs = document.querySelectorAll(
125        'input[type="search"]'
126    );
127
128    searchInputs.forEach(input => {
129        const label = input.previousElementSibling;
130
131        if (label && label.tagName === "LABEL") {
132            input.addEventListener("focus", function () {
133                label.classList.add("search-active");
134            });
135
136            input.addEventListener("blur", function () {
137                label.classList.remove("search-active");
138            });
139        }
140    });
141
142    // Services dropdown routing on Department list page.
143    const servicesDropdowns = document.querySelectorAll(
144        ".services-dropdown"
145    );
146
147    if (servicesDropdowns.length > 0) {
148        servicesDropdowns.forEach(function (dropdown) {
149            dropdown.addEventListener("change", function () {
150                const selectedUrl = this.value;
151
152                if (selectedUrl) {
153                    window.location.href = selectedUrl;
154                }
155            });
156        });
157    }
158
159    // Hiding label in search column under specific conditions.
160    const searchInput = document.getElementById(
161        "search-input-blog-post"
162    );
163
164    const searchLabel = document.getElementById("search-label");
165
166    if (searchInput && searchLabel) {
167        function updateLabelVisibility() {
168            if (
169                searchInput === document.activeElement ||
170                searchInput.value.trim() !== ""
171            ) {
172                searchLabel.style.visibility = "hidden";
173            } else {
174                searchLabel.style.visibility = "visible";
175            }
176        }
177
178        searchInput.addEventListener(
179            "focus",
180            updateLabelVisibility
181        );
182
183        searchInput.addEventListener(
184            "blur",
185            updateLabelVisibility
186        );
187
188        searchInput.addEventListener(
189            "input",
190            updateLabelVisibility
191        );
192
193        updateLabelVisibility();
194    }
195});
196
197// $(document).ready(function () {
198//     function CloseNav() {
199//         $(".dropdown-toggle")
200//             .removeClass("show")
201//             .attr("aria-expanded", "false");
202//
203//         $(".dropdown-menu").removeClass("show");
204//     }
205//
206//     $("html").click(function (event) {
207//         var clickover = $(event.target);
208//         var opened = $(".dropdown-toggle").hasClass("show");
209//
210//         if (
211//             opened === true &&
212//             !clickover.hasClass("navbar-collapse")
213//         ) {
214//             CloseNav();
215//         }
216//     });
217// });
218
219document
220    .querySelectorAll(".featured-news-slider")
221    .forEach(function (slider) {
222        const configuredDesktopSlidesPerView = Number.parseFloat(
223            slider.dataset.desktopSlidesPerView
224        );
225        const desktopSlidesPerView = Number.isFinite(
226            configuredDesktopSlidesPerView
227        )
228            ? configuredDesktopSlidesPerView
229            : 2.2;
230
231        new Swiper(slider.querySelector(".slider-news"), {
232            slidesPerView: 1,
233            slidesPerGroup: 1,
234            spaceBetween: 15,
235            breakpointsBase: "container",
236            navigation: {
237                nextEl: slider.querySelector(
238                    "#blog-featured-slider-next"
239                ),
240                prevEl: slider.querySelector(
241                    "#blog-featured-slider-prev"
242                ),
243            },
244            freeMode: {
245                enabled: true,
246                sticky: true,
247            },
248            loop: true,
249            pagination: {
250                el: slider.querySelector(
251                    "#blog-featured-slider-pagination"
252                ),
253                type: "fraction",
254            },
255            breakpoints: {
256                600: {
257                    slidesPerView: 1.2,
258                },
259                992: {
260                    slidesPerView: desktopSlidesPerView,
261                },
262                1440: {
263                    slidesPerView: 3.2,
264                },
265            },
266        });
267    });
268
269document
270    .querySelectorAll(".featured-news-slider-1")
271    .forEach(function (slider) {
272        new Swiper(slider.querySelector(".slider-news"), {
273            slidesPerView: 1,
274            slidesPerGroup: 1,
275            spaceBetween: 15,
276            navigation: {
277                nextEl: slider.querySelector(
278                    "#blog-featured-slider-next"
279                ),
280                prevEl: slider.querySelector(
281                    "#blog-featured-slider-prev"
282                ),
283            },
284            freeMode: {
285                enabled: true,
286                sticky: true,
287            },
288            loop: true,
289            pagination: {
290                el: slider.querySelector(
291                    "#blog-featured-slider-pagination"
292                ),
293                type: "fraction",
294            },
295            breakpoints: {
296                768: {
297                    slidesPerView: 1,
298                },
299            },
300        });
301    });
302
303var swiperEvents = new Swiper("#slider-events-1", {
304    slidesPerView: 1,
305    spaceBetween: 15,
306    navigation: {
307        nextEl: "#event-swiper-next",
308        prevEl: "#event-swiper-prev",
309    },
310    pagination: {
311        el: "event-swiper-pagination",
312        type: "fraction",
313    },
314    breakpoints: {
315        991: {
316            slidesPerView: 1.2,
317        },
318    },
319});
320
321var swiperEvents = new Swiper("#slider-events-2", {
322    slidesPerView: 1,
323    spaceBetween: 15,
324    navigation: {
325        nextEl: "#event-swiper-next",
326        prevEl: "#event-swiper-prev",
327    },
328    pagination: {
329        el: "event-swiper-pagination",
330        type: "fraction",
331    },
332    breakpoints: {
333        991: {
334            slidesPerView: 2.2,
335        },
336    },
337});
338
339var swiperBlog = new Swiper("#blog-featured-slider", {
340    slidesPerView: 1,
341    spaceBetween: 15,
342    loop: true,
343    navigation: {
344        nextEl: "#blog-featured-slider-next",
345        prevEl: "#blog-featured-slider-prev",
346    },
347    breakpoints: {
348        768: {
349            slidesPerView: 1,
350        },
351    },
352});
353
354var swiper = new Swiper(".amenityswiper", {
355    autoHeight: true,
356    navigation: {
357        nextEl: ".amenityswiper-button-next",
358        prevEl: ".amenityswiper-button-prev",
359    },
360});
361
362var swiper = new Swiper(".locationswiper", {
363    autoHeight: true,
364    navigation: {
365        nextEl: ".locationswiper-button-next",
366        prevEl: ".locationswiper-button-prev",
367    },
368});
369
370function setHeaderOffset() {
371    const header = document.querySelector(".header");
372
373    if (!header) {
374        return;
375    }
376
377    document.documentElement.style.setProperty(
378        "--header-h",
379        header.offsetHeight + "px"
380    );
381}
382
383window.addEventListener("load", setHeaderOffset);
384window.addEventListener("resize", setHeaderOffset);
385window.addEventListener(
386    "scroll",
387    setHeaderOffset,
388    { passive: true }
389);

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.