<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script type="text/javascript">
var mg_email = ""; // Email посетителя
var mgr_api = {};
var emailFound = false; // Флаг, указывающий на то, что email уже был найден
// Загрузка скрипта MGApi и авторизация
(function () {
var script = document.createElement('script');
var b = document.location.toString().toLowerCase();
script.src = "https://mailganer.com/jsapi/r/XXXXXXXXX?ref=" + document.referrer + "&url=" + b + "&nc=" + Math.random();
script.async = true;
script.onload = function () {
mgr_api = new MGApi();
mg_email = localStorage.getItem('mg_email') || ""; // Получение email из LocalStorage
if (mg_email) {
mgr_api.auth(mg_email);
console.log("Авторизация через MGApi вызвана с email из LocalStorage:", mg_email);
}
};
document.getElementsByTagName('head')[0].appendChild(script);
})();
$(document).ready(function() {
console.log("Document is ready");
// Функция для обработки и сохранения email
$(document).ready(function() {
console.log("Document is ready");
// Функция для обработки и сохранения email
function processFormData() {
var emailInput = $('input[type="email"]');
var currentEmail = emailInput.val().trim();
if (emailFound || currentEmail === "") {
console.log("Email не найден или уже обработан:", currentEmail);
return;
}
mg_email = currentEmail;
localStorage.setItem('mg_email', mg_email); // Сохранение email в LocalStorage
console.log("Email извлечен и сохранен в LocalStorage:", mg_email);
if (typeof mgr_api !== "undefined" && mg_email) {
mgr_api.auth(mg_email);
console.log("Авторизация через MGApi вызвана с email:", mg_email);
}
emailFound = true; // Устанавливаем флаг, что email найден
}
// Отслеживание изменений только в поле email
$('input[type="email"]').on('input change', function() {
emailFound = false;
processFormData();
});
// Настройка наблюдателя для отслеживания изменений только в input[type="email"]
var observer = new MutationObserver(function(mutationsList) {
mutationsList.forEach(function(mutation) {
if (mutation.target && mutation.target.type === "email") {
emailFound = false;
processFormData();
}
});
});
// Ограничиваем область наблюдения только на элементы input[type="email"]
$('input[type="email"]').each(function() {
observer.observe(this, {
attributes: true, // Только изменения атрибутов поля email
});
});
});
// Универсальная функция для получения data-product-uid
function getProductUid(element) {
var productContainer = $(element).closest('[data-product-uid]');
if (productContainer.length === 0) {
productContainer = $(element).closest('.t-rec').prevAll().find('[data-product-uid]');
}
if (productContainer.length === 0) {
productContainer = $(element).closest('.t-rec').nextAll().find('[data-product-uid]');
}
if (productContainer.length) {
return productContainer.attr('data-product-uid');
}
console.error("No product container found or UID is missing.");
return null;
}
// Сохраняем товары в LocalStorage
function saveProductToLocalStorage(productUid, productName, productPrice, productQuantity) {
var cart = JSON.parse(localStorage.getItem('cart')) || [];
var existingProduct = cart.find(function(item) {
return item.uid === productUid;
});
if (existingProduct) {
existingProduct.quantity += productQuantity;
existingProduct.price = productPrice * existingProduct.quantity;
} else {
cart.push({
uid: productUid,
name: productName,
price: productPrice * productQuantity,
quantity: productQuantity
});
}
localStorage.setItem('cart', JSON.stringify(cart));
console.log("Product added to cart:", { uid: productUid, name: productName, price: productPrice * productQuantity, quantity: productQuantity });
}
// Удаляем товары из LocalStorage
function removeProductFromLocalStorage(productUid) {
var cart = JSON.parse(localStorage.getItem('cart')) || [];
cart = cart.filter(function(item) {
return item.uid !== productUid;
});
localStorage.setItem('cart', JSON.stringify(cart));
console.log("Product removed from cart:", productUid);
}
// Логика отслеживания добавления товара
$('.js-store-prod-popup-buy-btn-txt').on('click', function() {
var button = $(this);
var productUid = getProductUid(button);
var productName = button.closest('.js-store-product').find('.js-store-prod-name').text();
var productPrice = parseFloat(button.closest('.js-store-product').find('.js-store-prod-price-val').text());
var productQuantity = parseInt(button.closest('.js-store-product').find('.js-store-prod-quantity').val()) || 1;
if (productUid) {
saveProductToLocalStorage(productUid, productName, productPrice, productQuantity);
alert('Товар добавлен в корзину!');
const mg_track_product = { id: productUid, email: mg_email }; // Добавляем email в объект события
var i = setInterval(function() {
if (typeof mgr_api !== 'undefined' && mgr_api !== null) {
clearInterval(i);
mgr_api.track("add_cart", mg_track_product); // Трекинг с email
console.log("Mailganer tracking: add_cart event sent with product UID and email:", mg_track_product);
}
}, 100);
} else {
console.error('Product UID not found.');
}
});
// Логика отслеживания удаления товара
$(document).on('click', '.t706__product-del', function() {
var button = $(this);
var productUid = getProductUid(button);
if (productUid) {
removeProductFromLocalStorage(productUid);
alert('Товар удален из корзины!');
const mg_track_product = { id: productUid, email: mg_email }; // Добавляем email в объект события
var i = setInterval(function() {
if (typeof mgr_api !== 'undefined' && mgr_api !== null) {
clearInterval(i);
mgr_api.track("remove_cart", mg_track_product); // Трекинг с email
console.log("Mailganer tracking: remove_cart event sent with product UID and email:", mg_track_product);
}
}, 100);
} else {
console.error("Product UID не найден для удаления.");
}
});
// Отправка данных заказа и трекинг события покупки
function sendOrderData() {
var cart = JSON.parse(localStorage.getItem('cart')) || [];
if (cart.length === 0) {
console.error("Корзина пуста, отправка не будет выполнена.");
return;
}
var orderId = Math.floor(Math.random() * 1000000).toString();
var timestamp = Math.floor(Date.now() / 1000);
var total = cart.reduce(function(sum, item) {
return sum + item.price;
}, 0.0);
var orderData = {
api_key: "XXX",
source_id: "57662",
orders: [
{
id: orderId,
status: "Новый",
date: timestamp.toString(),
email: mg_email, // Передача email
channel: "website",
value: {
total: total.toFixed(2)
},
items: []
}
]
};
var uniqueItems = {};
cart.forEach(function(item) {
if (uniqueItems[item.uid]) {
uniqueItems[item.uid].quantity += item.quantity;
uniqueItems[item.uid].price = (uniqueItems[item.uid].price / (uniqueItems[item.uid].quantity - item.quantity)) + item.price;
} else {
uniqueItems[item.uid] = {
id: item.uid,
price: item.price,
quantity: item.quantity
};
}
});
for (var uid in uniqueItems) {
orderData.orders[0].items.push(uniqueItems[uid]);
}
console.log("Prepared order data for API:", JSON.stringify(orderData, null, 2));
$.ajax({
url: "https://mailganer.com/api/v1/orders/",
method: "POST",
contentType: "application/json",
data: JSON.stringify(orderData),
success: function(response) {
console.log("Заказ успешно отправлен!", response);
var i = setInterval(function() {
if (typeof mgr_api !== 'undefined' && mgr_api !== null) {
clearInterval(i);
mgr_api.track("purchase", { email: mg_email }); // Трекинг события "purchase" с email
console.log("Mailganer tracking: purchase event sent with email:", mg_email);
}
}, 100);
},
error: function(error) {
console.error("Ошибка отправки данных заказа:", error);
}
});
}
});
</script>