<?php use Anowave\Ec\Helper\Constants; ?> <?php echo $block->getChildHtml('ec_datalayer') ?> <?php echo $block->getChildHtml('ec_cookie') ?> <?php if ($block->getOrderIds() && $block->getHelper()->isCustomerReviewsActive()): ?> <script data-ommit="true" nonce="<?php echo $block->generateNonce() ?>" src="https://apis.google.com/js/platform.js?onload=renderOptIn" async defer></script><?php endif ?> <script data-ommit="true" nonce="<?php echo $block->generateNonce() ?>">

	/* Dynamic remarketing */
	window.google_tag_params = window.google_tag_params || {};

	/* Default pagetype */
	window.google_tag_params.ecomm_pagetype = <?php echo json_encode($block->getPageType()) ?>;

	/* Grouped products collection */
	window.G = [];

	/**
	 * Global revenue 
	 */
	window.revenue = 0;

	/**
	 * DoubleClick
	 */
	window.DoubleClick = 
	{
		DoubleClickRevenue:	 	0,
		DoubleClickTransaction: 0,
		DoubleClickQuantity: 	0
	};
	
	<?php
	/**
	 * Push visitor data
	 */
	?> AEC.Cookie.visitor(<?php echo $block->getVisitorPush() ?>).push(dataLayer, false);</script><?php echo $block->getChildHtml('ec_detail') ?> <?php echo $block->getChildHtml('ec_widgets') ?> <?php echo $block->getChildHtml('ec_partytown') ?> <?php /** * Google Tag Manager Snippet */ ?> <?php echo $block->getHeadSnippet() ?> <?php if ($block->getHelper()->useLazyload()): ?> <script data-ommit="true" nonce="<?php echo $block->generateNonce() ?>">

		(() => 
		{
			let init = () => 
			{
				if (window.init_gtm)
				{
					return true;
				}

				if (window.google_tag_manager)
				{
					return true;
				}

				window.init_gtm = true;

				document.querySelectorAll('[type=<?php echo json_encode(Constants::SCRIPT_TYPE_LAZYLOAD) ?>]').forEach(script => 
				{
					let tag = document.createElement('script');
	
					tag.type 				= "text/javascript";
					tag.innerHTML 			= script.innerHTML;

					if (script.getAttribute('src'))
					{
						tag.src = script.src;
					}
					
					tag.setAttribute('nonce', <?php echo json_encode($block->generateNonce()) ?>);

					document.head.appendChild(tag);
				});
			};
			
			let lazy = event => 
			{
				event.currentTarget.removeEventListener(event.type, lazy);
				init();
			};

			document.addEventListener('DOMContentLoaded', () => 
			{
				setTimeout(init, 5000);
			});
			
			document.addEventListener('mousemove', 	lazy);
			document.addEventListener('touchstart', lazy);
		})();</script><?php endif ?> <?php /** * Transaction tracking */ ?> <script data-ommit="true" nonce="<?php echo $block->generateNonce() ?>">

    <?php if ($block->getOrderIds()):?>
    
        ((collection) => 
        {
        	collection.forEach(data => 
        	{
        		<?php if ($block->getEnhancedConversionData()): ?>
            		<?php foreach ($block->getEnhancedConversionData() as $data): ?> data['enhanced_conversion_data'] = <?php echo json_encode($data) ?>;
        			
            		<?php endforeach ?> <?php endif ?> <?php
        		/**
        		 * Push transaction
        		 */
        		?> AEC.CookieConsent.queue(() => 
    			{
    				AEC.Cookie.purchase(data).push(dataLayer);
        			
    			}).process();

				/** */

				document.addEventListener("DOMContentLoaded", event => 
    			{
					(() => 
					{
						let state = 
						{
							consent: {},
							payload: data
						};

						dataLayer.forEach(element => 
						{
							if (element.hasOwnProperty(0) && element.hasOwnProperty(1))
							{
								if ('consent' === element[0])
								{
									state.consent[element[1]] = element[2];
								}
							}
						});

						AEC.Request.post(<?php echo json_encode($block->getUrl('datalayer/index/state'), JSON_UNESCAPED_SLASHES) ?>, state , response => 
						{
							return true;
						});
					})();
				});

				
    			
        		<?php 
        		/**
        		 * Push data to custom transport layer
        		 */
        		?> dataLayerTransport.push(data);
        
        		<?php if ($block->getHelper()->facebook()): ?>
        
            		var content_ids = [], content_length = data.ecommerce.purchase.items.length;
            		
            		for (i = 0, l = data.ecommerce.purchase.items.length; i < l; i++)
            		{
            			content_ids.push(data.ecommerce.purchase.items[i].remarketingFacebookId ?? data.ecommerce.purchase.items[i].item_id);
            		}
            
            		window.content_ids = content_ids;
            
            		<?php $key = $block->getHelper()->getFacebookValueKey() ?> (function(callback)
            		{
            			if (AEC.Const.COOKIE_DIRECTIVE)
            			{
            				AEC.CookieConsent.queue(callback).process();
            			}
            			else 
            			{
            				callback.apply(window,[]);
            			}
            		})
            		(
            			(function(content_ids, content_length, data)
            			{
            				return function()
            				{
								const track = () => 
                				{
									const payload = {
    	        						content_type: 	'product',
    	        						content_ids:	content_ids,
    	        						num_items:		content_length,
    	        						value: 			data.facebook['<?php echo $key ?>'],
    	        						currency: 		'<?php echo $block->getHelper()->getCurrency() ?>'
    	        					};

									document.dispatchEvent(new CustomEvent('meta.track', {
										detail: {
											event: 'Purchase',
											payload: payload
										}
									}));

                					fbq("track", "Purchase", payload, { eventID: AEC.UUID.generate({ event: 'Purchase'}) });
                				};

            					typeof fbq !== 'undefined' ? track() : AEC.EventDispatcher.on('ec.facebook.loaded', track);
            				}
            			})(content_ids, content_length, data)
            		);
        			
        		<?php endif ?> <?php if ($block->getHelper()->tiktok()): ?>
        
					var contents = [], content_length = data.ecommerce.purchase.items.length;
					
					for (i = 0, l = data.ecommerce.purchase.items.length; i < l; i++)
					{
						contents.push
						(
							{
								content_id: 	data.ecommerce.purchase.items[i].item_id,
								content_name: 	data.ecommerce.purchase.items[i].item_name,
								quantity: 		data.ecommerce.purchase.items[i].quantity,
								brand:			data.ecommerce.purchase.items[i].item_brand,
								price: 			data.ecommerce.purchase.items[i].price
							}
						);
					}

					<?php $key = $block->getHelper()->getTikTokValueKey() ?> (function(callback)
					{
						if (AEC.Const.COOKIE_DIRECTIVE)
						{
							AEC.CookieConsent.queue(callback);
						}
						else 
						{
							callback.apply(window,[]);
						}
					})
					(
						(function(contents, content_length, data)
						{
							return function()
							{
								if ('undefined' !== typeof ttq)
								{
									AEC.TikTok.event('CompletePayment', 
									{
										contents: 		contents,
										content_type:	'product',
										value: 			data.tiktok['<?php echo $key ?>'],
										currency: 		<?php echo json_encode($block->getHelper()->getCurrency()) ?>,
									},
									{ 
										event_id: AEC.UUID.generate({ event: 'CompletePayment'})
									});
								}
							}
						})(contents, content_length, data)
					);
				<?php endif ?> });
        	
        })(<?php echo $block->getHelper()->getPurchasePayloadCollection($block) ?>);

        <?php if ($block->getServerSide()): ?>

        	dataLayer.push(<?php echo json_encode($block->getServerSide()) ?>);

        <?php endif ?> <?php
        /**
         * AdWords Dynamic Remarketing
         */
        ?> <?php $google_tag_params = $block->getPurchaseGoogleTagParams($block) ?> /**
         * AdWords Dynamic Remarketing page type
         */
        window.google_tag_params.ecomm_pagetype		= <?php echo $block->getHelper()->getJsonHelper()->encode('purchase') ?>;
        window.google_tag_params.ecomm_prodid 		= <?php echo $block->getHelper()->getJsonHelper()->encode($google_tag_params->ecomm_prodid) ?>;
        window.google_tag_params.ecomm_pvalue 		= <?php echo $block->getHelper()->getJsonHelper()->encode($google_tag_params->ecomm_pvalue) ?>;
        window.google_tag_params.ecomm_pname 		= <?php echo $block->getHelper()->getJsonHelper()->encode($google_tag_params->ecomm_pname) ?>;
        window.google_tag_params.ecomm_totalvalue  	= <?php echo $google_tag_params->ecomm_totalvalue ?>;
        window.google_tag_params.returnCustomer 	= <?php echo $block->getHelper()->getIsReturnCustomer() ?>;
        
        <?php if ($block->getHelper()->supportDynx()): ?>
        
            window.google_tag_params.dynx_pagetype 		= 'conversion';
            window.google_tag_params.dynx_itemid 		= window.google_tag_params.ecomm_prodid;
            window.google_tag_params.dynx_totalvalue 	= window.google_tag_params.ecomm_totalvalue
        
        <?php endif ?> <?php 
        /**
         * AdWords Conversion Tracking
         */
        ?> <?php if ($block->getHelper()->isAdwordsConversionTrackingActive(true) && $block->getAdwords()->getGoogleConversionId() && $block->getHelper()->useAdwordsConversionTrackingStandard()) : ?>
        
        	window.google_conversion_id 		= '<?php echo $block->getAdwords()->getGoogleConversionId() ?>';
        	window.google_conversion_value 		=  <?php echo $block->getAdwordsRevenue() ?>;
        	window.google_conversion_language 	= '<?php echo $block->getAdwords()->getGoogleConversionLanguage() ?>';
        	window.google_conversion_format 	= '<?php echo $block->getAdwords()->getGoogleConversionFormat() ?>';
        	window.google_conversion_label 		= '<?php echo $block->getAdwords()->getGoogleConversionLabel() ?>';
        	window.google_conversion_color		= '<?php echo $block->getAdwords()->getGoogleConversionColor() ?>';
        	window.google_conversion_currency 	= '<?php echo $block->getAdwords()->getGoogleConversionCurrency() ?>';
        
        	<?php
        	/**
        	 * Add an order ID to conversion tracking tag to help avoid counting duplicate conversions.
        	 */
        	?> <?php foreach ($block->getOrders() as $order): ?> window.google_conversion_order_id = <?php echo $block->getHelper()->getJsonHelper()->encode($order->getIncrementId()) ?>;
        
        	<?php endforeach ?> <?php endif ?> <?php
        /**
         * Google Customer Reviews
         */
        ?> <?php if ($block->getHelper()->isCustomerReviewsActive()): ?>
        
            window.renderOptIn = function() 
            {
            	window.gapi.load('surveyoptin', function() 
            	{
            		window.gapi.surveyoptin.render
            		(
            			<?php echo $block->getHelper()->getCustomerReviewsPayload($block) ?>
            		);
            	});
            }
        
        <?php endif ?> <?php endif ?></script><?php /** * Apply initial bindings */ ?> <script data-ommit="true" nonce="<?php echo $block->generateNonce() ?>">AEC.Bind.apply(<?php echo $block->getHelper()->getInitialBinding() ?>)</script><?php /** * AdWords Conversion Tracking */ ?> <?php if ($block->getEnhancedConversionData()): ?> <script data-ommit="true" nonce="<?php echo $block->generateNonce() ?>">
	
    	<?php foreach ($block->getEnhancedConversionData() as $data): ?> (enhanced_conversion_data => 
    		{
    			AEC.CookieConsent.queue(() => 
        		{
            		window.enhanced_conversion_data = enhanced_conversion_data;
            		
        			dataLayer.push({ event: 'enhanced_conversion_data', eventVariable: enhanced_conversion_data });
        			
            	}).process();
            	
        	})(<?php echo json_encode($data) ?>);
    		
        	
    	<?php endforeach ?></script><?php endif ?> <?php if ($block->getHelper()->isAdwordsConversionTrackingActive(true) && $block->getOrders()):?> <?php if ($block->getHelper()->useAdwordsConversionTrackingStandard()): ?> <?php if ($block->getAdwords()->getGoogleConversionId()) : ?> <script data-ommit="true" nonce="<?php echo $block->generateNonce() ?>" src="//www.googleadservices.com/pagead/conversion.js"></script><?php foreach ($block->getOrders() as $order): ?> <?php $img_conversion = "//www.googleadservices.com/pagead/conversion/{$block->getAdwords()->getGoogleConversionId()}/?value={$block->getRevenue()}&label={$block->getAdwords()->getGoogleConversionLabel()}&oid={$order->getIncrementId()}&script=0" ?> <noscript><img height=1 width=1 border=0 src="<?php echo $img_conversion ?>"></noscript><?php endforeach ?> <?php endif ?> <?php elseif ($block->getHelper()->useAdwordsConversionTrackingGtag()): ?> <?php echo $block->getHelper()->getAdwordsConversionTrackingGtagSiteTag() ?> <?php foreach ($block->getOrders() as $order): ?> <script data-ommit="true" nonce="<?php echo $block->generateNonce() ?>">

				(conversion => 
				{
					document.addEventListener("DOMContentLoaded", () => 
					{	
						<?php if ($block->getEnhancedConversionData()): ?>

							gtag('set','user_data', <?php echo json_encode($block->getEnhancedConversionUserData()[$order->getId()], JSON_PRETTY_PRINT) ?>);

						<?php endif ?> if ('undefined' !== typeof gtag)
						{
							gtag('event', <?php echo json_encode($block->getHelper()->getAdwordsConversionTrackingGtagConvesionEventName())?>,  conversion);
						}
					});
					
				})(<?php echo $block->getHelper()->getAdwordsConversionTrackingGtagConvesionEvent($order)?>);</script><?php endforeach ?> <?php endif ?> <?php endif ?>