{"id":758,"date":"2024-07-05T10:04:45","date_gmt":"2024-07-05T10:04:45","guid":{"rendered":"https:\/\/healthcare-plaza.eu\/?page_id=758"},"modified":"2025-09-23T06:28:54","modified_gmt":"2025-09-23T06:28:54","slug":"locator","status":"publish","type":"page","link":"https:\/\/www.nanohealthcare.eu\/it\/locator\/","title":{"rendered":"Localizzatore di trattamento"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"758\" class=\"elementor elementor-758\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-510b9d0 e-flex e-con-boxed e-con e-parent\" data-id=\"510b9d0\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4d40118 elementor-widget elementor-widget-heading\" data-id=\"4d40118\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Localizzatore di trattamento<\/h1>\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<div class=\"elementor-element elementor-element-49ec849 e-con-full e-flex e-con e-parent\" data-id=\"49ec849\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-bc080fd elementor-widget__width-inherit elementor-widget elementor-widget-shortcode\" data-id=\"bc080fd\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n        <style>\n            \/* Centered intro section - variable width to match buttons *\/\n            .treatment-intro {\n                max-width: 1200px;\n                width: 100%;\n                margin: 0 auto 2rem auto;\n                text-align: left;\n                background: #f8f9fa;\n                border: 1px solid #dee2e6;\n                border-radius: 12px;\n                padding: 2rem;\n            }\n\n            .treatment-intro h2 {\n                margin: 0 0 1rem 0;\n                color: #2c3e50;\n                font-size: 24px;\n            }\n\n            .treatment-intro p {\n                margin: 0 0 1.5rem 0;\n                font-size: 16px;\n                color: #6c757d;\n                line-height: 1.6;\n            }\n\n            .specialty-text {\n                font-size: 14px;\n                color: #495057;\n                line-height: 1.8;\n                text-align: left;\n                max-width: 600px;\n            }\n\n            .specialty-text strong {\n                color: #2c3e50;\n            }\n\n            \/* Filter section above map *\/\n            .treatment-filters {\n                margin-bottom: 1.5rem;\n                padding: 0 1rem;\n                margin-left: -1rem;\n                margin-right: -1rem;\n            }\n\n            \/* Search section *\/\n            .treatment-search {\n                margin-bottom: 2rem;\n                padding: 0 1rem;\n            }\n\n            .search-container {\n                display: flex;\n                gap: 1rem;\n                max-width: 800px;\n                margin: 0 auto;\n                align-items: center;\n            }\n\n            \/* Main content wrapper *\/\n            #treatment-wrapper {\n                display: flex;\n                flex-direction: row;\n                width: 100%;\n            }\n\n            #treatment-sidebar {\n                min-width: 450px;\n                max-width: 550px;\n                width: auto;\n                flex-shrink: 0;\n            }\n\n            \/* Location input styling *\/\n            #treatment-location-input {\n                flex: 1;\n                padding: 12px 16px;\n                border: 2px solid #dee2e6;\n                border-radius: 8px;\n                font-size: 16px;\n                transition: border-color 0.3s ease;\n            }\n\n            #treatment-location-input:focus {\n                outline: none;\n                border-color: #007cba;\n                box-shadow: 0 0 0 3px rgba(0, 124, 186, 0.1);\n            }\n\n            \/* Category filter cards - horizontal layout *\/\n            .category-filters {\n                display: grid;\n                grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n                gap: 1rem;\n                max-width: 1200px;\n                margin: 0 auto;\n            }\n\n            .category-card {\n                background: white;\n                border: 2px solid #dee2e6;\n                border-radius: 12px;\n                padding: 1rem;\n                cursor: pointer;\n                transition: all 0.3s ease;\n                position: relative;\n                text-align: center;\n            }\n\n            .category-card:hover {\n                border-color: #007cba;\n                transform: translateY(-2px);\n                box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n            }\n\n            .category-card.active {\n                border-color: #007cba;\n                background: #f0f8ff;\n                box-shadow: 0 2px 8px rgba(0, 124, 186, 0.2);\n                transform: translateY(-1px);\n            }\n\n            .category-card input[type=\"radio\"] {\n                position: absolute;\n                opacity: 0;\n                pointer-events: none;\n            }\n\n            .category-header {\n                display: flex;\n                flex-direction: column;\n                align-items: center;\n                gap: 0.5rem;\n            }\n\n            .category-icon {\n                width: 48px;\n                height: 48px;\n                border-radius: 50%;\n                display: flex;\n                align-items: center;\n                justify-content: center;\n                font-weight: bold;\n                color: white;\n                font-size: 16px;\n                margin-bottom: 0.5rem;\n            }\n\n            .category-all .category-icon {\n                background: #6c757d;\n            }\n\n            .category-nhc .category-icon {\n                background: #2196F3;\n            }\n\n            .category-nec .category-icon {\n                background: #8D6E63;\n            }\n\n            .category-nac .category-icon {\n                background: #4CAF50;\n            }\n\n            .category-nbc .category-icon {\n                background: #b3a7cf;\n            }\n\n            .category-title {\n                font-weight: 600;\n                color: #2c3e50;\n                margin: 0;\n                font-size: 16px;\n            }\n\n            .category-description {\n                color: #6c757d;\n                font-size: 13px;\n                margin: 0;\n                line-height: 1.4;\n            }\n\n            \/* Search button *\/\n            .search-button {\n                background: #007cba;\n                color: white;\n                border: none;\n                padding: 12px 20px;\n                border-radius: 6px;\n                font-size: 14px;\n                font-weight: 600;\n                cursor: pointer;\n                transition: background-color 0.3s ease;\n            }\n\n            .search-button:hover {\n                background: #005a87;\n            }\n\n            #treatment-results {\n                display: flex;\n                flex-direction: column;\n                gap: 0.75rem;\n                max-height: 700px;\n                overflow-y: auto;\n                padding-right: 8px;\n            }\n\n            #treatment-results::-webkit-scrollbar {\n                width: 6px;\n            }\n\n            #treatment-results::-webkit-scrollbar-track {\n                background: #f1f1f1;\n                border-radius: 3px;\n            }\n\n            #treatment-results::-webkit-scrollbar-thumb {\n                background: #888;\n                border-radius: 3px;\n            }\n\n            #treatment-results::-webkit-scrollbar-thumb:hover {\n                background: #555;\n            }\n\n            .treatment-entry {\n                background: white;\n                border: 1px solid #dee2e6;\n                border-radius: 0;\n                padding: 1rem;\n                cursor: pointer;\n                transition: all 0.3s ease;\n                position: relative;\n                border-left: 4px solid transparent;\n            }\n\n            .treatment-entry:hover {\n                border-color: #007cba;\n                box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n                transform: translateY(-1px);\n            }\n\n            .treatment-entry::before {\n                content: '';\n                position: absolute;\n                left: 0;\n                top: 0;\n                bottom: 0;\n                width: 4px;\n            }\n\n            .treatment-entry .location-title {\n                font-weight: 600;\n                color: #2c3e50;\n                text-decoration: none;\n                font-size: 16px;\n                display: block;\n                margin-bottom: 0.5rem;\n            }\n\n            .treatment-entry .location-title:hover {\n                color: #007cba;\n            }\n\n            .treatment-entry .location-address {\n                color: #6c757d;\n                font-size: 14px;\n                margin-bottom: 0.5rem;\n            }\n\n            .treatment-entry .location-categories {\n                margin-bottom: 0.5rem;\n            }\n\n            .category-badge {\n                display: inline-block;\n                padding: 3px 8px;\n                border-radius: 12px;\n                font-size: 10px;\n                font-weight: 600;\n                color: white;\n                margin-right: 0.5rem;\n                margin-bottom: 0.25rem;\n            }\n\n            .category-badge.primary {\n                font-size: 14px;\n                padding: 4px 10px;\n            }\n\n            .category-badge.nhc {\n                background: #2196F3;\n            }\n\n            .category-badge.nec {\n                background: #8D6E63;\n            }\n\n            .category-badge.nac {\n                background: #4CAF50;\n            }\n\n            .category-badge.nbc {\n                background: #b3a7cf;\n            }\n\n            .treatment-entry .location-distance {\n                font-size: 12px;\n                color: #007cba;\n                font-weight: 500;\n            }\n\n            .treatment-entry .location-actions {\n                margin-top: 0.75rem;\n                padding-top: 0.75rem;\n                border-top: 1px solid #f1f3f4;\n            }\n\n            .treatment-entry .location-actions a {\n                color: #007cba;\n                text-decoration: none;\n                font-size: 13px;\n                font-weight: 500;\n            }\n\n            .treatment-entry .location-actions a:hover {\n                text-decoration: underline;\n            }\n\n            #treatment-locator-map {\n                flex: 1;\n                height: 700px;\n                min-width: 0;\n                border-radius: 8px;\n                overflow: hidden;\n            }\n\n            \/* Mobile layout *\/\n            @media (max-width: 768px) {\n                .treatment-intro {\n                    max-width: calc(100% - 2rem);\n                    padding: 1.5rem;\n                    margin: 1rem;\n                }\n\n                .treatment-intro h2 {\n                    font-size: 20px;\n                }\n\n                .treatment-filters {\n                    margin: 0 1rem;\n                    padding: 0;\n                }\n\n                .treatment-search {\n                    margin-top: 1rem;\n                    padding: 0 1rem;\n                }\n\n                .specialty-text {\n                    text-align: left;\n                }\n\n                .search-container {\n                    flex-direction: column;\n                    gap: 1rem;\n                    max-width: none;\n                }\n\n                #treatment-location-input {\n                    font-size: 16px;\n                    \/* Prevent zoom on iOS *\/\n                }\n\n                .category-filters {\n                    grid-template-columns: 1fr;\n                    gap: 1rem;\n                    max-width: none;\n                }\n\n                .category-card {\n                    padding: 1rem;\n                }\n\n                .category-header {\n                    flex-direction: row;\n                    text-align: left;\n                }\n\n                .category-icon {\n                    width: 40px;\n                    height: 40px;\n                    margin-right: 1rem;\n                    margin-bottom: 0;\n                }\n\n                #treatment-wrapper {\n                    flex-direction: column;\n                    gap: 1.5rem;\n                }\n\n                #treatment-sidebar {\n                    width: 100%;\n                    min-width: auto;\n                    max-width: none;\n                }\n\n                #treatment-locator-map {\n                    height: 400px;\n                    flex: none;\n                }\n            }\n\n            @media (min-width: 769px) and (max-width: 1024px) {\n                .treatment-intro {\n                    max-width: 100%;\n                }\n\n                .category-filters {\n                    grid-template-columns: repeat(2, 1fr);\n                }\n\n                .category-card {\n                    padding: 1rem;\n                }\n            }\n\n            @media (min-width: 1025px) {\n                .category-filters {\n                    grid-template-columns: repeat(5, 1fr);\n                }\n            }\n        <\/style>\n\n        <!-- Centered Info Section - Replace this with your existing content -->\n        <div class=\"treatment-intro\">\n            <h2>Trova il tuo specialista Nano CellCare<\/h2>\n            <p>\n                Il &quot;Treatment Locator&quot; \u00e8 un pratico strumento online che semplifica la ricerca di terapisti Nano CellCare specializzati in questo innovativo metodo di trattamento. Dopo aver inserito i tuoi dati, visualizzerai un elenco di terapisti Nano CellCare nella tua zona o nel Paese specifico che stai cercando.\n            <\/p>\n            <p>I nostri terapisti certificati possono operare in diverse specializzazioni. Utilizza i filtri qui sotto per trovare lo specialista pi\u00f9 adatto alle tue esigenze. Per ogni terapista viene mostrata prima la disciplina principale, seguita dalle sue ulteriori qualifiche.\n            <\/p>\n\n            <div class=\"specialty-text\">\n                <strong>Nano Sanit\u00e0 (NHC)<\/strong> - Terapisti specializzati nella salute e nel benessere umano<br>\n                <strong>Nano Equicare (NEC)<\/strong> - Specialisti in cavalli e pony<br>\n                <strong>Nano Animalcare (NAC)<\/strong> - Esperti in animali domestici e piccoli animali<br>\n                <strong>Nano Beautycare (NBC)<\/strong> - Specialisti in trattamenti di bellezza e benessere\n            <\/div>\n        <\/div>\n\n        <!-- Category Filter Section -->\n        <div class=\"treatment-filters\">\n            <div class=\"category-filters\">\n                <div class=\"category-card category-all\">\n                    <input type=\"radio\" name=\"category\" value=\"\" id=\"cat-all\">\n                    <div class=\"category-header\">\n                        <div class=\"category-icon\">TUTTO<\/div>\n                        <div>\n                            <div class=\"category-title\">Tutti i tipi<\/div>\n                            <div class=\"category-description\">Mostra tutti gli specialisti<\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n\n                <div class=\"category-card category-nhc active\">\n                    <input type=\"radio\" name=\"category\" value=\"NHC\" id=\"cat-nhc\" checked>\n                    <div class=\"category-header\">\n                        <div class=\"category-icon\">NHC<\/div>\n                        <div>\n                            <div class=\"category-title\">Nano Sanit\u00e0<\/div>\n                            <div class=\"category-description\">Specialisti umani<\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n\n                <div class=\"category-card category-nbc\">\n                    <input type=\"radio\" name=\"category\" value=\"NBC\" id=\"cat-nbc\">\n                    <div class=\"category-header\">\n                        <div class=\"category-icon\">NBC<\/div>\n                        <div>\n                            <div class=\"category-title\">Nano Beautycare<\/div>\n                            <div class=\"category-description\">Specialisti della bellezza<\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n\n                <div class=\"category-card category-nec\">\n                    <input type=\"radio\" name=\"category\" value=\"NEC\" id=\"cat-nec\">\n                    <div class=\"category-header\">\n                        <div class=\"category-icon\">NEC<\/div>\n                        <div>\n                            <div class=\"category-title\">Nano Equicare<\/div>\n                            <div class=\"category-description\">Specialisti di cavalli<\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n\n                <div class=\"category-card category-nac\">\n                    <input type=\"radio\" name=\"category\" value=\"NAC\" id=\"cat-nac\">\n                    <div class=\"category-header\">\n                        <div class=\"category-icon\">NAC<\/div>\n                        <div>\n                            <div class=\"category-title\">Nano Animalcare<\/div>\n                            <div class=\"category-description\">Specialisti in animali domestici<\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <!-- Location Input Section -->\n        <div class=\"treatment-search\">\n            <div class=\"search-container\">\n                <input id=\"treatment-location-input\" type=\"text\" placeholder=\"La tua posizione (ad esempio 1011AB)\">\n                <button class=\"search-button\" onclick=\"loadTreatmentLocations()\">Cerca terapeuti<\/button>\n            <\/div>\n        <\/div>\n\n        <!-- Map and Results Section -->\n        <div id=\"treatment-wrapper\">\n            <div id=\"treatment-sidebar\">\n                <div id=\"treatment-results\"><\/div>\n            <\/div>\n            <div id=\"treatment-locator-map\"><\/div>\n        <\/div>\n\n        <script>\n            let map, markers = [], userLatLng;\n\n            const darkStyle = [{\"featureType\":\"all\",\"elementType\":\"geometry\",\"stylers\":[{\"color\":\"#202c3e\"}]},{\"featureType\":\"all\",\"elementType\":\"labels.text.fill\",\"stylers\":[{\"gamma\":0.01},{\"lightness\":20},{\"weight\":\"1.39\"},{\"color\":\"#ffffff\"}]},{\"featureType\":\"all\",\"elementType\":\"labels.text.stroke\",\"stylers\":[{\"weight\":\"0.96\"},{\"saturation\":\"9\"},{\"visibility\":\"on\"},{\"color\":\"#000000\"}]},{\"featureType\":\"all\",\"elementType\":\"labels.icon\",\"stylers\":[{\"visibility\":\"off\"}]},{\"featureType\":\"landscape\",\"elementType\":\"geometry\",\"stylers\":[{\"lightness\":30},{\"saturation\":\"9\"},{\"color\":\"#697c97\"}]},{\"featureType\":\"poi\",\"elementType\":\"geometry\",\"stylers\":[{\"saturation\":20}]},{\"featureType\":\"poi.park\",\"elementType\":\"geometry\",\"stylers\":[{\"lightness\":20},{\"saturation\":-20}]},{\"featureType\":\"road\",\"elementType\":\"geometry\",\"stylers\":[{\"lightness\":10},{\"saturation\":-30}]},{\"featureType\":\"road\",\"elementType\":\"geometry.fill\",\"stylers\":[{\"color\":\"#193a55\"}]},{\"featureType\":\"road\",\"elementType\":\"geometry.stroke\",\"stylers\":[{\"saturation\":25},{\"lightness\":25},{\"weight\":\"0.01\"}]},{\"featureType\":\"water\",\"elementType\":\"all\",\"stylers\":[{\"lightness\":-20}]}];\n\n            \/\/ Category colors and names\n            const categoryInfo = {\n                'NHC': { color: '#2196F3', name: 'Nano Healthcare', description: 'Therapists focused on humans' },\n                'NAC': { color: '#4CAF50', name: 'Nano Animalcare', description: 'Therapists focused on pets and small animals' },\n                'NEC': { color: '#8D6E63', name: 'Nano Equicare', description: 'Therapists focused on horses and ponies' },\n                'NBC': { color: '#b3a7cf', name: 'Nano Beautycare', description: 'Therapists focused on beauty and wellness' }\n            };\n\n            function createColoredMarker(color) {\n                return {\n                    path: google.maps.SymbolPath.CIRCLE,\n                    fillColor: color,\n                    fillOpacity: 0.8,\n                    strokeColor: '#ffffff',\n                    strokeWeight: 2,\n                    scale: 8\n                };\n            }\n\n            \/\/ Add click handlers for category cards\n            document.addEventListener('DOMContentLoaded', function () {\n                const categoryCards = document.querySelectorAll('.category-card');\n                categoryCards.forEach(card => {\n                    card.addEventListener('click', function () {\n                        \/\/ Remove active class from all cards\n                        categoryCards.forEach(c => c.classList.remove('active'));\n                        \/\/ Add active class to clicked card\n                        this.classList.add('active');\n                        \/\/ Check the radio button\n                        const radio = this.querySelector('input[type=\"radio\"]');\n                        if (radio) {\n                            radio.checked = true;\n                        }\n                        \/\/ Trigger search\n                        loadTreatmentLocations();\n                    });\n                });\n            });\n\n            \/\/ Function to create multi-colored border gradient\n            function createMultiColorBorder(categories) {\n                if (!categories || categories.length === 0) return '';\n                if (categories.length === 1) {\n                    const color = categoryInfo[categories[0]]?.color || '#999999';\n                    return `background: ${color};`;\n                }\n\n                \/\/ Create gradient for multiple categories\n                const colors = categories.map(cat => categoryInfo[cat]?.color || '#999999');\n                const gradientStops = colors.map((color, index) => {\n                    const start = (index \/ colors.length) * 100;\n                    const end = ((index + 1) \/ colors.length) * 100;\n                    return `${color} ${start}%, ${color} ${end}%`;\n                }).join(', ');\n\n                return `background: linear-gradient(to bottom, ${gradientStops});`;\n            }\n\n            function initTreatmentMap() {\n                \/\/ Default to Amsterdam coordinates\n                const amsterdamCoords = { lat: 52.3676, lng: 4.9041 };\n\n                map = new google.maps.Map(document.getElementById(\"treatment-locator-map\"), {\n                    center: amsterdamCoords,\n                    zoom: 11,\n                    styles: darkStyle\n                });\n\n                const locationInput = document.getElementById(\"treatment-location-input\");\n                const autocomplete = new google.maps.places.Autocomplete(locationInput);\n                autocomplete.addListener(\"place_changed\", function () {\n                    const place = autocomplete.getPlace();\n                    if (place.geometry) {\n                        userLatLng = place.geometry.location;\n                        map.setCenter(userLatLng);\n                        map.setZoom(11);\n                        loadTreatmentLocations();\n                    }\n                });\n\n                \/\/ Function to reverse geocode coordinates to postal code\n                function reverseGeocode(latLng) {\n                    const geocoder = new google.maps.Geocoder();\n                    geocoder.geocode({ location: latLng }, (results, status) => {\n                        if (status === 'OK' && results[0]) {\n                            \/\/ Try to find postal code from the results\n                            let postalCode = '';\n                            let locality = '';\n\n                            for (const component of results[0].address_components) {\n                                if (component.types.includes('postal_code')) {\n                                    postalCode = component.long_name;\n                                }\n                                if (component.types.includes('locality')) {\n                                    locality = component.long_name;\n                                }\n                            }\n\n                            \/\/ Populate the input field with postal code or locality\n                            if (postalCode) {\n                                locationInput.value = postalCode;\n                            } else if (locality) {\n                                locationInput.value = locality;\n                            } else {\n                                \/\/ Fallback to formatted address\n                                locationInput.value = results[0].formatted_address;\n                            }\n\n                            \/\/ Add a small indicator that location was auto-detected\n                            locationInput.style.backgroundColor = '#e8f5e8';\n                            setTimeout(() => {\n                                locationInput.style.backgroundColor = '';\n                            }, 2000);\n                        }\n                    });\n                }\n\n                \/\/ Try to get user's location, fallback to Amsterdam\n                if (navigator.geolocation) {\n                    \/\/ Show loading indicator\n                    locationInput.placeholder = \"Getting your location...\";\n\n                    navigator.geolocation.getCurrentPosition(pos => {\n                        userLatLng = new google.maps.LatLng(pos.coords.latitude, pos.coords.longitude);\n                        map.setCenter(userLatLng);\n                        map.setZoom(11);\n\n                        \/\/ Reverse geocode to get postal code\n                        reverseGeocode(userLatLng);\n\n                        \/\/ Reset placeholder\n                        locationInput.placeholder = \"Your location (e.g. 1011AB)\";\n\n                        loadTreatmentLocations();\n                    }, (error) => {\n                        \/\/ Handle different geolocation errors\n                        console.log('Geolocation error:', error);\n                        let errorMessage = \"Your location (e.g. 1011AB)\";\n\n                        switch (error.code) {\n                            case error.PERMISSION_DENIED:\n                                errorMessage = \"Location access denied - enter manually\";\n                                break;\n                            case error.POSITION_UNAVAILABLE:\n                                errorMessage = \"Location unavailable - enter manually\";\n                                break;\n                            case error.TIMEOUT:\n                                errorMessage = \"Location timeout - enter manually\";\n                                break;\n                        }\n\n                        locationInput.placeholder = errorMessage;\n\n                        \/\/ Fallback to Amsterdam if geolocation fails\n                        userLatLng = new google.maps.LatLng(amsterdamCoords.lat, amsterdamCoords.lng);\n                        loadTreatmentLocations();\n                    }, {\n                        enableHighAccuracy: true,\n                        timeout: 10000,\n                        maximumAge: 300000 \/\/ 5 minutes\n                    });\n                } else {\n                    \/\/ Fallback to Amsterdam if geolocation not supported\n                    locationInput.placeholder = \"Geolocation not supported - enter manually\";\n                    userLatLng = new google.maps.LatLng(amsterdamCoords.lat, amsterdamCoords.lng);\n                    loadTreatmentLocations();\n                }\n            }\n\n            function loadTreatmentLocations() {\n                const selectedCat = document.querySelector(\"input[name='category']:checked\")?.value;\n                const apiUrl = new URL(\"https:\/\/www.nanohealthcare.eu\/it\/wp-json\/treatment\/v1\/locations\");\n                \n                if (selectedCat) {\n                    apiUrl.searchParams.set('category', selectedCat);\n                }\n\n                fetch(apiUrl.toString())\n                    .then(res => {\n                        if (!res.ok) throw new Error(`HTTP error! status: ${res.status}`);\n                        return res.json();\n                    })\n                    .then(locations => {\n                        if (!userLatLng) {\n                            const input = document.getElementById(\"treatment-location-input\").value;\n                            if (input) {\n                                new google.maps.Geocoder().geocode({ address: input }, (results, status) => {\n                                    if (status === 'OK') {\n                                        userLatLng = results[0].geometry.location;\n                                        map.setCenter(userLatLng);\n                                        map.setZoom(11);\n                                    }\n                                    plotLocations(locations, selectedCat);\n                                });\n                            } else {\n                                plotLocations(locations, selectedCat);\n                            }\n                        } else {\n                            plotLocations(locations, selectedCat);\n                        }\n                    })\n                    .catch(error => {\n                        console.error('Error loading locations:', error);\n                        document.getElementById(\"treatment-results\").innerHTML = \"<div style='text-align: center; color: #dc3545; padding: 2rem;'>Error loading therapist locations. Please try again.<\/div>\";\n                    });\n            }\n\n            \/\/ Helper functions\n            function formatWebsiteUrl(url) {\n                if (!url) return '';\n                return url.startsWith('http:\/\/') || url.startsWith('https:\/\/') ? url : 'https:\/\/' + url;\n            }\n\n            function getOrderedCategories(mainCat, allCats) {\n                if (!allCats || allCats.length === 0) return [mainCat].filter(Boolean);\n                const uniqueCats = [...new Set(allCats)];\n                const otherCats = uniqueCats.filter(cat => cat !== mainCat);\n                return [mainCat, ...otherCats].filter(Boolean);\n            }\n\n            function plotLocations(locations, selectedCategory) {\n                markers.forEach(m => m.setMap(null));\n                markers = [];\n                const resultsDiv = document.getElementById(\"treatment-results\");\n                resultsDiv.innerHTML = \"\";\n\n                if (!locations || locations.length === 0) {\n                    resultsDiv.innerHTML = \"<div style='text-align: center; color: #6c757d; padding: 2rem;'>No therapists found for the selected criteria.<\/div>\";\n                    return;\n                }\n\n                \/\/ Calculate and sort by distance if user location available\n                if (userLatLng) {\n                    locations.forEach(loc => {\n                        if (loc.latitude && loc.longitude) {\n                            loc.distance = google.maps.geometry.spherical.computeDistanceBetween(\n                                userLatLng,\n                                new google.maps.LatLng(parseFloat(loc.latitude), parseFloat(loc.longitude))\n                            );\n                        } else {\n                            loc.distance = Infinity;\n                        }\n                    });\n                    locations.sort((a, b) => a.distance - b.distance);\n                }\n\n                \/\/ Plot markers and create list\n                locations.forEach(loc => {\n                    if (!loc.latitude || !loc.longitude) return;\n\n                    const position = { lat: parseFloat(loc.latitude), lng: parseFloat(loc.longitude) };\n                    const markerColor = categoryInfo[loc.category_main]?.color || '#999999';\n                    const orderedCategories = getOrderedCategories(loc.category_main, loc.category_all);\n\n                    const marker = new google.maps.Marker({\n                        position,\n                        map,\n                        title: loc.title,\n                        icon: createColoredMarker(markerColor)\n                    });\n\n                    \/\/ Create info window\n                    const categoryDisplayHtml = orderedCategories.map((cat, index) => {\n                        const info = categoryInfo[cat];\n                        if (!info) return '';\n                        const prefix = index === 0 ? '<strong>Main:<\/strong> ' : '';\n                        return `${prefix}<span style=\"color: ${info.color}; font-weight: bold;\">${info.name}<\/span>`;\n                    }).filter(Boolean).join('<br>');\n\n                    const websiteUrl = formatWebsiteUrl(loc.website);\n                    const infoWindow = new google.maps.InfoWindow({\n                        content: `\n                            <div style=\"font-family: sans-serif; font-size: 14px; max-width: 280px;\">\n                                <strong style=\"font-size: 16px;\">${loc.title}<\/strong><br>\n                                <span style=\"color: #6c757d;\">${loc.address}<br>${loc.city}<\/span><br><br>\n                                ${categoryDisplayHtml ? `${categoryDisplayHtml}<br><br>` : ''}\n                                ${loc.phone ? `\ud83d\udcde ${loc.phone}<br>` : ''}\n                                ${loc.email ? `\ud83d\udce7 ${loc.email}<br>` : ''}\n                                ${websiteUrl ? `<br><a href=\"${websiteUrl}\" target=\"_blank\" style=\"color: ${markerColor}; text-decoration: underline;\">Visit Website<\/a>` : ''}\n                            <\/div>\n                        `\n                    });\n\n                    marker.addListener('click', () => infoWindow.open(map, marker));\n                    markers.push(marker);\n\n                    \/\/ Create list entry\n                    const entry = document.createElement(\"div\");\n                    entry.className = \"treatment-entry\";\n                    const distanceHtml = (userLatLng && loc.distance !== undefined && loc.distance !== Infinity) \n                        ? `<div class=\"location-distance\">${(loc.distance \/ 1000).toFixed(1)} km away<\/div>` : '';\n                    const titleHtml = loc.website && loc.website.trim()\n                        ? `<a href=\"${formatWebsiteUrl(loc.website)}\" target=\"_blank\" class=\"location-title\">${loc.title}<\/a>`\n                        : `<div class=\"location-title\">${loc.title}<\/div>`;\n                    const categoryBadgesHtml = orderedCategories.map((cat, index) => {\n                        const badgeClass = index === 0 ? 'category-badge primary' : 'category-badge';\n                        return `<span class=\"${badgeClass} ${cat.toLowerCase()}\">${cat}<\/span>`;\n                    }).join('');\n\n                    entry.innerHTML = `\n                        ${titleHtml}\n                        <div class=\"location-address\">${loc.address}, ${loc.city}<\/div>\n                        ${categoryBadgesHtml ? `<div class=\"location-categories\">${categoryBadgesHtml}<\/div>` : ''}\n                        ${distanceHtml}\n                        <div class=\"location-actions\">\n                            <a href=\"https:\/\/www.google.com\/maps\/dir\/?api=1&destination=${encodeURIComponent(loc.address + ',' + loc.city)}\" target=\"_blank\">Get Directions<\/a>\n                        <\/div>\n                    `;\n\n                    \/\/ Set colored border\n                    const borderStyle = createMultiColorBorder(orderedCategories);\n                    if (borderStyle) {\n                        const entryIndex = resultsDiv.children.length + 1;\n                        const styleElement = document.createElement('style');\n                        styleElement.textContent = `.treatment-entry:nth-child(${entryIndex})::before { ${borderStyle} }`;\n                        document.head.appendChild(styleElement);\n                    }\n\n                    entry.addEventListener('click', (e) => {\n                        if (e.target.tagName !== 'A') {\n                            map.setCenter(position);\n                            map.setZoom(15);\n                            infoWindow.open(map, marker);\n                        }\n                    });\n\n                    resultsDiv.appendChild(entry);\n                });\n\n                \/\/ Adjust map to show all markers if no user location\n                if (!userLatLng && markers.length > 0) {\n                    const bounds = new google.maps.LatLngBounds();\n                    markers.forEach(marker => bounds.extend(marker.getPosition()));\n                    map.fitBounds(bounds);\n                }\n            }\n        <\/script>\n\n        <script async defer\n src=\"https:\/\/maps.googleapis.com\/maps\/api\/js?key=AIzaSyD6W2hbvp3xWDIKxGZnqfpSR1lgZsmAmA0&libraries=geometry,places&callback=initTreatmentMap\">\n            <\/script>\n        <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Localizzatore di trattamento<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-758","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.nanohealthcare.eu\/it\/wp-json\/wp\/v2\/pages\/758","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.nanohealthcare.eu\/it\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.nanohealthcare.eu\/it\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.nanohealthcare.eu\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.nanohealthcare.eu\/it\/wp-json\/wp\/v2\/comments?post=758"}],"version-history":[{"count":19,"href":"https:\/\/www.nanohealthcare.eu\/it\/wp-json\/wp\/v2\/pages\/758\/revisions"}],"predecessor-version":[{"id":3723,"href":"https:\/\/www.nanohealthcare.eu\/it\/wp-json\/wp\/v2\/pages\/758\/revisions\/3723"}],"wp:attachment":[{"href":"https:\/\/www.nanohealthcare.eu\/it\/wp-json\/wp\/v2\/media?parent=758"}],"curies":[{"name":"parola chiave","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}