//---------------------DYNAMIC DROPDOWN WHILE SELECTING CONDITION-------------------//
function toggleSecondDropdown(selectElement) {
    const secondDropdown = document.getElementById('second-dropdown');

    // Show the second dropdown when SSID or MAC address is selected
    if (selectElement.value === '1' || selectElement.value === '2') {
        secondDropdown.style.display = 'block';
    } else {
        secondDropdown.style.display = 'none';
        // Hide the value input if second dropdown is hidden
        document.getElementById('value-input-group').style.display = 'none';
    }
}

function showInputField(selectElement) {
    const valueInputGroup = document.getElementById('value-input-group');

    // Show the input field when any valid option is selected from the second dropdown
    if (selectElement.value !== '#' && selectElement.value !== "") {
        valueInputGroup.style.display = 'block';
    } else {
        valueInputGroup.style.display = 'none';
    }
}

//--------- CONDITIONAL DROPDOWN ACTION INPUT--------------//
function handleActionChange(selectElement) {
    const roleDropdown = document.getElementById('role-dropdown');
    const accessDurationDropdown = document.getElementById('access-duration-dropdown');
    const unregistrationDateInput = document.getElementById('unregistration-date');

    // Hide all additional elements initially
    roleDropdown.style.display = 'none';
    accessDurationDropdown.style.display = 'none';
    unregistrationDateInput.style.display = 'none';

    // Show the relevant element based on the selected value
    switch (selectElement.value) {
        case 'A':
            roleDropdown.style.display = 'block';
            break;
        case 'B':
            accessDurationDropdown.style.display = 'block';
            break;
        case 'C':
            unregistrationDateInput.style.display = 'block';
            break;
        default:
            // Optionally handle cases where the default or empty value is selected
            break;
    }
}

//---------------ADD AND REMOVE SECTION BASED ON ACTION DROPDOWN--------------------//

// Add event listeners to dynamically add/remove sections
document.addEventListener("DOMContentLoaded", function () {
    // Initialize event listeners on the first set of add/remove images
    initializeSectionControls();
});

// Function to initialize the add/remove event listeners on a section
function initializeSectionControls() {
    // Remove existing event listeners before adding new ones
    document.querySelectorAll(".dropdown1-container .add").forEach((button) => {
        button.replaceWith(button.cloneNode(true));
    });

    document.querySelectorAll(".dropdown1-container .remove").forEach((button) => {
        button.replaceWith(button.cloneNode(true));
    });

    document.querySelectorAll(".dropdown2-container .add").forEach((button) => {
        button.replaceWith(button.cloneNode(true));
    });

    document.querySelectorAll(".dropdown2-container .remove").forEach((button) => {
        button.replaceWith(button.cloneNode(true));
    });

    // Add section for dropdown1-container
    document.querySelectorAll(".dropdown1-container .add").forEach((button) => {
        button.addEventListener("click", function () {
            addSection("dropdown1-container");
        });
    });

    // Remove section for dropdown1-container
    document.querySelectorAll(".dropdown1-container .remove").forEach((button) => {
        button.addEventListener("click", function () {
            removeSection("dropdown1-container");
        });
    });

    // Add section for dropdown2-container
    document.querySelectorAll(".dropdown2-container .add").forEach((button) => {
        button.addEventListener("click", function () {
            addSection("dropdown2-container");
        });
    });

    // Remove section for dropdown2-container
    document.querySelectorAll(".dropdown2-container .remove").forEach((button) => {
        button.addEventListener("click", function () {
            removeSection("dropdown2-container");
        });
    });

    // Initialize dropdown event listeners (for dynamic fields)
    initializeDropdownEventListeners();
}

// Function to initialize dropdown-related event listeners
function initializeDropdownEventListeners() {
    document.querySelectorAll(".dropdown1-container select[name='dropdown1']").forEach((dropdown) => {
        dropdown.addEventListener("change", function () {
            toggleSecondDropdown(this);
        });
    });

    document.querySelectorAll(".dropdown1-container select[name='dropdown3']").forEach((dropdown) => {
        dropdown.addEventListener("change", function () {
            showInputField(this);
        });
    });

    document.querySelectorAll(".dropdown2-container select[name='dropdown2']").forEach((dropdown) => {
        dropdown.addEventListener("change", function () {
            handleActionChange(this);
        });
    });
}

// Function to add a section
function addSection(containerClass) {
    // Get the container
    const container = document.querySelector(`.${containerClass}`);

    // Clone the first section of the container
    const newSection = container.cloneNode(true);

    // Reset values of the cloned inputs if necessary
    const inputs = newSection.querySelectorAll("input, select");
    inputs.forEach((input) => (input.value = ""));

    // Append the cloned section to the parent
    container.parentNode.appendChild(newSection);

    // Reinitialize event listeners for the new section
    initializeSectionControls();
}

// Function to remove a section
function removeSection(containerClass) {
    // Get all sections of the specific container
    const sections = document.querySelectorAll(`.${containerClass}`);

    // Only remove if there is more than one section
    if (sections.length > 1) {
        sections[sections.length - 1].remove();
    }
}

// Function to handle dynamic behavior for dropdown1-container (Condition)
function toggleSecondDropdown(dropdown) {
    const secondDropdown = dropdown.closest(".dropdown1-container").querySelector("#second-dropdown");
    if (dropdown.value === "1" || dropdown.value === "2") {
        secondDropdown.style.display = "block";
    } else {
        secondDropdown.style.display = "none";
    }
}

// Function to show the input field when an option is selected from the second dropdown
function showInputField(dropdown) {
    const valueInputGroup = dropdown.closest(".dropdown1-container").querySelector("#value-input-group");
    if (dropdown.value !== "#") {
        valueInputGroup.style.display = "block";
    } else {
        valueInputGroup.style.display = "none";
    }
}

// Function to handle dynamic behavior for dropdown2-container (Action)
function handleActionChange(dropdown) {
    const roleDropdown = dropdown.closest(".dropdown2-container").querySelector("#role-dropdown");
    const accessDurationDropdown = dropdown.closest(".dropdown2-container").querySelector("#access-duration-dropdown");
    const unregistrationDate = dropdown.closest(".dropdown2-container").querySelector("#unregistration-date");

    // Reset visibility of all associated fields
    roleDropdown.style.display = "none";
    accessDurationDropdown.style.display = "none";
    unregistrationDate.style.display = "none";

    if (dropdown.value === "A") {
        roleDropdown.style.display = "block";
    } else if (dropdown.value === "B") {
        accessDurationDropdown.style.display = "block";
    } else if (dropdown.value === "C") {
        unregistrationDate.style.display = "block";
    }
}
