(function($) { $(document).ready(function() { if( $('body').hasClass('shop-sidecart-active') ) { woocart.refresh(); // prevent caching sidecart } mfnFakeSale.init(); // gallery grid if(!$('body').hasClass('mfn-ui') && $('.mfn-product-gallery-grid').length){ // zoom if( !$('body').hasClass('product-zoom-disabled') ){ $(' .mfn-product-gg-img a').zoom(); } // lightbox initPhotoSwipeFromDOM('.mfn-product-gallery-grid'); } $( document ).on( 'click', '.mfn-quick-view', function(e) { e.preventDefault(); var id = $(this).attr('data-id'); $(this).addClass('loading'); quickview.display(id); }); if( $('body').hasClass('mfn-ajax-add-to-cart') ){ $( document ).on( 'click', '.single_add_to_cart_button:not(.disabled)', function(e) { e.preventDefault(); var cc = $('#header_cart .header-cart-count').length ? $('#header_cart .header-cart-count').first().text() : 0; var $thisbutton = $(this); var $form = $thisbutton.closest('form.cart'), c_form = $thisbutton.closest('form.cart').get(0); var $qty = $form.find('input.qty'); var qty_max = $qty.attr('max'); if( typeof qty_max !== typeof undefined && qty_max != '' && parseInt($qty.val()) > parseInt(qty_max) ){ $qty.css({'background-color': '#77a464', 'transition': '0.8s'}); $qty.val(qty_max); setTimeout(function() { $qty.removeAttr('style'); }, 1000); return; } var ajaxAct = { url: wc_add_to_cart_params.ajax_url, type: 'POST', beforeSend: function (response) { $(document.body).trigger('adding_to_cart'); $thisbutton.removeClass('added').addClass('loading'); }, success: function (response) { if( typeof response.error !== 'undefined' ){ location.reload(); return; } $thisbutton.addClass('added').removeClass('loading'); $(document.body).trigger('added_to_cart'); $(document.body).trigger('wc_fragment_refresh'); $('.mfn-cart-holder').attr('aria-expanded', 'true'); } }; // check if grouped product has any quantity selected if( $form.hasClass('grouped_form') ){ var $inputs = $('input.qty', $form); var hasQuantity = false; $inputs.each(function(){ if( parseInt($(this).val()) > 0 ){ hasQuantity = true; } }); if( ! hasQuantity ){ alert( mfnwoovars.groupedQuantityErrori18n); return false; } } var formData = new FormData(c_form); formData.append('action', 'woocommerce_add_to_cart'); formData.append('current_cart', cc); if( $('.mnm_cart.mnm_data .mnm_add_to_cart_button').length ){ formData.delete('add-to-cart'); } if ( !formData.has('product_id') && 'undefined' !== $thisbutton.val() ) { formData.append( 'product_id', parseInt( $thisbutton.val() ) ); } if ( formData.has('variation_id') ) { formData.delete('product_id'); } ajaxAct['data'] = formData; ajaxAct['contentType'] = false; ajaxAct['processData'] = false; $(document.body).trigger('adding_to_cart', [$thisbutton, formData]); $.ajax( ajaxAct ); return false; }); } // woo product category arrows if( $('.wc-block-product-categories-list') ){ $('.wc-block-product-categories-list li.wc-block-product-categories-list-item').each(function() { if($(this).children('ul').length){ $(this).append(''); } }); $('.wc-block-product-categories-list li > span.cat-expander').on('click', function(e) { if($(this).siblings('ul').is(':visible')){ $(this).siblings('ul').slideUp(300); $(this).parent('li').removeClass('li-expanded'); }else{ $(this).siblings('ul').slideDown(300); $(this).parent('li').addClass('li-expanded'); } }); } // Append spans to additional info table if($('.woocommerce-product-attributes').length){ spanToAdditionalInfo(); } // product variations if( $('.mfn-variations-wrapper').length && $('body').hasClass('mfn-variable-swatches') ){ productvariations.run(); } $('.toggle-mfn-cart').on('click', function(e) { if( $('body').hasClass('shop-sidecart-active') && $('.mfn-cart-holder').length ){ e.preventDefault(); if( $('body').hasClass('mfn-bebuilder-header') ) return; if ( $('html').hasClass('mfn-cart-opened')) { $('.mfn-cart-holder').attr('aria-expanded', 'false') } else { $('.mfn-cart-holder').attr('aria-expanded', 'true'); } woocart.click(); } }); $('.toggle-mfn-cart').on('keypress', function(e) { e.preventDefault(); if ( e.originalEvent.key !== 'Enter' ) return; if ( $('html').hasClass('mfn-cart-opened')) { $('.mfn-cart-holder').attr('aria-expanded', 'false'); const domPrefix = $('body').hasClass('side-slide-is-open') ? '.extras-wrapper ' : '.top_bar_right '; $(`${domPrefix} #header_cart`).trigger('focus'); } else { $('.mfn-cart-holder').find('a').first().trigger('focus'); $('.mfn-cart-holder').attr('aria-expanded', 'true'); } woocart.click(); }); $('.mfn-cart-overlay').on('click', function() { woocart.click(); }); if($('body').hasClass('shop-sidecart-active')){ woocart.start(); } $('.toggle-login-modal').on('click', function(e) { e.preventDefault(); if( $('body').hasClass('mfn-ui') ) return; modallogin.click($(this)); }); $(document).on('mouseup', function(e) { // login form if( $('body').hasClass('mfn-show-login-modal') ){ if( ! $('.mfn-header-login').is(e.target) && $('.mfn-header-login').has(e.target).length === 0 && ! $('.toggle-login-modal').is(e.target) && $('.toggle-login-modal').has(e.target).length === 0 ){ modallogin.click(); } } }); function alignListHeights(){ var i = 0; $('.woocommerce .column_shop_products ul.products.list li.product').each(function() { $(this).css({ 'min-height': '1px'}); var height= $(this).outerHeight(); var imgHeight = $(this).find('.product-loop-thumb').outerHeight(); if(imgHeight > height){ $(this).css({'min-height': imgHeight}); } }); } if( $('.woocommerce .column_shop_products ul.products.list').length ){ alignListHeights(); $(window).on('debouncedresize', alignListHeights); } $('.mfn-header-modal-login .woocommerce-form-login .form-row').on('click', function() { if( !$(this).hasClass('active') ){ $(this).addClass('active'); } }); $('.mfn-header-modal-login .woocommerce-form-login .form-row input').on('blur change', function() { modallogin.check(); }); modallogin.check(); $('.mfn-cart-holder .mfn-ch-content').on('click', '.mfn-chp-remove', function(e) { e.preventDefault(); if(!$('.mfn-cart-holder').hasClass('loading')){ $('.mfn-cart-holder').addClass('loading'); var pid = $(this).closest('.mfn-ch-product').attr('data-row-key'); woocart.delete(pid); } }); $('.mfn-woo-products').on('change', '.mfn-variations-wrapper-loop .mfn-vr-select', function() { var link = $(this).find(':selected').attr('data-link'); if(link != ''){ window.location.href = link; } }); $('.mfn-cart-holder .mfn-ch-content').on('change', '.qty', function() { var $el = $(this); if(!$('.mfn-cart-holder').hasClass('loading')){ $('.mfn-cart-holder').addClass('loading'); var pid = $el.closest('.mfn-ch-product').attr('data-row-key'); var qty = $el.val(); woocart.updatequantity(pid, qty); } }); if( $('body').hasClass('woocommerce-checkout') ){ if( $('.woocommerce-form-login').length ){ $('.woocommerce-form-login').addClass('checkout-form-toggle'); } if( $('.woocommerce-form-coupon').length ){ $('.woocommerce-form-coupon').addClass('checkout-form-toggle'); } /*$(document).ajaxComplete(function() { // checkoutpayment.start(); });*/ setTimeout(function(){ checkoutpayment.start(); },1500); } /*$( document.body ).on( 'adding_to_cart', function( e ) { if(!$('.header-cart-count').length || !$('.header-cart-total').length){ $('.header-cart').append(''); $('#header_cart').append('
'); } });*/ //$( document.body ).on( 'wc_fragment_refresh added_to_cart', function( e ) { $( document.body ).on( 'added_to_cart', function( e ) { if($('body').hasClass('shop-sidecart-active')) { woocart.refresh(); if(!$('html').hasClass('mfn-cart-opened')) { //woocart.click(); woocart.force_open = true; } } } ); $( document.body ).on( 'updated_cart_totals removed_from_cart', function(){ if($('body').hasClass('shop-sidecart-active')){ woocart.refresh(); } }); // wishlist wishlist.set(); $(document).on('click', '.mfn-wish-button', function(e) { e.preventDefault(); var id = $(this).attr('data-id'); wishlist.click(id); }); // attr ajjax filter if( $('form.mfn_attr_filters').length ){ $(document).on('click', '.mfn-woo-list-active-filters li span', function() { var id = $(this).attr('data-id'); $(this).closest('li').addClass('laoding'); if($('.widget.mfn_woo_attributes .mfn_attr_filters input.'+id).length){ if($('.mfn_woo_attributes .mfn_attr_filters input.'+id).is(':checked')) { $('.mfn_woo_attributes .mfn_attr_filters input.'+id).prop('checked', false); if( $('.mfn_woo_attributes .mfn_attr_filters input.'+id).closest('li').hasClass('active') ){ $('.mfn_woo_attributes .mfn_attr_filters input.'+id).closest('li').removeClass('active'); } } grabFiltersForms(); } }); $(document).on('click', 'form.mfn_attr_filters ul li', function() { var $li = $(this); var $ul = $(this).closest('ul'); var $form = $(this).closest('form'); var input_class = $li.find('input').attr('class'); // on click active filters if($form.hasClass('mfn-before-products-list-form')){ $li.find('input').is(':checked') ? $li.find('input').prop('checked', false) : $li.find('input').prop('checked', true); $li.toggleClass('active'); }else if($form.hasClass('mfn_attr_filters')){ $li.find('input').is(':checked') ? $('form.mfn_attr_filters ul li input.'+input_class).prop('checked', false) : $('form.mfn_attr_filters ul li input.'+input_class).prop('checked', true); $('form.mfn_attr_filters ul li input.'+input_class).closest('li').toggleClass('active'); } if( !$li.closest('form').hasClass('button-enabled') ){ $li.addClass('loading'); grabFiltersForms(); } }); } if( $('form.mfn_attr_filters.button-enabled').length ){ $('form.mfn_attr_filters.button-enabled').submit(function(e) { e.preventDefault(); grabFiltersForms(); }); } $.fn.extend({ /** formData: * Most form submissions will require special formatting different from * a normal get request (a=val1,val2&b=val3 vs. a=val1&a=val2&b=val3). * Sample use: $.getJSON(url,$("myFormElement").formData(),callback);. * @return {String} Serialized form data appropriate for GET requests. * @author Joe Johnson */ formData: function(){ var data = {}; $.each(this.serializeArray(),function(i,o){ if (data[o.name]) data[o.name] += ','+o.value; else data[o.name] = o.value; }); return $.param(data); } }); function removeQueryParameters(url, parametersToRemove) { url = window.location.origin + url; const urlObject = new URL(url); parametersToRemove.forEach(param => { urlObject.searchParams.delete(param); }); return urlObject.toString(); } function grabFiltersForms(){ let formsArr = []; var path = getUrlWithoutPagination(); $('form.mfn_attr_filters').each(function() { formsArr.push( $(this).formData() ); }); formUnique = formsArr.filter( function(a){if (!this[a]) {this[a] = 1; return a;}}, {} ); let formData = formUnique.join('&'); let url = path+'?'+formData; load_products_ajax(url); } function load_products_ajax(url) { var $products = $('.entry-content .mfn-woo-products'); $('.mfn_attr_filters button').addClass('loading disabled'); if($('body').hasClass('archive')){ $.get(url, function(responseText) { $('.pager_wrapper').remove(); $('.woocommerce-info').remove(); if( $('.default-woo-list').length ){ $('.default-woo-list').replaceWith( $( $.parseHTML( responseText )).find('.default-woo-list').clone() ); }else if( $('.column_shop_products').length ){ $('.column_shop_products').replaceWith( $( $.parseHTML( responseText )).find('.column_shop_products').clone() ); } $('.woocommerce-ordering select').on('change', function() { $(this).closest('form').submit(); }); // remove unwanted attibutes url = removeQueryParameters(url, ['layout', 'per_page']); // replace %2C with coma url = url.replace(/%2C/g,","); // set browser url history.replaceState(null, '', url); if ($('.mcb-sidebar').length) { var maxH = $('#Content .sections_group').outerHeight(); $('.mcb-sidebar').each(function() { $(this).css('min-height', 0); if ($(this).height() > maxH) { maxH = $(this).height(); } }); $('.mcb-sidebar').css('min-height', maxH + 'px'); } if( $('.woocommerce .column_shop_products ul.products.list').length ){ alignListHeights(); $(window).on('debouncedresize', alignListHeights); } if( $('.products li img').length ){ $('.products li img').each(function() { if( typeof $(this).attr('data-src') !== 'undefined' ){ $(this).attr('src', $(this).attr('data-src')); } }) } $('.mfn_attr_filters ul li').removeClass('loading'); $('.mfn_attr_filters button').removeClass('loading disabled'); }); }else{ window.location.href = url; } } function getUrlWithoutPagination(){ var current_url = window.location.pathname; var url = ''; // get url witout pagination if(current_url.includes("/page/")){ url = current_url.split("/page/")[0]; }else{ url = current_url; } // if not listing page redirect if( !$('body').hasClass('archive') ){ url = $('form.mfn_attr_filters').attr('action'); } return url; } setTimeout(function() { productgallery.start(); }, 300); }); // Append spans to additional info table function spanToAdditionalInfo(){ $('.woocommerce-product-attributes td, .woocommerce-product-attributes th').each(function() { $(this).html(''+$(this).html()+''); }); } var productvariations = { run: function() { $('.mfn-variations-wrapper .mfn-vr-options li a').on('click', function(e) { e.preventDefault(); $(this).parent().siblings().removeClass('active'); $(this).parent().addClass('active'); var id = $(this).attr('data-id'); var atr = $(this).parent().parent().attr('data-atr'); $('.variations select#'+atr).val(id); $('.variations select#'+atr).trigger('change'); if( $('form.variations_form').attr('data-product_variations') != 'false' ) { setTimeout(function() { productvariations.triggerChange(atr, id); }, 100); } }); $('.mfn-variations-wrapper .mfn-vr-select').on('change', function() { var id = $(this).val(); var atr = $(this).attr('data-atr'); $('.variations select#'+atr).val(id); $('.variations select#'+atr).trigger('change'); if( $('form.variations_form').attr('data-product_variations') != 'false' ) { setTimeout(function() { productvariations.triggerChange(atr, id); }, 100); } }); $('.woocommerce div.product form.cart .variations select').each(function() { var val = $(this).val(); var atr = $(this).attr('id'); if( val.length ){ if($('.mfn-variations-wrapper .mfn-vr-options[data-atr="'+atr+'"] li a[data-id="'+val+'"]').length){ $('.mfn-variations-wrapper .mfn-vr-options[data-atr="'+atr+'"] li a[data-id="'+val+'"]').trigger('click'); }else if($('.mfn-variations-wrapper .mfn-vr-select[data-atr="'+atr+'"]').length){ $('.mfn-variations-wrapper .mfn-vr-select[data-atr="'+atr+'"]').val(val); } } }); if( window.location.search ){ if( $('.mfn-variations-wrapper ul.mfn-vr-options').length ){ const urlParams = new URLSearchParams(window.location.search); $('.mfn-variations-wrapper ul.mfn-vr-options').each(function() { let attr = $(this).attr('data-atr'); if( urlParams.get(attr) && typeof attr !== 'undefined' ){ if( $(this).find('li a[data-id="'+urlParams.get(attr)+'"]').length ) $(this).find('li a[data-id="'+urlParams.get(attr)+'"]').trigger('click'); } }); } } //$('.variations').hide(); }, triggerChange: function(atr, nval) { if( $('.mfn-vr-options li').length ) $('.mfn-vr-options li a').css('opacity', '0.3'); if( $('.mfn-vr-select option').length ) $('.mfn-vr-select option').attr('disabled', 'true'); $('.woocommerce form.variations_form.cart table.variations select option').each(function() { var val = $(this).attr('value'); var attr_name = $(this).closest('select').attr('name'); if($('.woocommerce .mfn-variations-wrapper .mfn-vr ul.'+attr_name).length) $('.woocommerce .mfn-variations-wrapper .mfn-vr ul.'+attr_name+' a[data-id="'+val+'"]').css('opacity', '1'); if($('.woocommerce .mfn-variations-wrapper .mfn-vr select.'+attr_name).length) $('.woocommerce .mfn-variations-wrapper .mfn-vr select.'+attr_name+' option[value="'+val+'"]').removeAttr('disabled'); }); } }; var wishlist = { cookiename: 'mfn_wishlist', click: function(id) { wishlist.readcookie() ? arr = wishlist.readcookie().split(',') : arr = []; if( arr.includes( id ) ){ arr = arr.filter( el => el != id); $('.mfn-wish-button[data-id="'+id+'"]').removeClass('loved'); $('.mfn-wish-button[data-id="'+id+'"]').closest('.wishlist-row').slideUp(300); setTimeout(function() { $('.mfn-wish-button[data-id="'+id+'"]').closest('.wishlist-row').remove(); }, 400); if($('.wishlist .wishlist-row').length == 1){ $('.wishlist .wishlist-info').show(); } }else{ arr.push( id ); $('.mfn-wish-button[data-id="'+id+'"]').addClass('loved'); } wishlist.createcookie(arr); wishlist.updatecounter(arr.length); }, set: function(){ wishlist.readcookie() ? arr = wishlist.readcookie().split(',') : arr = []; if(arr.length){ $.each(arr, function(i, v) { $('.mfn-wish-button[data-id="'+v+'"]').addClass('loved'); }); } wishlist.updatecounter(arr.length); }, readcookie: function(){ var nameEQ=wishlist.cookiename+"="; var ca=document.cookie.split(';'); for(var i=0;i${x.notice}
`).join(''); } noticeHtml += '