var goodFreeBaseUrl="https://gifts.good-apps.co/";var goodFreeApiUrl="https://gifts.good-apps.co/";var goodFreeShop="superdulcesmexico.myshopify.com";var goodFreeWidget={"widget_name":"Widget - default","widget_active_img":"https:\/\/gifts.good-apps.co\/assets\/images\/widgets\/preview\/style_1.png","widget_type":"1","widget_themes":"style_1","design_type":{"position":"right","animation":"animate__fadeIn"},"top":{"top_show":true,"background_top":"#191919","close_show":true,"close_bg_color":"#2F2F2F","close_bg_color_hover":"#2F2F2F","close_color":"#fff","close_color_hover":"#fff","close_border_radius":"10","title_show":true,"title_font_size":"20","title_color":"#fff","title_font_weight":"700","title_font_style":"normal","title_line_height":"28","description_show":true,"description_font_size":"16","description_color":"#989898","description_font_weight":"400","description_font_style":"normal","description_line_height":"20"},"main":{"background_main":"#fff","wallpaper":"wallpaper_0","border_width":"0","border_color":"transparent","border_radius":"5","section_hide":false},"bottom":{"background_bottom":"transparent","checkout_btn_show":true,"checkout_btn_bg":"transparent","checkout_btn_bg_hover":"transparent","checkout_btn_font_color":"#f98800","checkout_btn_font_color_hover":"#f98800","checkout_btn_border_radius":"4","checkout_btn_font_size":"15","checkout_btn_font_weight":"400","checkout_btn_font_style":"normal","checkout_btn_line_height":"22","checkout_btn_padding_t_b":"12"},"product":{"background_offer":"#fff","background":"#fff","prod_border_width":"1","prod_border_color":"#e6e6e6","prod_border_radius":"5","prod_title_show":true,"prod_title_color":"#000","prod_title_font_size":"18","prod_title_font_weight":"700","prod_title_font_style":"normal","prod_title_line_height":"26","prod_desc_show":true,"prod_desc_color":"#757474","prod_desc_font_size":"14","prod_desc_font_weight":"400","prod_desc_font_style":"normal","prod_desc_line_height":"18","prod_name_show":true,"prod_name_color":"#757474","prod_name_font_size":"14","prod_name_font_weight":"400","prod_name_font_style":"normal","prod_name_line_height":"24","price_show":false,"price_color":"#f98800","price_font_size":"12","price_font_weight":"500","price_font_style":"normal","price_line_height":"24","compare_price_show":false,"compare_price_color":"#757474","compare_price_font_size":"12","compare_price_font_weight":"500","compare_price_font_style":"normal","compare_price_line_height":"24","variations_background":"#fff","variations_font_color":"#757474","variations_border_width":"1","variations_border_color":"#e6e6e6","variations_border_radius":"3","icon_color":"#656565","prod_active_border_color":"#50b83c"},"translation":{"title":"Free Gifts","description":"Gifts will be added at checkout","checkout_btn":"Checkout"},"custom_css":".goodfg-title, .goodfg-description {text-align: center;} .goodfg-offer {box-shadow: 2px 2px 4px rgba(25, 25, 25, 0.09);} .goodfg-product {border-top-width: 1px !important;}"};var goodFreeCurrencyCode="USD";var goodFreeCurrencySymbol="$";var goodFreeVersion="60";var goodFreeActiveApp="1";var goodFreeRemoveFunnelProducts="2";var goodFreeShowPopupAllPeriod="0";var goodFreeShowPopupPerDay="0";var goodFreeMaxShowOffer="0";var goodFreeTriggerButton="";var goodFreeCartButton="";var goodFreeBuyItNow="";var goodFreeIconUrl="https://gifts.good-apps.co/assets/images/gift_icons_small";var goodFreeDiscountCodes="0";var goodFreeThreshold="0";var goodFreeLabel="";var goodFreeQnt="";var goodFreeAppName="GoodAppsFreeGifts";var goodFreeAllowBlockQty=[];if(!goodFreeApp){var goodFreeApp=function(){if(goodFreeActiveApp==="0"){return;} if(window.ShopifyAnalytics&&window.ShopifyAnalytics.meta.page.pageType=='product'&&window.ShopifyAnalytics.meta.product.type=='ghost_product'){let indexOf=window.location.href.indexOf('free-gift-');let newUrl=window.location.href.slice(0,indexOf)+window.location.href.slice(indexOf+10,window.location.href.length);window.location.replace(newUrl);} let purchaseData=[];let isActive;const url=location.href;const storeUrl=new URL(url).origin;let rootId1='goodappsf-icon';let rootId2='goodappsf-offers';let iframe1;let iframe2;let widgetStyles=goodFreeWidget;let oneFreeGift=typeof goodFreeThreshold!='undefined'?+goodFreeThreshold:false;let addToCart=typeof goodFreeDiscountCodes!='undefined'?(+goodFreeDiscountCodes?false:true):false;addToCart=!addToCart;let freeGiftLabel=typeof goodFreeLabel!='undefined'?(goodFreeLabel?goodFreeLabel:'Free Gift'):'Free Gift';let giftIcon;let boxWrapper;let boxWrapperIn;const defaultChackoutTriggers=['.cart__submit','input[name="checkout"]','button[name="checkout"]'];const defaultBuyItNowTriggers=['.shopify-payment-button__button'];const quantityClasses=['.cart-item .quantity__button.no-js-hidden','.cart-item .quantity__input'];let otherClasess=typeof goodFreeQnt==='undefined'?'':goodFreeQnt;if(goodFreeBuyItNow!=''){cloneNodeBtn(goodFreeBuyItNow);} addGlobalCSS(widgetStyles);function addGlobalCSS(widgetStyles){if(widgetStyles.custom_css_float===null){return;} const styleTag=``;document.head.insertAdjacentHTML('beforeend',styleTag);} let allCheckoutTriggers=goodFreeBuyItNow?goodFreeBuyItNow:'';allCheckoutTriggers=goodFreeTriggerButton?allCheckoutTriggers+goodFreeTriggerButton:allCheckoutTriggers;allCheckoutTriggers=allCheckoutTriggers.split(',').map((el)=>el.trim());allCheckoutTriggers=allCheckoutTriggers.concat(defaultChackoutTriggers);allCheckoutTriggers=allCheckoutTriggers.concat(defaultBuyItNowTriggers);allCheckoutTriggers=[...new Set(allCheckoutTriggers)];allCheckoutTriggers=allCheckoutTriggers.filter((el)=>el);let allInputQntClasses=otherClasess.split(',').map((el)=>el.trim());allInputQntClasses=allInputQntClasses.concat(quantityClasses);let freeGiftObjects=[];let boxIsOpen=false;let chosenFreeGifts=window.localStorage.getItem('goodappsf-free-gifts');goodFreeCurrencySymbol=decodeHTML(goodFreeCurrencySymbol.replace(/(<([^>]+)>)/ig,""));const currentCurrencyCode=Shopify.currency.active;let currentCurrencySymbol=goodFreeCurrencySymbol;let currencyRate=1;if(goodFreeCurrencyCode!==currentCurrencyCode){const country=Shopify.country;currencyRate=Shopify.currency.rate;const regexStr=getMainCurrencySymbol();currentCurrencySymbol=goodFreeCurrencySymbol.replace(regexStr,getCurrencySymbol(country,currentCurrencyCode));} function getCurrencySymbol(locale,currency){return(0).toLocaleString(locale.toLowerCase(),{style:'currency',currency:currency,minimumFractionDigits:0,maximumFractionDigits:0}).replace(/\d/g,'').trim()} function getMainCurrencySymbol(){if(goodFreeCurrencySymbol.includes('{{')){return goodFreeCurrencySymbol.replace(/{{(.*?)}}/ig,'').trim();}else{return goodFreeCurrencySymbol.trim();}} function getPriceByRate(price){return(parseFloat(price)*currencyRate).toFixed(2);} function getStorePriceByRate(price){return parseFloat((parseFloat(price)*currencyRate).toFixed(2));} function currencyFormat(num){if(currentCurrencySymbol.includes('{{')){return currentCurrencySymbol.replace(/{{(.*?)}}/ig,formatNumber(num));}else{return currentCurrencySymbol+formatNumber(num);}} function formatNumber(num){num=parseFloat(num).toFixed(2);return num.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1,");} function setCookieData(){let url=location.href;const goodappsfbCurrentShownPerMonth=getCookie('goodappsfCurrentShownPerMonth');const goodappsfbCurrentShownPerDay=getCookie('goodappsfCurrentShownPerDay');const ZERO=0;const oneMonth=new Date(Date.now()+3600000*24*25);const oneWeek=new Date(Date.now()+3600000*24*7);const oneDay=new Date(Date.now()+3600000*24);let currentDate=new Date(Date.now());currentDate=currentDate.toUTCString();if(url.includes('#')){url=url.split('#');if(url[url.length-1]){let parameter='#'+url[url.length-1];setCookie('goodappsfUrl',parameter,{expires:oneWeek});}} if(!goodappsfbCurrentShownPerMonth){setCookie('goodappsfCurrentShownPerMonth',ZERO,{expires:oneMonth});setCookie('goodappsfStartDatePerMonth',currentDate,{expires:oneMonth});} if(!goodappsfbCurrentShownPerDay){setCookie('goodappsfCurrentShownPerDay',ZERO,{expires:oneDay});setCookie('goodappsfStartDatePerDay',currentDate,{expires:oneDay});}} setCookieData();function setCookie(name,value,options={}){options={path:'/',...options};if(options.expires instanceof Date){options.expires=options.expires.toUTCString();} let updatedCookie=encodeURIComponent(name)+"="+encodeURIComponent(value);for(let optionKey in options){updatedCookie+="; "+optionKey;let optionValue=options[optionKey];if(optionValue!==true){updatedCookie+="="+optionValue;}} document.cookie=updatedCookie;} function deleteFreeProductsInCart(){let toDeleteProducts=typeof goodFreeRemoveFunnelProducts=='undefined'?3:goodFreeRemoveFunnelProducts;let chosenFreeGifts=window.localStorage.getItem('goodappsf-free-gifts');if(chosenFreeGifts){chosenFreeGifts=JSON.parse(chosenFreeGifts);} if(toDeleteProducts==2&&chosenFreeGifts){let productsTodeleteDiscounts=[];fetchCart().then(function(dataCart){dataCart.items.forEach((item,i)=>{if(item.properties&&item.properties.status==freeGiftLabel){item.index=i;productsTodeleteDiscounts.push(item);}});let promiseObjs=productsTodeleteDiscounts.map((item)=>{return{'line':item.index+1};});Promise.all(promiseObjs.map((data)=>removeItem(data))).then(()=>{}).catch((err)=>{console.log('err',err);});})}} deleteFreeProductsInCart();function getCookie(name){let matches=document.cookie.match(new RegExp("(?:^|; )"+name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,'\\$1')+"=([^;]*)"));return matches?decodeURIComponent(matches[1]):undefined;} function increasePopupShown(){let currentShownPerMonth=parseInt(getCookie('goodappsfCurrentShownPerMonth'));let currentShownPerDay=parseInt(getCookie('goodappsfCurrentShownPerDay'));let goodappsfbStartDatePerMonth=getCookie('goodappsfStartDatePerMonth');let goodappsfbStartDatePerDay=getCookie('goodappsfStartDatePerDay');currentShownPerMonth++;currentShownPerDay++;let expireMonth=new Date(Date.parse(goodappsfbStartDatePerMonth)+3600000*24*25);let expireDay=new Date(Date.parse(goodappsfbStartDatePerDay)+3600000*24);setCookie('goodappsfCurrentShownPerMonth',currentShownPerMonth,{expires:expireMonth});setCookie('goodappsfCurrentShownPerDay',currentShownPerDay,{expires:expireDay});} function isPopupShown(){const currentShownPerMonth=parseInt(getCookie('goodappsfCurrentShownPerMonth'));const currentShownPerDay=parseInt(getCookie('goodappsfCurrentShownPerDay'));if((parseInt(goodFreeShowPopupPerDay)>currentShownPerDay||parseInt(goodFreeShowPopupPerDay)===0)&&(parseInt(goodFreeShowPopupAllPeriod)>currentShownPerMonth||parseInt(goodFreeShowPopupAllPeriod)===0)){return true}else{return false}} if(location.href.includes('offerId')&&location.href.includes(goodFreeAppName)){setCrisp();buildPreviewMessage();addPreviewMessageStyles();setTimeout(()=>{openPopup();},0) popupEvents();} function buildPreviewMessage(){const html=`

Hi, I’m your assistant from GA Free Gift App. If you can’t see the Widget, click ‘Fix for ME’ and we’ll resolve it immediately.

`;const element=document.createElement("div");element.classList.add('goodappsf_minipopup','goodappsf_minipopup_hide');element.innerHTML=html;const rootDiv=document.body;rootDiv.append(element);} function addPreviewMessageStyles(){const styles=` .goodappsf_minipopup { position: fixed; left: 30px; bottom: 10%; width: 300px; height: 350px; padding: 30px; background: #fff; box-shadow: 0px 3px 16px 0px rgba(0,0,0,0.08); border: 1px solid #f1f1f2; border-radius: 8px; z-index: 999; transition: 0.7s; } @media (max-width: 480px){ .goodappsf_minipopup { width: 80%; } } @media (max-width: 380px){ .goodappsf_minipopup { padding: 15px; } } .goodappsf_minipopup_hide { transform: translateY(120%); opacity: 0; } .goodappsf_minipopup_content { position: relative; display: flex; height: 100%; flex-direction: column; justify-content: space-between; align-items: center; } .goodappsf_minipopup__close { position: absolute; width: 10px; top: -25px; right: -17px; transition: 0.3s; cursor: pointer; } @media (max-width: 380px){ .goodappsf_minipopup__close { width: 8px; top: -16px; right: -7px; } } .goodappsf_minipopup__close:hover { transform: scale(1.2); } .goodappsf_minipopup__message { text-align: center; margin: 0px; font-size: 16px; font-weight: 400; text-transform: none; } @media (max-width: 380px){ .goodappsf_minipopup__message { font-size: 14px; } } .goodappsf_minipopup__btns { display: flex; justify-content: center; gap: 10px; } @media (max-width: 480px){ .goodappsf_minipopup__btns { flex-direction: column; } } .goodappsf_minipopup__btn { padding: 10px 25px; border-radius: 6px; font-size: 12px; transition: 0.5s; cursor: pointer; border: none; color: white; } .goodappsf_minipopup__btn--yellow { background: #FFB73E; } .goodappsf_minipopup__btn--yellow:hover { background: #b09059; } .goodappsf_minipopup__btn--gray { background: #f9f9f9; color: #78829d } .goodappsf_minipopup__btn--gray:hover { background: #f1f1f2; } `;const element=document.createElement("style");element.innerHTML=styles;const rootDiv=document.head;rootDiv.append(element);};function openPopup(){const popup=document.querySelector('.goodappsf_minipopup');popup.classList.remove('goodappsf_minipopup_hide');};function closePopup(){const popup=document.querySelector('.goodappsf_minipopup');popup.classList.add('goodappsf_minipopup_hide');};function popupEvents(){const closeBtn=document.querySelector('.goodappsf_minipopup__btn--gray');const closeIcon=document.querySelector('.goodappsf_minipopup__close');closeBtn.addEventListener('click',()=>{closePopup();}) closeIcon.addEventListener('click',()=>{closePopup();}) const opener=document.querySelector('.goodappsf_minipopup__btn--yellow');opener.addEventListener('click',(e)=>{e.preventDefault();$crisp.push(["do","chat:open"]) $crisp.push(["do","message:send",["text","Hi, I’m using GA Free Gift and can’t see the widget. Please assist."]]);})} function setCrisp(){const scriptTag=document.createElement('script');scriptTag.setAttribute('type','text/javascript');scriptTag.innerHTML=` window.$crisp=[]; window.CRISP_WEBSITE_ID="4e50b386-fde3-4da7-97f2-80e38503c5ab"; $crisp.push(["set", "user:email", "{{ $userEmail }}"]); $crisp.push(["set", "user:name", "{{ $storeOwnerName }}"]); $crisp.push(["set", "session:segments", [["Free Gift"]]]); $crisp.push(["set", "session:event", ["user:welcome"]]); $crisp.push(["set", "session:data", [ [ ["myshopifyurl", "${storeUrl}"], ["totalsales", "{{ $allAmount }}"], ["totalOffers", "{{ $countOffers }}"] ] ]]); (function(){ d=document; s=d.createElement("script"); s.src="https://client.crisp.chat/l.js"; s.async=1; d.getElementsByTagName("head")[0].appendChild(s); })();`;const rootDiv=document.head;rootDiv.append(scriptTag);$crisp.push(["do","chat:close"])} function decodeHTML(html){const txt=document.createElement('textarea');txt.innerHTML=html;return txt.value;};let show_free_gift=isPopupShown();if(show_free_gift){buildIframe2(rootId2);document.getElementById('goodappsf-widget').onload=()=>{iframe2=document.getElementById('goodappsf-widget');let offersEl=getAppSelector(`.${rootId2}-wrap`,rootId2,iframe2);offersEl.innerHTML=buildOffersHtml();addStyling2();getAndBuildOffers();boxWrapper=document.getElementById(`${rootId2}`);boxWrapperIn=getElementInIframe(`#${rootId2}`,iframe2);buildIframe1(rootId1);document.getElementById('goodappsf-widget-icon').onload=()=>{iframe1=document.getElementById('goodappsf-widget-icon');let iconEl=getAppSelector(`.${rootId1}-wrap`,rootId1,iframe1);iconEl.innerHTML=buildGiftIcon();giftIcon=iconEl;setCloseOpenEvents();};increasePopupShown();};} function setFreeGiftBoxPosition(position,element){element.style.bottom='120px';switch(position){case'left':case'bottom_left':element.style.left='20px';if(window.screen.width<500){element.style.left='0px';} break;case'right':case'bottom_right':element.style.right='20px';element.style.left='auto';if(window.screen.width<500){element.style.right='0px';} break;case'center_right':element.style.right='102px';element.style.left='auto';element.style.top='50%';element.style.transform='translateY(-50%)';if(window.screen.width<500){element.style.right='0';} break;case'center_left':element.style.left='102px';element.style.top='50%';element.style.transform='translateY(-50%)';if(window.screen.width<500){element.style.left='0';} break;case'top_right':element.style.right='20px';element.style.left='auto';element.style.top='120px';if(window.screen.width<500){element.style.right='0px';element.style.top='85px';} break;case'top_left':element.style.left='20px';element.style.top='120px';if(window.screen.width<500){element.style.left='0px';element.style.top='85px';} break;default:break;}} function setIconPosition(position,element){element.style.bottom='40px';switch(position){case'left':case'bottom_left':element.style.left='20px';if(window.screen.width<500){element.style.left='10px';} break;case'right':case'bottom_right':element.style.right='20px';element.style.left='auto';if(window.screen.width<500){element.style.right='10px';} break;case'center_right':element.style.right='20px';element.style.left='auto';element.style.top='50%';element.style.transform='translateY(-50%)';if(window.screen.width<500){element.style.right='10px';} break;case'center_left':element.style.left='20px';element.style.top='50%';element.style.transform='translateY(-50%)';if(window.screen.width<500){element.style.left='10px';} break;case'top_right':element.style.right='20px';element.style.left='auto';element.style.top='40px';if(window.screen.width<500){element.style.top='10px';element.style.right='10px';} break;case'top_left':element.style.left='20px';element.style.top='40px';if(window.screen.width<500){element.style.left='10px';element.style.top='10px';} break;default:break;}} function buildIframe1(rootId){const html=``;const element=document.createElement("div");element.setAttribute("id",rootId);element.innerHTML=html;element.style.height='74px';element.style.width='80px';element.style.position='fixed';setIconPosition(widgetStyles.design_type.position,element);element.style.zIndex='60000';element.style.display='none';document.querySelector('body').append(element);} function buildGiftIcon(){let goodFreeIconUrlNew=typeof goodFreeIconUrl=='undefined'?'':goodFreeIconUrl;let iconName='';if(goodFreeIconUrlNew){iconName=widgetStyles.gift_icon_small;} return`
${iconName ? `${iconName.split('.')[0]}` : `` }
!Created with Sketch.
`} function buildIframe2(rootId){const html=``;const element=document.createElement("div");element.setAttribute("id",rootId);element.innerHTML=html;element.style.height='calc(100vh - 120px - 70px)';setFreeGiftBoxPosition(widgetStyles.design_type.position,element);element.style.minHeight='auto';element.style.maxHeight='820px';element.style.position='fixed';element.style.display='none';element.style.zIndex='999999999';if(window.screen.width>=500){element.style.width='380px';}else{element.style.width='100%';} document.querySelector('body').append(element);} function addStyling2(){let head=getElementInIframe('head',iframe2);if(!widgetStyles)return;let style=` `;head.insertAdjacentHTML('beforeend',style);} function buildOffersHtml(){if(!widgetStyles)return;return`

${widgetStyles.translation.title ? widgetStyles.translation.title : ''}

${widgetStyles.translation.description ? widgetStyles.translation.description : ''}

`} function openGiftBox(){if(widgetStyles.main.section_hide)return;if(!(boxWrapper&&boxWrapperIn))return;boxWrapper.style.display="block";boxWrapperIn.setAttribute('class','');boxWrapperIn.classList.add('animate__animated',`${widgetStyles.design_type ? widgetStyles.design_type.animation : 'slideInRight'}`);boxIsOpen=true;} function closeGiftBox(){boxWrapperIn.setAttribute('class','');let animationClass=widgetStyles.design_type?widgetStyles.design_type.animation:'animate__slideOutRight';switch(animationClass){case'animate__slideInLeft':boxWrapperIn.classList.add('animate__animated','animate__slideOutLeft');break;case'animate__slideInRight':boxWrapperIn.classList.add('animate__animated','animate__slideOutRight');break;case'animate__fadeIn':boxWrapperIn.classList.add('animate__animated','animate__fadeOut');break;case'animate__slideInUp':boxWrapperIn.classList.add('animate__animated','animate__slideOutDown');break;case'animate__slideInDown':boxWrapperIn.classList.add('animate__animated','animate__slideOutUp');break;case'animate__zoomIn':boxWrapperIn.classList.add('animate__animated','animate__zoomOut');break;case'animate__fadeInTopLeft':boxWrapperIn.classList.add('animate__animated','animate__fadeOutTopLeft');break;case'animate__fadeInTopRight':boxWrapperIn.classList.add('animate__animated','animate__fadeOutTopRight');break;default:break;} boxIsOpen=false;setTimeout(()=>{boxWrapper.style.display="none";},500)} function setCloseOpenEvents(){let closeEl=getAppSelector('.goodappsf-close-js',rootId2,iframe2);giftIcon.addEventListener('click',function(){if(boxIsOpen){closeGiftBox();}else{openGiftBox();}});closeEl.addEventListener('click',()=>{if(boxIsOpen){closeGiftBox();}})} function getAppSelector(element,rootId,iframe){let rootNode=document.querySelector(`#${rootId}`);if(iframe){rootNode=iframe.contentWindow.document.querySelector(`#${rootId}`);} return rootNode.querySelector(element);} function getElementInIframe(elem,iframe){if(!iframe)return;return iframe.contentWindow.document.querySelector(`${elem}`);} function getAppSelectorAll(element,rootId,iframe){let rootNode=document.querySelector(`#${rootId}`);if(iframe){rootNode=iframe.contentWindow.document.querySelector(`#${rootId}`);} return rootNode.querySelectorAll(element);} function makeId(length){let result='';const characters='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';const charactersLength=characters.length;for(let i=0;i${triggerProduct.title}`);}else if(html.includes('{{product}}')){html=html.replaceAll('{{product}}','');} if(offer.triggerCollection.handle&&html.includes('{{collection}}')){let triggerCollection=offer.triggerCollection;html=html.replaceAll('{{collection}}',`${triggerCollection.title}`);}else if(html.includes('{{collection}}')){html=html.replaceAll('{{collection}}','');} if(html.includes('{{value}}')){if(getPriceByRate(offer.cart_min)>=0){html=html.replaceAll('{{value}}',currencyFormat(getPriceByRate(offer.cart_min)))}else{html=html.replaceAll('{{value}}','');}} if(freeGift&&html.includes('{{free gift}}')){html=html.replaceAll('{{free gift}}',`${freeGift.title}`);}else if(html.includes('{{free gift}}')){html=html.replaceAll('{{free gift}}','');} return html} async function createStatisticFetch(main_offer_id,offer_id,addedToCart,funnelViews){const options={method:'POST',headers:{'Content-Type':'application/json',"Accept":"application/json"},body:JSON.stringify(createStatisticRequest(main_offer_id,offer_id,addedToCart,funnelViews))};let url=goodFreeApiUrl+`api/front/statistic`;const resp=await fetch(url,options);if(!resp.ok){throw new Error(`HTTP error, status = ${resp.status}`);} return await resp.text();} function createStatisticRequest(main_offer_id,offer_id,addedToCart,views){const domain=goodFreeShop;const action=addedToCart?'accept':'decline';return{domain:domain,main_offer_id:main_offer_id,offer_id:offer_id,action:action,views:views}} async function createPurchaseFetch(data){const options={method:'POST',headers:{'Content-Type':'application/json',"Accept":"application/json"},body:JSON.stringify(createPurchaseRequest(data))};let url=goodFreeApiUrl+`api/front/purchase`;const resp=await fetch(url,options);if(!resp.ok){throw new Error(`HTTP error, status = ${resp.status}`);} return await resp.text();} function createPurchaseRequest(data){const domain=goodFreeShop;const main_offer_id=data.main_offer_id;const amount=[{offer_id:data.offer_id,amount:data.amount}];return{domain:domain,main_offer_id:main_offer_id,offer_amount:amount}} function createPurchaseData(mainOfferId,offerId,variantId,propertyId,storePrice){const localOfferData=localStorage.getItem('goodappsfPurchaseData');purchaseData=localOfferData?JSON.parse(localOfferData):purchaseData;let offerData={'main_offer_id':mainOfferId,'offer':[]} if(purchaseData.length){const checkMainOfferId=purchaseData.find(item=>item.main_offer_id===mainOfferId);if(checkMainOfferId){setOfferData(checkMainOfferId);}else{purchaseData.push(offerData);setOfferData(offerData);}}else{purchaseData.push(offerData) setOfferData(offerData);} function setOfferData(data){data.offer.push({offer_id:offerId,product_id:variantId,property_id:propertyId,product_store_price:storePrice})} localStorage.setItem('goodappsfPurchaseData',JSON.stringify(purchaseData));} const s_ajaxListener=new Object();s_ajaxListener.tempOpen=XMLHttpRequest.prototype.open;s_ajaxListener.tempSend=XMLHttpRequest.prototype.send;s_ajaxListener.callback=function(){let thisUrl=this.url.replace(/\?(.+)/ig,"");if(thisUrl.includes('/cart/add')){fetchCart().then((cartJosn)=>{setActiveFreeGifts(cartJosn,freeGiftObjects);}).catch((err)=>console.log('err',err));} if(thisUrl.includes('/cart/change')){fetchCart().then((cartJosn)=>{setActiveFreeGifts(cartJosn,freeGiftObjects);}).catch((err)=>console.log('err',err));} if(thisUrl.includes('cart/update.js')){fetchCart().then((cartJosn)=>{setActiveFreeGifts(cartJosn,freeGiftObjects);}).catch((err)=>console.log('err',err));}} XMLHttpRequest.prototype.open=function(a,b){if(!a)var a='';if(!b)var b='';s_ajaxListener.tempOpen.apply(this,arguments);s_ajaxListener.method=a;s_ajaxListener.url=b;if(a.toLowerCase()=='get'){s_ajaxListener.data=b.split('?');s_ajaxListener.data=s_ajaxListener.data[1];}} XMLHttpRequest.prototype.send=function(a,b){if(!a)var a='';if(!b)var b='';s_ajaxListener.tempSend.apply(this,arguments);if(s_ajaxListener.method.toLowerCase()=='post')s_ajaxListener.data=a;setTimeout(()=>{s_ajaxListener.callback();},1000);} const nativeFetch=window.fetch;window.fetch=async function(...args){let thisUrl;if(Array.isArray(args)&&args.length>0&&typeof args[0]==='string'){thisUrl=args[0].replace(/\?(.+)/ig,"");}else{return nativeFetch.apply(window,args);} if(thisUrl.includes('/cart/add')){if(typeof args[1].body==='string'&&(args[1].body.includes('offer'))){triggerProduct=false;return nativeFetch.apply(window,args);} let response=await nativeFetch.apply(window,args);if(response.status===200){fetchCart().then((cartJosn)=>{setActiveFreeGifts(cartJosn,freeGiftObjects);}).catch((err)=>console.log('err',err))} return response}else if(thisUrl.includes('/cart/change')){let response=await nativeFetch.apply(window,args);if(response.status===200){fetchCart().then((cartJosn)=>{setActiveFreeGifts(cartJosn,freeGiftObjects);}).catch((err)=>console.log('err',err))} return response;}else if(thisUrl.includes('/cart/update.js')){let response=await nativeFetch.apply(window,args);if(response.status===200){fetchCart().then((cartJosn)=>{setActiveFreeGifts(cartJosn,freeGiftObjects);}).catch((err)=>console.log('err',err))} return response} else{return nativeFetch.apply(window,args);}} function getAndBuildOffers(){offersFetch().then(function(dataOffers){if(Array.isArray(dataOffers)&&dataOffers.length===0)return;let offers=Object.values(dataOffers.offers);if(offers.length){let iconEl=document.getElementById(rootId1);if(iconEl){if(widgetStyles.main.section_hide){iconEl.style.display='none';}else{iconEl.style.display='block';}}} offers.forEach((offer)=>{let products=[];let ghost_products=[];let mainProductIds=Object.keys(offer.products);mainProductIds.forEach((mainId)=>{let product=Object.assign({},dataOffers.products[`${mainId}`]);product.variants=[];offer.products[`${mainId}`].forEach((variantId)=>{product.variants.push(dataOffers.products[`${mainId}`].variants[`${variantId}`]);});product.main_offer_id=offer.main_offer_id;product.offer_id=offer.id;if(addToCart&&product.type!='shopify'){products.push(product);}else if(!addToCart&&product.type=='shopify'){products.push(product);}});freeGiftObjects.push({offer:offer,products:products,ghost_products:ghost_products});});fillGiftOffers(freeGiftObjects);checkoutEvents();productEvents(freeGiftObjects);fetchCart().then((cartJosn)=>{setActiveFreeGifts(cartJosn,freeGiftObjects);deleteFreeGiftsLocalStorage(freeGiftObjects);addAndDeleteToCartFreeProducts(cartJosn,true);}).catch((err)=>console.log('err',err))});} function fillGiftOffers(freeGiftObjects){let offerWrapper=getAppSelector('.goodappsf-widget__main',rootId2,iframe2);offerWrapper.innerHTML='';freeGiftObjects.forEach((el)=>{fillGiftOffer(el,offerWrapper);});} function fillGiftOffer(freeGiftObject,wrapper){let productsHtml='';freeGiftObject.products.forEach((product)=>{let varintHtml='';if(product.variants.length>1){let optionHtml='';product.variants.forEach((variant)=>{optionHtml+=` `}) varintHtml=`
`;} let imageSrc;if(product.variants&&product.variants[0]&&product.variants[0].image){imageSrc=product.variants[0].image;}else{imageSrc=`${goodFreeBaseUrl}/assets/images/no-image.jpg`;} productsHtml+=`
Product
${product.title}
${currencyFormat(getPriceByRate(product.variants[0].variantPrice))} ${currencyFormat(0)}
${varintHtml}
`});let html='';let iconUrl=freeGiftObject.offer.icon_choose;if(!iconUrl){iconUrl=`${goodFreeBaseUrl}assets/images/widgets/gift.svg`;} if(freeGiftObject.products.length==1){iconUrl=freeGiftObject.products[0].variants[0].image;} html+=`
Gift

${setGiftTitle(freeGiftObject.offer, false, freeGiftObject.products.length == 1 ? freeGiftObject.products[0] : null, 'title')}

${setGiftTitle(freeGiftObject.offer, false, freeGiftObject.products.length == 1 ? freeGiftObject.products[0] : null)}

${productsHtml}
`;wrapper.innerHTML+=html;} function showOnlyOneActiveOffer(freeGiftObjects){let maxProductPrice=0;let offerIdToShow;let offerIdsToHide=[];freeGiftObjects.forEach((freeGiftObject)=>{if(freeGiftObject.active&&freeGiftObject.offer.cart_min){offerIdsToHide.push(freeGiftObject.offer.id);const maxPrice=freeGiftObject.offer.cart_min;if(maxProductPriceel.style.display='block');let chosenFreeGifts=window.localStorage.getItem('goodappsf-free-gifts');chosenFreeGifts=chosenFreeGifts?JSON.parse(chosenFreeGifts):[];offerIdsToHide.forEach((id)=>{let offerEl=getAppSelector(`.goodappsf-offer[data-offer="${id}"]`,rootId2,iframe2);if(offerEl){offerEl.style.display='none';};chosenFreeGifts=chosenFreeGifts.filter((el)=>{if(el.offer_id==offerIdToShow){return true;} if(el.offer_id!=id){return true;}else{return false;}});});if(offerIdToShow){let offerEl=getAppSelector(`.goodappsf-offer[data-offer="${offerIdToShow}"]`,rootId2,iframe2);offerEl.style.display='block';};window.localStorage.setItem('goodappsf-free-gifts',JSON.stringify(chosenFreeGifts));} function addAndDeleteToCartFreeProducts(cartJson,toUpdateCart){let chosenFreeGifts=window.localStorage.getItem('goodappsf-free-gifts');chosenFreeGifts=chosenFreeGifts?JSON.parse(chosenFreeGifts):[];const productsToAdd=[];const productsToDelete=[];chosenFreeGifts.forEach((el)=>{const product=cartJson.items.find((item)=>el.variant_id==item.variant_id);if(!product){productsToAdd.push(el);}});cartJson.items.forEach((item)=>{if(item.properties&&item.properties.status==freeGiftLabel&&!(chosenFreeGifts.find((el)=>el.variant_id==item.variant_id))){productsToDelete.push(item);} const onlyFreeGiftsInCart=cartJson.items.every((item)=>item.properties&&item.properties.status==freeGiftLabel);if(onlyFreeGiftsInCart){cartJson.items.forEach((item)=>{if(!productsToDelete.includes(item)){productsToDelete.push(item);}});}});const removeData=productsToDelete.reduce((currentValue,el)=>{currentValue[el.variant_id]=0;return currentValue;},{});const addData=productsToAdd.reduce((currentValue,el)=>{currentValue.push({quantity:1,id:el.variant_id,properties:{status:freeGiftLabel}});return currentValue;},[]);if(Object.keys(removeData).length){removeItems(removeData).then((res)=>{if(addData.length){addItems(addData).then((res)=>{if(!res.status){updateCart(toUpdateCart);}}).catch((err)=>console.log(err))}else{if(!res.status){updateCart(toUpdateCart);}}}).catch((err)=>console.log(err))}else if(addData.length&&addToCart){addItems(addData).then((res)=>{if(!res.status){updateCart(toUpdateCart);}}).catch((err)=>console.log(err))}else{}} function setActiveFreeGifts(cartJson,freeGiftObjects){let offerIdex=0;let amountOfActiveOffers=localStorage.getItem('good-apps-count');if(amountOfActiveOffers){amountOfActiveOffers=+amountOfActiveOffers;}else{amountOfActiveOffers=freeGiftObjects.filter((el)=>el.active).length;} freeGiftObjects.forEach((obj,i)=>{let offerEl=getAppSelector(`.goodappsf-offer[data-offer="${obj.offer.id}"]`,rootId2,iframe2);let min_value=obj.offer.cart_min;min_value=min_value?min_value*100:min_value;min_value=min_value*currencyRate;let productIds=[];let productCollectionIds=[];if(obj.offer.triggerProducts.length){productIds=obj.offer.triggerProducts;} if(obj.offer.triggerCollection.handle){productCollectionIds=obj.offer.triggerCollection.products_in_collections;} if(offerEl){if(min_value&&(min_value<=cartJson.total_price)){if(productIds.length){let productInCart=false;cartJson.items.forEach((item)=>{if(productIds.find((el)=>el.productId==item.variant_id))productInCart=true;});if(productInCart){setGiftAcceptedHtml(offerEl,obj,true);if(!offerIdex){offerIdex=i+1;}}else{setGiftAcceptedHtml(offerEl,obj,false);}}else if(productCollectionIds&&productCollectionIds.length){let productInCart=false;let spendInCollection=0;cartJson.items.forEach((item)=>{if(productCollectionIds.includes(item.product_id)){productInCart=true;spendInCollection+=item.discounted_price*item.quantity;}});if(productInCart&&(min_value<=spendInCollection)){setGiftAcceptedHtml(offerEl,obj,true);if(!offerIdex){offerIdex=i+1;}}else{setGiftAcceptedHtml(offerEl,obj,false);}}else{setGiftAcceptedHtml(offerEl,obj,true);if(!offerIdex){offerIdex=i+1;}}}else if(!min_value){if(productIds.length){let productInCart=false;cartJson.items.forEach((item)=>{if(productIds.find((el)=>el.productId==item.variant_id))productInCart=true;});if(productInCart){setGiftAcceptedHtml(offerEl,obj,true);if(!offerIdex){offerIdex=i+1;}}else{setGiftAcceptedHtml(offerEl,obj,false);}}else if(productCollectionIds&&productCollectionIds.length){let productInCart=false;cartJson.items.forEach((item)=>{if(productCollectionIds.includes(item.product_id))productInCart=true;});if(productInCart){setGiftAcceptedHtml(offerEl,obj,true);if(!offerIdex){offerIdex=i+1;}}else{setGiftAcceptedHtml(offerEl,obj,false);}}else{setGiftAcceptedHtml(offerEl,obj,false);}}else{setGiftAcceptedHtml(offerEl,obj,false);}}});if(oneFreeGift){showOnlyOneActiveOffer(freeGiftObjects);} if(addToCart){addAndDeleteToCartFreeProducts(cartJson);} let checkoutBtn=boxWrapperIn.querySelector('.goodappsf-checkout-btn');let newAmountOfActiveOffers=freeGiftObjects.filter((el)=>el.active).length;if(amountOfActiveOffers=1){let elem=boxWrapperIn.querySelectorAll('.goodappsf-widget__main .goodappsf-offer')[offerIdex-1];scrollToElem(elem);if(checkoutBtn){checkoutBtn.classList.remove('disabled');}}else{if(checkoutBtn){checkoutBtn.classList.add('disabled');}} addDisableStyling(freeGiftObjects);} function changeNotificationIcon(freeGiftObjects){let numberNotActiveOffers=0;let isChosenFreeGift=true;let chosenFreeGifts=window.localStorage.getItem('goodappsf-free-gifts');chosenFreeGifts=chosenFreeGifts?JSON.parse(chosenFreeGifts):[];freeGiftObjects.find((freeGiftObject)=>{if(freeGiftObject.active){isChosenFreeGift=isProductChecked=freeGiftObject.products.find((produc)=>{return produc.variants.find((vari)=>chosenFreeGifts.find((item)=>item.variant_id==vari.productId));});if(!isChosenFreeGift){return true;}}else{numberNotActiveOffers++;}});let notifElem=getAppSelector(`.goodappsf-widget__notif`,rootId1,iframe1);if(notifElem){notifElem.style.display='block';if(!isChosenFreeGift){notifElem.querySelector('.goodappsf-widget__alert').style.display='flex';notifElem.querySelector('.goodappsf-widget__num').style.display='none';notifElem.querySelector('.goodappsf-widget__succ').style.display='none';}else{if(numberNotActiveOffers==0){notifElem.querySelector('.goodappsf-widget__alert').style.display='none';notifElem.querySelector('.goodappsf-widget__num').style.display='none';notifElem.querySelector('.goodappsf-widget__succ').style.display='flex';}else{notifElem.querySelector('.goodappsf-widget__num span').innerHTML=numberNotActiveOffers;notifElem.querySelector('.goodappsf-widget__alert').style.display='none';notifElem.querySelector('.goodappsf-widget__num').style.display='flex';notifElem.querySelector('.goodappsf-widget__succ').style.display='none';}}}} function showCloneBtn(isShow){const checkoutBtnClone=document.querySelector('.goodappsf_btn_clone');if(!checkoutBtnClone){return;} const checkoutBtns=document.querySelectorAll(goodFreeBuyItNow);let checkoutBtn;checkoutBtns.forEach((btn)=>{if(!btn.classList.contains("goodappsf_btn_clone")){checkoutBtn=btn;}}) if(isShow){checkoutBtn.style.display="none";checkoutBtnClone.style.display="block";}else{checkoutBtn.style.display="block";checkoutBtnClone.style.display="none";}} function toggelFirstProductActive(showAcceptedEl,freeGiftObject,product,variant,titleActive){let freeGiftEl=boxWrapperIn.querySelector(`.goodappsf-offer[data-offer="${freeGiftObject.offer.id}"]`);let wrapperForBlock=freeGiftEl.querySelector('.goodappsf-offer__img');let wrapperForBlockContent=freeGiftEl.querySelector('.goodappsf-offer__content');if(showAcceptedEl){let varintHtml='';if(product.variants.length>1){let optionHtml='';product.variants.forEach((variante)=>{optionHtml+=` `});varintHtml=document.createElement('div');varintHtml.classList.add('goodappsf-offer__product-variations','goodappsf-offer__product-variations-new');let select=document.createElement('select');select.classList.add('goodappsf-variations');select.setAttribute('data-productId',product.productId);select.addEventListener('change',variantionChangeEvent);select.innerHTML=optionHtml;varintHtml.append(select);} let productEl=freeGiftEl.querySelector(`.goodappsf-offer__product[data-product-id="${product.productId}"]`);let html=`Gift `;let priceHtml=`
${currencyFormat(getPriceByRate(variant.variantPrice))} ${currencyFormat(0)}
`;wrapperForBlock.innerHTML=html;if(!wrapperForBlockContent.querySelector('.goodappsf-offer__product-price')){wrapperForBlockContent.innerHTML=wrapperForBlockContent.innerHTML+priceHtml;wrapperForBlockContent.append(varintHtml);} productEl.classList.add('hide');wrapperForBlockContent.querySelector('.goodappsf-prod-title').innerHTML=setGiftTitle(freeGiftObject.offer,true,product,'title');wrapperForBlockContent.querySelector('.goodappsf-prod-desc').innerHTML=setGiftTitle(freeGiftObject.offer,true,product);if(freeGiftObject.offer.max_products_number==1){freeGiftEl.querySelector('.goodappsf-offer__products').classList.add('hide');}}else{let html=` `;let productEls=freeGiftEl.querySelectorAll(`.goodappsf-offer__product`);productEls.forEach((proEl)=>{proEl.classList.remove('hide');});if(titleActive){wrapperForBlockContent.querySelector('.goodappsf-prod-title').innerHTML=setGiftTitle(freeGiftObject.offer,true,freeGiftObject.products.length==1?freeGiftObject.products[0]:null,'title');wrapperForBlockContent.querySelector('.goodappsf-prod-desc').innerHTML=setGiftTitle(freeGiftObject.offer,true,freeGiftObject.products.length==1?freeGiftObject.products[0]:null);}else{wrapperForBlockContent.querySelector('.goodappsf-prod-title').innerHTML=setGiftTitle(freeGiftObject.offer,false,freeGiftObject.products.length==1?freeGiftObject.products[0]:null,'title');wrapperForBlockContent.querySelector('.goodappsf-prod-desc').innerHTML=setGiftTitle(freeGiftObject.offer,false,freeGiftObject.products.length==1?freeGiftObject.products[0]:null);} wrapperForBlock.innerHTML=html;let priceHtml=wrapperForBlockContent.querySelector('.goodappsf-offer__product-price');if(priceHtml){priceHtml.remove();} if(freeGiftObject.offer.max_products_number==1){freeGiftEl.querySelector('.goodappsf-offer__products').classList.remove('hide');}}} function setGiftAcceptedHtml(el,freeGiftObject,isTriggered){let chosenFreeGifts=window.localStorage.getItem('goodappsf-free-gifts');chosenFreeGifts=chosenFreeGifts?JSON.parse(chosenFreeGifts):[];let productsWrapper=el.querySelector('.goodappsf-offer__products');if(isTriggered){freeGiftObject.active=true;if(freeGiftObject.products.length==1){const varia=freeGiftObject.products[0].variants.find((vari)=>chosenFreeGifts.find((item)=>item.variant_id==vari.productId));if(!varia){chosenFreeGifts.push(draftOrderProductObj(freeGiftObject.products[0],freeGiftObject.products[0].variants[0]));window.localStorage.setItem('goodappsf-free-gifts',JSON.stringify(chosenFreeGifts));}}else if(freeGiftObject.products.length>1){const isProductChecked=freeGiftObject.products.find((produc)=>{return produc.variants.find((vari)=>chosenFreeGifts.find((item)=>item.variant_id==vari.productId));});if(!isProductChecked&&!freeGiftObject.offer.max_products_number){freeGiftObject.products.forEach((prod)=>{chosenFreeGifts.push(draftOrderProductObj(prod,prod.variants[0]));});window.localStorage.setItem('goodappsf-free-gifts',JSON.stringify(chosenFreeGifts));}} el.classList.add('goodappsf-offer__accept');let checkBoxes=el.querySelectorAll('.goodappsf-active-product');checkBoxes.forEach((checkbox)=>{checkbox.classList.remove('hide');});let checkedProduct;let checkedVariant;freeGiftObject.products.forEach((pro)=>{let productEl=el.querySelector(`.goodappsf-product[data-product-id="${pro.productId}"]`);if(productEl){let variant=pro.variants.find((varian)=>chosenFreeGifts.find((item)=>item.variant_id==varian.productId));if(variant){let selectedVariant=productEl.querySelector(`option[value="${variant.productId}"]`);if(selectedVariant){productEl.querySelectorAll('option').forEach((op)=>{op.removeAttribute('selected');});selectedVariant.setAttribute('selected','');} let checkbox=productEl.querySelector('.goodappsf-check-product') if(checkbox){checkbox.setAttribute('checked','');} if(!checkedProduct){checkedProduct=pro;checkedVariant=variant;} productEl.querySelector('.goodappsf-offer__img img').setAttribute('src',variant.image);productEl.querySelector('.goodappsf-compare-price').innerHTML=currencyFormat(getPriceByRate(variant.variantPrice));}else{let checkedProducts=productsWrapper.querySelectorAll('.goodappsf-check-product[checked]').length;if(!freeGiftObject.offer.max_products_number||checkedProducts{element.setAttribute('disabled','');});}}}});if(checkedProduct){toggelFirstProductActive(true,freeGiftObject,checkedProduct,checkedVariant);el.querySelectorAll('.goodappsf-offer__edit').forEach((elem)=>elem.classList.remove('hide'));}else{toggelFirstProductActive(false,freeGiftObject,checkedProduct,checkedVariant,true);el.querySelectorAll('.goodappsf-offer__edit').forEach((elem)=>elem.classList.add('hide'));}}else{freeGiftObject.active=false;el.querySelector('.goodappsf-prod-title').innerHTML=setGiftTitle(freeGiftObject.offer,false,freeGiftObject.products.length==1?freeGiftObject.products[0]:null,'title');el.querySelector('.goodappsf-prod-desc').innerHTML=setGiftTitle(freeGiftObject.offer,false,freeGiftObject.products.length==1?freeGiftObject.products[0]:null);let checkBoxes=el.querySelectorAll('.goodappsf-active-product');checkBoxes.forEach((checkbox)=>{checkbox.classList.add('hide');});let variantionEl=el.querySelector('.goodappsf-offer__container .goodappsf-offer__product-variations-new');if(variantionEl){variantionEl.remove();} el.classList.remove('goodappsf-offer__accept');let offerContentEl=el.querySelector('.goodappsf-offer__content');if(freeGiftObject.products.length==1){productsWrapper.classList.add('hide');}else if(freeGiftObject.products.length>1){productsWrapper.querySelectorAll('.goodappsf-offer__product').forEach((elem)=>elem.classList.remove('hide'));productsWrapper.classList.remove('hide');} freeGiftObject.products.forEach((pro)=>{let productEl=el.querySelector(`.goodappsf-product[data-product-id="${pro.productId}"]`);if(productEl){let variant=pro.variants.find((varian)=>chosenFreeGifts.find((item)=>item.variant_id==varian.productId));if(variant){let checkbox=productEl.querySelector('.goodappsf-check-product');if(checkbox){checkbox.removeAttribute('checked');} deleteFreeGift(variant,chosenFreeGifts);window.localStorage.setItem('goodappsf-free-gifts',JSON.stringify(chosenFreeGifts));} let freeGiftEl=boxWrapperIn.querySelector(`.goodappsf-offer[data-offer="${freeGiftObject.offer.id}"]`);let wrapperForBlock=freeGiftEl.querySelector('.goodappsf-offer__img');let wrapperForBlockContent=freeGiftEl.querySelector('.goodappsf-offer__content');let priceHtml=wrapperForBlockContent.querySelector('.goodappsf-offer__product-price');if(priceHtml){priceHtml.remove();} let iconUrl=freeGiftObject.offer.icon_choose;if(!iconUrl){iconUrl=`${goodFreeBaseUrl}assets/images/widgets/gift.svg`;} if(freeGiftObject.products.length==1){} wrapperForBlock.innerHTML=` Gift `;}});el.querySelectorAll('.goodappsf-offer__edit').forEach((elem)=>elem.classList.add('hide'));el.querySelectorAll('.goodappsf-check-product').forEach((elem)=>elem.removeAttribute('disabled'));el.classList.remove('hide');} if(boxWrapperIn.querySelector('.goodappsf-offer__accept')){isActive=true;showCloneBtn(true);}else{isActive=false;showCloneBtn(false);}} function scrollToElem(elem){if(!elem)return;let scrollElem=boxWrapperIn.querySelector('.goodappsf-widget__main');let offsetTop=elem.offsetTop;if(scrollElem&&offsetTop>30){scrollElem.scrollTo({top:offsetTop-10,behavior:'smooth'});}} function deleteFreeGift(varian,chosenFreeGifts){let index=-1;chosenFreeGifts.find((item,i)=>{if(item.variant_id==varian.productId){index=i;return true;} return false;}) if(index>-1){chosenFreeGifts.splice(index,1);}} function variantionChangeEvent(e){let selectedEl=e.target;let offerContentEl=e.target.closest('.goodappsf-offer__container');let productWrapper=e.target.closest('.goodappsf-product');let selectEl=e.target.closest('.goodappsf-variations');let offerId=e.target.closest('.goodappsf-offer').dataset.offer;let freeGiftObject=freeGiftObjects.find((objc)=>objc.offer.id==offerId);let productObj=freeGiftObject.products.find((pro)=>selectEl.dataset.productid==pro.productId);let variant=productObj.variants.find((varia)=>selectedEl.value==varia.productId);if(productWrapper){productWrapper.querySelector('.goodappsf-offer__img img').setAttribute('src',variant.image);productWrapper.querySelector('.goodappsf-compare-price').innerHTML=currencyFormat(getPriceByRate(variant.variantPrice));let checkBox=productWrapper.querySelector('.goodappsf-check-product[checked]');if(checkBox){let chosenFreeGifts=window.localStorage.getItem('goodappsf-free-gifts');if(chosenFreeGifts){chosenFreeGifts=JSON.parse(chosenFreeGifts);productObj.variants.forEach((varian)=>{deleteFreeGift(varian,chosenFreeGifts);});chosenFreeGifts.push(draftOrderProductObj(productObj,variant));window.localStorage.setItem('goodappsf-free-gifts',JSON.stringify(chosenFreeGifts));if(addToCart){fetchCart().then((cartJson)=>{addAndDeleteToCartFreeProducts(cartJson);}).catch((err)=>console.log(err))};}else{window.localStorage.setItem('goodappsf-free-gifts',JSON.stringify([draftOrderProductObj(productObj,variant)]));}}}else if(offerContentEl){offerContentEl.querySelector('.goodappsf-offer__gift-img').setAttribute('src',variant.image);offerContentEl.querySelector('.goodappsf-compare-price').innerHTML=currencyFormat(getPriceByRate(variant.variantPrice));let chosenFreeGifts=window.localStorage.getItem('goodappsf-free-gifts');if(chosenFreeGifts){chosenFreeGifts=JSON.parse(chosenFreeGifts);productObj.variants.forEach((varian)=>{deleteFreeGift(varian,chosenFreeGifts);});chosenFreeGifts.push(draftOrderProductObj(productObj,variant));window.localStorage.setItem('goodappsf-free-gifts',JSON.stringify(chosenFreeGifts));if(addToCart){fetchCart().then((cartJson)=>{addAndDeleteToCartFreeProducts(cartJson);}).catch((err)=>console.log(err))};}else{window.localStorage.setItem('goodappsf-free-gifts',JSON.stringify([draftOrderProductObj(productObj,variant)]));}}} function draftOrderProductObj(product,variant){return{handle:product.handle,title_p:product.title,title_v:variant.title,product_id:product.productId,variant_id:variant.productId,price:Math.round(+variant.variantPrice*100),quantity:1,discount:{value_type:'%',value:100},properties:{status:freeGiftLabel},main_offer_id:product.main_offer_id,offer_id:product.offer_id}} function deleteFreeGiftsLocalStorage(freeGiftObjects){let chosenFreeGifts=window.localStorage.getItem('goodappsf-free-gifts');if(chosenFreeGifts){chosenFreeGifts=JSON.parse(chosenFreeGifts);let variantIds=[];freeGiftObjects.forEach((freeGiftObject)=>{if(freeGiftObject.active){freeGiftObject.products.forEach((pro)=>{pro.variants.forEach((variant)=>{let chosenFreeGift=chosenFreeGifts.find((obj)=>obj.variant_id==variant.productId);chosenFreeGift?variantIds.push(variant.productId):'';})})}});let chosenFreeGiftsNew=chosenFreeGifts.reduce((result,chosenFreeGift)=>{if(variantIds.includes(chosenFreeGift.variant_id)){result.push(chosenFreeGift);} return result;},[]);window.localStorage.setItem('goodappsf-free-gifts',JSON.stringify(chosenFreeGiftsNew?chosenFreeGiftsNew:''));;}} function productEvents(freeGiftObjects){let checkBoxes=boxWrapperIn.querySelectorAll('.goodappsf-check');checkBoxes.forEach((checkBox)=>{checkBox.addEventListener('click',function(e){let productsWrapper=e.target.closest('.goodappsf-offer__products');let productWrapper=e.target.closest('.goodappsf-offer__product');let offerId=e.target.closest('.goodappsf-offer').dataset.offer;let freeGiftObject=freeGiftObjects.find((objc)=>objc.offer.id==offerId);let chosenFreeGifts=window.localStorage.getItem('goodappsf-free-gifts');let thisCheckbox=e.target.closest('.goodappsf-active-product').querySelector('input');if(thisCheckbox.hasAttribute('checked')){let productObj=freeGiftObject.products.find((pro)=>productWrapper.dataset.productId==pro.productId);if(chosenFreeGifts){chosenFreeGifts=JSON.parse(chosenFreeGifts);productObj.variants.forEach((varian)=>{deleteFreeGift(varian,chosenFreeGifts);});window.localStorage.setItem('goodappsf-free-gifts',JSON.stringify(chosenFreeGifts));} thisCheckbox.removeAttribute('checked');let notChecked=productsWrapper.querySelectorAll('.goodappsf-check-product');notChecked.forEach(element=>{element.removeAttribute('disabled');});if(!productsWrapper.querySelectorAll('.goodappsf-check-product[checked]').length){e.target.closest('.goodappsf-offer').querySelectorAll('.goodappsf-offer__edit').forEach((elem)=>elem.classList.add('hide'));}}else{let checkedProducts=productsWrapper.querySelectorAll('.goodappsf-check-product[checked]').length;if(!freeGiftObject.offer.max_products_number||checkedProductselem.classList.remove('hide'));let select=productWrapper.querySelector('.goodappsf-variations');if(select){let variantId=select.options[select.selectedIndex].value;let productObj=freeGiftObject.products.find((pro)=>productWrapper.dataset.productId==pro.productId);let variant=productObj.variants.find((varia)=>variantId==varia.productId);if(chosenFreeGifts){chosenFreeGifts=JSON.parse(chosenFreeGifts);productObj.variants.forEach((varian)=>{deleteFreeGift(varian,chosenFreeGifts);});chosenFreeGifts.push(draftOrderProductObj(productObj,variant));let imgExt=productsWrapper.closest('.goodappsf-offer').querySelector('.goodappsf-offer__gift-img');if(!imgExt){toggelFirstProductActive(true,freeGiftObject,productObj,variant);} window.localStorage.setItem('goodappsf-free-gifts',JSON.stringify(chosenFreeGifts));}else{let imgExt=productsWrapper.closest('.goodappsf-offer').querySelector('.goodappsf-offer__gift-img');if(!imgExt){toggelFirstProductActive(true,freeGiftObject,productObj,variant);} window.localStorage.setItem('goodappsf-free-gifts',JSON.stringify([draftOrderProductObj(productObj,variant)]));}}else{let productObj=freeGiftObject.products.find((pro)=>productWrapper.dataset.productId==pro.productId);let variant=productObj.variants[0];if(chosenFreeGifts){chosenFreeGifts=JSON.parse(chosenFreeGifts);productObj.variants.forEach((varian)=>{deleteFreeGift(varian,chosenFreeGifts);});chosenFreeGifts.push(draftOrderProductObj(productObj,variant));let imgExt=productsWrapper.closest('.goodappsf-offer').querySelector('.goodappsf-offer__gift-img');if(!imgExt){toggelFirstProductActive(true,freeGiftObject,productObj,variant);} window.localStorage.setItem('goodappsf-free-gifts',JSON.stringify(chosenFreeGifts));}else{let imgExt=productsWrapper.closest('.goodappsf-offer').querySelector('.goodappsf-offer__gift-img');if(!imgExt){toggelFirstProductActive(true,freeGiftObject,productObj,variant);} window.localStorage.setItem('goodappsf-free-gifts',JSON.stringify([draftOrderProductObj(productObj,variant)]));}} if(checkedProducts+1==freeGiftObject.offer.max_products_number){let notChecked=productsWrapper.querySelectorAll('.goodappsf-check-product:not(.goodappsf-check-product[checked])');notChecked.forEach(element=>{element.setAttribute('disabled','');});}}else{let notChecked=productsWrapper.querySelectorAll('.goodappsf-check-product:not(.goodappsf-check-product[checked])');notChecked.forEach(element=>{element.setAttribute('disabled','');});}} changeNotificationIcon(freeGiftObjects);if(addToCart){fetchCart().then((cartJson)=>{addAndDeleteToCartFreeProducts(cartJson);}).catch((err)=>console.log(err))};});});let selectVariantEls=boxWrapperIn.querySelectorAll('.goodappsf-variations');selectVariantEls.forEach((selectVariantEl)=>{selectVariantEl.addEventListener('change',variantionChangeEvent);});let checkoutBtn=boxWrapperIn.querySelector('.goodappsf-checkout-btn');if(checkoutBtn){checkoutBtn.addEventListener('click',()=>{if(!addToCart){createOrder(true);}else{location.href='/checkout';}})} let editBtns=boxWrapperIn.querySelectorAll('.goodappsf-offer__edit');editBtns.forEach((el)=>{el.addEventListener('click',(event)=>{let offerEl=event.target.closest('.goodappsf-offer');let variantionEl=offerEl.querySelector('.goodappsf-offer__container .goodappsf-offer__product-variations-new');if(variantionEl){variantionEl.remove();} let productsWrap=offerEl.querySelector('.goodappsf-offer__products');let wrapperForBlock=offerEl.querySelector('.goodappsf-offer__img');let wrapperForBlockContent=offerEl.querySelector('.goodappsf-offer__content');let html=` `;let productEls=offerEl.querySelectorAll(`.goodappsf-offer__product`);productEls.forEach((proEl)=>{proEl.classList.remove('hide');});wrapperForBlock.innerHTML=html;let priceHtml=wrapperForBlockContent.querySelector('.goodappsf-offer__product-price');if(priceHtml){priceHtml.remove();} chosenFreeGifts=localStorage.getItem('goodappsf-free-gifts');chosenFreeGifts=chosenFreeGifts?JSON.parse(chosenFreeGifts):[];if(chosenFreeGifts.length){let freeGiftObject=freeGiftObjects.find((freegift)=>freegift.offer.id==offerEl.dataset.offer);if(freeGiftObject){freeGiftObject.products.forEach((product)=>{product.variants.forEach((varian)=>{deleteFreeGift(varian,chosenFreeGifts);})});}} let checkboxs=offerEl.querySelectorAll('.goodappsf-check-product');if(checkboxs.length){checkboxs.forEach((checkbox)=>{checkbox.removeAttribute('checked');checkbox.removeAttribute('disabled');});} window.localStorage.setItem('goodappsf-free-gifts',JSON.stringify(chosenFreeGifts));offerEl.querySelectorAll('.goodappsf-offer__edit').forEach((elem)=>elem.classList.add('hide'));if(offerEl.querySelectorAll('.goodappsf-offer__product').length>1){let freeGiftObject=freeGiftObjects.find((elem)=>elem.offer.id==offerEl.dataset.offer);offerEl.querySelector('.goodappsf-prod-title').innerHTML=setGiftTitle(freeGiftObject.offer,true,null,'title');offerEl.querySelector('.goodappsf-prod-desc').innerHTML=setGiftTitle(freeGiftObject.offer,true,null);offerEl.querySelector('.goodappsf-offer__products').classList.remove('hide');};changeNotificationIcon(freeGiftObjects);if(addToCart){fetchCart().then((cartJson)=>{addAndDeleteToCartFreeProducts(cartJson);}).catch((err)=>console.log(err))};});})} function addDisableStyling(freeGiftObjects){let root=document.getElementById('goodappsf-offers');let qntDisabledStyle='';fetchCart().then((cartJson)=>{cartJson.items.forEach((item,i)=>{if(item.properties&&item.properties.status==freeGiftLabel){let freeGiftObject=freeGiftObjects.find((object)=>{const varIdArr=object.offer.products[item.product_id];if(varIdArr){return varIdArr.includes(item.variant_id);}else{return false;}}) if(typeof freeGiftObject!=='undefined'&&freeGiftObject.offer.allow_block_qty===false){return;} allInputQntClasses.forEach((selector)=>{const parentSelector=selector.trim().split(' ')[0];let childSelector=selector.trim().split(' ').slice(1).join(' ');if(parentSelector.trim()){qntDisabledStyle+=` ${parentSelector}:nth-child(${i + 1}) ${childSelector} { position: relative; pointer-events: none; opacity: 0.25; } `;}});if(item.quantity>1){const varId=item.variant_id;const addData={updates:{[varId]:1}};changeItem(addData).then((res)=>{if(!(res.status)){updateCart();}}).catch((err)=>console.log(err))}}});if(root){let styles=` `;root.querySelectorAll('style').forEach((el)=>el.remove());root.insertAdjacentHTML('beforeend',styles);}}).catch((err)=>console.log(err))} function checkoutEvents(){setTimeout(()=>{if(!addToCart){allCheckoutTriggers.forEach((selector)=>{function checkoutBtn(){if(goodFreeBuyItNow!==''){if(document.querySelector(`${goodFreeBuyItNow}`)){return document.querySelector(`${goodFreeBuyItNow}`);}else{return'';}}else{return'';}} document.querySelectorAll(selector).forEach((elem)=>{const checkoutButton=checkoutBtn();if(!elem.classList.contains("goodappsf_btn_clone")&&elem.outerHTML!==checkoutButton.outerHTML&&isActive){elem.addEventListener('click',(e)=>{e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();createOrder(true);});}});});const checkoutBtn=document.querySelector('.goodappsf_btn_clone');if(checkoutBtn){checkoutBtn.addEventListener('click',(e)=>{e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();createOrder(false);});}};},0);} function cloneNodeBtn(classBtn){if(!document.querySelector(`${classBtn}`)){return;} const button=document.querySelector(`${classBtn}`);const buttonClone=button.cloneNode(true);button.insertAdjacentElement('afterend',buttonClone);button.style.display="none";buttonClone.classList.add('goodappsf_btn_clone');} async function getCartHtml(sectionTemplate){const option={method:'GET'} const url='/cart?sections='+sectionTemplate;let response=await fetch(url);return response.body} function updateCart(toUpdateCart){if("/cart"===location.href.slice(-5)){let cartSections=[''];let cartFormEl=document.querySelectorAll('form[action="/cart"]');cartFormEl=[].find.call(cartFormEl,(el)=>el.closest('main'));cartFormEl=cartFormEl?cartFormEl:document.querySelector('form#cart');if(cartFormEl&&(addToCart||toUpdateCart)){let shopifySection=cartFormEl.closest('.shopify-section');if(shopifySection&&shopifySection.id){const templateId=shopifySection.id.slice(16);getCartHtml(templateId).then((rb)=>{const reader=rb.getReader();return new ReadableStream({start(controller){function push(){reader.read().then(({done,value})=>{if(done){controller.close();return;} controller.enqueue(value);push();});} push();},});}).then((stream)=>new Response(stream,{headers:{'Content-Type':'text/html'}}).text()).then((result)=>{const placeholder=document.createElement("div");const newResult=JSON.parse(result);if(newResult){placeholder.innerHTML=newResult[templateId];const node=placeholder.firstElementChild;fetchCart().then((cartJson)=>{cartJson.items.forEach((item,i)=>{if(item.properties&&item.properties.status==freeGiftLabel){let freeGiftObject=freeGiftObjects.find((object)=>{const varIdArr=object.offer.products[item.product_id];if(varIdArr){return varIdArr.includes(item.variant_id);}else{return false;}}) if(typeof freeGiftObject!=='undefined'&&freeGiftObject.offer.allow_block_qty===false){return;} allInputQntClasses.forEach((selector)=>{const parentSelector=selector.trim().split(' ')[0];let childSelector=selector.split(' ').slice(1).join(' ');if(parentSelector){document.querySelectorAll(`${parentSelector}:nth-child(${i + 1}) ${childSelector}`).forEach((elem)=>{elem.classList.add('goodapps-disable');});node.querySelectorAll(`${parentSelector}:nth-child(${i + 1}) ${childSelector}`).forEach((elem)=>{elem.classList.add('goodapps-disable');});}});if(item.quantity>1){const varId=item.variant_id;const addData={updates:{[varId]:1}};changeItem(addData).then((res)=>{if(!(res.status)){updateCart();}}).catch((err)=>console.log(err))}}});shopifySection.replaceWith(node);}).catch((err)=>console.log(err))}}).catch((err)=>{console.log(err);})}}};} if("/thank_you"===location.href.slice(-10)||Shopify.checkout){const orderItems=Shopify.checkout.line_items;const orderId=Shopify.checkout.order_id;let chosenFreeGifts=localStorage.getItem('goodappsf-free-gifts');chosenFreeGifts=chosenFreeGifts?JSON.parse(chosenFreeGifts):[];if(chosenFreeGifts.length){let mainOffersIds=[];chosenFreeGifts.forEach((item)=>{if(!mainOffersIds.includes(item.main_offer_id)){createStatisticFetch(item.main_offer_id,item.offer_id,true,1);mainOffersIds.push(item.main_offer_id);createPurchaseFetch({main_offer_id:item.main_offer_id,amount:Shopify.checkout.subtotal_price,offer_id:item.offer_id});}});const isFreeProduct=orderItems.find((item)=>item.properties&&item.properties.status==freeGiftLabel);if(isFreeProduct){sendOrderId(orderId);}} localStorage.removeItem('kaktusDataOrder');localStorage.removeItem('goodappsf-free-gifts');} async function sendOrderId(orderId){let domain=(typeof goodFreeShop!=='undefined')?goodFreeShop:window.location.hostname;const options={method:'POST',headers:{"Content-Type":"application/json","Accept":"application/json"},body:JSON.stringify({order_id:orderId,domain:domain})};const url=goodFreeApiUrl+`api/front/order-tag`;const resp=await fetch(url,options);return await resp.json();}!function(){let lastBtn=null document.addEventListener('click',function(e){if(!e.target.closest)return;lastBtn=e.target.closest('button, input[type=submit]');},true);document.addEventListener('submit',function(e){if('submitter'in e)return;var canditates=[document.activeElement,lastBtn];lastBtn=null;for(var i=0;i{let qty=item.quantity;if(orderData){if(!!item.properties&&!!item.properties.offer){const lineItemProperty=orderData.find(prod=>prod.propertyId===item.properties.offer);if(lineItemProperty){discount=lineItemProperty.discountValue!=null?{value_type:lineItemProperty.discountType,value:+lineItemProperty.discountValue}:null;item.properties.offer=lineItemProperty.propertyId;properties=item.properties;qty=+lineItemProperty.qty;}}else{discount=null;properties=item.properties;}} line_items.push({title:item.title,product_id:item.product_id,variant_id:item.variant_id,price:goodFreeCurrencyCode!==currentCurrencyCode?getStorePriceByRate(item.price / 1000)*1000:item.price,quantity:qty,discount:discount,properties:properties}) if(+item.quantity>+qty){let result=+item.quantity- +qty;item.properties.offer=null;line_items.push({title:item.title,product_id:item.product_id,variant_id:item.variant_id,price:goodFreeCurrencyCode!==currentCurrencyCode?getStorePriceByRate(item.price / 1000)*1000:item.price,quantity:result,discount:null,properties:item.properties})}});let chosenFreeGifts=window.localStorage.getItem('goodappsf-free-gifts');chosenFreeGifts=chosenFreeGifts?JSON.parse(chosenFreeGifts):[];if(chosenFreeGifts.length){chosenFreeGifts.forEach((item)=>{line_items.push({title:`${item.title_p} - ${item.title_v}`,product_id:item.product_id,variant_id:item.variant_id,price:item.price,quantity:item.quantity,discount:item.discount,properties:item.properties})})} return{domain:domain,line_items:line_items}} function createOrder(stop_script){if(stop_script){window.stop();} boxWrapperIn.classList.add('spinner');if(addToCart){location.href='/checkout';return};const line_items=[];fetchCart().then(function(dataCart){const orderData=JSON.parse(localStorage.getItem('kaktusDataOrder'));dataCart.items.forEach(item=>{if(orderData){if(!!item.properties&&!!item.properties.offer){const lineItemProperty=orderData.find(prod=>prod.propertyId===item.properties.offer);if(lineItemProperty){if(lineItemProperty.discountValue!=null){line_items.push(item);}}}}});let chosenFreeGifts=window.localStorage.getItem('goodappsf-free-gifts');chosenFreeGifts=chosenFreeGifts?JSON.parse(chosenFreeGifts):[];if(chosenFreeGifts.length){line_items.push('free-gifts');if(line_items.length){createOrderFetch(dataCart.items,orderData).then(result=>{if(!result||!result.checkout){location.href='/checkout';} setTimeout(()=>{location.href=result.checkout;},1000);}).catch(error=>{location.href='/checkout';})}else{location.href='/checkout';}}else{createOrderFetch(dataCart.items,null).then(result=>{if(!result||!result.checkout){location.href='/checkout';} setTimeout(()=>{location.href=result.checkout;},1000);}).catch(error=>{location.href='/checkout';})}})}};goodFreeApp();}