144 lines
38 KiB
JavaScript
144 lines
38 KiB
JavaScript
/**
|
|
* NOTICE OF LICENSE
|
|
*
|
|
* This source file is subject to a trade license awared by
|
|
* Garamo Online L.T.D.
|
|
*
|
|
* Any use, reproduction, modification or distribution
|
|
* of this source file without the written consent of
|
|
* Garamo Online L.T.D It Is prohibited.
|
|
*
|
|
* @author ReactionCode <info@reactioncode.com>
|
|
* @copyright 2015-2020 Garamo Online L.T.D
|
|
* @license Commercial license
|
|
*/
|
|
function RcAnalyticsEvents(){var publicValues=this;var privateValues={};privateValues.moduleUrl=prestashop.urls.base_url+'modules/rc_pganalytics/';privateValues.redirected=!1;privateValues.redirectLink=null;privateValues.productsPosition={};privateValues.initial=!0;privateValues.sendProducts=[];privateValues.sentProducts=[];privateValues.sendPromotions=[];privateValues.sentPromotions=[];privateValues.scrollTimeout=null;privateValues.lastIdProductView='';privateValues.doNotTrack=(window.doNotTrack=="1"||navigator.doNotTrack=="yes"||navigator.doNotTrack=="1"||navigator.msDoNotTrack=="1");publicValues.trackingFeatures=null;publicValues.lists=null;publicValues.productsListCache=null;publicValues.ecommPageType='';publicValues.controllerName='';publicValues.isCheckout='';publicValues.compliantModuleName='';publicValues.skipCartStep='';publicValues.eventScrollList=eventScrollList;publicValues.eventClickPromotionItem=eventClickPromotionItem;publicValues.eventClickProductList=eventClickProductList;publicValues.eventProductView=eventProductView;publicValues.eventSocialShareProductView=eventSocialShareProductView;publicValues.eventAddCartProduct=eventAddCartProduct;publicValues.eventCartQuantityUp=eventCartQuantityUp;publicValues.eventCartQuantityDown=eventCartQuantityDown;publicValues.eventCartQuantityDelete=eventCartQuantityDelete;publicValues.eventPrestashopCheckout=eventPrestashopCheckout;publicValues.eventOpcSuperCheckout=eventOpcSuperCheckout;publicValues.eventCartOpcSupercheckout=eventCartOpcSupercheckout;publicValues.eventOpcPrestaTeam=eventOpcPrestaTeam;publicValues.eventCartOpcPrestaTeam=eventCartOpcPrestaTeam;publicValues.eventOpcTheCheckout=eventOpcTheCheckout;publicValues.eventCartOpcTheCheckout=eventCartOpcTheCheckout;publicValues.onSearchResults=onSearchResults;publicValues.onCheckoutProducts=onCheckoutProducts;publicValues.onAddOrder=onAddOrder;publicValues.onSignUp=onSignUp;publicValues.sendGtagConfig=sendGtagConfig;publicValues.setClientId=setClientIdInDb;if(RcAnalyticsEvents.prototype.getInstance){return RcAnalyticsEvents.prototype.getInstance}
|
|
RcAnalyticsEvents.prototype.getInstance=this;function eventScrollList(){if(!privateValues.initial){clearTimeout(privateValues.scrollTimeout);scrollElementDetection();privateValues.scrollTimeout=setTimeout(function(){if(privateValues.sendProducts.length||privateValues.sendPromotions.length){doneScroll()}},800)}else{privateValues.initial=!1;scrollElementDetection();doneScroll()}}
|
|
function eventClickPromotionItem(event){var mainSelector=['.js-ga-track-promo a'];var target=delegateEvents(mainSelector,event.target);var promoQuery;var promoLink;if(event.button===0&&target&&target.nodeName==='A'&&window.ga&&window.ga.length){promoQuery=target.search;promoLink=target.href;if(promoQuery&&promoLink){event.preventDefault();onPromotionClick(promoQuery,promoLink)}}}
|
|
function eventClickProductList(event){var mainSelector=['.js-product-miniature'];var variantSelector=['.js-product-miniature .variant-links a'];var eventSelectors=['.js-product-miniature .product-thumbnail','.js-product-miniature .product-title a','.js-product-miniature .variant-links a','.js-product-miniature .quick-view'];var target=delegateEvents(eventSelectors,event.target);var caseClick=1;var classList;var link;var productNode;var variantNode;var variantAttribute;var idProduct;var idProductAttribute;var list;if(event.button===0&&target&&target.nodeName==='A'&&window.ga&&window.ga.length){if(!event.ctrlKey&&!event.shiftKey){classList=target.classList;if(!classList.contains('quick-view')&&!classList.contains('quick-view-mobile')){link=target.getAttribute('href');if(link){event.preventDefault()}}}
|
|
productNode=delegateEvents(mainSelector,target);variantNode=delegateEvents(variantSelector,target);if(productNode){idProduct=parseInt(productNode.getAttribute('data-id-product'));idProductAttribute=parseInt(productNode.getAttribute('data-id-product-attribute'))}
|
|
list=checkFilters();if(!isNaN(idProduct)){if(variantNode){variantAttribute=variantNode.getAttribute('data-id-product-attribute');if(variantAttribute){idProductAttribute=variantAttribute}}
|
|
if(isNaN(idProductAttribute)){idProductAttribute=0}
|
|
idProduct=idProduct+'-'+idProductAttribute;getData(caseClick,idProduct,list,link,null)}else if(link){document.location=link}}}
|
|
function eventProductView(event){var caseClick=4;var productListView=publicValues.lists.productView;var productDetailsNode;var productDetails;var idProductValue;var idProductAttributeValue;var idProductView;if(document.body.id!=='product'){if(event&&event.dataset){idProductValue=event.dataset.idProduct;idProductAttributeValue=event.dataset.idProductAttribute}else{idProductValue=document.querySelector('#product_page_product_id').value;idProductAttributeValue=event.id_product_attribute}
|
|
productListView='quick_view'}else{productDetailsNode=document.querySelector('#product-details');productDetails=JSON.parse(productDetailsNode.dataset.product);idProductValue=productDetails.id_product;idProductAttributeValue=productDetails.id_product_attribute}
|
|
idProductView=idProductValue+'-'+idProductAttributeValue;if(idProductView!==privateValues.lastIdProductView){getData(caseClick,idProductView,productListView,null,null);privateValues.lastIdProductView=idProductView}}
|
|
function eventSocialShareProductView(event){var eventSelectors=['.facebook','.twitter','.googleplus','.pinterest'];var target=delegateEvents(eventSelectors,event.target);var network;if(event.button===0&&target&&window.ga&&window.ga.length){if(target){eventSelectors.forEach(function(platform){platform=platform.substring(1);if(target.classList.contains(platform)){network=platform}});if(network){onSocialAction(network)}}}}
|
|
function eventAddCartProduct(event){var caseClick=2;var productViewList=publicValues.lists.productView;var idProduct;var idProductAttribute;var quantityWanted;var quickViewModal;if(event&&event.reason&&event.resp&&document.body.id!=='cart'){quickViewModal=document.querySelector('[id^=quickview-modal]');if(quickViewModal){productViewList='quick_view'}
|
|
idProduct=parseInt(event.reason.idProduct);idProductAttribute=parseInt(event.reason.idProductAttribute);if(document.body.id==='product'||quickViewModal){quantityWanted=parseInt(document.querySelector('#quantity_wanted').value)}else{quantityWanted=1}
|
|
if(!isNaN(idProduct)&&!isNaN(quantityWanted)){if(isNaN(idProductAttribute)){idProductAttribute=0}
|
|
idProduct=idProduct+'-'+idProductAttribute;getData(caseClick,idProduct,productViewList,null,quantityWanted)}}}
|
|
function eventCartQuantityUp(event){var eventSelectors=['.js-increase-product-quantity'];var mainSelector=['.cart-item'];var target=delegateEvents(eventSelectors,event.target);var caseClick=2;var quantityWanted=1;var mainNode;var dataNode;var idProduct;var idProductAttribute;if(event.button===0&&target&&window.ga&&window.ga.length){mainNode=delegateEvents(mainSelector,target);dataNode=mainNode.querySelector('.remove-from-cart');if(dataNode){idProduct=parseInt(dataNode.getAttribute('data-id-product'));idProductAttribute=parseInt(dataNode.getAttribute('data-id-product-attribute'))}
|
|
if(!isNaN(idProduct)){if(isNaN(idProductAttribute)){idProductAttribute=0}
|
|
idProduct=idProduct+'-'+idProductAttribute;getData(caseClick,idProduct,publicValues.lists.default,null,quantityWanted)}}}
|
|
function eventCartQuantityDown(event){var eventSelectors=['.js-decrease-product-quantity'];var mainSelector=['.cart-item'];var target=delegateEvents(eventSelectors,event.target);var caseClick=3;var quantityRemoved=1;var mainNode;var dataNode;var idProduct;var idProductAttribute;if(event.button===0&&target&&window.ga&&window.ga.length){mainNode=delegateEvents(mainSelector,target);dataNode=mainNode.querySelector('.remove-from-cart');if(dataNode){idProduct=parseInt(dataNode.getAttribute('data-id-product'));idProductAttribute=parseInt(dataNode.getAttribute('data-id-product-attribute'))}
|
|
if(!isNaN(idProduct)){if(isNaN(idProductAttribute)){idProductAttribute=0}
|
|
idProduct=idProduct+'-'+idProductAttribute;getData(caseClick,idProduct,publicValues.lists.default,null,quantityRemoved)}}}
|
|
function eventCartQuantityDelete(event){var eventSelectors=['.remove-from-cart'];var mainSelector=['.cart-item'];var target=delegateEvents(eventSelectors,event.target);var caseClick=3;var mainNode;var idProduct;var idProductAttribute;var quantityRemoved;if(event.button===0&&target&&window.ga&&window.ga.length){idProduct=parseInt(target.getAttribute('data-id-product'));idProductAttribute=parseInt(target.getAttribute('data-id-product-attribute'));mainNode=delegateEvents(mainSelector,target);if(mainNode){quantityRemoved=mainNode.querySelector('.js-cart-line-product-quantity');quantityRemoved=parseInt((quantityRemoved?quantityRemoved.value:null))}
|
|
if(!isNaN(idProduct)&&!isNaN(quantityRemoved)){if(isNaN(idProductAttribute)){idProductAttribute=0}
|
|
idProduct=idProduct+'-'+idProductAttribute;getData(caseClick,idProduct,publicValues.lists.default,null,quantityRemoved)}}}
|
|
function eventPrestashopCheckout(event){var eventSelectors=['#checkout-delivery-step button','#payment-confirmation button'];var target=delegateEvents(eventSelectors,event.target);var currentStepNode;var shippingNode;var paymentNode;var checkoutOption;if(event.button===0&&target&&window.ga&&window.ga.length){currentStepNode=document.querySelector('.js-current-step');if(currentStepNode.id==='checkout-delivery-step'){shippingNode=document.querySelector('[id^=delivery_option_]:checked');shippingNode=delegateEvents(['.delivery-option'],shippingNode);shippingNode=shippingNode?shippingNode.querySelector('.carrier-name'):null;checkoutOption=shippingNode?shippingNode.textContent.trim():''}else if(currentStepNode.id==='checkout-payment-step'){paymentNode=document.querySelector('[id^=payment-option-]:checked');paymentNode=delegateEvents(['.payment-option'],paymentNode);paymentNode=paymentNode?paymentNode.querySelector('[for^=payment-option-] span'):null;checkoutOption=paymentNode?paymentNode.textContent.trim():''}
|
|
onCheckoutOption(checkoutOption)}}
|
|
function eventOpcSuperCheckout(event){var eventSelectors=['#supercheckout_confirm_order'];var mainCarrierSelector=['.highlight'];var mainPaymentSelector=['.highlight'];var target=delegateEvents(eventSelectors,event.target);var cgv;var shippingNode;var shippingOption;var paymentNode;var paymentOption;var checkoutOption;if(event.button===0&&target&&window.ga&&window.ga.length){cgv=document.querySelector('input[id^=conditions_to_approve]');if(!cgv||cgv.checked){shippingNode=document.querySelector('.supercheckout_shipping_option:checked');if(shippingNode){shippingNode=delegateEvents(mainCarrierSelector,shippingNode);shippingNode=shippingNode.querySelector('label img')||shippingNode.querySelector('label');shippingOption=(shippingNode?shippingNode.getAttribute('alt')||shippingNode.textContent.trim():'');shippingOption=normalizeText(shippingOption)}
|
|
paymentNode=document.querySelector('#payment-method input:checked');paymentNode=delegateEvents(mainPaymentSelector,paymentNode);paymentNode=paymentNode.querySelector('label img')||paymentNode.querySelector('label span');paymentOption=(paymentNode?paymentNode.getAttribute('alt')||paymentNode.textContent.trim():'');paymentOption=normalizeText(paymentOption);checkoutOption=paymentOption+' / '+shippingOption;onCheckoutOption(checkoutOption)}}}
|
|
function eventCartOpcSupercheckout(event){var eventSelectors=['.increase_button','.decrease_button','.removeProduct'];var mainSelector=['[id^=product_]'];var target=delegateEvents(eventSelectors,event.target);var targetClassList;var caseClick=2;var quantity=1;var mainNode;var dataNode;var quantityNode;var ids;var idProduct;var idProductAttribute;var indexedProduct;if(event.button===0&&target&&window.ga&&window.ga.length){targetClassList=target.classList;mainNode=delegateEvents(mainSelector,target);if(mainNode){dataNode=mainNode.id;if(dataNode){ids=dataNode.split('_');idProduct=parseInt(ids[1]);idProductAttribute=parseInt(ids[2])}
|
|
if(!isNaN(idProduct)){if(isNaN(idProductAttribute)){idProductAttribute=0}
|
|
indexedProduct=idProduct+'-'+idProductAttribute;if(targetClassList.contains('decrease_button')||targetClassList.contains('removeProduct')){caseClick=3;if(targetClassList.contains('removeProduct')){quantityNode=mainNode.querySelector('.quantitybox');quantity=parseInt((quantityNode?quantityNode.value:null))}}
|
|
getData(caseClick,indexedProduct,publicValues.lists.default,null,quantity)}}}}
|
|
function eventOpcPrestaTeam(event){var eventSelectors=['#btn_place_order'];var mainCarrierSelector=['.delivery-option'];var mainPaymentSelector=['.module_payment_container'];var target=delegateEvents(eventSelectors,event.target);var cgv;var shippingNode;var shippingOption;var paymentNode;var paymentOption;var checkoutOption;if(event.button===0&&target&&window.ga&&window.ga.length){cgv=document.querySelector('#cgv');if(!cgv||cgv.checked){shippingNode=document.querySelector('.delivery_option_radio:checked');paymentNode=document.querySelector('.payment_radio:checked');if(shippingNode){shippingNode=delegateEvents(mainCarrierSelector,shippingNode);shippingNode=shippingNode.querySelector('.delivery_option_title');shippingOption=(shippingNode?shippingNode.textContent.trim():'');shippingOption=normalizeText(shippingOption)}
|
|
if(paymentNode){paymentNode=delegateEvents(mainPaymentSelector,paymentNode);paymentNode=paymentNode.querySelector('.payment_content span');paymentOption=(paymentNode?paymentNode.textContent.trim():'');paymentOption=normalizeText(paymentOption);checkoutOption=paymentOption+' / '+shippingOption;onCheckoutOption(checkoutOption)}}}}
|
|
function eventCartOpcPrestaTeam(event){var eventSelectors=['.bootstrap-touchspin-up','.bootstrap-touchspin-down','.remove-from-cart'];var mainSelector=['.bootstrap-touchspin'];var target=delegateEvents(eventSelectors,event.target);var targetClassList;var caseClick=2;var quantity=1;var mainNode;var dataNode;var quantityNode;var idProduct;var idProductAttribute;var indexedProduct;if(event.button===0&&target&&window.ga&&window.ga.length){targetClassList=target.classList;mainNode=delegateEvents(mainSelector,target);if(mainNode){dataNode=mainNode.querySelector('.remove-from-cart');if(dataNode){idProduct=dataNode.dataset.idProduct;idProductAttribute=dataNode.dataset.idProductAttribute;if(!isNaN(idProduct)){if(isNaN(idProductAttribute)){idProductAttribute=0}
|
|
indexedProduct=idProduct+'-'+idProductAttribute;if(targetClassList.contains('bootstrap-touchspin-down')||targetClassList.contains('remove-from-cart')){caseClick=3;if(targetClassList.contains('remove-from-cart')){quantityNode=mainNode.querySelector('.cart-line-product-quantity');quantity=parseInt((quantityNode?quantityNode.value:null))}}
|
|
getData(caseClick,indexedProduct,publicValues.lists.default,null,quantity)}}}}}
|
|
function eventOpcTheCheckout(event){var eventSelectors=['#confirm_order'];var mainCarrierSelector=['.delivery-option'];var mainPaymentSelector=['.payment-option'];var target=delegateEvents(eventSelectors,event.target);var requiredCheckBox1;var requiredCheckBox2;var shippingNode;var shippingOption;var paymentNode;var paymentOption;var checkoutOption;if(event.button===0&&target&&window.ga&&window.ga.length){requiredCheckBox1=document.querySelector('input[name=required-checkbox-1]');requiredCheckBox2=document.querySelector('input[name=required-checkbox-2]');if((!requiredCheckBox1||requiredCheckBox1.checked)&&(!requiredCheckBox2||requiredCheckBox2.checked)){shippingNode=document.querySelector('[id^=delivery_option]:checked');paymentNode=document.querySelector('[id^=payment-option]:checked');if(shippingNode){shippingNode=shippingNode.closest(mainCarrierSelector);shippingNode=shippingNode.querySelector('.carrier-name');shippingOption=(shippingNode?shippingNode.textContent.trim():'');shippingOption=normalizeText(shippingOption)}
|
|
if(paymentNode){paymentNode=paymentNode.closest(mainPaymentSelector);paymentNode=paymentNode.querySelector('label[for^=payment-option-] span');paymentOption=(paymentNode?paymentNode.textContent.trim():'');paymentOption=normalizeText(paymentOption);checkoutOption=paymentOption+' / '+shippingOption;onCheckoutOption(checkoutOption)}}}}
|
|
function eventCartOpcTheCheckout(event){var eventSelectors=['.cart-line-product-quantity-up','.cart-line-product-quantity-down','.remove-from-cart'];var mainSelector=['.product-line-actions'];var target=delegateEvents(eventSelectors,event.target);var targetClassList;var caseClick=2;var quantity=1;var mainNode;var dataNode;var quantityNode;var idProduct;var idProductAttribute;var indexedProduct;if(event.button===0&&target&&window.ga&&window.ga.length){targetClassList=target.classList;mainNode=delegateEvents(mainSelector,target);if(mainNode){dataNode=mainNode.querySelector('.remove-from-cart');if(dataNode){idProduct=dataNode.dataset.idProduct;idProductAttribute=dataNode.dataset.idProductAttribute;if(!isNaN(idProduct)){if(isNaN(idProductAttribute)){idProductAttribute=0}
|
|
indexedProduct=idProduct+'-'+idProductAttribute;if(targetClassList.contains('cart-line-product-quantity-down')||targetClassList.contains('remove-from-cart')){caseClick=3;if(targetClassList.contains('remove-from-cart')){quantityNode=mainNode.querySelector('.cart-line-product-quantity');quantity=parseInt((quantityNode?quantityNode.value:null))}}
|
|
getData(caseClick,indexedProduct,publicValues.lists.default,null,quantity)}}}}}
|
|
function onSearchResults(){var eventName='view_search_results';var eventParams={};var searchTerm;if(document.body.id==='search'){searchTerm=getSearchTerm();if(searchTerm){eventParams.search_term=searchTerm;sendGtagEvent(eventName,eventParams)}}}
|
|
function onScrollTracking(products){var eventName='view_item_list';var eventParams;var eventDimensions;var sendNow;if(Array.isArray(products)&&products.length){while(products.length>0){sendNow=products.splice(0,publicValues.trackingFeatures.productSendRate);eventParams={'non_interaction':1,'items':[]};sendNow.forEach(function(product){eventParams.items.push(productLayer(product))});if(publicValues.trackingFeatures.config.remarketing||publicValues.trackingFeatures.config.businessData){eventDimensions=setRemarketingDimensions(sendNow,publicValues.ecommPageType);Object.assign(eventParams,eventDimensions)}
|
|
sendGtagEvent(eventName,eventParams)}}}
|
|
function onPromotionView(promotions){var eventName='view_promotion';var eventParams={'promotions':getPromotionsLayered(promotions)};sendGtagEvent(eventName,eventParams)}
|
|
function onPromotionClick(promotion,link){var eventName='select_content';var eventParams={'promotions':[getPromotionLayer(promotion)]};if(link){privateValues.redirectLink=link;eventParams.event_callback=callbackWithTimeout(function(){redirectLink()},2000)}
|
|
sendGtagEvent(eventName,eventParams)}
|
|
function onProductClick(product,link){var eventName='select_content';var eventParams={'content_type':'product','items':[]};eventParams.items.push(productLayer(product));if(link){privateValues.redirectLink=link;eventParams.event_callback=callbackWithTimeout(function(){redirectLink()},2000)}
|
|
sendGtagEvent(eventName,eventParams)}
|
|
function onProductView(product){var eventName='view_item';var eventParams={'non_interaction':1,'items':[]};var ecommPageType=publicValues.ecommPageType;var eventDimensions;eventParams.items.push(productLayer(product));if(publicValues.trackingFeatures.config.remarketing||publicValues.trackingFeatures.config.businessData){if(product.list_name==='quick_view'){ecommPageType='product'}
|
|
eventDimensions=setRemarketingDimensions([product],ecommPageType);Object.assign(eventParams,eventDimensions)}
|
|
sendGtagEvent(eventName,eventParams)}
|
|
function onSocialAction(network){var eventName='share';var eventParams={'method':network,'event_value':publicValues.trackingFeatures.eventValues.socialAction};if(publicValues.trackingFeatures.goals.socialAction){sendGtagEvent(eventName,eventParams)}}
|
|
function onSignUp(){var index=publicValues.trackingFeatures.isGuest;var customerType=publicValues.trackingFeatures.signUpTypes[index];var eventName='sign_up';var eventParams={'method':customerType,'value':publicValues.trackingFeatures.eventValues.signUp};if(publicValues.trackingFeatures.goals.signUp&&publicValues.trackingFeatures.isNewSignUp){sendGtagEvent(eventName,eventParams);publicValues.trackingFeatures.isNewSignUp=0;publicValues.trackingFeatures.isGuest=0}}
|
|
function onAddToCart(product,link){var eventName='add_to_cart';var eventParams={'items':[]};var eventDimensions={};var ecommPageType='cart';eventParams.items.push(productLayer(product));if(publicValues.trackingFeatures.config.remarketing||publicValues.trackingFeatures.config.businessData){eventDimensions=setRemarketingDimensions([product],ecommPageType);Object.assign(eventParams,eventDimensions)}
|
|
if(!publicValues.trackingFeatures.cartAjax&&link){privateValues.redirectLink=link;eventParams.event_callback=callbackWithTimeout(function(){redirectLink()},2000)}
|
|
sendGtagEvent(eventName,eventParams)}
|
|
function onRemoveFromCart(product,link){var eventName='remove_from_cart';var eventParams={'items':[]};eventParams.items.push(productLayer(product));if(!publicValues.trackingFeatures.cartAjax&&link){privateValues.redirectLink=link;eventParams.event_callback=callbackWithTimeout(function(){redirectLink()},2000)}
|
|
sendGtagEvent(eventName,eventParams)}
|
|
function onCheckoutProducts(products){var eventName='checkout_progress';var eventParams;var eventDimensions;var sendNow;var currentCheckoutStep=getCheckOutStep();if(currentCheckoutStep===1){eventName='begin_checkout'}
|
|
if(Array.isArray(products)&&products.length){while(products.length>0){sendNow=products.splice(0,publicValues.trackingFeatures.productSendRate);eventParams={'checkout_step':currentCheckoutStep,'items':[]};sendNow.forEach(function(product){eventParams.items.push(productLayer(product))});if(publicValues.trackingFeatures.config.remarketing||publicValues.trackingFeatures.config.businessData){eventDimensions=setRemarketingDimensions(sendNow,publicValues.ecommPageType);Object.assign(eventParams,eventDimensions)}
|
|
sendGtagEvent(eventName,eventParams)}}}
|
|
function onCheckoutOption(checkoutOption){var eventName='set_checkout_option';var eventParams={'checkout_step':getCheckOutStep(),'checkout_option':checkoutOption};sendGtagEvent(eventName,eventParams)}
|
|
function onAddOrder(order,products,idShop){var eventName='purchase';var adWordsConversionEventName='conversion';var adWordsConversionParams={'transaction_id':order.transaction_id,'value':order.value,'currency':publicValues.trackingFeatures.currency};var productLength=products.length;var firstLoop=1;var eventDimensions;var eventParams;var sendNow;if(Array.isArray(products)&&products.length){while(products.length>0){sendNow=products.splice(0,publicValues.trackingFeatures.productSendRate);eventParams={'items':[],'send_to':publicValues.trackingFeatures.analyticsId};if(firstLoop){eventParams.event_callback=callbackWithTimeout(function(){setOrderInDb(order.transaction_id,idShop)},1000);firstLoop=0}
|
|
Object.keys(order).forEach(function(key){if(order[key]!==null&&order[key]!==!1&&order[key]!==''){if(key==='value'&&productLength>publicValues.trackingFeatures.productSendRate){return}
|
|
eventParams[key]=order[key]}});sendNow.forEach(function(product){eventParams.items.push(productLayer(product))});if(publicValues.trackingFeatures.config.remarketing||publicValues.trackingFeatures.config.businessData){eventDimensions=setRemarketingDimensions(sendNow,publicValues.ecommPageType);Object.assign(eventParams,eventDimensions)}
|
|
sendGtagEvent(eventName,eventParams)}
|
|
if(publicValues.trackingFeatures.adwordsId&&publicValues.trackingFeatures.adwordsCl){adWordsConversionParams.send_to=publicValues.trackingFeatures.adwordsId+'/'+publicValues.trackingFeatures.adwordsCl;sendGtagEvent(adWordsConversionEventName,adWordsConversionParams)}}}
|
|
function sendGtagConfig(configId){var configElement=publicValues.trackingFeatures[configId];var configFeatures=publicValues.trackingFeatures.config;var configParams={};var doNotTrack=(publicValues.trackingFeatures.checkDoNotTrack&&privateValues.doNotTrack);if(publicValues.trackingFeatures.disableInternalTracking||doNotTrack){window['ga-disable-'+publicValues.trackingFeatures.analyticsId]=!0}
|
|
if(configId==='analyticsId'){configParams.site_speed_sample_rate=configFeatures.simpleSpeedSampleRate;configParams.anonymize_ip=configFeatures.anonymizeIp;configParams.link_attribution=configFeatures.linkAttribution;if(configFeatures.userIdFeature){configParams.user_id=configFeatures.userIdValue}
|
|
if(configFeatures.remarketing||configFeatures.businessData){configParams.custom_map={};if(configFeatures.remarketing){configParams.custom_map['dimension'+configFeatures.customDimensions.ecommProdId]='ecomm_prodid';configParams.custom_map['dimension'+configFeatures.customDimensions.ecommPageType]='ecomm_pagetype';configParams.custom_map['dimension'+configFeatures.customDimensions.ecommTotalValue]='ecomm_totalvalue';configParams.custom_map['dimension'+configFeatures.customDimensions.ecommCategory]='ecomm_category'}
|
|
if(configFeatures.businessData){configParams.custom_map['dimension'+configFeatures.customDimensions.dynxItemId]='dynx_itemid';configParams.custom_map['dimension'+configFeatures.customDimensions.dynxItemId2]='dynx_itemid2';configParams.custom_map['dimension'+configFeatures.customDimensions.dynxPageType]='dynx_pagetype';configParams.custom_map['dimension'+configFeatures.customDimensions.dynxTotalValue]='dynx_totalvalue'}}else{configParams.allow_display_features=configFeatures.remarketing}
|
|
if(Array.isArray(configFeatures.crossDomainList)&&configFeatures.crossDomainList.length){configParams.linker={'domains':configFeatures.crossDomainList}}
|
|
if(configFeatures.optimizeId){configParams.optimize_id=configFeatures.optimizeId}
|
|
configParams.currency=publicValues.trackingFeatures.currency}else if(configId==='adwordsId'){configParams.send_page_view=!1}
|
|
if(configElement){gtag('config',configElement,configParams)}}
|
|
function sendGtagEvent(eventName,eventParams){gtag('event',eventName,eventParams)}
|
|
function getPromotionsLayered(promotions){var promotionsLayered=[];promotions.forEach(function(promotion){promotionsLayered.push(getPromotionLayer(promotion))});return promotionsLayered}
|
|
function getPromotionLayer(promotion){var promotionFields={'pid':'id','pn':'name','pc':'creative_name','pp':'creative_slot'};var promotionLayer={};var promotionQueryData;var gaKey;promotionQueryData=getQueryData(promotion);Object.keys(promotionFields).forEach(function(key){gaKey=promotionFields[key];if(promotionQueryData.hasOwnProperty(key)){promotionLayer[gaKey]=decodeURIComponent(promotionQueryData[key])}});return promotionLayer}
|
|
function productLayer(product){var productKeys=['id','name','variant','brand','category','list_name','list_position','quantity','price','coupon'];var gaProduct={};productKeys.forEach(function(key){if(product[key]!==null){gaProduct[key]=product[key]}});return gaProduct}
|
|
function setRemarketingDimensions(products,ecommPageType){var ecommDimensions={};var businessDimensions={};var remarketingDimensions={};var totalValue=0;var productPrice=0;products.forEach(function(product){productPrice=product.price;if(product.quantity){productPrice=productPrice*product.quantity}
|
|
totalValue=parseFloat((totalValue+productPrice).toFixed(2));if(publicValues.trackingFeatures.config.remarketing){ecommDimensions=processEcommProduct(product,ecommDimensions,ecommPageType,totalValue)}
|
|
if(publicValues.trackingFeatures.config.businessData){businessDimensions=processBusinessProduct(product,businessDimensions,ecommPageType,totalValue)}});Object.assign(remarketingDimensions,ecommDimensions,businessDimensions);return remarketingDimensions}
|
|
function getFeedIdProduct(idProduct,idAttribute,feedPrefix,feedVariant,feedSuffix){var feedIdProduct=idProduct;if(feedVariant&&idAttribute){feedIdProduct=idProduct+feedVariant+idAttribute}
|
|
return feedPrefix+feedIdProduct+feedSuffix}
|
|
function processEcommProduct(product,ecommDimensions,ecommPageType,totalValue){var feedIdProduct;ecommDimensions.ecomm_pagetype=ecommPageType;if(ecommPageType==='product'||ecommPageType==='cart'||ecommPageType==='purchase'){feedIdProduct=getFeedIdProduct(product.id,product.id_attribute,publicValues.trackingFeatures.merchantPrefix,publicValues.trackingFeatures.merchantVariant,publicValues.trackingFeatures.merchantSuffix);if(ecommPageType==='cart'||ecommPageType==='purchase'){if(!ecommDimensions.hasOwnProperty('ecomm_prodid')){ecommDimensions.ecomm_prodid=[]}
|
|
ecommDimensions.ecomm_prodid.push(feedIdProduct)}else{ecommDimensions.ecomm_prodid=feedIdProduct}}
|
|
if(ecommPageType==='product'||ecommPageType==='cart'||ecommPageType==='purchase'){ecommDimensions.ecomm_totalvalue=totalValue}
|
|
if((ecommPageType==='category'||ecommPageType==='product')&&product.category){ecommDimensions.ecomm_category=product.category}
|
|
return ecommDimensions}
|
|
function processBusinessProduct(product,businessDimensions,ecommPageType,totalValue){var dynxPageTypes={'home':'home','searchresults':'searchresults','product':'offerdetail','cart':'conversionintent','purchase':'conversion'};var dynxPageType='other';var idAttribute;var feedIdProduct;if(dynxPageTypes.hasOwnProperty(ecommPageType)){dynxPageType=dynxPageTypes[ecommPageType]}
|
|
businessDimensions.dynx_pagetype=dynxPageType;if(dynxPageType==='searchresults'||dynxPageType==='offerdetail'||dynxPageType==='conversionintent'||dynxPageType==='conversion'){feedIdProduct=getFeedIdProduct(product.id,product.id_attribute,publicValues.trackingFeatures.businessDataPrefix,publicValues.trackingFeatures.businessDataVariant,'');if(!publicValues.trackingFeatures.businessDataVariant){if(!businessDimensions.hasOwnProperty('dynx_itemid2')){businessDimensions.dynx_itemid2=[]}
|
|
if(product.id_attribute){idAttribute=product.id_attribute.toString()}
|
|
businessDimensions.dynx_itemid2.push(idAttribute)}
|
|
if(!businessDimensions.hasOwnProperty('dynx_itemid')){businessDimensions.dynx_itemid=[]}
|
|
businessDimensions.dynx_itemid.push(feedIdProduct);if(dynxPageType==='offerdetail'||dynxPageType==='conversionintent'||dynxPageType==='conversion'){businessDimensions.dynx_totalvalue=totalValue}}
|
|
return businessDimensions}
|
|
function getSearchTerm(){var searchWordNode;var searchTerm;if(document.body.id==='search'){searchWordNode=document.querySelector('input[name=s]');searchTerm=searchWordNode.value||null}
|
|
return searchTerm}
|
|
function getCheckOutStep(){var currentStepValue=1;var currentStepNode;if(publicValues.isCheckout){if(document.body.id==='checkout'&&publicValues.controllerName==='order'&&publicValues.compliantModuleName==='default'){currentStepNode=document.querySelector('.js-current-step');switch(currentStepNode.id){case 'checkout-personal-information-step':currentStepValue=2;break;case 'checkout-addresses-step':currentStepValue=3;break;case 'checkout-delivery-step':currentStepValue=4;break;case 'checkout-payment-step':currentStepValue=5;break}}else if(publicValues.controllerName===publicValues.compliantModuleName||(publicValues.controllerName==='order'&&publicValues.compliantModuleName==='onepagecheckoutps'&&publicValues.skipCartStep==='')){currentStepValue=2}
|
|
return currentStepValue}}
|
|
function getData(caseClick,idProducts,list,link,quantityWanted){var req=new XMLHttpRequest();var url=privateValues.moduleUrl+'rc_pganalytics-ajax.php';var data={'action':'product','products_position':privateValues.productsPosition,'list':list,'quantity_wanted':quantityWanted,'products_list_cache':publicValues.productsListCache};var formData;var response;var type;if(typeof idProducts==='object'){data.id_products=idProducts}else{data.id_products=[idProducts]}
|
|
formData=new FormData();formData.append('data',JSON.stringify(data));formData.append('token',publicValues.trackingFeatures.token);req.open('POST',url,!0);req.onreadystatechange=function(){try{if(req.status===200){if(req.readyState===4){type=req.getResponseHeader('Content-Type');if(type==='application/json'){response=JSON.parse(req.responseText);if(typeof response==='object'){if(caseClick===0){onScrollTracking(response)}else if(caseClick===1){onProductClick(response[0],link)}else if(caseClick===2){onAddToCart(response[0],link)}else if(caseClick===3){onRemoveFromCart(response[0],link)}else if(caseClick===4){onProductView(response[0])}}}else{throw 'response is not an JSON object'}}}else{throw 'Unexpected XHR error'}}catch(error){console.warn('rc_pganalytics: '+error);if(link){privateValues.redirectLink=link;redirectLink()}}};req.send(formData)}
|
|
function setOrderInDb(orderId,idShop){var req=new XMLHttpRequest();var url=privateValues.moduleUrl+'rc_pganalytics-ajax.php';var data={'action':'orderComplete','is_order':!0,'id_order':orderId,'id_shop':idShop,'id_customer':publicValues.trackingFeatures.config.userIdValue};var adBlocker=(!window.ga||!window.ga.length);var doNotTrack=(publicValues.trackingFeatures.checkDoNotTrack&&privateValues.doNotTrack);var formData;if(doNotTrack||adBlocker){data.action='abortedTransaction';data.doNotTrack=privateValues.doNotTrack;data.adBlocker=adBlocker}
|
|
formData=new FormData();formData.append('data',JSON.stringify(data));formData.append('token',publicValues.trackingFeatures.token);req.open('POST',url,!0);req.send(formData)}
|
|
function setClientIdInDb(){var clientId;var trackers;var req;var url;var data;var formData;if(window.ga){ga(function(){trackers=ga.getAll();if(Array.isArray(trackers)&&trackers.length){clientId=trackers[0].get('clientId');if(clientId&&clientId!==publicValues.trackingFeatures.clientId){req=new XMLHttpRequest();url=privateValues.moduleUrl+'rc_pganalytics-ajax.php';data={'action':'clientId','id_customer':publicValues.trackingFeatures.config.userIdValue,'id_shop':publicValues.trackingFeatures.idShop,'client_id':clientId};formData=new FormData();formData.append('data',JSON.stringify(data));formData.append('token',publicValues.trackingFeatures.token);req.open('POST',url,!0);req.send(formData)}}})}}
|
|
function scrollElementDetection(){var products=document.querySelectorAll('.js-product-miniature');var promos=document.querySelectorAll('.js-ga-track-promo');if(products.length){processScrollElement(products,'product')}
|
|
if(promos.length){processScrollElement(promos,'promo')}}
|
|
function processScrollElement(elements,type){var visibleElement;var idProduct;var idProductAttribute;var isInViewport;elements.forEach(function(element){isInViewport=isElementInViewport(element);if(isInViewport){if(type==='product'){idProduct=parseInt(element.getAttribute('data-id-product'));idProductAttribute=parseInt(element.getAttribute('data-id-product-attribute'))|0;if(!isNaN(idProduct)){visibleElement=idProduct+'-'+idProductAttribute;if(privateValues.sentProducts.indexOf(visibleElement)===-1&&privateValues.sendProducts.indexOf(visibleElement)===-1){privateValues.sendProducts.push(visibleElement)}}}else if(type==='promo'){visibleElement=element.querySelector('a').search;if(visibleElement){if(privateValues.sentPromotions.indexOf(visibleElement)===-1&&privateValues.sendPromotions.indexOf(visibleElement)===-1){privateValues.sendPromotions.push(visibleElement)}}}}})}
|
|
function scrollProductPositionDetection(){var products=document.querySelectorAll('.js-product-miniature');var actualPosition=getInitPosition();var productKey;var idProduct;var idProductAttribute;products.forEach(function(product){idProduct=parseInt(product.getAttribute('data-id-product'));idProductAttribute=parseInt(product.getAttribute('data-id-product-attribute'));if(isNaN(idProductAttribute)){idProductAttribute=0}
|
|
if(!isNaN(idProduct)){productKey=idProduct+'-'+idProductAttribute;if(!privateValues.productsPosition.hasOwnProperty(productKey)){privateValues.productsPosition[productKey]=actualPosition;actualPosition ++}}})}
|
|
function getInitPosition(){var pagination;var itemsNumber;pagination=document.querySelector('.current .disabled.js-search-link');pagination=(pagination?pagination.textContent.trim():1);itemsNumber=publicValues.trackingFeatures.productsPerPage;return(parseInt(itemsNumber)*parseInt(pagination))-parseInt(itemsNumber)+1}
|
|
function doneScroll(){var caseClick=0;var list;if(privateValues.sendProducts.length>0){scrollProductPositionDetection();list=checkFilters();getData(caseClick,privateValues.sendProducts,list,null,null);Array.prototype.push.apply(privateValues.sentProducts,privateValues.sendProducts);privateValues.sendProducts=[]}
|
|
if(privateValues.sendPromotions.length>0){onPromotionView(privateValues.sendPromotions);Array.prototype.push.apply(privateValues.sentPromotions,privateValues.sendPromotions);privateValues.sendPromotions=[]}
|
|
clearTimeout(privateValues.scrollTimeout)}
|
|
function checkFilters(){var list=publicValues.lists.default;var isEnabledFilter=document.querySelector('#js-active-search-filters');if(isEnabledFilter&&isEnabledFilter.className==='active_filters'){list=publicValues.lists.filter}else if(document.body.id==='search'){publicValues.ecommPageType='searchresults'}
|
|
return list}
|
|
function redirectLink(){if(!privateValues.redirected){privateValues.redirected=!0;window.location=privateValues.redirectLink}}
|
|
function callbackWithTimeout(callback,timeout){var called=!1;function fn(){if(!called){called=!0;callback()}}
|
|
setTimeout(fn,timeout||1000);return fn}
|
|
function getQueryData(query){var vars={};query.replace(/[?&]+([^=&]+)=([^&]*)/gi,function(m,key,value){vars[key]=value});return vars}
|
|
function isElementInViewport(element){var isVisible=!1;var winHeight=window.innerHeight;var winOffset=window.pageYOffset;var minY=winOffset;var maxY=winOffset+winHeight;var itemTop;var itemBottom;var elHeight;var elComputedStyle;var elHeightPadding;var rect;elHeight=element.clientHeight;if(elHeight){elComputedStyle=getComputedStyle(element);elHeightPadding=parseInt(elComputedStyle.paddingTop)+parseInt(elComputedStyle.paddingBottom);rect=element.getBoundingClientRect();itemTop=rect.top+winOffset;itemBottom=itemTop+(elHeight-elHeightPadding);isVisible=((itemTop>=minY&&itemTop<maxY)||(itemBottom>=minY&&itemBottom<maxY))}
|
|
return isVisible}
|
|
function normalizeText(text){var filtered='';if(typeof text==='string'){filtered=text.replace(/^\s+|\n+.*/g,'').trim()}
|
|
return filtered}
|
|
function delegateEvents(selectors,target){var matchMode;if(target){matchMode=target.matches||target.webkitMatchesSelector||target.msMatchesSelector;matchMode=matchMode.name||/function\s+([\w\$]+)\s*\(/.exec(matchMode.toString());if(typeof matchMode!=='string'){matchMode=matchMode?matchMode[1]:''}
|
|
if(matchMode){while(target.parentNode!==null){if(target.nodeType===1){for(var i=0;i<selectors.length;i++){if(target[matchMode](selectors[i])){return target}}}
|
|
target=target.parentNode}}}}} |