// Ticket Date Filter JavaScript
(function() {
    'use strict';

    let isInitializing = true;
    const options = [
        { value: 'created', label: 'Created within period' },
        { value: 'resolved', label: 'Resolved within period' }
    ];
    const selectionState = {};

    function initializeTicketDateFilter() {
        // Default OFF: no selections
        options.forEach(option => {
            selectionState[option.value] = false;
        });

        renderOptions();
        setupToggle();

        isInitializing = false;
    }

    function setupToggle() {
        $('#ticket-date-filter-toggle').on('click', function() {
            const arrow = $(this).find('.picker-arrow');
            const content = $('#ticket-date-filter-content');

            arrow.toggleClass('collapsed');
            content.toggleClass('collapsed');
        });
    }

    function renderOptions() {
        const container = $('#ticket-date-filter-content');
        container.empty();

        options.forEach(option => {
            const itemDiv = $('<div>').addClass('classification-item');

            const checkbox = $('<input>')
                .attr('type', 'checkbox')
                .addClass('classification-checkbox')
                .attr('data-ticket-date-filter', option.value)
                .prop('checked', selectionState[option.value])
                .on('change', function() {
                    onOptionChange(option.value, $(this).is(':checked'));
                });

            const label = $('<span>')
                .addClass('classification-label')
                .text(option.label)
                .on('click', function(e) {
                    e.stopPropagation();
                    checkbox.prop('checked', !checkbox.is(':checked')).trigger('change');
                });

            itemDiv.append(checkbox, label);
            container.append(itemDiv);
        });

        const hint = $('<small>')
            .css({ display: 'block', marginTop: '5px', color: '#666', fontSize: '12px' })
            .text('Select one or both. Leave unchecked to disable this filter.');

        container.append(hint);
    }

    function onOptionChange(value, checked) {
        selectionState[value] = checked;
        logSelection();
    }

    function logSelection() {
        const selected = getSelectedOptions();

        if (!isInitializing) {
            $(document).trigger('ticketDateFilterSelectionChanged', [selected]);

            if ($('#content .ticket-data-content').length > 0) {
                setTimeout(function() {
                    if (typeof openTicketTable === 'function') {
                        openTicketTable();
                    }
                }, 100);
            }
        }
    }

    function getSelectedOptions() {
        const result = [];
        Object.keys(selectionState).forEach(value => {
            if (selectionState[value]) {
                result.push(value);
            }
        });
        return result;
    }

    // Initialize on document ready
    $(document).ready(function() {
        initializeTicketDateFilter();
    });

    // Public API
    window.TicketDateFilter = {
        getSelection: function() {
            return getSelectedOptions();
        },
        clearAll: function() {
            Object.keys(selectionState).forEach(value => {
                selectionState[value] = false;
            });
            $('.classification-checkbox[data-ticket-date-filter]').prop('checked', false);
            logSelection();
        }
    };
})();
