{"id":50326,"date":"2025-02-06T20:38:40","date_gmt":"2025-02-06T19:38:40","guid":{"rendered":"https:\/\/triptherapie.nl\/?page_id=50326"},"modified":"2026-02-28T10:03:23","modified_gmt":"2026-02-28T09:03:23","slug":"rate-of-a-psychedelic-session","status":"publish","type":"page","link":"https:\/\/triptherapie.nl\/en\/qa\/tarief-van-een-psychedelische-sessie\/","title":{"rendered":"Price of a psychedelic session"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"50326\" class=\"elementor elementor-50326\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e29075f e-flex e-con-boxed e-con e-parent\" data-id=\"e29075f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a84b090 elementor-widget elementor-widget-heading\" data-id=\"a84b090\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\" class=\"elementor-heading-title elementor-size-default\" id=\"wat-kost-een-psychedelische-sessie\">Wat kost een psychedelische sessie?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f172bf4 elementor-widget elementor-widget-text-editor\" data-id=\"f172bf4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>De prijzen voor een psychedelische sessie vari\u00ebren. Groepsceremonies zoals truffelceremonies op onze locatie in Schiedam kost \u20ac650 en de MDMA groepsceremonies in Den Bosch zijn \u20ac600 per persoon. Dit is inclusief voorbereiding, begeleiding en integratie.<\/p><p>We hebben daarnaast ook psychedelische retraites met meerdere dagen. De prijzen van de retraites varieert per opzet en het beste bekijk je de verschillende prijzen via de <span style=\"color: #cc99ff;\"><a style=\"color: #cc99ff;\" href=\"https:\/\/triptherapie.nl\/open-psychedelische-groepsceremonie\/#agenda-open-groep-ceremonies\">boekingsmodule van de groepssessies<\/a><\/span>.<\/p><p>Individuele sessies kosten tussen de \u20ac750 en \u20ac950, afhankelijk van de ervaring van de begeleider en de gekozen locatie. Bij priv\u00e9 sessies wordt ook extra gerekend als de sessie langer dan zes uur duurt, meestal \u20ac75 per extra uur. Daarnaast worden bij sessies aan huis reiskosten in rekening gebracht, namelijk 50 cent per kilometer. Kijk dus voordat je een priv\u00e9sessie boekt waar jouw begeleider woont.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-40597c6 e-flex e-con-boxed e-con e-parent\" data-id=\"40597c6\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e6a2464 elementor-widget elementor-widget-button\" data-id=\"e6a2464\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/triptherapie.nl\/open-psychedelische-groepsceremonie\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Psychedelische ceremonies<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3bcc5c4 elementor-widget elementor-widget-button\" data-id=\"3bcc5c4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/triptherapie.nl\/prijzen\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Huidige tarieven<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9d4c0c7 elementor-widget elementor-widget-button\" data-id=\"9d4c0c7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/triptherapie.nl\/reserveringen\/werkgebied\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Werkgebied begeleiders<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d43b34f e-flex e-con-boxed e-con e-parent\" data-id=\"d43b34f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-acdcb93 elementor-widget elementor-widget-heading\" data-id=\"acdcb93\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\" class=\"elementor-heading-title elementor-size-default\" id=\"rekentool-prijs-psychedelische-therapie\">Rekentool prijs psychedelische therapie<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d29e6ff elementor-widget elementor-widget-text-editor\" data-id=\"d29e6ff\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>De onderstaande tool kan je gebruiken om snel te berekenen wat een psychedelische sessie komt op jouw locatie en welke therapeuten er op jouw locatie werken.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c7701d2 elementor-widget elementor-widget-template\" data-id=\"c7701d2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"template.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-template\">\n\t\t\t\t\t<div data-elementor-type=\"container\" data-elementor-id=\"51226\" class=\"elementor elementor-51226\" data-elementor-post-type=\"elementor_library\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7257ede e-con-full e-flex e-con e-parent\" data-id=\"7257ede\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-519f602 e-con-full e-flex e-con e-child\" data-id=\"519f602\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c7c84cc elementor-widget elementor-widget-heading\" data-id=\"c7c84cc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\" class=\"elementor-heading-title elementor-size-default\" id=\"prijsberekening-sessie-op-locatie\">Prijsberekening sessie op locatie<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-63ccb5a elementor-widget elementor-widget-text-editor\" data-id=\"63ccb5a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p style=\"text-align: center;\">Reken hier eenvoudig uit wat de prijs is voor een priv\u00e9 psychedelische sessie voor \u00e9\u00e9n tot drie deelnemers op jouw eigen of op \u00e9\u00e9n van onze locaties. Bij sessies op de locaties van Triptherapie is altijd \u00e9\u00e9n overnachting plus eten en drinken inbegrepen.<\/p><p style=\"text-align: center;\">Witte tekst: De begeleider werkt op jouw locatie.<br \/><span style=\"color: #ff6600;\">Oranje tekst<\/span>: De begeleider woont net buiten jouw werkgebied, maar in overleg lukt het vaak wel.<br \/><span style=\"color: #ff0000;\">Rode tekst<\/span>: Je woont te ver weg. Overweeg om een accommodatie dichterbij te huren, een andere begeleider of deelname aan een <span style=\"color: #cc99ff;\"><a style=\"color: #cc99ff;\" href=\"https:\/\/triptherapie.nl\/open-psychedelische-groepsceremonie\/#agenda-open-groep-ceremonies\">groepsceremonie op \u00e9\u00e9n van onze locaties<\/a><\/span>.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8566c87 elementor-widget elementor-widget-text-editor\" data-id=\"8566c87\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h3 style=\"text-align: center;\" style=\"text-align: center;\" id=\"voer-uw-gewenste-locatie-in\">Voer uw gewenste locatie in:<\/h3>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-508468a elementor-widget elementor-widget-html\" data-id=\"508468a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<head>\n  <meta charset=\"UTF-8\" \/>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/>\n\n  <link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.4.0\/css\/all.min.css\"\/>\n  <style>\n    html, body { height: 100%; margin: 0; padding: 0; }\n\n    #distance-tool {\n      margin: 20px auto;\n      padding: 0 10px;\n      max-width: 1200px;\n    }\n\n    .input-container {\n      display: flex;\n      align-items: center;\n      margin-bottom: 20px;\n      gap: 16px;\n      flex-wrap: wrap;\n    }\n\n    .input-container input,\n    .input-container button {\n      box-sizing: border-box;\n      height: 52px;\n      font-size: 17px;\n    }\n\n    .input-container input {\n      flex: 1;\n      min-width: 260px;\n      padding: 8px 16px;\n    }\n\n    .calculate-btn {\n      padding: 8px 22px;\n      color: white;\n      background-color: #b20091;\n      border: none;\n      cursor: pointer;\n    }\n\n    .calculate-btn:hover {\n      opacity: 0.92;\n    }\n\n    .content-container {\n      display: flex;\n      flex-direction: column;\n      gap: 20px;\n    }\n\n    .left-column,\n    .right-column {\n      width: 100%;\n    }\n\n    @media (min-width: 768px) {\n      .content-container {\n        flex-direction: row;\n        align-items: flex-start;\n      }\n\n      .left-column {\n        flex: 1.15;\n        min-width: 0;\n      }\n\n      .right-column {\n        flex: 0.85;\n        min-width: 0;\n      }\n    }\n\n    .person-controls {\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      gap: 8px;\n      margin: 0 0 18px 0;\n      text-align: center;\n    }\n\n    .map-controls {\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      gap: 8px;\n      margin: 0 0 18px 0;\n      text-align: center;\n    }\n\n    .toggle-label {\n      font-weight: 700;\n      color: inherit;\n    }\n\n    .toggle-group {\n      display: inline-flex;\n      flex-wrap: wrap;\n      justify-content: center;\n      gap: 10px;\n    }\n\n    .toggle-group input[type=\"radio\"] {\n      position: absolute;\n      opacity: 0;\n      pointer-events: none;\n    }\n\n    .toggle-option {\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      min-height: 42px;\n      min-width: 125px;\n      padding: 8px 14px;\n      border: none;\n      background-color: black;\n      color: white;\n      cursor: pointer;\n      user-select: none;\n      font-size: 16px;\n      line-height: 1.2;\n      transition: opacity 0.2s ease;\n      box-sizing: border-box;\n      text-align: center;\n    }\n\n    .toggle-option:hover {\n      opacity: 0.92;\n    }\n\n    .toggle-group input[type=\"radio\"]:checked + .toggle-option {\n      background-color: #7d0066;\n      color: white;\n    }\n\n    #results {\n      margin-top: 0;\n    }\n\n    .dropdown {\n      position: relative;\n      display: inline-flex;\n      align-items: center;\n      cursor: pointer;\n    }\n\n    .dropdown-content {\n      display: none;\n      position: fixed;\n      background-color: white;\n      box-shadow: 0 8px 16px rgba(0,0,0,0.2);\n      z-index: 999999;\n      min-width: 220px;\n      border-radius: 5px;\n      padding: 5px;\n      gap: 5px;\n      flex-direction: row;\n      align-items: stretch;\n    }\n\n    .dropdown-content a {\n      color: black;\n      padding: 10px;\n      text-decoration: none;\n      display: inline-block;\n      white-space: nowrap;\n      border-radius: 4px;\n    }\n\n    .dropdown-content a:hover {\n      background-color: #f1f1f1;\n    }\n\n    .strike td {\n      color: red;\n      text-decoration: line-through;\n    }\n\n    .table-container {\n      width: 100%;\n      overflow-x: auto;\n      margin-bottom: 18px;\n    }\n\n    #map {\n      width: 100%;\n      height: 340px;\n      margin-top: 0;\n      position: relative;\n      top: 0;\n    }\n\n    .explanation-row {\n      margin-top: 24px;\n    }\n\n    .explanation-toggle {\n  width: 100%;\n  background: linear-gradient(90deg, #00000050 0%, #0000004d 100%) !important;\n  color: white;\n  border: none;\n  padding: 12px 16px;\n  font-size: 17px;\n  text-align: left;\n  cursor: pointer;\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  box-sizing: border-box;\n}\n\n    .explanation-toggle:hover {\n      opacity: 0.92;\n    }\n\n    .explanation-toggle .icon {\n      transition: transform 0.2s ease;\n    }\n\n    .explanation-toggle.active .icon {\n      transform: rotate(180deg);\n    }\n\n    .explanation-content {\n      display: none;\n      border: 1px solid #222;\n      border-top: none;\n      padding: 18px;\n      background: black;\n      color: white;\n      line-height: 1.6;\n    }\n\n    .explanation-content.open {\n      display: block;\n    }\n\n    .explanation-content h2 {\n      margin: 0 0 12px 0;\n      font-size: 24px;\n      color: #f5f5f5;\n    }\n\n    .explanation-content h3 {\n      margin: 22px 0 10px 0;\n      font-size: 20px;\n      color: #f5f5f5;\n    }\n\n    .explanation-content p {\n      margin: 0 0 14px 0;\n    }\n\n    .explanation-content a {\n      color: #ff66d9;\n    }\n\n    @media (max-width: 1024px) {\n      .input-container {\n        gap: 10px;\n        margin-bottom: 16px;\n      }\n\n      .input-container input,\n      .input-container button {\n        height: 46px;\n        font-size: 16px;\n      }\n\n      .input-container input {\n        padding: 6px 12px;\n      }\n\n      .calculate-btn {\n        padding: 6px 18px;\n      }\n\n      .toggle-group {\n        gap: 8px;\n      }\n\n      .toggle-option {\n        min-width: 100px;\n        min-height: 36px;\n        padding: 6px 10px;\n        font-size: 14px;\n      }\n\n      .explanation-toggle {\n        font-size: 16px;\n      }\n    }\n\n    @media (max-width: 600px) {\n      .table-container table td,\n      .table-container table th {\n        padding: calc(5px * 0.75) !important;\n      }\n\n      .input-container {\n        gap: 8px;\n        margin-bottom: 14px;\n      }\n\n      .input-container input,\n      .input-container button {\n        height: 42px;\n        font-size: 15px;\n      }\n\n      .input-container input {\n        padding: 6px 10px;\n        min-width: 0;\n      }\n\n      .calculate-btn {\n        padding: 6px 14px;\n      }\n\n      .toggle-group {\n        gap: 6px;\n      }\n\n      .toggle-option {\n        min-width: 88px;\n        min-height: 34px;\n        padding: 6px 9px;\n        font-size: 13px;\n      }\n\n      .toggle-label {\n        font-size: 15px;\n      }\n\n      .explanation-content {\n        padding: 14px;\n      }\n\n      .explanation-content h2 {\n        font-size: 21px;\n      }\n\n      .explanation-content h3 {\n        font-size: 18px;\n      }\n    }\n  <\/style>\n<\/head>\n\n<body>\n  <div id=\"distance-tool\">\n    <div class=\"input-container\">\n      <label for=\"startLocation\" style=\"display:none;\"><\/label>\n      <input type=\"text\" id=\"startLocation\" placeholder=\"Bijv. Amsterdam\">\n      <button id=\"calculateBtn\" class=\"calculate-btn\">Bereken<\/button>\n    <\/div>\n\n    <div class=\"content-container\">\n      <div class=\"left-column\">\n        <div class=\"person-controls\">\n          <div class=\"toggle-label\">Aantal personen:<\/div>\n          <div class=\"toggle-group\" id=\"personCountGroup\">\n            <input type=\"radio\" name=\"personCount\" id=\"persons1\" value=\"1\" checked>\n            <label class=\"toggle-option\" for=\"persons1\">E\u00e9n<\/label>\n\n            <input type=\"radio\" name=\"personCount\" id=\"persons2\" value=\"2\">\n            <label class=\"toggle-option\" for=\"persons2\">Twee<\/label>\n\n            <input type=\"radio\" name=\"personCount\" id=\"persons3\" value=\"3\">\n            <label class=\"toggle-option\" for=\"persons3\">Drie<\/label>\n          <\/div>\n        <\/div>\n\n        <div id=\"results\"><\/div>\n      <\/div>\n\n      <div class=\"right-column\">\n        <div class=\"map-controls\">\n          <div class=\"toggle-label\">Kaartweergave:<\/div>\n          <div class=\"toggle-group\" id=\"sessionTypeGroup\">\n            <input type=\"radio\" name=\"sessionType\" id=\"mapOwn\" value=\"own\" checked>\n            <label class=\"toggle-option\" for=\"mapOwn\">Eigen locatie<\/label>\n\n            <input type=\"radio\" name=\"sessionType\" id=\"mapLocation\" value=\"location\">\n            <label class=\"toggle-option\" for=\"mapLocation\">Triptherapie locatie<\/label>\n          <\/div>\n        <\/div>\n\n        <div id=\"map\"><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"explanation-row\">\n      <button id=\"explanationToggle\" class=\"explanation-toggle\" type=\"button\" aria-expanded=\"false\">\n        <span>Uitleg gebruik rekentool<\/span>\n        <span class=\"icon\"><i class=\"fa-solid fa-chevron-down\"><\/i><\/span>\n      <\/button>\n\n      <div id=\"explanationContent\" class=\"explanation-content\">\n        <h2 id=\"uitleg-van-alle-mogelijkheden-binnen-deze-keuzehulp\">Uitleg van alle mogelijkheden binnen deze keuzehulp<\/h2>\n\n        <p>Deze tool is bedoeld om snel inzicht te geven in de verschillende manieren waarop een sessie via Triptherapie kan worden ingepland. De tool combineert drie dingen in \u00e9\u00e9n overzicht. Je kunt het aantal personen kiezen, je kunt een startlocatie invoeren om afstanden en reistijden te laten berekenen, en je kunt wisselen tussen kaartweergave voor sessies op eigen locatie of sessies op een Triptherapie-locatie. Daardoor krijg je niet alleen een prijsindicatie, maar ook direct een praktisch beeld van welke begeleiders of locaties het meest logisch zijn.<\/p>\n\n        <p>De opbouw is als volgt. Links zie je de keuze voor het aantal personen en daaronder de twee tabellen. In de eerste tabel staan de begeleiders voor sessies op eigen locatie. In de tweede tabel staan de vaste Triptherapie-locaties. Rechts zie je de kaart. Met de kaartweergave kies je of je op de kaart de begeleiders of juist de locaties wilt zien. De tabellen blijven zichtbaar, zodat je beide soorten opties altijd naast elkaar kunt vergelijken.<\/p>\n\n        <h3 id=\"startlocatie-invoeren-en-berekenen\">Startlocatie invoeren en berekenen<\/h3>\n        <p>Bovenaan vul je een plaats of adres in, bijvoorbeeld Amsterdam. Daarna druk je op de knop Bereken. De tool gebruikt die invoer om twee soorten informatie te tonen.<\/p>\n\n        <p>Bij de begeleiders op eigen locatie wordt gekeken naar afstand, reistijd, reiskosten en het totaalbedrag. Daardoor zie je niet alleen wie beschikbaar of logisch is qua werkgebied, maar ook wat dat financieel betekent.<\/p>\n\n        <p>Bij de Triptherapie-locaties wordt gekeken naar de afstand en reistijd vanaf jouw ingevoerde locatie naar de gekozen vaste locatie. Daar komt geen extra reiskostenberekening voor de begeleider bovenop, want het gaat dan om een sessie op een vaste plek van Triptherapie.<\/p>\n\n        <p>Als je geen startlocatie invult, toont de tool nog steeds alle begeleiders en alle locaties met hun basisprijzen voor het gekozen aantal personen. Zodra je wel een locatie invult, worden de berekeningen toegevoegd.<\/p>\n\n        <h3 id=\"aantal-personen\">Aantal personen<\/h3>\n        <p>De optie Aantal personen staat boven de tabellen in de linkerkolom. Daarmee bepaal je voor hoeveel mensen de prijs wordt berekend. De tool rekent met drie keuzes.<\/p>\n\n        <p>Bij 1 persoon geldt de basisprijs.<\/p>\n        <p>Bij 2 personen wordt er 500 euro toegevoegd aan de basisprijs.<\/p>\n        <p>Bij 3 personen wordt er in totaal 1000 euro toegevoegd aan de basisprijs.<\/p>\n\n        <p>Dat betekent dat de tool automatisch meebeweegt als je wisselt tussen \u00e9\u00e9n, twee of drie personen. Zowel de begeleiderstabel als de locatietabel worden dan opnieuw berekend. Zo zie je meteen wat het verschil is tussen een individuele sessie, een duo-sessie of een sessie voor drie personen met \u00e9\u00e9n begeleider.<\/p>\n\n        <h3 id=\"sessie-op-eigen-accommodatie\">Sessie op eigen accommodatie<\/h3>\n        <p>Wanneer je kijkt naar de begeleiders, gaat het om sessies op een locatie van de klant. Dat kan bijvoorbeeld thuis zijn, in een hotel, in een Airbnb of in een andere geschikte priv\u00e9omgeving. In de tabel zie je per begeleider de woonplaats, of na berekening de afstand, reiskosten, reistijd en het totaalbedrag.<\/p>\n\n        <p>De tool houdt hier ook rekening met praktische grenzen. Sommige begeleiders zijn sneller inzetbaar binnen een groter gebied, terwijl voor anderen de maximale reistijd beperkter is. Daardoor zie je soms begeleiders in normale tekst, soms in oranje, en soms doorgestreept in rood. Dat helpt om onderscheid te maken tussen goed passend, nog net mogelijk of praktisch minder geschikt.<\/p>\n\n        <p>Deze tabel is vooral nuttig voor mensen die liever in hun eigen vertrouwde omgeving werken, of die willen onderzoeken welke begeleider financieel en praktisch het best past bij hun locatie.<\/p>\n\n        <h3 id=\"sessie-op-een-triptherapie-locatie\">Sessie op een Triptherapie-locatie<\/h3>\n        <p>De tweede tabel laat de vaste locaties van Triptherapie zien. Dit zijn locaties waar je naartoe reist in plaats van dat een begeleider naar jou toe komt. In dit overzicht zie je de plaats, en na berekening ook de afstand en reistijd vanaf jouw startlocatie. Het totaalbedrag verandert mee met het aantal personen.<\/p>\n\n        <p>Deze optie is handig wanneer je liever gebruikmaakt van een vaste setting die al geschikt is voor de sessie. In dat geval vergelijk je niet zozeer begeleiders op reistijd, maar vooral de verschillende locaties en hun totaalprijs.<\/p>\n\n        <h3 id=\"kaartweergave\">Kaartweergave<\/h3>\n        <p>Rechts staat de kaart. Boven de kaart kies je met de kaartweergave wat je op de kaart wilt zien.<\/p>\n\n        <p>Kies je voor Eigen accommodatie, dan toont de kaart de begeleiders. Je ziet dan waar de verschillende begeleiders zich ongeveer bevinden. Als je een startlocatie hebt ingevuld en op Bereken hebt gedrukt, kunnen ook routes worden weergegeven.<\/p>\n\n        <p>Kies je voor Triptherapie locatie, dan toont de kaart juist de vaste locaties. Daardoor kun je visueel zien welke locatie geografisch het handigst ligt ten opzichte van jouw vertrekpunt.<\/p>\n\n        <p>De kaartweergave verandert alleen de kaart. De tabellen links blijven beide zichtbaar, zodat je tijdens het vergelijken niet hoeft te wisselen tussen schermen.<\/p>\n\n        <h3 id=\"uitleg-van-de-begeleidersopties\">Uitleg van de begeleidersopties<\/h3>\n\n        <p><strong>Marcel<\/strong><br>\n        <a href=\"https:\/\/triptherapie.nl\/personeel\/marcel\/\" target=\"_blank\" rel=\"noopener\">Meer informatie over Marcel<\/a><br>\n        <a href=\"https:\/\/tripforum.nl\/recensie-truffel-therapie-marcel\/\" target=\"_blank\" rel=\"noopener\">Recensies over Marcel<\/a><br>\n        <a href=\"https:\/\/triptherapie.nl\/reserveringen\/book-marcel-own-location\/\" target=\"_blank\" rel=\"noopener\">Reserveren met Marcel op eigen locatie<\/a><\/p>\n\n        <p><strong>Janneke<\/strong><br>\n        <a href=\"https:\/\/triptherapie.nl\/personeel\/janneke\/\" target=\"_blank\" rel=\"noopener\">Meer informatie over Janneke<\/a><br>\n        <a href=\"https:\/\/triptherapie.nl\/forum\/review-janneke\/\" target=\"_blank\" rel=\"noopener\">Recensies over Janneke<\/a><br>\n        <a href=\"https:\/\/triptherapie.nl\/reserveringen\/book-janneke-own-location\/\" target=\"_blank\" rel=\"noopener\">Reserveren met Janneke op eigen locatie<\/a><\/p>\n\n        <p><strong>Gijs<\/strong><br>\n        <a href=\"https:\/\/triptherapie.nl\/personeel\/gijs\/\" target=\"_blank\" rel=\"noopener\">Meer informatie over Gijs<\/a><br>\n        <a href=\"https:\/\/triptherapie.nl\/forum\/recensies-gijs\/\" target=\"_blank\" rel=\"noopener\">Recensies over Gijs<\/a><br>\n        <a href=\"https:\/\/triptherapie.nl\/reserveringen\/book-psychedelic-session-own-location-gijs\/\" target=\"_blank\" rel=\"noopener\">Reserveren met Gijs op eigen locatie<\/a><\/p>\n\n        <p><strong>Sascha<\/strong><br>\n        <a href=\"https:\/\/triptherapie.nl\/personeel\/sascha\/\" target=\"_blank\" rel=\"noopener\">Meer informatie over Sascha<\/a><br>\n        <a href=\"https:\/\/triptherapie.nl\/forum\/recensies-sascha\/\" target=\"_blank\" rel=\"noopener\">Recensies over Sascha<\/a><br>\n        <a href=\"https:\/\/triptherapie.nl\/reserveringen\/book-psychedelic-session-own-location-sascha\/\" target=\"_blank\" rel=\"noopener\">Reserveren met Sascha op eigen locatie<\/a><\/p>\n\n        <p><strong>Reineke<\/strong><br>\n        <a href=\"https:\/\/triptherapie.nl\/personeel\/reineke\/\" target=\"_blank\" rel=\"noopener\">Meer informatie over Reineke<\/a><br>\n        <a href=\"https:\/\/tripforum.nl\/ervaringen-truffel-reineke\/\" target=\"_blank\" rel=\"noopener\">Recensies over Reineke<\/a><br>\n        <a href=\"https:\/\/triptherapie.nl\/reserveringen\/agenda-reineke\/\" target=\"_blank\" rel=\"noopener\">Agenda en reserveren bij Reineke<\/a><\/p>\n\n        <p><strong>Ronald<\/strong><br>\n        <a href=\"https:\/\/triptherapie.nl\/personeel\/ronald\/\" target=\"_blank\" rel=\"noopener\">Meer informatie over Ronald<\/a><br>\n        <a href=\"https:\/\/triptherapie.nl\/forum\/recensies-ronald\/\" target=\"_blank\" rel=\"noopener\">Recensies over Ronald<\/a><br>\n        <a href=\"https:\/\/triptherapie.nl\/reserveringen\/book-psychedelic-session-own-location-ronald\/\" target=\"_blank\" rel=\"noopener\">Reserveren met Ronald op eigen locatie<\/a><\/p>\n\n        <h3 id=\"uitleg-van-de-vaste-locaties\">Uitleg van de vaste locaties<\/h3>\n\n        <p><strong>De Bedding in Den Bosch<\/strong><br>\n        <a href=\"https:\/\/triptherapie.nl\/locatie\/bedding-den-bosch\/\" target=\"_blank\" rel=\"noopener\">Meer informatie over De Bedding in Den Bosch<\/a><br>\n        <a href=\"https:\/\/triptherapie.nl\/reserveringen\/book-psychedelic-session-own-location-gijs\/\" target=\"_blank\" rel=\"noopener\">Reserveren voor De Bedding via Gijs<\/a><\/p>\n\n        <p><strong>Sancta Psychedelica in Noordwijk<\/strong><br>\n        <a href=\"https:\/\/triptherapie.nl\/locatie\/sancta-psychedelica-noordwijk\/\" target=\"_blank\" rel=\"noopener\">Meer informatie over Sancta Psychedelica in Noordwijk<\/a><br>\n        <a href=\"https:\/\/triptherapie.nl\/reserveringen\/sancta-psychedelica-noordwijk-reserveren\/\" target=\"_blank\" rel=\"noopener\">Reserveren bij Sancta Psychedelica<\/a><\/p>\n\n        <p><strong>Psychedelic Loft in Schiedam<\/strong><br>\n        <a href=\"https:\/\/triptherapie.nl\/locatie\/psychedelic-loft-schiedam\/\" target=\"_blank\" rel=\"noopener\">Meer informatie over de Psychedelic Loft in Schiedam<\/a><br>\n        <a href=\"https:\/\/triptherapie.nl\/reserveringen\/book-psychedelic-session-psychedelic-loft\/\" target=\"_blank\" rel=\"noopener\">Reserveren bij de Psychedelic Loft<\/a><\/p>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <script src=\"https:\/\/maps.googleapis.com\/maps\/api\/js?key=AIzaSyCi5hCWfsu72vYKb5s0C5_1yxOYxLBVh8E&callback=initMap\" async defer><\/script>\n\n  <script>\n    const EXTRA_PER_EXTRA_PERSON = 500;\n\n    const baseDestinations = [\n      { name: \"Marcel\",  address: \"2204 CB Noordwijk\",    city: \"Noordwijk\",    addition: 850, color: \"#8B0000\" },\n      { name: \"Reineke\", address: \"3142 CA Maassluis\",    city: \"Maassluis\",    addition: 850, color: \"#006400\" },\n      { name: \"Sascha\",  address: \"1404 HC Bussum\",       city: \"Bussum\",       addition: 850, color: \"#006666\" },\n      { name: \"Gijs\",    address: \"5231 EK Den Bosch\",    city: \"Den Bosch\",    addition: 850, color: \"#8B4513\" },\n      { name: \"Ronald\",  address: \"5554 SH Valkenswaard\", city: \"Valkenswaard\", addition: 950, color: \"#4B0082\" },\n      { name: \"Janneke\", address: \"3137 RL Vlaardingen\",  city: \"Vlaardingen\",  addition: 750, color: \"#00008B\" }\n    ];\n\n    const baseLocations = [\n      { name: \"De Bedding\",          address: \"5231 EK Den Bosch\", city: \"Den Bosch\", price: 850,  color: \"#b20091\" },\n      { name: \"Sancta Psychedelica\", address: \"2204 CB Noordwijk\", city: \"Noordwijk\", price: 1050, color: \"#c2185b\" },\n      { name: \"Psychedelic Loft\",    address: \"3111 ND Schiedam\",  city: \"Schiedam\",  price: 1250, color: \"#7b1fa2\" }\n    ];\n\n    let destinations = [];\n    let locations = [];\n\n    function getPersonCount() {\n      const checked = document.querySelector('input[name=\"personCount\"]:checked');\n      const value = checked ? parseInt(checked.value, 10) : 1;\n      return [1, 2, 3].includes(value) ? value : 1;\n    }\n\n    function getExtraPersonsPrice() {\n      return (getPersonCount() - 1) * EXTRA_PER_EXTRA_PERSON;\n    }\n\n    function getSessionType() {\n      const checked = document.querySelector('input[name=\"sessionType\"]:checked');\n      return checked ? checked.value : \"own\";\n    }\n\n    function rebuildPricingData() {\n      const extra = getExtraPersonsPrice();\n\n      destinations = baseDestinations.map(item => ({\n        ...item,\n        addition: item.addition + extra\n      }));\n\n      locations = baseLocations.map(item => ({\n        ...item,\n        price: item.price + extra\n      }));\n\n      const urlParams = new URLSearchParams(window.location.search);\n      const guidesParam = urlParams.getAll(\"guide\");\n\n      if (guidesParam.length > 0) {\n        const guideFilter = [];\n        guidesParam.forEach(p => p.split(\",\").forEach(g => guideFilter.push(g.trim().toLowerCase())));\n\n        destinations = destinations.filter(dest =>\n          guideFilter.includes(dest.name.toLowerCase())\n        );\n      }\n    }\n\n    rebuildPricingData();\n\n    let map;\n    let directionsService;\n    let directionsRenderers = [];\n    let geocoder;\n    let markers = [];\n    let markerBounds;\n    let overlay;\n    let alternateTick = 0;\n    let activeDropdown = null;\n    let hideDropdownTimer = null;\n\n    function clearDirections() {\n      directionsRenderers.forEach(r => r.setMap(null));\n      directionsRenderers = [];\n    }\n\n    function clearMarkers() {\n      markers.forEach(m => m.setMap(null));\n      markers = [];\n    }\n\n    function escapeHtml(text) {\n      return String(text)\n        .replaceAll(\"&\", \"&amp;\")\n        .replaceAll(\"<\", \"&lt;\")\n        .replaceAll(\">\", \"&gt;\")\n        .replaceAll('\"', \"&quot;\")\n        .replaceAll(\"'\", \"&#039;\");\n    }\n\n    function getDropdownWrapper(label, linksHtml) {\n      const iconHTML = '<i class=\"fa-solid fa-up-right-from-square\" style=\"color: white; margin-left: 4px;\" title=\"Klik hier voor meer informatie\"><\/i>';\n      return (\n        \"<div class='dropdown'>\" +\n          \"<span>\" + escapeHtml(label) + \"<\/span>\" + iconHTML +\n          \"<div class='dropdown-content'>\" + linksHtml + \"<\/div>\" +\n        \"<\/div>\"\n      );\n    }\n\n    function getDropdownHTML(name) {\n      if (name === \"Janneke\") {\n        return getDropdownWrapper(\"Janneke\",\n          \"<a href='https:\/\/triptherapie.nl\/reserveringen\/book-janneke-own-location\/' target='_blank' rel='noopener'>Reserveren<\/a>\" +\n          \"<a href='https:\/\/triptherapie.nl\/personeel\/janneke\/' target='_blank' rel='noopener'>Profiel<\/a>\" +\n          \"<a href='https:\/\/triptherapie.nl\/forum\/review-janneke\/' target='_blank' rel='noopener'>Recensies<\/a>\"\n        );\n      } else if (name === \"Marcel\") {\n        return getDropdownWrapper(\"Marcel\",\n          \"<a href='https:\/\/triptherapie.nl\/reserveringen\/book-marcel-own-location\/' target='_blank' rel='noopener'>Reserveren<\/a>\" +\n          \"<a href='https:\/\/triptherapie.nl\/personeel\/marcel\/' target='_blank' rel='noopener'>Profiel<\/a>\" +\n          \"<a href='https:\/\/tripforum.nl\/recensie-truffel-therapie-marcel\/' target='_blank' rel='noopener'>Recensies<\/a>\"\n        );\n      } else if (name === \"Gijs\") {\n        return getDropdownWrapper(\"Gijs\",\n          \"<a href='https:\/\/triptherapie.nl\/reserveringen\/book-psychedelic-session-own-location-gijs\/' target='_blank' rel='noopener'>Reserveren<\/a>\" +\n          \"<a href='https:\/\/triptherapie.nl\/personeel\/gijs\/' target='_blank' rel='noopener'>Profiel<\/a>\" +\n          \"<a href='https:\/\/triptherapie.nl\/forum\/recensies-gijs\/' target='_blank' rel='noopener'>Recensies<\/a>\"\n        );\n      } else if (name === \"Sascha\") {\n        return getDropdownWrapper(\"Sascha\",\n          \"<a href='https:\/\/triptherapie.nl\/reserveringen\/book-psychedelic-session-own-location-sascha\/' target='_blank' rel='noopener'>Reserveren<\/a>\" +\n          \"<a href='https:\/\/triptherapie.nl\/personeel\/sascha\/' target='_blank' rel='noopener'>Profiel<\/a>\" +\n          \"<a href='https:\/\/triptherapie.nl\/forum\/recensies-sascha\/' target='_blank' rel='noopener'>Recensies<\/a>\"\n        );\n      } else if (name === \"Reineke\") {\n        return getDropdownWrapper(\"Reineke\",\n          \"<a href='https:\/\/triptherapie.nl\/reserveringen\/agenda-reineke\/' target='_blank' rel='noopener'>Reserveren<\/a>\" +\n          \"<a href='https:\/\/triptherapie.nl\/personeel\/reineke\/' target='_blank' rel='noopener'>Profiel<\/a>\" +\n          \"<a href='https:\/\/tripforum.nl\/ervaringen-truffel-reineke\/' target='_blank' rel='noopener'>Recensies<\/a>\"\n        );\n      } else if (name === \"Ronald\") {\n        return getDropdownWrapper(\"Ronald\",\n          \"<a href='https:\/\/triptherapie.nl\/reserveringen\/book-psychedelic-session-own-location-ronald\/' target='_blank' rel='noopener'>Reserveren<\/a>\" +\n          \"<a href='https:\/\/triptherapie.nl\/personeel\/ronald\/' target='_blank' rel='noopener'>Profiel<\/a>\" +\n          \"<a href='https:\/\/triptherapie.nl\/forum\/recensies-ronald\/' target='_blank' rel='noopener'>Recensies<\/a>\"\n        );\n      }\n\n      return escapeHtml(name);\n    }\n\n    function getLocationDropdownHTML(name) {\n      if (name === \"De Bedding\") {\n        return getDropdownWrapper(\"De Bedding\",\n          \"<a href='https:\/\/triptherapie.nl\/locatie\/bedding-den-bosch\/' target='_blank' rel='noopener'>Locatie info<\/a>\" +\n          \"<a href='https:\/\/triptherapie.nl\/reserveringen\/book-psychedelic-session-own-location-gijs\/' target='_blank' rel='noopener'>Reserveren<\/a>\"\n        );\n      } else if (name === \"Sancta Psychedelica\") {\n        return getDropdownWrapper(\"Sancta Psychedelica\",\n          \"<a href='https:\/\/triptherapie.nl\/locatie\/sancta-psychedelica-noordwijk\/' target='_blank' rel='noopener'>Locatie info<\/a>\" +\n          \"<a href='https:\/\/triptherapie.nl\/reserveringen\/sancta-psychedelica-noordwijk-reserveren\/' target='_blank' rel='noopener'>Reserveren<\/a>\"\n        );\n      } else if (name === \"Psychedelic Loft\") {\n        return getDropdownWrapper(\"Psychedelic Loft\",\n          \"<a href='https:\/\/triptherapie.nl\/locatie\/psychedelic-loft-schiedam\/' target='_blank' rel='noopener'>Locatie info<\/a>\" +\n          \"<a href='https:\/\/triptherapie.nl\/reserveringen\/book-psychedelic-session-psychedelic-loft\/' target='_blank' rel='noopener'>Reserveren<\/a>\"\n        );\n      }\n\n      return escapeHtml(name);\n    }\n\n    function showGuidesTable() {\n      const hasInput = document.getElementById(\"startLocation\").value.trim() !== \"\";\n      let html = '<div class=\"table-container\">';\n      html += \"<table style='width:100%; border-collapse:collapse;' border='1' cellpadding='5'>\";\n      html += \"<tr style='background: #000428; color: white;'>\";\n      html += \"<th>Begeleider<\/th>\";\n      html += hasInput ? \"<th>Afstand<\/th>\" : \"<th>Woonplaats<\/th>\";\n      if (hasInput) html += \"<th>Reis<\/th><th>Reistijd<\/th>\";\n      html += \"<th>Totaal<\/th>\";\n      html += \"<\/tr>\";\n\n      destinations.forEach(dest => {\n        html += \"<tr>\";\n        html += \"<td>\" + getDropdownHTML(dest.name) + \"<\/td>\";\n        html += \"<td>\" + escapeHtml(dest.city) + \"<\/td>\";\n        if (hasInput) html += \"<td>\u20ac0<\/td><td>-<\/td>\";\n        html += \"<td>\u20ac\" + dest.addition + \"<\/td>\";\n        html += \"<\/tr>\";\n      });\n\n      html += \"<\/table><\/div>\";\n      return html;\n    }\n\n    function showLocationsTable() {\n      let html = '<div class=\"table-container\">';\n      html += \"<table style='width:100%; border-collapse:collapse;' border='1' cellpadding='5'>\";\n      html += \"<tr style='background: #b20091; color: white;'>\";\n      html += \"<th>Onze locaties<\/th><th>Plaats<\/th><th>Totaal<\/th>\";\n      html += \"<\/tr>\";\n\n      locations.forEach(loc => {\n        html += \"<tr>\";\n        html += \"<td>\" + getLocationDropdownHTML(loc.name) + \"<\/td>\";\n        html += \"<td>\" + escapeHtml(loc.city) + \"<\/td>\";\n        html += \"<td>\u20ac\" + loc.price + \"<\/td>\";\n        html += \"<\/tr>\";\n      });\n\n      html += \"<\/table><\/div>\";\n      return html;\n    }\n\n    function showBothTables() {\n      rebuildPricingData();\n      document.getElementById(\"results\").innerHTML = showGuidesTable() + showLocationsTable();\n      initDropdowns();\n    }\n\n    function addOriginMarker(originAddress) {\n      geocoder.geocode({ address: originAddress }, function(results, status) {\n        if (status === google.maps.GeocoderStatus.OK) {\n          const pos = results[0].geometry.location;\n          const marker = new google.maps.Marker({\n            map,\n            position: pos,\n            title: \"Startlocatie\",\n            icon: \"http:\/\/maps.google.com\/mapfiles\/ms\/icons\/blue-dot.png\"\n          });\n          marker.isRotatingMarker = false;\n          markers.push(marker);\n          markerBounds.extend(marker.getPosition());\n        }\n      });\n    }\n\n    function hexToRgb(hex) {\n      hex = (hex || \"\").replace(\/^#\/, \"\");\n      if (hex.length !== 6) return null;\n      const bigint = parseInt(hex, 16);\n      return { r: (bigint >> 16) & 255, g: (bigint >> 8) & 255, b: bigint & 255 };\n    }\n\n    function getAdjustedSVGIcon(markerLike, markerType) {\n      const color = markerLike.customColor || \"#8B0000\";\n      const rgb = hexToRgb(color);\n      if (!rgb) return null;\n\n      let width = 150;\n      let height = 28;\n      let radius = 5;\n\n      if (markerType === \"guide\") {\n        width = 60;\n        height = 20;\n        radius = 3;\n      }\n\n      const rgbaColor = `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, 1)`;\n      const svg = `<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"${width}\" height=\"${height}\" viewBox=\"0 0 ${width} ${height}\">\n        <rect x=\"0\" y=\"0\" width=\"${width}\" height=\"${height}\" rx=\"${radius}\" ry=\"${radius}\" fill=\"${rgbaColor}\"\/>\n      <\/svg>`;\n\n      return {\n        url: \"data:image\/svg+xml;charset=UTF-8,\" + encodeURIComponent(svg),\n        scaledSize: new google.maps.Size(width, height),\n        anchor: new google.maps.Point(width \/ 2, height \/ 2),\n        labelOrigin: new google.maps.Point(width \/ 2, height \/ 2)\n      };\n    }\n\n    function addNamedMarker(item, origin) {\n      const address = item.address + \", \" + item.city + \", Nederland\";\n      const markerType = locations.some(loc => loc.name === item.name) ? \"location\" : \"guide\";\n\n      geocoder.geocode({ address }, function(results, status) {\n        if (status === google.maps.GeocoderStatus.OK) {\n          const pos = results[0].geometry.location;\n\n          const marker = new google.maps.Marker({\n            map,\n            position: pos,\n            title: item.name,\n            icon: getAdjustedSVGIcon({ customColor: item.color }, markerType),\n            label: {\n              text: item.name,\n              color: \"white\",\n              fontSize: markerType === \"guide\" ? \"10px\" : \"11px\",\n              fontWeight: \"bold\"\n            }\n          });\n\n          marker.customColor = item.color;\n          marker.isRotatingMarker = true;\n          markers.push(marker);\n          markerBounds.extend(marker.getPosition());\n\n          marker.addListener(\"click\", function() {\n            const startLoc = document.getElementById(\"startLocation\").value.trim();\n            if (!startLoc) {\n              alert(\"Voer een startlocatie in om de route te tonen.\");\n              return;\n            }\n            drawRoute(startLoc, address, item.color);\n          });\n\n          if (origin) drawRoute(origin, address, item.color);\n        }\n      });\n    }\n\n    function showAllMarkers() {\n      rebuildPricingData();\n      clearMarkers();\n      clearDirections();\n      markerBounds = new google.maps.LatLngBounds();\n\n      const sessionType = getSessionType();\n      const items = sessionType === \"location\" ? locations : destinations;\n\n      items.forEach(item => addNamedMarker(item, null));\n    }\n\n    function alternateMarkerZIndex() {\n      if (!overlay || !overlay.getProjection()) return;\n\n      const rotatingMarkers = markers.filter(m => m.isRotatingMarker);\n      const n = rotatingMarkers.length;\n      if (n === 0) return;\n\n      const proj = overlay.getProjection();\n      const positions = rotatingMarkers.map(m => proj.fromLatLngToDivPixel(m.getPosition()));\n\n      const overlappingIndices = [];\n      for (let i = 0; i < n; i++) {\n        for (let j = i + 1; j < n; j++) {\n          const dx = positions[i].x - positions[j].x;\n          const dy = positions[i].y - positions[j].y;\n          const d = Math.sqrt(dx * dx + dy * dy);\n          if (d < 40) {\n            if (!overlappingIndices.includes(i)) overlappingIndices.push(i);\n            if (!overlappingIndices.includes(j)) overlappingIndices.push(j);\n          }\n        }\n      }\n\n      for (let i = 0; i < n; i++) {\n        if (!overlappingIndices.includes(i)) rotatingMarkers[i].setZIndex(100);\n      }\n\n      if (overlappingIndices.length > 0) {\n        const topPos = alternateTick % overlappingIndices.length;\n        overlappingIndices.forEach((markerIndex, posIndex) => {\n          rotatingMarkers[markerIndex].setZIndex(posIndex === topPos ? 200 : -1);\n        });\n        alternateTick++;\n      }\n    }\n\n    function getQueryParam(param) {\n      const urlParams = new URLSearchParams(window.location.search);\n      return urlParams.get(param);\n    }\n\n    function updateURLWithSearch(searchTerm) {\n      const url = new URL(window.location);\n      const params = new URLSearchParams(url.search);\n\n      if (searchTerm && searchTerm.trim() !== \"\") params.set(\"zoek\", searchTerm.trim());\n      else params.delete(\"zoek\");\n\n      url.search = params.toString();\n      history.replaceState(null, \"\", url.toString());\n    }\n\n    function isAddressInNetherlands(geocodeResult) {\n      if (!geocodeResult || !geocodeResult.address_components) return false;\n\n      const countryComponent = geocodeResult.address_components.find(component =>\n        component.types && component.types.includes(\"country\")\n      );\n\n      if (!countryComponent) return false;\n\n      const countryLong = (countryComponent.long_name || \"\").toLowerCase();\n      const countryShort = (countryComponent.short_name || \"\").toLowerCase();\n\n      return countryLong === \"netherlands\" || countryLong === \"nederland\" || countryShort === \"nl\";\n    }\n\n    function initMap() {\n      map = new google.maps.Map(document.getElementById(\"map\"), {\n        center: { lat: 52.1326, lng: 5.2913 },\n        zoom: 7,\n        mapTypeControl: false,\n        streetViewControl: false,\n        styles: [{ featureType: \"poi\", elementType: \"all\", stylers: [{ visibility: \"off\" }] }]\n      });\n\n      directionsService = new google.maps.DirectionsService();\n      geocoder = new google.maps.Geocoder();\n      markerBounds = new google.maps.LatLngBounds();\n\n      overlay = new google.maps.OverlayView();\n      overlay.onAdd = function() {};\n      overlay.draw = function() {};\n      overlay.onRemove = function() {};\n      overlay.setMap(map);\n\n      setInterval(alternateMarkerZIndex, 5000);\n\n      const zoekterm = getQueryParam(\"zoek\");\n      if (zoekterm) {\n        document.getElementById(\"startLocation\").value = zoekterm;\n        calculateDistances();\n      } else {\n        showBothTables();\n        showAllMarkers();\n      }\n    }\n\n    function drawRoute(originAddress, destAddress, color) {\n      geocoder.geocode({ address: originAddress }, function(resultsOrigin, statusOrigin) {\n        if (statusOrigin !== google.maps.GeocoderStatus.OK) return;\n\n        const originLocation = resultsOrigin[0].geometry.location;\n\n        geocoder.geocode({ address: destAddress }, function(resultsDest, statusDest) {\n          if (statusDest !== google.maps.GeocoderStatus.OK) return;\n\n          const destLocation = resultsDest[0].geometry.location;\n\n          directionsService.route({\n            origin: originLocation,\n            destination: destLocation,\n            travelMode: google.maps.TravelMode.DRIVING\n          }, function(response, status) {\n            if (status === \"OK\") {\n              const renderer = new google.maps.DirectionsRenderer({\n                suppressMarkers: true,\n                polylineOptions: { strokeColor: color, strokeOpacity: 0.5, strokeWeight: 5 }\n              });\n              renderer.setMap(map);\n              renderer.setDirections(response);\n              directionsRenderers.push(renderer);\n            }\n          });\n        });\n      });\n    }\n\n    function renderOutsideNetherlandsTables() {\n      rebuildPricingData();\n\n      let html = \"\";\n      html += '<div class=\"table-container\">';\n      html += \"<table style='width:100%; border-collapse:collapse;' border='1' cellpadding='5'>\";\n      html += \"<tr style='background: #000428; color: white;'>\";\n      html += \"<th>Begeleider<\/th><th>Afstand<\/th><th>Reis<\/th><th>Reistijd<\/th><th>Totaal<\/th>\";\n      html += \"<\/tr>\";\n\n      destinations.forEach(dest => {\n        html += \"<tr class='strike'>\";\n        html += \"<td>\" + escapeHtml(dest.name) + \"<\/td>\";\n        html += \"<td><\/td><td><\/td><td><\/td><td><\/td>\";\n        html += \"<\/tr>\";\n      });\n\n      html += \"<\/table><\/div>\";\n      html += showLocationsTable();\n\n      document.getElementById(\"results\").innerHTML = html;\n      initDropdowns();\n    }\n\n    function calculateDistances() {\n      rebuildPricingData();\n\n      const origin = document.getElementById(\"startLocation\").value.trim();\n      const sessionType = getSessionType();\n      updateURLWithSearch(origin);\n\n      if (!origin) {\n        showBothTables();\n        showAllMarkers();\n        return;\n      }\n\n      geocoder.geocode({ address: origin }, function(originResults, originStatus) {\n        if (originStatus !== google.maps.GeocoderStatus.OK || !originResults || !originResults[0]) {\n          alert(\"De ingevoerde locatie kon niet goed worden gevonden.\");\n          showBothTables();\n          showAllMarkers();\n          return;\n        }\n\n        const originInNetherlands = isAddressInNetherlands(originResults[0]);\n\n        if (!originInNetherlands) {\n          clearDirections();\n          renderOutsideNetherlandsTables();\n          showAllMarkers();\n          return;\n        }\n\n        clearDirections();\n        clearMarkers();\n        markerBounds = new google.maps.LatLngBounds();\n        addOriginMarker(origin);\n\n        const guideAddresses = destinations.map(d => d.address + \", \" + d.city + \", Nederland\");\n        const locationAddresses = locations.map(l => l.address + \", \" + l.city + \", Nederland\");\n        const service = new google.maps.DistanceMatrixService();\n\n        service.getDistanceMatrix({\n          origins: [origin],\n          destinations: guideAddresses,\n          travelMode: google.maps.TravelMode.DRIVING,\n          unitSystem: google.maps.UnitSystem.METRIC\n        }, function(guidesResponse, guidesStatus) {\n          if (guidesStatus !== google.maps.DistanceMatrixStatus.OK) {\n            alert(\"Er is een fout opgetreden: \" + guidesStatus);\n            showBothTables();\n            return;\n          }\n\n          service.getDistanceMatrix({\n            origins: [origin],\n            destinations: locationAddresses,\n            travelMode: google.maps.TravelMode.DRIVING,\n            unitSystem: google.maps.UnitSystem.METRIC\n          }, function(locationsResponse, locationsStatus) {\n            if (locationsStatus !== google.maps.DistanceMatrixStatus.OK) {\n              alert(\"Er is een fout opgetreden: \" + locationsStatus);\n              showBothTables();\n              return;\n            }\n\n            const guideResultsArray = [];\n            const guideElements = guidesResponse.rows[0].elements;\n\n            for (let i = 0; i < guideElements.length; i++) {\n              const element = guideElements[i];\n              const item = destinations[i];\n\n              if (element.status === \"OK\") {\n                const distanceMeters = element.distance.value;\n                const oneWayKm = distanceMeters \/ 1000;\n                const oneWayDisplay = Math.round(oneWayKm);\n                const travelTimeMinutes = element.duration.value \/ 60;\n\n                let travelCostCalculated = Math.round(oneWayKm);\n                if (travelTimeMinutes > 45) {\n                  travelCostCalculated += Math.ceil(travelTimeMinutes - 45);\n                }\n\n                let maxTime;\n                if (item.name === \"Marcel\") {\n                  maxTime = 120;\n                } else if ([\"Reineke\", \"Janneke\", \"Gijs\", \"Ronald\"].includes(item.name)) {\n                  maxTime = 45;\n                } else if (item.name === \"Sascha\") {\n                  maxTime = 60;\n                } else {\n                  maxTime = 60;\n                }\n\n                if (travelTimeMinutes <= maxTime) {\n                  guideResultsArray.push({\n                    name: item.name,\n                    distance: oneWayDisplay,\n                    travelCost: travelCostCalculated,\n                    totalPrice: travelCostCalculated + item.addition,\n                    travelTime: travelTimeMinutes,\n                    strike: false,\n                    orange: false,\n                    group: 1,\n                    sortPrice: travelCostCalculated + item.addition\n                  });\n                } else if (travelTimeMinutes <= maxTime + 15) {\n                  guideResultsArray.push({\n                    name: item.name,\n                    distance: oneWayDisplay,\n                    travelCost: travelCostCalculated,\n                    totalPrice: travelCostCalculated + item.addition,\n                    travelTime: travelTimeMinutes,\n                    strike: false,\n                    orange: true,\n                    group: 2,\n                    sortPrice: travelCostCalculated + item.addition\n                  });\n                } else {\n                  guideResultsArray.push({\n                    name: item.name,\n                    distance: oneWayDisplay,\n                    travelCost: \"-\",\n                    totalPrice: \"-\",\n                    travelTime: travelTimeMinutes,\n                    strike: true,\n                    orange: false,\n                    group: 3,\n                    sortPrice: Infinity\n                  });\n                }\n              } else {\n                guideResultsArray.push({\n                  name: item.name,\n                  distance: \"-\",\n                  travelCost: \"-\",\n                  totalPrice: \"-\",\n                  travelTime: \"-\",\n                  strike: true,\n                  orange: false,\n                  group: 3,\n                  sortPrice: Infinity\n                });\n              }\n            }\n\n            guideResultsArray.sort((a, b) => (a.group !== b.group) ? (a.group - b.group) : (a.sortPrice - b.sortPrice));\n\n            const locationResultsArray = [];\n            const locationElements = locationsResponse.rows[0].elements;\n\n            for (let i = 0; i < locationElements.length; i++) {\n              const element = locationElements[i];\n              const item = locations[i];\n\n              if (element.status === \"OK\") {\n                const oneWayKm = element.distance.value \/ 1000;\n                const oneWayDisplay = Math.round(oneWayKm);\n                const travelTimeMinutes = element.duration.value \/ 60;\n\n                locationResultsArray.push({\n                  name: item.name,\n                  city: item.city,\n                  distance: oneWayDisplay,\n                  travelTime: travelTimeMinutes,\n                  totalPrice: item.price,\n                  sortPrice: item.price\n                });\n              }\n            }\n\n            locationResultsArray.sort((a, b) => a.sortPrice - b.sortPrice);\n\n            let html = \"\";\n\n            html += '<div class=\"table-container\">';\n            html += \"<table style='width:100%; border-collapse:collapse;' border='1' cellpadding='5'>\";\n            html += \"<tr style='background: #000428; color: white;'>\";\n            html += \"<th>Begeleider<\/th><th>Afstand<\/th><th>Reis<\/th><th>Reistijd<\/th><th>Totaal<\/th>\";\n            html += \"<\/tr>\";\n\n            guideResultsArray.forEach(item => {\n              if (item.strike) html += \"<tr class='strike'>\";\n              else if (item.orange) html += \"<tr style='color: orange;'>\";\n              else html += \"<tr>\";\n\n              if (item.strike) {\n                html += \"<td>\" + escapeHtml(item.name) + \"<\/td>\";\n              } else {\n                html += \"<td>\" + getDropdownHTML(item.name) + \"<\/td>\";\n              }\n\n              html += \"<td>\" + item.distance + (item.distance !== \"-\" ? \" km\" : \"\") + \"<\/td>\";\n              html += \"<td>\" + (item.strike ? \"\" : (item.travelCost !== \"-\" ? \"\u20ac\" + item.travelCost : item.travelCost)) + \"<\/td>\";\n              html += \"<td>\" + (item.travelTime !== \"-\" ? Math.round(item.travelTime) + \" min\" : item.travelTime) + \"<\/td>\";\n              html += \"<td>\" + (item.strike ? \"\" : \"\u20ac\" + item.totalPrice) + \"<\/td>\";\n              html += \"<\/tr>\";\n            });\n\n            html += \"<\/table><\/div>\";\n\n            html += '<div class=\"table-container\">';\n            html += \"<table style='width:100%; border-collapse:collapse;' border='1' cellpadding='5'>\";\n            html += \"<tr style='background: #b20091; color: white;'>\";\n            html += \"<th>Onze locaties<\/th><th>Plaats<\/th><th>Afstand<\/th><th>Reistijd<\/th><th>Totaal<\/th>\";\n            html += \"<\/tr>\";\n\n            locationResultsArray.forEach(item => {\n              html += \"<tr>\";\n              html += \"<td>\" + getLocationDropdownHTML(item.name) + \"<\/td>\";\n              html += \"<td>\" + escapeHtml(item.city) + \"<\/td>\";\n              html += \"<td>\" + item.distance + \" km<\/td>\";\n              html += \"<td>\" + Math.round(item.travelTime) + \" min<\/td>\";\n              html += \"<td>\u20ac\" + item.totalPrice + \"<\/td>\";\n              html += \"<\/tr>\";\n            });\n\n            html += \"<\/table><\/div>\";\n\n            document.getElementById(\"results\").innerHTML = html;\n            initDropdowns();\n\n            const mapItems = sessionType === \"location\" ? locations : destinations;\n            mapItems.forEach(item => addNamedMarker(item, origin));\n\n            setTimeout(function() {\n              if (!markerBounds.isEmpty()) {\n                map.fitBounds(markerBounds);\n              }\n            }, 1500);\n          });\n        });\n      });\n    }\n\n    function positionDropdown(trigger, menu) {\n      menu.style.display = \"flex\";\n\n      const rect = trigger.getBoundingClientRect();\n      const menuRect = menu.getBoundingClientRect();\n      const gap = 6;\n\n      let left = rect.left;\n      let top = rect.top - menuRect.height - gap;\n\n      if (left + menuRect.width > window.innerWidth - 8) {\n        left = window.innerWidth - menuRect.width - 8;\n      }\n      if (left < 8) left = 8;\n\n      if (top < 8) {\n        top = rect.bottom + gap;\n      }\n\n      if (top + menuRect.height > window.innerHeight - 8) {\n        top = Math.max(8, window.innerHeight - menuRect.height - 8);\n      }\n\n      menu.style.left = left + \"px\";\n      menu.style.top = top + \"px\";\n    }\n\n    function hideActiveDropdown() {\n      if (!activeDropdown) return;\n      activeDropdown.style.display = \"none\";\n      activeDropdown = null;\n    }\n\n    function initDropdowns() {\n      hideActiveDropdown();\n\n      const dropdowns = document.querySelectorAll(\".dropdown\");\n\n      dropdowns.forEach(dropdown => {\n        const menu = dropdown.querySelector(\".dropdown-content\");\n        if (!menu) return;\n\n        dropdown.addEventListener(\"mouseenter\", function() {\n          clearTimeout(hideDropdownTimer);\n          if (activeDropdown && activeDropdown !== menu) {\n            activeDropdown.style.display = \"none\";\n          }\n          activeDropdown = menu;\n          positionDropdown(dropdown, menu);\n        });\n\n        dropdown.addEventListener(\"mouseleave\", function() {\n          clearTimeout(hideDropdownTimer);\n          hideDropdownTimer = setTimeout(() => {\n            if (activeDropdown === menu) {\n              hideActiveDropdown();\n            }\n          }, 120);\n        });\n\n        menu.addEventListener(\"mouseenter\", function() {\n          clearTimeout(hideDropdownTimer);\n        });\n\n        menu.addEventListener(\"mouseleave\", function() {\n          clearTimeout(hideDropdownTimer);\n          hideDropdownTimer = setTimeout(() => {\n            if (activeDropdown === menu) {\n              hideActiveDropdown();\n            }\n          }, 120);\n        });\n      });\n    }\n\n    function initExplanationToggle() {\n      const toggle = document.getElementById(\"explanationToggle\");\n      const content = document.getElementById(\"explanationContent\");\n\n      if (!toggle || !content) return;\n\n      toggle.addEventListener(\"click\", function() {\n        const isOpen = content.classList.toggle(\"open\");\n        toggle.classList.toggle(\"active\", isOpen);\n        toggle.setAttribute(\"aria-expanded\", isOpen ? \"true\" : \"false\");\n      });\n    }\n\n    window.addEventListener(\"scroll\", function() {\n      hideActiveDropdown();\n    }, true);\n\n    window.addEventListener(\"resize\", function() {\n      hideActiveDropdown();\n    });\n\n    let debounceTimer;\n    document.getElementById(\"startLocation\").addEventListener(\"input\", function() {\n      clearTimeout(debounceTimer);\n      debounceTimer = setTimeout(calculateDistances, 1000);\n    });\n\n    document.getElementById(\"calculateBtn\").addEventListener(\"click\", calculateDistances);\n\n    document.getElementById(\"startLocation\").addEventListener(\"keydown\", function(e) {\n      if (e.key === \"Enter\") calculateDistances();\n    });\n\n    document.querySelectorAll('input[name=\"personCount\"]').forEach(input => {\n      input.addEventListener(\"change\", function() {\n        calculateDistances();\n      });\n    });\n\n    document.querySelectorAll('input[name=\"sessionType\"]').forEach(input => {\n      input.addEventListener(\"change\", function() {\n        calculateDistances();\n      });\n    });\n\n    initExplanationToggle();\n  <\/script>\n<\/body>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>What are the rates for individual psychedelic ceremonies?<\/p>","protected":false},"author":3119,"featured_media":0,"parent":49776,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-50326","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/triptherapie.nl\/en\/wp-json\/wp\/v2\/pages\/50326","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/triptherapie.nl\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/triptherapie.nl\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/triptherapie.nl\/en\/wp-json\/wp\/v2\/users\/3119"}],"replies":[{"embeddable":true,"href":"https:\/\/triptherapie.nl\/en\/wp-json\/wp\/v2\/comments?post=50326"}],"version-history":[{"count":0,"href":"https:\/\/triptherapie.nl\/en\/wp-json\/wp\/v2\/pages\/50326\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/triptherapie.nl\/en\/wp-json\/wp\/v2\/pages\/49776"}],"wp:attachment":[{"href":"https:\/\/triptherapie.nl\/en\/wp-json\/wp\/v2\/media?parent=50326"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}