<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    {{ if .IsThemeDark }}
    <meta name="darkreader-lock">
    {{ end }}
    <title>{{ translate "site_name" }} - {{ .Query }}</title>
    <link rel="stylesheet" href="/static/css/style.css">
    <link rel="stylesheet" href="/static/css/{{.Theme}}.css">
    <link rel="search" type="application/opensearchdescription+xml" title="{{ translate "site_name" }}" href="/opensearch.xml">
    <script src="https://cdn.jsdelivr.net/npm/leaflet@1.9.4/dist/leaflet.js"></script>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.9.4/dist/leaflet.css" />
    <style>
        body, html {
            height: 100%;
            margin: 0;
            padding: 0;
            overflow: hidden;
        }
        #map {
            height: calc(100% - 100px);
            width: 100%;
            top: 100px;
        }
    </style>
</head>
<body>
    <form action="/search" id="prev-next-form" class="results-search-container" method="GET" autocomplete="off">
        <h1 class="logomobile"><a class="no-decoration" href="./">{{ translate "site_name" }}</a></h1>
        <div class="wrapper-results">
            <input type="text" name="q" value="{{ .Query }}" id="search-input"/>
            <button id="search-wrapper-ico" class="material-icons-round" name="t" value="map">search</button>
            <div class="autocomplete">
                <ul>
            </ul>
            </div>
            <input type="submit" class="hide" name="t" value="map" />
        </div>
        <div class="sub-search-button-wrapper">
            <div class="search-container-results-btn">
                <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="text">search</button>
                <button name="t" value="text" class="clickable">{{ translate "web" }}</button>
            </div>                  
            <div class="search-container-results-btn">
                <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="image">image</button>
                <button name="t" value="image" class="clickable">{{ translate "images" }}</button>
            </div>
            <div class="search-container-results-btn">
                <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="video">movie</button>
                <button name="t" value="video" class="clickable">{{ translate "videos" }}</button>
            </div>
            <div class="search-container-results-btn">
                <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="forum">forum</button>
                <button name="t" value="forum" class="clickable">{{ translate "forums" }}</button>
            </div>
            <div class="search-container-results-btn">
                <button id="sub-search-wrapper-ico" class="material-icons-round clickable search-active" name="t" value="map">map</button>
                <button name="t" value="map" class="clickable search-active">{{ translate "maps" }}</button>
            </div>
            <div class="search-container-results-btn">
                <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="file">share</button>
                <button name="t" value="file" class="clickable">{{ translate "torrents" }}</button>
            </div>
        </div>
    </form>
    {{ if .Found }}
        <div id="map"></div>
    {{ else }}
        <div id="map"></div>
        <div class="message">{{ translate "no_results" .Query }}</div>
    {{ end }}
    {{ if .Found }}
    <script>
        document.addEventListener('DOMContentLoaded', function () {
            var map = L.map('map').setView([{{ .Latitude }}, {{ .Longitude }}], 13); // Set view to found coordinates
    
            // Base layers
            var streets = L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
                maxZoom: 19,
                attribution: '© OpenStreetMap contributors'
            });
    
            var satellite = L.tileLayer('https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png', {
                maxZoom: 19,
                attribution: '© OpenStreetMap contributors'
            });
    
            var esriSat = L.tileLayer('https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{x}/{y}', {
                maxZoom: 19,
                attribution: 'Tiles © Esri'
            });
    
            var topo = L.tileLayer('https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png', {
                maxZoom: 17,
                attribution: '© OpenTopoMap contributors'
            });
    
            var baseMaps = {
                "{{ translate "streets" }}": streets,
                "{{ translate "satellite" }}": satellite,
                "{{ translate "esri_satellite" }}": esriSat,
                "{{ translate "topographic" }}": topo
            };
    
            streets.addTo(map); // Add default layer
    
            // Layer control
            L.control.layers(baseMaps).addTo(map);
    
            // Marker with passed coordinates
            L.marker([{{ .Latitude }}, {{ .Longitude }}]).addTo(map)
                .bindPopup('{{ .Query }}');
    
            // Add scale control
            L.control.scale().addTo(map);
    
            // Add custom control for geolocation
            L.Control.geolocate = L.Control.extend({
                onAdd: function(map) {
                    var div = L.DomUtil.create('div', 'leaflet-control-locate');
                    div.title = '{{ translate "locate_me" }}';
                    L.DomEvent.on(div, 'click', function() {
                        map.locate({setView: true, maxZoom: 16});
                    });
                    return div;
                }
            });
    
            L.control.geolocate = function(opts) {
                return new L.Control.geolocate(opts);
            }
    
            L.control.geolocate({ position: 'topright' }).addTo(map);
    
            // Geolocation function
            function onLocationFound(e) {
                var radius = e.accuracy / 2;
                L.marker(e.latlng).addTo(map)
                    .bindPopup("{{ translate "you_are_within" }}" + radius + " {{ translate "meters_from_point" }}").openPopup();
                L.circle(e.latlng, radius).addTo(map);
            }
    
            function onLocationError(e) {
                alert(e.message);
            }
    
            map.on('locationfound', onLocationFound);
            map.on('locationerror', onLocationError);
        });
    </script>      
    {{ end }}
</body>
</html>