{"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":"2025-10-07T12:37:44","modified_gmt":"2025-10-07T10:37:44","slug":"fahrten","status":"publish","type":"page","link":"https:\/\/www.skiclub-neunkirchen.de\/?page_id=161","title":{"rendered":"Fahrten \/ Skikurs \/ Mitglied werden"},"content":{"rendered":"<p style=\"text-align: left;\"><span style=\"font-family: verdana, geneva, sans-serif;\">Liebe Skifreunde,<br \/>\nes ist soweit, die Anmeldung zu den Fahrten f\u00fcr die Saison 2025\/26 ist nun m\u00f6glich. Hier findet Ihr eine \u00dcbersicht unseres Fahrtenprogramms mit allen Informationen und Konditionen. Falls Ihr noch kein Mitglied bei uns seid, kein Problem, viele Fahrten sind auch f\u00fcr Nicht-Mitglieder m\u00f6glich.<\/span><\/p>\n<p><span style=\"font-family: verdana, geneva, sans-serif;\">Und falls Euch unser Verein und unsere Angebote gefallen, dann werdet doch einfach Mitglied bei uns, wir freuen uns \ud83d\ude42 . <\/span><span style=\"font-family: verdana, geneva, sans-serif;\">Dazu nutzt einfach den Button &#8222;Mitglied werden&#8220; hier auf der Seite.<\/span><\/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 (Leiter 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, es ist soweit, die Anmeldung zu den Fahrten f\u00fcr die Saison 2025\/26 ist nun m\u00f6glich. Hier findet Ihr eine \u00dcbersicht unseres Fahrtenprogramms mit allen Informationen und Konditionen. Falls <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":146,"href":"https:\/\/www.skiclub-neunkirchen.de\/index.php?rest_route=\/wp\/v2\/pages\/161\/revisions"}],"predecessor-version":[{"id":1634,"href":"https:\/\/www.skiclub-neunkirchen.de\/index.php?rest_route=\/wp\/v2\/pages\/161\/revisions\/1634"}],"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}]}}