const recipeId = document.getElementById('recipe-id').textContent;
const toggleBtn = document.getElementById('day-select');
const dropdown = document.getElementById('custom-select-dropdown');

toggleBtn.addEventListener('click', () => {
    dropdown.classList.toggle('hidden');
});

document.addEventListener('click', (e) => {
    if (!dropdown.contains(e.target) && !toggleBtn.contains(e.target)) {
        dropdown.classList.add('hidden');
    }
});



const options = document.querySelectorAll('.dropdown-item');
const inUsermenu = document.getElementById('in-usermenu').textContent;

if (inUsermenu) {
    options.forEach(option => {
        if (option.getAttribute('data-value') === inUsermenu && option.getAttribute('data-value') !== 'remove') {
            option.classList.add('dropdown-selected');
            toggleBtn.textContent = option.textContent;
        }
    });
}
options.forEach(option => {
    option.addEventListener('click', async (e) => {
        const selectedValue = option.getAttribute('data-value');

        options.forEach(opt => opt.classList.remove('dropdown-selected'));

        const formData = new FormData();
        formData.append('action', 'usermenu');
        formData.append('recipe_id', recipeId);
        formData.append('dayofweek', selectedValue);

        const response = await fetch('/ajax', {
            method: 'POST',
            body: formData
        });

        const json = await response.json();

        if (!response.ok) {
            const message = json.error;
            showToastify(message, 'error');
            return;
        }


        if (selectedValue === 'remove') {
            toggleBtn.textContent = 'Add to list';
        } else {
            toggleBtn.textContent = option.textContent;
            option.classList.add('dropdown-selected');
        }

        dropdown.classList.add('hidden');

        showToastify(json.success, 'success');
    });
});

const qrContainer = document.getElementById("qrcode");
const downloadLink = document.getElementById("downloadLink");
const qrBtn = document.getElementById("qr-btn");
const qrPopup = document.querySelector(".qr-popup");
const overlay = document.getElementById('overlay');

qrBtn.addEventListener("click", () => {

    qrPopup.classList.toggle("hidden")
    overlay.classList.toggle("hidden")

    qrContainer.innerHTML = "";


    new QRCode(qrContainer, {
        text: window.location.href,
        width: 200,
        height: 200
    });


    setTimeout(() => {
        const qrImg = qrContainer.querySelector("img");
        if (qrImg) {
            downloadLink.href = qrImg.src;
        }
    }, 500);
});

document.addEventListener('click', (e) => {
    if (!qrPopup.contains(e.target) && !qrBtn.contains(e.target)) {
        qrPopup.classList.add("hidden");
        overlay.classList.add("hidden");
    }
});

const favoriteBtn = document.getElementById('favorite-btn');
const favoriteIcon = favoriteBtn.querySelector('i');


favoriteBtn.addEventListener('click', async (e) => {
    const isFavorite = favoriteBtn.classList.contains('active');
    const type = isFavorite ? 'remove' : 'add';

    const formData = new FormData();
    formData.append('action', 'favorites');
    formData.append('recipe_id', recipeId);
    formData.append('type', type);

    favoriteBtn.disabled = true;
    const response = await fetch('/ajax', {
        method: 'POST',
        body: formData
    });
    favoriteBtn.disabled = false;

    const json = await response.json();

    if (!response.ok) {
        const message = json.error;
        showToastify(message, 'error');
        return;
    }
    favoriteBtn.classList.toggle('active');

    if (type == 'add') {
        favoriteIcon.classList.remove('fa-regular');
        favoriteIcon.classList.add('fa-solid');
    } else {
        favoriteIcon.classList.add('fa-regular');
        favoriteIcon.classList.remove('fa-solid');
    }

    showToastify(json.success, 'success');
});