{"id":75,"date":"2026-03-19T22:41:39","date_gmt":"2026-03-19T22:41:39","guid":{"rendered":"urn:uuid:39306632-6266-5639-a361-623736346164"},"modified":"2026-03-20T15:11:37","modified_gmt":"2026-03-20T15:11:37","slug":"islands","status":"publish","type":"page","link":"https:\/\/novo.ilhaverde.com\/pt-pt\/islands\/","title":{"rendered":"Ilhas"},"content":{"rendered":"        <div id=\"azx-stations-1\" class=\"azx-stations-shortcode\">\n            <div class=\"azx-stations-controls\">\n                                    <label class=\"azx-stations-control\">\n                        <span>Regi\u00e3o<\/span>\n                        <select class=\"azx-stations-region\" aria-label=\"Regi\u00e3o\"><\/select>\n                    <\/label>\n                \n                <label class=\"azx-stations-control\">\n                    <span>Esta\u00e7\u00e3o<\/span>\n                    <select class=\"azx-stations-station\" aria-label=\"Esta\u00e7\u00e3o\"><\/select>\n                <\/label>\n            <\/div>\n\n            <article class=\"azx-station-card\" hidden>\n                <p class=\"azx-station-eyebrow\"><\/p>\n                <h3 class=\"azx-station-title\"><\/h3>\n                <div class=\"azx-station-line azx-station-address\"><\/div>\n                <div class=\"azx-station-line azx-station-phone\"><\/div>\n                <div class=\"azx-station-line azx-station-email\"><\/div>\n                <div class=\"azx-station-line azx-station-coordinates\"><\/div>\n                <div class=\"azx-station-line azx-station-schedule-weekday\"><\/div>\n                <div class=\"azx-station-line azx-station-schedule-saturday\"><\/div>\n                <div class=\"azx-station-line azx-station-schedule-sunday\"><\/div>\n            <\/article>\n\n            <div class=\"azx-stations-map\" aria-label=\"Mapa de esta\u00e7\u00f5es\"><\/div>\n\n            <p class=\"azx-stations-empty\" hidden>N\u00e3o foram encontradas esta\u00e7\u00f5es.<\/p>\n\n            <script type=\"application\/json\" class=\"azx-stations-data\">{\"useRegionFilter\":true,\"defaultRegion\":\"faial\",\"regionOrder\":[\"sao-miguel\",\"santa-maria\",\"terceira\",\"sao-jorge\",\"pico\",\"faial\",\"flores\"],\"stationsByRegion\":{\"faial\":{\"label\":\"Faial\",\"stations\":[{\"stationId\":\"HOR\",\"stationName\":\"FAIAL-Airport\",\"optionLabel\":\"FAIAL-Airport\",\"regionSlug\":\"faial\",\"regionLabel\":\"Faial\",\"address\":\"AEROPORTO DA HORTA, 9900-998, CASTELO BRANCO HRT\",\"phone\":\"+351 292943945\",\"email\":\"rentivfaial@ilhaverde.com\",\"latitude\":\"38.5217\",\"longitude\":\"-28.7161\",\"schedule\":{\"weekday\":\"08:00-19:00\",\"saturday\":\"08:00-19:00\",\"sunday\":\"08:00-19:00\"}},{\"stationId\":\"CHO\",\"stationName\":\"FAIAL-Gare-Pier\",\"optionLabel\":\"FAIAL-Gare-Pier\",\"regionSlug\":\"faial\",\"regionLabel\":\"Faial\",\"address\":\"GARE MARITIMA DO PORTO DA HORTA  TERMINAL MARITIMO, 9900-062, HORTA\",\"phone\":\"+351 292240520\",\"email\":\"rentivfaial@ilhaverde.com\",\"latitude\":\"38.5421\",\"longitude\":\"-28.6203\",\"schedule\":{\"weekday\":\"08:00-19:00\",\"saturday\":\"08:00-19:00\",\"sunday\":\"08:00-19:00\"}},{\"stationId\":\"FAY\",\"stationName\":\"FAIAL-Horta-City\",\"optionLabel\":\"FAIAL-Horta-City\",\"regionSlug\":\"faial\",\"regionLabel\":\"Faial\",\"address\":\"RUA ANGUSTIAS 70 R\/C, 9900-018, HORTA\",\"phone\":\"+351 292392786\",\"email\":\"rentivfaial@ilhaverde.com\",\"latitude\":\"38.528\",\"longitude\":\"-28.6269\",\"schedule\":{\"weekday\":\"08:00-19:00\",\"saturday\":\"08:00-19:00\",\"sunday\":\"08:00-19:00\"}}]},\"flores\":{\"label\":\"Flores\",\"stations\":[{\"stationId\":\"FLW\",\"stationName\":\"FLORES - Flores-Airport\",\"optionLabel\":\"FLORES - Flores-Airport\",\"regionSlug\":\"flores\",\"regionLabel\":\"Flores\",\"address\":\"AEROPORTO DAS FLORES, 9970-320, SANTA CRUZ DAS FLORES\",\"phone\":\"+351 292542372\",\"email\":\"rentivflores@ilhaverde.com\",\"latitude\":\"39.459\",\"longitude\":\"-31.131\",\"schedule\":{\"weekday\":\"08:00-17:30\",\"saturday\":\"08:00-17:30\",\"sunday\":\"08:00-17:30\"}}]},\"pico\":{\"label\":\"Pico\",\"stations\":[{\"stationId\":\"PIX\",\"stationName\":\"PICO-Airport\",\"optionLabel\":\"PICO-Airport\",\"regionSlug\":\"pico\",\"regionLabel\":\"Pico\",\"address\":\"AEROPORTO DO PICO, 9950-011, BANDEIRAS\",\"phone\":\"+351 292622002\",\"email\":\"rentivpico@ilhaverde.com\",\"latitude\":\"38.552416\",\"longitude\":\"-28.443738\",\"schedule\":{\"weekday\":\"08:00-19:30\",\"saturday\":\"08:00-19:30\",\"sunday\":\"08:00-19:30\"}},{\"stationId\":\"GMAD\",\"stationName\":\"PICO-Gare-Pier\",\"optionLabel\":\"PICO-Gare-Pier\",\"regionSlug\":\"pico\",\"regionLabel\":\"Pico\",\"address\":\"GARE MARITIMA DO PORTO DA MADALENA, 9950-340, MADALENA (PICO)\",\"phone\":\"+351 292623397\",\"email\":\"rentivpico@ilhaverde.com\",\"latitude\":\"38.536507\",\"longitude\":\"-28.527809\",\"schedule\":{\"weekday\":\"08:00-19:00\",\"saturday\":\"08:00-19:00\",\"sunday\":\"08:00-19:00\"}},{\"stationId\":\"MAD\",\"stationName\":\"PICO-Madalena Village\",\"optionLabel\":\"PICO-Madalena Village\",\"regionSlug\":\"pico\",\"regionLabel\":\"Pico\",\"address\":\"CAIS DA MADALENA S\/N, 9950-305, MADALENA\",\"phone\":\"+351 292622601\",\"email\":\"rentivpico@ilhaverde.com\",\"latitude\":\"38.5362\",\"longitude\":\"-28.5285\",\"schedule\":{\"weekday\":\"08:00-19:00\",\"saturday\":\"08:00-19:00\",\"sunday\":\"08:00-19:00\"}}]},\"sao-jorge\":{\"label\":\"S\u00e3o Jorge\",\"stations\":[{\"stationId\":\"SJZ\",\"stationName\":\"SAO JORGE-Airport\",\"optionLabel\":\"SAO JORGE-Airport\",\"regionSlug\":\"sao-jorge\",\"regionLabel\":\"S\u00e3o Jorge\",\"address\":\"AEROPORTO DE SAO JORGE, 9800-308, SANTO AMARO VLS\",\"phone\":\"+351 295240940\",\"email\":\"rentivsaojorge@illhaverde.com\",\"latitude\":\"38.6655\",\"longitude\":\"-28.1758\",\"schedule\":{\"weekday\":\"08:00-17:00\",\"saturday\":\"08:00-17:00\",\"sunday\":\"08:00-17:00\"}},{\"stationId\":\"GVSJ\",\"stationName\":\"SAO JORGE-Gare-Pier\",\"optionLabel\":\"SAO JORGE-Gare-Pier\",\"regionSlug\":\"sao-jorge\",\"regionLabel\":\"S\u00e3o Jorge\",\"address\":\"GARE MARITIMA DO PORTO DAS VELAS, 9800-527, VELAS\",\"phone\":\"+351 295432141\",\"email\":\"rentivsaojorge@illhaverde.com\",\"latitude\":\"38.679688\",\"longitude\":\"-28.2055\",\"schedule\":{\"weekday\":\"08:00-19:00\",\"saturday\":\"08:00-19:00\",\"sunday\":\"08:00-19:00\"}},{\"stationId\":\"VSJ\",\"stationName\":\"SAO JORGE-Velas Village\",\"optionLabel\":\"SAO JORGE-Velas Village\",\"regionSlug\":\"sao-jorge\",\"regionLabel\":\"S\u00e3o Jorge\",\"address\":\"LARGO DR. JOAO PEREIRA, 21, 9800-527, VELAS\",\"phone\":\"+351 295432141\",\"email\":\"rentivsaojorge@illhaverde.com\",\"latitude\":\"38.6797\",\"longitude\":\"-28.2053\",\"schedule\":{\"weekday\":\"08:00-19:00\",\"saturday\":\"08:00-19:00\",\"sunday\":\"08:00-19:00\"}}]},\"santa-maria\":{\"label\":\"Santa Maria\",\"stations\":[{\"stationId\":\"SMA\",\"stationName\":\"SMA - Santa Maria-Airport\",\"optionLabel\":\"SMA - Santa Maria-Airport\",\"regionSlug\":\"santa-maria\",\"regionLabel\":\"Santa Maria\",\"address\":\"AEROPORTO DE SANTA MARIA, 9580-540, VILA DO PORTO\",\"phone\":\"+351 296886528\",\"email\":\"rentivsantamaria@ilhaverde.com\",\"latitude\":\"36.9744\",\"longitude\":\"-25.1654\",\"schedule\":{\"weekday\":\"07:00-21:00\",\"saturday\":\"07:00-21:00\",\"sunday\":\"07:00-21:00\"}}]},\"sao-miguel\":{\"label\":\"S\u00e3o Miguel\",\"stations\":[{\"stationId\":\"PDL\",\"stationName\":\"Ponta Delgada - Aeroporto\",\"optionLabel\":\"Ponta Delgada - Aeroporto\",\"regionSlug\":\"sao-miguel\",\"regionLabel\":\"S\u00e3o Miguel\",\"address\":\"AEROPORTO JOAO PAULO II, 9500-749, PONTA DELGADA\",\"phone\":\"+351 296684360\",\"email\":\"rentivapt@ilhaverde.com\",\"latitude\":\"37.7496\",\"longitude\":\"-25.7103\",\"schedule\":{\"weekday\":\"05:30-00:00\",\"saturday\":\"05:30-00:00\",\"sunday\":\"05:30-00:00\"}},{\"stationId\":\"DTO\",\"stationName\":\"Ponta Delgada - Campo S\u00e3o Francisco\",\"optionLabel\":\"Ponta Delgada - Campo S\u00e3o Francisco\",\"regionSlug\":\"sao-miguel\",\"regionLabel\":\"S\u00e3o Miguel\",\"address\":\"CAMPO DE S\u00c3O FRANCISCO,19, 9500-153, PONTA DELGADA\",\"phone\":\"+351 296304849\",\"email\":\"rentivsede@ilhaverde.com\",\"latitude\":\"37.737519\",\"longitude\":\"-25.672243\",\"schedule\":{\"weekday\":\"08:00-19:00\",\"saturday\":\"08:00-19:00\",\"sunday\":\"08:00-19:00\"}},{\"stationId\":\"HOT\",\"stationName\":\"Ponta Delgada - Hoteis\",\"optionLabel\":\"Ponta Delgada - Hoteis\",\"regionSlug\":\"sao-miguel\",\"regionLabel\":\"S\u00e3o Miguel\",\"address\":\"RUA DIREITA DO RAMALHO, 133, 9500-180, PONTA DELGADA\",\"phone\":\"+351 296304859\",\"email\":\"rentivparque@ilhaverde.com\",\"latitude\":\"37.744128\",\"longitude\":\"-25.69464\",\"schedule\":{\"weekday\":\"08:00-19:00\",\"saturday\":\"08:00-19:00\",\"sunday\":\"08:00-19:00\"}},{\"stationId\":\"SOL\",\"stationName\":\"Ponta Delgada - Solmar Avenida\",\"optionLabel\":\"Ponta Delgada - Solmar Avenida\",\"regionSlug\":\"sao-miguel\",\"regionLabel\":\"S\u00e3o Miguel\",\"address\":\"SOLMAR AVENIDA CENTER  LJ 14 R\/C, 9504-529, PONTA DELGADA\",\"phone\":\"+351 296304858\",\"email\":\"rentivsolmar@ilhaverde.com\",\"latitude\":\"37.740013\",\"longitude\":\"-25.665298\",\"schedule\":{\"weekday\":\"08:00-19:00\",\"saturday\":\"08:00-19:00\",\"sunday\":\"08:00-19:00\"}}]},\"terceira\":{\"label\":\"Terceira\",\"stations\":[{\"stationId\":\"HAN\",\"stationName\":\"TER-Angra-City\",\"optionLabel\":\"TER-Angra-City\",\"regionSlug\":\"terceira\",\"regionLabel\":\"Terceira\",\"address\":\"RUA DE S\u00c3O PEDRO, 290 - 294, 9700-187, ANGRA DO HERO\u00cdSMO\",\"phone\":\"+351 295215822\",\"email\":\"rentivterceira@ilhaverde.com\",\"latitude\":\"38.657522\",\"longitude\":\"-27.230314\",\"schedule\":{\"weekday\":\"08:00-19:00\",\"saturday\":\"08:00-19:00\",\"sunday\":\"08:00-19:00\"}},{\"stationId\":\"TER\",\"stationName\":\"TER-Terceira - Airport\",\"optionLabel\":\"TER-Terceira - Airport\",\"regionSlug\":\"terceira\",\"regionLabel\":\"Terceira\",\"address\":\"AEROPORTO DAS LAJES, 9760-251, LAJES VPV\",\"phone\":\"+351 295513722\",\"email\":\"rentivterceira@ilhaverde.com\",\"latitude\":\"38.7541\",\"longitude\":\"-27.0868\",\"schedule\":{\"weekday\":\"05:30-00:00\",\"saturday\":\"05:30-00:00\",\"sunday\":\"05:30-00:00\"}}]}},\"labels\":{\"chooseStation\":\"Selecione uma esta\u00e7\u00e3o\",\"address\":\"Morada\",\"phone\":\"Telefone\",\"email\":\"Email\",\"gps\":\"GPS\",\"weekday\":\"Segunda a sexta\",\"saturday\":\"S\u00e1bado\",\"sunday\":\"Domingo\",\"closed\":\"Fechado\",\"standard\":\"Padr\u00e3o\",\"satellite\":\"Sat\u00e9lite\"}}<\/script>\n        <\/div>\n\n        <script>\n            (function(){\n                const root = document.getElementById(\"azx-stations-1\");\n                if (!root) return;\n\n                const jsonNode = root.querySelector('.azx-stations-data');\n                if (!jsonNode) return;\n\n                let payload = {};\n                try {\n                    payload = JSON.parse(jsonNode.textContent || '{}');\n                } catch (e) {\n                    payload = {};\n                }\n\n                const stationsByRegion = payload.stationsByRegion || {};\n                const useRegionFilter = !!payload.useRegionFilter;\n                const labels = payload.labels || {};\n                const fallbackRegion = payload.defaultRegion || '';\n                const configuredRegionOrder = Array.isArray(payload.regionOrder) ? payload.regionOrder : [];\n\n                const regionSelect = root.querySelector('.azx-stations-region');\n                const stationSelect = root.querySelector('.azx-stations-station');\n                const mapEl = root.querySelector('.azx-stations-map');\n                const emptyEl = root.querySelector('.azx-stations-empty');\n                const card = root.querySelector('.azx-station-card');\n                const eyebrow = root.querySelector('.azx-station-eyebrow');\n                const title = root.querySelector('.azx-station-title');\n                const address = root.querySelector('.azx-station-address');\n                const phone = root.querySelector('.azx-station-phone');\n                const email = root.querySelector('.azx-station-email');\n                const coordinates = root.querySelector('.azx-station-coordinates');\n                const scheduleWeekday = root.querySelector('.azx-station-schedule-weekday');\n                const scheduleSaturday = root.querySelector('.azx-station-schedule-saturday');\n                const scheduleSunday = root.querySelector('.azx-station-schedule-sunday');\n                let map = null;\n                let L = null;\n                const markersByStationId = {};\n                let allMarkersBounds = null;\n\n                const regionOrder = configuredRegionOrder.filter((slug) => !!stationsByRegion[slug]);\n                Object.keys(stationsByRegion).forEach((slug) => {\n                    if (!regionOrder.includes(slug)) {\n                        regionOrder.push(slug);\n                    }\n                });\n\n                function clearSelect(select){\n                    while (select && select.options.length) {\n                        select.remove(0);\n                    }\n                }\n\n                function option(select, value, text){\n                    const node = document.createElement('option');\n                    node.value = value;\n                    node.textContent = text;\n                    select.appendChild(node);\n                }\n\n                function resolveRegionSlug(){\n                    if (!useRegionFilter) {\n                        return regionOrder[0] || '';\n                    }\n\n                    const selected = regionSelect ? regionSelect.value : '';\n                    if (selected && stationsByRegion[selected]) {\n                        return selected;\n                    }\n\n                    if (fallbackRegion && stationsByRegion[fallbackRegion]) {\n                        return fallbackRegion;\n                    }\n\n                    return regionOrder[0] || '';\n                }\n\n                function stationsForRegion(regionSlug){\n                    const rows = (stationsByRegion[regionSlug] && stationsByRegion[regionSlug].stations)\n                        ? stationsByRegion[regionSlug].stations\n                        : [];\n                    return Array.isArray(rows) ? rows : [];\n                }\n\n                function flattenAllStations(){\n                    const out = [];\n                    const seen = {};\n                    Object.keys(stationsByRegion).forEach((regionSlug) => {\n                        const rows = stationsForRegion(regionSlug);\n                        rows.forEach((station) => {\n                            const id = String(station.stationId || '').trim();\n                            if (id === '' || seen[id]) {\n                                return;\n                            }\n                            seen[id] = true;\n                            out.push(station);\n                        });\n                    });\n                    return out;\n                }\n\n                function stationLatLng(station){\n                    if (!station) {\n                        return null;\n                    }\n                    const lat = parseFloat(station.latitude);\n                    const lon = parseFloat(station.longitude);\n                    if (!Number.isFinite(lat) || !Number.isFinite(lon)) {\n                        return null;\n                    }\n                    return [lat, lon];\n                }\n\n                function escapeHtml(text){\n                    const div = document.createElement('div');\n                    div.textContent = (text || '').toString();\n                    return div.innerHTML;\n                }\n\n                function setLine(lineEl, labelText, valueText){\n                    if (!lineEl) {\n                        return;\n                    }\n                    const label = (labelText || '').toString().trim();\n                    const value = (valueText || '').toString().trim();\n                    if (value === '') {\n                        lineEl.textContent = '';\n                        lineEl.hidden = true;\n                        return;\n                    }\n                    lineEl.innerHTML =\n                        '<span class=\"azx-station-label\">' + escapeHtml(label + ':') + '<\/span>' +\n                        '<span class=\"azx-station-value\">' + escapeHtml(value) + '<\/span>';\n                    lineEl.hidden = false;\n                }\n\n                function selectedStation(){\n                    const currentRegion = resolveRegionSlug();\n                    const stationId = stationSelect ? stationSelect.value : '';\n                    return findStation(currentRegion, stationId);\n                }\n\n                function focusStationOnMap(station){\n                    if (!map || !L) {\n                        return;\n                    }\n                    const latlng = stationLatLng(station);\n                    if (!latlng) {\n                        return;\n                    }\n\n                    map.setView(latlng, 14, { animate: true });\n                    const stationId = String(station.stationId || '').trim();\n                    if (stationId && markersByStationId[stationId]) {\n                        markersByStationId[stationId].openPopup();\n                    }\n                }\n\n                function ensureLeaflet(){\n                    if (window.L && typeof window.L.map === 'function') {\n                        return Promise.resolve(window.L);\n                    }\n\n                    if (window.__azxLeafletPromise) {\n                        return window.__azxLeafletPromise;\n                    }\n\n                    window.__azxLeafletPromise = new Promise((resolve, reject) => {\n                        if (!document.getElementById('azx-leaflet-css')) {\n                            const css = document.createElement('link');\n                            css.id = 'azx-leaflet-css';\n                            css.rel = 'stylesheet';\n                            css.href = 'https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.css';\n                            css.integrity = 'sha256-p4NxAoJBhIIN+hmNHrzRCf9tD\/miZyoHS5obTRR9BMY=';\n                            css.crossOrigin = '';\n                            document.head.appendChild(css);\n                        }\n\n                        const existing = document.getElementById('azx-leaflet-js');\n                        if (existing) {\n                            existing.addEventListener('load', () => resolve(window.L));\n                            existing.addEventListener('error', reject);\n                            return;\n                        }\n\n                        const script = document.createElement('script');\n                        script.id = 'azx-leaflet-js';\n                        script.src = 'https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.js';\n                        script.integrity = 'sha256-20nQCchB9co0qIjJZRGuk2\/Z9VM+kNiyxNV1lvTlZBo=';\n                        script.crossOrigin = '';\n                        script.onload = () => resolve(window.L);\n                        script.onerror = reject;\n                        document.head.appendChild(script);\n                    });\n\n                    return window.__azxLeafletPromise;\n                }\n\n                function initMap(){\n                    if (!mapEl) {\n                        return;\n                    }\n\n                    ensureLeaflet().then((leafletRef) => {\n                        L = leafletRef;\n                        if (!L || map) {\n                            return;\n                        }\n\n                        map = L.map(mapEl);\n                        const streetLayer = L.tileLayer('https:\/\/{s}.tile.openstreetmap.org\/{z}\/{x}\/{y}.png', {\n                            maxZoom: 19,\n                            attribution: '&copy; OpenStreetMap contributors'\n                        });\n                        const satelliteLayer = L.tileLayer(\n                            'https:\/\/server.arcgisonline.com\/ArcGIS\/rest\/services\/World_Imagery\/MapServer\/tile\/{z}\/{y}\/{x}',\n                            {\n                                maxZoom: 19,\n                                attribution: 'Tiles &copy; Esri'\n                            }\n                        );\n\n                        streetLayer.addTo(map);\n                        L.control.layers(\n                            {\n                                [labels.standard || 'Standard']: streetLayer,\n                                [labels.satellite || 'Satellite']: satelliteLayer,\n                            },\n                            null,\n                            { collapsed: true }\n                        ).addTo(map);\n\n                        const allStations = flattenAllStations();\n                        allMarkersBounds = L.latLngBounds([]);\n\n                        allStations.forEach((station) => {\n                            const latlng = stationLatLng(station);\n                            if (!latlng) {\n                                return;\n                            }\n\n                            const marker = L.marker(latlng).addTo(map);\n                            const regionLabel = (station.regionLabel || '').toString().trim();\n                            const stationName = (station.stationName || station.stationId || '').toString().trim();\n                            const popupTitle = regionLabel ? (regionLabel + ' - ' + stationName) : stationName;\n                            marker.bindPopup(escapeHtml(popupTitle), { autoPan: false });\n\n                            const stationId = String(station.stationId || '').trim();\n                            if (stationId !== '') {\n                                markersByStationId[stationId] = marker;\n                            }\n\n                            allMarkersBounds.extend(latlng);\n                        });\n\n                        if (allMarkersBounds.isValid()) {\n                            map.fitBounds(allMarkersBounds, { padding: [20, 20] });\n                        } else {\n                            map.setView([37.0902, -95.7129], 3);\n                        }\n\n                        const station = selectedStation();\n                        focusStationOnMap(station);\n\n                        setTimeout(() => {\n                            if (map) {\n                                map.invalidateSize();\n                            }\n                        }, 0);\n                    }).catch(() => {\n                        if (mapEl) {\n                            mapEl.style.display = 'none';\n                        }\n                    });\n                }\n\n                function renderDetails(station){\n                    if (!station) {\n                        card.hidden = true;\n                        return;\n                    }\n\n                    const regionLabel = (station.regionLabel || '').trim();\n                    const stationName = (station.stationName || station.stationId || '').trim();\n                    const stationAddress = (station.address || '').trim();\n                    const stationPhone = (station.phone || '').trim();\n                    const stationEmail = (station.email || '').trim();\n                    const stationLatitude = (station.latitude || '').toString().trim();\n                    const stationLongitude = (station.longitude || '').toString().trim();\n                    const stationSchedule = station.schedule || {};\n\n                    eyebrow.textContent = regionLabel;\n                    eyebrow.hidden = regionLabel === '';\n\n                    title.textContent = stationName;\n\n                    setLine(address, labels.address || 'Address', stationAddress);\n\n                    if (stationPhone) {\n                        const phoneHref = stationPhone.replace(\/\\s+\/g, '');\n                        const a = document.createElement('a');\n                        a.href = 'tel:' + phoneHref;\n                        a.textContent = stationPhone;\n                        phone.innerHTML = '<span class=\"azx-station-label\">' + escapeHtml((labels.phone || 'Phone') + ':') + '<\/span> ';\n                        phone.appendChild(a);\n                        phone.hidden = false;\n                    } else {\n                        phone.textContent = '';\n                        phone.hidden = true;\n                    }\n\n                    if (stationEmail) {\n                        const a = document.createElement('a');\n                        a.href = 'mailto:' + stationEmail;\n                        a.textContent = stationEmail;\n                        email.innerHTML = '<span class=\"azx-station-label\">' + escapeHtml((labels.email || 'Email') + ':') + '<\/span> ';\n                        email.appendChild(a);\n                        email.hidden = false;\n                    } else {\n                        email.textContent = '';\n                        email.hidden = true;\n                    }\n\n                    if (stationLatitude && stationLongitude) {\n                        setLine(coordinates, labels.gps || 'GPS', stationLatitude + ',' + stationLongitude);\n                    } else {\n                        coordinates.textContent = '';\n                        coordinates.hidden = true;\n                    }\n\n                    const weekdayValue = (stationSchedule.weekday || '').toString().trim();\n                    const saturdayValue = (stationSchedule.saturday || '').toString().trim();\n                    const sundayValue = (stationSchedule.sunday || '').toString().trim();\n\n                    setLine(scheduleWeekday, labels.weekday || 'Monday to Friday', weekdayValue || labels.closed || 'Closed');\n                    setLine(scheduleSaturday, labels.saturday || 'Saturday', saturdayValue || labels.closed || 'Closed');\n                    setLine(scheduleSunday, labels.sunday || 'Sunday', sundayValue || labels.closed || 'Closed');\n\n                    focusStationOnMap(station);\n                    card.hidden = false;\n                }\n\n                function renderStations(regionSlug){\n                    clearSelect(stationSelect);\n\n                    const stations = stationsForRegion(regionSlug);\n                    if (!stations.length) {\n                        emptyEl.hidden = false;\n                        card.hidden = true;\n                        return;\n                    }\n\n                    emptyEl.hidden = true;\n\n                    option(stationSelect, '', labels.chooseStation);\n                    stations.forEach((station) => {\n                        option(stationSelect, station.stationId, station.optionLabel || station.stationName || station.stationId);\n                    });\n\n                    stationSelect.value = stations[0].stationId;\n                    renderDetails(stations[0]);\n                }\n\n                function findStation(regionSlug, stationId){\n                    const stations = stationsForRegion(regionSlug);\n                    return stations.find((station) => station.stationId === stationId) || null;\n                }\n\n                if (useRegionFilter && regionSelect) {\n                    clearSelect(regionSelect);\n                    regionOrder.forEach((slug) => {\n                        const label = stationsByRegion[slug] && stationsByRegion[slug].label\n                            ? stationsByRegion[slug].label\n                            : slug;\n                        option(regionSelect, slug, label);\n                    });\n                    regionSelect.value = resolveRegionSlug();\n                    regionSelect.addEventListener('change', function(){\n                        renderStations(resolveRegionSlug());\n                    });\n                }\n\n                stationSelect.addEventListener('change', function(){\n                    const currentRegion = resolveRegionSlug();\n                    const station = findStation(currentRegion, stationSelect.value);\n                    renderDetails(station);\n                });\n\n                const initialRegion = resolveRegionSlug();\n                if (!initialRegion) {\n                    emptyEl.hidden = false;\n                    card.hidden = true;\n                    return;\n                }\n\n                renderStations(initialRegion);\n                initMap();\n            })();\n        <\/script>\n        \n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-islands.php","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-75","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/novo.ilhaverde.com\/pt-pt\/wp-json\/wp\/v2\/pages\/75","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/novo.ilhaverde.com\/pt-pt\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/novo.ilhaverde.com\/pt-pt\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/novo.ilhaverde.com\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/novo.ilhaverde.com\/pt-pt\/wp-json\/wp\/v2\/comments?post=75"}],"version-history":[{"count":1,"href":"https:\/\/novo.ilhaverde.com\/pt-pt\/wp-json\/wp\/v2\/pages\/75\/revisions"}],"predecessor-version":[{"id":78,"href":"https:\/\/novo.ilhaverde.com\/pt-pt\/wp-json\/wp\/v2\/pages\/75\/revisions\/78"}],"wp:attachment":[{"href":"https:\/\/novo.ilhaverde.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=75"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}