document.addEventListener('DOMContentLoaded', function () {
  const triggerDiv = document.querySelector('.menu-trigger');
  const expandableDiv = document.querySelector('.nav');
  const moveLeftElements = document.getElementsByClassName('move-left');
  const textElements = document.getElementsByClassName('fade');
  const navPointElements = document.querySelectorAll('.nav-point');
  const menuCloseDelay = expandableDiv.getAttribute('data-delay') || 0;
  let isOpen = false;

  // Function to calculate dynamic viewport height
  function updateViewportHeight() {
    const dynamicHeight = window.innerHeight;
    expandableDiv.style.height = `${dynamicHeight}px`;
  }

  // Initialize
  updateViewportHeight();
  
  window.addEventListener('resize', updateViewportHeight);

  // Initialize elements
  for (let element of moveLeftElements) {
    element.style.transform = 'translateX(-50px)';
  }

  for (let text of textElements) {
    text.style.opacity = '0';
  }

  // Function to close the menu
  function closeMenu() {
    setTimeout(() => {
      expandableDiv.style.height = '0px';
    }, menuCloseDelay);

    for (let element of moveLeftElements) {
      const delay = element.getAttribute('data-delay') || 0;
      setTimeout(() => {
        element.style.transform = 'translateX(-50px)';
      }, delay);
    }

    for (let text of textElements) {
      const delay = text.getAttribute('data-delay') || 0;
      setTimeout(() => {
        text.style.opacity = '0';
      }, delay);
    }

    document.body.classList.remove('no-scroll');
    isOpen = false;
  }

  // Toggle menu
  triggerDiv.addEventListener('click', () => {
    if (isOpen) {
      closeMenu();
    } else {
      updateViewportHeight(); // Update height on toggle open
      for (let element of moveLeftElements) {
        const delay = element.getAttribute('data-delay') || 0;
        setTimeout(() => {
          element.style.transform = 'translateX(0)';
        }, delay);
      }

      for (let text of textElements) {
        const delay = text.getAttribute('data-delay') || 0;
        setTimeout(() => {
          text.style.opacity = '1';
        }, delay);
      }

      document.body.classList.add('no-scroll');
      isOpen = true;
    }
  });

  // Close menu when a nav-point is clicked
  navPointElements.forEach((navPoint) => {
    navPoint.addEventListener('click', () => {
      if (isOpen) {
        closeMenu();
      }
    });
  });
});

{{ is_error_msg }}

Kategorie wählen
{{cat_data.category_name}}
Dienst auswählen
{{ service_details.bookingpress_service_name }}

Dauer: {{ service_details.bookingpress_service_duration_val }} {{ service_details.bookingpress_service_duration_label }}

Preis: {{ service_details.bookingpress_service_price }}

{{ is_error_msg }}

Termin
Zeitfenster
Es sind keine Zeitfenster verfügbar
Morgens
{{ time_details.formatted_start_end_time }}
Nachmittag
{{ time_details.formatted_start_end_time }}
Abends
{{ time_details.formatted_start_end_time }}
Nacht
{{ time_details.formatted_start_end_time }}
Termin
Zeitfenster
Es sind keine Zeitfenster verfügbar
Morgens
{{ time_details.formatted_start_end_time }}
{{ time_details.formatted_start_end_time }}
Nachmittag
{{ time_details.formatted_start_end_time }}
{{ time_details.formatted_start_end_time }}
Abends
{{ time_details.formatted_start_end_time }}
{{ time_details.formatted_start_end_time }}
Nacht
{{ time_details.formatted_start_end_time }}
{{ time_details.formatted_start_end_time }}

{{ is_error_msg }}

Grundlegende Details

{{ is_error_msg }}

Zusammenfassung

Zusammenfassung Ihrer Terminbuchung

Kunde
{{appointment_step_form_data.customer_name }}
{{ appointment_step_form_data.customer_firstname }} {{ appointment_step_form_data.customer_lastname }}
{{ appointment_step_form_data.customer_email }}
Service
{{ appointment_step_form_data.selected_service_name}}
Termin
{{ appointment_step_form_data.selected_date | bookingpress_format_date }}, {{ appointment_step_form_data.selected_start_time | bookingpress_format_time }} - {{ appointment_step_form_data.selected_end_time | bookingpress_format_time }}
Termindetails
{{ appointment_step_form_data.selected_service_name}}
{{ appointment_step_form_data.selected_date | bookingpress_format_date }}, {{ appointment_step_form_data.selected_start_time | bookingpress_format_time }} - {{ appointment_step_form_data.selected_end_time | bookingpress_format_time }}
{{ appointment_step_form_data.selected_service_price }}
Es ist keine Zahlungsmethode verfügbar.
Wählen Sie die Zahlungsmethode

Lokal bezahlen

PayPal

Keine Kategorien und Dienstleistungen hinzugefügt!

Anfrage
Produkt - Fotografie

Anfrage für
Produkt - Video

Anfrage für
Event - Video

Anfrage für
Event - Fotografie

Anfrage
Businessporträt mit
Hintergrundwechsel

Anfrage für
 neutrale Businessporträts

Anfrage
Business On-Site

Equipmentliste

Kameras (Set-Ready)

• 1x RED EPIC X 5K (120 FPS)
• 1x Sony FX3
• 1x Sony A7III
• 1x Canon 500D

Licht-Equipment

• 1x Profoto B10
• 1x Profoto B10X
• 1x Profoto D2 500 Air
• 1x Nanlite Forza 200

Softboxen & Lichtformer

• 1x Profoto Blitzschirm Deep White
• 1x Strip Softbox
• 1x Lantern Softbox
• 1x Mini White Blitzschirm

Blitz-Auslöser

• 1x Profoto Air TTL Remote

Objektive

• 1x Sony 50mm f/1.8 (Festbrennweite)
• 1x Sigma 24-70mm f/2.8
• 1x Canon 24-70mm f/2.8 L

Stative

• 5x Lichtstative
• 2x Manfrotto Autopoles
• 1x Manfrotto Kamerastativ
• RED-Schulterstativ
• Easyrig (bis 10 kg Traglast)

Spezielle Licht-Effekte

• 1x Bafongcine Optical Snoot (Bowens Mount)

DRUCKER

• Hochwertige Drucker bis A3 für Bilder in hoher Qualität