1(function($) { 2 "use strict"; 3 4 var UNCODE_WC = window.UNCODE_WC || {}; 5 window.UNCODE_WC = UNCODE_WC; 6 7 function get_cart() { 8 var ajaxurl = ''; 9 10 if (window.wc_add_to_cart_params != undefined) { 11 ajaxurl = wc_add_to_cart_params.ajax_url 12 } 13 14 if (window.woocommerce_params != undefined) { 15 ajaxurl = woocommerce_params.ajax_url 16 } 17 18 if (ajaxurl) { 19 $.post({ 20 url: ajaxurl, 21 dataType: 'JSON', 22 data: { 23 action: 'woomenucart_ajax' 24 }, 25 success: function(data, textStatus, XMLHttpRequest) { 26 $('.uncode-cart-dropdown').html(data.cart); 27 if (data != '') { 28 if ( SiteParameters.uncode_wc_popup_cart_qty ) { 29 if ($('.uncode-cart .badge, .mobile-shopping-cart .badge').length) { 30 $('.uncode-cart .badge, .mobile-shopping-cart .badge').html(data.articles); 31 } else { 32 $('.uncode-cart .cart-icon-container').append('<span class="badge init-product-counter">' + data.articles + '</span>'); //$('.uncode-cart .badge').html(data.articles); 33 } 34 $(document.body).trigger('uncode_get_cart', [data.articles]); 35 } else { 36 if ($('.uncode-cart .badge, .mobile-shopping-cart .badge').length) { 37 if (data.articles > 0) { 38 $('.uncode-cart .badge, .mobile-shopping-cart .badge').html(data.articles); 39 $('.uncode-cart .badge, .mobile-shopping-cart .badge').show(); 40 } else { 41 $('.uncode-cart .badge, .mobile-shopping-cart .badge').hide(); 42 } 43 } else { 44 $('.uncode-cart .cart-icon-container').append('<span class="badge">' + data.articles + '</span>'); //$('.uncode-cart .badge').html(data.articles); 45 } 46 } 47 } 48 } 49 }); 50 } 51 52 } 53 54 function remove_from_cart() { 55 $(document).on('click', '.uncode-cart-dropdown a.remove', function(e){ 56 57 var $remove = $(this), 58 product_id = $remove.attr("data-product_id"), 59 item_key = $remove.attr("data-item_key"), 60 $li = $remove.parents('.cart-item-list').eq(0).addClass('removing-item').animate({ 61 opacity: .5 62 },150); 63 64 $.post({ 65 dataType: 'json', 66 url: wc_add_to_cart_params.ajax_url, 67 data: { 68 action: "woomenucart_remove_ajax", 69 item_key: item_key 70 }, 71 success: function(html){ 72 $li.slideUp(200, function(){ 73 get_cart(); 74 }); 75 } 76 }); 77 78 return false; 79 }); 80 } 81 82 function reset_product_image(event, variation) { 83 var $target = event.target, 84 $row = $target.closest('.row-parent', $row), 85 get_href = $('a.woocommerce-main-image', $row), 86 image_variable = $('> img', get_href), 87 getLightbox = typeof UNCODE.lightbox !== 'undefined' && !SiteParameters.lbox_enhanced ? UNCODE.lightboxArray[get_href.data('lbox')] : false; 88 89 if (SiteParameters.uncode_adaptive == true) { 90 image_variable.removeClass(['async-done', 'woocommerce-product-gallery__image-first__img']).addClass('adaptive-async'); 91 image_variable.wc_reset_variation_attr( 'src' ); 92 image_variable.wc_reset_variation_attr( 'data-path' ); 93 image_variable.wc_reset_variation_attr( 'data-guid' ); 94 UNCODE.adaptive(); 95 } 96 97 if (getLightbox != undefined && getLightbox !== false) { 98 getLightbox.refresh(); 99 } else if ( SiteParameters.lbox_enhanced ) { 100 get_href.closest('.woocommerce-product-gallery').trigger('more-items-loaded'); 101 } 102 } 103 104 function change_images(event, variation) { 105 if ($(this).closest('.tmb-woocommerce').length > 0) { 106 return; 107 } 108 109 UNCODE.single_product_variation_already_changed = true; 110 if (variation.image_src !== '') { 111 var $target = event.target, 112 $row = $target.closest('.row-parent', $row), 113 get_href = $('a.woocommerce-main-image', $row), 114 $col_bg = $('.uncol-featured-image .background-inner', $row), 115 image_variable = $('> img', get_href), 116 image_thumb = variation.image.thumb_src, 117 gallery_thumb = variation.image.gallery_thumbnail_src, 118 image_srcset = variation.image.thumb_srcset, 119 getLightbox = typeof UNCODE.lightbox !== 'undefined' && !SiteParameters.lbox_enhanced ? UNCODE.lightboxArray[get_href.data('lbox')] : false; 120 get_href.data('options', "thumbnail: '" + variation.image_src + "'"); 121 if (SiteParameters.uncode_adaptive == true) { 122 image_variable.wc_set_variation_attr( 'src', variation.image_src );
123 image_variable.wc_set_variation_attr( 'data-path', variation.uncode_image_path ); 124 image_variable.wc_set_variation_attr( 'data-guid', variation.uncode_image_guid ); 125 image_variable.removeClass(['async-done', 'woocommerce-product-gallery__image-first__img']).addClass('adaptive-async'); 126 UNCODE.adaptive(); 127 } 128 if (getLightbox != undefined && getLightbox !== false) { 129 getLightbox.refresh(); 130 } else if ( SiteParameters.lbox_enhanced ) { 131 get_href.closest('.woocommerce-product-gallery').trigger('more-items-loaded'); 132 } 133 $(window).trigger('focus'); 134 135 var $woocommerce_product_gallery_nav = $('.woocommerce-product-gallery-nav'); 136 137 if ($woocommerce_product_gallery_nav.length) { 138 var $first_thumb = $woocommerce_product_gallery_nav.find('.woocommerce-product-gallery__wrapper-nav li.woocommerce-product-gallery__first-thumb img', $row); 139 if ( SiteParameters.uncode_adaptive == true ) { 140 var data_crop = $first_thumb.attr('data-crop'), 141 data_singlew = $first_thumb.attr('data-singlew'), 142 data_singleh = $first_thumb.attr('data-singleh'); 143 144 $first_thumb 145 .attr('src', gallery_thumb) 146 .attr('data-path', variation.uncode_image_path) 147 .attr('data-guid', variation.uncode_image_guid) 148 .attr('data-uniqueid', variation.data_uniqueid) 149 .attr('data-width', variation.data_width) 150 .attr('data-height', variation.data_height) 151 .attr('data-singlew', variation.data_singlew) 152 .attr('data-singleh', variation.data_singleh) 153 .attr('data-crop', variation.data_crop); 154 155 if (!$woocommerce_product_gallery_nav.hasClass('lateral-nav-wrapper')) { 156 $first_thumb.removeClass(['async-done', 'adaptive-fetching']).addClass('adaptive-async'); 157 UNCODE.adaptive(); 158 } 159 } else { 160 $first_thumb 161 .attr('src', gallery_thumb); 162 if ( image_srcset ) { 163 $first_thumb.attr('srcset', image_srcset); 164 } 165 $(window).trigger('woocommerce_variation_has_loaded'); 166 } 167 } 168 169 if ( $col_bg.length ) { 170 var objImg = new Image(), 171 bg_img_src; 172 if ( $col_bg.hasClass( 'async-done') ) { 173 bg_img_src = variation.image_link; 174 } else { 175 bg_img_src = variation.image_src; 176 } 177 objImg.src = bg_img_src; 178 objImg.onload = function() { 179 $col_bg.animate({ opacity: 0 }, 100, function(){ 180 $col_bg.css({'background-image':'url('+bg_img_src+')'}); 181 $col_bg.animate({ opacity: 1 }, 250); 182 }); 183 } 184 } 185 } 186 } 187 188 function reset_data(event) { 189 if ( UNCODE.single_product_variation_already_changed ) { 190 var $col_bg = $('.uncol-featured-image .background-inner'), 191 $first_thumb = $('.woocommerce-product-gallery__first-thumb img'), 192 bg_img_src, 193 bg_img_srcset, 194 objImg = new Image(); 195 196 if ( $col_bg.length ) { 197 bg_img_src = $col_bg.attr('data-o_src'); 198 objImg = new Image(); 199 objImg.src = bg_img_src; 200 objImg.onload = function() { 201 $col_bg.animate({ opacity: 0 }, 100, function(){ 202 $col_bg.css({'background-image':'url('+bg_img_src+')'}); 203 $col_bg.animate({ opacity: 1 }, 250); 204 }); 205 } 206 } else if ( $first_thumb.length ) { 207 bg_img_src = $first_thumb.attr('data-o_src'); 208 bg_img_srcset = $first_thumb.attr('data-o_srcset'); 209 objImg = new Image(); 210 objImg.src = bg_img_src; 211 objImg.onload = function() { 212 $first_thumb 213 .attr('src', bg_img_src) 214 .attr('srcset', bg_img_srcset); 215 $(window).trigger('woocommerce_variation_has_loaded'); 216 } 217 } 218 } 219 } 220 221 function check_variation_values(event) { 222 var $selects = $(event.currentTarget).find('select'), 223 checkSelectValues = false; 224 $selects.each(function(){ 225 var $select = $(this); 226 if ( $select.val() !== '' ) { 227 checkSelectValues = true; 228 } 229 }); 230 231 if ( checkSelectValues ) { 232 $(event.currentTarget).removeClass('hide-clear'); 233 } else { 234 $(event.currentTarget).addClass('hide-clear'); 235 } 236 237 setTimeout(function(){ 238 $(window).trigger('woocommerce_variation_has_loaded'); 239 }, 1250); 240 } 241 242 function reloadVariations() { 243 remove_from_cart(); 244 $('body').on("added_to_cart wc_fragments_refreshed removed_from_cart", get_cart); 245 if (!$('body').hasClass('uncode-default-product-gallery')) { 246 $('.variations_form') 247 .on("show_variation", change_images) 248 .on("reset_data", reset_data) 249 .on("check_variations", check_variation_values) 250 .on('reset_image', reset_product_image); 251 } 252 } 253
254 $(document).ready(reloadVariations); 255 $(document).on('uncode-quick-view-loaded', reloadVariations); 256 257 function handleRatings() { 258 if ( $('#rating').length ) { 259 setTimeout(function(){ 260 $('.comment-form-rating').each(function(){ 261 var $wrap = $(this), 262 $stars = $('p.stars', $wrap).remove(); 263 $( 'select[name="rating"]', $wrap ).hide().before( '<p class="stars"><span><a class="star-1" href="#">1</a><a class="star-2" href="#">2</a><a class="star-3" href="#">3</a><a class="star-4" href="#">4</a><a class="star-5" href="#">5</a></span></p>' ); 264 }); 265 }, 10); 266 } 267 } 268 269 $(document).ready(handleRatings); 270 $(document).on('vc-uncode_single_product_reviews', handleRatings); 271 272 $(document).on('vc-uncode_single_product_reviews', function(e, el) { 273 if ( el !== 'undefined' ) { 274 var $tabContainer = $(el).closest('.tab-container'); 275 $tabContainer.addClass('wootabs'); 276 } 277 } ); 278 279 var scrollToReviews = function(){ 280 if ( $('.wootabs, .wpb_accordion').length ) { 281 282 var hash = window.location.hash, 283 url = window.location.href, 284 $tabs = $( this ).find( 'ul.nav-tabs' ).first(), 285 $accordion = $( this ).find('.panel-group').first(), 286 scrollAction = false, 287 $tabs_wrapper = $tabs.closest('.wootabs'), 288 $both_wrapper, 289 $li, $panel, $click_trigger = false; 290 291 var scrollToReviewsInside = function( clicked ){ 292 293 if ( $tabs.length && $('#reviews', $tabs_wrapper).length ) { 294 var tab_reviews = $('#reviews', $tabs_wrapper).first().closest('.tab-pane').attr('id'); 295 $('[data-tab-id="' + tab_reviews + '"]', $tabs).addClass('reviews_tab'); 296 $li = $('.reviews_tab', $tabs); 297 $both_wrapper = $tabs_wrapper; 298 $click_trigger = true; 299 } else if ( $accordion.length && $('#reviews', $accordion).length ) { 300 var tab_reviews = $('#reviews', $accordion).first().closest('.tab-pane').attr('id'); 301 $panel = $('#reviews', $accordion).first().closest('.panel'); 302 $li = $('.panel-title', $panel); 303 $both_wrapper = $accordion; 304 $click_trigger = true; 305 } else if ( $('div#reviews').length && clicked ) { 306 $both_wrapper = $('div#reviews'); 307 scrollAction = true; 308 } else { 309 return false; 310 } 311 312 if ( $click_trigger && ( hash.toLowerCase().indexOf( 'comment-' ) >= 0 || hash === '#reviews' || hash === '#tab-reviews' ) ) { 313 $( 'a', $li ).click(); 314 scrollAction = true; 315 } else if ( $click_trigger && ( url.indexOf( 'comment-page-' ) > 0 || url.indexOf( 'cpage=' ) > 0 ) ) { 316 $( 'a', $li ).click(); 317 scrollAction = true; 318 } 319 320 if ( scrollAction ) { 321 var body = $("html, body"), 322 bodyTop = document.documentElement['scrollTop'] || document.body['scrollTop'], 323 delta = bodyTop - ($both_wrapper.length ? $both_wrapper.offset().top : 0), 324 getOffset = UNCODE.get_scroll_offset(); 325 if ( typeof $both_wrapper.offset() === 'undefined' ) 326 return; 327 scrollTo = $both_wrapper.offset().top - 27; 328 scrollTo -= getOffset; 329 330 var scrollSpeed = (SiteParameters.constant_scroll == 'on') ? Math.abs(delta) / parseFloat(SiteParameters.scroll_speed) : SiteParameters.scroll_speed; 331 if (scrollSpeed < 1000 && SiteParameters.constant_scroll == 'on') scrollSpeed = 1000; 332 333 if (scrollSpeed == 0) { 334 body.scrollTop((delta > 0) ? scrollTo - 0.1 : scrollTo); 335 } else { 336 body.animate({ 337 scrollTop: (delta > 0) ? scrollTo - 0.1 : scrollTo 338 }, scrollSpeed, 'easeInOutQuad'); 339 } 340 } else { 341 return false; 342 } 343 }; 344 345 scrollToReviewsInside( false ); 346 347 $('a.woocommerce-review-link').on('click', function(e) { 348 e.preventDefault(); 349 hash = '#reviews'; 350 scrollToReviewsInside( true ); 351 }); 352 353 } 354 } 355 $(document).ready(scrollToReviews); 356 357 var qtyPlusMinus = function(){ 358 $('.qty-inset:not(.qty-inset-active)').each(function(){ 359 var $qtyInsets = $(this).addClass('qty-inset-active'), 360 $input = $('input.qty', $qtyInsets), 361 $minus = $('.qty-minus', $qtyInsets), 362 $plus = $('.qty-plus', $qtyInsets), 363 step = parseFloat( $input.attr('step') ), 364 min = parseFloat( $input.attr('min') ), 365 max = parseFloat( $input.attr('max') ), 366 value = parseFloat($input.val()); 367 368 if ( isNaN(step) ) { 369 step = 1; 370 } 371 372 if ( isNaN(min) ) { 373 min = 1; 374 } 375 376 if ( isNaN(value) ) { 377 value = 0; 378 $input.val( value ); 379 } 380 381 $minus.on('click', function () { 382 if (UncodeWCParameters.activate_input_check_on_click) { 383 step = parseFloat( $input.attr('step') ); 384 min = parseFloat( $input.attr('min') ); 385 max = parseFloat( $input.attr('max') ); 386 if ( isNaN(step) ) { 387 step = 1; 388 } 389 if ( isNaN(min) ) { 390 min = 1; 391 } 392 } 393 394 value = parseFloat( $input.val() ) - step; 395 if ( value < min ) { 396 value = min; 397 } 398 $input.val( value ).trigger( 'change' ); 399 }); 400 401 $plus.on('click', function () { 402 if (UncodeWCParameters.activate_input_check_on_click) { 403 console.log('click'); 404 step = parseFloat( $input.attr('step') ); 405 min = parseFloat( $input.attr('min') ); 406 max = parseFloat( $input.attr('max') ); 407 if ( isNaN(step) ) { 408 step = 1; 409 } 410 if ( isNaN(min) ) { 411 min = 1; 412 } 413 } 414 415 value = parseFloat( $input.val() ) + step; 416 if ( !isNaN(max) && value > max ) { 417 value = max; 418 } 419 $input.val( value ).trigger( 'change' ); 420 }); 421 }); 422 }; 423 424 var resizeCartRow = function(){ 425 if ($('form.woocommerce-cart-form').length > 0) { 426 window.dispatchEvent(new CustomEvent('vc-resize')); 427 } 428 }; 429 430 $(document.body).on('updated_cart_totals', qtyPlusMinus); 431 $(document.body).on('updated_cart_totals', resizeCartRow); 432 $(document).ready(qtyPlusMinus); 433 $(document).on('vc-frontend:vc_button', qtyPlusMinus); 434 435 var woocommerce_product_gallery = function() { 436 $( 'body:not(.single-uncodeblock) .woocommerce-product-gallery' ).each( function() { 437 if ($('body').hasClass('uncode-default-product-gallery')) { 438 return; 439 } 440 441 var $slider = $(this); 442 443 UNCODE_WC.product_gallery($slider); 444 }); 445 } 446 447 UNCODE_WC.product_gallery = function($slider) { 448 var $parent = $slider.closest('.uncode-wrapper').length ? $slider.closest('.uncode-wrapper') : $slider.closest('.uncont'),
449 cols = parseFloat( $slider.attr('data-columns') ), 450 dots = $parent.attr('data-dots') == 'true', 451 gutter = $parent.length && typeof $parent.attr('data-gutter') !== 'undefined' ? parseFloat( $parent.attr('data-gutter') ) : 18, 452 $main = $('.woocommerce-product-gallery__wrapper.owl-carousel', $parent), 453 $stack = $('.woocommerce-layout-images-stack-lateral .woocommerce-product-gallery__wrapper', $parent), 454 mainL = $main.find('.woocommerce-product-gallery__image').length, 455 $thumbs = $('.woocommerce-product-gallery__wrapper-nav:not(.lateral-nav)', $parent), 456 $thumbs_nav = $('.woocommerce-product-gallery__wrapper-nav', $parent), 457 thumbsL = $thumbs.find('li').length; 458 459 if ($.fn.owlCarousel) { 460 if ( mainL > 1 && $slider.hasClass('owl-carousel-wrapper') ) { 461 $main.owlCarousel({ 462 items: 1, 463 autoHeight: true, 464 rtl: $('body').hasClass('rtl') ? true : false, 465 responsiveRefreshRate: 200, 466 responsive: { 467 0: { 468 dots: $('.woocommerce-product-gallery__wrapper-nav.lateral-nav', $parent).length || dots === true 469 }, 470 960: { 471 dots: dots 472 } 473 } 474 }).on('changed.owl.carousel', function(event) { 475 if (event.namespace && event.property.name === 'position') { 476 var target = event.relatedTarget.relative(event.property.value, true); 477 var data = $thumbs.data('owl.carousel'); 478 if ( ! $('.owl-item', $thumbs).eq( target ).hasClass('active') ) { 479 $thumbs.owlCarousel( 'to', target, 300, true ); 480 } 481 } 482 }); 483 $main.on('translate.owl.carousel', function(event) { 484 $(event.currentTarget).addClass('owl-translating'); 485 }); 486 $main.on('translated.owl.carousel', function(event) { 487 $(event.currentTarget).removeClass('owl-translating'); 488 }); 489 $thumbs.on('initialized.owl.carousel', function(event) { 490 $thumbs.closest('.woocommerce-product-gallery-nav-wrapper').css({ 491 opacity: 1 492 }); 493 }).owlCarousel({ 494 items: cols, 495 margin: gutter, 496 autoHeight: true, 497 nav: true, 498 rtl: $('body').hasClass('rtl') ? true : false, 499 mouseDrag: cols < thumbsL, 500 navText: ['<div class="owl-nav-container btn-default btn-hover-nobg"><i class="fa fa-fw fa-angle-left"></i></div>', '<div class="owl-nav-container btn-default btn-hover-nobg"><i class="fa fa-fw fa-angle-right"></i></div>'], 501 responsiveRefreshRate: 100, 502 }); 503 $(window).on('load uncode-quick-view-first-hover woocommerce_variation_has_loaded', function () { 504 $main.trigger('refresh.owl.carousel'); 505 $thumbs.trigger('refresh.owl.carousel'); 506 507 var product_div = $main.closest('div.woocommerce-product-gallery--with-variation-gallery'); 508 509 if (!product_div.length > 0) { 510 if (!$('.owl-item', $main).eq(0).hasClass('active')) { 511 $main.owlCarousel( 'to', 0, 300, true ); 512 } 513 if (!$('.owl-item', $thumbs).eq(0).hasClass('active')) { 514 $thumbs.owlCarousel( 'to', 0, 300, true ); 515 } 516 } 517 }); 518 } 519 } 520 521 var scrollBody = function(index) { 522 $('.woocommerce-product-gallery__thumb', $thumbs_nav).removeClass('is-selected'); 523 $('.woocommerce-product-gallery__thumb', $thumbs_nav).eq(index).addClass('is-selected'); 524 525 var top_gutter = parseInt($stack.closest('.row').css('padding-top')); 526 527 var getSection = $('.woocommerce-product-gallery__image', $stack).eq(index), 528 scrollTo; 529 530 if (getSection == undefined) return; 531 532 var body = $("html, body"), 533 bodyTop = document.documentElement['scrollTop'] || document.body['scrollTop'], 534 delta = bodyTop - ($('.woocommerce-product-gallery__image', $stack).eq(index).length ? $('.woocommerce-product-gallery__image', $stack).eq(index).offset().top : 0), 535 getOffset = UNCODE.get_scroll_offset(index); 536 if ( typeof getSection.offset() === 'undefined' ) { 537 return; 538 } 539 scrollTo = getSection.offset().top; 540 541 if ( !( $('.menu-desktop-transparent').length && UNCODE.wwidth > UNCODE.mediaQuery ) && !( $('.menu-mobile-transparent').length && UNCODE.wwidth <= UNCODE.mediaQueryMobile ) ) { 542 var shrink = typeof $('.navbar-brand').data('padding-shrink') !== 'undefined' ? $('.navbar-brand').data('padding-shrink')*2 : 36; 543 if ( $('.menu-sticky .menu-container:not(.menu-hide)').length && $('.menu-shrink').length ) { 544 scrollTo += UNCODE.menuHeight - ( $('.navbar-brand').data('minheight') + shrink ); 545 } 546 547 if ( $('.menu-sticky .menu-container:not(.menu-hide)').length && ! $('.menu-shrink').length && $('.body').hasClass('vmenu') ) { 548 if ( index === 0 ) { 549 scrollTo = 0; 550 } else { 551 scrollTo -= $('.menu-sticky .menu-container').outerHeight(); 552 } 553 } else { 554 scrollTo -= getOffset; 555 } 556 } 557
558 scrollTo -= top_gutter; 559 560 var scrollSpeed = (SiteParameters.constant_scroll == 'on') ? Math.abs(delta) / parseFloat(SiteParameters.scroll_speed) : SiteParameters.scroll_speed; 561 if (scrollSpeed < 1000 && SiteParameters.constant_scroll == 'on') scrollSpeed = 1000; 562 563 if (index != 0) { 564 UNCODE.scrolling = true; 565 } 566 567 if (scrollSpeed == 0) { 568 body.scrollTop((delta > 0) ? scrollTo - 0.1 : scrollTo); 569 UNCODE.scrolling = false; 570 } else { 571 body.on("scroll wheel DOMMouseScroll mousewheel touchmove", function(){ 572 $(this).stop(); 573 }).stop(true,false).animate({ 574 scrollTop: (delta > 0) ? scrollTo - 0.1 : scrollTo 575 }, scrollSpeed, 'easeInOutCubic', function(){ 576 UNCODE.scrolling = false; 577 }); 578 } 579 580 }; 581 582 var changeThumbActive = function(section, index) { 583 var newSection = $('.woocommerce-product-gallery__thumb', $thumbs_nav).eq(index); 584 if (newSection.length) { 585 $('.woocommerce-product-gallery__thumb', $thumbs_nav).removeClass('is-selected'); 586 newSection.addClass('is-selected'); 587 } 588 } 589 590 $('.woocommerce-product-gallery__image', $stack).each(function(index, val) { 591 new Waypoint({ 592 context: UNCODE.isUnmodalOpen ? document.getElementById('unmodal-content') : window, 593 element: val, 594 handler: function(direction) { 595 changeThumbActive(this.element, index); 596 }, 597 }); 598 }); 599 600 $thumbs_nav.on( 'click', '.woocommerce-product-gallery__thumb', function(e){ 601 e.preventDefault(); 602 var number = $(this).index(); 603 if ( $main.length ) { 604 number = $(this).closest('.owl-item').index(); 605 if ( number < 0 ) { 606 number = $(this).index(); 607 } 608 $main.owlCarousel( 'to', number, 300, true ); 609 } else if ( $stack.length ) { 610 scrollBody( number ); 611 } 612 }); 613 614 var uncodeZoom = function(){ 615 if ($.fn.zoom && $('body').hasClass('wc-zoom-enabled') ) { 616 var $zoomTrgt = $('.woocommerce-product-gallery__image', $slider); 617 618 if ( $('.thumbnails', $slider).length ) 619 $zoomTrgt = $zoomTrgt.first(); 620 621 $zoomTrgt.trigger( 'zoom.destroy' ); 622 $zoomTrgt.zoom(); 623 624 var checkForZoom = function(){ 625 626 if ( $parent.hasClass( 'no-zoom-mobile' ) && UNCODE.wwidth < 960 ) { 627 $zoomTrgt.trigger( 'zoom.destroy' ).addClass('mouse-moving'); 628 $('.zoom-overlay', $zoomTrgt).remove(); 629 return false; 630 } 631 $('.woocommerce-product-gallery__image').each(function(){ 632 var $wrap = $(this), 633 $zoomImg = $('.zoomImg', $wrap); 634 635 if (UNCODE.isMobile || !$zoomImg.length) { 636 $wrap.addClass('mouse-moving'); 637 } 638 }); 639 640 var galleryWidth = $zoomTrgt.width(), 641 zoom_options = { 642 touch: true, 643 callback: function(){ 644 $('.woocommerce-product-gallery__image').each(function(){ 645 var $wrap = $(this), 646 $zoomImg = $('.zoomImg', $wrap), 647 $overZoom = $('.zoom-overlay', $wrap), 648 $imageIL = $('a[data-lbox]', $wrap), 649 $carousel = $wrap.closest('.owl-carousel'); 650 651 $wrap.prepend($zoomImg); 652 if (UNCODE.isMobile || !$zoomImg.length) { 653 $wrap.addClass('mouse-moving'); 654 $zoomImg.css({ 655 'visibility':'hidden' 656 }); 657 } 658 659 /* Make work everything on touch events */ 660 var onlongtouch, 661 timer, 662 now, 663 touchduration = 500, 664 startX = 0, startY, newX, newY; 665 666 $wrap.parent().on('mousemove.zoom', function(){ 667 if ( ! $wrap.hasClass('mouse-moving') ) { 668 if ( startX == 0 ) { 669 startX = event.clientX; 670 startY = event.clientY; 671 } 672 newX = event.clientX; 673 newY = event.clientY; 674 if ( Math.abs( newX - startX ) > 50 && Math.abs( newY - startY ) > 50 ) { 675 $wrap.addClass('mouse-moving'); 676 } 677 } 678 }); 679 680 $overZoom.on('touchstart.zoom', function (e) { 681 now = new Date().getTime(); 682 }).on('touchmove.zoom', function (e) { 683 setTimeout(function(){ 684 $zoomImg.css({ 685 'visibility':'visible' 686 }); 687 }, 100); 688 }).on('touchend.zoom', function (e) { 689 var newTap = new Date().getTime(); 690 if ( newTap - now < 75 && ! $('body').hasClass('ilightbox-noscroll') ) { 691 $imageIL.trigger('itap.iL'); 692 } 693 if (UNCODE.isMobile) { 694 $zoomImg.css({ 695 'visibility':'hidden' 696 }); 697 } 698 }); 699 700 }); 701 } 702 }; 703 704 if ( 'ontouchstart' in window ) { 705 zoom_options.on = 'click'; 706 } 707 708 $zoomTrgt.trigger( 'zoom.destroy' ); 709 $zoomTrgt.each(function(){ 710 var $thisTrgt = $(this), 711 $img = $('img', $thisTrgt); 712 713 if ( $img.data( 'large_image_width' ) > galleryWidth ) { 714 $thisTrgt.zoom(zoom_options); 715 } else { 716 $thisTrgt.trigger( 'zoom.destroy' ); 717 } 718 719 }); 720 }; 721 checkForZoom(); 722 723 var setCheckForZoom; 724 $(window).on( 'resize', function(){ 725 clearTimeout(setCheckForZoom); 726 setCheckForZoom = setTimeout( checkForZoom, 500 ); 727 }); 728 } 729 }; 730 uncodeZoom(); 731 window.addEventListener('load', uncodeZoom); 732 } 733 734 woocommerce_product_gallery(); 735 736 $(window).on('unmodal-open', function(){ 737 $('#unmodal-content .woocommerce-product-gallery__image').removeClass('mouse-moving'); 738 }) 739 $(document).on('unmodal-close', function(){ 740 $('#unmodal-content .woocommerce-product-gallery__image').removeClass('mouse-moving'); 741 }) 742 743 /************************************************************ 744 * Redirect to custom empty cart page 745 ************************************************************/ 746 747 $(document.body).on('wc_cart_emptied', redirect_to_custom_empty_cart); 748 749 function redirect_to_custom_empty_cart() { 750 if (UncodeWCParameters.empty_cart_url !== '') { 751 window.location.replace(UncodeWCParameters.empty_cart_url); 752 } 753 } 754
755 /************************************************************ 756 * Make the variation price inherit the font family from main price 757 ************************************************************/ 758 759 function variation_price_font() { 760 761 var $forms = $('form.variations_form'); 762 763 $forms.each(function(){ 764 var $form = $(this); 765 766 $form.on('woocommerce_variation_has_changed wc_variation_form', function(){ 767 var $var_price = $('.woocommerce-variation-price .woocommerce-Price-amount'), 768 $row = $form.closest('.vc_row'), 769 $main_price = $('.heading-text .woocommerce-Price-amount', $row); 770 771 if ( $main_price.length ) { 772 var $price_wrap = $main_price.closest('.heading-text'), 773 $price_nest = $('> *:first-child', $price_wrap), 774 font_class = $price_nest.attr('class').split(' '), 775 i; 776 777 for ( i = 0; i < font_class.length; i++ ) { 778 if ( font_class[i].indexOf('font') !== -1 && font_class[i].indexOf('fontsize') === -1 ) { 779 $var_price.addClass( font_class[i] ); 780 } 781 } 782 } 783 }); 784 }); 785 } 786 787 $(document).ready(function() { 788 variation_price_font(); 789 }); 790 791 /************************************************************ 792 * Show minicart when adding something 793 ************************************************************/ 794 795 var cartShow, cartHover, 796 sideCart_scrollTop = $('html, body').scrollTop();; 797 798 var minicart_notify = function(){ 799 var $body = $('body'); 800 801 if ( ! $body.hasClass('minicart-notification') ) { 802 return false; 803 } 804 805 var $sidecart = $('#uncode_sidecart'), 806 $miniCart = $('.menu-smart .uncode-cart-dropdown'), 807 $smartMenu = $miniCart.closest('.menu-smart'); 808 809 $miniCart.on('hover', function(){ 810 clearTimeout(cartHover); 811 }); 812 813 var show_added_to_cart = function(e){ 814 815 clearTimeout(cartShow); 816 clearTimeout(cartHover); 817 818 if ( $sidecart.length && ( ! ( $body.hasClass('uncode-sidecart-mobile-disabled') && UNCODE.wwidth <= UNCODE.mediaQuery ) ) ) { 819 $sidecart.imagesLoaded().done( function( instance ) { 820 setTimeout(function(){ 821 sideCart_scrollTop = $('html, body').scrollTop(); 822 $body.addClass('uncode-sidecart-open'); 823 $(window).trigger('uncode-sidecart-open'); 824 $('html, body').scrollTop(sideCart_scrollTop); 825 }, 500); 826 }); 827 } 828 829 var show_added_to_cart_timeout = function(){ 830 cartShow = setTimeout(function(){ 831 $miniCart.imagesLoaded().done( function( instance ) { 832 $smartMenu.smartmenus('itemActivate', $('.uncode-cart > a')); 833 cartHover = setTimeout(function(){ 834 $smartMenu.smartmenus('menuHideAll'); 835 }, 4000); 836 }); 837 }, 500); 838 }; 839 840 if ( UNCODE.wwidth >= 960 ) { 841 if ( e == 'uncode-wc-added-to-cart' ) { 842 show_added_to_cart_timeout(); 843 } else { 844 $( document.body ).on( 'wc_fragments_loaded', function(){ 845 show_added_to_cart_timeout(); 846 }); 847 } 848 } 849 }; 850 851 if ( $('body').hasClass('uncode-wc-disable-added-to-cart-trigger')) { 852 $( document.body ).on( 'added_to_cart', function() { 853 setTimeout(function(){ 854 $(document.body).trigger('wc_fragment_refresh'); 855 }, 500); 856 } ); 857 } else { 858 $( document.body ).on( 'added_to_cart', show_added_to_cart ); 859 } 860 861 $(document).ready(function() { 862 if ( $('body').hasClass('uncode-wc-added-to-cart')) { 863 show_added_to_cart('uncode-wc-added-to-cart'); 864 } 865 }); 866 867 }; 868 869 minicart_notify(); 870 871 /************************************************************ 872 * View Cart Button 873 ************************************************************/ 874 $( document.body ).on( 'wc_cart_button_updated', function(e, $button){ 875 if ( $(document.body).hasClass('minicart-notification') || wc_add_to_cart_params == undefined ) { 876 return false; 877 } 878 879 $button 880 .addClass('added_and_noted') 881 .removeClass('ajax_add_to_cart') 882 .find('.added_to_cart') 883 .text( wc_add_to_cart_params.i18n_view_cart ) 884 .on('click', function(e){ 885 e.preventDefault(); 886 window.location.href = wc_add_to_cart_params.cart_url; 887 return false; 888 }); 889 }); 890 891 /************************************************************ 892 * Side Cart 893 ************************************************************/ 894 var init_sidecart = function(){ 895 var $body = $('body.uncode-sidecart-enabled'); 896 if ( ! $body.length ) { 897 return false;
898 } 899 900 var $cart_icon = $('.mobile-shopping-cart, .uncode-cart.menu-item-link > a'), 901 $sidecart = $('#uncode_sidecart'), 902 $view_cart = $('a.wc-forward:not(.checkout)', $sidecart).removeClass('btn-sm'), 903 $checkout = $('a.checkout', $sidecart).removeClass('btn-sm').addClass('btn-flat'), 904 $overlay = $('#uncode_sidecart_overlay'), 905 $close_cart = $('.close-mini-cart', $sidecart), 906 sidecart_hover = false; 907 908 $cart_icon.off('click').on('click', function( e ){ 909 if ( $sidecart.length && ! ( $(this).closest('.overlay').length && UNCODE.wwidth > UNCODE.mediaQuery ) && ( ! ( $body.hasClass('uncode-sidecart-mobile-disabled') && UNCODE.wwidth <= UNCODE.mediaQuery ) ) ) { 910 e.preventDefault(); 911 e.stopPropagation(); 912 sideCart_scrollTop = $('html, body').scrollTop(); 913 $body.addClass('uncode-sidecart-open'); 914 $(window).trigger('uncode-sidecart-open'); 915 $('html, body').scrollTop(sideCart_scrollTop); 916 } 917 }); 918 919 $sidecart.on('mouseover',function(){ 920 sidecart_hover = true; 921 }).on('mouseout', function(){ 922 sidecart_hover = false; 923 }); 924 925 $body.on('click', function( e ){ 926 if ( $body.hasClass('uncode-sidecart-open') && !sidecart_hover ) { 927 $body.removeClass('uncode-sidecart-open'); 928 $(window).trigger('uncode-sidecart-closed'); 929 $('html, body').scrollTop(sideCart_scrollTop); 930 } 931 }); 932 933 $close_cart.on('click', function( e ){ 934 e.preventDefault(); 935 $body.removeClass('uncode-sidecart-open'); 936 $(window).trigger('uncode-sidecart-closed'); 937 $('html, body').scrollTop(sideCart_scrollTop); 938 }); 939 }; 940 $(document).ready(function(){ 941 init_sidecart(); 942 }); 943 $( document.body ).on("wc_fragments_refreshed added_to_cart removed_from_cart", function(){ 944 init_sidecart(); 945 requestTimeout( init_sidecart, 1 ); 946 }); 947 948 var sidecart_size = function(){ 949 var $body = $('body.uncode-sidecart-enabled'), 950 $widget_cart = $('.widget_shopping_cart_content'), 951 $mini_cart_item = $('.mini_cart_item', $widget_cart); 952 953 if ( $widget_cart.length ) { 954 $mini_cart_item.each(function(){ 955 var $this = $(this), 956 $img_product = $('.attachment-woocommerce_thumbnail', $this), 957 imgH = $img_product.height(); 958 959 $this.css({ 960 'min-height': imgH+6 961 }) 962 963 }); 964 } 965 if ( $body.length ) { 966 967 var $sidecart = $('#uncode_sidecart'), 968 $cart_header = $('.woocommerce-mini-cart-header', $sidecart), 969 headerH = $cart_header.outerHeight(), 970 $cart_footer = $('.woocommerce-mini-cart-footer', $sidecart), 971 footerH = $cart_footer.outerHeight(), 972 $cart_body = $('.woocommerce-mini-cart-body', $sidecart); 973 974 $cart_body.css({ 975 'padding-top':headerH, 976 'padding-bottom':footerH 977 }); 978 979 } 980 }; 981 $(document).ready(function(){ 982 var setCTA; 983 sidecart_size(); 984 requestTimeout(function(){ 985 $(window).on( 'resize', function(){ 986 clearRequestTimeout(setCTA); 987 setCTA = requestTimeout( sidecart_size, 100 ); 988 }); 989 }, 400); 990 }); 991 $( document.body ).on("wc_fragments_refreshed added_to_cart removed_from_cart", function(){ 992 sidecart_size(); 993 requestTimeout( sidecart_size, 1 ); 994 }); 995 996 /************************************************************ 997 * Quick view 998 ************************************************************/ 999 1000 var modal_quick_view_content = $('.quick-view-content'); 1001 var last_viewed_product_id; 1002 1003 $(document).off('click', '.quick-view-button').on('click', '.quick-view-button', function() { 1004 var _this = $(this); 1005 var product_id = _this.data('post-id'); 1006 var post_type = _this.data('post-type'); 1007 var post_url = _this.attr('data-post-url'); 1008 var single_variation_atts = _this.attr('data-single-variation'); 1009 1010 // Empty modal 1011 if (modal_quick_view_content.length > 0) { 1012 modal_quick_view_content.html(''); 1013 } 1014 1015 var data = { 1016 action: 'uncode_load_ajax_quick_view', 1017 post_id: product_id, 1018 post_type: post_type, 1019 post_url: post_url, 1020 }; 1021 1022 if (single_variation_atts) { 1023 var variation_atts_obj = JSON.parse(single_variation_atts) 1024 1025 for (var att_key in variation_atts_obj) { 1026 if (variation_atts_obj[att_key]) { 1027 data['attribute_' + att_key] = variation_atts_obj[att_key]; 1028 } 1029 } 1030 } 1031 1032 // Get quick view content via AJAX 1033 $.ajax({ 1034 url: woocommerce_params.ajax_url, 1035 data: data, 1036 type: 'post', 1037 error: function(data) { 1038 if (SiteParameters.enable_debug == true) { 1039 // This console log is disabled by default 1040 // So nothing is printed in a typical installation 1041 // 1042 // It can be enabled for debugging purposes setting 1043 // the 'uncode_enable_debug_on_js_scripts' filter to true 1044 console.log('AJAX error on quick view response'); 1045 } 1046 }, 1047 success: function(response) { 1048 if (response && response.success === false) { 1049 if (SiteParameters.enable_debug == true) { 1050 // This console log is disabled by default 1051 // So nothing is printed in a typical installation 1052 // 1053 // It can be enabled for debugging purposes setting 1054 // the 'uncode_enable_debug_on_js_scripts' filter to true 1055 if (response.data.error) { 1056 console.log(response.data.error); 1057 } else { 1058 console.log('Unknown error on quick view response'); 1059 } 1060 } 1061 } else { 1062 var html = response.data.html; 1063 1064 if (modal_quick_view_content.length > 0) { 1065 modal_quick_view_content.html(html); 1066 } 1067 1068 last_viewed_product_id = product_id; 1069 1070 modal_quick_view_content.imagesLoaded().done( function( instance ) { 1071 $(document).trigger('uncode-unmodal-show-content'); 1072 $(document).trigger('uncode-quick-view-loaded'); 1073 window.dispatchEvent(new CustomEvent('uncode-quick-view-loaded')); 1074 1075 setTimeout(function(){ 1076 modal_quick_view_content.one('mousemove', function(){ 1077 window.dispatchEvent(new CustomEvent('uncode-quick-view-first-hover')); 1078 }); 1079 }, 10); 1080 }); 1081 } 1082 } 1083 }); 1084 1085 return false;
1086 }); 1087 1088 $(document).on('uncode-quick-view-loaded', function() { 1089 var form_variation = modal_quick_view_content.find('.variations_form'); 1090 1091 form_variation.each(function() { 1092 $(this).wc_variation_form(); 1093 }); 1094 1095 form_variation.trigger('check_variations'); 1096 form_variation.trigger('reset_image'); 1097 1098 if( typeof $.fn.wc_product_gallery !== 'undefined' ) { 1099 modal_quick_view_content.find('.woocommerce-product-gallery').each(function(){ 1100 $(this).wc_product_gallery(); 1101 }); 1102 } 1103 1104 $( '#unmodal-content' ).on( 'change', '.quantity .qty', function() { 1105 jQuery( this ).closest('form.cart').find('.add_to_cart_button').attr( 'data-quantity', jQuery( this ).val() ); 1106 }); 1107 1108 woocommerce_product_gallery(); 1109 variation_price_font(); 1110 qtyPlusMinus(); 1111 1112 UNCODE.preventDoubleTransition(); 1113 UNCODE.utils(); 1114 if (typeof UNCODE.share !== 'undefined') { 1115 UNCODE.share(); 1116 } 1117 if (typeof UNCODE.tooltip !== 'undefined') { 1118 UNCODE.tooltip(); 1119 } 1120 if (typeof UNCODE.counters !== 'undefined') { 1121 UNCODE.counters(); 1122 } 1123 if (typeof UNCODE.countdowns !== 'undefined') { 1124 UNCODE.countdowns(); 1125 } 1126 if (typeof UNCODE.tabs !== 'undefined') { 1127 UNCODE.tabs(); 1128 } 1129 if (typeof UNCODE.collapse !== 'undefined') { 1130 UNCODE.collapse(); 1131 } 1132 if (typeof UNCODE.okvideo !== 'undefined') { 1133 UNCODE.okvideo(); 1134 } 1135 if (typeof UNCODE.backgroundSelfVideos !== 'undefined') { 1136 UNCODE.backgroundSelfVideos(); 1137 } 1138 UNCODE.tapHover(); 1139 if (typeof UNCODE.isotopeLayout !== 'undefined') { 1140 UNCODE.isotopeLayout(); 1141 } 1142 if (typeof UNCODE.justifiedGallery !== 'undefined') { 1143 UNCODE.justifiedGallery(); 1144 } 1145 if (typeof UNCODE.cssGrid !== 'undefined') { 1146 UNCODE.cssGrid(); 1147 } 1148 if (typeof UNCODE.lightbox !== 'undefined' && !SiteParameters.lbox_enhanced) { 1149 UNCODE.lightbox(); 1150 } 1151 if (typeof UNCODE.lightgallery !== 'undefined' && SiteParameters.lbox_enhanced) { 1152 UNCODE.lightgallery(); 1153 } 1154 if (typeof UNCODE.carousel !== 'undefined') { 1155 UNCODE.carousel($('body')); 1156 } 1157 UNCODE.lettering(); 1158 UNCODE.animations(); 1159 UNCODE.stickyElements(); 1160 if (typeof UNCODE.twentytwenty !== 'undefined') { 1161 UNCODE.twentytwenty(); 1162 } 1163 UNCODE.disableHoverScroll(); 1164 if (typeof uncode_progress_bar !== 'undefined') { 1165 uncode_progress_bar(); 1166 } 1167 if (typeof UNCODE.filters !== 'undefined') { 1168 UNCODE.filters(); 1169 } 1170 if (typeof UNCODE.ajax_filters !== 'undefined') { 1171 UNCODE.ajax_filters(); 1172 } 1173 if (typeof UNCODE.widgets !== 'undefined') { 1174 UNCODE.widgets(); 1175 } 1176 1177 $(document).trigger('yith_wcwl_init'); 1178 }); 1179 1180 /************************************************************ 1181 * Trigger fragments 1182 ************************************************************/ 1183 if ( SiteParameters.update_wc_fragments == true ) { 1184 $(document).ready(function() { 1185 $(document.body).trigger('wc_fragment_refresh'); 1186 }); 1187 } 1188 1189 /************************************************************ 1190 * Cart badge 1191 ************************************************************/ 1192 $(document).ready(function() { 1193 if ( SiteParameters.uncode_wc_popup_cart_qty ) { 1194 $(document.body).on('wc_fragments_loaded', function(){ 1195 $('.cart-icon-container .badge').removeClass('init-product-counter'); 1196 }) 1197 .on('uncode_get_cart', function(e, data){ 1198 if ( $('.cart-icon-container .badge').text() !== '' || ( data > 0 ) ) { 1199 $('.cart-icon-container .badge').addClass('init-product-counter'); 1200 } else { 1201 $('.cart-icon-container .badge').removeClass('init-product-counter'); 1202 } 1203 }); 1204 } 1205 }); 1206 1207})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.