/* ============================================
   CATERING FORMULAR - JAVASCRIPT
   Café zum Esel
   ============================================ */

// State
const packages = {
    vorspeisen: { price: 0, count: 0, selected: [] },
    hauptgerichte: { price: 0, count: 0, selected: [], beilagen: 0 },
    dessert: { price: 0, count: 0, selected: [] },
    salat: { price: 0, count: 0 },
    brot: { price: 0 },
    mitternacht: { price: 0 },
    beilagen: { selected: [] }
};

let extrasTotal = 0;

// Toggle Section
function toggleSection(header) {
    header.parentElement.classList.toggle('collapsed');
}

// Select Event Type
function selectEventType(btn) {
    document.querySelectorAll('.event-type-btn').forEach(b => b.classList.remove('active'));
    btn.classList.add('active');
}

// Select Package
function selectPackage(el, category, price, count) {
    // Deselect all in category
    el.parentElement.querySelectorAll('.package-option').forEach(opt => opt.classList.remove('selected'));
    el.classList.add('selected');
    
    packages[category].price = price;
    packages[category].count = count;
    
    // Special handling for Hauptgerichte (has beilagen)
    if (category === 'hauptgerichte') {
        packages.hauptgerichte.beilagen = parseInt(el.dataset.beilagen) || 0;
        
        // Show/hide hauptgerichte selection
        const showHauptgerichte = count > 0;
        document.getElementById('hauptgerichteInfo').style.display = showHauptgerichte ? 'flex' : 'none';
        document.getElementById('hauptgerichteList').style.display = showHauptgerichte ? 'block' : 'none';
        document.getElementById('beilagenInfo').style.display = showHauptgerichte ? 'flex' : 'none';
        document.getElementById('beilagenList').style.display = showHauptgerichte ? 'block' : 'none';
        
        // Clear selections if package changed
        packages.hauptgerichte.selected = [];
        packages.beilagen.selected = [];
        document.querySelectorAll('#hauptgerichteList .menu-item, #beilagenList .menu-item').forEach(item => {
            item.classList.remove('selected');
            item.querySelector('.checkbox').innerHTML = '';
        });
    }
    
    // Show/hide menu selection for vorspeisen, dessert
    if (['vorspeisen', 'dessert'].includes(category)) {
        const show = count > 0;
        document.getElementById(category + 'Info').style.display = show ? 'flex' : 'none';
        document.getElementById(category + 'List').style.display = show ? 'block' : 'none';
        
        // Clear selections
        packages[category].selected = [];
        document.querySelectorAll(`#${category}List .menu-item`).forEach(item => {
            item.classList.remove('selected');
            item.querySelector('.checkbox').innerHTML = '';
        });
    }
    
    updateCounters();
    calculate();
}

// Toggle Menu Item
function toggleMenuItem(el, category) {
    const maxCount = category === 'beilagen' ? packages.hauptgerichte.beilagen : packages[category].count;
    const currentSelected = category === 'beilagen' ? packages.beilagen.selected : packages[category].selected;
    
    const itemName = el.querySelector('.item-name').textContent;
    const isSelected = el.classList.contains('selected');
    
    if (isSelected) {
        // Deselect
        el.classList.remove('selected');
        el.querySelector('.checkbox').innerHTML = '';
        const idx = currentSelected.indexOf(itemName);
        if (idx > -1) currentSelected.splice(idx, 1);
    } else {
        // Check if we can select more
        if (currentSelected.length >= maxCount) {
            // Shake animation or alert
            el.style.animation = 'shake 0.3s';
            setTimeout(() => el.style.animation = '', 300);
            return;
        }
        el.classList.add('selected');
        el.querySelector('.checkbox').innerHTML = '✓';
        currentSelected.push(itemName);
    }
    
    updateCounters();
}

// Toggle Extra
function toggleExtra(el) {
    const price = parseFloat(el.dataset.price) || 0;
    const isSelected = el.classList.toggle('selected');
    
    if (isSelected) {
        el.querySelector('.checkbox').innerHTML = '✓';
        extrasTotal += price;
    } else {
        el.querySelector('.checkbox').innerHTML = '';
        extrasTotal -= price;
    }
    
    calculate();
}

// Update Counters
function updateCounters() {
    ['vorspeisen', 'hauptgerichte', 'dessert'].forEach(cat => {
        const counter = document.getElementById(cat + 'Counter');
        if (counter) {
            const current = packages[cat].selected.length;
            const max = packages[cat].count;
            counter.textContent = `${current} / ${max}`;
            counter.className = 'counter';
            if (current === max && max > 0) counter.classList.add('complete');
            if (current > max) counter.classList.add('over');
        }
    });
    
    // Beilagen counter
    const beilagenCounter = document.getElementById('beilagenCounter');
    if (beilagenCounter) {
        const current = packages.beilagen.selected.length;
        const max = packages.hauptgerichte.beilagen;
        beilagenCounter.textContent = `${current} / ${max}`;
        beilagenCounter.className = 'counter';
        if (current === max && max > 0) beilagenCounter.classList.add('complete');
        if (current > max) beilagenCounter.classList.add('over');
    }
}

// Calculate Total
function calculate() {
    const guests = parseInt(document.getElementById('guestCount').value) || 30;
    
    // Calculate per-person costs
    let perPerson = 0;
    perPerson += packages.vorspeisen.price;
    perPerson += packages.hauptgerichte.price;
    perPerson += packages.dessert.price;
    perPerson += packages.salat.price;
    perPerson += packages.brot.price;
    perPerson += packages.mitternacht.price;
    
    // Total
    let total = perPerson * guests + extrasTotal;
    
    // Update subtotals
    updateSubtotal('subtotalVorspeisen', packages.vorspeisen.price * guests);
    updateSubtotal('subtotalHauptgerichte', packages.hauptgerichte.price * guests);
    updateSubtotal('subtotalDessert', packages.dessert.price * guests);
    updateSubtotal('subtotalSalat', packages.salat.price * guests);
    updateSubtotal('subtotalBrot', packages.brot.price * guests);
    updateSubtotal('subtotalMitternacht', packages.mitternacht.price * guests);
    updateSubtotal('subtotalExtras', extrasTotal);
    
    // Update display
    document.getElementById('totalDisplay').textContent = total.toLocaleString('de-DE', {
        minimumFractionDigits: 2,
        maximumFractionDigits: 2
    }) + ' €';
    
    document.getElementById('perPersonDisplay').textContent = perPerson.toLocaleString('de-DE', {
        minimumFractionDigits: 2,
        maximumFractionDigits: 2
    }) + ' € pro Person (ohne Extras)';
}

// Update Subtotal Display
function updateSubtotal(id, value) {
    const el = document.getElementById(id);
    if (el) {
        if (value > 0) {
            el.textContent = value.toLocaleString('de-DE', {minimumFractionDigits: 2}) + ' €';
        } else {
            el.textContent = '';
        }
    }
}

// Submit Request
function submitRequest() {
    const name = document.getElementById('customerName').value;
    const email = document.getElementById('customerEmail').value;
    
    if (!name || !email) {
        alert('Bitte geben Sie mindestens Name und E-Mail an.');
        return;
    }
    
    let summary = `Catering-Anfrage Café zum Esel\n\n`;
    summary += `Name: ${name}\n`;
    summary += `E-Mail: ${email}\n`;
    summary += `Telefon: ${document.getElementById('customerPhone').value}\n`;
    summary += `Datum: ${document.getElementById('eventDate').value}\n`;
    summary += `Uhrzeit: ${document.getElementById('eventTime').value}\n`;
    summary += `Personenzahl: ${document.getElementById('guestCount').value}\n\n`;
    
    summary += `=== MENÜAUSWAHL ===\n\n`;
    
    if (packages.vorspeisen.price > 0) {
        summary += `VORSPEISEN (${packages.vorspeisen.price.toFixed(2)} € p.P.):\n`;
        packages.vorspeisen.selected.forEach(s => summary += `  - ${s}\n`);
        summary += '\n';
    }
    
    if (packages.hauptgerichte.price > 0) {
        summary += `HAUPTGERICHTE (${packages.hauptgerichte.price.toFixed(2)} € p.P.):\n`;
        packages.hauptgerichte.selected.forEach(s => summary += `  - ${s}\n`);
        summary += `BEILAGEN:\n`;
        packages.beilagen.selected.forEach(s => summary += `  - ${s}\n`);
        summary += '\n';
    }
    
    if (packages.dessert.price > 0) {
        summary += `DESSERTS (${packages.dessert.price.toFixed(2)} € p.P.):\n`;
        packages.dessert.selected.forEach(s => summary += `  - ${s}\n`);
        summary += '\n';
    }
    
    if (packages.salat.price > 0) {
        summary += `SALATBUFFET: ${packages.salat.price.toFixed(2)} € p.P.\n\n`;
    }
    
    if (packages.brot.price > 0) {
        summary += `BROTAUSWAHL: ${packages.brot.price.toFixed(2)} € p.P.\n\n`;
    }
    
    if (packages.mitternacht.price > 0) {
        summary += `MITTERNACHTSSNACK: ${packages.mitternacht.price.toFixed(2)} € p.P.\n\n`;
    }
    
    if (extrasTotal > 0) {
        summary += `EXTRAS: ${extrasTotal.toFixed(2)} € pauschal\n`;
        document.querySelectorAll('.extra-item.selected').forEach(el => {
            summary += `  - ${el.querySelector('.extra-name').textContent}\n`;
        });
        summary += '\n';
    }
    
    summary += `===================\n`;
    summary += `GESAMTPREIS: ${document.getElementById('totalDisplay').textContent}\n`;
    summary += `Pro Person: ${document.getElementById('perPersonDisplay').textContent}\n\n`;
    
    summary += `Bemerkungen:\n${document.getElementById('notes').value}`;
    
    const subject = encodeURIComponent(`Catering-Anfrage ${document.getElementById('eventDate').value || 'TBD'}`);
    const body = encodeURIComponent(summary);
    window.location.href = `mailto:info@cafezumesel.de?subject=${subject}&body=${body}`;
}

// Initial calculation on page load
document.addEventListener('DOMContentLoaded', function() {
    calculate();
});

🫏 Catering-Anfrage

Café zum Esel · Handgemacht mit Liebe

So funktioniert's

Wählen Sie Ihre Menü-Pakete und stellen Sie sich aus unseren Gerichten Ihr Wunschmenü zusammen. Die Preise sind Bruttopreise pro Person. Kinder bis 3 Jahre essen kostenfrei, bis 10 Jahre zahlen 50%. Vegetarische, vegane oder spezielle Menüwünsche realisieren wir gern in gemeinsamer Absprache.

📋 Veranstaltungsdetails

💒 Hochzeit
🎂 Geburtstag
🏢 Firmenevent
🕯️ Trauerfeier
🎉 Sonstiges

🥗 Vorspeisen

Keine
1 Vorspeise
9,50 € p.P.
2 Vorspeisen
17 € p.P.
3 Vorspeisen
21 € p.P.
Geschätzter Gesamtpreis
0,00 €
0,00 € pro Person