// sorting.js
document.addEventListener("DOMContentLoaded", function() {
    const getCellValue = (tr, idx) => tr.children[idx].innerText || tr.children[idx].textContent;

    const comparer = (idx, asc, isMixed) => (a, b) => {
        let v1 = getCellValue(asc ? a : b, idx);
        let v2 = getCellValue(asc ? b : a, idx);

        // Handle empty values
        if (v1 === '') v1 = '0';  // Treat empty values as '0' or some comparable default
        if (v2 === '') v2 = '0';

        if (isMixed) {
            const num1 = parseFloat(v1);
            const num2 = parseFloat(v2);
            
            // Check if both values are numbers
            if (!isNaN(num1) && !isNaN(num2)) {
                v1 = num1;
                v2 = num2;
            }
        }

        return v1.toString().localeCompare(v2.toString(), undefined, { numeric: true });
    };

    document.querySelectorAll('th.sortable img.sort').forEach(img => img.addEventListener('click', function() {
        const th = this.closest('th'); // Find the closest th element
        const table = th.closest('table');
        const isMixed = th.dataset.column === 'pid'; // Check if sorting a mixed column like PID
        const rows = Array.from(table.querySelectorAll('tbody tr')); // Get all rows including those in other pages
        
        rows
            .sort(comparer(Array.from(th.parentNode.children).indexOf(th), th.dataset.order === 'asc', isMixed))
            .forEach(tr => table.querySelector('tbody').appendChild(tr));
        th.dataset.order = th.dataset.order === 'asc' ? 'desc' : 'asc';
    }));

    // Default sorting (ascending)
    document.querySelectorAll('th.sortable').forEach(th => {
        th.dataset.order = 'asc'; // Ensure default order is ascending
        const img = th.querySelector('img.sort');
        if (th.dataset.column === 'pid') { // If you want PID to be the default sorted column
            img.click(); // Trigger sort on the desired column
        }
    });
});



// userlist.js
document.addEventListener('DOMContentLoaded', function() {
    const table = document.getElementById('user_table');
    const form = document.getElementById('pid_form');
    const pidInput = document.getElementById('pid_input');
    const popup = document.getElementById("popup");
    const popupMessage = document.getElementById("popup-message");
    const confirmButton = document.getElementById("confirm-button");
    const cancelButton = document.getElementById("cancel-button");
    const searchBtn = document.getElementById("search_btn");
    const clearButton = document.getElementById("clear_btn");
    const searchInput = document.getElementById("search");
    let currentPid = null;

    table.addEventListener('click', function(event) {
        const target = event.target;
        if (target.classList.contains('btn_delete')) {
            // Handle delete button click
            currentPid = target.getAttribute('data-pid');
            if (currentPid) {
                popupMessage.textContent = "Do you really want to delete the user: " + currentPid + "?";
                popup.style.display = "block";
            }
            event.stopPropagation();
        } 
        else if (target.classList.contains('btn_modify')) {
            // Handle modify button click
            const pid = target.getAttribute('data-pid');
            if (pid) {
                pidInput.value = pid;
                form.action = '../user/user_edit.php';
                form.submit();
            }
        } 

    });

    confirmButton.addEventListener('click', function() {
        const deleteForm = document.createElement('form');
        deleteForm.action = '../user/user_delete.php';
        deleteForm.method = 'POST';

        const pidInputField = document.createElement('input');
        pidInputField.type = 'hidden';
        pidInputField.name = 'pid';
        pidInputField.value = currentPid;
        deleteForm.appendChild(pidInputField);

        document.body.appendChild(deleteForm);
        deleteForm.submit();
        popup.style.display = "none";
    });

    cancelButton.addEventListener('click', function() {
        popup.style.display = "none";
    });

    // Close popup when clicking outside of it
    window.addEventListener('click', function(event) {
        if (event.target == popup) {
            popup.style.display = "none";
        }
    });

    // Clear search input
    clearButton.addEventListener('click', function(event) {
        event.preventDefault();
        searchInput.value = '';
    });
});
