<?php
declare(strict_types=1);

include 'inc/includes.inc.php';
$stats = new stats();

if (isset($_GET['gdaily'])) {
    define('DAY', 86400);
    
    // 1. Casting και ασφαλής ανάγνωση παραμέτρων
    $time  = isset($_GET['time'])  ? (int)$_GET['time']  : 365;
    $y     = isset($_GET['y'])     ? (int)$_GET['y']     : 0;
    $x     = isset($_GET['x'])     ? (int)$_GET['x']     : 0;
    $mid   = isset($_GET['mid'])   ? (int)$_GET['mid']   : 0;
    $scale = isset($_GET['scale']) ? (int)$_GET['scale'] : 0;

    // 2. Έλεγχος ορίων (Sanitization & DoS Protection)
    if ($time < 1)   $time = 1;
    if ($time > 365) $time = 365; 
    
    $days = (int)$stats->numdays();
    $time = ($time < $days) ? $time : $days;
    
    $raw_date = $stats->countbyday($time);
    $date = is_array($raw_date) ? array_reverse($raw_date) : [];

    if (empty($date)) {
        $date = [0]; // Διόρθωση: Ορισμός προεπιλεγμένου πίνακα αν η βάση είναι άδεια
    }

    $maxmid = 0;
    $gmid   = 0;
    
    if (isset($_GET['mid'])) {
        if ($mid === 0) {
            $gmid = 1;
        } else {
            $maxmid = $mid;
        }
    }

    $max = (int)max($date);
    if ($max <= 0) $max = 1; 

    $scale = ($scale > 0) ? $scale : (int)round($max / 5);
    if ($scale <= 0) $scale = 1;

    if ($y > 0) {
        if ($y > 2000) $y = 2000; 
        $multi = $y / $max;
    } else {
        $multi = 1.0;
    }

    if ($x > 0) {
        if ($x > 4000) $x = 4000; 
        $large = ($x / count($date)) - 1;
        $space = ($large < 3) ? 0 : 1;
    } else {
        $large = 5.0;
        $space = 1;
    }

    $img_width  = (int)ceil($large * count($date));
    $img_height = (int)ceil($max * $multi);
    if ($img_width <= 0)  $img_width = 100;
    if ($img_height <= 0) $img_height = 100;

    // Αρχικοποίηση GD Image
    $im = imagecreate($img_width, $img_height);
    if (!$im) {
        die("Η βιβλιοθήκη GD απέτυχε να αρχικοποιηθεί.");
    }

    $bg     = imagecolorallocate($im, 240, 255, 250);
    $red    = imagecolorallocate($im, 255, 0, 0);
    $blue   = imagecolorallocate($im, 0, 0, 255);
    $green  = imagecolorallocate($im, 0, 255, 0);
    $midcol = imagecolorallocate($im, 255, 128, 200);
    $black  = imagecolorallocate($im, 0, 0, 0);

    $col    = array($black, $black);
    $c      = 0;
    $i      = 0;
    $last   = array();
    $sum    = 0;

    foreach ($date as $k => $val) {
        $key  = (int)(floor(time() / DAY) - ($time - $k));
        $sum += $val;
        array_push($last, $val);
        $mid_avg = array_sum($last) / count($last);
        
        if (!$i) {
            if (date('j', $key * DAY) < 20) {
                imagestring($im, 2, (int)($i * $large + 2), 1, date("M", $key * DAY), $red);
            }
        }
        
        $bar = $col[$c];
        $c   = 1 - $c;
        
        imagefilledrectangle($im, (int)($i * $large + $space), (int)($max * $multi - $val * $multi), (int)(($i + 1) * $large - 1), (int)($max * $multi), $bar);
        
        if ($maxmid) {
            if (count($last) > $maxmid) array_shift($last);
            imagefilledrectangle($im, (int)($i * $large + $space), (int)($max * $multi - $mid_avg * $multi), (int)(($i + 1) * $large), (int)($max * $multi - $mid_avg * $multi), $midcol);
        }
        
        if (date('j', $key * DAY) === '1') {
            imagerectangle($im, (int)($i * $large), 0, (int)($i * $large), (int)($max * $multi), $red);
            imagestring($im, 2, (int)($i * $large + 2), 1, date("M", $key * DAY), $red);
        }
        
        if ($space) {
            if (date('w', $key * DAY) !== '1') {
                imagerectangle($im, (int)($i * $large), (int)($max * $multi / 4), (int)($i * $large), (int)($max * $multi), $green);
            }
        }
        $i++;
    }

    for ($j = $scale; $j < $max; $j += $scale) {
        imagerectangle($im, 0, (int)($max * $multi - $j * $multi), (int)($large * count($date) + 1), (int)($max * $multi - $j * $multi), $blue);
        imagestring($im, 2, 1, (int)($max * $multi - $j * $multi), (string)$j, $blue);
    }

    if ($maxmid) {
        imagestring($im, 2, 25, 15, "Avg. last $maxmid days", $midcol);
    }

    if ($gmid && count($date) > 0) {
        $avg_line = (int)($max * $multi - ($sum / count($date)) * $multi);
        imagefilledrectangle($im, 0, $avg_line, (int)($large * count($date) + 1), $avg_line, $midcol);
        imagestring($im, 2, 30, 15, "Avg. " . count($date) . "days: " . round($sum / count($date)), $midcol);
    }

    header("Content-type: image/png");
    imagepng($im);
    imagedestroy($im);
    exit;
}

### HTML OUTPUT WITH PERMANENT LIGHT MODE & PAGINATION PER 10 ITEMS (ENGLISH)
?>
<!DOCTYPE html>
<html lang="en" data-theme="light">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Slakfinder Statistics</title>
 <style>
        :root {
            /* Clean Light Palette Optimized for PHP GD Graphics */
            --bg-color: #f7fafc;
            --card-bg: #ffffff;
            --text-color: #2d3748;
            --text-muted: #718096;
            --accent-color: #3182ce;
            --border-color: #e2e8f0;
            --header-bg: #edf2f7;
            --list-item-border: #edf2f7;
            --shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03);
            --radius: 12px;

            /* Enhanced Pagination Colors for Light Theme */
            --btn-bg: #e2e8f0;
            --btn-text: #2d3748;
            --btn-hover-bg: #cbd5e0;
            --btn-disabled-bg: #f7fafc;
            --btn-disabled-text: #a0aec0;
        }

        body {
            font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
            background-color: var(--bg-color);
            color: var(--text-color);
            margin: 0;
            padding: 20px;
            line-height: 1.5;
            font-size: 0.9rem; /* ΜΙΚΡΥΝΕ: Από 1rem σε 0.9rem για πιο μαζεμένο βασικό κείμενο */
        }

        .container {
            max-width: 1200px;
            margin: 0 auto;
        }

        .top-bar {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 20px;
        }

        .nav-links {
            display: flex;
            gap: 15px;
        }

        .nav-links a {
            color: var(--accent-color);
            text-decoration: none;
            font-weight: 500;
            font-size: 0.88rem; /* ΜΙΚΡΥΝΕ: Πιο μικρά links πλοήγησης */
        }

        .nav-links a:hover {
            text-decoration: underline;
        }

        .summary-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
            gap: 15px;
            margin-bottom: 25px;
        }

        .summary-card {
            background: var(--card-bg);
            padding: 15px 20px; /* ΜΙΚΡΥΝΕ: Λιγότερο κάθετο padding */
            border-radius: var(--radius);
            box-shadow: var(--shadow);
            border: 1px solid var(--border-color);
            text-align: center;
        }

        .summary-card .label {
            font-size: 0.75rem; /* ΜΙΚΡΥΝΕ: Από 0.85rem σε 0.75rem */
            color: var(--text-muted);
            text-transform: uppercase;
            letter-spacing: 0.05em;
            margin-bottom: 5px;
        }

        .summary-card .value {
            /* font-size: 1.5rem; */ /* ΜΙΚΡΥΝΕ: Από 1.8rem σε 1.5rem για να μην είναι τεράστια τα νούμερα */
            font-size: 0.85rem !important; /* Ίδιο μέγεθος με τα νούμερα των πινάκων */
            font-weight: 700;
            color: var(--accent-color);
        }

        .graph-card {
            background: var(--card-bg);
            padding: 20px 25px; /* ΜΙΚΡΥΝΕ: Πιο compact κάρτα γραφήματος */
            border-radius: var(--radius);
            box-shadow: var(--shadow);
            border: 1px solid var(--border-color);
            margin-bottom: 25px;
            text-align: center;
        }

        .graph-card h3 {
            margin-top: 0;
            margin-bottom: 15px;
            font-size: 1.1rem; /* ΜΙΚΡΥΝΕ: Μικρότερος τίτλος γραφήματος */
        }

        .graph-wrapper {
            overflow-x: auto;
            padding-bottom: 10px;
        }

        .graph-wrapper img {
            max-width: 100%;
            height: auto;
            border-radius: 6px;
            border: 1px solid var(--border-color);
        }

        .lists-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
            gap: 25px;
        }

        .list-card {
            background: var(--card-bg);
            border-radius: var(--radius);
            box-shadow: var(--shadow);
            border: 1px solid var(--border-color);
            overflow: hidden;
            display: flex;
            flex-direction: column;
        }

        .list-card h3 {
            background: var(--header-bg);
            margin: 0;
            padding: 12px 20px; /* ΜΙΚΡΥΝΕ: Από 15px σε 12px ύψος */
            font-size: 0.95rem; /* ΜΙΚΡΥΝΕ: Από 1.1rem σε 0.95rem ο τίτλος της λίστας */
            border-bottom: 1px solid var(--border-color);
        }

        .list-content {
            padding: 8px 20px; /* ΜΙΚΡΥΝΕ: Από 10px σε 8px */
            font-family: monospace;
            font-size: 0.85rem; /* ΜΙΚΡΥΝΕ: Από 0.95rem σε 0.85rem για να χωράνε οι λίστες */
            flex-grow: 1;
            min-height: 340px; /* ΜΙΚΡΥΝΕ: Μειώθηκε το ελάχιστο ύψος αφού μίκρυναν τα γράμματα */
        }

        .list-item {
            padding: 6px 0; /* ΜΙΚΡΥΝΕ: Από 8px σε 6px για πιο πυκνές γραμμές */
            border-bottom: 1px solid var(--list-item-border);
            display: flex;
            justify-content: space-between;
        }

        .list-item:last-child {
            border-bottom: none;
        }

        .list-item .count {
            font-weight: bold;
            color: var(--accent-color);
        }

        .pagination-controls {
            display: flex;
            justify-content: center;
            align-items: center;
            gap: 15px;
            padding: 10px 20px; /* ΜΙΚΡΥΝΕ: Από 15px σε 10px για πιο λεπτό pagination */
            background: var(--header-bg);
            border-top: 1px solid var(--border-color);
        }

        .page-btn {
            background-color: var(--btn-bg);
            border: 1px solid var(--border-color);
            color: var(--btn-text);
            padding: 5px 12px; /* ΜΙΚΡΥΝΕ: Από 6px/14px σε 5px/12px */
            border-radius: 6px;
            cursor: pointer;
            font-size: 0.8rem; /* ΜΙΚΡΥΝΕ: Από 0.85rem σε 0.8rem */
            font-weight: 600;
            transition: background-color 0.2s ease, border-color 0.2s ease;
        }

        .page-btn:hover:not(:disabled) {
            background-color: var(--btn-hover-bg);
            border-color: var(--accent-color);
        }

        .page-btn:disabled {
            background-color: var(--btn-disabled-bg);
            color: var(--btn-disabled-text);
            border-color: transparent;
            cursor: not-allowed;
            opacity: 0.7;
        }

        .page-info {
            font-size: 0.8rem; /* ΜΙΚΡΥΝΕ: Από 0.85rem σε 0.8rem */
            color: var(--text-muted);
            min-width: 110px; /* ΜΙΚΡΥΝΕ: Από 120px σε 110px */
            text-align: center;
            font-weight: 500;
        }
                /* 📱 ΕΙΔΙΚΕΣ ΡΥΘΜΙΣΕΙΣ ΓΙΑ ΚΙΝΗΤΑ (Οθόνες έως 768px) */
        @media (max-width: 768px) {
            body {
                padding: 15px;
                font-size: 0.82rem; /* Μικραίνει το βασικό κείμενο στο κινητό */
            }

            .summary-card {
                padding: 12px 15px; /* Πιο μαζεμένες κάρτες */
            }

            .summary-card .label {
                font-size: 0.7rem; /* Πιο μικρές ετικέτες στα κουτιά */
            }

            .summary-card .value {
               /* font-size: 1.3rem; */ /* Μικραίνουν τα μεγάλα νούμερα των επισκέψεων */
                font-size: 0.78rem !important; /* Ίδιο μέγεθος με τα νούμερα των πινάκων στα κινητά */
            }

            .graph-card {
                padding: 15px;
            }

            .graph-card h3 {
                font-size: 1rem; /* Μικρότερος τίτλος γραφήματος */
            }

            .list-card h3 {
                font-size: 0.88rem; /* Μικρότερος τίτλος στις λίστες */
                padding: 10px 15px;
            }

            .list-content {
                font-size: 0.78rem; /* Μικραίνουν τα ονόματα των πακέτων/αναζητήσεων για να χωράνε */
                padding: 5px 15px;
                min-height: auto;   /* Απελευθερώνει το ύψος στα κινητά */
            }

            .list-item {
                padding: 5px 0; /* Πιο πυκνές γραμμές */
            }

            .pagination-controls {
                padding: 8px 15px;
            }

            .page-btn {
                padding: 4px 10px; /* Πιο μικρά κουμπιά "Next/Prev" */
                font-size: 0.75rem;
            }

            .page-info {
                font-size: 0.75rem;
                min-width: 90px;
            }
           .summary-card {
				display: flex;
				justify-content: space-between;
				align-items: center;
				padding: 10px 15px;
			}
			.summary-card .label {
				margin-bottom: 0; /* Αφαιρεί το κενό αφού μπαίνουν δίπλα-δίπλα */
			}
         }

</style>

    <style>
/* Βασικό στυλ της γραμμής πλοήγησης */
.pagination-controls {
    display: flex;
    align-items: center;
    gap: 15px;
    width: 100%; /* Απαραίτητο για να απλωθεί το flexbox σε όλο το πλάτος */
    margin-top: 10px;
}

/* Βασικό στυλ του Dropdown Container */
.per-page-wrapper {
    display: flex;
    align-items: center;
    gap: 5px; /* Απόσταση ανάμεσα στο κείμενο και το select */
}


/* --- ΕΠΙΛΕΞΤΕ ΜΙΑ ΑΠΟ ΤΙΣ ΠΑΡΑΚΑΤΩ 3 ΚΛΑΣΕΙΣ --- */

/* Επιλογή Α: Όλο μαζί Αριστερά (Αμέσως μετά τα κουμπιά) */
.dropdown-left {
    margin-left: 10px; 
    margin-right: auto; /* Σπρώχνει τον κενό χώρο στα δεξιά */
}

/* Επιλογή Β: Όλο μαζί στο Κέντρο (Στη μέση της σελίδας) */
.dropdown-center {
    margin-left: auto;
    margin-right: auto; /* Τα διπλά auto το κεντράρουν απόλυτα */
}

/* Επιλογή Γ: Όλο μαζί Δεξιά (Τέρμα δεξιά στην οθόνη) */
.dropdown-right {
    margin-left: auto; /* Σπρώχνει όλο το σύνολο τέρμα δεξιά */
}

    </style>
</head>
<body>
	<div class="container">
    <div class="top-bar">
        <div class="nav-links">
            <a href="javascript:history.go(-1)">← Back</a>
            <span>|</span>
            <a href="index.php">Slakfinder Home</a>
        </div>
    </div>
    
    <?php
		// 1. Παίρνουμε τα δεδομένα της σημερινής ημέρας χωρίς array_reverse
		$raw_today = $stats->countbyday(1);

		// 2. Παίρνουμε το στοιχείο με το κλειδί 0, ακριβώς όπως στο παράδειγμά σου
		$today = (isset($raw_today[0])) ? (int)$raw_today[0] : 0;

		$all   = (int)$stats->countall();
		$days  = (int)$stats->numdays();
		if ($days <= 0) $days = 1;
	?>

    <div class="summary-grid">
        <div class="summary-card">
            <div class="label">All-time Searches</div>
            <div class="value"><?= $all ?></div>
        </div>
        <div class="summary-card">
            <div class="label">Today</div>
            <div class="value"><?= $today ?></div>
        </div>
        <div class="summary-card">
            <div class="label">Daily Peak</div>
            <div class="value"><?= (int)$stats->maxbyday() ?></div>
        </div>
        <div class="summary-card">
            <div class="label">Average / Day</div>
            <div class="value"><?= (int)round($all / $days) ?></div>
        </div>
        <div class="summary-card">
            <div class="label">Tracking Window</div>
            <div class="value"><?= $days ?> Days</div>
        </div>
    </div>

    <div class="graph-card">
        <h3>Daily Analytics Graph (Last 120 Days)</h3>
        <div class="graph-wrapper">
            <img src="stats.php?gdaily&y=200&mid=30&time=120" alt="Statistics Graph">
        </div>
    </div>

    <div class="lists-grid">
        
        <!-- Last 100 Searches -->
        <div class="list-card">
            <h3>Last 100 Searches</h3>
            <div class="list-content">
                <?php
                $last_search = $stats->lastminsearch(100);
                if (is_array($last_search) && !empty($last_search)):
                    foreach ($last_search as $val):
                        $min = htmlspecialchars((string)($val['min'] ?? ''), ENT_QUOTES | ENT_HTML5, 'UTF-8');
                        $sname = htmlspecialchars((string)($val['sname'] ?? ''), ENT_QUOTES | ENT_HTML5, 'UTF-8');
                        ?>
                        <div class="list-item paginated-item-1">
                            <span><?= $sname ?></span>
                            <span class="count"><?= $min ?></span>
                        </div>
                    <?php 
                    endforeach;
                else:
                    echo "<p style='color:var(--text-muted);'>No log data found.</p>";
                endif;
                ?>
            </div>
            <div class="pagination-controls">
                <button class="page-btn" id="prevBtn1">« Prev</button>
                <span class="page-info" id="pageInfo1">Page 1 of 1</span>
                <button class="page-btn" id="nextBtn1">Next »</button>
            </div>
            <!-- ================= ΠΙΝΑΚΑΣ 1 ================= -->
			<div class="per-page-wrapper dropdown-center">
				<label for="perPage1">Rows per page: (Last 100 Searches)</label>
				<select id="perPage1">
					<option value="10">10</option>
					<option value="20">20</option>
					<option value="30">30</option>
					<option value="40">40</option>
					<option value="50">50</option>
					<option value="60">60</option>
					<option value="70">70</option>
					<option value="80">80</option>
					<option value="90">90</option>
					<option value="100" selected>100</option>
				</select>
				<!-- ΚΟΥΜΠΙ RESET -->
				<!-- <button id="resetPaginationBtn" style="margin-left: 15px; cursor: pointer;">Reset</button> -->
				<button class="resetPaginationBtn" style="margin-left: 15px; cursor: pointer;">Reset</button>

			</div>
        </div>

        <!-- Top 100 Hot Queries -->
        <div class="list-card">
            <h3>Top 100 Hot Queries</h3>
            <div class="list-content">
                <?php
                $group_pkg = $stats->groupbypkg(100);
                if (is_array($group_pkg) && !empty($group_pkg)):
                    foreach ($group_pkg as $val):
                        $ns = htmlspecialchars((string)($val['ns'] ?? ''), ENT_QUOTES | ENT_HTML5, 'UTF-8');
                        $sname = htmlspecialchars((string)($val['sname'] ?? ''), ENT_QUOTES | ENT_HTML5, 'UTF-8');
                        ?>
                        <div class="list-item paginated-item-2">
                            <span><?= $sname ?></span>
                            <span class="count"><?= $ns ?></span>
                        </div>
                    <?php 
                    endforeach;
                else:
                    echo "<p style='color:var(--text-muted);'>No log data found.</p>";
                endif;
                ?>
            </div>
            <div class="pagination-controls">
                <button class="page-btn" id="prevBtn2">« Prev</button>
                <span class="page-info" id="pageInfo2">Page 1 of 1</span>
                <button class="page-btn" id="nextBtn2">Next »</button>
            </div>
            <!-- ================= ΠΙΝΑΚΑΣ 2 ================= -->
            <div class="per-page-wrapper dropdown-center">
				<label for="perPage2">Rows per page: (Top 100 Hot Queries)</label>
				<select id="perPage2">
					<option value="10">10</option>
					<option value="20">20</option>
					<option value="30">30</option>
					<option value="40">40</option>
					<option value="50">50</option>
					<option value="60">60</option>
					<option value="70">70</option>
					<option value="80">80</option>
					<option value="90">90</option>
					<option value="100" selected>100</option>
				</select>
				<!-- ΚΟΥΜΠΙ RESET -->
				<!--<button id="resetPaginationBtn" style="margin-left: 15px; cursor: pointer;">Reset</button> -->
				<button class="resetPaginationBtn" style="margin-left: 15px; cursor: pointer;">Reset</button>

			</div>
        </div>
	
    </div>
</div>

<script>
/*
document.addEventListener("DOMContentLoaded", function () {

    // 1. Έλεγχος αν υπάρχει ήδη αποθηκευμένη τιμή στο LocalStorage, αλλιώς default το 100
    const savedPerPage = localStorage.getItem("globalItemsPerPage") || "100";

    function setupPagination(itemSelector, prevBtnId, nextBtnId, pageInfoId, selectId, initialItemsPerPage) {
        const items = document.querySelectorAll(itemSelector);
        const prevBtn = document.getElementById(prevBtnId);
        const nextBtn = document.getElementById(nextBtnId);
        const pageInfo = document.getElementById(pageInfoId);
        const perPageSelect = document.getElementById(selectId);
        
        if (!items.length || !prevBtn || !nextBtn || !pageInfo) return;

        // Χρήση της τιμής (είτε από το LocalStorage είτε της αρχικής)
        let itemsPerPage = parseInt(initialItemsPerPage, 10);
        let currentPage = 1;
        let totalPages = Math.ceil(items.length / itemsPerPage);

        function showPage(page) {
            if (page < 1) page = 1;
            if (page > totalPages) page = totalPages;
            currentPage = page;

            const start = (currentPage - 1) * itemsPerPage;
            const end = start + itemsPerPage;

            items.forEach((item, index) => {
                if (index >= start && index < end) {
                    item.style.setProperty('display', 'flex', 'important'); 
                } else {
                    item.style.setProperty('display', 'none', 'important');
                }
            });

            pageInfo.textContent = `Page ${currentPage} of ${totalPages || 1}`;
            prevBtn.disabled = currentPage === 1;
            nextBtn.disabled = currentPage === totalPages || totalPages === 0;
        }

        function applyNewPerPage(newValue) {
            itemsPerPage = parseInt(newValue, 10);
            totalPages = Math.ceil(items.length / itemsPerPage);
            showPage(1);
        }

        if (perPageSelect) {
            perPageSelect.value = itemsPerPage;

            perPageSelect.addEventListener("change", function () {
                const selectedValue = this.value;
                
                // 2. Αποθήκευση της νέας επιλογής στο LocalStorage για το επόμενο refresh
                localStorage.setItem("globalItemsPerPage", selectedValue);
                
                applyNewPerPage(selectedValue);
                
                // Εκπομπή σήματος συγχρονισμού για το άλλο dropdown
                const syncEvent = new CustomEvent("syncAllDropdowns", { detail: selectedValue });
                document.dispatchEvent(syncEvent);
            });

            // Λήψη σήματος συγχρονισμού από το άλλο dropdown
            document.addEventListener("syncAllDropdowns", function (e) {
                if (perPageSelect.value !== e.detail) {
                    perPageSelect.value = e.detail; 
                    applyNewPerPage(e.detail);       
                }
            });
        }

        prevBtn.addEventListener("click", () => showPage(currentPage - 1));
        nextBtn.addEventListener("click", () => showPage(currentPage + 1));

        showPage(1);
    }

    // Αρχικοποίηση και των δύο πινάκων περνώντας την αποθηκευμένη τιμή (savedPerPage)
    setupPagination(".paginated-item-1", "prevBtn1", "nextBtn1", "pageInfo1", "perPage1", savedPerPage);
    setupPagination(".paginated-item-2", "prevBtn2", "nextBtn2", "pageInfo2", "perPage2", savedPerPage);
});
*/
/*
// store drop-down valuses and page
document.addEventListener("DOMContentLoaded", function () {

    // 1. Φόρτωση της αποθηκευμένης τιμής για τα στοιχεία ανά σελίδα (Default: 100)
    const savedPerPage = localStorage.getItem("globalItemsPerPage") || "100";

    function setupPagination(itemSelector, prevBtnId, nextBtnId, pageInfoId, selectId, initialItemsPerPage, storageKeyPage) {
        const items = document.querySelectorAll(itemSelector);
        const prevBtn = document.getElementById(prevBtnId);
        const nextBtn = document.getElementById(nextBtnId);
        const pageInfo = document.getElementById(pageInfoId);
        const perPageSelect = document.getElementById(selectId);
        
        if (!items.length || !prevBtn || !nextBtn || !pageInfo) return;

        let itemsPerPage = parseInt(initialItemsPerPage, 10);
        let totalPages = Math.ceil(items.length / itemsPerPage);
        
        // 2. Φόρτωση της αποθηκευμένης σελίδας για τον συγκεκριμένο πίνακα (Default: 1)
        let savedPage = parseInt(localStorage.getItem(storageKeyPage), 10) || 1;
        // Ασφάλεια: Αν η αποθηκευμένη σελίδα είναι μεγαλύτερη από τις νέες συνολικές σελίδες
        if (savedPage > totalPages) savedPage = totalPages;
        let currentPage = savedPage < 1 ? 1 : savedPage;

        function showPage(page) {
            if (page < 1) page = 1;
            if (page > totalPages) page = totalPages;
            currentPage = page;

            // Αποθήκευση της τρέχουσας σελίδας στο LocalStorage
            localStorage.setItem(storageKeyPage, currentPage);

            const start = (currentPage - 1) * itemsPerPage;
            const end = start + itemsPerPage;

            items.forEach((item, index) => {
                if (index >= start && index < end) {
                    item.style.setProperty('display', 'flex', 'important'); 
                } else {
                    item.style.setProperty('display', 'none', 'important');
                }
            });

            pageInfo.textContent = `Page ${currentPage} of ${totalPages || 1}`;
            prevBtn.disabled = currentPage === 1;
            nextBtn.disabled = currentPage === totalPages || totalPages === 0;
        }

        function applyNewPerPage(newValue) {
            itemsPerPage = parseInt(newValue, 10);
            totalPages = Math.ceil(items.length / itemsPerPage);
            
            // Αν μετά την αλλαγή του dropdown η τρέχουσα σελίδα βγει εκτός ορίων, πήγαινε στην τελευταία
            if (currentPage > totalPages) {
                currentPage = totalPages || 1;
            }
            showPage(currentPage);
        }

        if (perPageSelect) {
            perPageSelect.value = itemsPerPage;

            perPageSelect.addEventListener("change", function () {
                const selectedValue = this.value;
                
                // Αποθήκευση των στοιχείων ανά σελίδα
                localStorage.setItem("globalItemsPerPage", selectedValue);
                
                applyNewPerPage(selectedValue);
                
                // Συγχρονισμός με το άλλο dropdown
                const syncEvent = new CustomEvent("syncAllDropdowns", { detail: selectedValue });
                document.dispatchEvent(syncEvent);
            });

            document.addEventListener("syncAllDropdowns", function (e) {
                if (perPageSelect.value !== e.detail) {
                    perPageSelect.value = e.detail; 
                    applyNewPerPage(e.detail);       
                }
            });
        }

        prevBtn.addEventListener("click", () => showPage(currentPage - 1));
        nextBtn.addEventListener("click", () => showPage(currentPage + 1));

        // Αρχικό φόρτωση στη σελίδα που είχε μείνει ο χρήστης
        showPage(currentPage);
    }

    // Αρχικοποίηση των πινάκων περνώντας και ένα μοναδικό Key Αποθήκευσης Σελίδας για τον καθένα
    setupPagination(".paginated-item-1", "prevBtn1", "nextBtn1", "pageInfo1", "perPage1", savedPerPage, "table1_currentPage");
    setupPagination(".paginated-item-2", "prevBtn2", "nextBtn2", "pageInfo2", "perPage2", savedPerPage, "table2_currentPage");
});
*/
document.addEventListener("DOMContentLoaded", function () {

    // Φόρτωση της αποθηκευμένης τιμής για τα στοιχεία ανά σελίδα (Default: 100)
    let savedPerPage = localStorage.getItem("globalItemsPerPage") || "100";

    // Πίνακας που θα κρατάει τις συναρτήσεις επαναφοράς σελίδας (Page 1) για κάθε λίστα
    const goToFirstPageFunctions = [];

    function setupPagination(itemSelector, prevBtnId, nextBtnId, pageInfoId, selectId, storageKeyPage) {
        const items = document.querySelectorAll(itemSelector);
        const prevBtn = document.getElementById(prevBtnId);
        const nextBtn = document.getElementById(nextBtnId);
        const pageInfo = document.getElementById(pageInfoId);
        const perPageSelect = document.getElementById(selectId);
        
        if (!items.length || !prevBtn || !nextBtn || !pageInfo) return;

        let itemsPerPage = parseInt(localStorage.getItem("globalItemsPerPage") || "100", 10);
        let totalPages = Math.ceil(items.length / itemsPerPage);
        
        let savedPage = parseInt(localStorage.getItem(storageKeyPage), 10) || 1;
        if (savedPage > totalPages) savedPage = totalPages;
        let currentPage = savedPage < 1 ? 1 : savedPage;

        function showPage(page) {
            if (page < 1) page = 1;
            if (page > totalPages) page = totalPages;
            currentPage = page;

            localStorage.setItem(storageKeyPage, currentPage);

            const start = (currentPage - 1) * itemsPerPage;
            const end = start + itemsPerPage;

            items.forEach((item, index) => {
                if (index >= start && index < end) {
                    item.style.setProperty('display', 'flex', 'important'); 
                } else {
                    item.style.setProperty('display', 'none', 'important');
                }
            });

            pageInfo.textContent = `Page ${currentPage} of ${totalPages || 1}`;
            prevBtn.disabled = currentPage === 1;
            nextBtn.disabled = currentPage === totalPages || totalPages === 0;
        }

        function applyNewPerPage(newValue) {
            itemsPerPage = parseInt(newValue, 10);
            totalPages = Math.ceil(items.length / itemsPerPage);
            
            if (currentPage > totalPages) {
                currentPage = totalPages || 1;
            }
            showPage(currentPage);
        }

        if (perPageSelect) {
            perPageSelect.value = itemsPerPage;

            perPageSelect.addEventListener("change", function () {
                const selectedValue = this.value;
                localStorage.setItem("globalItemsPerPage", selectedValue);
                applyNewPerPage(selectedValue);
                
                const syncEvent = new CustomEvent("syncAllDropdowns", { detail: selectedValue });
                document.dispatchEvent(syncEvent);
            });

            document.addEventListener("syncAllDropdowns", function (e) {
                if (perPageSelect.value !== e.detail) {
                    perPageSelect.value = e.detail; 
                    applyNewPerPage(e.detail);       
                }
            });
        }

        prevBtn.addEventListener("click", () => showPage(currentPage - 1));
        nextBtn.addEventListener("click", () => showPage(currentPage + 1));

        // Εξωτερική συνάρτηση που απλά γυρίζει τον πίνακα στην 1η σελίδα
        function resetToPageOne() {
            currentPage = 1;
            showPage(1);
        }
        goToFirstPageFunctions.push(resetToPageOne);

        showPage(currentPage);
    }

    // Αρχικοποίηση των πινάκων
    setupPagination(".paginated-item-1", "prevBtn1", "nextBtn1", "pageInfo1", "perPage1", "table1_currentPage");
    setupPagination(".paginated-item-2", "prevBtn2", "nextBtn2", "pageInfo2", "perPage2", "table2_currentPage");

    // ΕΠΙΛΟΓΗ ΟΛΩΝ ΤΩΝ ΚΟΥΜΠΙΩΝ RESET (μέσω της κλάσης τους)
    const allResetButtons = document.querySelectorAll(".resetPaginationBtn");
    const mainSelect = document.getElementById("perPage1");

    // Δίνουμε εντολή λειτουργίας σε ΚΑΘΕ κουμπί reset που θα βρεθεί στη σελίδα
    allResetButtons.forEach(function(resetBtn) {
        resetBtn.addEventListener("click", function() {
            // 1. Καθαρισμός των δεδομένων από το LocalStorage
            localStorage.removeItem("globalItemsPerPage");
            localStorage.removeItem("table1_currentPage");
            localStorage.removeItem("table2_currentPage");

            // 2. Εξαναγκασμός και των δύο πινάκων να πάνε στην Page 1
            goToFirstPageFunctions.forEach(resetPage => resetPage());

            // 3. Επαναφορά του κεντρικού dropdown στο "100" και αυτόματος συγχρονισμός
            if (mainSelect) {
                mainSelect.value = "100";
                mainSelect.dispatchEvent(new Event('change'));
            }
        });
    });

});


</script>

<div class="container">
    <div class="top-bar">
        <div class="nav-links">
            <a href="javascript:history.go(-1)">← Back</a>
            <span>|</span>
            <a href="index.php">Slakfinder Home</a>
        </div>
    </div>
</body>
</html>

