function initializeChatSession(e) {
  if ("undefined" == typeof embedded_svc) {
    setTimeout(initializeChatSession, 1e3, e);
    return;
  }
  initESW("https://service.force.com", [
    {
      label: "cm_session_id",
      value: e.detail,
      displayToAgent: !1,
      transcriptFields: ["BOT_User_SessionID__c"],
    },
    {
      label: "BOTInitiatedPageURL",
      value: window.location.href,
      displayToAgent: true,
      transcriptFields: ["BOTInitiatedPageURL__c"],
    }
  ]);
}
function initESW(e, t) {
     
     embedded_svc.settings.displayHelpButton = true;
     embedded_svc.settings.language = "en_US";
     embedded_svc.settings.extraPrechatFormDetails = t;
     embedded_svc.settings.enabledFeatures = ["LiveAgent"];
     embedded_svc.settings.entryFeature = "LiveAgent";
     embedded_svc.settings.defaultMinimizedText = "Start Chat";
     embedded_svc.settings.disabledMinimizedText = "Chat Unavailable";
     embedded_svc.settings.displayHelpButton = true;
     embedded_svc.settings.chatbotAvatarImgURL = "https://prod.static.citrix.com/images/chatbot/chat_header_rebranded.png"

      if(window.location.href.includes('dev.support')){
        embedded_svc.init(
          "https://citrite--fdev.sandbox.my.salesforce.com",
          "https://citrite--fdev.sandbox.my.site.com/consulting",
          e,
          "00D8F000000uQCx",
          "Deployment_for_WWSS",
          {
            baseLiveAgentContentURL:
              "https://c.la5-c1cs-ia4.salesforceliveagent.com/content",
            deploymentId: "57260000000TNv2",
            buttonId: "5734z000000wk6v",
            baseLiveAgentURL: "https://d.la5-c1cs-ia4.salesforceliveagent.com/chat",
            eswLiveAgentDevName:
              "EmbeddedServiceLiveAgent_Parent04I6w000000CaYDEA0_17b540cf6e3",
            isOfflineSupportEnabled: !1,
          }
        );
      }
      else if (window.location.href.includes('preprod.support')){
              // add preprod embedded_svc init details 
      }
      else if(window.location.href.includes('staging.support')){
        embedded_svc.init(
          'https://citrite--ftest.sandbox.my.salesforce.com',
          'https://citrite--ftest.sandbox.my.site.com/consulting',
          e,
          '00DDL00000Cs93B',
          'Deployment_for_WWSS',
          {
            baseLiveAgentContentURL: 'https://c.la1-c1cs-ia6.salesforceliveagent.com/content',
            deploymentId: '57260000000TNv2',
            buttonId: '5734z000000wk6v',
            baseLiveAgentURL: 'https://d.la1-c1cs-ia6.salesforceliveagent.com/chat',
            eswLiveAgentDevName: 'EmbeddedServiceLiveAgent_Parent04I6w000000CaYDEA0_17b540cf6e3',
            isOfflineSupportEnabled:  !1,
          }
        );
  
      }
      else{
         // add prod embedded_svc init details
      }
      SendBotInsightsEvents();
}

function ConnectToLiveAgent(e) {
  e.detail.push(    
      {
        label: "BOTInitiatedPageURL",
        value: window.location.href,
        displayToAgent: true,
        transcriptFields: ["BOTInitiatedPageURL__c"],
      }
  );
  initESW("https://service.force.com", e.detail);

  document.querySelector(".helpButtonEnabled").children[0].click();
}

window.addEventListener(
  "load",
  function () {
    window.addEventListener("ConnectToLiveAgent", ConnectToLiveAgent, !1),
      window.addEventListener(
        "InitializeChatSession",
        initializeChatSession,
        !1
      );
  },
  !1
);


//-- code to send insights events
function SendBotInsightsEvents() 
{
  try {
    if(embedded_svc.addedEventListners)
    {
      return;
    }
    else
    {
      embedded_svc.addedEventListners = true;
    }

    //console.log("ChatBOT IF Events Initialize");
    var onHelpButtonClickHandler = function() { 
      let userId = sessionStorage.getItem("user_id");
      sendInsightsEvents(userId,"interacted", "Start chat button", {
        chatBotName: "Einstein",
      });
    };
    embedded_svc.addEventHandler("onHelpButtonClick", onHelpButtonClickHandler);

    var onChatRequestSuccessHandler = function(data) { 
      let userId = sessionStorage.getItem("user_id");
      sendInsightsEvents(userId,"launched", "Chat request success", {
        sessionKey: data.liveAgentSessionKey,
        chatBotName: "Einstein",
      });
    };
    embedded_svc.addEventHandler("onChatRequestSuccess", onChatRequestSuccessHandler);


    var onIdleTimeoutOccurredHandler = function(data) { 
      let userId = sessionStorage.getItem("user_id");
      sendInsightsEvents(userId,"error", "Idle timeout occurred", {
        sessionKey: data.liveAgentSessionKey,
        chatBotName: "Einstein",
      });
    };
    embedded_svc.addEventHandler("onIdleTimeoutOccurred", onIdleTimeoutOccurredHandler);


    var onConnectionErrorHandler = function(data) { 
      let userId = sessionStorage.getItem("user_id");
      sendInsightsEvents(userId,"error", "Connection error occurred", {
        sessionKey: data.liveAgentSessionKey,
        chatBotName: "Einstein",
      });
    };
    embedded_svc.addEventHandler("onConnectionError", onConnectionErrorHandler);

    var onChatEndedByChasitorHandler = function(data) { 
      let userId = sessionStorage.getItem("user_id");
      sendInsightsEvents(userId,"suspended", "Chat ended by user", {
        sessionKey: data.liveAgentSessionKey,
        chatBotName: "Einstein",
      });
    };
    embedded_svc.addEventHandler("onChatEndedByChasitor", onChatEndedByChasitorHandler);

    var onChatEndedByAgentHandler = function(data) { 
      let userId = sessionStorage.getItem("user_id");
      sendInsightsEvents(userId,"suspended", "Chat ended by agent", {
        sessionKey: data.liveAgentSessionKey,
        chatBotName: "Einstein",
      });
    };
    embedded_svc.addEventHandler("onChatEndedByAgent", onChatEndedByAgentHandler);

    var afterDestroyHandler = function() { 
      let userId = sessionStorage.getItem("user_id");
      sendInsightsEvents(userId,"terminated", "Chat ended", {
        chatBotName: "Einstein",
      });
    };
    embedded_svc.addEventHandler("afterDestroy", afterDestroyHandler);

    var onChatEndedByChatbotHandler = function(data) { 
      let userId = sessionStorage.getItem("user_id");
      sendInsightsEvents(userId,"suspended", "Chat ended by chatbot", {
        sessionKey: data.liveAgentSessionKey,
        chatBotName: "Einstein",
      });
    };
    embedded_svc.addEventHandler("onChatEndedByChatbot", onChatEndedByChatbotHandler);
  } catch (e) {
    console.log("Chat bot IF events failed", e);
  }
}



