// JavaScript Document

$(document).ready(function() {

    /*
    $('body').fadeIn('');
    $('a').click(function(){
        var link = $(this).attr('href');
        $('body').fadeOut('', function(){
            window.location.href = link;
        });
        return false;
    });
    */

    if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
        $('body').addClass('touch');
    } else {
        $('body').addClass('desktop');
    }

    window.onresize = function() {
        document.documentElement.style.setProperty('--vh', `${window.innerHeight/100}px`);
    }
    window.onresize();

    $(document).on('popup:shown', function() {
        window.onresize();
        $('body').addClass('popup-open');
    });

    $(document).on('popup:hidden', function() {
        window.onresize();
        $('body').removeClass('popup-open');
    });

    // stickyheader 
    var stickyNavTop = $('#masterhead').height();
    var stickyNav = function() {
        var scrollTop = $(window).scrollTop();

        if (scrollTop > stickyNavTop) {
            $('#masterhead').addClass('fixed-header');
        } else {
            $('#masterhead').removeClass('fixed-header');
        }
    };

    stickyNav();
    // and run it again every time you scroll
    $(window).scroll(function() {
        stickyNav();
    });


    //hamburger
    /*
    var hamburger = {
        navToggle: document.querySelector('.nav-toggle'),
        nav: document.querySelector('nav'),

        doToggle: function (e) {
            e.preventDefault();
            this.navToggle.classList.toggle('expanded');
            this.nav.classList.toggle('expanded');
        }
    };

    hamburger.navToggle.addEventListener('click', function (e) { hamburger.doToggle(e); });
    */
    //hamburger.nav.addEventListener('click', function(e) { hamburger.doToggle(e); });

    //init Wow
    //new WOW().init();

    //init slick js
    //homepage slider
    $('.mainslide').slick({
        infinite: true,
        dots: true,
        slidesToShow: 1,
        slidesToScroll: 1,
        autoplay: true,
        autoplaySpeed: 2000,
        // asNavFor: '.mainslidethumb'
    });
    $('.mainslide').addClass('show');

    $('.mainslidethumb').slick({
        infinite: true,
        dots: false,
        slidesToShow: 1,
        slidesToScroll: 1,
        autoplay: true,
        autoplaySpeed: 2000,
        // asNavFor: '.mainslide'
    });
    $('.mainslidethumb').addClass('show');

    //homepage category slider
    //cat slider
    $('.product--category--slider').slick({
        centerMode: true,
        dots: true,
        centerPadding: '60px',
        slidesToShow: 4,
        responsive: [{
                breakpoint: 1024,
                settings: {
                    slidesToShow: 3,
                    slidesToScroll: 3,
                    infinite: true,
                    dots: true
                }
            },
            {
                breakpoint: 600,
                settings: {
                    slidesToShow: 2,
                    slidesToScroll: 2
                }
            },
            {
                breakpoint: 480,
                settings: {
                    slidesToShow: 1,
                    slidesToScroll: 1
                }
            }
            // You can unslick at a given breakpoint now by adding:
            // settings: "unslick"
            // instead of a settings object
        ]
    });

    //product slider
    $('.product--main').slick({
        slidesToShow: 1,
        slidesToScroll: 1,
        arrows: true,
        fade: false,
        infinite: true,
        asNavFor: '.product--thumb'
    });

    $('.product--thumb').slick({
        slidesToShow: 3,
        slidesToScroll: 1,
        asNavFor: '.product--main',
        dots: false,
        centerMode: false,
        arrows: false,
        vertical: true,
        focusOnSelect: true
    });

    //remove active class from all thumbnail slides
    $('.product--thumb .slick-slide').removeClass('slick-active');

    //set active class to first thumbnail slides
    $('.product--thumb .slick-slide').eq(0).addClass('slick-active');

    // On before slide change match active thumbnail to current slide
    $('.product--main').on('beforeChange', function(event, slick, currentSlide, nextSlide) {
        var mySlideNumber = nextSlide;
        $('.product--thumb .slick-slide').removeClass('slick-active');
        $('.product--thumb .slick-slide').eq(mySlideNumber).addClass('slick-active');
    });

    $('.woocommerce-product-gallery').on('wc-product-gallery-after-init', function() {
        $(".product .custom-navigation").detach().appendTo(".flex-viewport").show();
        $(window).trigger('resize');
    });

    $(document).on('yith_wccl_product_gallery_loaded', function() {
        setTimeout(function() {
            $(window).trigger('resize');

            setTimeout(function() {
                if ($('.flex-active-slide').width() < 50) {
                    $('.flex-active-slide').css({ 'width': '600px' });
                    $(window).trigger('resize');
                }
            }, 200);

        }, 200);
    });

    //nav menu------------------------------------------------------------------------
    $('.nav-toggle').click(function() {
        if ($('.nav').hasClass('expanded')) {
            $('.nav, .product--nav').removeClass('expanded');
        } else {
            $('.nav').addClass('expanded');
        }
        if ($('.product--nav').hasClass('expanded')) {
            $('.product--nav').removeClass('expanded');
            $(document).trigger('popup:hidden');
        }
    });

    $('.product--nav--close').click(function() {
        $('.product--nav').removeClass('expanded');
        $(document).trigger('popup:hidden');
    });

    $('.product--nav .product--variation--swatch li').click(function() {
        if ($(this).hasClass('selected')) {

        } else {
            $('.product--nav .product--variation--swatch li.selected').removeClass('selected');
            $(this).addClass('selected');
        }
    });

    $('.product--variation--material--selection--swatch ul li').click(function() {
        if ($(this).hasClass('selected')) {

        } else {
            $('.product--variation--material--selection--swatch ul li.selected').removeClass('selected');
            $(this).addClass('selected');
        }
    });
    //--------------------------------------------------------------------------------


    // external js: isotope.pkgd.js

    // filter functions
    /*
    var filterFns = {
        // show if number is greater than 50
        numberGreaterThan50: function() {
            var number = $(this).find('.number').text();
            return parseInt(number, 10) > 50;
        },
        // show if name ends with -ium
        ium: function() {
            var name = $(this).find('.name').text();
            return name.match(/ium$/);
        }
    };
    
    function getHashFilter() {
        // get filter=filterName
        var matches = location.hash.match(/filter=([^&]+)/i);
        var hashFilter = matches && matches[1];
        return hashFilter && decodeURIComponent(hashFilter);
    }
    
    // init Isotope
    var $grid = $('.grid');
    
    // bind filter button click
    var $filterButtonGroup = $('.filter-button-group');
    $filterButtonGroup.on('click', 'button', function() {
        var filterAttr = $(this).attr('data-filter');
        // set filter in hash
        location.hash = 'filter=' + encodeURIComponent(filterAttr);
    });
    
    var isIsotopeInit = false;
    
    function onHashchange() {
        var hashFilter = getHashFilter();
        if (!hashFilter && isIsotopeInit) {
            return;
        }
        isIsotopeInit = true;
        // filter isotope
        $grid.isotope({
            itemSelector: '.element-item',
            layoutMode: 'fitRows',
            // use filterFns
            filter: filterFns[hashFilter] || hashFilter
        });
        // set selected class on button
        if (hashFilter) {
            $filterButtonGroup.find('.is-checked').removeClass('is-checked');
            $filterButtonGroup.find('[data-filter="' + hashFilter + '"]').addClass('is-checked');
        }
    }
    
    $(window).on( 'hashchange', onHashchange );
    
    // trigger event handler to init Isotope
    onHashchange();
    */

    //init post sticky social share
    $(".post-share, .float-box").stick_in_parent();

    //quantity plus minus button
    if (!String.prototype.getDecimals) {
        String.prototype.getDecimals = function() {
            var num = this,
                match = ('' + num).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);
            if (!match) {
                return 0;
            }
            return Math.max(0, (match[1] ? match[1].length : 0) - (match[2] ? +match[2] : 0));
        }
    }
    // Quantity "plus" and "minus" buttons
    $(document.body).on('click', '.plus, .minus', function() {
        var $qty = $(this).closest('.quantity').find('.qty'),
            currentVal = parseFloat($qty.val()),
            max = parseFloat($qty.attr('max')),
            min = parseFloat($qty.attr('min')),
            step = $qty.attr('step');

        // Format values
        if (!currentVal || currentVal === '' || currentVal === 'NaN') currentVal = 0;
        if (max === '' || max === 'NaN') max = '';
        if (min === '' || min === 'NaN') min = 0;
        if (step === 'any' || step === '' || step === undefined || parseFloat(step) === 'NaN') step = 1;

        // Change the value
        if ($(this).is('.plus')) {
            if (max && (currentVal >= max)) {
                $qty.val(max);
            } else {
                $qty.val((currentVal + parseFloat(step)).toFixed(step.getDecimals()));
            }
        } else {
            if (min && (currentVal <= min)) {
                $qty.val(min);
            } else if (currentVal > 0) {
                $qty.val((currentVal - parseFloat(step)).toFixed(step.getDecimals()));
            }
        }

        // Trigger change event
        $qty.trigger('change');
    });

    
    //$('.woocommerce-cart-form .mix-and-match-item .product-remove a').click(function(e) {
    $(document.body).on('click', '.woocommerce-cart-form .mix-and-match-item .product-remove a', function(e){
        e.preventDefault();
        e.stopPropagation();
        
        console.log('remove mm');

        var cartItemKeyList = $(this).data('cartItemKeyList');
        
        console.log('cartItemKeyList', cartItemKeyList);

        var $tr = $(this).parent().parent();
        $tr.css({
            'opacity': '0.2'
        });

        var url = AJAX_PATH + '?action=mm_remove_from_cart&cart_item_key_list=' + cartItemKeyList;
        $.getJSON(url)
            .done(function(response) {
                if (response.success) {
                    document.location = CONTEXT_PATH + '/cart';
                }
            })
            .fail(function() {
                console.log('error getting variation', url);
            })
    })

    //in product listing page, for variable product, hide max price in price range display
    $('.product--price--variable').each(function(i, v) {
        var $this = $(v);
        if ($this.children('.woocommerce-Price-amount').length == 1) {
            return;
        }

        $this.children('.woocommerce-Price-amount').last().remove();
        $this.find('del').children('.woocommerce-Price-amount').last().remove();
    });

    $('.product--price--variable, .product--price--variable del').contents().each(function(i, v) {
        if (v.nodeType === 3) {
            $(v).remove();
        }
    });

    $('.product--price--variable').addClass('processed');
    $('.product--price--variable').prepend('<span>from&nbsp;</span>');

    //====================================================================================
    /*
    $('.product .mixmatch-button').click(function(){
        //location.href = CONTEXT_PATH + '/mix-match';
        window.open(CONTEXT_PATH + '/mix-match', '_blank');
    })
    */
    
    //yith popup ajax search added by ryan//
    $('.nav-search a, .search-overlay').click(function(event){
        event.preventDefault();
        $('#popup-search').toggleClass('active');
        $('body').toggleClass('preventscroll');
    });
    
    
    //
    //accordion - product details
	const items = document.querySelectorAll(".product--desc--spec--accordion .accordion-item > a");

	function toggleAccordion(){
        this.classList.toggle('active');
        this.nextElementSibling.classList.toggle('active');
	}

	items.forEach(item => item.addEventListener('click', toggleAccordion));
    
    //added by ryan
    
    if ($('input#payment_method_reward_gateway').is(':checked')) {
        $('.wcd-wrapper').hide();
    } else {
        $('.wcd-wrapper').show();
    }
    
    //click and focus
    $(".nav-search a").on('click', function() {
        $("input#yith-s").val($(this).text()).focus().trigger('keypress');
    });

    //checkout
    if($('#crown_deliver_stairs').length > 0){
        $('#crown_deliver_stairs').change(function(i, v){
            if($(this).val() == 'yes'){
                $('#crown_deliver_stairs-description').slideDown();
            }else{
                $('#crown_deliver_stairs-description').slideUp();
            }
        })
    }

})