(function (d, w) {

    var iframe = d.createElement('iframe');
    iframe.style = "position: fixed; bottom: 10px; right: 10px; border: none; z-index: 999999;";
    iframe.id = "container-frame";
    iframe.title = "Need Help?";
    iframe.sandbox = "allow-scripts allow-same-origin allow-popups allow-forms";
    iframe.src = "https://selfservice.lokulus.com/selfservice/api/content/main?v=170798948e85dcea643e0b5b3406e6c81a76daba&instanceId=17ba1e25-eb1b-4dd6-8345-97f2db1f91ba";
    iframe.style.visibility = "hidden";
    iframe.onload = (e) => e.currentTarget.style.visibility = "visible";
    d.body.appendChild(iframe);
    iframe.height = "75px";
    iframe.width = "75px";
    w.addEventListener("message", (event) => {
        var container;
        switch(event.data.name){
            case "LOKULUS_ss_checksize":
                container = document.getElementById("container-frame");
                var width = window.innerWidth;
                if (width < 576) {
                    event.source.postMessage({ name : 'LOKULUS_Framesize', body:{ fullscreen: true }}, event.origin);
                    container.height = "100%";
                    container.width = "100%";
                    container.style.bottom = "0";
                    container.style.right = "0";
                } else {
                    event.source.postMessage({ name : 'LOKULUS_Framesize', body:{ fullscreen: false }}, event.origin);
                    container.height = "720px";
                    container.width = "400px";
                    container.style.bottom = "10px";
                    container.style.right = "10px";
                }
                break;
            case "LOKULUS_ss_minimize":
                container = document.getElementById("container-frame");
                container.height = "75px";
                container.width = "75px";
                container.style.bottom = "10px";
                container.style.right = "10px";
                break;
            case "LOKULUS_App_Ready":
                if(event.data.app ==='webchat'){
                    if(event.origin !== "https://selfservice.lokulus.com") return;
                }
                if(event.data.app ==='contactus'){
                    if(event.origin !== "https://forms.lokulus.com") return;
                }
                
                event.source.postMessage({ name : 'LOKULUS_Bootstrap', body:{ url: location.href }}, event.origin);
                break;
            case "LOKULUS_App_Storage":
                if(event.data.payload.action === 'get'){
                    event.source.postMessage({ name: event.data.name, payload: {
                        action: 'response',
                        key: event.data.payload.key,
                        value: window.localStorage.getItem(event.data.payload.key)
                    }}, event.origin);
                }
                if(event.data.payload.action === 'set'){
                    window.localStorage.setItem(event.data.payload.key, event.data.payload.value);
                    if(event.data.payload.respond){
                        event.source.postMessage({ name: event.data.name, payload: {
                            action: 'response',
                            key: event.data.payload.key,
                            value: true
                        }}, event.origin);
                    }
                }
                if(event.data.payload.action === 'delete'){
                    let deleteKey;
                    if(event.data.payload.target){
                        for(var key in window.localStorage){
                            if(key.indexOf(event.data.payload.target) === 0){
                                window.localStorage.removeItem(key);
                            }
                        }
                        deleteKey = event.data.payload.target;
                    }
                    else if(Array.isArray(event.data.payload.key)){
                        event.data.payload.key.forEach(key => {
                            window.localStorage.removeItem(key);
                        });
    
                        deleteKey = event.data.payload.key.join('_');
                    }
                    event.source.postMessage({ name: event.data.name, payload: {
                        action: 'response',
                        key: deleteKey,
                        value: true
                    }}, event.origin);
                }
                break;
            default: // do nothing
        }

    }, false);
    w.addEventListener("storage", (e) => {
        if(e.key === 'lokulus-ss-notifications'){
            //container-frame
            iframe.contentWindow.postMessage({ name: 'LOKULUS_App_Storage', payload: { key: e.key, value: e.newValue, action: 'update'}},'*');
        }
    }, false);
})(document, window);