| |
| document.getElementById('mobile-menu-button').addEventListener('click', function() { |
| const menu = document.getElementById('mobile-menu'); |
| if (menu.classList.contains('hidden')) { |
| menu.classList.remove('hidden'); |
| feather.replace(); |
| } else { |
| menu.classList.add('hidden'); |
| } |
| }); |
|
|
| |
| document.querySelectorAll('a[href^="#"]').forEach(anchor => { |
| anchor.addEventListener('click', function (e) { |
| e.preventDefault(); |
| |
| const targetId = this.getAttribute('href'); |
| if (targetId === '#') return; |
| |
| const targetElement = document.querySelector(targetId); |
| if (targetElement) { |
| window.scrollTo({ |
| top: targetElement.offsetTop - 80, |
| behavior: 'smooth' |
| }); |
| |
| |
| const mobileMenu = document.getElementById('mobile-menu'); |
| if (!mobileMenu.classList.contains('hidden')) { |
| mobileMenu.classList.add('hidden'); |
| } |
| } |
| }); |
| }); |
|
|
| |
| const form = document.querySelector('form'); |
| if (form) { |
| form.addEventListener('submit', function(e) { |
| e.preventDefault(); |
| const email = document.getElementById('email').value; |
| |
| |
| if (email && email.includes('@')) { |
| |
| alert(`Thanks for your interest! We'll be in touch soon at ${email}`); |
| form.reset(); |
| } else { |
| alert('Please enter a valid email address'); |
| } |
| }); |
| } |
|
|
| |
| function checkWebP() { |
| const elem = document.createElement('canvas'); |
| if (!!(elem.getContext && elem.getContext('2d'))) { |
| return elem.toDataURL('image/webp').indexOf('data:image/webp') === 0; |
| } |
| return false; |
| } |
|
|
| if (checkWebP()) { |
| document.documentElement.classList.add('webp'); |
| } else { |
| document.documentElement.classList.add('no-webp'); |
| } |
|
|
| |
| const observerOptions = { |
| threshold: 0.1 |
| }; |
|
|
| const observer = new IntersectionObserver((entries) => { |
| entries.forEach(entry => { |
| if (entry.isIntersecting) { |
| entry.target.classList.add('animate-fadeIn'); |
| observer.unobserve(entry.target); |
| } |
| }); |
| }, observerOptions); |
|
|
| document.querySelectorAll('.feature-card, .testimonial-card').forEach(card => { |
| observer.observe(card); |
| }); |