{"version":3,"sources":["initializeHomePage.js"],"names":["win","fp","home","let","initialized","getScreenSize","pixelDensity","window","devicePixelRatio","width","innerWidth","addEventListener","height","scrollY","pageYOffset","document","body","classList","toggle","sizeDetector","root","documentElement","setCSSVariable","varName","value","style","setProperty","header","querySelector","logoMobile","offsetHeight","utility","specialMessage","stickyFooter","getComputedStyle","display","setHeroSize","contains","setTimeout","add","debouncedResizeHandler","func","delay","timeoutId","args","clearTimeout","apply","this","init","imgInfo","homepageLink","setBgImage","length","slideshowEl","screenSize","filteredImages","filter","img","assetSize","randomImage","Math","floor","random","backgroundImage","imagePath","altText","setAttribute","setupVideoControls","video","getElementById","videoButton","videoButtonIcon","controlAnnouncements","paused","play","replace","textContent","pause"],"mappings":"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","file":"homepage-74d99b443c.js","sourcesContent":["(function (win) {\n    'use strict';\n\n    const fp = (win.fp = win.fp || {});\n    const home = (fp.home = fp.home || {});\n    let initialized = false;\n\n    // =========================================\n    // Get Screen Size\n    // =========================================\n    const getScreenSize = () => {\n        const pixelDensity = window.devicePixelRatio || 1;\n        const width = window.innerWidth * pixelDensity;\n\n        if (width >= 2400) return 'xlarge';\n        if (width >= 1400) return 'large';\n        if (width >= 1000) return 'medium';\n        if (width >= 600) return 'small';\n        return 'xsmall';\n    };\n\n    // =========================================\n    // Set Background Image\n    // =========================================\n    const setBgImage = (imgInfo = []) => {\n        if (!imgInfo.length) {\n            //console.warn('No images provided for background.');\n            return;\n        }\n\n        const slideshowEl = document.querySelector('.slideshow.background-photos');\n\n        if (!slideshowEl) {\n            //console.warn('.slideshow element not found in DOM.');\n            return;\n        }\n\n        const screenSize = getScreenSize();\n        const filteredImages = imgInfo.filter((img) => img.assetSize === screenSize);\n        if (!filteredImages.length) {\n            //console.warn('No matching images for screen size:', screenSize);\n            return;\n        }\n\n        const randomImage = filteredImages[Math.floor(Math.random() * filteredImages.length)];\n\n        slideshowEl.style.backgroundImage = `url('${randomImage.imagePath}')`;\n        if (randomImage.altText) {\n            slideshowEl.setAttribute('aria-label', randomImage.altText);\n            slideshowEl.setAttribute('role', 'img');\n        }\n    };\n\n    // =========================================\n    // Detect Scroll\n    // =========================================\n    const detectScroll = () => {\n        const height = window.scrollY || window.pageYOffset;\n        document.body.classList.toggle('scrolled-down', height > 50);\n    };\n    window.addEventListener('scroll', detectScroll);\n\n    // =========================================\n    // Size Detector\n    // =========================================\n    const sizeDetector = () => {\n        const root = document.documentElement;\n\n        const setCSSVariable = (varName, value) => {\n            root.style.setProperty(varName, `${value}px`);\n            //console.log(varName + \": \" + value);\n        };\n\n        const header = document.querySelector('header');\n        setCSSVariable(\n            '--header-height', header ? header.offsetHeight : 0\n        );\n\n        const logoMobile = document.querySelector('#logo-mobile');\n        setCSSVariable(\n            '--logo-mobile-height', logoMobile ? logoMobile.offsetHeight : 0\n        );\n\n        const utility = document.querySelector('#utility');\n        setCSSVariable(\n            '--utility-height', utility ? utility.offsetHeight : 0\n        );\n\n        const specialMessage = document.querySelector('#special-message.message-banner');\n        setCSSVariable(\n            '--special-message-height',\n            specialMessage && getComputedStyle(specialMessage).display !== 'none' ? specialMessage.offsetHeight : 0\n        );\n\n        const stickyFooter = document.querySelector('#ao-sticky');\n        setCSSVariable(\n            '--sticky-footer-height',\n            stickyFooter && getComputedStyle(stickyFooter).display !== 'none' ? stickyFooter.offsetHeight : 0\n        );\n    };\n\n    // =========================================\n    // Set Hero Size\n    // =========================================\n    const setHeroSize = () => {\n        if (!document.body.classList.contains('hero-set')) {\n            setTimeout(() => {\n                document.body.classList.add('hero-set');\n            }, 1000);\n        }\n    };\n\n    // =========================================\n    // Setup Video Controls\n    // =========================================\n    const setupVideoControls = () => {\n        const video = document.getElementById('bg-video');\n        const videoButton = document.getElementById('video-pause-play');\n        const videoButtonIcon = videoButton ? videoButton.querySelector('span') : null;\n        const controlAnnouncements = document.getElementById('video-control-announcements');\n\n        if (!video || !videoButton || !videoButtonIcon || !controlAnnouncements) {\n            //console.warn(\"Video controls not fully initialized: missing elements\");\n            return;\n        }\n\n        videoButton.addEventListener('click', () => {\n            if (!video.paused) {\n                video.pause();\n                videoButton.setAttribute('aria-label', 'Play video');\n                videoButtonIcon.classList.replace('icon-pause', 'icon-play');\n                controlAnnouncements.textContent = 'Video paused';\n            } else {\n                video.play();\n                videoButton.setAttribute('aria-label', 'Pause video');\n                videoButtonIcon.classList.replace('icon-play', 'icon-pause');\n                controlAnnouncements.textContent = 'Video playing';\n            }\n        });\n    };\n\n    // =========================================\n    // Debounce Utility\n    // =========================================\n    const debounce = (func, delay) => {\n        let timeoutId;\n        return (...args) => {\n            clearTimeout(timeoutId);\n            timeoutId = setTimeout(() => func.apply(this, args), delay);\n        };\n    };\n\n    // =========================================\n    // Window Resize Handler\n    // =========================================\n    const handleResize = () => {\n        setHeroSize();\n        sizeDetector();\n    };\n\n    const debouncedResizeHandler = debounce(handleResize, 250);\n    window.addEventListener('resize', debouncedResizeHandler);\n\n    // =========================================\n    // Initialize Functions on Load\n    // =========================================\n    window.addEventListener('load', () => {\n        setTimeout(sizeDetector, 250);\n    });\n\n    // =========================================\n    // Public API\n    // =========================================\n    fp.home.init = (imgInfo = []) => {\n        if (initialized) return;\n        initialized = true;\n\n        const homepageLink = document.querySelector('.homepage-link');\n        if (homepageLink) homepageLink.classList.add('selected');\n\n        setBgImage(imgInfo); // Pass the image data here\n        setupVideoControls();\n        setHeroSize();\n    };\n})(window);"]}