var Seguimiento = (function () { var email = ""; var firstname = ""; var number = ""; function verificarInput(input) { var value = input.value; if (emailRegex.test(value)) { localStorage.setItem("capturedEmail", value); } else if (!isNaN(value) && value > 0) { localStorage.setItem("capturedNumber", value); } else if (/^[A-Za-z]+(\s[A-Za-z]+){1,9}$/.test(value)) { localStorage.setItem("capturedName", value); } else if (/^[a-zA-Z\s]+$/.test(value)) { if (localStorage.getItem("capturedName") === null && !/^[A-Za-z]+(\s[A-Za-z]+){1,9}$/.test(value)) { localStorage.setItem("capturedName", value); } } } function manejarCambiosEnDOM(mutationsList) { for (var mutation of mutationsList) { if (mutation.type === `childList` && mutation.addedNodes.length > 0) { mutation.addedNodes.forEach(function (addedNode) { if (addedNode instanceof HTMLElement) { var inputsNuevos = addedNode.querySelectorAll(`input`); inputsNuevos.forEach(function (nuevoInput) { nuevoInput.addEventListener(`input`, function () { verificarInput(nuevoInput); }); }); addedNode.addEventListener(`click`, function (event) { if (event.target.tagName === `BUTTON`) { TrackEvent(`CLICK`) } }); } }); } } } function observarCambiosEnDOM() { var observer = new MutationObserver(manejarCambiosEnDOM); var config = {attributes: false, childList: true, subtree: true}; observer.observe(document.documentElement, config); } if (localStorage.getItem("capturedNumber") !== null && localStorage.getItem("capturedNumber") !== "") { number = localStorage.getItem("capturedNumber"); } if (localStorage.getItem("capturedName") !== null && localStorage.getItem("capturedName") !== "") { firstname = localStorage.getItem("capturedName"); } var emailLocal = localStorage.getItem("capturedEmail"); var emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/; if (emailRegex.test(emailLocal)) { email = emailLocal; } async function TrackEvent(e) { const paramts = window.location.search; const urlParams = new URLSearchParams(paramts); var responseIP = await fetch("https://api.ipify.org/?format=json"); var IP = await responseIP.json(); const form = document.querySelector("form"); const inputs = document.getElementsByTagName("input"); var url = window.location.href; var event_type_name = ""; var invitee_full_name = ""; var invitee_email = ""; var event_start_time = ""; var price = 0.0; var ts = ""; var ct = ""; var fbc_id = 0; var utm_campaign = ""; var name = ["Firstname", "firstname", "first_name", "First_name", "name", "Name", "nombre", "Nombre", "Nombre_Completo", "nombre_completo", "Nombre Completo", "nombre completo", "Ingresa tu Nombre:", "Ingresa tu Primer Nombre:"]; var objmail = ["Email", "email", "Mail", "mail", "Tu mejor Correo", "Ingresa tu mejor Correo", "Correo", "correo", "CorreoElectronico", "correoelectronico", "Correo Electronico", "correo electronico", "Ingresa tu Correo Electronico:"]; var objphone = ["Telefo", "telefono", "Phone", "phone", "Telephone", "telephone", "Celular", "celular"]; var checkout = ["price", "amount", "value", "total"]; var d = []; var device = ""; if (urlParams.has("fbc_id")) { ts = "Facebook ADS"; fbc_id = urlParams.get("fbc_id"); } if (urlParams.has("fbclid")) { ts = "Facebook ADS"; } if (urlParams.has("gclid")) { ts = "Google ADS"; } if (urlParams.has("ts")) { ts = urlParams.get("ts"); } if (urlParams.has("ct")) { ct = urlParams.get("ct"); } if (urlParams.has("utm_campaign")) { utm_campaign = urlParams.get("utm_campaign"); } if (urlParams.has("event_type_name")) { event_type_name = urlParams.get("event_type_name"); } if (urlParams.has("invitee_full_name")) { invitee_full_name = urlParams.get("invitee_full_name"); } if (urlParams.has("invitee_email")) { invitee_email = urlParams.get("invitee_email"); } if (urlParams.has("event_start_time")) { event_start_time = urlParams.get("event_start_time"); } var module = { options: [], header: [navigator.platform, navigator.userAgent, navigator.appVersion, navigator.vendor, window.opera], dataos: [{name: "Windows Phone", value: "Windows Phone", version: "OS"}, { name: "Windows", value: "Win", version: "NT" }, {name: "iPhone", value: "iPhone", version: "OS"}, { name: "iPad", value: "iPad", version: "OS" }, {name: "Kindle", value: "Silk", version: "Silk"}, { name: "Android", value: "Android", version: "Android" }, {name: "PlayBook", value: "PlayBook", version: "OS"}, { name: "BlackBerry", value: "BlackBerry", version: "/" }, {name: "Macintosh", value: "Mac", version: "OS X"}, { name: "Linux", value: "Linux", version: "rv" }, {name: "Palm", value: "Palm", version: "PalmOS"}], databrowser: [{name: "Chrome", value: "Chrome", version: "Chrome"}, { name: "Firefox", value: "Firefox", version: "Firefox" }, {name: "Safari", value: "Safari", version: "Version"}, { name: "Internet Explorer", value: "MSIE", version: "MSIE" }, {name: "Opera", value: "Opera", version: "Opera"}, { name: "BlackBerry", value: "CLDC", version: "CLDC" }, {name: "Mozilla", value: "Mozilla", version: "Mozilla"}], init: function () { var agent = this.header.join(" "), os = this.matchItem(agent, this.dataos), browser = this.matchItem(agent, this.databrowser); return {os: os, browser: browser}; }, matchItem: function (string, data) { var i = 0, j = 0, html = "", regex, regexv, match, matches, version; for (i = 0; i < data.length; i += 1) { regex = new RegExp(data[i].value, "i"); match = regex.test(string); if (match) { regexv = new RegExp(data[i].version + "[- /:;]([\d._]+)", "i"); matches = string.match(regexv); version = ""; if (matches) { if (matches[1]) { matches = matches[1]; } } if (matches) { matches = matches.split(/[._]+/); for (j = 0; j < matches.length; j += 1) { if (j === 0) { version += matches[j] + "."; } else { version += matches[j]; } } } else { version = "0"; } return {name: data[i].name, version: parseFloat(version)}; } } return {name: "unknown", version: 0}; } }; const today = new Date().toISOString(); var date = today; d = module.init(); device = d.os.name + " " + d.os.version + " / " + d.browser.name + " " + d.browser.version; var tRoal = new XMLHttpRequest(); if (firstname === "") { for (var j = 0; j < name.length; j++) { if (urlParams.has(name[j])) { firstname = urlParams.get(name[j]); } } } if (email === "") { for (var j = 0; j < objmail.length; j++) { if (urlParams.has(objmail[j])) { email = urlParams.get(objmail[j]); } } } if (number === "") { for (var j = 0; j < objphone.length; j++) { if (urlParams.has(objphone[j])) { number = urlParams.get(objphone[j]); } } } if (price === 0.0) { for (var j = 0; j < checkout.length; j++) { if (urlParams.has(checkout[j])) { price = urlParams.get(checkout[j]); } } } if (urlParams.has("event")) { var tRoal1 = new XMLHttpRequest(); tRoal1.open("GET", "https://api-roalytics.herokuapp.com/tracking?traffic_source_name=Event register&device=" + device + "&traffic_source_ip=" + IP.ip + "&funnel_id=" + funnel + "&utm_source=" + window.location.search + "&utm_campaign=" + utm_campaign + "&event_name=" + urlParams.get("event") + "&step_url=" + window.location.pathname + "&email=" + email + "&phone=" + number + "&ts=" + ts + "&name=" + firstname + "&price=" + price + "&date=" + date + "&event_type_name=" + event_type_name + "&invitee_full_name=" + invitee_full_name + "&event_start_time=" + event_start_time + "&invitee_email=" + invitee_email + "&fbc_id=" + fbc_id + "&ct=" + ct + "&url=" + url.split("&")); tRoal1.send(); } else { tRoal.open("GET", "https://api-roalytics.herokuapp.com/tracking?traffic_source_name=Event register&device=" + device + "&traffic_source_ip=" + IP.ip + "&funnel_id=" + funnel + "&utm_source=" + window.location.search + "&utm_campaign=" + utm_campaign + "&event_name=" + e + "&step_url=" + window.location.pathname + "&email=" + email + "&phone=" + number + "&ts=" + ts + "&name=" + firstname + "&price=" + price + "&date=" + date + "&event_type_name=" + event_type_name + "&invitee_full_name=" + invitee_full_name + "&event_start_time=" + event_start_time + "&invitee_email=" + invitee_email + "&fbc_id=" + fbc_id + "&ct=" + ct + "&url=" + url.split("&")); tRoal.send(); } } function iniciarSeguimiento() { console.log(`Seguimiento Roa iniciado`); var inputs = document.querySelectorAll(`input`); inputs.forEach(function (input) { input.addEventListener(`input`, function () { verificarInput(input); }); }); observarCambiosEnDOM(); TrackEvent("PAGEVIEW"); } function detenerSeguimiento() { console.log("Seguimiento detenido."); } return { iniciar: iniciarSeguimiento, detener: detenerSeguimiento }; })(); Seguimiento.iniciar();