jQuery(document).ready(function($) {
    'use strict';
    
    // ==========================================
    // MOBILE MENU TOGGLE
    // ==========================================
    $('.mobile-menu-toggle').on('click', function() {
        $(this).toggleClass('active');
        $('.nav-menu').toggleClass('active');
        $('body').toggleClass('menu-open');
    });
    
    // Cerrar menú al hacer click en un enlace
    $('.nav-list a').on('click', function() {
        $('.mobile-menu-toggle').removeClass('active');
        $('.nav-menu').removeClass('active');
        $('body').removeClass('menu-open');
    });
    
    // Cerrar menú al hacer click fuera
    $(document).on('click', function(e) {
        if (!$(e.target).closest('.nav-menu, .mobile-menu-toggle').length) {
            $('.mobile-menu-toggle').removeClass('active');
            $('.nav-menu').removeClass('active');
            $('body').removeClass('menu-open');
        }
    });
    
    // ==========================================
    // STICKY HEADER
    // ==========================================
    $(window).on('scroll', function() {
        var scroll = $(window).scrollTop();
        
        if (scroll >= 100) {
            $('.main-nav').addClass('scrolled');
        } else {
            $('.main-nav').removeClass('scrolled');
        }
    });
    
    // ==========================================
    // SCROLL TO TOP BUTTON
    // ==========================================
    var scrollTopBtn = $('.scroll-top');
    
    $(window).on('scroll', function() {
        if ($(this).scrollTop() > 300) {
            scrollTopBtn.addClass('visible');
        } else {
            scrollTopBtn.removeClass('visible');
        }
    });
    
    scrollTopBtn.on('click', function(e) {
        e.preventDefault();
        $('html, body').animate({scrollTop: 0}, 800);
    });
    
    // ==========================================
    // SMOOTH SCROLL FOR ANCHOR LINKS
    // ==========================================
    $('a[href^="#"]').on('click', function(e) {
        var target = $(this.hash);
        if (target.length) {
            e.preventDefault();
            $('html, body').animate({
                scrollTop: target.offset().top - 80
            }, 800);
        }
    });
    
    // ==========================================
    // ANIMATION ON SCROLL
    // ==========================================
    function animateOnScroll() {
        $('.animate-on-scroll').each(function() {
            var elementTop = $(this).offset().top;
            var elementBottom = elementTop + $(this).outerHeight();
            var viewportTop = $(window).scrollTop();
            var viewportBottom = viewportTop + $(window).height();
            
            if (elementBottom > viewportTop && elementTop < viewportBottom) {
                $(this).addClass('animated');
            }
        });
    }
    
    $(window).on('scroll', animateOnScroll);
    animateOnScroll(); // Ejecutar al cargar
    
    // ==========================================
    // CONTACT FORM SUBMISSION
    // ==========================================
    $('#rentcar-contact-form').on('submit', function(e) {
        e.preventDefault();
        
        var form = $(this);
        var submitBtn = form.find('button[type="submit"]');
        var originalText = submitBtn.html();
        var messageDiv = form.find('.form-message');
        
        // Deshabilitar botón y mostrar loading
        submitBtn.prop('disabled', true).html('<i class="fas fa-spinner fa-spin"></i> Enviando...');
        messageDiv.removeClass('success error').hide();
        
        $.ajax({
            url: rentcar_ajax.ajax_url,
            type: 'POST',
            data: {
                action: 'rentcar_contact',
                nonce: rentcar_ajax.nonce,
                name: form.find('[name="name"]').val(),
                email: form.find('[name="email"]').val(),
                phone: form.find('[name="phone"]').val(),
                subject: form.find('[name="subject"]').val(),
                message: form.find('[name="message"]').val()
            },
            success: function(response) {
                if (response.success) {
                    messageDiv.addClass('success').text(response.data).fadeIn();
                    form[0].reset();
                } else {
                    messageDiv.addClass('error').text(response.data).fadeIn();
                }
            },
            error: function() {
                messageDiv.addClass('error').text('Error al enviar el mensaje. Por favor, intente nuevamente.').fadeIn();
            },
            complete: function() {
                submitBtn.prop('disabled', false).html(originalText);
                
                // Ocultar mensaje después de 5 segundos
                setTimeout(function() {
                    messageDiv.fadeOut();
                }, 5000);
            }
        });
    });
    
    // ==========================================
    // VEHICLE FILTER
    // ==========================================
    $('.vehicle-filter').on('click', function(e) {
        e.preventDefault();
        
        var filter = $(this).data('filter');
        
        $('.vehicle-filter').removeClass('active');
        $(this).addClass('active');
        
        if (filter === 'all') {
            $('.vehicle-card').fadeIn();
        } else {
            $('.vehicle-card').hide();
            $('.vehicle-card[data-category="' + filter + '"]').fadeIn();
        }
    });
    
    // ==========================================
    // TESTIMONIAL SLIDER (si se usa)
    // ==========================================
    if ($('.testimonial-slider').length) {
        var currentSlide = 0;
        var slides = $('.testimonial-slide');
        var totalSlides = slides.length;
        
        function showSlide(n) {
            slides.removeClass('active');
            slides.eq(n).addClass('active');
        }
        
        function nextSlide() {
            currentSlide = (currentSlide + 1) % totalSlides;
            showSlide(currentSlide);
        }
        
        function prevSlide() {
            currentSlide = (currentSlide - 1 + totalSlides) % totalSlides;
            showSlide(currentSlide);
        }
        
        $('.testimonial-next').on('click', nextSlide);
        $('.testimonial-prev').on('click', prevSlide);
        
        // Auto play
        setInterval(nextSlide, 5000);
        
        showSlide(0);
    }
    
    // ==========================================
    // COUNTER ANIMATION
    // ==========================================
    function animateCounter() {
        $('.counter').each(function() {
            var $this = $(this);
            var countTo = $this.attr('data-count');
            
            if (!$this.hasClass('counted')) {
                $({countNum: 0}).animate({
                    countNum: countTo
                }, {
                    duration: 2000,
                    easing: 'swing',
                    step: function() {
                        $this.text(Math.floor(this.countNum));
                    },
                    complete: function() {
                        $this.text(this.countNum);
                    }
                });
                $this.addClass('counted');
            }
        });
    }
    
    // Activar contador cuando esté visible
    $(window).on('scroll', function() {
        if ($('.counter').length) {
            var counterTop = $('.counter').first().offset().top;
            var windowBottom = $(window).scrollTop() + $(window).height();
            
            if (windowBottom > counterTop) {
                animateCounter();
            }
        }
    });
    
    // ==========================================
    // LAZY LOAD IMAGES
    // ==========================================
    if ('IntersectionObserver' in window) {
        var imageObserver = new IntersectionObserver(function(entries, observer) {
            entries.forEach(function(entry) {
                if (entry.isIntersecting) {
                    var image = entry.target;
                    image.src = image.dataset.src;
                    image.classList.remove('lazy');
                    imageObserver.unobserve(image);
                }
            });
        });
        
        document.querySelectorAll('img.lazy').forEach(function(img) {
            imageObserver.observe(img);
        });
    }
    
    // ==========================================
    // TOOLTIP INITIALIZATION
    // ==========================================
    $('[data-toggle="tooltip"]').tooltip();
    
    // ==========================================
    // PREVENT DEFAULT FOR EMPTY LINKS
    // ==========================================
    $('a[href="#"]').on('click', function(e) {
        e.preventDefault();
    });
    
    // ==========================================
    // FORM VALIDATION
    // ==========================================
    $('input[required], textarea[required]').on('blur', function() {
        if ($(this).val() === '') {
            $(this).addClass('error');
        } else {
            $(this).removeClass('error');
        }
    });
    
    // ==========================================
    // PRELOADER (opcional)
    // ==========================================
    $(window).on('load', function() {
        $('.preloader').fadeOut('slow');
    });
    
    // ==========================================
    // SEARCH TOGGLE
    // ==========================================
    $('.search-toggle').on('click', function(e) {
        e.preventDefault();
        $('.search-form-wrapper').toggleClass('active');
        $('.search-form-wrapper input').focus();
    });
    
    $(document).on('click', function(e) {
        if (!$(e.target).closest('.search-form-wrapper, .search-toggle').length) {
            $('.search-form-wrapper').removeClass('active');
        }
    });
    
    // ==========================================
    // DATE PICKER (si se usa para reservas)
    // ==========================================
    if ($('.datepicker').length && typeof $.fn.datepicker !== 'undefined') {
        $('.datepicker').datepicker({
            dateFormat: 'dd/mm/yy',
            minDate: 0,
            beforeShow: function() {
                setTimeout(function() {
                    $('.ui-datepicker').css('z-index', 9999);
                }, 0);
            }
        });
    }
    
    // ==========================================
    // VEHICLE BOOKING MODAL
    // ==========================================
    $('.btn-rent').on('click', function(e) {
        e.preventDefault();
        var vehicleName = $(this).closest('.vehicle-card').find('.vehicle-title').text();
        var vehiclePrice = $(this).closest('.vehicle-card').find('.vehicle-price').text();
        
        // Aquí puedes abrir un modal o redirigir a una página de reserva
        console.log('Reservar: ' + vehicleName + ' - ' + vehiclePrice);
    });
    
    // ==========================================
    // PRINT FUNCTIONALITY
    // ==========================================
    $('.print-btn').on('click', function(e) {
        e.preventDefault();
        window.print();
    });
    
    // ==========================================
    // CONSOLE LOG WELCOME MESSAGE
    // ==========================================
    console.log('%c🚗 Ruta RentaCar - Sistema de Alquiler de Vehículos', 'color: #0096e2; font-size: 16px; font-weight: bold;');
    console.log('%cDesarrollado con ❤️ para ofrecer la mejor experiencia', 'color: #777777; font-size: 12px;');
});
