Try your dance class or course before signing up

Do you want to experience the community and joy of dancing in Copenhagen? Sign up for a free and non-binding trial lesson at Bendixen Dans. Fill out the form below and let us help you find the perfect dance team that matches your desires.

Book your free trial lesson here

To ensure the best experience, please fill in all fields - especially email and phone number. If the desired class is fully booked or closed, we will inform you as soon as possible. Otherwise, we look forward to welcoming you to an unforgettable dance experience.

Bestil Prøvetime
Udfyld formularen, så giver vi underviseren besked om, at du kommer.
Indlæser kategorier...
Vælg først kategori
Vælg et hold for at se datoer
Spam-tjek: Hvad er ? *
Tak! Din tilmelding er modtaget, og underviseren har fået besked. Vi glæder os til at se dig!
Der opstod en fejl. Prøv venligst igen, eller kontakt os direkte på mail.
(function() { // --- KONFIGURATION --- const BASE_PATH = 'https://app.bendixendans.dk/program/'; // SØRG FOR AT DENNE ER KORREKT const MAIL_API = BASE_PATH + 'send_mail.php'; // --- SPROG STYRING (UI) --- const uiTexts = { da: { title: "Bestil Prøvetime", subtitle: "Udfyld formularen, så giver vi underviseren besked om, at du kommer.", lblName: "Dit Fulde Navn *", phName: "F.eks. Jens Jensen", lblEmail: "E-mail *", phEmail: "din@email.dk", lblPhone: "Telefon *", lblCat: "1. Vælg Kategori *", optCatLoad: "Indlæser kategorier...", optCatSelect: "Vælg en kategori...", optCatErr: "Fejl ved indlæsning", lblTeam: "2. Vælg Hold *", optTeamWait: "Vælg først kategori", optTeamSelect: "Vælg hold fra listen...", lblDate: "3. Ønsket Dato *", optDateWait: "Vælg et hold for at se datoer", optDateSelect: "Vælg dato...", lblMsg: "Eventuel besked (Valgfri)", phMsg: "Har du danset før? Har du en dansepartner med?", captchaPre: "Spam-tjek: Hvad er", captchaPh: "Dit svar", errCaptcha: "Det indtastede svar i spam-tjekket var forkert. Prøv igen.", btnSubmit: "Send Tilmelding", btnSending: "Sender...", btnSent: "Tilmelding Sendt!", msgSuccess: "Tak! Din tilmelding er modtaget, og underviseren har fået besked. Vi glæder os til at se dig!", msgError: "Der opstod en fejl. Prøv venligst igen, eller kontakt os direkte på mail.", metaInstr: "Underviser", metaDancesOn: "Dette hold danser om", metaDaySuf: "en" }, en: { title: "Book a Trial Lesson", subtitle: "Fill out the form below, and we will notify the instructor of your arrival.", lblName: "Your Full Name *", phName: "e.g. John Doe", lblEmail: "Email *", phEmail: "your@email.com", lblPhone: "Phone *", lblCat: "1. Select Category *", optCatLoad: "Loading categories...", optCatSelect: "Select a category...", optCatErr: "Error loading classes", lblTeam: "2. Select Class *", optTeamWait: "Select a category first", optTeamSelect: "Select a class from the list...", lblDate: "3. Preferred Date *", optDateWait: "Select a class to see dates", optDateSelect: "Select a date...", lblMsg: "Message (Optional)", phMsg: "Have you danced before? Are you bringing a partner?", captchaPre: "Spam check: What is", captchaPh: "Your answer", errCaptcha: "The answer to the spam check was incorrect. Please try again.", btnSubmit: "Submit Request", btnSending: "Sending...", btnSent: "Request Sent!", msgSuccess: "Thank you! Your request has been received, and the instructor has been notified. We look forward to seeing you!", msgError: "An error occurred. Please try again, or contact us directly via email.", metaInstr: "Instructor", metaDancesOn: "This class dances on", metaDaySuf: "s" } }; // Detekter sprog fra HTML-koden (WPML sætter automatisk denne) const docLang = document.documentElement.lang.toLowerCase(); const currentLang = docLang.includes('en') ? 'en' : 'da'; const txt = uiTexts[currentLang]; // Mini-ordbog til ugedage (til brug når vi oversætter data fra JSON) const builtInTranslations = { "Mandag": "Monday", "Mandage": "Mondays", "Tirsdag": "Tuesday", "Tirsdage": "Tuesdays", "Onsdag": "Wednesday", "Onsdage": "Wednesdays", "Torsdag": "Thursday", "Torsdage": "Thursdays", "Fredag": "Friday", "Fredage": "Fridays", "Lørdag": "Saturday", "Lørdage": "Saturdays", "Søndag": "Sunday", "Søndage": "Sundays", "Sal 1": "Room 1", "Sal 2": "Room 2" }; // Appdater Formular Tekster dynamisk document.getElementById('ui-title').innerText = txt.title; document.getElementById('ui-subtitle').innerText = txt.subtitle; document.getElementById('ui-lbl-name').innerText = txt.lblName; document.getElementById('ui-ph-name').placeholder = txt.phName; document.getElementById('ui-lbl-email').innerText = txt.lblEmail; document.getElementById('ui-ph-email').placeholder = txt.phEmail; document.getElementById('ui-lbl-phone').innerText = txt.lblPhone; document.getElementById('ui-lbl-cat').innerText = txt.lblCat; document.getElementById('ui-opt-cat').innerText = txt.optCatLoad; document.getElementById('ui-lbl-team').innerText = txt.lblTeam; document.getElementById('ui-opt-team').innerText = txt.optTeamWait; document.getElementById('ui-lbl-date').innerText = txt.lblDate; document.getElementById('ui-opt-date').innerText = txt.optDateWait; document.getElementById('ui-lbl-msg').innerText = txt.lblMsg; document.getElementById('ui-ph-msg').placeholder = txt.phMsg; document.getElementById('ui-captcha-txt').innerText = txt.captchaPre; document.getElementById('bd-math-answer').placeholder = txt.captchaPh; document.getElementById('bd-submit-btn').innerText = txt.btnSubmit; document.getElementById('bd-msg-success').innerText = txt.msgSuccess; document.getElementById('bd-msg-error').innerText = txt.msgError; // Vis formularen når teksterne er sat document.getElementById('bd-form-wrapper').style.opacity = 1; // --- LOGIK OG DATA --- let groupedData = {}; let adminTranslations = {}; const catSelect = document.getElementById('bd-cat-select'); const teamSelect = document.getElementById('bd-team-select'); const dateSelect = document.getElementById('bd-date-select'); const teamMeta = document.getElementById('bd-team-meta'); const instrInput = document.getElementById('bd-instructor-input'); const roomInput = document.getElementById('bd-room-input'); const dayMap = { 'mandag': 1, 'mandage': 1, 'tirsdag': 2, 'tirsdage': 2, 'onsdag': 3, 'onsdage': 3, 'torsdag': 4, 'torsdage': 4, 'fredag': 5, 'fredage': 5, 'lørdag': 6, 'lørdage': 6, 'søndag': 0, 'søndage': 0 }; const enDays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; // Oversættelses-hjælper (Data) function t(text) { if (currentLang !== 'en') return text; if (!text) return ''; const cleanText = text.trim(); if (adminTranslations && adminTranslations[cleanText]) return adminTranslations[cleanText]; if (builtInTranslations[cleanText]) return builtInTranslations[cleanText]; return text; } // CAPTCHA LOGIK let captchaExpected = 0; function generateCaptcha() { const num1 = Math.floor(Math.random() * 10) + 1; const num2 = Math.floor(Math.random() * 10) + 1; captchaExpected = num1 + num2; document.getElementById('bd-math-calc').innerText = `${num1} + ${num2}`; document.getElementById('bd-math-answer').value = ''; } generateCaptcha(); // 1. Hent data fra server async function loadFormData() { const ts = Date.now(); try { const [km, cust, hid, trans] = await Promise.all([ fetch(BASE_PATH + 'klubmodulhold.json?v=' + ts), fetch(BASE_PATH + 'customhold.json?v=' + ts), fetch(BASE_PATH + 'skjulte_hold.json?v=' + ts), fetch(BASE_PATH + 'translations.json?v=' + ts) ]); const kmData = km.ok ? await km.json() : []; const custData = cust.ok ? await cust.json() : []; const hidden = hid.ok ? await hid.json() : []; adminTranslations = trans.ok ? await trans.json() : {}; [...kmData, ...custData].forEach(cat => { let catName = cat.kategori_navn.trim(); if (!groupedData[catName]) groupedData[catName] = []; let activeHolds = cat.hold.filter(h => !hidden.includes(h.id)); groupedData[catName].push(...activeHolds); }); const sortedCats = Object.keys(groupedData).sort((a,b) => a.localeCompare(b)); catSelect.innerHTML = `${txt.optCatSelect}`; sortedCats.forEach(catName => { if (groupedData[catName].length > 0) { const option = document.createElement('option'); // Gem den danske værdi for backend option.value = catName; // Vis oversat værdi option.text = t(catName); catSelect.appendChild(option); } }); } catch (e) { console.error("Error:", e); catSelect.innerHTML = `${txt.optCatErr}`; } } // 2. Kategori Valgt catSelect.addEventListener('change', function() { const selectedCat = this.value; const holds = groupedData[selectedCat] || []; teamSelect.innerHTML = `${txt.optTeamSelect}`; teamSelect.disabled = false; dateSelect.innerHTML = `${txt.optDateWait}`; dateSelect.disabled = true; teamMeta.style.display = 'none'; holds.sort((a,b) => a.holdnavn.localeCompare(b.holdnavn)); holds.forEach(h => { const option = document.createElement('option'); // Backend har brug for den danske reference option.value = `${h.holdnavn} (${h.dag} ${h.tid})`; const transName = t(h.holdnavn); const transDay = t(h.dag); option.text = `${transName} - ${transDay} @ ${h.tid}`; option.dataset.instructor = h.instructor || ""; option.dataset.room = h.room || ""; option.dataset.day = h.dag || ""; teamSelect.appendChild(option); }); }); // 3. Hold Valgt -> Datoer teamSelect.addEventListener('change', function() { const opt = this.options[this.selectedIndex]; instrInput.value = opt.dataset.instructor; roomInput.value = opt.dataset.room; let targetDayName = opt.dataset.day.toLowerCase().trim(); let targetDayIndex = dayMap[targetDayName]; dateSelect.innerHTML = `${txt.optDateSelect}`; if (targetDayIndex !== undefined) { for (let i = 0; i < 5; i++) { let d = new Date(); d.setHours(0,0,0,0); let currentDay = d.getDay(); let diff = targetDayIndex - currentDay; if (diff < 0) diff += 7; d.setDate(d.getDate() + diff + (i * 7)); // Formater dato baseret på sprog let formattedDate; if(currentLang === 'en') { formattedDate = d.toLocaleDateString('en-GB', { weekday: 'long', day: 'numeric', month: 'short', year: 'numeric' }); } else { formattedDate = d.toLocaleDateString('da-DK', { weekday: 'long', day: 'numeric', month: 'short', year: 'numeric' }); formattedDate = formattedDate.charAt(0).toUpperCase() + formattedDate.slice(1); } const dateOpt = document.createElement('option'); dateOpt.value = formattedDate; dateOpt.text = formattedDate; dateSelect.appendChild(dateOpt); } dateSelect.disabled = false; const displayDay = currentLang === 'en' ? enDays[targetDayIndex] : opt.dataset.day.toLowerCase(); const translatedRoom = t(opt.dataset.room) || '-'; const displayInstr = opt.dataset.instructor || '-'; teamMeta.style.display = 'block'; teamMeta.innerHTML = ` 📍 ${translatedRoom}
👤 ${txt.metaInstr}: ${displayInstr}
📅 ${txt.metaDancesOn} ${displayDay}${txt.metaDaySuf}. `; } else { // Hvis der mod forventning ikke er en ugedag dateSelect.innerHTML = 'Dato aftales / To be agreed'; dateSelect.disabled = false; teamMeta.style.display = 'none'; } }); // 4. Send const form = document.getElementById('bd-trial-form'); form.addEventListener('submit', async function(e) { e.preventDefault(); // VALIDER CAPTCHA FØRST const userAnswer = parseInt(document.getElementById('bd-math-answer').value, 10); if (userAnswer !== captchaExpected) { alert(txt.errCaptcha); generateCaptcha(); return; } const btn = document.getElementById('bd-submit-btn'); const msgSuccess = document.getElementById('bd-msg-success'); const msgError = document.getElementById('bd-msg-error'); btn.disabled = true; btn.innerText = txt.btnSending; msgSuccess.style.display = 'none'; msgError.style.display = 'none'; const formData = { name: form.name.value, email: form.email.value, phone: form.phone.value, team: form.team.value, date: form.date.value, instructor: form.instructor.value, message: form.message.value, bot_check: form.bendixen_bot_check.value }; try { const response = await fetch(MAIL_API, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(formData) }); if (response.ok) { msgSuccess.style.display = 'block'; form.reset(); catSelect.value = ""; teamSelect.innerHTML = `${txt.optTeamWait}`; dateSelect.innerHTML = `${txt.optDateWait}`; teamSelect.disabled = true; dateSelect.disabled = true; teamMeta.style.display = 'none'; btn.innerText = txt.btnSent; generateCaptcha(); } else { throw new Error('Server error'); } } catch (err) { console.error(err); msgError.style.display = 'block'; btn.disabled = false; btn.innerText = txt.btnSubmit; } }); loadFormData(); })();
WE LOOK FORWARD TO SEEING YOU

FIND US

Bendixen Dans is proud of our modern facilities in Grøndal Multicenter, where we offer dance lessons in two large dance studios.

Bendixen Dans i Grøndal MultiCenter
Hvidkildevej 64 1. sal, 2400 København NV (Få rutevejledning)