import os
from http.server import SimpleHTTPRequestHandler, HTTPServer
import urllib

ROOT = os.path.dirname(os.path.abspath(__file__))
EXTENSIONS = (".jpg", ".jpeg", ".png", ".gif", ".webp")

class GalleryHandler(SimpleHTTPRequestHandler):
    def list_directory(self, path):
        """Prikazuje HTML listu foldera ili slika"""
        relpath = os.path.relpath(path, ROOT)
        if relpath == ".":
            relpath = ""

        entries = os.listdir(path)
        entries.sort()

        # Prikupi sve foldere i slike
        dirs = [e for e in entries if os.path.isdir(os.path.join(path, e))]
        images = [e for e in entries if e.lower().endswith(EXTENSIONS)]

        self.send_response(200)
        self.send_header("Content-type", "text/html; charset=utf-8")
        self.end_headers()

        self.wfile.write(b"<!DOCTYPE html><html><head>")
        self.wfile.write(b"<meta charset='utf-8'>")
        self.wfile.write(f"<title>Galerija - {relpath}</title>".encode("utf-8"))
        self.wfile.write(b"<style>body{font-family:sans-serif;background:#111;color:white;text-align:center;}a{color:#6cf;text-decoration:none;}img{max-width:90%;max-height:80vh;display:block;margin:20px auto;border-radius:12px;}button{margin:10px;padding:10px 20px;font-size:16px;border-radius:8px;border:none;cursor:pointer;}button:hover{background:#444;color:white;}</style>")
        self.wfile.write(b"</head><body>")

        # navigacija nazad
        if relpath != "":
            parent = os.path.dirname(relpath)
            self.wfile.write(f"<p><a href='/{parent}'>⬆ Nazad</a></p>".encode("utf-8"))

        # foldere
        if dirs:
            self.wfile.write(b"<h2>Folderi</h2><ul>")
            for d in dirs:
                self.wfile.write(f"<li><a href='/{relpath}/{d}'>{d}</a></li>".encode("utf-8"))
            self.wfile.write(b"</ul>")

        # slike
        if images:
            self.wfile.write(b"<h2>Pregled slika</h2>")
            self.wfile.write(b"""
            <div>
              <button onclick="prevImage()">⬅ Nazad</button>
              <button onclick="nextImage()">Napred ➡</button>
            </div>
            <img id="viewer" src="" alt="Nema slike">
            <script>
              let files = ["""+",".join([f'"{urllib.parse.quote(i)}"' for i in images]).encode("utf-8")+b"""];
              let index = 0;
              function showImage() {
                if (files.length > 0) {
                  document.getElementById('viewer').src = files[index];
                }
              }
              function prevImage() {
                index = (index - 1 + files.length) % files.length;
                showImage();
              }
              function nextImage() {
                index = (index + 1) % files.length;
                showImage();
              }
              document.addEventListener('keydown', (e) => {
                if (e.key === "ArrowRight") nextImage();
                if (e.key === "ArrowLeft") prevImage();
              });
              showImage();
            </script>
            """)

        self.wfile.write(b"</body></html>")
        return None

def run(server_class=HTTPServer, handler_class=GalleryHandler, port=8000):
    server_address = ("", port)
    httpd = server_class(server_address, handler_class)
    print(f"✅ Pokrenut server na http://localhost:{port}")
    httpd.serve_forever()

if __name__ == "__main__":
    run()
