jQuery(function($){ "use strict"; var on_touch = !$('body').hasClass('ts_desktop'); setTimeout(function(){ $('.ts-custom-block-content, .footer-container').removeClass('hidden'); }, 10); /* Carousel */ $(window).on('ts_slider_middle_navigation_position', function(e, swiper){ if( swiper.parents('.ts-slider.middle-thumbnail.rows-1').length || swiper.parents('.related').length || swiper.parents('.upsells').length || swiper.parents('.cross-sells').length ){ var thumbnail = swiper.find('.swiper-slide-active').first().find('.product-wrapper .thumbnail-wrapper, .product-wrapper > a, .article-content .thumbnail-content > a.thumbnail'); var top = thumbnail.length ? thumbnail.height() / 2 : 0; if( top ){ swiper.find('.swiper-button-prev, .swiper-button-next').css('top', top); } } }); /* [wrapper selector, slider selector, slider options, extra settings] */ var carousel_data = [ ['.single-product .related .products, .single-product .upsells .products, .woocommerce .cross-sells .products', null, null, {show_nav: true, auto_play: false}] ,['.single-post .related-posts', '.content-wrapper .blogs', {breakpoints:{0:{slidesPerView:1},450:{slidesPerView:2},990:{slidesPerView:3}}}, {show_nav: true}] ,['.single-post figure.gallery, .list-posts .post-item .gallery figure, .ts-blogs-widget .thumbnail.gallery figure', null, {autoHeight: true, simulateTouch: false, effect: 'fade', spaceBetween: 10, breakpoints:{0:{slidesPerView:1}}}, {show_nav: true, auto_play: true}] ]; $.each(carousel_data, function( i, data ){ $(data[0]).each(function( index ){ var element = $(this); if( typeof data[1] != 'undefined' && data[1] != null ){ var swiper = element.find(data[1]); } else{ var swiper = element; } if( swiper.find('> *').length <= 1 ){ element.removeClass('loading'); swiper.parent().removeClass('loading'); return; } var unique_class = 'swiper-theme-' + Math.floor(Math.random() * 10000) + '-' + index; swiper.addClass('swiper ' + unique_class); swiper.find('> *').addClass('swiper-slide'); swiper.wrapInner('
'); if( $('body').hasClass('rtl') ){ swiper.attr('dir', 'rtl'); } var slider_options = { loop: true ,spaceBetween: 0 ,breakpointsBase: 'container' ,breakpoints:{0:{slidesPerView:1},320:{slidesPerView:2},610:{slidesPerView:3},700:{slidesPerView:4},1200:{slidesPerView:5}} ,on: { init: function(){ element.removeClass('loading'); swiper.parent().removeClass('loading'); $(window).trigger('ts_slider_middle_navigation_position', [swiper]); } ,resize: function(){ $(window).trigger('ts_slider_middle_navigation_position', [swiper]); } } }; if( typeof data[2] != 'undefined' && data[2] != null ){ $.extend( slider_options, data[2] ); } if( typeof data[3] != 'undefined' && data[3] != null ){ var extra_settings = data[3]; if( typeof extra_settings.show_nav != 'undefined' && extra_settings.show_nav ){ swiper.append('
'); slider_options.navigation = { prevEl: '.swiper-button-prev' ,nextEl: '.swiper-button-next' }; } if( typeof extra_settings.auto_play != 'undefined' && extra_settings.auto_play ){ slider_options.autoplay = { delay: 5000 ,disableOnInteraction: false ,pauseOnMouseEnter: true }; } } new Swiper( '.' + unique_class, slider_options ); }); }); /** Menu **/ ts_mega_menu_change_state(); $(window).on('resize orientationchange', function(){ ts_mega_menu_change_state(); }); $('.ts-header, #ts-mobile-button-bottom').on('mouseenter', function(){ if( $('.menu-item.hide').length ){ $('.menu-item').removeClass('hide'); ts_mega_menu_change_state(); } }); $('.elementor-widget-wp-widget-nav_menu .menu-item-has-children .sub-menu').before(''); if( on_touch || $(window).width() < 768 ){ ts_mobile_menu_handle(); } /** Menu Overlay **/ if( typeof loobek_params != 'undefined' && loobek_params.menu_overlay == 1 ){ $('.ts-header .ts-menu .main-menu > ul > li').on('mouseenter', function(){ if( $(this).find('.sub-menu').length ){ $('body').addClass('menu-background-overlay'); var position_top = 0; var notice_height = 0; if( jQuery('.ts-store-notice').length && !jQuery('.ts-header').hasClass('is-sticky') ){ notice_height = jQuery('.ts-store-notice').outerHeight(); } position_top += notice_height + ( $('#wpadminbar').length ? $('#wpadminbar').height() : 0 ); $('.menu-background-overlay .ts-header > .overlay').css( 'top', position_top ); } }).on('mouseleave', function(){ $('body').removeClass('menu-background-overlay'); }); } /** Sticky Menu **/ if( typeof loobek_params != 'undefined' && loobek_params.sticky_header == 1 ){ ts_sticky_menu(); } $('.icon-menu-ipad-header .icon, .icon-menu-sticky-header .icon').on('click', function(){ if( $('.ts-header').hasClass('menu-middle') ){ var sticky_wrapper = $('header .header-middle .menu-wrapper'); } else{ var sticky_wrapper = $('header .header-bottom'); } if( $(this).hasClass('active') ){ sticky_wrapper.css('display',''); }else{ sticky_wrapper.fadeIn(); } $(this).toggleClass('active'); ts_mega_menu_change_state(); }); /** Store Notice **/ $('.ts-store-notice .close').on('click', function(){ $('.ts-store-notice').slideUp(); if( typeof Cookies == 'function' ){ Cookies.set('ts_store_notice', 'hidden', { expires: 1 }); } }); /** Scrolling Bar - Used for No Elementor Page **/ if( typeof $.position != 'undefined' && typeof $.position.scrollbarWidth != 'undefined' ){ document.documentElement.style.setProperty('--scrollbarWidth',$.position.scrollbarWidth() + 'px'); } /* Set width content for style filter sidebar */ if( $('#main-content.style-filter-sidebar').length ){ $(window).on('ts_set_main_content_width resize orientationchange', function(){ if( $(window).width() > 1200 ){ $('#main-content').css('--maincontentWidth', $('#main-content').width() + 'px'); } }); $(window).trigger('ts_set_main_content_width'); } /** To Top button **/ $(window).on('scroll', function(){ if( $(this).scrollTop() > 100 ){ $('#to-top').addClass('on'); } else { $('#to-top').removeClass('on'); } }); $('#to-top .scroll-button').on('click', function(){ $('body,html').animate({ scrollTop: '0px' }, 1000); return false; }); /** Quickshop **/ $(document).on('click', 'a.quickshop', function( e ){ e.preventDefault(); var product_id = $(this).data('product_id'); if( product_id === undefined ){ return; } var container = $('#ts-quickshop-modal'); container.addClass('loading'); container.find('.quickshop-content').html(''); $.ajax({ type : 'POST' ,url : loobek_params.ajax_url ,data : {action : 'loobek_load_quickshop_content', product_id: product_id} ,success : function(response){ container.find('.quickshop-content').html( response ); setTimeout(function(){ container.removeClass('loading').addClass('show'); $('body').addClass('opening-quickshop'); }, container.find('.product-type-variable').length ? 400 : 100 ); if( container.find('.counter-wrapper').length && typeof ts_counter == 'function' ){ ts_counter( container.find('.counter-wrapper') ); } var $target = container.find('.woocommerce-product-gallery.images'); if( typeof $.fn.flexslider == 'function' ){ var options = $.extend( { selector: '.woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image', /* in target */ start: function() { $target.css( 'opacity', 1 ); }, after: function( slider ) { quickshop_init_zoom( container.find('.woocommerce-product-gallery__image').eq( slider.currentSlide ), $target ); } }, loobek_params.flexslider ); $target.flexslider( options ); container.find( '.woocommerce-product-gallery__wrapper .woocommerce-product-gallery__image:eq(0) .wp-post-image' ).one( 'load', function() { var $image = $( this ); if ( $image ) { setTimeout( function() { var setHeight = $image.closest( '.woocommerce-product-gallery__image' ).height(); var $viewport = $image.closest( '.flex-viewport' ); if ( setHeight && $viewport ) { $viewport.height( setHeight ); } }, 100 ); } } ).each( function() { if ( this.complete ) { $( this ).trigger( 'load' ); } } ); } else{ $target.css( 'opacity', 1 ); } quickshop_init_zoom( container.find('.woocommerce-product-gallery__image').eq(0), $target ); $target.on('woocommerce_gallery_reset_slide_position', function(){ if( typeof $.fn.flexslider == 'function' ){ $target.flexslider( 0 ); } }); $target.on('woocommerce_gallery_init_zoom', function(){ quickshop_init_zoom( container.find('.woocommerce-product-gallery__image').eq(0), $target ); }); container.find('form.variations_form').wc_variation_form(); container.find('form.variations_form .variations select').change(); $('body').trigger('wc_fragments_loaded'); container.find('form.variations_form').on('click', '.reset_variations', function(){ $(this).parents('.variations').find('.ts-product-attribute .option').removeClass('selected'); }); } }); }); function quickshop_init_zoom( zoomTarget, $target ){ if( typeof $.fn.zoom != 'function' ){ return; } var galleryWidth = $target.width(), zoomEnabled = false; $( zoomTarget ).each( function( index, target ) { var image = $( target ).find( 'img' ); if ( image.attr( 'data-large_image_width' ) > galleryWidth ) { zoomEnabled = true; return false; } } ); /* But only zoom if the img is larger than its container. */ if ( zoomEnabled ) { var zoom_options = $.extend( { touch: false }, loobek_params.zoom_options ); if ( 'ontouchstart' in document.documentElement ) { zoom_options.on = 'click'; } zoomTarget.trigger( 'zoom.destroy' ); zoomTarget.zoom( zoom_options ); setTimeout( function() { if ( zoomTarget.find(':hover').length ) { zoomTarget.trigger( 'mouseover' ); } }, 100 ); } } $(document).on('click', '.ts-popup-modal .close, .ts-popup-modal .overlay', function(){ $('.ts-popup-modal').removeClass('show'); $('.ts-popup-modal .quickshop-content').html(''); /* prevent conflict with lightbox on single product */ $('body').removeClass('opening-quickshop'); }); /** Wishlist **/ $(document).on('click', '.add_to_wishlist, .product a.compare:not(.added)', function(){ $(this).addClass('loading'); }); $('body').on('added_to_wishlist', function(){ ts_update_tini_wishlist(); $('.add_to_wishlist').removeClass('loading'); $('.yith-wcwl-wishlistaddedbrowse.show, .yith-wcwl-wishlistexistsbrowse.show').parent('.button-in.wishlist').addClass('added'); }); $('body').on('removed_from_wishlist added_to_cart', function(){ if( $('.wishlist_table').length ){ ts_update_tini_wishlist(); } }); /** Compare **/ $('body').on('yith_woocompare_open_popup', function(){ $('.product a.compare').removeClass('loading'); }); /*** Color Swatch - Product Gallery ***/ $(document).on('click', '.products .product .color-swatch > div, .products .product .ts-product-galleries > div', function(){ $(this).addClass('active').siblings().removeClass('active'); /* Change thumbnail */ $(this).closest('.product').find('figure img:first').attr('src', $(this).data('thumb')).removeAttr('srcset sizes'); /* Change price */ var term_id = $(this).data('term_id'); if( typeof term_id != 'undefined' ){ var variable_prices = $(this).parent().siblings('.variable-prices'); var price_html = variable_prices.find('[data-term_id="'+term_id+'"]').html(); $(this).closest('.product').find('.meta-wrapper .price:not(.hidden-price)').html( price_html ).addClass('variation-price'); } }); /*** Product Stock - Variable Product ***/ function single_variable_product_reset_stock( wrapper ){ var stock_html = wrapper.find('.availability').data('original'); var classes = wrapper.find('.availability').data('class'); if( classes == '' ){ classes = 'in-stock'; } wrapper.find('.availability .availability-text').html(stock_html); wrapper.find('.availability').removeClass('in-stock out-of-stock').addClass(classes); } $(document).on('found_variation', 'form.variations_form', function( e, variation ){ var wrapper = $(this).parents('.summary'); if( wrapper.find('.single_variation .stock').length > 0 ){ var stock_html = wrapper.find('.single_variation .stock').html(); var classes = wrapper.find('.single_variation .stock').hasClass('out-of-stock')?'out-of-stock':'in-stock'; wrapper.find('.availability .availability-text').html(stock_html); wrapper.find('.availability').removeClass('in-stock out-of-stock').addClass(classes); } else{ single_variable_product_reset_stock( wrapper ); } if( typeof variation.discount_percent != 'undefined' && variation.discount_percent ){ wrapper.find('.ts-discount-percent').removeClass('hidden'); wrapper.find('.ts-discount-percent span').html(variation.discount_percent); } else{ wrapper.find('.ts-discount-percent').addClass('hidden'); } if( typeof variation.low_stock_notice != 'undefined' ){ wrapper.find('.ts-low-stock-notice').html(variation.low_stock_notice); } }); $(document).on('reset_image', 'form.variations_form', function(){ var wrapper = $(this).parents('.summary'); single_variable_product_reset_stock( wrapper ); wrapper.find('.ts-discount-percent').addClass('hidden'); wrapper.find('.ts-low-stock-notice').html(''); }); /*** Variation attribute ***/ $(document).on('change', 'form.variations_form .variations select', function(){ var val = $(this).val(); var text = val.length ? $(this).find('option[value="' + val + '"]').text() : ''; var label = $(this).parent().siblings('.label'); if( label.find('.selected-value').length ){ label.find('.selected-value').text(text); } else{ label.append('' + text + ''); } }); $('form.variations_form .variations select').trigger('change'); /*** Variation price ***/ $(document).on('found_variation', 'form.variations_form', function(e, variation){ var summary = $(this).parents('.summary'); if( variation.price_html ){ summary.find('.ts-variation-price').html( variation.price_html ).removeClass('hidden'); summary.find('p.price').addClass('hidden'); } }); $(document).on('reset_image', 'form.variations_form', function(){ var summary = $(this).parents('.summary'); summary.find('p.price').removeClass('hidden'); summary.find('.ts-variation-price').addClass('hidden'); }); /*** Hide product attribute if not available ***/ $(document).on('update_variation_values', 'form.variations_form', function(){ if( $(this).find('.ts-product-attribute').length > 0 ){ $(this).find('.ts-product-attribute').each(function(){ var attr = $(this); var values = []; attr.siblings('select').find('option').each(function(){ if( $(this).attr('value') ){ values.push( $(this).attr('value') ); } }); attr.find('.option').removeClass('hidden'); attr.find('.option').each(function(){ if( $.inArray($(this).attr('data-value'), values) == -1 ){ $(this).addClass('hidden'); } }); }); } }); /*** Single ajax add to cart ***/ if( typeof loobek_params != 'undefined' && loobek_params.ajax_add_to_cart == 1 && !$('body').hasClass('woocommerce-cart') ){ $(document).on('submit', '.product:not(.product-type-external) .summary form.cart', function(e){ e.preventDefault(); var form = $(this); var product_url = form.attr('action'); var data = form.serialize(); if( !form.hasClass('variations_form') && !form.hasClass('grouped_form') ){ data += '&add-to-cart=' + form.find('[name="add-to-cart"]').val() } form.find('.single_add_to_cart_button').removeClass('added').addClass('loading'); $.post(product_url, data, function( result ){ $( document.body ).trigger('wc_fragment_refresh'); var message_wrapper = $('#ts-ajax-add-to-cart-message'); var error = ''; result = $('
' + result + '
'); if( result.find('.woocommerce-error').length ){ error = result.find('.woocommerce-error li:first').html(); } form.find('.single_add_to_cart_button').removeClass('loading').addClass('added'); message_wrapper.removeClass('error'); if( error ){ message_wrapper.addClass('error'); message_wrapper.find('.error-message').html( error ); form.find('.single_add_to_cart_button').removeClass('added'); } message_wrapper.addClass('show'); setTimeout(function(){ message_wrapper.removeClass('show'); }, 2000); }); }); } /*** Grouped Product ***/ $(document).on('change', '.grouped-product-item-checkbox', function(){ $(this).parent('label').toggleClass('checked'); var qty = $(this).is(':checked') ? ( $(this).parents('.grouped_form').find('> .quantity input.qty').length ? $(this).parents('.grouped_form').find('> .quantity input.qty').val() : 1 ) : 0; $(this).parents('.woocommerce-grouped-product-list-item').find('input.qty').val( qty ); }); $(document).on('change', '.grouped_form > .quantity input.qty', function(){ var qty = $(this).val(); $(this).parents('.grouped_form').find('.woocommerce-grouped-product-list-item').each(function(i, e){ if( $(e).find('.grouped-product-item-checkbox').is(':checked') ){ $(e).find('input.qty').val( qty ); } }); }); /*** Extra Products ***/ $(document).on('change', '.ts-extra-products-checkbox', function(){ var wrapper = $(this).parents('.ts-extra-products-wrapper'); $(this).parent('label').toggleClass('checked'); var label = $(this).siblings('span'); label.html( $(this).is(':checked') ? label.data('checked') : label.data('unchecked') ); var ids = new Array(); wrapper.find('.ts-extra-products-checkbox').each(function(i, e){ if( $(e).is(':checked') ){ ids.push( $(e).val() ); } }); wrapper.find('.ts-extra-products-value').val( ids.join(',') ); }); /*** Custom Orderby on Product Page ***/ $('form.woocommerce-ordering ul.orderby ul a').on('click', function(e){ e.preventDefault(); if( $(this).hasClass('current') ){ return; } var form = $('form.woocommerce-ordering'); var data = $(this).attr('data-orderby'); form.find('select.orderby').val(data).trigger('change'); }); /*** Per page on Product page ***/ $('form.product-per-page-form ul.perpage ul a').on('click', function(e){ e.preventDefault(); if( $(this).hasClass('current') ){ return; } var form = $('form.product-per-page-form'); var data = $(this).attr('data-perpage'); form.find('select.perpage').val(data); form.submit(); }); /*** Widget toggle ***/ $('.ts-sidebar .widget-title-wrapper a.block-control, .style-filter-popup .filter-widget-area .widget-title-wrapper a.block-control').on('click', function(e){ e.preventDefault(); $(this).toggleClass('active'); $(this).parent().siblings(':not(script)').toggleClass('active'); }); /*** Sidebar Filter ***/ $(window).on('ts_set_top_shop_elements', function(){ var top = 0; top += $('.header-sticky.is-sticky').length ? $('.header-sticky.is-sticky').height() : 0; top += $('#wpadminbar').length ? $('#wpadminbar').height() : 0; if( $(window).width() < 768 && $('.before-loop-wrapper').length ){ $('.before-loop-wrapper').css( 'top', top ); } if( $(window).width() > 1200 && $('div.product.summary-scrolling:not(.thumbnail-layout-slider-3-col)').length ){ top += 30; $('.product-images-summary .summary, .bought-together-layout-vertical div.yith-wfbt-section').css( 'top', top ); } }); /*** Sort by toggle ***/ $('.woocommerce-ordering li .orderby-current, .product-per-page-form li .perpage-current').on('click', function(e){ $(this).siblings('.dropdown').fadeToggle(200); $(this).toggleClass('active'); $(this).parent().parent().toggleClass('active'); var type = $(this).hasClass('orderby-current')?'perpage':'orderby'; hide_orderby_per_page_dropdown( type ); }); function hide_orderby_per_page_dropdown( type ){ if( type == 'orderby' ){ var selector = $('.woocommerce-ordering li .orderby-current'); } else if( type == 'perpage' ){ var selector = $('.product-per-page-form li .perpage-current'); } else{ var selector = $('.woocommerce-ordering li .orderby-current, .product-per-page-form li .perpage-current'); } selector.siblings('.dropdown').fadeOut(200); selector.removeClass('active'); selector.parent().parent().removeClass('active'); } /* Image Lazy Load */ function lazyload_slider_middle_navigation_position( img ){ if( img.parents('.swiper').length && !img.parents('.swiper.lazy-recalc-nav-pos').length && img.parents('.swiper-slide-active').length ){ img.parents('.swiper').addClass('lazy-recalc-nav-pos'); $(window).trigger('ts_slider_middle_navigation_position', [img.parents('.swiper')]); img.on('load', function(){ /* recalc if image is not loaded */ $(window).trigger('ts_slider_middle_navigation_position', [img.parents('.swiper')]); }); } } if( $('img.ts-lazy-load').length ){ $(window).on('scroll ts_lazy_load', function(){ var scroll_top = $(this).scrollTop(); var window_height = $(this).height(); $('img.ts-lazy-load:not(.loaded)').each(function(){ if( $(this).data('src') && $(this).offset().top < scroll_top + window_height + 900 ){ $(this).attr('src', $(this).data('src')).addClass('loaded'); lazyload_slider_middle_navigation_position( $(this) ); } }); }); if( $('img.ts-lazy-load:first').offset().top < $(window).scrollTop() + $(window).height() + 200 ){ $(window).trigger('ts_lazy_load'); } } /* WooCommerce Quantity Increment */ $( document ).on( 'click', '.plus, .minus', function() { var $qty = $( this ).closest( '.quantity' ).find( '.qty' ), currentVal = parseFloat( $qty.val() ), max = parseFloat( $qty.attr( 'max' ) ), min = parseFloat( $qty.attr( 'min' ) ), step = $qty.attr( 'step' ); if ( ! currentVal || currentVal === '' || currentVal === 'NaN' ) currentVal = 0; if ( max === '' || max === 'NaN' ) max = ''; if ( min === '' || min === 'NaN' ) min = 0; if ( step === 'any' || step === '' || step === undefined || parseFloat( step ) === 'NaN' ) step = 1; if ( $( this ).is( '.plus' ) ) { if ( max && ( max == currentVal || currentVal > max ) ) { $qty.val( max ); } else { $qty.val( currentVal + parseFloat( step ) ); } } else { if ( min && ( min == currentVal || currentVal < min ) ) { $qty.val( min ); } else if ( currentVal > 0 ) { $qty.val( currentVal - parseFloat( step ) ); } } $qty.trigger( 'change' ); }); /* Search */ if( typeof loobek_params != 'undefined' && loobek_params.ajax_search == 1 ){ ts_ajax_search(); } $(document).on('click', '.search-button .icon', function(){ var is_active = $(this).hasClass('active'); setTimeout(function(){ $('#ts-search-sidebar input[name="s"]').focus(); }, 600); if( is_active ){ $(this).removeClass('active'); $('#ts-search-sidebar').removeClass('active'); $('body').removeClass('floating-sidebar-active'); }else{ /* RESET BUTTON */ $('.ts-mobile-icon-toggle .icon, #group-icon-header, #ts-shopping-cart-sidebar, .shopping-cart-wrapper .cart-control, .account-link .icon-toggle, .ts-tiny-account-wrapper, #main-content, .filter-widget-area-button, #ts-filter-widget-area, .ts-sidebar').removeClass('active'); $(this).addClass('active'); $('#ts-search-sidebar').addClass('active'); ts_mobile_group_button_handle(); } }); $(document).on('click', '.account-link .icon-toggle', function(){ var is_active = $(this).hasClass('active'); if( is_active ){ $(this).removeClass('active'); $('.ts-tiny-account-wrapper').removeClass('active'); $('body').removeClass('floating-sidebar-active'); }else{ /* RESET BUTTON */ $('.ts-mobile-icon-toggle .icon, #group-icon-header, .search-button .icon, #ts-search-sidebar, #ts-shopping-cart-sidebar, .shopping-cart-wrapper .cart-control, #main-content, .filter-widget-area-button, #ts-filter-widget-area, .ts-sidebar').removeClass('active'); $(this).addClass('active'); $('.ts-tiny-account-wrapper').addClass('active'); ts_mobile_group_button_handle(); } }); /* Shopping Cart Sidebar */ if( $('#ts-shopping-cart-sidebar').length ){ $(document).on('click', '.shopping-cart-wrapper .cart-control', function(e){ e.preventDefault(); var is_active = $(this).hasClass('active'); if( is_active ){ $(this).removeClass('active'); $('#ts-shopping-cart-sidebar').removeClass('active'); $('body').removeClass('floating-sidebar-active'); }else{ /* RESET BUTTON */ $('.ts-mobile-icon-toggle .icon, #group-icon-header, .search-button .icon, #ts-search-sidebar, .account-link .icon-toggle, .ts-tiny-account-wrapper, #main-content, .filter-widget-area-button, #ts-filter-widget-area, .ts-sidebar').removeClass('active'); $(this).addClass('active'); $('#ts-shopping-cart-sidebar').addClass('active'); ts_mobile_group_button_handle(); } }); } $('.ts-floating-sidebar .overlay, .ts-floating-sidebar .close').on('click', function(){ /* RESET BUTTON */ $('.ts-mobile-icon-toggle .icon, #group-icon-header, .search-button .icon, #ts-search-sidebar, #ts-shopping-cart-sidebar, .shopping-cart-wrapper .cart-control, .account-link .icon-toggle, .ts-tiny-account-wrapper, #main-content, .filter-widget-area-button, #ts-filter-widget-area, .ts-sidebar').removeClass('active'); $('body').removeClass('floating-sidebar-active'); }); /* Add To Cart Effect */ if( !$('body').hasClass('woocommerce-cart') ){ $(document.body).on('added_to_cart', function( e, fragments, cart_hash, $button ){ /* Show Cart Sidebar */ if( typeof loobek_params != 'undefined' && loobek_params.show_cart_after_adding == 1 ){ $('.shopping-cart-wrapper .cart-control').trigger('click'); return; } if( typeof loobek_params != 'undefined' && typeof $button != 'undefined' ){ /* Cart Fly Effect */ if( loobek_params.add_to_cart_effect == 'fly_to_cart' ){ var cart = $('.shopping-cart-wrapper'); if( cart.length == 2 ){ if( $(window).width() > 767 ){ cart = $('.shopping-cart-wrapper:not(.mobile-cart)'); } else{ cart = $('.shopping-cart-wrapper.mobile-cart'); } } if( cart.length == 1 && cart.offset().left ){ var product_img = $button.closest('section.product').find('figure img').eq(0); if( product_img.length == 1 ){ var effect_time = 800; var cart_in_sticky = $('.is-sticky .shopping-cart-wrapper').length; if( cart_in_sticky ){ effect_time = 500; } var imgclone_height = product_img.width()?150 * product_img.height() / product_img.width():150; var imgclone_small_height = product_img.width()?50 * product_img.height() / product_img.width():50; var imgclone = product_img.clone().offset({top: product_img.offset().top, left: product_img.offset().left}) .css({'opacity': '0.6', 'position': 'absolute', 'height': imgclone_height + 'px', 'width': '150px', 'z-index': '99999999'}) .appendTo($('body')) .animate({'top': cart.offset().top + cart.height()/2, 'left': cart.offset().left + cart.width()/2, 'width': 50, 'height': imgclone_small_height}, effect_time, 'linear'); if( !cart_in_sticky ){ $('body,html').animate({ scrollTop: '0px' }, effect_time); } imgclone.animate({ 'width': 0 ,'height': 0 }, function(){ $(this).detach() }); } } } /* Cart Popup */ if( loobek_params.add_to_cart_effect == 'show_popup' && wc_add_to_cart_params.cart_redirect_after_add == 'no' ){ var product_id = $button.attr('data-product_id'); var container = $('#ts-add-to-cart-popup-modal'); container.addClass('loading'); $.ajax({ type : 'POST' ,url : loobek_params.ajax_url ,data : {action : 'loobek_load_product_added_to_cart', product_id: product_id} ,success : function(response){ container.find('.add-to-cart-popup-content').html( response ); container.removeClass('loading').addClass('show'); } }); } } }); } /* Show cart after removing item */ $(document.body).on('click', '.shopping-cart-wrapper .remove_from_cart_button', function(){ $('.shopping-cart-wrapper:not(.mobile-cart)').addClass('updating'); }); $(document.body).on('removed_from_cart', function(){ if( !$('.shopping-cart-wrapper:not(.mobile-cart)').is(':hover') ){ $('.shopping-cart-wrapper').removeClass('updating'); } }); /* Change cart item quantity */ $(document).on('change', '.ts-tiny-cart-wrapper .qty', function(){ var qty = parseFloat($(this).val()); var max = parseFloat($(this).attr('max')); if( max !== 'NaN' && max < qty ){ qty = max; $(this).val( max ); } var cart_item_key = $(this).attr('name').replace('cart[', '').replace('][qty]', ''); $(this).parents('.woocommerce-mini-cart-item').addClass('loading'); $('.shopping-cart-wrapper:not(.mobile-cart)').addClass('updating'); $('.woocommerce-message').remove(); $.ajax({ type : 'POST' ,url : loobek_params.ajax_url ,data : {action : 'loobek_update_cart_quantity', qty: qty, cart_item_key: cart_item_key} ,success : function(response){ if( !response ){ return; } $( document.body ).trigger( 'added_to_cart', [ response.fragments, response.cart_hash ] ); if( !$('.shopping-cart-wrapper:not(.mobile-cart)').is(':hover') ){ $('.shopping-cart-wrapper').removeClass('updating'); } } }); }); $(document).on('mouseleave', '.shopping-cart-wrapper.updating',function(){ $(this).removeClass('updating'); }); /* Filter Widget Area */ $('.filter-widget-area-button a').on('click', function(){ $('.filter-widget-area-button, #ts-filter-widget-area, .ts-sidebar, #main-content').toggleClass('active'); ts_mobile_group_button_handle(); hide_orderby_per_page_dropdown('both'); return false; }); $('.ts-sidebar aside > .close').on('click', function(){ $('body').removeClass('floating-sidebar-active'); $('.filter-widget-area-button, .ts-sidebar, #main-content').removeClass('active'); return false; }); /* Product Columns Selector */ $('.ts-product-columns-selector span').on('click', function(){ var col_class = $(this).data('class'); $(this).addClass('selected').siblings().removeClass('selected'); $('#main-content .woocommerce.main-products').removeClass('columns-1 columns-2 columns-3 columns-4 columns-5 big-thumbnail').addClass(col_class); }); /* Quantity on shop page */ $(document).on('change', '.products .product input[name="quantity"]', function(){ var add_to_cart_button = $(this).parents('.product').find('.add_to_cart_button'); var quantity = parseInt($(this).val()); add_to_cart_button.attr('data-quantity', quantity); /* For non ajax */ var href = '?add-to-cart=' + add_to_cart_button.eq(0).attr('data-product_id') + '&quantity=' + quantity; add_to_cart_button.attr('href', href); }); /* Product On Sale Checkbox */ $('.product-on-sale-form input[type="checkbox"]').on('change', function(){ $(this).parents('form').submit(); }); /* Single Product - Variable Product options */ $(document).on('click', '.variations_form .ts-product-attribute .option a', function(){ var _this = $(this); var val = _this.closest('.option').data('value'); var selector = _this.closest('.ts-product-attribute').siblings('select'); if( selector.length > 0 ){ if( selector.find('option[value="' + val + '"]').length > 0 ){ selector.val(val).change(); _this.closest('.ts-product-attribute').find('.option').removeClass('selected'); _this.closest('.option').addClass('selected'); } } return false; }); $('.variations_form').on('click', '.reset_variations', function(){ $(this).closest('.variations').find('.ts-product-attribute .option').removeClass('selected'); }); }); /*** Mega menu ***/ var ts_mega_menu_timeout = 0; function ts_mega_menu_change_state(){ if( Math.max( window.outerWidth, jQuery(window).width() ) > 767 ){ clearTimeout( ts_mega_menu_timeout ); ts_mega_menu_timeout = setTimeout(function(){ var padding_left = 0, container_width = 0; var container = jQuery('.header-middle .container:first'); var container_stretch = jQuery('.header-sticky'); if( container.length <= 0 ){ container = jQuery('.header-sticky'); if( container.length <= 0 ){ return; } container_width = container.outerWidth(); } else{ container_width = container.width(); padding_left = parseInt(container.css('padding-left')); } var container_offset = container.offset(); var container_stretch_width = container_stretch.outerWidth(); var container_stretch_offset = container_stretch.offset(); jQuery('.ts-menu nav.main-menu > ul.menu > .ts-megamenu-fullwidth').each(function(index, element){ var current_offset = jQuery(element).offset(); if( jQuery(element).hasClass('ts-megamenu-fullwidth-stretch') ){ var left = current_offset.left - container_stretch_offset.left; jQuery(element).children('ul.sub-menu').css({'width':container_stretch_width+'px','left':-left+'px','right':'auto'}); } else{ var left = current_offset.left - container_offset.left - padding_left; jQuery(element).children('ul.sub-menu').css({'width':container_width+'px','left':-left+'px','right':'auto'}); } }); jQuery('.ts-menu nav.main-menu > ul.menu').children('.ts-megamenu-columns-1, .ts-megamenu-columns-2, .ts-megamenu-columns-3, .ts-megamenu-columns-4').each(function(index, element){ jQuery(element).children('ul.sub-menu').css({'max-width':container_width+'px'}); var sub_menu_width = jQuery(element).children('ul.sub-menu').outerWidth(); var item_width = jQuery(element).outerWidth(); jQuery(element).children('ul.sub-menu').css({'left':'-'+(sub_menu_width/2 - item_width/2)+'px','right':'auto'}); var container_left = container_offset.left; var container_right = container_left + container_width; var item_left = jQuery(element).offset().left; var overflow_left = (sub_menu_width/2 > (item_left + item_width/2 - container_left)); var overflow_right = ((sub_menu_width/2 + item_left + item_width/2) > container_right); if( overflow_left ){ var left = item_left - container_left - padding_left; jQuery(element).children('ul.sub-menu').css({'left':-left+'px','right':'auto'}); } if( overflow_right && !overflow_left ){ var left = item_left - container_left - padding_left; left = left - ( container_width - sub_menu_width ); jQuery(element).children('ul.sub-menu').css({'left':-left+'px','right':'auto'}); } }); },100); } else{ /* Mobile menu action */ jQuery('#wpadminbar').css('position', 'fixed'); } } function ts_mobile_group_button_handle(){ if( jQuery(window).width() < 768 ){ var notice_height = jQuery('.ts-store-notice').length && !jQuery('.ts-header.is-sticky').length ? jQuery('.ts-store-notice').outerHeight() : 0; var admin_bar_height = jQuery('#wpadminbar').length ? jQuery('#wpadminbar').height() : 0; var header_height = jQuery('.header-template').outerHeight(); var menu_bottom_height = jQuery('#ts-mobile-button-bottom').length ? jQuery('#ts-mobile-button-bottom').outerHeight() : 0; var sum_height = notice_height + admin_bar_height + header_height; jQuery('body').addClass('floating-sidebar-active'); jQuery('#ts-search-sidebar .ts-sidebar-content, #ts-shopping-cart-sidebar .ts-sidebar-content, #group-icon-header, .ts-tiny-account-wrapper .dropdown-container').css({ 'top': sum_height, 'bottom': menu_bottom_height }); /* SHOP SIDEBAR */ if( jQuery('#main-content').hasClass('active') ){ var top = jQuery('.sticky-wrapper .header-template').length ? sum_height : admin_bar_height; jQuery('.ts-sidebar, #ts-filter-widget-area .ts-sidebar-content').css( 'top', top ); } } } function ts_mobile_menu_handle(){ jQuery('.ts-mobile-icon-toggle .icon').on('click', function(){ var is_active = jQuery(this).hasClass('active'); if( is_active ){ jQuery(this).removeClass('active'); jQuery('body').removeClass('floating-sidebar-active'); jQuery('#group-icon-header').removeClass('active'); } else{ /* RESET BUTTON */ jQuery('.search-button .icon, #ts-search-sidebar, #ts-shopping-cart-sidebar, .shopping-cart-wrapper .cart-control, .account-link .icon-toggle, .ts-tiny-account-wrapper, #main-content, .filter-widget-area-button, #ts-filter-widget-area, .ts-sidebar').removeClass('active'); jQuery(this).addClass('active'); jQuery('#group-icon-header').addClass('active'); ts_mobile_group_button_handle(); } }); /* Main Menu Drop Icon */ jQuery('.ts-menu nav.main-menu .ts-menu-drop-icon').on('click', function(){ var is_active = jQuery(this).hasClass('active'); var sub_menu = jQuery(this).siblings('.sub-menu'); jQuery('.ts-menu nav.main-menu .ts-menu-drop-icon').removeClass('active'); jQuery('.ts-menu nav.main-menu .sub-menu').hide(); jQuery(this).parents('.sub-menu').show(); jQuery(this).parents('.sub-menu').siblings('.ts-menu-drop-icon').addClass('active'); if( sub_menu.length > 0 ){ if( is_active ){ sub_menu.fadeOut(250); jQuery(this).removeClass('active'); } else{ sub_menu.fadeIn(250); jQuery(this).addClass('active'); } } }); /* Mobile Menu Drop Icon */ if( jQuery('.ts-menu nav .ts-menu-drop-icon').length > 0 ){ jQuery('.ts-menu nav .sub-menu').hide(); } jQuery('.ts-menu.mobile-menu-wrapper .ts-menu-drop-icon').on('click', function(){ var is_active = jQuery(this).hasClass('active'); var sub_menu = jQuery(this).siblings('.sub-menu'); var li_parent = jQuery(this).parent(); var ul_submenu = jQuery(this).closest('.sub-menu'); jQuery('#group-icon-header').addClass('not-first-level'); sub_menu.css('top', jQuery('#group-icon-header .menu-title').outerHeight()); if( is_active ){ if( ul_submenu.length ){ var z_index = ul_submenu.css('z-index'); z_index = parseInt(z_index) - 1; ul_submenu.css('z-index', z_index); ul_submenu.css('overflow', 'auto'); } else{ jQuery('#group-icon-header .mobile-menu-wrapper').css('overflow', 'auto'); } sub_menu.find('.ts-menu-drop-icon').removeClass('active'); li_parent.removeClass('active'); jQuery(this).removeClass('active'); if( ul_submenu.length == 0 ){ /* First level */ jQuery('#group-icon-header').removeClass('not-first-level'); } else{ if( ul_submenu.siblings('a').find('.menu-label').length ){ var menu_title_back = ul_submenu.siblings('a').find('.menu-label').text(); } else{ var menu_title_back = ul_submenu.siblings('a').text(); } } jQuery('#group-icon-header .menu-title span').text(menu_title_back); } else{ if( ul_submenu.length ){ var z_index = ul_submenu.css('z-index'); z_index = parseInt(z_index) + 1; ul_submenu.css('z-index', z_index); ul_submenu.css('overflow', 'hidden'); } else{ jQuery('#group-icon-header .mobile-menu-wrapper').scrollTop(0); jQuery('#group-icon-header .mobile-menu-wrapper').css('overflow', 'hidden'); } jQuery(this).css('top', parseInt(jQuery('#group-icon-header .logo-wrapper').outerHeight())); li_parent.addClass('active'); jQuery(this).addClass('active'); if( li_parent.find('> a .menu-label').length ){ var menu_title = li_parent.find('> a .menu-label').text(); } else{ var menu_title = li_parent.find('> a').text(); } jQuery('#group-icon-header .menu-title span').text(menu_title); } }); } /*** End Mega menu ***/ /*** Sticky Menu ***/ function ts_sticky_menu(){ var top_begin = jQuery('header.ts-header').length ? jQuery('header.ts-header').height() : 0; top_begin += jQuery(window).width() > 767 && jQuery('.ts-store-notice').length ? jQuery('.ts-store-notice').outerHeight() : 0; var sub_menu = jQuery('.main-menu > ul > li > ul.sub-menu'); setTimeout( function(){ jQuery('.header-sticky').mysticky({ topBegin: top_begin ,scrollOnTop : function (){ ts_mega_menu_change_state(); sub_menu.css('display', 'none').siblings('.ts-menu-drop-icon').removeClass('active'); setTimeout(function(){ sub_menu.css('display', ''); }, 500); jQuery(window).trigger('ts_set_top_shop_elements'); } ,scrollOnBottom : function (){ ts_mega_menu_change_state(); sub_menu.css('display', 'none').siblings('.ts-menu-drop-icon').removeClass('active'); setTimeout(function(){ sub_menu.css('display', ''); }, 500); jQuery(window).trigger('ts_set_top_shop_elements'); } }); }, 200); } /*** Custom Wishlist ***/ function ts_update_tini_wishlist(){ if( typeof loobek_params == 'undefined' ){ return; } var wishlist_wrapper = jQuery('.my-wishlist-wrapper'); if( !wishlist_wrapper.length ){ return; } wishlist_wrapper.addClass('loading'); jQuery.ajax({ type : 'POST' ,url : loobek_params.ajax_url ,data : {action : 'loobek_update_tini_wishlist'} ,success : function(response){ wishlist_wrapper.html(response); wishlist_wrapper.removeClass('loading'); } }); } /*** End Custom Wishlist***/ /*** Ajax search ***/ function ts_ajax_search(){ var search_string = ''; var search_previous_string = ''; var search_timeout; var search_delay = 700; var search_input; var search_cache_data = {}; jQuery('body').append('
'); var search_result_container = jQuery('#ts-search-result-container'); var search_result_container_sidebar = jQuery('#ts-search-sidebar .ts-search-result-container'); var header_search_wrapper = jQuery('.ts-header .search-wrapper'); var is_sidebar = false; jQuery('.ts-header .search-content input[name="s"], #ts-search-sidebar input[name="s"]').on('keyup', function(e){ is_sidebar = jQuery(this).parents('#ts-search-sidebar').length > 0; search_input = jQuery(this); search_result_container.hide(); header_search_wrapper.removeClass('active'); search_string = jQuery(this).val().trim(); if( search_string.length < 2 ){ search_input.parents('.search-content').removeClass('loading'); return; } if( search_cache_data[search_string] ){ if( !is_sidebar ){ search_result_container.html(search_cache_data[search_string]); search_result_container.fadeIn(200); header_search_wrapper.addClass('active'); } else{ search_result_container_sidebar.html(search_cache_data[search_string]); } search_previous_string = ''; search_input.parents('.search-content').removeClass('loading'); return; } clearTimeout(search_timeout); search_timeout = setTimeout(function(){ if( search_string == search_previous_string || search_string.length < 2 ){ return; } search_previous_string = search_string; search_input.parents('.search-content').addClass('loading'); jQuery.ajax({ type : 'POST' ,url : loobek_params.ajax_url ,data : {action : 'loobek_ajax_search', search_string: search_string} ,error : function(xhr,err){ search_input.parents('.search-content').removeClass('loading'); } ,success : function(response){ if( response != '' ){ response = JSON.parse(response); if( response.search_string == search_string ){ search_cache_data[search_string] = response.html; if( !is_sidebar ){ search_result_container.html(response.html); var top = search_input.offset().top + search_input.outerHeight(true); var left = Math.ceil(search_input.offset().left); var width = search_input.outerWidth(true); var border_width = parseInt(search_input.parent('.search-content').css('border-left-width')); var window_width = jQuery(window).width(); left -= border_width; width += border_width; if( width < 330 && window_width > 420 ){ width = 330; } if( (left + width) > window_width ){ /* Overflow window */ left -= (width - search_input.outerWidth(true)); } search_result_container.css({ 'position': 'absolute' ,'top': top ,'left': left ,'width': width }).fadeIn(200); header_search_wrapper.addClass('active'); } else{ search_result_container_sidebar.siblings('.popular-searches').hide(); search_result_container_sidebar.html(response.html); } search_input.parents('.search-content').removeClass('loading'); } } else{ search_input.parents('.search-content').removeClass('loading'); } } }); }, search_delay); }); jQuery(document).on('click', '.search-content .view-all-wrapper a', function(e){ e.preventDefault(); search_input.parents('form').submit(); }); search_result_container.on('mouseleave', function(){ search_result_container.hide(); header_search_wrapper.removeClass('active'); }); jQuery('body').on('click', function(){ search_result_container.hide(); header_search_wrapper.removeClass('active'); }); jQuery(window).on('orientationchange', function(){ search_previous_string = ''; search_cache_data = {}; search_result_container.hide(); header_search_wrapper.removeClass('active'); }); }