jQuery(document).ready(function($) {
    console.log('Plugin script loaded');
    
    // ========== FUNCTION TO ADD REFUND BUTTON CLASS ==========
    function addRefundButtonClass() {
        $('.refund.button').each(function() {
            var $btn = $(this);
            var btnText = $btn.text().trim();
            
            if (btnText === 'Refund' && !$btn.hasClass('wc-refund-btn')) {
                console.log('Adding wc-refund-btn class to refund button');
                $btn.addClass('wc-refund-btn');
                
                var ariaLabel = $btn.attr('aria-label');
                if (ariaLabel) {
                    var match = ariaLabel.match(/order number (\d+)/);
                    if (match) {
                        var orderId = match[1];
                        $btn.attr('data-order-id', orderId);
                        console.log('Set order ID for refund:', orderId);
                    }
                }
                
                $btn.attr('href', 'javascript:void(0);');
                $btn.css({
                    'background-color': '#ffc107',
                    'color': '#212529',
                    'border-color': '#ffc107'
                });
            }
        });
    }
    
    // ========== FUNCTION TO ADD CANCEL BUTTON CLASS ==========
    function addCancelButtonClass() {
        $('.cancel.button').each(function() {
            var $btn = $(this);
            var btnText = $btn.text().trim();
            
            if (btnText === 'Cancel' && !$btn.hasClass('wc-cancel-btn')) {
                console.log('Adding wc-cancel-btn class to cancel button');
                $btn.addClass('wc-cancel-btn');
                
                var ariaLabel = $btn.attr('aria-label');
                if (ariaLabel) {
                    var match = ariaLabel.match(/order number (\d+)/);
                    if (match) {
                        var orderId = match[1];
                        $btn.attr('data-order-id', orderId);
                        console.log('Set order ID for cancel:', orderId);
                    }
                }
                
                $btn.attr('href', 'javascript:void(0);');
                $btn.css({
                    'background-color': '#dc3545',
                    'color': '#ffffff',
                    'border-color': '#dc3545'
                });
            }
        });
    }
    
    // Run functions immediately
    addCancelButtonClass();
    addRefundButtonClass();
    
    // Run after AJAX complete
    $(document).ajaxComplete(function() {
        console.log('AJAX complete - re-adding button classes');
        addCancelButtonClass();
        addRefundButtonClass();
    });
    
    // Mutation observer for dynamic content
    var observer = new MutationObserver(function(mutations) {
        addCancelButtonClass();
        addRefundButtonClass();
    });
    observer.observe(document.body, { childList: true, subtree: true });
    
    // ========== GET ORDER ID FUNCTION ==========
    function getOrderId(button) {
        var $btn = $(button);
        
        var orderId = $btn.data('order-id');
        if (orderId) {
            console.log('Order ID from data attribute:', orderId);
            return orderId;
        }
        
        var ariaLabel = $btn.attr('aria-label');
        if (ariaLabel) {
            var match = ariaLabel.match(/order number (\d+)/);
            if (match) {
                orderId = match[1];
                console.log('Order ID from aria-label:', orderId);
                return orderId;
            }
        }
        
        var $row = $btn.closest('tr');
        var orderLink = $row.find('.woocommerce-orders-table__cell-order-number a');
        if (orderLink.length) {
            orderId = orderLink.text().replace('#', '').trim();
            if (orderId) {
                console.log('Order ID from row link:', orderId);
                return orderId;
            }
        }
        
        console.log('Could not find order ID');
        return null;
    }
    
    // ========== OPEN CANCEL MODAL ==========
    $(document).on('click', '.wc-cancel-btn', function(e) {
        e.preventDefault();
        e.stopPropagation();
        console.log('Cancel button clicked');
        
        var orderId = getOrderId(this);
        
        if (orderId) {
            $('#cancel-order-id').val(orderId);
            $('#cancel-modal').fadeIn(200);
            $('#modal-overlay').fadeIn(200);
            $('body').css('overflow', 'hidden');
            console.log('Cancel modal opened for order #' + orderId);
        } else {
            alert('Could not find order ID. Please refresh and try again.');
        }
    });
    
    // ========== OPEN REFUND MODAL ==========
    $(document).on('click', '.wc-refund-btn', function(e) {
        e.preventDefault();
        e.stopPropagation();
        console.log('Refund button clicked');
        
        var orderId = getOrderId(this);
        console.log('Order ID for refund:', orderId);
        
        if (orderId) {
            $('#refund-order-id').val(orderId);
            $('#refund-modal').fadeIn(200);
            $('#modal-overlay').fadeIn(200);
            $('body').css('overflow', 'hidden');
            console.log('Refund modal opened for order #' + orderId);
        } else {
            alert('Could not find order ID. Please refresh and try again.');
        }
    });
    
    // ========== CLOSE MODAL FUNCTION ==========
    function closeModal() {
        $('#cancel-modal, #refund-modal, #modal-overlay').fadeOut(200, function() {
            $('#cancel-reason, #refund-reason').val('');
            $('body').css('overflow', '');
        });
    }
    
    $(document).on('click', '.cancel-modal-close, .refund-modal-close, .cancel-modal-close-btn, .refund-modal-close-btn', function(e) {
        e.preventDefault();
        closeModal();
    });
    
    $(document).on('click', '#modal-overlay', function(e) {
        e.preventDefault();
        closeModal();
    });
    
    $(document).on('keydown', function(e) {
        if (e.key === 'Escape') {
            closeModal();
        }
    });
    
    // ========== SUBMIT CANCEL REQUEST ==========
    $(document).on('submit', '#cancel-form', function(e) {
        e.preventDefault();
        console.log('Cancel form submitted');
        
        var orderId = $('#cancel-order-id').val();
        var reason = $('#cancel-reason').val().trim();
        var submitBtn = $(this).find('.submit-cancel-btn');
        
        if (!orderId) {
            alert('Order ID not found. Please refresh the page.');
            return;
        }
        
        if (reason === '') {
            alert('Please provide a reason for cancellation.');
            return;
        }
        
        submitBtn.prop('disabled', true).text('Submitting...');
        
        $.ajax({
            url: wc_cr_ajax.ajaxurl,
            type: 'POST',
            data: {
                action: 'submit_cancel_request',
                order_id: orderId,
                reason: reason,
                nonce: wc_cr_ajax.cancel_nonce
            },
            success: function(response) {
                console.log('Cancel response:', response);
                if (response.success) {
                    alert(wc_cr_ajax.strings.cancelSuccess);
                    closeModal();
                    location.reload();
                } else {
                    alert(response.data.message);
                    submitBtn.prop('disabled', false).text('Submit Cancel Request');
                }
            },
            error: function() {
                alert(wc_cr_ajax.strings.error);
                submitBtn.prop('disabled', false).text('Submit Cancel Request');
            }
        });
    });
    
    // ========== SUBMIT REFUND REQUEST ==========
    $(document).on('submit', '#refund-form', function(e) {
        e.preventDefault();
        console.log('Refund form submitted');
        
        var orderId = $('#refund-order-id').val();
        var reason = $('#refund-reason').val().trim();
        var submitBtn = $(this).find('.submit-refund-btn');
        
        if (!orderId) {
            alert('Order ID not found. Please refresh the page.');
            return;
        }
        
        if (reason === '') {
            alert('Please provide a reason for refund.');
            return;
        }
        
        submitBtn.prop('disabled', true).text('Submitting...');
        
        $.ajax({
            url: wc_cr_ajax.ajaxurl,
            type: 'POST',
            data: {
                action: 'submit_refund_request',
                order_id: orderId,
                reason: reason,
                nonce: wc_cr_ajax.refund_nonce
            },
            success: function(response) {
                console.log('Refund response:', response);
                if (response.success) {
                    alert(wc_cr_ajax.strings.refundSuccess);
                    closeModal();
                    location.reload();
                } else {
                    alert(response.data.message);
                    submitBtn.prop('disabled', false).text('Submit Refund Request');
                }
            },
            error: function() {
                alert(wc_cr_ajax.strings.error);
                submitBtn.prop('disabled', false).text('Submit Refund Request');
            }
        });
    });
    
    console.log('Plugin initialization complete');
    console.log('Cancel buttons found:', $('.wc-cancel-btn').length);
    console.log('Refund buttons found:', $('.wc-refund-btn').length);
});