/**
 * SET LOCATION: Frontend Map Renderer
 * Vanilla JS + Leaflet + OpenStreetMap
 * Suporta múltiplos mapas na mesma página
 */
(function() {
	'use strict';

	document.addEventListener('DOMContentLoaded', function() {
		if (typeof L === 'undefined') return;

		// Corrige ícones para uso local/offline
		delete L.Icon.Default.prototype._getIconUrl;
        L.Icon.Default.mergeOptions({
            iconRetinaUrl: 'https://unpkg.com/leaflet@1.9.4/dist/images/marker-icon-2x.png',
            iconUrl:       'https://unpkg.com/leaflet@1.9.4/dist/images/marker-icon.png',
            shadowUrl:     'https://unpkg.com/leaflet@1.9.4/dist/images/marker-shadow.png',
        });

		// Processa TODOS os mapas da página
		const maps = document.querySelectorAll('.set-location-map');
		maps.forEach(function(container) {
			const lat = parseFloat(container.dataset.lat);
			const lng = parseFloat(container.dataset.lng);
			const zoom = parseInt(container.dataset.zoom) || 15;
			const title = container.dataset.title || '';
			const content = container.dataset.content || '';
			const osmLink = container.dataset.osmLink || '';

			if (!lat || !lng) return;

			// Inicializa o mapa
			const map = L.map(container, {
				zoomControl: true,
				scrollWheelZoom: false // Melhor UX em páginas com scroll
			}).setView([lat, lng], zoom);

			L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
				attribution: setLocationFront.attribution
			}).addTo(map);

			// Monta o conteúdo do popup
			let popupHtml = '<strong>' + escapeHtml(title) + '</strong>';
			if (content) {
				popupHtml += '<p>' + sanitizeHtml(content) + '</p>';
			}
			if (osmLink) {
				popupHtml += '<p><a href="' + escapeHtml(osmLink) + '" target="_blank" rel="noopener">Como chegar →</a></p>';
			}

			// Adiciona marcador com popup aberto
			L.marker([lat, lng]).addTo(map).bindPopup(popupHtml).openPopup();
		});

		// Helpers de segurança
		function escapeHtml(str) {
			if (!str) return '';
			const div = document.createElement('div');
			div.textContent = str;
			return div.innerHTML;
		}

		function sanitizeHtml(str) {
			if (!str) return '';
			// Remove scripts e limita tamanho
			return str.replace(/<script[^>]*>.*?<\/script>/gi, '').slice(0, 500);
		}
	});
})();