<iframe id="fti" src="https://filetoinbox.com/sp/53404419172ba8704742d731c6fb58c1" style="border: 0; width: 100%;" allowtransparency="true"></iframe>
<script>// <![CDATA[
const allowedOrigins = [
'https://filetoinbox.com',
'https://staging.filetoinbox.com',
'https://filetoinbox.lan',
'https://2020filetoinbox.lan',
];

const CrossOriginLocalStorage = function(currentWindow, iframe, allowedOrigins, onMessage) {
this.allowedOrigins = allowedOrigins;

let childWindow;
// some browser (don't remember which one) throw exception when you try to access
// contentWindow for the first time, it works when you do that second time
try {
childWindow = iframe.contentWindow;
} catch(e) {
childWindow = iframe.contentWindow;
}

currentWindow.onmessage = (event) => {
if (false && !this.isAllowedOrigin(event.origin)) {
return;
}

try {
var jsonData = JSON.parse(event.data)
} catch (e) {
return;
}

return onMessage(jsonData, event);
};

this.isAllowedOrigin = (origin) => {
return this.allowedOrigins.includes(origin);
}

this.getData = (key) => {
const messageData = {
key: key,
method: 'get',
}
this.postMessage(messageData);
}

this.setData = (key, data) => {
const messageData = {
key: key,
method: 'set',
data: data,
}
this.postMessage(messageData);
}

this.postMessage = (messageData) => {
childWindow.postMessage(JSON.stringify(messageData), '*');
}
};

function ftiCheckSessionId()
{
const onMessage = (payload, event) => {
const data = payload.data;
switch (payload.method) {
case 'regenerateSessionId':
localStorage.removeItem(localStorageKey);
ftiCheckSessionId();
break;
case 'storage#get':
console.log('parent: message data', payload);
sessionId = data;
console.log('parent: sessionId from cross storage: ' + sessionId);
localStorage.setItem(localStorageKey, sessionId);
break;
default:
console.error('parent: Unknown method "' + payload.method + '"', payload);
}
};

var localStorageKey = 'ftiSessionId';


const iframe = document.getElementById('fti');
const cross = new CrossOriginLocalStorage(window, iframe, allowedOrigins, onMessage);
var sessionId = localStorage.getItem(localStorageKey);

console.log('parent: cross set data');
console.log('parent: sessionId from local storage: ' + sessionId);

if(sessionId !== null && typeof sessionId !== 'undefined' && sessionId.length > 0)
{
cross.setData(localStorageKey, sessionId);
} else
{
cross.getData(localStorageKey);
}
}

function ftiOnLoad() {
console.log('parent: window on load');


ftiCheckSessionId();
};


window.addEventListener ?
window.addEventListener("load",ftiOnLoad,false) :
window.attachEvent && window.attachEvent("onload",ftiOnLoad);

// ]]></script>