// Make items draggable
const itemsPool = document.getElementById("items-pool");
const rankingArea = document.getElementById("ranking-area");
const ranksPool = document.getElementById("ranks");
const addItemBtn = document.getElementById("add-item-btn");
const addRankBtn = document.getElementById("add-rank-btn");
// Enable drag-and-drop between the pool and ranking area
const sortablePool = new Sortable(itemsPool, {
    group: {
        name: "shared", // Group name must match between lists
        pull: true,     // Allow items to be dragged out
        put: true,      // Allow items to be dropped in
    },
    animation: 150,
});

const sortableRanking = new Sortable(rankingArea, {
    group: {
        name: "shared", // Same group name as itemsPool
        pull: true,     // Allow items to be dragged out
        put: true,      // Allow items to be dropped in
    },
    animation: 150,
});

// Add new item functionality
addItemBtn.addEventListener("click", () => {
    const newItemText = prompt("Enter new item name:");
    if (newItemText) {
        const li = document.createElement("li");
        li.className = "list-group-item";
        li.textContent = newItemText;
        li.draggable = true;
        itemsPool.appendChild(li);
    }
});

// Add new item functionality
addRankBtn.addEventListener("click", () => {
    const newItemText = prompt("Enter new rank name:");
    if (newItemText) {
        const li = document.createElement("li");
        li.className = "mb-2";
        label = document.createElement('label');
        label.innerHTML = newItemText;
        input = document.createElement('input');
        input.setAttribute("type", "number");
        input.setAttribute("class", "form-control");
        input.setAttribute("placeholder", "Enter last rank for " + newItemText);
        li.appendChild(label)
        li.appendChild(input);
        //li.draggable = true;
        ranksPool.appendChild(li);
    }
});

// Save rankings and tier ranges
document.getElementById("save-btn").addEventListener("click", () => {
    // Get ranked items
    const rankedItems = Array.from(rankingArea.children).map((item) => item.textContent.trim());
    const ranks = Array.from(ranksPool.children).map((item) => parseInt(item.lastElementChild.value || "0"));
    Array.from(ranks).forEach((item, index) => {
        console.log([item, index])
        
    });
    const sTierEnd = parseInt(document.getElementById("s-tier-end").value || "0");
    const aTierEnd = parseInt(document.getElementById("a-tier-end").value || "0");

    // Tier categories
    const tiers = {
        "S-Tier": rankedItems.slice(0, sTierEnd),
        "A-Tier": rankedItems.slice(sTierEnd, aTierEnd),
        "Other": rankedItems.slice(aTierEnd),
    };

    // Apply colors to items based on tiers
    Array.from(rankingArea.children).forEach((item, index) => {
        item.classList.remove("s-tier", "a-tier", "other-tier"); // Remove existing classes
        if (index < sTierEnd) {
            item.classList.add("s-tier");
        } else if (index < aTierEnd) {
            item.classList.add("a-tier");
        } else {
            item.classList.add("other-tier");
        }
    });

    // Disable dragging
    sortableRanking.option("disabled", true); // Disable drag-and-drop for ranking area
    sortablePool.option("disabled", true);   // Optionally disable pool area too

    // Send rankings to the server
    fetch("/save-rankings", {
        method: "POST",
        headers: {
            "Content-Type": "application/json",
        },
        body: JSON.stringify({ rankedItems, tiers }),
    })
        .then((response) => response.json())
        .catch((error) => console.error("Error:", error));
});
