(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))
