// Classification Picker JavaScript
(function() {
    'use strict';
    
    let isInitializing = true;
    const classifications = ['Additional Order', 'New request', 'Service contract', 'Warranty'];
    const selectionState = {};

    function initializeClassificationPicker() {
        // Initialize all classifications as selected by default
        classifications.forEach(classification => {
            selectionState[classification] = true;
        });

        renderClassifications();
        setupToggle();
        
        isInitializing = false;
    }

    function setupToggle() {
        $('#classification-toggle').on('click', function() {
            const arrow = $(this).find('.picker-arrow');
            const content = $('#classification-content');
            
            arrow.toggleClass('collapsed');
            content.toggleClass('collapsed');
        });
    }

    function renderClassifications() {
        const container = $('#classification-content');
        container.empty();

        classifications.forEach(classification => {
            const item = createClassificationItem(classification);
            container.append(item);
        });
    }

    function createClassificationItem(classification) {
        const itemDiv = $('<div>').addClass('classification-item');
        
        const checkbox = $('<input>')
            .attr('type', 'checkbox')
            .addClass('classification-checkbox')
            .attr('data-classification', classification)
            .prop('checked', selectionState[classification])
            .on('change', function() {
                onClassificationCheckboxChange(classification, $(this).is(':checked'));
            });
        
        const label = $('<span>')
            .addClass('classification-label')
            .text(classification)
            .on('click', function(e) {
                e.stopPropagation();
                checkbox.prop('checked', !checkbox.is(':checked')).trigger('change');
            });
        
        itemDiv.append(checkbox, label);
        return itemDiv;
    }

    function onClassificationCheckboxChange(classification, checked) {
        selectionState[classification] = checked;
        logSelection();
    }

    function logSelection() {
        const selected = getSelectedClassifications();
        
        // Only trigger updates if not initializing
        if (!isInitializing) {
            // Trigger custom event
            $(document).trigger('classificationSelectionChanged', [selected]);
            
            // Trigger worklog table update if visible
            if ($('#content .worklog-data-content').length > 0) {
                // Small delay to ensure the event is processed
                setTimeout(function() {
                    if (typeof openWorklogTable === 'function') {
                        openWorklogTable();
                    }
                }, 100);
            }
        }
    }

    function getSelectedClassifications() {
        const result = [];
        
        Object.keys(selectionState).forEach(classification => {
            if (selectionState[classification]) {
                result.push(classification);
            }
        });
        
        return result;
    }

    // Initialize on document ready
    $(document).ready(function() {
        initializeClassificationPicker();
    });

    // Public API
    window.ClassificationPicker = {
        getSelection: function() {
            return getSelectedClassifications();
        },
        
        clearAll: function() {
            Object.keys(selectionState).forEach(classification => {
                selectionState[classification] = false;
            });
            
            $('.classification-checkbox').prop('checked', false);
        },
        
        selectClassification: function(classification) {
            if (selectionState[classification] !== undefined) {
                const checkbox = $(`.classification-checkbox[data-classification="${classification}"]`);
                checkbox.prop('checked', true).trigger('change');
            }
        },
        
        deselectClassification: function(classification) {
            if (selectionState[classification] !== undefined) {
                const checkbox = $(`.classification-checkbox[data-classification="${classification}"]`);
                checkbox.prop('checked', false).trigger('change');
            }
        },
        
        selectAll: function() {
            classifications.forEach(classification => {
                selectionState[classification] = true;
                $(`.classification-checkbox[data-classification="${classification}"]`).prop('checked', true);
            });
            logSelection();
        }
    };

})();
