Marketing digital diferente
(function(window, undefined){ const segmentsString = 'santo-pitote/events'; const loaderName = ''; const elementId = 'fourvenues-iframe'; const hide = ''; const theme = ''; const backarrow = ''; const services = ''; const supplements_ids = ''; const url = 'https://www.fourvenues.com/iframe';const assets = 'https://www.fourvenues.com/assets'; function init() { if (!document.getElementById(elementId)) { document.write('
'); } var script = window.document.createElement("script"); script.id = 'fv_parent_script'; script.src = assets + '/iframe/?s=parent'; script.type = "text/javascript"; if (script.readyState) { //IE script.onreadystatechange = function () { if (script.readyState == "loaded" || script.readyState == "complete") { script.onreadystatechange = null; createIframe(); } }; } else { //Others script.onload = function () { createIframe(); manageCookies(); manageMessages(); }; } window.document.getElementsByTagName("head")[0].appendChild(script); } function createIframe() { const element = document.getElementById(elementId); element.style.width = '100%'; element.style.minHeight = '0px'; element.style.position = 'relative'; element.style.overflow = 'hidden'; let queryParams = ''; queryParams += theme ? (queryParams ? '&' : '?') + 'theme=' + theme : ''; queryParams += hide ? (queryParams ? '&' : '?') + 'hide=' + hide : ''; queryParams += backarrow ? (queryParams ? '&' : '?') + 'backarrow=' + backarrow : ''; queryParams += services ? (queryParams ? '&' : '?') + 'services=' + services : ''; queryParams += supplements_ids ? (queryParams ? '&' : '?') + 'supplements_ids=' + supplements_ids : ''; const anchorElement = document.createElement('div'); anchorElement.id = `${elementId}-anchor`; anchorElement.style.width = '100%'; anchorElement.style.height = '0px'; anchorElement.style.border = '0'; anchorElement.style.position = 'absolute'; anchorElement.style.top = '-100px'; element.appendChild(anchorElement); let segmentsStringFromHash = ''; let subRoute = ''; if (window.location.hash) { const segments = ( segmentsString.split('/')[0] + "/" + window.location.hash.substring(1) ).split('/'); if ( segments[1].indexOf('calendar') === 0 || segments[1].indexOf('events') === 0 || segments[1].indexOf('passes') === 0 ) { subRoute = segments[1]; segmentsStringFromHash = segments.join('/'); } } const iframeElement = document.createElement('iframe'); iframeElement.id = 'iframeFourvenues' + new Date().getTime(); segmentsStringFromHash = removeQueryParam(segmentsStringFromHash, 'theme'); iframeElement.src = `${url}/${segmentsStringFromHash || segmentsString}${queryParams}`; iframeElement.width = '100%'; iframeElement.style.minHeight = '0px'; iframeElement.style.border = '0'; element.appendChild(iframeElement); if (subRoute !== 'passes') { window.fourvenuesChildIframe = window.seamless( document.getElementById(iframeElement.id), { loading: '', spinner: '', showLoadingIndicator: false, fallback: false, } ); window.fourvenuesChildIframe.receive(function (data, event) { processChildMessage(data); }); } window.addEventListener('message', async (message) => { const data = (message || {}).data; if (data.key === "currentUrlCli" || data.key === "addHeight") { data.iframeElement = iframeElement.id; } processChildMessage(data); }, false ); const viewportElementContent = 'width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no, shrink-to-fit=0, viewport-fit=cover'; if (document.querySelectorAll('meta[name=viewport]').length === 0) { const viewportElement = document.createElement('meta'); viewportElement.name = 'viewport'; viewportElement.content = viewportElementContent; document.querySelectorAll('head')[0].appendChild(viewportElement); } else { const viewportElement = document.querySelectorAll('meta[name=viewport]')[0]; viewportElement.content = viewportElementContent; } } function manageMessages() { window.fvMessages = { addListener: (key, callback, id) => { if (!id) { id = new Date().getTime(); } window.fvMessages.listeners.push({ key, callback, id }); }, removeListener: (id) => { window.fvMessages.listeners = window.fvMessages.listeners.filter(listener => listener.id !== id); }, removeAllListeners: () => { window.fvMessages.listeners.forEach(listener => { window.fvMessages.removeListener(listener.id); }); }, insertStyle: (css, id) => { if (!id) { id = new Date().getTime(); } window.fvMessages.stylesIds.push(id); const style = document.createElement('style'); style.id = id; style.appendChild(document.createTextNode(css)); document.head.appendChild(style); }, removeStyle: (idToRemove) => { const style = document.getElementById(idToRemove); if (style) { document.head.removeChild(style); } window.fvMessages.stylesIds = window.fvMessages.stylesIds.filter(id => id !== idToRemove); }, removeAllStyles: () => { window.fvMessages.stylesIds.forEach(id => { window.fvMessages.removeStyle(id); }); }, insertScript: (code, id) => { if (!id) { id = new Date().getTime(); } window.fvMessages.scriptsIds.push(id); const script = document.createElement('script'); script.id = id; script.type = 'text/javascript'; script.appendChild(document.createTextNode(code)); document.head.appendChild(script); }, removeScript: (idToRemove) => { const script = document.getElementById(idToRemove); if (script) { document.head.removeChild(script); } window.fvMessages.scriptsIds = window.fvMessages.scriptsIds.filter(id => id !== idToRemove); }, removeAllScripts: () => { window.fvMessages.scriptsIds.forEach(id => { window.fvMessages.removeScript(id); }); }, listeners: [], stylesIds: [], scriptsIds: [] } } function manageCookies() { window.fvCookies = { enableAnalytics: () => { const cookies = JSON.parse(localStorage.getItem('fv_cookies')) || {}; cookies.analytics = true; localStorage.setItem('fv_cookies', JSON.stringify(cookies)); }, disableAnalytics: () => { const cookies = JSON.parse(localStorage.getItem('fv_cookies')) || {}; cookies.analytics = false; localStorage.setItem('fv_cookies', JSON.stringify(cookies)); } } } function removeQueryParam(url, paramToRemove) { let [baseUrl, queryString] = url.split("?"); if (!queryString) return url; let params = new URLSearchParams(queryString); params.delete(paramToRemove); return params.toString() ? `${baseUrl}?${params.toString()}` : baseUrl; } function processChildMessage(data) { if (data) { if (data.key === 'toTop') { const element = document.getElementById(`${elementId}-anchor`); element.scrollIntoView({ behavior: 'smooth', block: 'start' }); return; } if (data.key === 'navigate') { if (data.segments) { const auxiliarSegments = data.segments.slice(2); window.location.hash = auxiliarSegments.join("/"); } emitChildMessageToListeners(data); return; } if (data.key === 'openUrl') { if (data.target === '_blank') { window.open(data.url, '_blank'); return; } window.location.href = data.url; return; } if (data.key === 'currentUrl') { window.fourvenuesChildIframe.send({ key: 'currentUrl', url: window.location.href.toString() }); return; } if (data.key === 'currentUrlCli') { var iframe = document.getElementById(data.iframeElement); var message = { location: window.location.href.toString() }; iframe.contentWindow.postMessage(JSON.stringify(message), '*'); return; } if (data.key === 'addHeight') { const element = document.getElementById(data.iframeElement); if (data.height) { element.style.height = data.height; } return; } if (data.key === 'track') { trackEvent(data.containerOrPixelId, data.eventObject); emitChildMessageToListeners(data); return; } if (data.key === 'getCookiesSettings') { const cookies = JSON.parse(localStorage.getItem('fv_cookies')) || {}; window.fourvenuesChildIframe.send({ key: 'getCookiesSettings', value: cookies }); return; } if (data.key === 'setCookie') { if (data.cookie) { document.cookie = `guest-token=${data.cookie}` } return; } if (data.key === 'getFBC') { getFBC().then((value) => { window.fourvenuesChildIframe.send({ key: 'getFBC', value: value || '' }); return; }); } if (data.key === 'getFBP') { getFBP().then((value) => { window.fourvenuesChildIframe.send({ key: 'getFBP', value: value || '' }); return; }); } if (data.key === 'getGoogleAdsCookie') { getGoogleAdsCookie().then((value)=> { window.fourvenuesChildIframe.send({ key: 'getGoogleAdsCookie', value: value || '' }); return; }); } if (data.key) { emitChildMessageToListeners(data); return; } } } function emitChildMessageToListeners(data) { window.fvMessages.listeners.forEach(listener => { if (listener.key === data.key) { listener.callback(data.value); } }); } // TRACKING function getFBC() { return new Promise((resolve) => { addTrackingService().then(() => { if (window.fvTrackingService) { resolve(window.fvTrackingService.getFBC()); } else { setTimeout(async () => { resolve(await this.getFBC()); }, 500); } }); }); } function getFBP() { return new Promise((resolve) => { addTrackingService().then(() => { if (window.fvTrackingService) { resolve(window.fvTrackingService.getFBP()); } else { setTimeout(async () => { resolve(await this.getFBP()); }, 500); } }); }); } function getGoogleAdsCookie() { return new Promise((resolve) => { addTrackingService().then(() => { if (window.fvTrackingService) { resolve(window.fvTrackingService.getGoogleAdsCookie()); } else { setTimeout(async () => { resolve(await this.getGoogleAdsCookie()); }, 500); } }); }); } async function trackEvent(containerOrPixelId, eventObject) { await addTrackingService(); if (window.fvTrackingService) { window.fvTrackingService.track(containerOrPixelId, eventObject); } else { setTimeout(async () => { trackEvent(containerOrPixelId, eventObject); }, 500); } } function addTrackingService() { const isScriptInserted = !!document.getElementById('fv_tracking_service'); const isScriptLoaded = !!document.getElementById('fv_tracking_service') ?.loaded; return new Promise(async (resolve, _) => { if (isScriptInserted) { if (!isScriptLoaded) { setTimeout(async () => { resolve(addTrackingService()); }, 500); } else { resolve(true); } return; } var script = window.document.createElement('script'); script.id = 'fv_tracking_service'; script.src = assets + '/tracking/'; script.type = 'text/javascript'; if (script.readyState) { // IE script.onreadystatechange = () => { if (script.readyState == "loaded" || script.readyState == "complete") { script.onreadystatechange = null; script.loaded = true; resolve(true); } }; } else { // Others script.onload = () => { script.loaded = true; resolve(true); }; } window.document.getElementsByTagName("head")[0].appendChild(script); }); } if (!loaderName) { init(); } else { window[loaderName] = function () { init(); }; } }(window))