// Adobe Launch Embed code has been implemented via Branding Center
/*** Init Functions ***/
// Increment version following any update applied on Prod (SEMVER)
var versionEDDL = "1.0.0"
// Array of tracked pages in RF
var trackedPages = [
"all-tracks",
"americasregionpage",
"AmericasRegionPagePreKeynote",
"AmericasShowAllSpeakerGallery",
"asiapacificregionpage",
"AsiaPacificRegionPagePreKeynote",
"AsiaPacificShowAllSpeakerGallery",
"calendar",
"DashboardPreKeynote",
"discovermore",
"discovermoreprekeynote",
"emearegionpage",
"EMEARegionPagePreKeynote",
"EMEAShowAllSpeakerGallery",
"home",
"HomePreKeynote",
"instructions",
"June2homepage",
"June2Dashbaord",
"SessionCatalog",
"sessions",
"sessionsprekeynote",
"ShowAllFeaturedinMyRegionAmericas",
"ShowAllFeaturedinMyRegionAsiaPacific",
"ShowAllFeaturedinMyRegionEMEA",
"ShowAllRecommendedSessions",
"ShowAllSAPrunsSAP",
"sponsors",
"sponsorsprekeynote",
"track-customer-experience",
"track-finance",
"track-hr",
"track-industries",
"track-it",
"track-midmarket",
"track-procurement",
"track-supply-chain",
"btp",
"cx",
"erp",
"hxm",
"isbn",
"scm",
"se",
"ind",
"bos",
"catalog",
"overview",
"channels",
"networking",
"mycalendar",
"live",
];
// Prime the datalayer
window.adobeDataLayer = window.adobeDataLayer || [];
window.uniqueTimeStamp = Date.now();
// Global values for use in helper functions
var trimTimestamp = uniqueTimeStamp.toString().substr(-10);
var trimAttendeeId = data.attendee && data.attendee.attendeeId.substr(-10);
// Global EDDL init logic for all pages
if (trackedPages.includes(data.page)) {
initGlobalEDDL();
setPageView();
beaconPageView()
} else if (data.page === "welcome") {
initGlobalEDDL();
setPageView();
beaconPageView()
} else if (data.page === "dashboard") {
initGlobalEDDL();
setPageView();
beaconPageView()
} else if (data.page === "regquestions" || data.page === 'unsubscribe' || data.page === "contactInfo") {
initGlobalEDDL();
setPageView();
setFormView('RF_G_2023_08_PME_EV_TECHED2023');
beaconPageView()
} else if (data.page === "MyProfile") {
initGlobalEDDL();
setPageView();
setFormView('RF_G_2023_08_PME_EV_TECHEDUPD2023');
beaconPageView()
} else if (data.page === "profileconfirm") {
initGlobalEDDL();
setPageView();
setFormSubmit(
'RF_G_2023_08_PME_EV_TECHEDUPD2023',
'S-1649707982616001L21R-' + data.attendee.attendeeId
);
beaconPageView()
} else if (data.page === "confirm") {
initGlobalEDDL();
setPageView();
setFormSubmit(
'RF_G_2023_08_PME_EV_TECHED2023',
'S-1649707982616001L21R-' + data.attendee.attendeeId
);
// SMC Interaction event?
beaconPageView()
} else if (data.page === "idslogin") {
initGlobalEDDL();
setPageView();
setFormView('RF_G_2023_02_PME_EV_SAPP_VIRTUPD');
beaconPageView()
} else if (data.page === "order" || data.page === 'restrictedaccess' || data.page === 'cannotaccessregistration' || data.page === 'catalog' || data.page === 'overview' || data.page === 'appdev' || data.page === 'ai' || data.page === 'dataandanalytics' || data.page === 'digitaltransformationclouderp' || data.page === 'integration' || data.page === 'sapbtp') {
initGlobalEDDL();
setPageView();
beaconPageView();
} else if (data.page === "Confirm") {
initGlobalEDDL();
setPageView();
setFormSubmit(
'RF_G_2023_08_PME_EV_TECHED2023',
"S-1649707982616001L21R-" + data.attendee.attendeeId
);
setSMCInteraction(
'S-1649707982616001L21R-' + data.attendee.attendeeId,
'CRM-YE23-TED-2084187_03',
["No Item of Interest Value"],
);
beaconPageView();
} else if (
data.app &&
data.app === "widgets" &&
data.page.match(/^(\d)+[a-zA-Z]+/g)
) {
var detail = document.querySelector(
".exhibitor-title h1, .catalog-result-title-text .title-text"
);
initGlobalEDDL(event.name);
setPageView(detail);
beaconPageView()
}
/*** Helper Functions ***/
// Init Global Data Layer properties
function initGlobalEDDL() {
var globalProps = {
event: "globalDL",
site: {
name: "events",
event: data.event.name,
country: data.attendee.countryId && data.attendee.countryId.toLowerCase(),
},
user: getUser(),
eddl: {
version: versionEDDL
}
};
window.adobeDataLayer.push(globalProps);
}
// Helper function to create a page view event
function setPageView(detail) {
var detail = detail || "";
var pageView = {
event: "pageView",
page: {
name: document.location.pathname,
detail: detail,
section: "sanow",
language: navigator.language.substring(0,2),
country: data.attendee.countryId && data.attendee.countryId.toLowerCase(),
URL: window.location.href,
},
};
window.adobeDataLayer.push(pageView);
}
// Helper function to set the user
function getUser() {
return {
loginStatus: getLoginStatus(),
}
};
//Helper function to push any Form Views
function setFormView(formName) {
var formView = {
event: "formView",
form: {
uniqueID: trimAttendeeId + trimTimestamp,
name: formName,
},
};
window.adobeDataLayer.push(formView);
}
//Helper function to push any Form Submissions
function setFormSubmit(formName, transactionId) {
var formSubmit = {
event: "formSubmit",
form: {
uniqueID: trimAttendeeId + trimTimestamp,
name: formName,
referrer: document.referrer,
relationship: getSAPRelationshipAdobeAC(),
transactionID: transactionId,
},
};
window.adobeDataLayer.push(formSubmit);
}
// Helper function to push any event listener calls, e.g Exhibitor form submitted
function setEvent(eventName) {
var eventData = {
event: eventName,
user: getUser(),
};
window.adobeDataLayer.push(eventData);
}
// Helper function to set the SMC interactive values
function setSMCInteraction(
id,
type,
interests,
) {
var SMCdata = {
event: "smcInteraction",
smcInteraction: {
ID: id,
type: type,
interests: interests,
reason: "SAP_EVENT"
},
};
window.adobeDataLayer.push(SMCdata);
}
// Helper function get login status
function getLoginStatus(attendee) {
var loginStatus = "no";
if (
(window.initialState && window.initialState.isAttendeeLoggedIn) ||
(attendee && attendee.attendeeId)
) {
loginStatus = "yes";
}
return loginStatus;
}
// Helper function to determine relationship to SAP
function getSAPRelationshipAdobeAC(attendee) {
switch (data.attendee.relationshipToSAP) {
case "Customer":
return 01;
case "Prospective Customer":
return 02;
case "Partner":
return 03;
case "Prospective Partner":
return 04;
case "Consultant":
return 05;
case "Press/Analyst":
return 06;
case "Investor/Shareholder":
return 07;
case "Student":
return 08;
case "SAP Employee":
return 09;
case "Competitor":
return 10;
}
}
// Helper function to send beacon call to Track Page View
function beaconPageView() {
window.adobeDataLayer.push({
event: "stBeaconReady",
});
}
// Helper function to send beacon call as Non-Tracked Page View
function beaconNonPageView() {
window.adobeDataLayer.push({
event: "stlBeaconReady",
});
}