{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/msevXQgBluEcYWweJ2fq/wqso3AyOMyR8akcfkA4e/siteMetadata.js"],
  "sourcesContent": ["// Generated by Framer (f2c0341)\nexport default function metadata(params,activeLocale){return{customHTMLBodyEnd:\"<!-- Google Tag Manager (noscript) -->\\n<noscript><iframe src=\\\"https://www.googletagmanager.com/ns.html?id=GTM-WN8NFR72\\\" height=\\\"0\\\" width=\\\"0\\\" style=\\\"display:none;visibility:hidden\\\"></iframe></noscript>\\n<!-- End Google Tag Manager (noscript) -->\\n\\n\\n<div id=\\\"global-call-button\\\" style=\\\"position:fixed;bottom:24px;right:24px;z-index:9999;animation:slideUp 0.4s cubic-bezier(0.25,0.46,0.45,0.94);transition:transform 0.3s ease, opacity 0.3s ease;\\\">\\n  <a href=\\\"tel:3863220831\\\" style=\\\"display:flex;align-items:center;justify-content:center;background:#0C6DB3;color:#fff;text-decoration:none;padding:16px 32px;border-radius:8px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Inter',sans-serif;font-weight:500;font-size:15px;letter-spacing:-0.01em;box-shadow:0 4px 12px rgba(12,109,179,0.15);transition:all 0.2s cubic-bezier(0.25,0.46,0.45,0.94);border:none;cursor:pointer;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);\\\" onmouseover=\\\"this.style.background='#095793';this.style.transform='translateY(-2px)';this.style.boxShadow='0 8px 20px rgba(12,109,179,0.25)'\\\" onmouseout=\\\"this.style.background='#0C6DB3';this.style.transform='translateY(0)';this.style.boxShadow='0 4px 12px rgba(12,109,179,0.15)'\\\">\\n    <svg width=\\\"16\\\" height=\\\"16\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" style=\\\"margin-right:10px;\\\">\\n      <path d=\\\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\\\" fill=\\\"white\\\"></path>\\n    </svg>\\n    <span class=\\\"btn-text\\\">Call Now</span>\\n  </a>\\n</div>\\n\\n<style>\\n@keyframes slideUp {\\n  from { opacity: 0; transform: translateY(60px); }\\n  to   { opacity: 1; transform: translateY(0); }\\n}\\n\\n#global-call-button a {\\n  min-width: 140px;\\n  padding: 16px 32px;\\n  border-radius: 8px;\\n  justify-content: center;\\n}\\n\\n@media (min-width: 1200px) {\\n  #global-call-button {\\n    bottom: 32px;\\n    right: 32px;\\n  }\\n  #global-call-button a {\\n    padding: 18px 36px;\\n    font-size: 16px;\\n  }\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n  #global-call-button {\\n    animation: none;\\n  }\\n  #global-call-button a {\\n    transition: none;\\n  }\\n}\\n\\n#global-call-button a:focus {\\n  outline: 2px solid #0C6DB3;\\n  outline-offset: 2px;\\n}\\n</style>\\n\\n<script>\\ndocument.addEventListener('DOMContentLoaded', function () {\\n  const callButton = document.getElementById('global-call-button');\\n  callButton.style.opacity = '0';\\n  setTimeout(() => {\\n    callButton.style.opacity = '1';\\n  }, 300);\\n});\\n\\ndocument.getElementById('global-call-button').addEventListener('click', function (e) {\\n  if ('vibrate' in navigator) {\\n    navigator.vibrate(50);\\n  }\\n});\\n\\nif (window.innerWidth > 768) {\\n  let lastScrollTop = 0;\\n  let scrollTimeout;\\n  const callButton = document.getElementById('global-call-button');\\n\\n  window.addEventListener('scroll', function () {\\n    clearTimeout(scrollTimeout);\\n    scrollTimeout = setTimeout(() => {\\n      let scrollTop = window.pageYOffset || document.documentElement.scrollTop;\\n      if (scrollTop > lastScrollTop && scrollTop > 200) {\\n        callButton.style.transform = 'scale(0.85)';\\n        callButton.style.opacity = '0.8';\\n      } else {\\n        callButton.style.transform = 'scale(1)';\\n        callButton.style.opacity = '1';\\n      }\\n      lastScrollTop = scrollTop;\\n    }, 10);\\n  }, { passive: true });\\n}\\n</script>\\n\",customHTMLHeadEnd:\"<!-- Google Tag Manager -->\\n<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\\nnew Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\\nj=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=\\n'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);\\n})(window,document,'script','dataLayer','GTM-WN8NFR72');</script>\\n<!-- End Google Tag Manager -->\\n\\n<script nowprocket=\\\"\\\" nitro-exclude=\\\"\\\" type=\\\"text/javascript\\\" id=\\\"sa-dynamic-optimization\\\" data-uuid=\\\"3a63115c-03e0-471f-bb5a-9ed39deebea9\\\" src=\\\"data:text/javascript;base64,dmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO3NjcmlwdC5zZXRBdHRyaWJ1dGUoIm5vd3Byb2NrZXQiLCAiIik7c2NyaXB0LnNldEF0dHJpYnV0ZSgibml0cm8tZXhjbHVkZSIsICIiKTtzY3JpcHQuc3JjID0gImh0dHBzOi8vZGFzaGJvYXJkLnNlYXJjaGF0bGFzLmNvbS9zY3JpcHRzL2R5bmFtaWNfb3B0aW1pemF0aW9uLmpzIjtzY3JpcHQuZGF0YXNldC51dWlkID0gIjNhNjMxMTVjLTAzZTAtNDcxZi1iYjVhLTllZDM5ZGVlYmVhOSI7c2NyaXB0LmlkID0gInNhLWR5bmFtaWMtb3B0aW1pemF0aW9uLWxvYWRlciI7ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpOw==\\\"></script>\\n\\n<script>\\n// Visitor Tracking Script\\nclass VisitorTracker {\\n    constructor() {\\n        this.startTime = this.getOrSetStartTime();\\n        this.pageVisits = this.getOrSetPageVisits();\\n        this.isReturning = this.checkReturningVisitor();\\n        this.setupTracking();\\n    }\\n\\n    // Get or set the initial start time from sessionStorage\\n    getOrSetStartTime() {\\n        let startTime = sessionStorage.getItem('visitorStartTime');\\n        if (!startTime) {\\n            startTime = Date.now();\\n            sessionStorage.setItem('visitorStartTime', startTime);\\n        }\\n        return parseInt(startTime);\\n    }\\n\\n    // Get or set the page visits from sessionStorage\\n    getOrSetPageVisits() {\\n        let visits = new Set();\\n        try {\\n            const storedVisits = JSON.parse(sessionStorage.getItem('pageVisits') || '[]');\\n            visits = new Set(storedVisits);\\n        } catch (e) {\\n            console.error('Error parsing stored page visits:', e);\\n        }\\n        return visits;\\n    }\\n\\n    // Check if this is a returning visitor using localStorage\\n    checkReturningVisitor() {\\n        const lastVisit = localStorage.getItem('lastVisit');\\n        const isReturning = !!lastVisit;\\n        localStorage.setItem('lastVisit', Date.now());\\n        return isReturning;\\n    }\\n\\n    // Calculate time spent on site\\n    getTimeOnSite() {\\n        const timeSpent = Math.floor((Date.now() - this.startTime) / 1000); // in seconds\\n        return timeSpent;\\n    }\\n\\n    // Track page visits\\n    trackPageVisit() {\\n        // Get full URL information\\n        const currentPath = window.location.pathname + window.location.search;\\n        const timestamp = new Date().toISOString();\\n        \\n        // Add new visit with timestamp\\n        this.pageVisits.add(JSON.stringify({\\n            path: currentPath,\\n            timestamp: timestamp,\\n            fullUrl: window.location.href\\n        }));\\n\\n        // Store updated visits in sessionStorage\\n        sessionStorage.setItem('pageVisits', JSON.stringify(Array.from(this.pageVisits)));\\n        \\n        // Log for debugging\\n        console.log('Page visit tracked:', currentPath);\\n        \\n        return Array.from(this.pageVisits).map(visit => JSON.parse(visit));\\n    }\\n\\n    // Get user's browser information\\n    getUserBrowserInfo() {\\n        return {\\n            userAgent: navigator.userAgent,\\n            language: navigator.language,\\n            platform: navigator.platform,\\n            screenWidth: window.screen.width,\\n            screenHeight: window.screen.height,\\n            timezone: Intl.DateTimeFormat().resolvedOptions().timeZone\\n        };\\n    }\\n\\n    // Get all tracking data as an object\\n    getTrackingData() {\\n        const visits = Array.from(this.pageVisits).map(visit => {\\n            try {\\n                return JSON.parse(visit);\\n            } catch (e) {\\n                return visit;\\n            }\\n        });\\n\\n        return {\\n            currentURL: window.location.href,\\n            referrer: document.referrer,\\n            timeOnSite: this.getTimeOnSite(),\\n            pagesVisited: visits,\\n            totalPagesVisited: visits.length,\\n            isReturning: this.isReturning,\\n            browserInfo: this.getUserBrowserInfo(),\\n            lastUpdated: new Date().toISOString(),\\n            sessionStartTime: new Date(this.startTime).toISOString()\\n        };\\n    }\\n\\n    // Update the user_data hidden field\\n    updateFormField() {\\n        const userDataField = document.querySelector('input[name=\\\"user_data\\\"]');\\n        if (userDataField) {\\n            const trackingData = this.getTrackingData();\\n            userDataField.value = JSON.stringify(trackingData);\\n            console.log('Updated user_data field:', trackingData);\\n        } else {\\n            console.error('Could not find hidden field with name \\\"user_data\\\"');\\n        }\\n    }\\n\\n    // Setup tracking events\\n    setupTracking() {\\n        // Track initial page load\\n        this.trackPageVisit();\\n\\n        // Update form field every 2 seconds and check for URL changes\\n        let lastUrl = location.href;\\n        setInterval(() => {\\n            // Check if URL has changed\\n            if (location.href !== lastUrl) {\\n                lastUrl = location.href;\\n                this.trackPageVisit();\\n            }\\n            this.updateFormField();\\n        }, 2000);\\n\\n        // Track page visibility changes\\n        document.addEventListener('visibilitychange', () => {\\n            if (document.visibilityState === 'hidden') {\\n                this.trackPageVisit();\\n                this.updateFormField();\\n            }\\n        });\\n\\n        // Track pushState and replaceState\\n        const originalPushState = history.pushState;\\n        const originalReplaceState = history.replaceState;\\n        \\n        history.pushState = function() {\\n            originalPushState.apply(this, arguments);\\n            window.visitorTracker.trackPageVisit();\\n            window.visitorTracker.updateFormField();\\n        };\\n        \\n        history.replaceState = function() {\\n            originalReplaceState.apply(this, arguments);\\n            window.visitorTracker.trackPageVisit();\\n            window.visitorTracker.updateFormField();\\n        };\\n\\n        // Listen for popstate events\\n        window.addEventListener('popstate', () => {\\n            this.trackPageVisit();\\n            this.updateFormField();\\n        });\\n\\n        // Track all click events that might be navigation\\n        document.addEventListener('click', (e) => {\\n            // Give a small delay to allow for navigation to complete\\n            setTimeout(() => {\\n                this.trackPageVisit();\\n                this.updateFormField();\\n            }, 100);\\n        });\\n    }\\n}\\n\\n// Ensure the hidden field exists\\nfunction ensureHiddenField() {\\n    let userDataField = document.querySelector('input[name=\\\"user_data\\\"]');\\n    \\n    if (!userDataField) {\\n        userDataField = document.createElement('input');\\n        userDataField.type = 'hidden';\\n        userDataField.name = 'user_data';\\n        \\n        // Find any form on the page\\n        const form = document.querySelector('form');\\n        if (form) {\\n            form.appendChild(userDataField);\\n            console.log('Created and attached user_data hidden field to form');\\n        } else {\\n            console.error('No form found on page to attach user_data field');\\n        }\\n    }\\n}\\n\\n// Initialize tracking\\ndocument.addEventListener('DOMContentLoaded', () => {\\n    ensureHiddenField();\\n    window.visitorTracker = new VisitorTracker();\\n});\\n</script>\",description:\"Encore Hearing Care is a premier hearing aid provider in Port Orange, FL, offering hearing tests, hearing aid fittings and repairs, custom hearing protection, and tinnitus relief treatments. Contact us today!\",favicon:\"https://framerusercontent.com/assets/kqmJaEduJsPRWSkkdTCsZVjbm0.png\",robots:\"max-image-preview:large\",socialImage:\"https://framerusercontent.com/assets/Ke0py8laiZMHQ3WWWEOye75WqZM.png\",title:\"Encore Hearing Care: Hearing Clinic & Hearing Aid Center In Port Orange, FL\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],
  "mappings": "yCAAAA,IACe,SAARC,EAA0BC,EAAOC,EAAa,CAAC,MAAM,CAAC,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAwgH,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAwpP,YAAY,mNAAmN,QAAQ,sEAAsE,OAAO,0BAA0B,YAAY,uEAAuE,MAAM,6EAA6E,CAAE",
  "names": ["init_ssg_sandbox_shims", "metadata", "params", "activeLocale"]
}
