////////////////////////////////////////////////////////////// // SK JS FUNCTIONS // ////////////////////////////////////////////////////////////// jQuery(function($){ 'use strict'; ////////////////////////////////////////////////////////////// // GLOBALS // ////////////////////////////////////////////////////////////// var SK = window.SK || {}; // Document var $gb_page = $('html, body'), $gb_lang = $('html').attr('lang'), $gb_device = ( $('.sk-desktop-device').length ) ? 'desktop' : 'mobile'; var w_width = $(window).width(), w_outer_width = $(window).outerWidth(), w_height = $(window).height(), w_inner_height = window.innerHeight, w_mb_height = window.innerHeight ? window.innerHeight : $(window).height(), // Mobile iOS/Android d_height = $(document).height(); $(window).on( 'resize', function(){ w_width = $(window).width(), w_outer_width = $(window).outerWidth(), w_height = $(window).height(), w_inner_height = window.innerHeight, w_mb_height = window.innerHeight ? window.innerHeight : $(window).height(), // Mobile iOS/Android d_height = $(document).height(); }); /* const scrollArea = document.querySelector('.sk-main__content'); const Scroll = Scrollbar.init(scrollArea); */ ////////////////////////////////////////////////////////////// // SELECT WIDTH // ////////////////////////////////////////////////////////////// $.fn.selectWidth = function() { this.each(function() { var select = $(this); getWidth(); select.on( 'change', function(){ var $this = $(this); getWidth( $this ); }); function getWidth(){ var sText = select.find('option:selected').text(); var $test = $("").html(sText).css({ "font-size": select.css("font-size"), // ensures same size text "visibility": "hidden" // prevents FOUC }); $test.appendTo( select.parent() ); var width = $test.width(); $test.remove(); select.width( width + 15 ); } }); }; ////////////////////////////////////////////////////////////// // WOO HEADER // ////////////////////////////////////////////////////////////// SK.wooHeader = function() { // Ajax Header Cart if( $('.woo-header-cart').length ) { cartInit(); removeProductCartInit(); } function cartInit() { var $cart_btn = $('.h-mini-cart'), $cart_pnl = $('.woo-header-cart'); if ( !$('body').hasClass('woocommerce-cart') ) { $cart_btn.on( 'click', function(){ // Disable Scroll $('html').addClass('no--scroll'); // Append to Body $('body').append( '
' ); // Animate In TweenMax.to( $cart_pnl, 0.3, { x: '0%', autoAlpha: 1, autoRound: false, ease: Power2.easeInOut }); TweenMax.to( $('body').find('.woo-header-cart__layer'), 0.15, { autoAlpha: 1, autoRound: false, ease: Linear.easeNone }); return false; }); $('body').on( 'click', '.wh--close, .woo-header-cart__layer', function(){ killCart(); return false; }); function killCart() { TweenMax.to( $('body').find('.woo-header-cart__layer'), 0.15, { autoAlpha: 0, autoRound: false, ease: Linear.easeNone }); TweenMax.to( $cart_pnl, 0.3, { x: '100%', autoAlpha: 0, autoRound: false, ease: Power2.easeInOut, onComplete: function(){ $('html').removeClass('no--scroll'); $('.woo-header-cart__layer').remove(); } }); } } } function removeProductCartInit() { $(document).on( 'click', '.wh--bag-item a.remove_from_cart_button', function() { var product_id = $(this).attr('data-product_id'), cart_item_key = $(this).attr('data-cart_item_key'), product_container = $(this).parents('.wh--bag-item'); // Add loader product_container.block({ message: null, overlayCSS: { background: 'rgba(255,255,255,0.6)', opacity: 1, cursor: 'none' } }); $.ajax({ type: 'POST', dataType: 'json', url: wc_add_to_cart_params.ajax_url, data: { action: 'sk_woocommerce_cart_ajax_product_remove', product_id: product_id, cart_item_key: cart_item_key }, success: function(response) { if ( ! response || response.error ) return; var fragments = response.fragments; // Replace fragments if ( fragments ) { $.each( fragments, function( key, value ) { $(key).replaceWith( value ); }); } } }); return false; }); } // Search Product if( $('#wooProductModal').length ) { searchProductInit(); } function searchProductInit() { setTimeout( function(){ $('.dgwt-wcas-suggestions-wrapp').detach().insertAfter( $('.dgwt-wcas-search-form') ); }, 500); $('.h--search').on( 'click', '.h-link', function(){ $('#wooProductModal').modal('toggle'); return false; }); $('.sk-woo--trigger-search').on( 'click', function(){ $('#wooProductModal').modal('toggle'); return false; }); } // Search Product if( $('.widget_wc_aelia_currencyswitcher_widget').length ) { currencyInit(); } function currencyInit() { $('#sk-header .widget_wc_aelia_currencyswitcher_widget form .EUR, #sk-header__menu .widget_wc_aelia_currencyswitcher_widget form .EUR').text('€'); $('#sk-header .widget_wc_aelia_currencyswitcher_widget form .USD, #sk-header__menu .widget_wc_aelia_currencyswitcher_widget form .USD').text('$'); $('-').insertAfter('#sk-footer .widget_wc_aelia_currencyswitcher_widget form button:first'); } }; ////////////////////////////////////////////////////////////// // WOO GRID // ////////////////////////////////////////////////////////////// SK.wooIsotope = function() { if( $('.sk-grid__isotope').length ) { gridIsotopeInit(); } function gridIsotopeInit() { var $module_grid = $('.sk-grid__isotope'); $module_grid.each(function(){ var $container = $(this); // Isotope Run $container.isotope({ itemSelector: '.sk-grid__lp-item', percentPosition: true, masonry: { columnWidth: '.grid-sizer', }, stagger: 0, transitionDuration: 0, resize: true, }); }); } }; ////////////////////////////////////////////////////////////// // WOO SIDEBAR // ////////////////////////////////////////////////////////////// SK.wooOrderBy = function() { if( $('.woocommerce-ordering').length ) { $('.orderby').selectWidth(); } }; SK.wooFilters = function() { var sidebar = $('.sk-woo__sidebar'); $('.sk-woo__archive--filter.is--start').on( 'click', function(){ $(this).addClass('is--opened'); openSidebar(); }); $('.sk-woo__archive--filter.is--close').on( 'click', function(){ closeSidebar(); }); $('body').on( 'click', '#sk-woo__sidebar--layer', function(){ closeSidebar(); }); function openSidebar() { $('body').append( '
' ); TweenMax.to( sidebar, 0.5, { x: '0%', autoAlpha: 1, autoRound: false, ease: new Ease(BezierEasing(1.0, 0.0, 0.0, 1.0)) }); } function closeSidebar() { TweenMax.to( sidebar, 0.5, { x: '-150%', autoAlpha: 0, autoRound: false, ease: new Ease(BezierEasing(1.0, 0.0, 0.0, 1.0)) }); $('#sk-woo__sidebar--layer').remove(); $('.sk-woo__archive--filter.is--start').removeClass('is--opened'); } }; ////////////////////////////////////////////////////////////// // WOO SINGLE // ////////////////////////////////////////////////////////////// SK.wooSingle = function() { if( $('body.single-product').length ) { productStickyInit(); productLightBoxInit(); productSwiperColorsInit(); productSwiperProductInit(); productVariationsInit(); productAjaxAddToCartInit(); productFooBarInit(); productCrossellsModalInit(false); productLensPanelInit(); } function productStickyInit() { if( $gb_device == 'desktop' ) { $('#product-col--sticky').hcSticky({ top: 160, responsive: { 1024: { disable: true } } }); } } function productLightBoxInit() { $('[data-fancybox="galleryProduct"]').fancybox({ loop : true, hash : false, arrows : true, infobar : false, idleTime : 0, baseClass: "woo--fancybox", buttons: [ "close" ], animationEffect : "fade", animationDuration : 500, transitionEffect : "fade", transitionDuration: 500, }); } function productVariationsInit() { if( $('.product-type-variable').length ) { $('.sk-woo__single--summary').find('.sk-woo__single--variations').each( function(){ var $el = $(this), $list = $el.find('.variation--item'), $li_ac = $el.find('.variation--item.is--active').data('value'), $vars = $el.data('variation'); // Select first value available setTimeout( function(){ $('body').find('.variations_form select').each(function() { var el = $(this); el.find('option').each(function() { var op = $(this), op_val = op.val(); $('#' + $vars ).val( $li_ac ).trigger( 'change' ); }); }); }, 200 ); // Click $list.on( 'click', function(){ var $li = $(this); if(!$li.hasClass('is--outofstock')){ $list.removeClass('is--active'); $li.addClass('is--active'); $('#' + $vars ).val( $li.data('value') ).trigger( 'change' ); } }); }); } } function productAjaxAddToCartInit() { $(document).on( 'click', 'a.sk-woo__add-to-cart', function(e) { e.preventDefault(); var $el = $(this), $button = $el.closest('.sk-woo__product').find('.single_add_to_cart_button'), $form = $button.closest('form.cart'), product_id = $form.find('input[name=add-to-cart]').val() || $button.val(), variation_id = $form.find('input[name=variation_id]').val() || 0, product_qty = $form.find('input.qty').val(), is_variable = false, product_data = []; if( $('#lenses_options').length && $('#lenses_options').val() != '' ) { product_data = $('#lenses_options').val(); } $el.blur(); if (!product_id) return; //dataLayer.push({'event': 'addToCart'}); // Init woo_add_cart(); // Data Product Simple & Variable if( $('.product-type-variable').length ) { var variation_id = $form.find('input[name=variation_id]').val(); is_variable = true; var data = { action : 'sk_woocommerce_cart_ajax_product_add_variable_product', product_id : product_id, quantity : product_qty, variation_id : variation_id, product_data : product_data }; } else { var data = { action : 'sk_woocommerce_cart_ajax_product_add_simple_product', product_id : product_id, quantity : product_qty, product_data : product_data }; } $(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.removeClass('added').addClass('loading'); }, complete: function (response) { $button.addClass('added').removeClass('loading'); }, success: function (response) { if( response.error == true ) { var dialog = bootbox.alert({ title: response.notice_title, message: response.notice_message, className: 'woo-modal__product', centerVertical: true, backdrop: true, }); woo_added_cart(); return; } if ( response.error & response.product_url ) { window.location = response.product_url; return; } else { //$('.single_add_to_cart_button').trigger('click'); $(document.body).trigger('added_to_cart', [response.fragments, response.cart_hash, $button]); woo_added_cart(); if( $('#wooCrossellsModal').length ) { productCrossellsModalInit( true ); } else { $('.h-mini-cart').trigger('click'); } var product_form = document.querySelectorAll('.sk-woo__single--form-add-to-cart form.cart')[0]; let product_variant_id = product_form.querySelectorAll( '[name=variation_id]' ); window.dataLayer = window.dataLayer || []; if ( product_variant_id.length > 0 ) { if ( gtm4wp_last_selected_product_variation ) { // fire ga3 version /*dataLayer.push({ 'event': 'gtm4wp.addProductToCartEEC', 'ecommerce': { 'currencyCode': gtm4wp_currency, 'add': { 'products': [gtm4wp_last_selected_product_variation] } } });*/ // fire ga4 version dataLayer.push({ 'event': 'add_to_cart', 'ecommerce': { 'currency': gtm4wp_currency, 'value': gtm4wp_last_selected_product_variation.price, 'items': [ gtm4wp_map_eec_to_ga4( gtm4wp_last_selected_product_variation ) ] } }); console.log('atc_variable'); } } else { const product_id_el = gtm4wp_use_sku_instead ? product_form.querySelector( '[name=gtm4wp_sku]' ) : product_form.querySelector( '[name=gtm4wp_id]' ); const product_data = { 'id': product_id_el && product_id_el.value, 'name': product_form.querySelector( '[name=gtm4wp_name]' ) && product_form.querySelector( '[name=gtm4wp_name]' ).value, 'price': product_form.querySelector( '[name=gtm4wp_price]' ) && product_form.querySelector( '[name=gtm4wp_price]' ).value, 'category': product_form.querySelector( '[name=gtm4wp_category]' ) && product_form.querySelector( '[name=gtm4wp_category]' ).value, 'quantity': product_form.querySelector( '[name=quantity]' ) && product_form.querySelector( '[name=quantity]' ).value, 'stocklevel': product_form.querySelector( '[name=gtm4wp_stocklevel]' ) && product_form.querySelector( '[name=gtm4wp_stocklevel]' ).value, 'brand': product_form.querySelector( '[name=gtm4wp_brand]' ) && product_form.querySelector( '[name=gtm4wp_brand]' ).value }; // fire ga3 version /*dataLayer.push({ 'event': 'gtm4wp.addProductToCartEEC', 'ecommerce': { 'currencyCode': gtm4wp_currency, 'add': { 'products': [ product_data ] } } });*/ // fire ga4 version dataLayer.push({ 'event': 'add_to_cart', 'ecommerce': { 'currency': gtm4wp_currency, 'value': product_data.price * product_data.quantity, 'items': [ gtm4wp_map_eec_to_ga4( product_data ) ] } }); console.log('atc_simple'); } //dataLayer.push({'event': 'addToCart'}); //set local currencies /* gtag("set", {"currency": "EUR"}); // Enhanced E-commerce Add to cart clicks gtag("event", "add_to_cart", { "event_category":"Enhanced-Ecommerce", "event_label":"add_to_cart_click", "non_interaction": true, "items": [{ "id" : e_id, "name": e_name, "category" :e_cat, "price": e_price, "quantity" : 1 }] }); */ // fbq('track', 'AddToCart', { // content_name: e_name, // content_category: e_cat, // content_ids: [''+e_id+''], // content_type: 'product', // value: e_price, // currency: 'EUR' // }); //pys.Facebook.onWooAddToCartOnSingleEvent(product_id, 1, is_variable, $form); } } }); function woo_add_cart() { $el.find('> .lbl--add').hide(); $el.find('> .lbl--loading').show(); } function woo_added_cart() { $el.find('> .lbl--loading').hide(); $el.find('> .lbl--add').show(); } }); } function productFooBarInit() { if( $gb_device == 'mobile' && $('body').hasClass('single-product') && $('.single_add_to_cart_button').length ) { var $bar = $('.sk-woo__single--foo-bar'), $cart = $('.sk-woo__single--add-cart'); if( $cart.length ) { // Trigger $bar.find('.sk-woo__add-to-cart--fake').on('click', function(){ $('a.sk-woo__add-to-cart').trigger('click'); $gb_page.stop().animate({ scrollTop: 0 }, 600, 'easeInOutExpo' ); return false; }); // Scroll Event setTimeout( function(){ vis(); }, 100); $(window).on('scroll resize', function() { vis(); }); function vis() { var cc = $cart.offset().top, vis = ( $(window).scrollTop() > ( cc + 60 ) ); if ( vis ) { TweenMax.to( $bar, 0.2, { y: '0', autoAlpha: 1, display: 'block', ease: Linear.easeNone }); } else { TweenMax.to( $bar, 0.2, { y: '0', autoAlpha: 0, display: 'none', ease: Linear.easeNone }); } } } } } function productSwiperColorsInit() { if( $gb_device == 'mobile' && $('body').hasClass('single-product') ) { var colorSwiper = new Swiper( $('.sk-woo__single--more-colors').find('.swiper-container'), { effect : 'slide', speed : 1000, slidesPerView : 'auto', spaceBetween : 15, keyboard : true, grabCursor : true, watchOverflow : true, watchSlidesProgress : true, watchSlidesVisibility : true, preloadImages : false, lazy: { loadPrevNext: true, }, on: { lazyImageReady: function( slide,image ){ setTimeout( function(){ image.className += ' initial'; }, 10 ); }, } }); } } function productSwiperProductInit() { if( $gb_device == 'mobile' && $('body').hasClass('single-product') ) { $('.sk-woo__single--last-item').appendTo('.sk-woo__product--images-wrapper').show(); var productSwiper = new Swiper( $('.sk-woo__product--images-wrapper').find('.swiper-container'), { effect : 'slide', loop : true, speed : 1000, slidesPerView : 1, spaceBetween : 0, keyboard : true, grabCursor : true, watchOverflow : true, watchSlidesProgress : true, watchSlidesVisibility : true, preloadImages : false, lazy: { loadPrevNext: true, }, navigation: { nextEl: $('.sk-woo__product--images-wrapper').find('.swiper-button-next')[0], prevEl: $('.sk-woo__product--images-wrapper').find('.swiper-button-prev')[0], }, on: { lazyImageReady: function( slide,image ){ setTimeout( function(){ image.className += ' initial'; }, 10 ); }, } }); } } function productCrossellsModalInit( response ) { if( $('#wooCrossellsModal').length && response == true ) { var $modal = $('#wooCrossellsModal'), $btn = $modal.find('.sk-product-item__data-cart > .sk-btn'), $loader = $modal.find('.sk-form__loader'); $modal.modal('toggle'); $btn.on( 'click', function(){ TweenMax.to( $loader, 0.2, { autoAlpha: 1, display: 'block', ease: Linear.easeNone }); }); $modal.on('hidden.bs.modal', function(e) { setTimeout( function(){ $('.h-mini-cart').trigger('click'); }, 300 ); }); } } function productLensPanelInit() { if( $('.sk-panelens').length ) { var button = $('.sk-woo__add-to-lens'), panelLens = $('.sk-panelens'), lensInput = $('#lenses_options'), submitButton = panelLens.find('.product-lens__submit'), helpButton = panelLens.find('.sk-panelens__help'); if ( $('body').hasClass('single-product') ) { helpButton.on('click', function(){ var helpTitle = helpButton.data('title'), helpText = helpButton.data('content') var dialog = bootbox.alert({ title: helpTitle, message: helpText, className: 'woo-modal__product', centerVertical: true, backdrop: true, }); }); submitButton.on('click', function(){ closePanelLens(); $('.sk-woo__add-to-cart').trigger('click'); }); button.on('click', function(){ $('html').addClass('no--scroll'); if( !$('.sk-panelens__layer').length ) { $('body').append('
'); } TweenMax.to( panelLens, 0.15, { x: '0%', autoAlpha: 1, ease: Linear.easeNone, }); TweenMax.to( $('.sk-panelens__layer')[0], 0.15, { autoAlpha: 1, ease: 'none' }); $('body').on('click', '.sk-panelens__close, .sk-panelens__layer', function() { closePanelLens(); return false; }); return false; }); function closePanelLens(){ TweenMax.to( $('.sk-panelens__layer')[0], 0.15, { autoAlpha: 0, ease: 'none' }); TweenMax.to( panelLens, 0.15, { x: '100%', autoAlpha: 0, ease: Linear.easeNone, onComplete: function(){ $('html').removeClass('no--scroll'); $('.sk-panelens__layer').remove(); } }); } priceCalculation(); function priceCalculation(){ var lensArray, upgradesArray, lensOptions, extraArray; var lensCurrentPrice, upgradeCurrentPrice = 0; var defaultPrice = panelLens.find('.js-total-price').data('current-price'); defaultPrice = parseFloat(defaultPrice); // Radio Price $('.product-lens-content__item').on('change', '.js-radio-price', function(e) { e.stopImmediatePropagation(); lensArray = []; upgradesArray = []; lensOptions = []; $('.product-lens-content__upgrades').removeClass('show'); $('.product-lens-content__upgrades .js-checkbox-input').prop('checked', false); $('.product-lens-content__upgrades__sub').removeClass('show'); $('.product-lens-content__upgrades__sub .js-sub-checkbox-input').prop('checked', false); if( $(this).is(':checked') ) { var parent = $(this).closest('.product-lens-content__item'); var lensID = $(this).attr('id'), lensTitle = $(this).data('title'), lensPrice = $(this).data('price'); lensPrice = parseFloat(lensPrice); lensCurrentPrice = (defaultPrice + lensPrice); lensArray.push({ id : lensID, title: lensTitle, price: lensPrice, }); lensOptions.push({ 'lens_option' : lensArray }); lensInput.val(JSON.stringify(lensOptions)); // Output outputConsole(lensArray, upgradesArray, 'radio change'); if( parent.hasClass('has-children') ) { parent.find('.product-lens-content__upgrades').addClass('show'); if( parent.data('type') == 'checkbox' ) { var sum, extrasum; parent.find('.product-lens-content__item__upgrade').on('change', '.js-checkbox-input, .js-sub-checkbox-input, .js-sub-select-input', function(e) { e.stopImmediatePropagation(); $(this).parents('.product-lens-content__upgrades').find('.product-lens-content__upgrades__sub').removeClass('show'); if($(this).attr('id') == 'a_0_0') { $('#a_0_1').removeAttr('checked'); } if($(this).attr('id') == 'a_0_1') { $('#a_0_0').removeAttr('checked'); } sum = extrasum = 0; upgradeCurrentPrice = lensCurrentPrice; upgradesArray = $('.js-checkbox-input:checked').map(function(i) { $(this).parent('.product-lens-content__item__upgrade').find('.product-lens-content__upgrades__sub').addClass('show'); var subCheckbox = $(this).parent('.product-lens-content__item__upgrade').find('.product-lens-content__upgrades__sub .js-sub-checkbox-input'), subSelectbox = $(this).parent('.product-lens-content__item__upgrade').find('.product-lens-content__upgrades__sub .js-sub-select-input'); extraArray = []; // Sub Sub Checkbox if(subCheckbox.length) { subCheckbox.each(function(){ if( $(this).is(':checked') ) { var subUpgradeID = $(this).attr('id'), subUpgradeTitle = $(this).data('title'), subUpgradePrice = $(this).data('price'), subUpgradePrice = parseFloat(subUpgradePrice); extrasum += subUpgradePrice; extraArray.push({ id : subUpgradeID, type : 'checkbox', title : subUpgradeTitle, price : subUpgradePrice, }); } }); } // Sub Sub Select if(subSelectbox.length) { var subSelectID = subSelectbox.attr('id'), subSelectTitle = subSelectbox.data('title'), subSelectPrice = subSelectbox.data('price'), subSelectPrice = parseFloat(subSelectPrice), subSelectValue = subSelectbox.val(); extrasum += subSelectPrice; extraArray.push({ id : subSelectID, type : 'select', title: subSelectTitle, price: subSelectPrice, value: subSelectValue, }); } var upgradeID = $(this).attr('id'), upgradeTitle = $(this).data('title'), upgradePrice = $(this).data('price'); upgradePrice = parseFloat(upgradePrice); sum += upgradePrice; upgradeCurrentPrice = (lensCurrentPrice + sum + extrasum); return { id : upgradeID, type : 'checkbox', title : upgradeTitle, price : upgradePrice, extra : extraArray } }).get(); lensOptions = []; lensOptions.push({ 'lens_option' : lensArray, 'lens_suboptions' : upgradesArray }); lensInput.val(JSON.stringify(lensOptions)); panelLens.find('.js-total-price').html(upgradeCurrentPrice.toFixed(2)); // Output outputConsole(lensArray, upgradesArray, 'checkbox change'); }); } if( parent.data('type') == 'select' ) { var select = parent.find('.product-lens-content__item__upgrade .js-select-input'); var selectID = select.attr('id'), selectTitle = select.data('title'), selectPrice = select.data('price'); selectPrice = parseFloat(selectPrice); var selectValue = select.val(); upgradesArray.push({ id : selectID, type : 'select', title: selectTitle, price: selectPrice, value: selectValue, }); lensOptions = []; lensOptions.push({ 'lens_option' : lensArray, 'lens_suboptions' : upgradesArray }); console.log(lensOptions); lensInput.val(JSON.stringify(lensOptions)); // Output outputConsole(lensArray, upgradesArray, 'select autoselect'); select.on('change', function(e) { e.stopImmediatePropagation(); var selectID = $(this).attr('id'), selectTitle = $(this).data('title'), selectPrice = $(this).data('price'); selectPrice = parseFloat(selectPrice), selectValue = $(this).val(); upgradesArray = []; upgradesArray.push({ id : selectID, type : 'select', title: selectTitle, price: selectPrice, value: selectValue, }); lensOptions = []; lensOptions.push({ 'lens_option' : lensArray, 'lens_suboptions' : upgradesArray }); console.log(lensOptions); lensInput.val(JSON.stringify(lensOptions)); // Output outputConsole(lensArray, upgradesArray, 'select change'); }); } } panelLens.find('.js-total-price').html(lensCurrentPrice.toFixed(2)); submitButton.prop('disabled', false); } }); } function outputConsole(a, b, type){ setTimeout( function(){ console.groupCollapsed('Output - SetTimeout 200ms - ' + type); console.table(a); console.table(b); console.groupEnd(); }, 200); } } } } }; ////////////////////////////////////////////////////////////// // CAROUSEL // ////////////////////////////////////////////////////////////// SK.wooCarousel = function() { carouselInit(); function carouselInit() { if( $('.sk-products__swiper').length ) { $('.sk-products__swiper').each(function() { var $this = $(this), typeSwiper = $this.attr('data-options'), optSwiper = ''; // Product Cross Sells Modal 3 if( typeSwiper == 'crossells-3' ) { optSwiper = { effect : 'slide', autoHeight : true, slidesPerView : 1, speed : 600, spaceBetween : 10, keyboard : true, grabCursor : true, observer : true, observeParents : true, watchOverflow : true, watchSlidesProgress : true, watchSlidesVisibility : true, roundLengths : true, preloadImages : false, lazy : { loadPrevNext: true }, navigation: { nextEl: $this.find('.swiper-button-next')[0], prevEl: $this.find('.swiper-button-prev')[0] }, pagination: { el: $this.find('.swiper-pagination')[0], type: 'bullets', clickable: true, dynamicBullets: true }, on: { lazyImageReady: function( slide,image ){ setTimeout( function(){ image.className += ' initial'; }, 10 ); } }, }; } if( typeSwiper == 'loop-3' ) { optSwiper = { effect : 'slide', autoHeight : true, slidesPerView : 3, speed : 600, spaceBetween : 35, keyboard : true, grabCursor : true, observer : true, observeParents : true, watchOverflow : true, watchSlidesProgress : true, watchSlidesVisibility : true, roundLengths : true, preloadImages : false, lazy : { loadPrevNext: true }, breakpoints: { 1024: { slidesPerView: 1, }, 1199: { slidesPerView: 2, }, }, navigation: { nextEl: $this.find('.swiper-button-next')[0], prevEl: $this.find('.swiper-button-prev')[0] }, pagination: { el: $this.find('.swiper-pagination')[0], type: 'bullets', clickable: true, dynamicBullets: true }, on: { lazyImageReady: function( slide,image ){ setTimeout( function(){ image.className += ' initial'; }, 10 ); } }, }; } var swiper = new Swiper($this.find('> .swiper-container'), optSwiper ); }); } } }; ////////////////////////////////////////////////////////////// // CART // ////////////////////////////////////////////////////////////// SK.wooCart = function() { if( $('body.woocommerce-cart').length ) { cartSummaryInit(); cartCouponInit(); cartQuantityInit(); cartShippingInit(); cartAjaxCompleteInit(); } function cartSummaryInit() { if( $gb_device == 'desktop' ) { $('#cart-summary--sticky').hcSticky({ top: 130, responsive: { 1024: { disable: true } } }); } } function cartCouponInit() { var $coupon = $('body').find('#coupon_code_fk'); $('body').on( 'click', '.coupon-fk--show', function(){ $(this).toggleClass('is--activated'); $('.coupon-input').stop(true,true).slideFadeToggle(200); return false; }); $('body').on( 'keypress', '#coupon_code_fk', function(e) { if ( e.keyCode == 10 || e.keyCode === 13 ) { var val_coupon = $(this).val(); $('.woocommerce-cart-form .coupon').find('#coupon_code').val( val_coupon ); $('.woocommerce-cart-form .coupon').find('button').trigger('click'); } }); $('body').on( 'click', '.coupon-fk--btn', function(){ var val_coupon = $('#coupon_code_fk').val(); $('.woocommerce-cart-form .coupon').find('#coupon_code').val( val_coupon ); $('.woocommerce-cart-form .coupon').find('button').trigger('click'); }); $('body').on( 'click', '.coupon-vip-activate', function(){ // Ajax Call var f_data = { action : 'sk_woo_vip_action', cmd : 'disable_vip' }; $.ajax({ url : theme_objects.ajax_url, type: 'POST', data: f_data, success: function( html ) { $("[name='update_cart']").removeAttr('disabled'); $("[name='update_cart']").trigger("click"); }, error: function(){ console.log( 'Wishlist Error' ); } }); }); $('body').on( 'click', '.coupon-vip-deactivate', function(){ // Ajax Call var f_data = { action : 'sk_woo_vip_action', cmd : 'enable_vip' }; $.ajax({ url : theme_objects.ajax_url, type: 'POST', data: f_data, success: function( html ) { $("[name='update_cart']").removeAttr('disabled'); $("[name='update_cart']").trigger("click"); }, error: function(){ console.log( 'Wishlist Error' ); } }); }); } function cartQuantityInit() { $('.select--qty').selectpicker(); $('.select--qty').on('change', function() { setTimeout( function(){ $('.woo-update-cart-form').trigger('click'); }, 100 ); }); } function cartShippingInit() { var ship = $('#shipping_method'), s_text = ''; if( ship.find('.woocommerce-Price-amount').length ) { var s_val = ship.find('.woocommerce-Price-amount').html(); s_text = s_val; } else { var s_lbl = ship.find('label').text(), s_free = ( $gb_lang === 'it-IT' ) ? 'Gratis' : 'Free'; s_text = s_lbl.replace( 'Spedizione Gratuita', s_free ); } $('.cart_totals .cart-shipping').find('.ct--div-right').html( s_text ); } function cartAjaxCompleteInit() { var $body = $('body'); $(document).ajaxComplete( function() { if ( $body.hasClass('woocommerce-cart') ) { $gb_page.stop(); // Prevent Scroll $gb_page.animate({ scrollTop: 0 }, 0, 'easeInOutExpo', function(){ $gb_page.off('scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove'); }); // Re-iniliziate if( $gb_device == 'desktop' ) { $('#cart-summary--sticky').hcSticky( 'update', { top: 130, }); } cartQuantityInit(); cartShippingInit(); } }); } }; ////////////////////////////////////////////////////////////// // CHECKOUT // ////////////////////////////////////////////////////////////// SK.wooCheckout = function() { // SELECT if( $('.woo-custom-select, #reg_billing_gender').length ) { $('.woo-custom-select, #reg_billing_gender').select2({ minimumResultsForSearch: Infinity }); } // ORDER SUMMARY if( $('body.woocommerce-checkout').length ) { //checkoutOrderNexiPaymentInit(); checkoutOrderSummaryInit(); checkoutNewsletterInit(); checkoutInvoiceInit(); checkoutFiscaleInit(); checkoutShippingInit(); checkoutErrorInit(); } if( $('body.woocommerce-checkout:not(.woocommerce-order-received)').length ) { checkoutInternationalTelephone(); } function checkoutInternationalTelephone() { const inputWrapper = $('#billing_phone_field'); const inputField = inputWrapper.find('#billing_phone'); const inputLabel = inputWrapper.find('label[for="billing_phone"]'); const checkoutButton = $('#myButton-Billing'); const iti = intlTelInput(inputField[0], { initialCountry: "auto", showSelectedDialCode: true, geoIpLookup: function() { $.get('https://ipapi.co/json', function() {}, 'json').always(function(data) { const countryCode = (data && data.country) ? data.country : 'us'; iti.setCountry(countryCode); }); }, utilsScript: theme_objects.sk_path + '/_include/js/intlTelInput-utils.js', }); updateBillingPhonePadding(inputField, inputLabel); $(window).on('resize', function(){ updateBillingPhonePadding(inputField, inputLabel); }).trigger('resize'); inputField[0].addEventListener('countrychange', function() { updateBillingPhonePadding(inputField, inputLabel); }); function updateBillingPhonePadding(field, label) { const sizeCont = $('.iti__flag-container').width() || 0; field.css({ 'padding-left' : sizeCont + 6 + 'px' }); //label.css({ 'left' : sizeCont + 8 + 'px' }); } checkoutButton.on('click', function(){ const fullPhoneNumber = iti.getNumber(); inputField.val(fullPhoneNumber); }); $('#myButton-Prescription').on('click', function(){ setTimeout( function(){ updateBillingPhonePadding(inputField, inputLabel); }, 400); }); } function checkoutOrderNexiPaymentInit() { if( $('body').hasClass('woocommerce-order-pay') && $('#nexi_xpay_payment_form').length ) { $('body').addClass( 'order-nexi' ); } } function checkoutOrderSummaryInit() { var summary = $('.sk-woo__checkout-toogle'), trigger = summary.find('.so-block__toogle'), wrapper = summary.find('.so-block__content-wrap'); $('.sk-woo__checkout-toogle').each( function(){ var $el = $(this), trigger = $el.find('.so-block__toogle'), wrapper = $el.find('.so-block__content-wrap'); trigger.on( 'click', function() { $(this).toggleClass('is--activated'); wrapper.stop(true,true).slideFadeToggle(200); return false; }); }); } function checkoutNewsletterInit() { if( $('#newsletter_check').length ) { $('body').on( 'click', '#place_order', function(){ if( $('#newsletter_check').is(':checked') ) { Cookies.set( 'sk_check_newsletter', '1', { expires: 1, path: '/' } ); } }); } } function checkoutInvoiceInit() { $('.woocommerce-toggle-fields').each( function(){ var wrap = $(this), trig = wrap.find('.field-wrap-toggle'), fields = wrap.find('.woocommerce-toggle-wrap'); trig.on('change', function() { if( $(this).is('checked') ) { fields.stop(true,true).slideFadeToggle(200); } else { fields.stop(true,true).slideFadeToggle(200); } }); }); } function checkoutFiscaleInit() { isRequiredOrOptional(); $('#billing_country').change( isRequiredOrOptional ); function isRequiredOrOptional() { var no_duties = [ 'IT', 'AT', 'BE', 'BG', 'CY', 'HR', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'IE', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'CZ', 'RO', 'SK', 'SI', 'ES', 'SE', 'HU', 'AT', 'CA', 'KR', 'JP', 'NZ', 'US', 'UM' ]; if ( $('#billing_country').val() == 'IT' ) { $('#c_fiscale').prop('required', true); $('label[for="c_fiscale"] .optional').remove(); $('label[for="c_fiscale"]').append( '*' ); $('.form-row.c_fiscale').addClass('validate-required').show(); } else { $( '#c_fiscale' ).removeProp( 'required' ); $( 'label[for="c_fiscale"] .required' ).remove(); // Avoid append this multiple times if( $('#optional-one').length == 0) { $('label[for="c_fiscale"]').append('(optional)'); } $('.form-row.c_fiscale').removeClass('validate-required').hide(); } if( $.inArray( $('#billing_country').val() , no_duties) !== -1 ) { $( '#duties' ).removeProp( 'required' ); $( 'label[for="duties"] .required' ).remove(); // Avoid append this multiple times if( $('#optional-one').length == 0) { $('label[for="duties"]').append('(optional)'); } $('.form-row.dogana_field').removeClass('validate-required').hide(); } else { $('#duties').prop('required', true); $('label[for="duties"] .optional').remove(); $('label[for="duties"]').append( '*' ); $('.form-row.dogana_field').addClass('validate-required').show(); } } } function checkoutShippingInit() { $('#shipping_method li').each(function() { var el = $(this); var text = el.find('label').text(); if( $gb_lang != 'it-IT' ) { el.find('label').text(text.replace('Spedizione Gratuita', 'Free Shipping')); } }); } function checkoutErrorInit() { $('body').on( 'click', '#place_order', function(){ $('body').find('.finalize-checks-error').fadeOut(300).html(''); }); $(document).ajaxComplete( function() { if ( $('body').hasClass('woocommerce-checkout') ) { $gb_page.stop(); // Prevent Scroll if( $('body').find('.woocommerce-NoticeGroup') ) { var notice = $('.woocommerce-NoticeGroup').html(); $('body').find('.finalize-checks-error').html(notice).fadeIn(300).css({ 'display' : 'block' }); } } checkoutShippingInit(); }); } }; ////////////////////////////////////////////////////////////// // ORDER RECEIVED // ////////////////////////////////////////////////////////////// SK.wooOrder = function() { if( $('body.woocommerce-order-received').length ) { orderNewsletterInit(); orderFormChoice(); } function orderNewsletterInit() { if( Cookies.get('sk_check_newsletter') == 1 ) { var name = $('.sk-woo__order-receveid--content').attr('data-name'), email = $('.sk-woo__order-receveid--content').attr('data-email'), gender = $('.sk-woo__order-receveid--content').attr('data-gender'); // Get Data var f_data = { action : 'sk_theme_newsletter_action', a_name : name, a_email : email, a_gender : gender }; // Ajax Call $.ajax({ url : theme_objects.ajax_url, type: 'POST', data: f_data, success: function( html ) { Cookies.set( 'sk_newsletter', '1', { expires: 365, path: '/' } ); Cookies.set( 'sk_modal_auto_newsletter', '1', { expires: 365, path: '/' } ); Cookies.remove( 'sk_check_newsletter'); } }); } } function orderFormChoice() { if( $('.order-complete-choice').length ) { $('#wooOrderCompleteChoice').modal('show'); console.log('ues'); var questions_box = $('.order-complete-choice'); var form_1 = $('.order-choice-form_1'), formWrap_1 = form_1.find('.sk-form__wrap'), formLoader_1 = form_1.find('.sk-form__loader'), formSubmit_1 = form_1.find('.sk-form__submit'); var form_2 = $('.order-choice-form_2'), formWrap_2 = form_2.find('.sk-form__wrap'), formLoader_2 = form_2.find('.sk-form__loader'), formSubmit_2 = form_2.find('.sk-form__submit'); var form_3 = $('.order-choice-form_3'), formWrap_3 = form_3.find('.sk-form__wrap'), formLoader_3 = form_3.find('.sk-form__loader'), formSubmit_3 = form_3.find('.sk-form__submit'); // Attrs var formLang = questions_box.attr('data-lang'); // User Data var formName = questions_box.attr('data-name'), formEmail = questions_box.attr('data-email') formSubmit_1.on('click', function(){ if ( form_1.skFormValidation() ) { loadIn(formLoader_1); formWrap_1.addClass('is--loaded'); var formChoice_q1 = form_1.find('.ord_choice_q1'); var formData = { action: 'sk_theme_order_complete_choice_action', lang: formLang, name: formName, email: formEmail, step: 1, choice: formChoice_q1.val(), message: '', }; $.ajax({ url : theme_objects.ajax_url, type: 'POST', data: formData, success: function(response) { $('.order-complete-choice').find('.order-choice-form_1').addClass('no--visible'); $('.order-complete-choice').find('.order-choice-form_2').removeClass('no--visible'); loadOut(formLoader_1); }, error: function(){ loadOut(formLoader_1); } }); } }); formSubmit_2.on('click', function(){ if ( form_2.skFormValidation() ) { loadIn(formLoader_2); formWrap_2.addClass('is--loaded'); var formChoice_q2 = form_2.find("input[name='ord_choice_q3']:checked"); var formData = { action: 'sk_theme_order_complete_choice_action', lang: formLang, name: formName, email: formEmail, step: 2, choice: formChoice_q2.val(), message: '' }; $.ajax({ url : theme_objects.ajax_url, type: 'POST', data: formData, success: function(response) { $('.order-complete-choice').find('.order-choice-form_2').addClass('no--visible'); $('.order-complete-choice').find('.order-choice-form_3').removeClass('no--visible'); loadOut(formLoader_2); }, error: function(){ loadOut(formLoader_2); } }); } }); formSubmit_3.on('click', function(){ if ( form_3.skFormValidation() ) { loadIn(formLoader_3); formWrap_3.addClass('is--loaded'); var formChoice_q3 = form_3.find("input[name='ord_choice_q2']:checked"), formChoice_message = form_3.find('.ord_choice_message'); var formData = { action: 'sk_theme_order_complete_choice_action', lang: formLang, name: formName, email: formEmail, step: 3, choice: formChoice_q3.val(), message: formChoice_message.val(), }; $.ajax({ url : theme_objects.ajax_url, type: 'POST', data: formData, success: function(response) { $('.order-complete-choice').find('.order-choice-form_3').addClass('no--visible'); $('.order-complete-choice').find('.form-response').removeClass('no--visible'); loadOut(formLoader_3); }, error: function(){ loadOut(formLoader_3); } }); } }); function loadIn(formLoader) { TweenMax.to( formLoader, 0.2, { autoAlpha: 1, display: 'block', ease: Linear.easeNone, onComplete: function(){ formLoader.addClass('is--loaded'); } }); } function loadOut(formLoader) { TweenMax.to( formLoader, 0.2, { autoAlpha: 0, display: 'none', ease: Linear.easeNone, onComplete: function(){ formLoader.removeClass('is--loaded'); } }); } } } }; ////////////////////////////////////////////////////////////// // WHISHLIST // ////////////////////////////////////////////////////////////// SK.wooWishlist = function() { // GENERAL if( $('.sk-woo__add-to-wishlist').length ) { wishlistInit(); } function wishlistInit() { $('body').on('click', '.sk-woo__add-to-wishlist', function(e) { e.preventDefault(); e.stopPropagation(); var cmd = '', btn_wish = $(this), prod_id = $(this).data('product_id'), url_page = window.location.href; if( !$('body').hasClass('logged-in') ) { wishlistModalInit( prod_id, url_page ); } else { if( btn_wish.hasClass('is--listed') ) { cmd = 'remove'; } else { cmd = 'add'; } // Ajax Call var f_data = { action : 'sk_woo_wishlist_action', cmd : cmd, prod_id: prod_id }; $.ajax({ url : theme_objects.ajax_url, type: 'POST', data: f_data, success: function( html ) { dataLayer.push({'event': 'WishlistAdd'}); btn_wish.toggleClass('is--listed'); }, error: function(){ console.log( 'Wishlist Error' ); } }); } }); function wishlistModalInit( prod_id, url_page ) { $('#wooWishlistModal').modal('show'); // Init wishModal( prod_id, url_page ); function wishModal( prod_id, url_page ){ // Ajax Call $('body').on('click', '.sk-woo__modal-wishlist-btn', function(e) { e.preventDefault(); var url = $(this).attr('href'); // Ajax Call var f_data = { action : 'sk_woo_wishlist_session', prod_id : prod_id, url_page : url_page, }; $.ajax({ url : theme_objects.ajax_url, type: 'POST', data: f_data, success: function( html ) { window.location.href = url; }, error: function(){ console.log( 'Wishlist Modal Error' ); } }); }); } } } // ACCOUNT if( $('.sk-woo__wishlist-account').length ) { wishlistAccountInit(); } function wishlistAccountInit() { $('body').on('click', '.sk-woo__add-to-wishlist', function(e) { var item = $(this).closest('.sk-woo__wishlist-account--item'); TweenMax.to( item, 0.35, { autoAlpha: 0, display: 'none', ease: Linear.easeNone, onComplete: function(){ item.remove(); setTimeout( function(){ if( $('.sk-woo__wishlist-account').children('.sk-woo__wishlist-account--item').length === 0 ) { $('.sk-woo__wishlist-no-products').removeClass('no--visible'); } }, 200); } }); return false; }); } }; ////////////////////////////////////////////////////////////// // GIFT CARD // ////////////////////////////////////////////////////////////// SK.wooGiftCards = function() { if( $('.gift-card-panel-title-container').length ) { //$('.gift-card-panel-title-container h2, .gift-card-panel-title-container button').removeAttr("style"); $('.form-link-gift-card-to-user').detach().insertAfter( $('.gift-card-panel-title-container') ); $('.shop_table.my_account_giftcards').wrap('
'); $('.yith-add-new-gc-my-account-button').on('click', function(){ $('.form-link-gift-card-to-user').slideDown(); }); } if( $('.single-product').length ) { if( $('.woocommerce-error').length ) { $('.woocommerce-error').hide(); $('.woocommerce-error').appendTo('.woocommerce-notices-wrapper'); $('.woocommerce-error').show(); } } faqsInit() function faqsInit(){ if( $('.sk-faqs').length ) { $('.sk-faqs').each( function(){ var container = $(this), tabs = container.find('.sk-faqs__tab'), opened = tabs.eq( parseInt( container.data('open') ) ); tabs.children('.sk-faqs__title').on( 'click', function() { var $el = $(this), $this = $el.parent(); if( !$this.hasClass('is--opened') ){ opened.removeClass('is--opened'); opened.children('div').stop(true, true).slideUp(300); if( $gb_device == 'mobile' ) { setTimeout( function(){ $('html, body').on('scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove', function(){ $('html, body').stop(); }); $('html, body').animate({ scrollTop: $el.offset().top - 75 }, 300, 'easeInOutSine', function(){ $('html, body').off('scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove'); }); }, 300); } opened = $this; $this.addClass('is--opened'); $this.children('div').stop(true, true).slideDown(300); } }); }); } } }; ////////////////////////////////////////////////////////////// // GIFT DATA // ////////////////////////////////////////////////////////////// SK.giftData = function() { if( $('#ywgc-delivery-date').length ) { giftDataInit(); } function giftDataInit() { removeBtn(); $('#ywgc-delivery-date').on('change', function(){ removeBtn(); }); $('body').on('click', '.gc-remove-data', function() { $('#ywgc-delivery-date').val(''); $('.gc-remove-data').remove(); }); } function removeBtn() { var data_input_box = $('.ywgc-postdated'); if ($gb_lang == 'it-IT') { var label_btn = 'Rimuovi data e consegna oggi'; } else { var label_btn = 'Remove date and send today'; } if( $('#ywgc-delivery-date').val() != '' ) { $('.gc-remove-data').remove(); data_input_box.append('

' + label_btn + '

'); } else { $('.gc-remove-data').remove(); } } }; ////////////////////////////////////////////////////////////// // FORMS // ////////////////////////////////////////////////////////////// SK.wooAlertForm = function() { if( $('#wooAlertStock').length ) { alertModalInit(); } function alertModalInit() { var f_modal = $('#wooAlertStock'), f_loader = f_modal.find('.sk-form__loader'), f_form = f_modal.find('.sk-form'), f_name = f_form.find('#alt_name'), f_mail = f_form.find('#alt_email'), f_gender = f_form.find('#alt_gender'), f_newsletter = f_form.find('#alt_newsletter'), f_send = f_form.find('#alt-submit'); // Keypress f_form.skFormKeypress( f_send ); // Send & Comunicate f_send.on( 'click', function() { // Validate Form if ( f_form.skFormValidation() ) { // Load In loadIn(); // Get Data var f_data = { action : 'sk_woocommerce_modal_alert_stock', a_name : f_name.val(), a_email : f_mail.val(), a_gender : f_gender.val(), a_newsletter: ( f_newsletter.is(':checked') ? 'true' : 'false' ), a_prod : f_form.data('product_id'), a_lang : $gb_lang }; // Ajax Call $.ajax({ url : theme_objects.ajax_url, type: 'POST', data: f_data, success: function( response ) { // Set Cookie if( f_newsletter.is(':checked') ) { // Get Data var n_data = { action : 'sk_theme_newsletter_action', a_name : f_name.val(), a_email : f_mail.val(), a_gender : f_gender.val() }; // Ajax Call $.ajax({ url : theme_objects.ajax_url, type: 'POST', data: n_data, success: function( html ) { Cookies.set( 'sk_newsletter', '1', { expires: 365, path: '/' } ); Cookies.set( 'sk_modal_auto_newsletter', '1', { expires: 365, path: '/' } ); } }); } // Load Out f_modal.find('.modal-form--loader-init, .modal-form--loader-last').addClass('is--done'); loadOut(); // Auto-Close Modal setTimeout( function(){ f_modal.modal('hide'); }, 5000 ); // Reset Fields f_modal.on('hidden.bs.modal', function(e) { setTimeout( function(){ f_form.find('input[type="text"], input[type="email"]').val(''); f_form.find('input[type="checkbox"]').removeAttr('checked').removeAttr('selected'); f_modal.find('.modal-form--loader-init, .modal-form--loader-last').removeClass('is--done'); }, 300 ); }); }, error: function(){ // Load Out loadOut(); console.log( 'Alert Modal Stock Error' ); } }); } }); function loadIn() { TweenMax.to( f_loader, 0.2, { autoAlpha: 1, display: 'block', ease: Linear.easeNone, onComplete: function(){ f_loader.addClass('is--loaded'); } }); } function loadOut() { TweenMax.to( f_loader, 0.2, { autoAlpha: 0, display: 'none', ease: Linear.easeNone, onComplete: function(){ f_loader.removeClass('is--loaded'); } }); } } }; ////////////////////////////////////////////////////////////// // MULTISTEP CHECKOUT // ////////////////////////////////////////////////////////////// SK.wooMultistepCheckout = function() { if( $('.multistep-checkout').length ) { var step = 1; if( $('.multistep-checkout').data('prescription') ) { step = 0; $('.form-row select').select2({ minimumResultsForSearch: Infinity }); // Radio Price $('.multistep-checkout').on('change', '.checkout-prescription-radio', function(e) { $('.inner-prescription-content').removeClass('show'); if($(this).parents('.checkout-prescription__options').find('.inner-prescription-content').length){ $(this).parents('.checkout-prescription__options').find('.inner-prescription-content').addClass('show'); } }); $( document ).on( 'change', '#prescription_attachment', function() { var files = $( this )[0].files; var fsize = 0; if( $( this )[0].files.length != 0 ) { if ( window.File && window.FileReader && window.FileList && window.Blob ) { fsize = $( this )[0].files[0].size; if( fsize > 2097152 ) { $( this ).parents('.sk-form__input--content').find('.sk-form__upload-text').addClass('f--required'); $( this ).parents('.sk-form__input--content').find('.sk-form__upload--error').css({ 'display' : 'block' }); } else { $( this ).parents('.sk-form__input--content').find('.sk-form__upload-text').removeClass('f--required'); $( this ).parents('.sk-form__input--content').find('.sk-form__upload--error').css({ 'display' : 'none' }); } } else { alert( 'Please upgrade your browser, because your current browser lacks some new features we need!' ); } } else { $( this ).parents('.sk-form__input--content').find('.sk-form__upload-text').addClass('f--required'); } console.log(files); }); $('.multistep-checkout').on('change', 'select#prescription_saved', function(e) { var select = $(this), pre_od_sph = select.children('option:selected').data('pre_od_sph'), pre_od_cyl = select.children('option:selected').data('pre_od_cyl'), pre_od_axis = select.children('option:selected').data('pre_od_axis'), pre_od_add = select.children('option:selected').data('pre_od_add'), pre_os_sph = select.children('option:selected').data('pre_os_sph'), pre_os_cyl = select.children('option:selected').data('pre_os_cyl'), pre_os_axis = select.children('option:selected').data('pre_os_axis'), pre_os_add = select.children('option:selected').data('pre_os_add'), pre_pupillary = select.children('option:selected').data('pre_pupillary'); $('#prescription_od_sph').val(pre_od_sph).trigger('change'); $('#prescription_od_cyl').val(pre_od_cyl).trigger('change'); $('#prescription_od_axis').val(pre_od_axis).trigger('change'); $('#prescription_od_add').val(pre_od_add).trigger('change'); $('#prescription_os_sph').val(pre_os_sph).trigger('change'); $('#prescription_os_cyl').val(pre_os_cyl).trigger('change'); $('#prescription_os_axis').val(pre_os_axis).trigger('change'); $('#prescription_os_add').val(pre_os_add).trigger('change'); $('#prescription_pupillary_d').val(pre_pupillary).trigger('change'); }); } checkoutSteps(step); recapClick(); function checkoutSteps(step) { switch(step) { case 0: if( $('.multistep-checkout').data('prescription') ) { prescriptionCheckout(); } else { billingCheckout(); } break; case 1: billingCheckout(); break; case 2: shippingCheckout(); break; case 3: paymentCheckout(); break; } } function checkoutStepsReturn(step) { switch(step) { case '0': case '1': case '2': $('#confirm-order-flag').attr('value', '1'); break; } } function prescriptionCheckout() { if ($('#confirm-order-flag').length == 0) { $('form.woocommerce-checkout').append(''); } else { $('#confirm-order-flag').attr('value', '1'); } $('#myButton-Prescription').off('click.nextStep'); $('#myButton-Prescription').on('click.nextStep', function(){ if( $('input[name=checkout_prescription]:checked').val() == 'Prescrizione' ) { if( $('#prescription_consent').is(":checked") ){ step = 1; navSteps(step); checkoutSteps(step); contactSync(0); savePrescription(); $(document.body).trigger("update_checkout"); return false; } else { $('#prescription_consent').addClass('f--required'); return false; } } else { step = 1; navSteps(step); checkoutSteps(step); contactSync(0); savePrescription(); $(document.body).trigger("update_checkout"); return false; } }); } function billingCheckout() { if ($('#confirm-order-flag').length == 0) { $('form.woocommerce-checkout').append(''); } else { $('#confirm-order-flag').attr('value', '1'); } $('#myButton-Billing').off('click.nextStep'); $('#myButton-Billing').on('click.nextStep', function(){ $('#payment_method_bacs').trigger('click'); $('#place_order').click(); setTimeout(function(){ if( $('.checkout-step-nav').length ){ var scroll_top = $('.checkout-step-nav').offset().top; } else { var scroll_top = 0; } $gb_page.stop().animate({ scrollTop: scroll_top }, 600, 'easeInOutExpo' ); }, 1000); return false; }); $(document.body).on('checkout_error', function () { var error_count = $('.woocommerce-error li').length; if (error_count == 1) { var error_text = $('.woocommerce-error li').text(); if( error_text.replace(/\s/g, '') == 'custom_notice' ){ step = 2; navSteps(step); checkoutSteps(step); $('.woocommerce-error').hide(); contactSync(1); $('.wct-block__headings').remove(); } else { setTimeout(function(){ $gb_page.stop().animate({ scrollTop: 0 }, 600, 'easeInOutExpo' ); }, 1000); } } else { $('.woocommerce-error li').each(function(){ var error_text = $(this).text(); error_text = error_text.replace(/\s/g, ''); if (error_text == 'custom_notice'){ $(this).css('display', 'none'); } }); } }); } function shippingCheckout() { if ($('#confirm-order-flag').length == 0) { $('form.woocommerce-checkout').append(''); } else { $('#confirm-order-flag').attr('value', '1'); } var contact_email = $('#billing_email').val(); if( $('#ship-to-different-address-checkbox').is(":checked") ){ var contact_address = $('#shipping_address_1').val(), contact_cap = $('#shipping_postcode').val(), contact_city = $('#shipping_city').val(), contact_country = $('#shipping_country').val(); } else { var contact_address = $('#billing_address_1').val(), contact_cap = $('#billing_postcode').val(), contact_city = $('#billing_city').val(), contact_country = $('#billing_country').val(); } $('.step-recap-contact').find('.sr-text').html(contact_email); $('.step-recap-address').find('.sr-text').html(contact_address + ', ' + contact_cap + ' ' + contact_city + ', ' + contact_country); $('#myButton-Shipping').off('click.nextStep'); $('#myButton-Shipping').on('click.nextStep', function(){ step = 3; navSteps(step); checkoutSteps(step); $('#confirm-order-flag').val(''); contactSync(2); $(document.body).trigger("update_checkout"); return false; }); } function paymentCheckout() { var shipping_method = $('#shipping_method'), shipping_label = shipping_method.find('label').html(); $('.step-recap-shipping').find('.sr-text').html(shipping_label); $('#myButton-Confirm').on('click', function(){ $('#confirm-order-flag').val(''); $('#place_order').trigger('click'); return false; }); } function navSteps(step) { $('.step-block, .csn-step').removeClass('is--current'); $('.step-block[data-step="' + step + '"], .csn-step[data-step="' + step + '"]').addClass('is--current'); } function recapClick() { $('.sr-edit').on( 'click', function(){ var step = $(this).attr('data-step'); navSteps(step); checkoutStepsReturn(step); $(document.body).trigger("update_checkout"); }); } function contactSync(step) { var name = $('#billing_first_name').val(), email = $('#billing_email').val(), gender = $('#billing_gender').val(), newsletter = $('#newsletter_check') // Get Data var f_data = { action : 'sk_checkout_sync', a_name : name, a_email : email, a_gender : gender, a_lang : $gb_lang, a_newsletter : ( newsletter.is(':checked') ? 'true' : 'false' ), a_step : step }; // Ajax Call $.ajax({ url : theme_objects.ajax_url, type: 'POST', data: f_data, success: function( html ) { //console.log('contact_sync step: ' + step); } }); } function savePrescription() { var pre_name = $('#prescription_name').val(), pre_od_sph = $('#prescription_od_sph').val(), pre_od_cyl = $('#prescription_od_cyl').val(), pre_od_axis = $('#prescription_od_axis').val(), pre_od_add = $('#prescription_od_add').val(), pre_os_sph = $('#prescription_os_sph').val(), pre_os_cyl = $('#prescription_os_cyl').val(), pre_os_axis = $('#prescription_os_axis').val(), pre_os_add = $('#prescription_os_add').val(), pre_pupillary = $('#prescription_pupillary_d').val(); if(pre_name != ''){ // Get Data var f_data = { action : 'sk_save_prescription', pre_name : pre_name, pre_od_sph : pre_od_sph, pre_od_cyl : pre_od_cyl, pre_od_axis : pre_od_axis, pre_od_add : pre_od_add, pre_os_sph : pre_os_sph, pre_os_cyl : pre_os_cyl, pre_os_axis : pre_os_axis, pre_os_add : pre_os_add, pre_pupillary : pre_pupillary }; // Ajax Call $.ajax({ url : theme_objects.ajax_url, type: 'POST', data: f_data, success: function( html ) { console.log('ok'); $('#prescription_name').val(''); } }); } } } }; ////////////////////////////////////////////////////////////// // INIT // ////////////////////////////////////////////////////////////// $(document).ready(function(){ SK.wooHeader(); SK.wooIsotope(); SK.wooFilters(); SK.wooSingle(); SK.wooCart(); SK.wooCheckout(); SK.wooOrder(); SK.wooWishlist(); SK.wooAlertForm(); SK.wooCarousel(); SK.wooGiftCards(); SK.wooMultistepCheckout(); SK.giftData(); }); $(window).on('load', function(){ SK.wooOrderBy(); $('body').on('click', 'a.showlogin', function(e){ $('.sk-woo__checkout-toogle .so-block__toogle').trigger('click'); $gb_page.stop().animate({ scrollTop: 0 }, 600, 'easeInOutExpo' ); e.preventDefault(); e.stopPropagation(); return false; }); $(document.body).on('updated_cart_totals', function(){ window.KlarnaOnsiteService = window.KlarnaOnsiteService || [] window.KlarnaOnsiteService.push({ eventName: 'refresh-placements' }); }); }); });