// source --> https://maskinexperten.com/wp-content/themes/hello-elementor-child/js/cart.js?ver=6.7.5 
jQuery(document).ready(function ($) {

    $(document).on('click', '.mm-cart-trigger', function() {
        $('.mm-cart-container').toggleClass('active');
        $('body').toggleClass('mm-cart');
    });

    $(document).on('click', '.mm-cart-bg', function(e) {
        if ( e.target == this ) {
            $('.mm-cart-container').removeClass('active');   
            $('body').removeClass('mm-cart');   
        }
    });

    $(document).on('click', '.mm-cart-header button', function() {
        $('.mm-cart-container').removeClass('active');   
        $('body').removeClass('mm-cart');  
    });

    $(document).on('click', '.mm-cart .cart-item-quantity button:first-child', function() {
        const input = $(this).siblings('input');
        let quantity = input.val();
        quantity--;
        if ( quantity < 1 ) quantity = 1;
        input.val(quantity);
        input.trigger('change');
    });

    $(document).on('click', '.mm-cart .cart-item-quantity button:last-child', function() {
        const input = $(this).siblings('input');
        let quantity = input.val();
        quantity++;
        input.val(quantity);
        input.trigger('change');
    });

    $(document).on('click', '.mm-cart .cart-item-remove', function(e) {

        e.preventDefault();
    
        const button = $(this);
        const product_id = $(this).data('info');
        const cart_key = $(this).data('key');
        const product = $(this).parents('.cart-item');
    
        $.ajax({
            url: wc_add_to_cart_params.ajax_url,
            type: 'POST',
            data: {
                action: 'mm_cart_remove',
                product_id: product_id,
                cart_key: cart_key,
            },
            beforeSend: function() {
                product.hide();
                $('.mm-cart-totals-sum').html( '<span class="mm-loader"></span>' );
            },
            success: function( response ) {

                product.remove();
                $( document.body ).trigger( 'removed_from_cart', [ response.fragments, response.cart_hash, button ] );
                $( document.body ).trigger( 'updated_cart_totals' );

            },
            error: function(data) {
            },
            complete: function() {
            },
        });

    });

    $(document).on('change', '.mm-cart .cart-item .cart-item-quantity input', function(e) {

        e.preventDefault();
    
        const product_id = $(this).data('pid');
        const cart_key = $(this).data('key');
        const quantity = $(this).val();
        const product = $(this).parents('.cart-item');
    
        $.ajax({
            url: wc_add_to_cart_params.ajax_url,
            type: 'POST',
            data: {
                action: 'mm_cart_quantity',
                product_id: product_id,
                cart_key: cart_key,
                quantity: quantity,
            },
            beforeSend: function() {
                $('.mm-cart-totals-sum').html( '<span class="mm-loader"></span>' );
                product.find('.cart-item-price').html( '<span class="mm-loader"></span>' );
            },
            success: function(res) {

                $( document.body ).trigger( 'updated_cart_totals' );
                product.find('.cart-item-price').html( res.price );

            },
            error: function(data) {
            },
            complete: function() {
            },
        });
    
    });

    $(document).on( 'updated_cart_totals', function() {

        $.ajax({
            url: wc_add_to_cart_params.ajax_url,
            type: 'POST',
            data: {
                action: 'mm_cart_get_totals',
            },
            beforeSend: function() {
            },
            success: function(res) {

                $('.mm-cart-total.tax .mm-cart-totals-sum').html( res.tax );
                $('.mm-cart-total.ex-tax .mm-cart-totals-sum').html( res.total_notax );
                $('.mm-cart-total.total .mm-cart-totals-sum').html( res.total_total );
                $('.mm-cart-header-count').html( res.header_count );
                $('.mm-cart-count').html( res.count );    
                
                if ( res.count == 0 ) {
                    $('.mm-cart').addClass('empty');
                }else {
                    $('.mm-cart').removeClass('empty');
                }

            },
            error: function(data) {
            },
            complete: function() {
            },
        });

    });

    $(document.body).on('added_to_cart', function() {

        $.ajax({
            url: wc_add_to_cart_params.ajax_url,
            type: 'POST',
            data: {
                action: 'mm_update_cart',
            },
            beforeSend: function() {
            },
            success: function(data) {

                $('.mm-cart .mm-cart-main').html( data.products );
                $( document.body ).trigger( 'updated_cart_totals' );

                $('.mm-cart-container').toggleClass('active');
                $('body').toggleClass('mm-cart');

            },
            error: function(data) {
            },
            complete: function() {
            },
        });

    });









    $(document).on('click', '.single_add_to_cart_button:not(.disabled)', function (e) {

        e.preventDefault();

        var button = $(this);
        var form = button.closest('form.cart');
        var id = button.val();
        var product_qty = form.find('input[name=quantity]').val() || 1;
        var product_id = form.find('input[name=product_id]').val() || id;
        var variation_id = form.find('input[name=variation_id]').val() || 0;

        var data = {
            action: 'mm_woocommerce_ajax_add_to_cart',
            product_id: product_id,
            product_sku: '',
            quantity: product_qty,
            variation_id: variation_id,
        };

        $(document.body).trigger('adding_to_cart', [button, data]);

        $.ajax({
            type: 'post',
            url: wc_add_to_cart_params.ajax_url,
            data: data,
            beforeSend: function (response) {
                button.addClass('loading');
            },
            success: function (response) {

                if ( response.error & response.product_url ) {
                    window.location = response.product_url;
                    return;
                }else {
                    $(document.body).trigger('added_to_cart', [response.fragments, response.cart_hash, button]);  
                }
            },
            complete: function (response) {
                button.removeClass('loading');
                button.addClass('added');
            },
        });

        return false;

    });

});