/**
 * Ordenación por arrastre en la lista de reseñas (admin Etchenet Reviews).
 * Depende de jquery-ui-sortable para garantizar que el arrastre funcione.
 */
(function ($) {
    'use strict';

    function initSortable() {
        var tbody = $('#etn-egr-reviews-tbody');
        if (!tbody.length || !tbody.find('tr[data-etn-egr-key]').length) {
            return;
        }
        if (tbody.hasClass('ui-sortable')) {
            tbody.sortable('destroy');
        }
        tbody.sortable({
            items: 'tr[data-etn-egr-key]',
            handle: '.etn-egr-drag-handle',
            placeholder: 'etn-egr-sortable-placeholder',
            axis: 'y',
            forcePlaceholderSize: true,
            tolerance: 'pointer',
            cursor: 'move',
            opacity: 0.8,
            start: function (e, ui) {
                ui.placeholder.children().each(function (i) {
                    $(this).width(ui.item.children().eq(i).width());
                });
            }
        });
    }

    $(function () {
        initSortable();

        $(document).on('click', '#etn-egr-save-order-btn', function () {
            var btn = $(this);
            var order = $('#etn-egr-reviews-tbody tr[data-etn-egr-key]').map(function () {
                return $(this).attr('data-etn-egr-key');
            }).get();
            if (order.length === 0) {
                $('#etn-egr-save-order-msg').text('').css('color', '');
                return;
            }
            btn.prop('disabled', true);
            $('#etn-egr-save-order-msg').text('Saving...').css('color', '#666');
            $.post(ajaxurl, {
                action: 'etn_egr_save_reviews_order',
                nonce: etnEgrAdmin.nonce,
                order: order
            }).done(function (res) {
                if (res.success) {
                    $('select[name="etn_egr_style_options[reviews_order]"]').val('manual');
                    $('#etn-egr-save-order-msg').text((typeof etnEgrAdmin !== 'undefined' && etnEgrAdmin.saveOrderSuccess) ? etnEgrAdmin.saveOrderSuccess : 'Order saved. It applies to the carousel and side panel.').css('color', '#00a32a');
                } else {
                    $('#etn-egr-save-order-msg').text(res.data || (typeof etnEgrAdmin !== 'undefined' && etnEgrAdmin.saveOrderError) || 'Error').css('color', '#d63638');
                }
            }).fail(function () {
                $('#etn-egr-save-order-msg').text((typeof etnEgrAdmin !== 'undefined' && etnEgrAdmin.saveOrderConn) ? etnEgrAdmin.saveOrderConn : 'Connection error.').css('color', '#d63638');
            }).always(function () {
                btn.prop('disabled', false);
            });
        });
    });
})(jQuery);
