// Organization Picker - Single Selection (for admin only)
(function() {
    'use strict';
    
    let organizationList = [];
    
    let dropdownInitialized = false;
    let dropdownElement = null;
    let isOpen = false;

    function setupToggle() {
        $('#organization-toggle').on('click', function(e) {
            e.preventDefault();
            toggleDropdown();
        });
    }
    
    function renderOrganizations(organizations) {
        organizationList = organizations || [];
        if (!dropdownInitialized) {
            initDropdown();
        }
        fillDropdown();
    }
    
    function createOrganizationItem(org) {
        return $('<div>')
            .addClass('organization-item')
            .text(org)
            .on('click', function() {
                closeDropdown();
                selectOrganization(org);
            });
    }
    
    function selectOrganization(org) {
        if (window.SimpleAuth && SimpleAuth.isAdmin()) {
            SimpleAuth.changeOrganization(org);
        }
    }
    
    function initDropdown() {
        dropdownInitialized = true;
        dropdownElement = $(
            '<div id="organization-dropdown" class="organization-dropdown hidden">' +
                '<div class="organization-dropdown-list" id="organization-dropdown-list"></div>' +
            '</div>'
        );

        $('body').append(dropdownElement);

        // Close when clicking outside
        $(document).on('click', function(e) {
            if (!isOpen) return;
            const target = $(e.target);
            if (!target.closest('#organization-dropdown').length && !target.closest('#organization-toggle').length) {
                closeDropdown();
            }
        });
        // Close on ESC
        $(document).on('keyup', function(e) {
            if (e.key === 'Escape' && isOpen) {
                closeDropdown();
            }
        });
        // Reposition on resize/scroll
        $(window).on('resize scroll', function() {
            if (isOpen) positionDropdown();
        });
    }

    function fillDropdown() {
        const listContainer = $('#organization-dropdown-list');
        if (!listContainer.length) return;
        listContainer.empty();

        if (!organizationList || organizationList.length === 0) {
            listContainer.append($('<div>').addClass('organization-item').text('No organizations found'));
            return;
        }

        organizationList.forEach(org => {
            listContainer.append(createOrganizationItem(org));
        });
    }

    function positionDropdown() {
        const toggle = $('#organization-toggle');
        if (!toggle.length || !dropdownElement) return;
        const offset = toggle.offset();
        const width = toggle.outerWidth();
        const height = toggle.outerHeight();
        dropdownElement.css({
            top: offset.top + height,
            left: offset.left,
            width: width
        });
    }

    function openDropdown() {
        if (!dropdownInitialized) {
            initDropdown();
        }
        fillDropdown();
        positionDropdown();
        dropdownElement.removeClass('hidden').addClass('visible');
        isOpen = true;
    }

    function closeDropdown() {
        if (!dropdownElement) return;
        dropdownElement.removeClass('visible').addClass('hidden');
        isOpen = false;
    }

    function toggleDropdown() {
        if (isOpen) {
            closeDropdown();
        } else {
            openDropdown();
        }
    }

    // Public API
    window.OrganizationPicker = {
        render: renderOrganizations,
        init: setupToggle
    };

    // Setup toggle when document is ready
    $(function() {
        setupToggle();
    });
    
})();
