HERE WE CAMP

(function () { "use strict"; /* ========================================================= Flatpickr-Dateien ========================================================= */ const FLATPICKR_JS = "https://cdn.jsdelivr.net/npm/flatpickr@4.6.13/dist/flatpickr.min.js"; const FLATPICKR_CSS = "https://cdn.jsdelivr.net/npm/flatpickr@4.6.13/dist/themes/material_red.css"; const FLATPICKR_LOCALE_DE = "https://cdn.jsdelivr.net/npm/flatpickr@4.6.13/dist/l10n/de.js"; const FLATPICKR_LOCALE_DA = "https://cdn.jsdelivr.net/npm/flatpickr@4.6.13/dist/l10n/da.js"; /* ========================================================= Buchungszeitraum WICHTIG: - Frühestes Datum = heute - Saisonende = 30.09.2026 - Saison 2027 derzeit noch geschlossen ========================================================= */ const SEASON_END_DMY = "30-09-2026"; /* ========================================================= Elementor-Felder ========================================================= */ const DATE_FIELD_SELECTOR = "#form-field-datum"; const TYPE_FIELD_SELECTOR = "#form-field-typ"; const BUTTON_SELECTOR = "#suchen-button"; /* ========================================================= Kategorie-Zuordnung ========================================================= */ const CBPID_MAP = { all: "", stellplaetze: "22", bb: "40", shelter: "37", huette: "38", glamping: "41", angebote: "7" }; const CBPID_REVERSE_MAP = { "22": "stellplaetze", "40": "bb", "37": "shelter", "38": "huette", "41": "glamping", "7": "angebote" }; /* ========================================================= Hilfsfunktionen ========================================================= */ function qs(selector, root) { return ( root || document ).querySelector( selector ); } function loadCss(href) { return new Promise( function ( resolve, reject ) { const existingCss = document.querySelector( 'link[data-gm-flatpickr-css="true"]' ); if ( existingCss ) { resolve(); return; } const link = document.createElement( "link" ); link.rel = "stylesheet"; link.href = href; link.setAttribute( "data-gm-flatpickr-css", "true" ); link.onload = resolve; link.onerror = reject; document.head.appendChild( link ); } ); } function loadScript( src, identifier ) { return new Promise( function ( resolve, reject ) { const existingScript = document.querySelector( 'script[data-gm-script="' + identifier + '"]' ); if ( existingScript ) { if ( existingScript.getAttribute( "data-loaded" ) === "true" ) { resolve(); } else { existingScript.addEventListener( "load", resolve, { once: true } ); existingScript.addEventListener( "error", reject, { once: true } ); } return; } const script = document.createElement( "script" ); script.src = src; script.async = true; script.setAttribute( "data-gm-script", identifier ); script.onload = function () { script.setAttribute( "data-loaded", "true" ); resolve(); }; script.onerror = reject; document.head.appendChild( script ); } ); } function getParam(name) { try { return ( new URLSearchParams( window.location.search ).get(name) || "" ).trim(); } catch (error) { return ""; } } function guessLang() { const host = ( window.location.hostname || "" ).toLowerCase(); if ( host.endsWith(".dk") ) { return "DA"; } if ( host.endsWith(".co") ) { return "EN"; } return "DE"; } function getResultsUrl(lang) { lang = ( lang || guessLang() ).toUpperCase(); if ( lang === "DA" ) { return ( "https://gammelmark.dk/book-online/" ); } if ( lang === "EN" ) { return ( "https://gammelmark.co/book-online/" ); } return ( "https://gammelmark.de/online-buchen/" ); } function getCurrency(lang) { lang = ( lang || guessLang() ).toUpperCase(); if ( lang === "DA" ) { return ""; } return "EUR"; } function getTexts(lang) { lang = ( lang || guessLang() ).toUpperCase(); if ( lang === "DA" ) { return { button: "Find", alert: "Vælg venligst ankomst- og afrejsedato.", outsideSeason: "Den valgte periode ligger uden for bookingsæsonen." }; } if ( lang === "EN" ) { return { button: "Find", alert: "Please select arrival and departure date.", outsideSeason: "The selected period is outside the booking season." }; } return { button: "Finden", alert: "Bitte An- und Abreisedatum wählen.", outsideSeason: "Der gewählte Zeitraum liegt außerhalb der Buchungssaison." }; } function pad2(number) { return String( number ).padStart( 2, "0" ); } function formatDateDDMMYYYY(date) { return ( pad2( date.getDate() ) + "-" + pad2( date.getMonth() + 1 ) + "-" + date.getFullYear() ); } function formatDateForInput(date) { return ( pad2( date.getDate() ) + "." + pad2( date.getMonth() + 1 ) + "." + date.getFullYear() ); } function parseDMY(value) { if ( !value ) { return null; } const parts = value.split("-"); if ( parts.length !== 3 ) { return null; } const day = parseInt( parts[0], 10 ); const month = parseInt( parts[1], 10 ); const year = parseInt( parts[2], 10 ); if ( Number.isNaN(day) || Number.isNaN(month) || Number.isNaN(year) ) { return null; } return new Date( year, month - 1, day, 12, 0, 0, 0 ); } function getToday() { const today = new Date(); today.setHours( 12, 0, 0, 0 ); return today; } function getSeasonEnd() { return parseDMY( SEASON_END_DMY ); } function isBookableDate(date) { if ( !date ) { return false; } const check = new Date(date); check.setHours( 12, 0, 0, 0 ); return ( check >= getToday() && check <= getSeasonEnd() ); } function monthsForViewport() { return window.matchMedia( "(max-width: 767px)" ).matches ? 1 : 3; } function getLocaleKey(lang) { lang = ( lang || guessLang() ).toUpperCase(); if ( lang === "DE" ) { return "de"; } if ( lang === "DA" ) { return "da"; } return "default"; } function setButtonText(lang) { const button = qs( BUTTON_SELECTOR ); if ( !button ) { return; } button.textContent = getTexts( lang ).button; } function syncSelectFromCbpid() { const typeField = qs( TYPE_FIELD_SELECTOR ); if ( !typeField ) { return; } const cbpid = getParam( "cbpid" ); if ( !cbpid ) { return; } const value = CBPID_REVERSE_MAP[ cbpid ]; if ( value ) { typeField.value = value; typeField.dispatchEvent( new Event( "change", { bubbles: true } ) ); } } function setDateFieldDisplay( selectedDates, dateField ) { if ( !dateField || !selectedDates || selectedDates.length !== 2 ) { return; } dateField.value = formatDateForInput( selectedDates[0] ) + " - " + formatDateForInput( selectedDates[1] ); dateField.dispatchEvent( new Event( "input", { bubbles: true } ) ); dateField.dispatchEvent( new Event( "change", { bubbles: true } ) ); } /* ========================================================= Initialisierung ========================================================= */ document.addEventListener( "DOMContentLoaded", function () { loadCss( FLATPICKR_CSS ) .then( function () { return loadScript( FLATPICKR_JS, "flatpickr" ); } ) .then( function () { return Promise.all( [ loadScript( FLATPICKR_LOCALE_DE, "flatpickr-locale-de" ), loadScript( FLATPICKR_LOCALE_DA, "flatpickr-locale-da" ) ] ); } ) .then( function () { if ( typeof window.flatpickr === "undefined" ) { console.error( "Flatpickr konnte nicht geladen werden." ); return; } const LANG = ( getParam("lang") || guessLang() ).toUpperCase(); const TEXTS = getTexts( LANG ); const dateField = qs( DATE_FIELD_SELECTOR ); const typeField = qs( TYPE_FIELD_SELECTOR ); const button = qs( BUTTON_SELECTOR ); if ( !dateField || !button ) { console.error( "Datumsfeld oder Suchbutton wurde nicht gefunden." ); return; } setButtonText( LANG ); syncSelectFromCbpid(); let selectedDates = []; let flatpickrInstance = null; let currentMonthCount = monthsForViewport(); const initialFrom = parseDMY( getParam( "from" ) ); const initialTo = parseDMY( getParam( "to" ) ); /* * URL-Daten nur übernehmen, * wenn sie noch gültig sind. */ if ( initialFrom && initialTo && isBookableDate( initialFrom ) && isBookableDate( initialTo ) ) { selectedDates = [ initialFrom, initialTo ]; } function initFlatpickr() { const oldSelectedDates = selectedDates.slice(); if ( flatpickrInstance ) { try { flatpickrInstance.destroy(); } catch (error) { console.warn( "Flatpickr konnte nicht sauber entfernt werden.", error ); } flatpickrInstance = null; } currentMonthCount = monthsForViewport(); flatpickrInstance = window.flatpickr( dateField, { mode: "range", /* * Vergangenheit automatisch sperren */ minDate: getToday(), /* * Aktuelles Saisonende */ maxDate: getSeasonEnd(), defaultDate: oldSelectedDates, dateFormat: "Y-m-d", altInput: false, showMonths: currentMonthCount, monthSelectorType: "static", allowInput: false, disableMobile: true, locale: getLocaleKey( LANG ), onChange: function ( dates ) { selectedDates = dates.slice(); if ( dates.length === 2 ) { setDateFieldDisplay( dates, dateField ); } }, onReady: function ( dates, dateString, instance ) { const yearInput = instance .calendarContainer .querySelector( ".flatpickr-current-month input.cur-year" ); if ( yearInput ) { yearInput.setAttribute( "readonly", "readonly" ); yearInput.setAttribute( "tabindex", "-1" ); } if ( selectedDates.length === 2 ) { setDateFieldDisplay( selectedDates, dateField ); } } } ); window.__gmFlatpickr = flatpickrInstance; } initFlatpickr(); /* ===================================================== Wechsel zwischen Mobil- und Desktopansicht ===================================================== */ let resizeTimer = null; window.addEventListener( "resize", function () { clearTimeout( resizeTimer ); resizeTimer = setTimeout( function () { const newMonthCount = monthsForViewport(); if ( newMonthCount !== currentMonthCount ) { initFlatpickr(); } }, 200 ); } ); /* ===================================================== Weiterleitung zur Buchungsseite ===================================================== */ button.addEventListener( "click", function ( event ) { event.preventDefault(); if ( selectedDates.length !== 2 ) { alert( TEXTS.alert ); if ( window.__gmFlatpickr ) { window.__gmFlatpickr.open(); } return; } /* * Zusätzliche Sicherheitsprüfung. */ if ( !isBookableDate( selectedDates[0] ) || !isBookableDate( selectedDates[1] ) ) { alert( TEXTS.outsideSeason ); if ( window.__gmFlatpickr ) { window.__gmFlatpickr.open(); } return; } const typeKey = ( typeField && typeField.value ) ? String( typeField.value ).trim() : "all"; const cbpid = CBPID_MAP[ typeKey ] || ""; const currency = getCurrency( LANG ); const url = new URL( getResultsUrl( LANG ) ); url.searchParams.set( "lang", LANG ); url.searchParams.set( "from", formatDateDDMMYYYY( selectedDates[0] ) ); url.searchParams.set( "to", formatDateDDMMYYYY( selectedDates[1] ) ); if ( currency ) { url.searchParams.set( "currency", currency ); } else { url.searchParams.delete( "currency" ); } if ( cbpid ) { url.searchParams.set( "cbpid", cbpid ); } else { url.searchParams.delete( "cbpid" ); } window.location.href = url.toString(); } ); } ) .catch( function ( error ) { console.error( "Booking mask init failed:", error ); } ); } ); })();
Luft
-- °C
Vand
-- °C

Receptionens åbningstider

Check-In:
Kl. 14 – 16

Online Check-In:
Senere end kl. 16

Check-Out:
Kl. 8 – 10

Kiosk:
Kl. 14 – 16

Gammelmark Strand Camping

Besøg os og nyd den unikke udsigt hos Gammelmark Strand Camping! Smukt beliggende ved Vemmingbund Bugt på halvøen Broagerland nær Sønderborg.

Med Gendarmstien lige for fødderne, dansk historie overalt og havudsigten lige for øjnene af dig, er campingpladsen perfekt for enhver campist eller vandrer. Zusätzlich zum Camping bieten wir Zimmer, Tiny Häuser, Hütten, Mietwohnwagen, Glamping- und Shelter-Zelte an.

Børn og voksne finder her muligheder for både afslapning og aktiviteter. På vores mangfoldige og varierede områder findes der et stort udvalg af pladser – hver med sin egen unikke atmosfære. Du finder pladser på panoramaterrasser, beskyttede pladser ved skoven, pladser lige ved vandet – og under alle omstændigheder den helt rigtige plads til dig. Alle pladser har en smuk udsigt, og over 80 % har havudsigt.

Udforsk Gammelmark og oplev Sønderjylland.

Vi ses på Gammelmark!

Nyheder og begivenheder

EventsNews

Sensommer rabat

Fra den 17.08.2026 Selvom sommeren langt fra er slut, sænker vi vores
...

Events

Pattegris og LIVE musik

22. august 2026 Kl. 15 indtil sent om natten Tilmelding senest den
...

Events

Wingfoil Testival

11.–13. September I september 2026 afholder Surfpirates et Wingfoil Testival på Gammelmark
...

Autocampere

Hos Gammelmark Strand Camping har vi masser af muligheder for autocampere. Uanset om du blot gør et kort stop på din Europatur, eller om du vil tage dig god tid til at udforske regionen Sønderjylland – så har vi helt sikkert den rette plads til dig!

Campingvogn

På Gammelmark kan i leje hyggelige campingvogne med en smuk udsigt over havet.

Sengetøj og håndklæder er inkluderet. Vores campingvogne har plads for op til 2 voksne og 2 børn.

Tiny house | hytter

Tag på ferie eller weekend ved havet. Bei Gammelmark Strand Camping haben wir zwei Tiny Häuser und eine Campinghütte in Strandnähe und direkt am Gendarmsti. Hygge-feeling ved den skønne Vemmingbund bugt.

Værelser

Vi har andet end almindelig camping på Gammelmark Strand Camping. Hos os har I også tre hyggelige dobbeltværelser til rådighed. Værelserne ligger på første sal i hovedbygningen, og nogle af dem har udsigt over havet til Dybbøl Mølle og byen Sønderborh

Glamping-telt

Glamping med havudsigt – det store villatelt. Det forener det bedste fra to verdener: en naturnær campingoplevelse og afslappet komfort.

Mellem Østersøen, skov og åbne vidder tilbyder det store villatelt den perfekte pause for alle, der søger afslapning midt i naturen.

Shelter-telt

Denne populære campingform er ideel for vandrere og familier med op til fire personer. Den typisk danske “hygge”-faktor skaber hygge og velvære midt i naturen. Hos os på Gammelmark har vi i alt 3 shelters – hver med 4 sovepladser.