if((!window.eventsList) || window.eventsList==null)
{
    window.eventsList = [];
}
window.addEventListener(
    "load",
    function () {
        if(!window.eventsList.includes("registerOOBEvents"))
        {
            window.addEventListener("registerOOBEvents", registerOOBEventsWrapper, !1); 
            window.eventsList.push("registerOOBEvents");       
        }
    },
    !1
);

let eventCount=0;
function registerOOBEventsWrapper(e)
{
    eventCount = 0;     
    registerOOBEvents(e)
}

function registerOOBEvents(e)
{    
    if(sessionStorage.getItem("last_page_url") == null) {
    sessionStorage.setItem("last_page_url", window.location.href);
    }
    
    let userId = "anonymous"
    if(e.detail && e.detail!=null)
    {
        userId = e.detail;    
    } 

    if(sessionStorage.getItem("user_id") == null) {
    sessionStorage.setItem("user_id", userId);
    }  
    
     //outage banner
     const element = document.getElementsByClassName('js-content-navlink');
     for (var i = 0; i < element.length; i++) {
        let eventAdded = element[i].getAttribute('IfEventAdded');        
        if(eventAdded==null || (!eventAdded))
        {
            element[i].addEventListener('click', addOutageBannerFunction, false);
            element[i].setAttribute('IfEventAdded',true);        
        }            
    }

    //navigation menu
    const navElement = document.getElementsByClassName('comm-navigation__top-level-item-link');
    for (var i = 0; i < navElement.length; i++) {
        let eventAdded = navElement[i].getAttribute('IfEventAdded');        
        if(eventAdded==null || (!eventAdded))
        {
            navElement[i].addEventListener('click', addListnerToNavElement, false);
            navElement[i].setAttribute('IfEventAdded',true);
        }
    }

    //navigation dropdown button
    const navButtonElement = document.getElementsByClassName('comm-navigation__sub-menu-trigger');
    for (var i = 0; i < navButtonElement.length; i++) {
        let eventAdded = navButtonElement[i].getAttribute('IfEventAdded');        
        if(eventAdded==null || (!eventAdded))
        {        
            navButtonElement[i].addEventListener('click', addListnerToNavButton, false);
            navButtonElement[i].setAttribute('IfEventAdded',true);
        }
    }

    //profile button
    const profileButtonElement = document.getElementsByClassName("comm-user-profile-menu");
    for (var i = 0; i < profileButtonElement.length; i++) {
        let eventAdded = profileButtonElement[i].getAttribute('IfEventAdded');        
        if(eventAdded==null || (!eventAdded))
        {
            profileButtonElement[i].addEventListener('click', addListnerToProfileButton, false);
            profileButtonElement[i].setAttribute('IfEventAdded',true);
        }
    }   

    //link elements
    const linkElements = document.getElementsByTagName("a");
    for (var i = 0; i < linkElements.length; i++) {
        let eventAdded = linkElements[i].getAttribute('IfEventAdded');    
        let eventAddedToParent = linkElements[i].parentElement.getAttribute('IfEventAdded');    
        if((eventAdded==null || (!eventAdded)) && (eventAddedToParent==null || (!eventAddedToParent)))
        {                       
            linkElements[i].addEventListener('click', trackClicks, false);
            linkElements[i].setAttribute('IfEventAdded',true);
        }
    }

    //recursively call the function few times to get all elements binded
    if(eventCount < 8)
    {
       setTimeout(registerOOBEvents,500,e);
       eventCount++; 
    }    
}
    
function trackClicks(event)
{
    let userId = sessionStorage.getItem("user_id");
        
    // Use closest to find the nearest anchor tag from the clicked element
    var clickedLink = event.target;

    // Check if an anchor tag was found
    if (clickedLink) {
            // Get the title,text and href attributes
            var linkText = clickedLink.innerText;
            var linkTitle = clickedLink.getAttribute('title') || linkText || 'No title';
            var linkHref = clickedLink.getAttribute('href');
            sendInsightsEvents(userId, 'clicked', linkTitle, {destinationLink:linkHref, title:linkTitle,});
    }        
}

function addOutageBannerFunction(event) {
    let userId = sessionStorage.getItem("user_id");
    var hrefAttribute = event.target.getAttribute("href");
    var tabindexAttribute = event.target.getAttribute("tabindex");
    var text = event.target.innerText;
    sendInsightsEvents(userId, 'clicked', 'Outage Alert banner', { bannerLinkText: text, bannerLink: hrefAttribute, bannerIndex: tabindexAttribute, source: "Support Home Page",});    
}

function addListnerToNavElement(event)
{    
    let userId = sessionStorage.getItem("user_id");
    if(typeof event.target.label !== 'undefined') {
        var label = event.target.label;
        var hrefLink = event.target.getAttribute('href');
        sendInsightsEvents(userId, 'clicked', 'Navigation Menu - '+label, { MenuOption: label, DestinationLink: hrefLink, source: "Page Header",});
    }
}

function addListnerToNavButton(event)
{  
    let userId = sessionStorage.getItem("user_id");          
    var buttonText = event.target.innerText;
    sendInsightsEvents(userId, 'clicked', 'Navigation Menu - '+buttonText, {menuOption:buttonText, menuType:" dropdown button",  source: "Page Header",});
}

function addListnerToProfileButton(event)
{
    let userId = sessionStorage.getItem("user_id");    
    var profileButtonText = event.target.innerText;
    if(event.target.isGuestUser) {
        sendInsightsEvents(userId, 'clicked', 'Profile Button - Log In', {section:"Clicks on Log in button", buttonText:profileButtonText, buttonName:'Log In',  source: "Page Header",});
    }else{
        sendInsightsEvents(userId, 'clicked', 'Profile Button - Log Out', {section:"Clicks on Log out button", buttonText:profileButtonText, buttonName:'Log Out',  source: "Page Header",});
    }
       
}

    