const PARTICLE_POOL_SIZE = 50;
const particlePool = [];
const activeParticles = new Set();

function createParticleElement() {
    const particle = document.createElement('div');
    particle.classList.add('particle');
    if (Math.random() > 0.6) particle.classList.add('large');
    return particle;
}

function initializeParticlePool() {
    for (let i = 0; i < PARTICLE_POOL_SIZE; i++) {
        particlePool.push(createParticleElement());
    }
}

function resetParticle(particle) {
    particle.style.left = `${Math.random() * 100}%`;
    particle.style.top = `${Math.random() * 100}%`;
    particle.style.animationDelay = `${Math.random() * 8}s`;
    particle.style.animationDuration = `${8 + Math.random() * 6}s`;
    particle.classList.remove('fade-out');
    return particle;
}

function spawnParticle() {
    if (particlePool.length === 0 || activeParticles.size >= PARTICLE_POOL_SIZE) return;

    const particle = resetParticle(particlePool.pop());
    if (!particle.parentNode) document.body.appendChild(particle);
    activeParticles.add(particle);

    setTimeout(() => {
        particle.classList.add('fade-out');
        setTimeout(() => {
            activeParticles.delete(particle);
            particlePool.push(particle);
        }, 500);
    }, 14000);
}

function animate() {
    if (Math.random() < 0.1) spawnParticle(); // Reduced spawn frequency
    requestAnimationFrame(animate);
}

// Initialize and start
setTimeout(() => {
    initializeParticlePool();
    animate();
}, 500);

function throttle(fn, wait) {
    let lastTime = 0;
    return function (...args) {
        const now = Date.now();
        if (now - lastTime >= wait) {
            fn.apply(this, args);
            lastTime = now;
        }
    };
}

if (window.location.href === 'https://my-mc.link' || window.location.href === 'https://my-mc.link/') {
    const hero = document.querySelector('.hero-bg');
    if (hero) {
        const heroImg = hero.querySelector('img');
        if (heroImg) {
            window.addEventListener(
                'scroll',
                throttle(() => {
                    const scrollPosition = window.pageYOffset;
                    if (heroImg.style.display === 'block') {
                        heroImg.style.transform = `translate(-50%, calc(-50% + ${scrollPosition * 0.3}px)) scale(1.2)`;
                    }
                }, 16)
            );
        }
    }
}

const buttons = document.querySelectorAll('.btn-minecraft');
buttons.forEach(button => {
    button.addEventListener('mousemove', (e) => {
        const rect = button.getBoundingClientRect();
        const x = e.clientX - rect.left;
        const y = e.clientY - rect.top;
        button.style.setProperty('--x', `${x}px`);
        button.style.setProperty('--y', `${y}px`);
    });
});

// Hamburger Menu Toggle
const hamburger = document.querySelector('.hamburger');
const mobileNav = document.querySelector('[data-mobile-nav]');
const navLinks = mobileNav.querySelectorAll('a');

// Debounce function to prevent rapid clicks
function debounce(fn, wait) {
    let timeout;
    return function (...args) {
        clearTimeout(timeout);
        timeout = setTimeout(() => fn.apply(this, args), wait);
    };
}

hamburger.addEventListener('click', debounce(() => {
    console.log('Hamburger clicked, toggling menu');
    mobileNav.classList.toggle('active');
    hamburger.classList.toggle('active');
}, 100));

navLinks.forEach(link => {
    link.addEventListener('click', () => {
        console.log('Nav link clicked, closing menu');
        mobileNav.classList.remove('active');
        hamburger.classList.remove('active');
    });
});

document.addEventListener('click', (e) => {
    if (!mobileNav.contains(e.target) && !hamburger.contains(e.target) && mobileNav.classList.contains('active')) {
        console.log('Clicked outside, closing menu');
        mobileNav.classList.remove('active');
        hamburger.classList.remove('active');
    }
});