/* js/buchungsoptionen.js */
(function ($) {
    'use strict';

    var $modal = $('#buchungsoption-modal');

    function openModal(data) {
        if (data && data.id) {
            $('#buchungsoption-modal-title').text(simpbookBuchungsoptionen.i18n.bearbeiten || 'Option bearbeiten');
            $('#buchungsoption-edit-id').val(data.id);
            $('#buchungsoption-name').val(data.name);
            $('#buchungsoption-dauer').val(data.dauer_minuten);
            $('#buchungsoption-sortierung').val(data.sortierung || 0);
            $('#buchungsoption-delete-section').show();
        } else {
            $('#buchungsoption-modal-title').text(simpbookBuchungsoptionen.i18n.neueoption || 'Neue Option');
            $('#buchungsoption-edit-id').val('');
            $('#buchungsoption-name').val('');
            $('#buchungsoption-dauer').val(60);
            $('#buchungsoption-sortierung').val(0);
            $('#buchungsoption-delete-section').hide();
        }
        $modal.fadeIn(150);
        setTimeout(function () { $('#buchungsoption-name').trigger('focus'); }, 200);
    }

    function closeModal() {
        $modal.fadeOut(150);
    }

    // Open modal for new option
    $(document).on('click', '#add-new-buchungsoption-btn', function () {
        openModal(null);
    });

    // Open modal by clicking a row
    $(document).on('click', '.buchungsoption-row-clickable', function (e) {
        if ($(e.target).closest('.buchungsoption-delete-btn').length) return;
        var raw = $(this).data('buchungsoption-data');
        var data = typeof raw === 'string' ? JSON.parse(raw) : raw;
        openModal(data);
    });

    // Close modal
    $(document).on('click', '.reservierung-modal-close, .reservierung-modal-overlay', function () {
        closeModal();
    });

    $(document).on('keydown', function (e) {
        if (e.key === 'Escape') closeModal();
    });

    // Delete via AJAX from inside modal
    $(document).on('click', '#buchungsoption-delete-confirm-btn', function () {
        if (!confirm(simpbookBuchungsoptionen.i18n.loeschenBestaetigen || 'Buchungsoption wirklich löschen? Alle Preise in Dienstleistungen werden ebenfalls entfernt.')) return;

        var id = $('#buchungsoption-edit-id').val();
        $.ajax({
            url: simpbookBuchungsoptionen.ajaxurl,
            type: 'POST',
            data: {
                action: 'simpbook_delete_buchungsoption',
                buchungsoption_id: id,
                nonce: simpbookBuchungsoptionen.deleteNonce
            },
            success: function (response) {
                if (response.success) {
                    window.location.href = simpbookBuchungsoptionen.pageUrl + '&simpbook_nachricht=geloescht';
                } else {
                    alert(simpbookBuchungsoptionen.i18n.fehler || 'Fehler beim Löschen.');
                }
            }
        });
    });

    // Delete via trash button in table row
    $(document).on('click', '.buchungsoption-delete-btn', function (e) {
        e.stopPropagation();
        if (!confirm(simpbookBuchungsoptionen.i18n.loeschenBestaetigen || 'Buchungsoption wirklich löschen? Alle Preise in Dienstleistungen werden ebenfalls entfernt.')) return;

        var id     = $(this).data('id');
        var nonce  = $(this).data('nonce');
        var $btn   = $(this);
        $btn.prop('disabled', true);

        $.ajax({
            url: simpbookBuchungsoptionen.ajaxurl,
            type: 'POST',
            data: {
                action: 'simpbook_delete_buchungsoption',
                buchungsoption_id: id,
                nonce: nonce
            },
            success: function (response) {
                if (response.success) {
                    window.location.href = simpbookBuchungsoptionen.pageUrl + '&simpbook_nachricht=geloescht';
                } else {
                    alert(simpbookBuchungsoptionen.i18n.fehler || 'Fehler beim Löschen.');
                    $btn.prop('disabled', false);
                }
            },
            error: function () {
                alert(simpbookBuchungsoptionen.i18n.fehler || 'Fehler beim Löschen.');
                $btn.prop('disabled', false);
            }
        });
    });

}(jQuery));
