/*
 * Developed as part of SM-6273 - Integrate with Connect AI Support Assistant for custom UI
 * */
var currentPageUrl = window.location.hostname;
var baseURL;
var aiseraBotLaunchButton = false;

window.aisera_bot = {};
window.aisera_bot.url = window.location.href;
var s;
var botLoaded = false;
var isArticleDetailPage = (window.location.href.indexOf("/s/article/") !== -1);
var aiseraBotLaunchButton = false;

if (currentPageUrl.includes("gslint") || currentPageUrl.includes("gslqa") || currentPageUrl.includes("gsluat")) {
    baseURL = "https://apigw-test.vmware.com/uat2/v1/m4/api/connectai";
}
else if (currentPageUrl.includes("gslstage")) {
    baseURL = "https://apigw-test.vmware.com/stg/v1/m4/api/connectai";
}
else {
    baseURL = "https://apigw.vmware.com/v1/m4/api/connectai";
}
window.vaData = {
    userInfo: {
        name: "",
        email: "",
        locale: "",
        company: "N/A",
    },
    contextInfo: generateContextInfo(),
    baseUrl: baseURL,
    integrationId: "ab57fd0432e25d5b3013133a1c910d56"
};


// Event listner for VA refresh token, on event fire get the token generate/refresh and save into sessionStorage
document.addEventListener("vaRefreshToken", (event) => {
    vaAuthToken();
});

function vaAuthToken(jwtToken) {
    const apiUrl = "/services/apexrest/ConnectAI/";
    const httpOptions = {
        method: 'GET'
    };
    fetch(apiUrl, httpOptions)
    .then(response => response.json())
    .then(data => {
        let response = JSON.parse(data);
        sessionStorage.setItem('vaAuthToken', response.access_token);
        document.dispatchEvent(new CustomEvent('vaTokenUpdated', { detail: { data: true } }));
    })
    .catch((error) => { console.error('Error:', error) });
}
//SM-6266 Adobe analytics tracking: START
document.addEventListener("onOpen", (event) => {
    if (aiseraBotLaunchButton) {
        aiseraBotLaunchButton = false;
        return;
    }
    if (addCTracking !== null) {
        addCTracking("AISERA BOT: OPENED");
    }
});
document.addEventListener("onClose", (event) => {
    addCTracking("AISERA BOT: CLOSED");
});
document.addEventListener("onMinimise", (event) => {
    addCTracking("AISERA BOT: MINIMISED");
});
window.addEventListener("aiseraButtonTracking", function () {
    aiseraBotLaunchButton = true;
    if (addCTracking !== null) {
        addCTracking('AISERA BOT: LAUNCH BUTTON CLICKED');
        document.dispatchEvent(new CustomEvent('vaTriggerInit', { detail: { data: true } }));
    }
});
//SM-6266 Adobe analytics tracking: END
function generateContextInfo() {
    const vaHistoryParsed = sessionStorage.getItem("VA_Details") ? JSON.parse(sessionStorage.getItem("VA_Details")) : null;
    const userEmail = sessionStorage.getItem("vaGuestEmail");
    const guestEmail = `guest-${Date.now() + (Math.random() * 100000).toFixed()}@vmware.com`;
    if (((isArticleDetailPage && window.aisera_bot.page_title) || !isArticleDetailPage) && window.aisera_bot.visitorid != null) {
        //return { userEmail: `guest-${window.visitor.getMarketingCloudVisitorID()}@vmware.com`, visitorId: window.visitor.getMarketingCloudVisitorID() };
         return window.aisera_bot;

    } else if (window.visitor && window.visitor.getMarketingCloudVisitorID()) {
        return { userEmail: `guest-${window.visitor.getMarketingCloudVisitorID()}@vmware.com`, visitorId: window.visitor.getMarketingCloudVisitorID() };
    } else if (vaHistoryParsed && vaHistoryParsed["ab57fd0432e25d5b3013133a1c910d56"] && userEmail) {
        return { userEmail: guestEmail, visitorId: "" };
    } else {
        sessionStorage.setItem("vaGuestEmail", guestEmail);
        return { userEmail: guestEmail, visitorId: "" };
    }
}

(function () {
    refreshAuthToken = true;
    vaAuthToken();
})();

function updateAiseraSession() {
    if (((isArticleDetailPage && window.aisera_bot.page_title) || !isArticleDetailPage) && window.aisera_bot.visitorid != null) {
        window.aisera_bot.url = window.location.href;
        //let message = {
            //type: 'aisera.update_session_vars'
        //};
       // window.postMessage(JSON.stringify(message), "*");
        generateContextInfo();
        window.vaData;
        document.dispatchEvent(new CustomEvent('updateVADetails', { detail: { data: true } }));
        console.log("Aisera Update Session",window.vaData);

    }
}
window.addEventListener("logindetails", function (event) {
    if (event.detail.userType != "") {
        let loggedUserDetail = event.detail.userDetails;
        //window.aisera_bot.userEmail = loggedUserDetail.email;
        window.vaData.userInfo.email = loggedUserDetail.email;
        window.vaData.userInfo.name = loggedUserDetail.firstname + ' ' + loggedUserDetail.lastname;
        //window.aisera_bot.accountId = loggedUserDetail.cn;
        //window.aisera_bot.userType = "Logged In User";
        //Need to dispatch event need to be called from here (Sunil will tell us the event details)
        document.dispatchEvent(new CustomEvent('updateVADetails', { detail: { data: true } }));
    }
    //updateAiseraSession();
});
function checkVisitorId() {
    //console.log("botcheckVisitorId");
    if (s == null || !("marketingCloudVisitorID" in s)) {
        setTimeout(checkVisitorId, 1500);
        return;
    } else {
        window.aisera_bot.visitorid = s.marketingCloudVisitorID;
        //console.log("botcheckVisitorId1",window.aisera_bot.visitorid);
        updateAiseraSession();
        //checkLumosLoad();
    }
}
window.addEventListener("articledetail", function (event) {
    try {
        let data = event.detail;
        let aiseraArticleInit = { page_title: data?.meta?.articleInfo?.title };
        if (aiseraArticleInit.page_title) {
            let title = aiseraArticleInit.page_title;
            aiseraArticleInit.documentid = title.substring(title.lastIndexOf("(") + 1, title.lastIndexOf(")"));
        }
        window.aisera_bot = Object.assign(window.aisera_bot, aiseraArticleInit);
        updateAiseraSession();
    } catch (e) { }
});
if (!isArticleDetailPage) {
    updateAiseraSession();
}
checkVisitorId();

var myvar = '<html>' +
            '<head>' +
            '</head>' +
            '<body>' +
            '   <vmware-virtualassistant></vmware-virtualassistant>' +
            '</body>' +
            '</html>';
document.write(myvar);