(function () {
var REGION_DATA = {
kz: { price: 4990, old: 20000, cur: "KZT", popup: "paynow-kzt", methods: ["kaspi", "tiptop"], default: "kaspi" },
uz: { price: 69000, old: 250000, cur: "UZS", popup: "paynow-uzs", methods: ["uzcard", "tiptop"], default: "uzcard" },
ae: { price: 69, old: 250, cur: "AED", popup: "paynow-aed", methods: ["tiptop"], default: "tiptop" },
us: { price: 29, old: 100, cur: "USD", popup: "paynow-usd", methods: ["tiptop"], default: "tiptop" },
kr: { price: 30000, old: 100000, cur: "KRW", popup: "paynow-krw", methods: ["tiptop"], default: "tiptop" },
eu: { price: 29, old: 100, cur: "USD", popup: "paynow-usd", methods: ["tiptop"], default: "tiptop" },
row:{ price: 29, old: 100, cur: "USD", popup: "paynow-row", methods: ["tiptop"], default: "tiptop" }
};
var urlParams = new URLSearchParams(window.location.search);
var regionFromUrl = urlParams.get('region') ? urlParams.get('region').toLowerCase() : null;
var state = {
activeRegion: (regionFromUrl && REGION_DATA[regionFromUrl]) ? regionFromUrl : "row",
isForcedByUrl: !!(regionFromUrl && REGION_DATA[regionFromUrl]),
crmCountry: "",
crmCity: "",
userInteracted: false,
hasAutoSelected: false,
isApplying: false
};
function formatInt(n) { return new Intl.NumberFormat("ru-RU").format(Math.round(n)); }
function hideOriginal(el) { if (el) el.style.display = "none"; }
function ensureOverlay(container, text, key) {
if (!container) return;
var selector = '.region-price-overlay[data-key="' + key + '"]';
var overlay = container.querySelector(selector);
if (!overlay) {
overlay = document.createElement("span");
overlay.className = "region-price-overlay";
overlay.setAttribute("data-key", key);
container.appendChild(overlay);
}
overlay.textContent = text;
}
async function detectLocation() {
try {
const res = await fetch('https://get.geojs.io/v1/ip/geo.json');
const data = await res.json();
if (data.country) {
state.crmCountry = data.country;
state.crmCity = data.city || "";
if (!state.isForcedByUrl && !state.userInteracted) {
var code = data.country_code ? data.country_code.toLowerCase() : "row";
if (REGION_DATA[code]) state.activeRegion = code;
}
applyChanges();
}
} catch (e) { console.log("GeoIP error"); }
}
function applyChanges() {
var d = REGION_DATA[state.activeRegion] || REGION_DATA.row;
var curText = formatInt(d.price) + " " + d.cur;
var oldText = formatInt(d.old) + " " + d.cur;
// CRM Inputs
var inputCountry = document.querySelector('input[name="user_country"]');
var inputCity = document.querySelector('input[name="user_city"]');
if (inputCountry && state.crmCountry) inputCountry.value = state.crmCountry;
if (inputCity && state.crmCity) inputCity.value = state.crmCity;
// Links and Prices
document.querySelectorAll('a[href^="#popup:paynow"]').forEach(a => a.setAttribute("href", "#popup:" + d.popup));
// Используем стандартные селекторы Tilda для цен
document.querySelectorAll(".t766__price, .t1049__price").forEach(b => {
var val = b.querySelector(".t766__price-value, .t1049__price-value");
var curr = b.querySelector(".t766__price-currency, .t1049__price-currency");
hideOriginal(val); hideOriginal(curr);
ensureOverlay(b, curText, "current");
});
// Cart Logic
var cart = document.querySelector(".t706__cartwin-content");
if (cart) {
cart.querySelectorAll(".t706__cartwin-prodamount, .t706__cartwin-totalamount").forEach(b => {
var p = b.querySelector(".t706__cartwin-prodamount-price, .t706__cartwin-totalamount-price");
var c = b.querySelector(".t706__cartwin-prodamount-currency, .t706__cartwin-totalamount-currency");
hideOriginal(p); hideOriginal(c);
ensureOverlay(b, curText, "amount");
});
// ИСПРАВЛЕНИЕ PIXEL: Вместо прямого fbq шлем событие в GTM
var submitBtn = cart.querySelector('button[type="submit"]');
if (submitBtn && !submitBtn.dataset.pixelTracked) {
submitBtn.addEventListener('click', function() {
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
'event': 'purchase', // Ваш триггер в GTM должен слушать это
'purchase_value': d.price,
'purchase_currency': d.cur
});
});
submitBtn.dataset.pixelTracked = "true";
}
// Payment Methods
var paymentWrapper = cart.querySelector(".t-radio__wrapper-payment");
if (paymentWrapper) {
var preferredRadio = null;
paymentWrapper.querySelectorAll("label.t-radio__control").forEach(lbl => {
var txt = lbl.textContent.toLowerCase();
var input = lbl.querySelector("input");
var sys = (input?.getAttribute("data-payment-variant-system") || "").toLowerCase();
var type = null;
if (sys === "banktransfer" || txt.includes("kaspi")) type = "kaspi";
else if (sys === "cash" || txt.includes("uzcard")) type = "uzcard";
else if (sys === "cloudpayments" || txt.includes("tip top")) type = "tiptop";
if (type) {
var isVisible = d.methods.includes(type);
lbl.style.display = isVisible ? "block" : "none";
if (isVisible && type === d.default) preferredRadio = input;
}
});
if (!state.userInteracted && !state.hasAutoSelected && preferredRadio) {
preferredRadio.checked = true;
// Исправленный вызов события изменения
preferredRadio.dispatchEvent(new Event('change', { bubbles: true }));
state.hasAutoSelected = true;
}
}
}
}
applyChanges();
detectLocation();
var observer = new MutationObserver(() => {
if (state.isApplying) return;
state.isApplying = true;
applyChanges();
setTimeout(() => state.isApplying = false, 200);
});
observer.observe(document.body, { childList: true, subtree: true });
})();