/home/bonphmya/liebeszauber-magie.de/wp-content/plugins/gtm-kit/src/js/woocommerce-checkout.js
if (document.readyState === 'loading') {
	document.addEventListener('DOMContentLoaded', gtmkitLoadCheckout);
} else {
	gtmkitLoadCheckout();
}

function gtmkitLoadCheckout() {
	if (window.gtmkit_data.wc.is_cart) gtmkitCart();
	if (window.gtmkit_data.wc.is_checkout) gtmkitCheckout();
}

function gtmkitCart() {
	document.addEventListener('click', function (e) {
		const eventTargetElement = e.target;
		if (
			!eventTargetElement ||
			!eventTargetElement.closest('[name=update_cart]')
		)
			return true;

		gtmkitCartQuantityChange();
	});

	document.addEventListener('keypress', function (e) {
		const eventTargetElement = e.target;
		if (
			!eventTargetElement ||
			!eventTargetElement.closest(
				'.woocommerce-cart-form input[type=number]'
			)
		)
			return true;

		gtmkitCartQuantityChange();
	});
}

function gtmkitCartQuantityChange() {
	const datalayerName = window.gtmkit_settings.datalayer_name;

	document
		.querySelectorAll('.product-quantity input.qty')
		.forEach(function (qtyElement) {
			const defaultValue = qtyElement.defaultValue;
			let currentValue = parseInt(qtyElement.value);
			if (isNaN(currentValue)) currentValue = defaultValue;

			if (defaultValue !== currentValue) {
				const cartItem = qtyElement.closest('.cart_item');
				const productData =
					cartItem && cartItem.querySelector('.remove');
				if (!productData) return;
				const itemData = JSON.parse(
					productData.getAttribute('data-gtmkit_product_data')
				);

				if (defaultValue < currentValue) {
					// quantity increase
					itemData.quantity = currentValue - defaultValue;

					window[datalayerName].push({ ecommerce: null });
					window[datalayerName].push({
						event: 'add_to_cart',
						ecommerce: {
							currency: window.gtmkit_data.wc.currency,
							value:
								itemData.price * (currentValue - defaultValue),
							items: [itemData],
						},
					});
				} else {
					// quantity decrease
					itemData.quantity = defaultValue - currentValue;

					window[datalayerName].push({ ecommerce: null });
					window[datalayerName].push({
						event: 'remove_from_cart',
						ecommerce: {
							currency: window.gtmkit_data.wc.currency,
							value:
								itemData.price * (defaultValue - currentValue),
							items: [itemData],
						},
					});
				}
			}
		});
}

function gtmkitCheckout() {
	if (
		window.gtmkit_settings.wc.add_shipping_info.config === 0 &&
		window.gtmkit_settings.wc.add_payment_info.config === 0
	)
		return;

	if (window.gtmkit_settings.wc.add_shipping_info.config === 2) {
		document.addEventListener('change', function (e) {
			const eventTargetElement = e.target;
			if (
				!eventTargetElement ||
				(!eventTargetElement.closest('input[name^=shipping_method]') &&
					!eventTargetElement.closest(
						'.wc-block-components-shipping-rates-control'
					))
			)
				return true;

			gtmkitShippingEvent();
		});
	}

	if (window.gtmkit_settings.wc.add_payment_info.config === 2) {
		document.addEventListener('change', function (e) {
			const eventTargetElement = e.target;
			if (
				!eventTargetElement ||
				(!eventTargetElement.closest('input[name=payment_method]') &&
					!eventTargetElement.closest(
						'.wc-block-checkout__payment-method'
					))
			)
				return true;

			gtmkitPaymentEvent();
		});
	}

	document.addEventListener('click', function (e) {
		const eventTargetElement = e.target.closest('button');

		if (!eventTargetElement) {
			return true;
		}

		if (
			eventTargetElement.classList.contains(
				'wc-block-components-checkout-place-order-button'
			) ||
			eventTargetElement.closest(
				'button[name=woocommerce_checkout_place_order]'
			)
		) {
			gtmkitShippingEvent();
			gtmkitPaymentEvent();
		} else {
			return true;
		}
	});
}

function gtmkitShippingEvent() {
	if (window.gtmkit_data.wc.add_shipping_info.fired === true) return;

	const datalayerName = window.gtmkit_settings.datalayer_name;

	let shippingElement;

	shippingElement = document.querySelector(
		'input[name^=shipping_method]:checked'
	);
	if (!shippingElement) {
		shippingElement = document.querySelector(
			'input[name^=shipping_method]'
		); // select the first shipping method
	}

	const shippingTier = shippingElement
		? shippingElement.value
		: window.gtmkit_settings.wc.text['shipping-tier-not-found'];

	const items = Object.values(window.gtmkit_data.wc.cart_items);

	window[datalayerName].push({ ecommerce: null });
	window[datalayerName].push({
		event: 'add_shipping_info',
		ecommerce: {
			currency: window.gtmkit_data.wc.currency,
			value: window.gtmkit_data.wc.cart_value,
			shippingTier,
			items: items,
		},
	});

	window.gtmkit_data.wc.add_shipping_info.fired = true;
}

function gtmkitPaymentEvent() {
	if (window.gtmkit_data.wc.add_payment_info.fired === true) return;

	let paymentElement;
	const datalayerName = window.gtmkit_settings.datalayer_name;

	paymentElement = document.querySelector('.payment_methods input:checked');
	if (!paymentElement) {
		paymentElement = document.querySelector('input[name^=payment_method]'); // select the first payment method
	}

	const paymentType = paymentElement
		? paymentElement.value
		: window.gtmkit_settings.wc.text['payment-method-not-found'];

	const items = Object.values(window.gtmkit_data.wc.cart_items);

	window[datalayerName].push({ ecommerce: null });
	window[datalayerName].push({
		event: 'add_payment_info',
		ecommerce: {
			currency: window.gtmkit_data.wc.currency,
			value: window.gtmkit_data.wc.cart_value,
			payment_type: paymentType,
			items: items,
		},
	});

	window.gtmkit_data.wc.add_payment_info.fired = true;
}