HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux WebLive 5.15.0-79-generic #86-Ubuntu SMP Mon Jul 10 16:07:21 UTC 2023 x86_64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/html/wpkoopkj/wp-content/themes/ohio/assets/js/source/woocommerce.js
(function ($) {
    'use strict';

    /* Table of contents */
    /*
		# Shop masonry
		# Ajax cart
		# Search action
		# Single product gallery
		# Sticky product
		# Products grid
		# Zoom product
		# Product quickview
    */

    /* # Mini cart */

    $('[aria-label="cart"]').on("click", function (e) {
        e.preventDefault();
        $(".cart-mini").toggleClass("visible");
    });

    $('[aria-label="close"]').on("click", function () {
        $(".cart-mini").removeClass("visible");
    });

	/* # Shop masonry */

	function handleShopMasonry() {
		var shopMasonry = $('[data-shop-masonry]');
		if ( !$('body').hasClass('elementor-page')) {
			shopMasonry.each(function(){

				var product = $(this).find('> li.product');
	
				if (shopMasonry && !shopMasonry.parents('.shop-product-type_3').length && product.length > 1 ) {
					shopMasonry.masonry({
						percentPosition: true,
						columnWidth: ' .product:not(.double_width)'
					});
				}
			})
		}
	}

    /* # Ajax cart */

    jQuery(function ($) {

        $(".input-text.qty.text").on('keyup mouseup', function () {
            var value = $(this).val();
            $("#product_quantity").val(value)
        });

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

            if ($(this).hasClass('out_of_stock') || $(this).hasClass('product_type_variable') || $(this).closest('form').hasClass('external-product') || $(this).hasClass('product_type_external') || ( !$(this).hasClass('single_add_to_cart_button') && $(this).parents('ul.products') ) ) return;

            e.preventDefault();

            var $variation_form = $(this).closest('.variations_form');
            var var_id = $variation_form.find('input[name=variation_id]').val();
            var product_id = $variation_form.find('input[name=product_id]').val();
            var quantity = $variation_form.find('input[name=quantity]').val();

            $('.ajaxerrors').remove();
            var item = {},
                check = true;
            var variations = $variation_form.find('select[name^=attribute]');
            if (!variations.length) {
                variations = $variation_form.find('[name^=attribute]:checked');
            }
            if (!variations.length) {
                variations = $variation_form.find('input[name^=attribute]');
            }
            variations.each(function () {
                var $this = $(this),
                    attributeName = $this.attr('name'),
                    attributevalue = $this.val(),
                    index,
                    attributeTaxName;
                $this.removeClass('error');
                if (attributevalue.length === 0) {
                    index = attributeName.lastIndexOf('_');
                    attributeTaxName = attributeName.substring(index + 1);
                    $this.addClass('required error');
                    if ( !$this.parent().find('.please-select-message').length ) {
                        $this.before('<span class="please-select-message">' + $variation_form.data('please-select-message') + ' ' + attributeTaxName + '</span>')
                    }

                    check = false;
                } else {
                    item[attributeName] = attributevalue;
                }
            });

            if (!check) {
				if ($(this).hasClass('sticky-product-cart')) {
					$(this).removeClass('btn-loading');
					alert(wc_add_to_cart_variation_params.i18n_make_a_selection_text);
				}
                return false;
            }

            var $thisbutton = $(this);
            
            if ($thisbutton.is('.single_add_to_cart_button')) {
                $thisbutton.removeClass('added');
                $thisbutton.addClass('loading');

                if ( $('form.cart').hasClass('woo_c-cart-form') ) {
                    var serializeFormFields = $('form.cart').serializeArray();
                    
                    var data = {};
					var prevObj;

					$(serializeFormFields).each(function (index, obj) {

						if (obj.name == prevObj) {
							obj.index = index;
						}

						prevObj = obj.name
                    });

                    $(serializeFormFields ).each(function(index, obj){
						if (obj.index) {
							obj.name = obj.name + "-" + obj.index;
						}

                        data[obj.name] = obj.value;
                    });
    
                    data.action = 'ohio_ajax_add_to_cart_woo';

                    if ( $thisbutton.is('.sticky-product-cart') ) {
                        if ($('.single_variation_wrap').length && $('.single_variation_wrap').find('.single_add_to_cart_button.wc-variation-is-unavailable').length ) {
                            alert($thisbutton.data('unavailable-message'));
                            $thisbutton.removeClass('btn-loading loading');
                        }
                    }
                } else if ( $thisbutton.parents('.product-item-buttons').length ) {

                    var product_id = $thisbutton.siblings("input[name=product_id]").val();
                    var data = {
                        action: 'ohio_ajax_add_to_cart_woo_single',
                        product_id: product_id,
                        quantity: 1
                    };
                } else {

                    var serializeFormFields = $('form.cart').serializeArray();

                    var data = {};
                    $(serializeFormFields ).each(function(index, obj){
                        data[obj.name] = obj.value;
                    });
                    
                    if ( data['product_id'] == undefined) {
                        data['product_id'] = data['add-to-cart'];
                    }

                    delete data['add-to-cart'];

                    data.action = 'ohio_ajax_add_to_cart_woo';
                }

                $('body').trigger('adding_to_cart', [$thisbutton, data]);
                $.post(wc_cart_fragments_params.ajax_url, data, function (response) {
                    if (!response)
                        return;

                    var this_page = window.location.toString();
                    this_page = this_page.replace('add-to-cart', 'added-to-cart');
                    if (response.error && response.product_url) {

                        window.location = response.product_url;
                        return;
                    }

                    if (window.wc_add_to_cart_params && window.wc_add_to_cart_params.cart_redirect_after_add == 'yes') {
                        window.location = wc_add_to_cart_params.cart_url;
                        return;
                    } else {
                        $thisbutton.removeClass('loading');
                        var fragments = response.fragments;
                        var cart_hash = response.cart_hash;
                        if (fragments) {
                            $.each(fragments, function (key) {
                                $(key).addClass('updating');
                            });
                        }
                        $('.shop_table.cart, .updating, .cart_totals').fadeTo('400', '0.6').block({
                            message: null,
                            overlayCSS: {
                                opacity: 0.6
                            }
                        });
                        $thisbutton.addClass('added');
                        $thisbutton.text($thisbutton.data('product-added-text'));

                        var $classes = '';
                        if (($('body').hasClass('single-product') || $thisbutton.parents('.clb-popup').length) && !$thisbutton.hasClass('sticky-product-cart')) {
                            $classes = ' button view-cart';
                        } else if ($thisbutton.hasClass('sticky-product-cart')) {
                            $classes = $classes + ' button -text view-cart';
                        } else {
                            $classes = $classes + ' button view-cart';
                        }

                        $thisbutton.after('<a href="' + ohioVariables.cart_page + '" class="' + $classes + '">' + ohioVariables.view_cart + '</a>');
                        $thisbutton.css('display', 'none');

                        if (fragments) {
                            $.each(fragments, function (key, value) {
                                $(key).replaceWith(value);
                            });
                        }

                        $('.widget_shopping_cart, .updating').stop(true).css('opacity', '1').unblock();
                        $('.shop_table.cart').on('load', this_page + ' .shop_table.cart:eq(0) > *', function () {
                            $('.shop_table.cart').stop(true).css('opacity', '1').unblock();
                            $(document.body).trigger('cart_page_refreshed');
                        });
                        $('.cart_totals').on('load', this_page + ' .cart_totals:eq(0) > *', function () {
                            $('.cart_totals').stop(true).css('opacity', '1').unblock();
                        });

                        var productName = '';
                        if ($thisbutton.closest('.product').find('h1').length > 0) {
                            productName = $thisbutton.closest('.product').find('h1').text();
                        } else {
                            productName = $thisbutton.closest('.product').find('.woo-product-name').text();
                        }
                        if (productName == '') {
                            productName = $thisbutton.closest('.clb-popup-product').find('h1').text();
                        }
						miniCartTextButton();
                        $('footer').before('<div class="woo-alert-group "><div class="ajax-cart-response alert -small -fixed -success">' + productName + ' ' + ohioVariables.add_to_cart_message + '&nbsp;<a class="view_cart_button" href="' + ohioVariables.cart_page + '">' + ohioVariables.view_cart + '</a><button class="icon-button -small" aria-label=close> <i class="icon"><svg class="default" width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14 1.41L12.59 0L7 5.59L1.41 0L0 1.41L5.59 7L0 12.59L1.41 14L7 8.41L12.59 14L14 12.59L8.41 7L14 1.41Z"></path></svg><svg class="minimal" width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M15.7552 0.244806C16.0816 0.571215 16.0816 1.10043 15.7552 1.42684L1.42684 15.7552C1.10043 16.0816 0.571215 16.0816 0.244806 15.7552C-0.0816021 15.4288 -0.0816021 14.8996 0.244806 14.5732L14.5732 0.244806C14.8996 -0.0816019 15.4288 -0.0816019 15.7552 0.244806Z"></path><path fill-rule="evenodd" clip-rule="evenodd" d="M15.7552 15.7552C15.4288 16.0816 14.8996 16.0816 14.5732 15.7552L0.244807 1.42684C-0.0816013 1.10043 -0.0816013 0.571215 0.244807 0.244806C0.571215 -0.0816021 1.10043 -0.0816021 1.42684 0.244806L15.7552 14.5732C16.0816 14.8996 16.0816 15.4288 15.7552 15.7552Z"></path></svg></i></button></div></div>');
                    }
                });
                return false;
            } else {
                return true;
            }
        });
    });

	/* # Search action */

	$(document).on('click', '.search-results_btn', function(){
    	$('.search-woocommerce').trigger('submit');
    });

	/* Search action to keyup */

    $('.search-woocommerce input[name=s]').on("keyup", function (event) {
        if (!$('.search-woocommerce .search-submit').hasClass('btn-loading')) {
            $('.search-woocommerce .search-submit').addClass('btn-loading');
        }

        var form = $(this).closest('form');
        var data = {
            'action': 'ohio_ajax_search',
            'search_query': $(this).val(),
            'search_term': $('select[name="search_term"]').val()
        };

        $.post(ohioVariables.url, data, function (response) {
            $('.search-results').empty();
            $('.search-woocommerce .search-submit').removeClass('btn-loading');
            $('.search-results').append(response);
            form.attr('action', $('#search_form_action').attr('data-href'));


			$('body').trigger('ohio:btn-preloader');
        });
    });

    /* Search action to focus */

    $('.search-woocommerce input[name=s]').on("focus", function (event) {

        if ($('.search-results').children().length == 0) {
            if (!$('.search-woocommerce .search-submit').hasClass('btn-loading')) {
                $('.search-woocommerce .search-submit').addClass('btn-loading');
            }

            var form = $(this).closest('form');
            var data = {
                'action': 'ohio_ajax_search',
                'search_query': $(this).val(),
                'search_term': $('select[name="search_term"]').val()
            };

            $.post(ohioVariables.url, data, function (response) {
                $('.search-results').empty();
                $('.search-woocommerce .search-submit').removeClass('btn-loading');
                $('.search-results').append(response);
                form.attr('action', $('#search_form_action').attr('data-href'));

				$('body').trigger('ohio:btn-preloader');
            });
        }
    });

    /* Search action to select category */

    $(document).on('change', '.search-woocommerce select', function(){
        if (!$('.search-woocommerce .search-submit').hasClass('btn-loading')) {
            $('.search-woocommerce .search-submit').addClass('btn-loading');
        }

        var form = $(this).closest('form');
        var data = {
            'action': 'ohio_ajax_search',
            'search_query': $('input[name=s]').val(),
            'search_term': $('select[name="search_term"]').val()
        };

        $.post(ohioVariables.url, data, function (response) {
            $('.search-results').empty();
            $('.search-woocommerce .search-submit').removeClass('btn-loading');
            $('.search-results').append(response);
            form.attr('action', $('#search_form_action').attr('data-href'));
        });
    });

    /* # Single product gallery */

    function handleSingleProductGallery(scrollContainer, product) {

        if (scrollContainer === undefined) {
            var scrollContainer = $('body, html');
        }

        if (product === undefined) {
            var product = $('.woo-product.single-product');
        }

        var productImages = product.find('.woo-product-image .image-wrap img');

        if ( productImages.length > 1 && !product.find('.product-thumbs').length) {
            
            if ( !product.parents('.clb-popup-product').length ) {
                var data = 'data-ohio-content-scroll="#scroll-product"';
            }

            var productContainer = product.find('.woo-product-image').addClass('with-gallery');

            var imageDots = $('<div class="product-thumbs -sticky-block" ' + data + '></div>');

            imageDots.prependTo(productContainer);

            productImages.each(function(i){
                var clonedImg = $(this).clone();
                var dotImage = $('<div class="product-thumb" ></div>');

                clonedImg.appendTo(dotImage);
                dotImage.appendTo(imageDots);
                if (i == 0) {
                    dotImage.addClass('active');
                }
            });

            if (!product.parents('.clb-popup').length) {
                imageDots.css('height', imageDots.height());
            }
            

            var productOffset = product.offset().top;
            var productImageSlider = product.find('.woo-product-image-slider');

            productImageSlider.css({
                'width': productImageSlider.outerWidth()
            });

            var productImageDots = $('.product-thumb');

            var imagesOffset = [];

            if (product.parents('.clb-popup-product').length) {
                var sumHeight = 0;
                productImages.each(function(){
                    var imgHeight = $(this).height();
                    imagesOffset.push(sumHeight);
                    sumHeight += imgHeight;
                });
            } else {
                productImages.each(function(){
                    imagesOffset.push($(this).offset().top);
                });
            }

            //Slider
            var iteration = 0;

            productImageDots.on('click', function(){
                $('.product-thumb').removeClass('active');
                $(this).addClass('active');
                var index = $('.product-thumb').index(this);
                iteration = index;
                var curentImage = $(productImages[index]);
                scrollContainer.animate({
                    scrollTop: imagesOffset[iteration]
                }, 500)
            });

            scrollContainer.on('scroll wheel', function(e){
                var y = e.originalEvent.deltaY;

                if (($(this).scrollTop() >= imagesOffset[iteration]) && y > 0) {
                    productImageDots.removeClass('active');
                    $(productImageDots[iteration]).addClass('active');
                    iteration++;
                }
                else if (y < 0 && ($(this).scrollTop() >= imagesOffset[iteration - 1] && $(this).scrollTop() < imagesOffset[iteration])) {
                    iteration--;
                    productImageDots.removeClass('active');
                    $(productImageDots[iteration]).addClass('active');
                }

                if (iteration > productImages.length - 1 && y < 0) {
                    iteration--;
                }
            });
        }
        var singleProductGallery = $('.woocommerce-product-gallery');
		
        if ($(window).width() <= 1024) {
            singleProductGallery.clbSlider({
                dots: false,
                drag: true,
                navBtn: true
            });
        } else {
            setTimeout(function(){
                singleProductGallery.clbSlider('destroy');
            }, 400);
        }
    }

	/* # Sticky product */
    
    function handleStickyProduct() {
        var productImg = $('.woo-product-image');
        var stickyProduct = $('.sticky-product');
        var stickyProductImg = stickyProduct.find('.sticky-product-thumbnail');
        var stickyProductNav = $('.sticky-nav-product');

        $(window).scroll(function () {
            if ($(window).scrollTop() > productImg.height()) {
                stickyProduct.addClass('visible');
                stickyProductNav.addClass('hidden');
            } else {
                stickyProduct.removeClass('visible');
                stickyProductNav.removeClass('hidden');
            }
        });

        if (Clb.isMobile) {
            var contentWidth = $('#content').height();
            var contentOffset = $('#content').offset().top;
            var contentEnd = contentWidth + contentOffset - $(window).height();

            $(window).scroll(function () {
                if ($(window).scrollTop() > contentEnd) {
                    stickyProduct.removeClass('visible');
                }
            });
        }

        stickyProductImg.on("click", function () {
            $('body, html').animate({scrollTop: 0}, 500);
        });

        stickyProduct.find('[aria-label="close"]').on('click', function(){
            stickyProduct.removeClass('visible');
            setTimeout(function(){
                stickyProduct.hide;
            }, 300);
        });
    }

	/* # Products grid */

	function handleProductsGridGallery() {
		var productSlider = $('.product-item-grid .slider');
		var parentSlider = productSlider.parents('.slider');

		productSlider.each(function(){
			var slider = $(this);

			if ($('body').hasClass('elementor-page')) {
				if (parentSlider.length) {
					//Slider inside slider case
					setTimeout(function(){
						slider.width(slider.width());
					}, 200);
				} else {
					slider.width(slider.width());
				}
			}


			if (slider.find('img').length > 1) {
				if (parentSlider) {
					//Slider inside slider case
					setTimeout(function(){
						slider.clbSlider({
							dots: false,
							loop: true,
							navBtnClasses: ''
						});
					}, 200);
				} else {
					slider.clbSlider({
						dots: false,
						loop: true,
						navBtnClasses: ''
					});
				}

			}
		});

		setTimeout(function(){
			handleShopMasonry();
		}, 1000);
	} 

	/* # Zoom product */

	function handleZoomProductImage() {
        $('.woo-product-image.with-zoom .product_images .image-wrap')
        .on('mouseover', function(){
        $(this).find('img').css({'transform': 'scale(1.5)'});
        })
        .on('mouseout', function(){
        $(this).find('img').css({'transform': 'scale(1)'});
        })
        .on('mousemove', function(e){
        $(this).find('img').css({'transform-origin': ((e.pageX - $(this).offset().left) / $(this).width()) * 100 + '% ' + ((e.pageY - $(this).offset().top) / $(this).height()) * 100 +'%'});
        })
    }

    /* # Product quickview */

    function handleQuickviewPopup(items) {
        var link;

        if (items === undefined ) {
            link = $('.button-quickview');
        } else {
            link = items.find('.button-quickview');
        }

        link.on("click", function (event) {
            event.preventDefault
            $('.container-loading').removeClass('hidden');

			$('body').data('ohio:quickview-data', '.clb-popup.custom-popup');
			$('body').trigger('ohio:quickview');

            var link = $(this);

            $.ajax({
                url: ohioVariables.url,
                data: {
                    action: 'ohio_product_modal',
                    product_id: $(this).attr('data-product-id'),
                },
                dataType: 'html',
                type: 'POST',
                success: function (data) {
                    var popupInner = $('.custom-popup .clb-popup-holder').addClass('clb-popup-product');
                    popupInner.siblings('[data-button-loading]').removeClass('btn-loading');
                    popupInner.append(data);

                    // Add link for title
                    var productTitle = $('.clb-popup-product .woo-product-details-title');
                    var productLink = link.parent().find('.slider a');

                    productTitle.wrap('<div class="product-popup-title-link"><a href=' + productLink.attr('href') + ' target="_blank"></a></div>');

                    $('.container-loading').addClass('hidden');

					$('body').trigger('ohio:btn-preloader');

                    setTimeout(function(){
                        handleSingleProductGallery(popupInner.find('.woo-product'), popupInner.find('.post-' + link.attr('data-product-id') + ''));
                    }, 50);

                    popupInner.find('.woo-product-details-variations').wc_variation_form();
                }
            });
        });
    }

	function miniCartTextButton() {
		var cart = $('.woocommerce-mini-cart__buttons .button:not(.checkout)');

		cart.addClass('-text');
	}

	$(window).on('load', function () {
		handleShopMasonry();
		handleStickyProduct();
		handleSingleProductGallery();
		handleZoomProductImage();
		handleQuickviewPopup();
		miniCartTextButton();
		handleProductsGridGallery();

		$('body').on('ohio:lazy_load_complete', function(){
			handleQuickviewPopup($('body').data('lazy-items'));
			handleProductsGridGallery();
		});
	});

	var mobileResizeWidth = $(window).width();

	$(window).on('resize', function () {
		handleShopMasonry();

		//For disebling resize trigger on mobile scroll
		if($(window).width() !== mobileResizeWidth){
			handleSingleProductGallery();
			handleProductsGridGallery();
		}
	});

})(jQuery);