Skip to content

Instantly share code, notes, and snippets.

@dyroffk
Last active January 31, 2018 03:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dyroffk/bfee9b73ad86c15ca3f18efca7e43fc0 to your computer and use it in GitHub Desktop.
Save dyroffk/bfee9b73ad86c15ca3f18efca7e43fc0 to your computer and use it in GitHub Desktop.
Eloqua Tracking Script deconstructed / unminified (from https://img.en25.com/i/elqCfg.min.js)
(function() {
// b - site id
var b = "",
_SITE_ID = b,
N = new Date(20020101),
O = new Date,
g = O.getMilliseconds(),
_MS = g,
r = N.getTimezoneOffset(),
_TIMEZONE = r,
l = window,
q = document,
z = 0,
_OPTIN_DISABLED = z,
m = 1,
_OPTIN_ALL = m,
f = 2,
_OPTIN_BY_COUNTRY = f,
// c - eloqua visitor GUID
c = "",
_VISITOR_GUID = c,
// n - BKUT cookie value -- used w/ first party cookie tracking
n = "",
_BKUT = n,
// B - Eloqua visitor endpoint
B = "/visitor/v200/svrGP",
_VISITOR_ENDPOINT = B,
// k - tracking domain
k = "eloqua.com",
_TRACKING_DOMAIN = k,
// d - tracking url
d = "",
_TRACKING_URL = d,
// e - extra query params?
e = "",
_FIRST_PARTY_QUERY_PARAMS = e;
// objectUndefined?
function a(a) {
return typeof a === "undefined" || null === a || a === ""
}
var _IS_BLANK = a;
function J(a) {
try {
return typeof a === "string" && decodeURI(a) !== a
} catch (b) {
return false
}
}
var _IS_ENCODED = J;
// Get document referer
function p(b) {
if (_IS_BLANK(_SITE_ID))
if (document.referrer) b = encodeURI(document.referrer);
else b = "elqNone";
return b
}
var _GET_REFERER = p;
function K(j, i) {
if (!_IS_BLANK(_TRACKING_URL) && !_IS_BLANK(_SITE_ID)) {
var h = _TRACKING_URL + "?pps=50&siteid=" + b + "&DLKey=" + encodeURIComponent(j) + "&DLLookup=" + encodeURIComponent(i) + "&ms=" + g + _FIRST_PARTY_QUERY_PARAMS;
if (!_IS_BLANK(_VISITOR_GUID)) h += "&elqGUID=" + _VISITOR_GUID;
// Inject PPS50 request into DOM
console.log("ELOQUA - PPS50");
var f = document.createElement("script");
f.type = "text/javascript";
f.src = h;
document.getElementsByTagName("head")[0].appendChild(f)
}
}
var _INJECT_PPS50_REQUEST = K;
var _ELQ_DATA_LOOKUP = K;
// elqGetCustomerGUID
function H() {
if (!_IS_BLANK(_TRACKING_URL) && !_IS_BLANK(_SITE_ID)) {
var h = _TRACKING_URL + "?pps=70&siteid=" + _SITE_ID + "&ref=" + encodeURI(document.referrer) + "&ms=" + g + _FIRST_PARTY_QUERY_PARAMS;
if (!_IS_BLANK(_VISITOR_GUID)) h += "&elqGUID=" + _VISITOR_GUID;
// Inject PPS70 request into DOM
var f = document.createElement("script");
f.type = "text/javascript";
f.src = h;
document.getElementsByTagName("head")[0].appendChild(f)
}
}
var _ElqGetCustomerGUID = H;
// Track page view
function j(s, k, optin_flag) {
var i = "";
if (!a(d) && !a(b)) {
if (_FIRST_PARTY_QUERY_PARAMS != "") {
var q = h("OPTIN");
if (q != null)
if (q == "0") return;
else if (q == "1") i += "&isOptedIn=1"
}
referer = _GET_REFERER(k);
if (!_IS_BLANK(optin_flag))
if (optin_flag === _OPTIN_BY_COUNTRY) i += "&optin=country";
else if (optin_flag === _OPTIN_ALL) i += "&optin=all";
else if (optin_flag === _OPTIN_DISABLED) i += "optin=disabled";
var t = new Image(1, 1);
if (!_IS_BLANK(s)) {
var j = _TRACKING_URL + "?pps=3&siteid=" + _SITE_ID + "&ref=" + encodeURI(s) + "&ref2=" + referer + "&tzo=" + r + "&ms=" + g + i + _FIRST_PARTY_QUERY_PARAMS;
if (!_IS_BLANK(_VISITOR_GUID)) j += "&elqGUID=" + _VISITOR_GUID;
j += _SET_BKUUIDSWAP(_BKUT);
t.src = j
} else {
var j = _TRACKING_URL + "?pps=3&siteid=" + _SITE_ID + "&ref2=" + referer + "&tzo=" + r + "&ms=" + g + i + _FIRST_PARTY_QUERY_PARAMS;
if (!_IS_BLANK(_VISITOR_GUID)) j += "&elqGUID=" + _VISITOR_GUID;
j += _SET_BKUUIDSWAP(_BKUT);
t.src = j
}
}
}
var _TRACK_PAGE_VIEW = j;
// TrackPageView
function I(b, optional_page) {
_TRACK_PAGE_VIEW(b, optional_page, _OPTIN_DISABLED)
}
var _TRACK_PAGE_OPTIN_DISABLED = I;
function u(b, a) {
_TRACK_PAGE_VIEW(b, a, f)
}
var _TRACK_PAGE_OPTIN_BY_COUNTRY = u;
function v(b, a) {
_TRACK_PAGE_VIEW(b, a, m)
}
var _TRACK_PAGE_OPTIN_ALL = v;
function i(pps_num) {
if (!_IS_BLANK(_TRACKING_URL) && !_IS_BLANK(_SITE_ID) && !_IS_BLANK(pps_num)) {
if (pps_num == 40 && _FIRST_PARTY_QUERY_PARAMS != "") {
var optin_cookie = _GET_COOKIE_VAL("OPTIN");
if (optin_cookie != null)
if (optin_cookie == "0") return _INJECT_SCRIPT("function elqGetOptOutStatus(){ return 0; }");
else if (optin_cookie == "1") return _INJECT_SCRIPT("function elqGetOptOutStatus(){ return 1; }")
}
if ( pps_num != 43 && pps_num != 44 || _FIRST_PARTY_QUERY_PARAMS == "") {
elqOptActionSrc = _TRACKING_URL + "?pps=" + encodeURIComponent(pps_num) + "&siteid=" + _SITE_ID + "&ref=" + encodeURI(location.href) + "&ms=" + _MS + _FIRST_PARTY_QUERY_PARAMS;
if (!_IS_BLANK(_VISITOR_GUID)) elqOptActionSrc += "&elqGUID=" + _VISITOR_GUID;
var j = document.createElement("script");
j.type = "text/javascript";
j.src = elqOptActionSrc;
document.getElementsByTagName("head")[0].appendChild(j)
}
}
}
var _SET_OPTIN = i;
function y(b) {
var a = document.createElement("script");
a.type = "text/javascript";
a.appendChild(document.createTextNode(b));
document.getElementsByTagName("head")[0].appendChild(a)
}
var _INJECT_SCRIPT = y;
// Set ELQSITEVISITED & send PPS45
function t(optin_flag, _this, c) {
if (!_IS_BLANK(_TRACKING_URL) && !_IS_BLANK(_SITE_ID))
if (_IS_NEW_VISITOR()) {
// ELQSITEVISITED cookie used to prevent strict-mode opt-in banner from displaying more than once
_SET_COOKIE("ELQSITEVISITED", "YES");
_INJECT_PPS45_REQUEST(optin_flag, _this, c)
} else if (optin_flag == _OPTIN_BY_COUNTRY) _TRACK_PAGE_OPTIN_BY_COUNTRY(_this, c); // If Opt-in by country (g=2)
else _TRACK_PAGE_OPTIN_ALL(_this, c)
}
var _TRACK_THIRD_PARTY_PAGE_VIEW = t;
function s(optin_flag, _this, e) {
if (!_IS_BLANK(_TRACKING_URL) && !_IS_BLANK(_SITE_ID)) {
var optin_cookie = _GET_COOKIE_VAL("OPTIN");
if (optin_cookie != null)
if (optin_cookie == "0") return;
else optin_cookie == "1" && _TRACK_PAGE_VIEW(_this, e, optin_flag);
else if (_IS_NEW_VISITOR()) {
// ELQSITEVISITED cookie used to prevent strict-mode opt-in banner from displaying more than once
_SET_COOKIE("ELQSITEVISITED", "YES");
if (optin_flag == _OPTIN_BY_COUNTRY) _INJECT_PPS45_REQUEST(optin_flag, _this, e); // If display banner by country
else elqCreateOptInBanner()
} else optin_flag == _OPTIN_BY_COUNTRY && _TRACK_PAGE_VIEW(_this, e, optin_flag) // If display banner by country
}
}
var _TRACK_FIRST_PARTY_PAGE_VIEW = s;
// Inject script request to check optin status?
function w(optin_flag, k, i) {
i = _GET_REFERER(i);
var h = _TRACKING_URL + "?pps=45&siteid=" + _SITE_ID + _FIRST_PARTY_QUERY_PARAMS;
if (!_IS_BLANK(_TRACKING_DOMAIN)) h += "&ref=" + encodeURI(_TRACKING_DOMAIN);
h += "&ref2=" + i + "&tzo=" + _TIMEZONE + "&ms=" + _MS;
if (optin_flag == _OPTIN_BY_COUNTRY) h += "&optin=country";
else h += "&optin=all";
if (!_IS_BLANK(_VISITOR_GUID)) h += "&elqGUID=" + _VISITOR_GUID;
var j = document.createElement("script");
j.type = "text/javascript";
j.src = h;
document.getElementsByTagName("head")[0].appendChild(j)
}
var _INJECT_PPS45_REQUEST = w;
// elqTrackPageViewDisplayOptInBannerByCountry
// a - likely empty array since no args required
function E(_this, a) {
// f = 2
if (_FIRST_PARTY_QUERY_PARAMS != "") _TRACK_FIRST_PARTY_PAGE_VIEW(_OPTIN_BY_COUNTRY, _this, a);
else _TRACK_THIRD_PARTY_PAGE_VIEW(_OPTIN_BY_COUNTRY, _this, a)
}
var _TRACK_PAGE_VIEW_DISPLAY_OPTIN_BY_COUNTRY = E;
// elqTrackPageViewDisplayOptInBannerForAll
function F(_this, a) {
// m = 1
if (_FIRST_PARTY_QUERY_PARAMS != "") _TRACK_FIRST_PARTY_PAGE_VIEW(_OPTIN_ALL, _this, a);
else _TRACK_THIRD_PARTY_PAGE_VIEW(_OPTIN_ALL, _this, a)
}
var _TRACK_PAGE_VIEW_DISPLAY_OPTIN_ALL = F;
// Set cookie on document
function A(b, a) {
document.cookie = b + "=" + a;
document.cookie += ";path=/; secure; HttpOnly; "
}
var _SET_COOKIE = A;
// Return cookie subvalue
function C(full_cookie, cookie_name) {
if (full_cookie == "") return null;
var b = full_cookie.indexOf("=");
if (b > 0) {
var d = full_cookie.substr(0, b);
if (d.trim() == cookie_name) return full_cookie.substr(b + 1)
}
return null
}
var _GET_COOKIE_SUBVAL = C;
// Get Eloqua Cookie value
function h(cookie_name) {
for (var b = document.cookie.split(";"), a = 0; a < b.length; a++) {
elqCookieValue = _GET_COOKIE_SUBVAL(b[a], cookie_name);
if (elqCookieValue != null) return unescape(elqCookieValue)
}
return null
}
var _GET_COOKIE_VAL = h;
// Get cookie value?
function G(cookie_name, subcookie_name) {
var cookie = _GET_COOKIE_VAL(cookie_name);
if (cookie != null)
for (var c = cookie.split("&"), b = 0; b < c.length; b++) {
cookie = _GET_COOKIE_SUBVAL(c[b], subcookie_name);
if (cookie != null) return cookie
}
return null
}
var _GET_SUBCOOKIE_VALUE = G;
// Check ELQSITEVISITED cookie for whether visitor has been here before?
function x() {
var a = _GET_COOKIE_VAL("ELQSITEVISITED");
return a == null || a != "YES"
}
var _IS_NEW_VISITOR = x;
// Create bkuuidSwapTime query param
function o(b) {
var c = "";
if (!_IS_BLANK(b)) c += "&bkuuidSwapTime=" + encodeURIComponent(b);
return c
}
var _SET_BKUUIDSWAP = o;
// Check if a is an integer
function P(a) {
return !isNaN(a) && parseInt(Number(a)) == a && !isNaN(parseInt(a, 10))
}
var _IS_INT = P;
var M = function() {
this.push = function() {
for (var a = 0; a < arguments.length; a++) try {
if (typeof arguments[a] === "function") arguments[a]();
else switch (arguments[a][0]) {
case "elqSetRootDomain":
_TRACKING_DOMAIN = encodeURIComponent(arguments[a][1]);
var port;
if (arguments[a][2] != undefined && _IS_INT(arguments[a][2])) {
port = arguments[a][2];
_TRACKING_DOMAIN = _TRACKING_DOMAIN + ":" + port
}
_TRACKING_URL = "https://s" + _SITE_ID + ".t." + _TRACKING_DOMAIN + _VISITOR_ENDPOINT;
break;
case "elqSetSiteId":
_SITE_ID = encodeURIComponent(arguments[a][1]);
_TRACKING_URL = "https://s" + _SITE_ID + ".t." + _TRACKING_DOMAIN + _VISITOR_ENDPOINT;
break;
case "elqTrackPageView":
_TRACK_PAGE_OPTIN_DISABLED.apply(this, arguments[a].slice(1));
break;
case "elqVisitorGuid":
_VISITOR_GUID = encodeURIComponent(arguments[a][1]);
break;
case "elqTrackPageViewOptinByCountry":
_TRACK_PAGE_OPTIN_BY_COUNTRY.apply(this, arguments[a].slice(1));
break;
case "elqTrackPageViewOptinAll":
_TRACK_PAGE_OPTIN_ALL.apply(this, arguments[a].slice(1));
break;
case "elqTrackPageViewDisplayOptInBannerByCountry":
_TRACK_PAGE_VIEW_DISPLAY_OPTIN_BY_COUNTRY.apply(this, arguments[a].slice(1));
break;
case "elqTrackPageViewDisplayOptInBannerForAll":
_TRACK_PAGE_VIEW_DISPLAY_OPTIN_ALL.apply(this, arguments[a].slice(1));
break;
case "elqDataLookup":
_ELQ_DATA_LOOKUP.apply(this, arguments[a].slice(1));
break;
case "elqGetCustomerGUID":
_ElqGetCustomerGUID.apply(this);
break;
case "elqOptStatus":
// Sets global elqGetOptOutStatus function
_SET_OPTIN(40);
break;
case "elqOptIn":
_SET_OPTIN(41);
break;
case "elqOptOut":
_SET_OPTIN(42);
break;
case "elqGlobalOptIn":
// This appears to be a NOOP?
_SET_OPTIN(43);
break;
case "elqGlobalOptOut":
// This appears to be a NOOP?
_SET_OPTIN(44);
break;
case "elqUseFirstPartyCookie":
_FIRST_PARTY_QUERY_PARAMS = "&firstPartyCookieDomain=" + encodeURIComponent(arguments[a][1]);
var f = _GET_SUBCOOKIE_VALUE("ELOQUA", "GUID");
if (f != null) _VISITOR_GUID = encodeURIComponent(f);
_BKUT = _GET_COOKIE_VAL("BKUT")
}
} catch (j) {}
}
},
L = window._elqQ;
window._elqQ = new M;
window._elqQ.push.apply(window._elqQ, L);
function D(i, j, h) {
if (!_IS_BLANK(_TRACKING_URL) && !_IS_BLANK(_SITE_ID) && !_IS_BLANK(i)) {
h = p(h);
var f = d + "?pps=17&siteid=" + b + "&elq=" + encodeURIComponent(j || "") + "&ref=" + encodeURI(i) + "&ref2=" + h + "&ms=" + g;
if (!_IS_BLANK(_VISITOR_GUID)) f += "&elqGUID=" + _VISITOR_GUID;
f += _SET_BKUUIDSWAP(_BKUT);
if (f.length <= 2036) {
var k = new Image(1, 1);
k.src = f
} else {
try {
var e = q.createElement("iframe")
} catch (l) {
e = "<iframe src='" + f + "' width='0' height='0' style='display:none;visibility:hidden;'></iframe>";
q.body.innerHTML += e;
return
}
e.height = "0";
e.width = "0";
e.style.display = "none";
e.style.visibility = "hidden";
q.body.appendChild(e);
e.src = f
}
}
}
var _TRACK_EVENT = D;
window._elq = {
trackEvent: function(a, b, c) {
_TRACK_EVENT(a, b, c)
},
trackOutboundLink: function(b, f, g) {
_TRACK_EVENT(b.href, f, g);
var d = _IS_ENCODED(b.href) ? b.href : encodeURI(b.href),
c, e = b.getAttribute("target");
if (_IS_BLANK(e)) c = 'document.location = "' + d + '"';
else c = 'window.open("' + d + '", "' + encodeURIComponent(e) + '")';
setTimeout(c, 1e3)
}
}
})()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment