{"id":161,"date":"2017-07-09T14:54:27","date_gmt":"2017-07-09T12:54:27","guid":{"rendered":"https:\/\/www.skiclub-neunkirchen.de\/?page_id=161"},"modified":"2026-10-06T12:29:14","modified_gmt":"2026-10-06T10:29:14","slug":"fahrten","status":"publish","type":"page","link":"https:\/\/www.skiclub-neunkirchen.de\/?page_id=161","title":{"rendered":"Fahrten \/ Skikurs"},"content":{"rendered":"<p><span style=\"font-family: verdana, geneva, sans-serif;\">Liebe Skifreunde,<\/span><br \/>\n<span style=\"font-family: verdana, geneva, sans-serif;\">hier findet Ihr alle wichtigen Informationen rund um unser Fahrtenprogramm sowie die <\/span><span style=\"font-family: verdana, geneva, sans-serif;\">jeweiligen Termine, Leistungen und Konditionen. <\/span><span style=\"font-family: verdana, geneva, sans-serif;\">Die Anmeldung zu unseren Fahrten erfolgt direkt \u00fcber diese Seite. <\/span><span style=\"font-family: verdana, geneva, sans-serif;\">Ihr m\u00f6chtet unseren Verein und unsere Angebote n\u00e4her kennenlernen? Dann freuen wir <\/span><span style=\"font-family: verdana, geneva, sans-serif;\">uns nat\u00fcrlich, wenn Ihr Mitglied bei uns werdet! Nutzt daf\u00fcr einfach den <\/span><span style=\"font-family: verdana, geneva, sans-serif;\">Button <strong>\u201eAccount erstellen\u201c<\/strong> hier auf der Seite. <\/span><span style=\"font-family: verdana, geneva, sans-serif;\">Wenn Ihr bereits einen Account habt, k\u00f6nnt Ihr Euch direkt anmelden und unsere <\/span><span style=\"font-family: verdana, geneva, sans-serif;\">Fahrten bequem buchen.<br \/>\n<\/span><br \/>\n<span style=\"font-family: verdana, geneva, sans-serif;\">Wir w\u00fcnschen Euch viel Spa\u00df bei der Auswahl und freuen uns darauf, Euch bei unseren <\/span><span style=\"font-family: verdana, geneva, sans-serif;\">Fahrten begr\u00fc\u00dfen zu d\u00fcrfen \ud83d\ude42<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-family: verdana, geneva, sans-serif;\"><div class=\"iframeWrapper\" style=\"position: relative; width: 100%; height: 100%;\">\r\n  <iframe class=\"sharedIframe\" \r\n          src=\"https:\/\/vivlico.com\/registration\/bTFtMmo3NTl4cDdudTZwNXR0\" \r\n          style=\"width: 100%; height: 100%; border: none; position: relative; z-index: 1;\">\r\n  <\/iframe>\r\n<\/div>\r\n\r\n<script>\r\nif(!window.vivlicoPopup){\r\nconst hiddenStores = new WeakMap();\r\n\r\n\/\/ Hide other elements\r\nfunction hideInterferingElements(iframe){\r\n    if(!iframe) return;\r\n    const wrapper = iframe.closest('.iframeWrapper');\r\n\r\n    \/\/ Backup-Store for this iframe\r\n    const store = new Map();\r\n    hiddenStores.set(iframe, store);\r\n\r\n    \/\/ Iframe to front\r\n    iframe.style.setProperty('position', 'fixed', 'important');\r\n    iframe.style.setProperty('top', '0', 'important');\r\n    iframe.style.setProperty('left', '0', 'important');\r\n    iframe.style.setProperty('width', '100vw', 'important');\r\n    iframe.style.setProperty('height', '100dvh', 'important');\r\n    iframe.style.setProperty('min-height', '100dvh', 'important');\r\n    iframe.style.setProperty('max-height', '100dvh', 'important');\r\n    iframe.style.setProperty('z-index', 2147483647, 'important');\r\n\r\n    \/\/ Andere potentielle Overlays sichern und ausblenden\r\n    const candidates = Array.from(document.body.querySelectorAll('*'));\r\n    candidates.forEach(el => {\r\n        if (!el) return;\r\n        if (el === iframe || el === wrapper || el.contains(iframe) || iframe.contains(el)) return;\r\n        if (el === document.body || el === document.documentElement) return;\r\n        const cs = getComputedStyle(el);\r\n        const pos = cs.position;\r\n        const z = cs.zIndex === 'auto' ? NaN : Number(cs.zIndex);\r\n        const tag = el.tagName;\r\n        if (['SCRIPT','STYLE','LINK','HEAD','META'].includes(tag)) return;\r\n\r\n        if (pos === 'fixed' || pos === 'absolute' || pos === 'sticky' || (!Number.isNaN(z) && z >= 0)) {\r\n        store.set(el, {\r\n            visibility: el.style.visibility || '',\r\n            pointerEvents: el.style.pointerEvents || '',\r\n            opacity: el.style.opacity || ''\r\n        });\r\n        el.style.setProperty('visibility', 'hidden', 'important');\r\n        el.style.setProperty('pointer-events', 'none', 'important');\r\n        el.style.setProperty('opacity', '0', 'important');\r\n        }\r\n    });\r\n}\r\n\r\n\/\/ Restore page\r\nfunction restorePage(iframe){\r\n    if(!iframe) return;\r\n\r\n    \/\/ Iframe reset\r\n    iframe.style.setProperty('position', 'relative', 'important');\r\n    iframe.style.setProperty('width', '100%', 'important');\r\n    iframe.style.setProperty('height', '100%', 'important');\r\n    iframe.style.setProperty('min-height', 'auto', 'important');\r\n    iframe.style.setProperty('max-height', '100%', 'important');\r\n    iframe.style.setProperty('z-index', 1, 'important');\r\n\r\n\r\n    \/\/ Rebuild elements\r\n    const store = hiddenStores.get(iframe);\r\n    if(store){\r\n        store.forEach((backup, el) => {\r\n            if (!el) return;\r\n            if (backup.visibility) el.style.visibility = backup.visibility; else el.style.removeProperty('visibility');\r\n            if (backup.pointerEvents) el.style.pointerEvents = backup.pointerEvents; else el.style.removeProperty('pointer-events');\r\n            if (backup.opacity) el.style.opacity = backup.opacity; else el.style.removeProperty('opacity');\r\n        });\r\n        store.clear();\r\n        hiddenStores.delete(iframe);\r\n    }\r\n}\r\n\r\n\/\/ Listen to messages\r\nwindow.addEventListener(\"message\", (event) => {\r\n    const iframe = getIframeBySource(event.source);\r\n    if(!iframe) return;\r\n\r\n    const wrapper = iframe.closest(\".iframeWrapper\");\r\n\r\n    if(event.data.action === \"openPopup\") {\r\n        document.querySelectorAll(\"iframe.sharedIframe\").forEach((frame) => {\r\n            if(frame !== iframe) frame.style.display = \"none\";\r\n        });\r\n        hideInterferingElements(iframe);\r\n\r\n    }else if(event.data.action === \"closePopup\") {\r\n        restorePage(iframe);\r\n        document.querySelectorAll(\"iframe.sharedIframe\").forEach((frame) => {\r\n            frame.style.display = \"block\";\r\n        });\r\n\r\n    }else if(event.data.action === \"iframeHeight\") {\r\n        wrapper.style.height = event.data.iframeHeight + \"px\";\r\n        iframe.style.height = event.data.iframeHeight + \"px\";\r\n\r\n    }else if(event.data.action === \"login\") {\r\n        if(event.data.token != null){\r\n            localStorage.setItem(\"memberToken\", event.data.token);\r\n            broadcastLogin(event.data.token);\r\n        }else{\r\n            localStorage.removeItem(\"memberToken\");\r\n            broadcastLogin(event.data.token);\r\n        }\r\n\r\n    }else if(event.data.action === \"requestToken\") {\r\n        const token = localStorage.getItem(\"memberToken\");\r\n        if(token){\r\n            event.source.postMessage({action: \"setToken\", token}, event.origin);\r\n        }\r\n    }\r\n});\r\n\r\n\/\/ Viewport Changes\r\nfunction sendViewportSizeToIframes() {\r\n    const viewportHeight = window.innerHeight;\r\n    const viewportWidth = window.innerWidth;\r\n    const iframes = document.querySelectorAll(\"iframe.sharedIframe\");\r\n    iframes.forEach((iframe) => {\r\n        iframe.contentWindow.postMessage({action: \"viewportHeight\", height: viewportHeight, width: viewportWidth},\"*\");\r\n    });\r\n}\r\n\r\n\/\/ Get iframe\r\nfunction getIframeBySource(sourceWindow) {\r\n    const iframes = document.querySelectorAll(\"iframe.sharedIframe\");\r\n    for(let iframe of iframes) {\r\n        if(iframe.contentWindow === sourceWindow) {\r\n        return iframe;\r\n        }\r\n    }\r\n    return null;\r\n}\r\n\r\n\/\/ Broadcast login\r\nfunction broadcastLogin(token){\r\n    const iframes = document.querySelectorAll(\"iframe.sharedIframe\");\r\n    iframes.forEach((frame) => {\r\n        frame.contentWindow.postMessage({action: \"setToken\", token},\"*\");\r\n    });\r\n}\r\n\r\n\/\/ Listeners\r\nwindow.addEventListener(\"resize\", sendViewportSizeToIframes);\r\nwindow.addEventListener(\"load\", (event) => {\r\n    setInterval(() => {sendViewportSizeToIframes()}, 1000);\r\n    const token = localStorage.getItem(\"memberToken\");\r\n    if(token){broadcastLogin(token)};\r\n});\r\n\r\n\/\/ Nur einmal global anh\u00e4ngen\r\nwindow.vivlicoPopup = {\r\n    show: hideInterferingElements,\r\n    hide: restorePage\r\n};\r\n}\r\n<\/script><\/span><\/p>\n<hr \/>\n<p><span style=\"font-family: verdana, geneva, sans-serif;\">F\u00fcr weitere Fragen bez\u00fcglich Fahrten etc. wendet Euch bitte an folgende Mail-Adresse:<\/span><\/p>\n<p><span style=\"font-family: verdana, geneva, sans-serif;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1253\" src=\"https:\/\/www.skiclub-neunkirchen.de\/wp-content\/uploads\/2023\/01\/Matthias-Koehler-trimm-300x279.jpg\" alt=\"\" width=\"179\" height=\"167\" srcset=\"https:\/\/www.skiclub-neunkirchen.de\/wp-content\/uploads\/2023\/01\/Matthias-Koehler-trimm-300x279.jpg 300w, https:\/\/www.skiclub-neunkirchen.de\/wp-content\/uploads\/2023\/01\/Matthias-Koehler-trimm.jpg 422w\" sizes=\"auto, (max-width: 179px) 100vw, 179px\" \/><\/span><\/p>\n<p><span style=\"font-family: verdana, geneva, sans-serif;\">Matthias K\u00f6hler (Vorstand Fahrten)<\/span><br \/>\n<span style=\"font-family: verdana, geneva, sans-serif;\">E-Mail: <a href=\"mailto:fahrten@skiclub-neunkirchen.de\">fahrten@skiclub-neunkirchen.de<\/a><\/span><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Liebe Skifreunde, hier findet Ihr alle wichtigen Informationen rund um unser Fahrtenprogramm sowie die jeweiligen Termine, Leistungen und Konditionen. Die Anmeldung zu unseren Fahrten erfolgt direkt \u00fcber diese Seite. Ihr <a class=\"more-link\" href=\"https:\/\/www.skiclub-neunkirchen.de\/?page_id=161\">weiterlesen&#8230;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":4,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-161","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.skiclub-neunkirchen.de\/index.php?rest_route=\/wp\/v2\/pages\/161","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.skiclub-neunkirchen.de\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.skiclub-neunkirchen.de\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.skiclub-neunkirchen.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.skiclub-neunkirchen.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=161"}],"version-history":[{"count":153,"href":"https:\/\/www.skiclub-neunkirchen.de\/index.php?rest_route=\/wp\/v2\/pages\/161\/revisions"}],"predecessor-version":[{"id":291,"href":"https:\/\/www.skiclub-neunkirchen.de\/index.php?rest_route=\/wp\/v2\/pages\/161\/revisions\/291"}],"wp:attachment":[{"href":"https:\/\/www.skiclub-neunkirchen.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=161"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}