<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>{{.Query}} - Ocásek</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="Ocásek" href="/opensearch.xml">
</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="./">Ocásek</a></h1>
        <div class="wrapper-results">
            <input type="text" name="q" value="{{ .Query }}" id="search-input" placeholder="Type to search..." />
            <button id="search-wrapper-ico" class="material-icons-round" name="t" value="text">search</button>
            <input type="submit" class="hide" name="t" value="text" />
        </div>
        <div class="sub-search-button-wrapper">
            <div class="search-container-results-btn">
                <button id="sub-search-wrapper-ico" class="material-icons-round clickable search-active" name="t" value="text">search</button>
                <button name="t" value="text" class="clickable search-active">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">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">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">Forums</button>
            </div>
            <div id="content" class="js-enabled">
            <div class="search-container-results-btn">
                <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="map">map</button>
                <button name="t" value="map" class="clickable">Maps</button>
            </div>
            </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">Torrents</button>
            </div>
        </div>
    </form>
    <form class="results_settings" action="/search" method="get">
        <input type="hidden" name="q" value="{{ .Query }}">
        <select class="results-settings" name="safe" id="safeSearchSelect">
            <option value="disabled" {{if eq .Safe "disabled"}}selected{{end}}>Safe Search Off</option>
            <option value="active" {{if eq .Safe "active"}}selected{{end}}>Safe Search On</option>
        </select>
        <select class="results-settings" name="lang" id="languageSelect">
            {{range .LanguageOptions}}
            <option value="{{.Code}}" {{if eq .Code $.CurrentLang}}selected{{end}}>{{.Name}}</option>
            {{end}}
        </select>        
        <button class="results-save" name="t" value="text">Apply settings</button>
    </form>    
    <div class="results" id="results">
        {{if .Results}}
            {{range .Results}}
                <div class="result_item">
                    <a id="link" href="{{.URL}}">{{.URL}}</a>
                    <a href="{{.URL}}"><h3>{{.Header}}</h3></a>
                    <p>{{.Description}}</p>
                </div>
                <br>
            {{end}}
        {{else if .NoResults}}
            <div class="no-results">No results found for '{{ .Query }}'. Try different keywords.</div>
        {{else}}
            <div class="no-more-results">Looks like this is the end of results.</div>
        {{end}}
    </div>    
    <div class="message-bottom-left" id="message-bottom-left">
        <span>Searching for new results...</span>
    </div>
    <div class="prev-next prev-img" id="prev-next">
        <form action="/search" method="get">
            <input type="hidden" name="q" value="{{ .Query }}">
            <input type="hidden" name="t" value="text">
            {{ if .HasPrevPage }}
            <button type="submit" name="p" value="{{ sub .Page 1 }}">Previous</button>
            {{ end }}
            {{ if .HasNextPage }}
            <button type="submit" name="p" value="{{ add .Page 1 }}">Next</button>
            {{ end }}
        </form>
    </div>
    <script>
        // Check if JavaScript is enabled and modify the DOM accordingly
        document.getElementById('content').classList.remove('js-enabled');
    </script>
    <script>
        document.addEventListener("DOMContentLoaded", function() {
            if (document.getElementById('prev-next')) {
                document.getElementById('prev-next').style.display = 'none';

                let page = {{ .Page }};
                const query = "{{ .Query }}";
                let loading = false;
                let hasMoreResults = true;
                const loadingIndicator = document.getElementById('message-bottom-left');
                let loadingTimeout;

                function loadResults(newPage) {
                    if (loading || !hasMoreResults) return;
                    loading = true;
                    
                    // Show loading indicator if taking more than 100ms
                    loadingTimeout = setTimeout(() => {
                        loadingIndicator.style.display = 'flex';
                    }, 100);

                    fetch(`/search?q=${encodeURIComponent(query)}&t=text&p=${newPage}`)
                        .then(response => response.text())
                        .then(data => {
                            clearTimeout(loadingTimeout);
                            loadingIndicator.style.display = 'none';
                            const parser = new DOMParser();
                            const doc = parser.parseFromString(data, 'text/html');
                            const newResults = doc.getElementById('results').innerHTML;
                            const noResultsMessage = "No results found for '{{ .Query }}'. Try different keywords.";

                            if (newResults.includes(noResultsMessage)) {
                                document.getElementById('results').innerHTML += "<div class='no-more-results'>Looks like this is the end of results.</div>";
                                hasMoreResults = false;
                            } else {
                                document.getElementById('results').innerHTML += newResults;
                                page = newPage;
                            }
                            loading = false;
                        })
                        .catch(error => {
                            clearTimeout(loadingTimeout);
                            loadingIndicator.style.display = 'none';
                            console.error('Error loading results:', error);
                            loading = false;
                        });
                }

                window.addEventListener('scroll', () => {
                    if (window.innerHeight + window.scrollY >= document.body.offsetHeight) {
                        loadResults(page + 1);
                    }
                });
            }
        });
    </script>
</body>
</html>