function udb(a) {
if (window.utagmondb === false) {
return;
}
if (window.utagmondb === true) {
try {
console.log(a);
} catch (e) {}
}
}
function isArray(e) {
return (
"array" ==
{}.toString
.call(e)
.match(/\s([a-zA-Z]+)/)[1]
.toLowerCase()
);
}
function get_setting(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regexS = "[\\?&]" + name + "=([^]*)";
var regex = new RegExp(regexS);
// new script id
var el = document.getElementById("utagmon");
var results;
if (el) results = regex.exec(el.src);
if (results == null) return true;
else if (results[1] == "0" || results[1] == "false") return false;
else return true;
}
function set_utag_version() {
var p = window.opener.utag.cfg.path;
p = p.split("/").slice(4).join("/");
document.getElementById("utag_version").innerHTML =
'' +
p +
"utag.js version: " +
get_utag_version();
}
function get_utag_version() {
var v = window.opener.utag.cfg.v;
if (v) {
var rv = v.match(/4\.\d\d/);
return rv.length == 1 ? rv[0] : "";
}
}
function update_data_visibility() {
for (var d in window.opt_show_data) {
var show = false;
if (window.opt_show_data[d]) {
show = true;
}
var row_class = "row_" + d;
var rows = document.getElementsByClassName(row_class);
for (var i = 0; i < rows.length; i++) {
rows[i].className = show ? row_class : row_class + " hide_data";
}
}
}
function clear_events() {
window.our_event_list = [];
window.static_event_list = [];
do_live_display();
}
function utag_data_parse(o) {
var s = "";
var mykeys = Object.keys(o.data);
mykeys.sort();
var data_rows = {
udo: [],
};
for (var i = 0; i < mykeys.length; i++) {
var k = mykeys[i];
var show = true,
data_type = "";
data_type_class = "";
if (k.indexOf("qp.") == 0) {
data_type = "QueryString";
data_type_class = "querystring";
}
if (k.indexOf("cp.") == 0) {
data_type = "Cookie";
data_type_class = "cookie";
}
if (k.indexOf("dom.") == 0) {
data_type = "iQ";
data_type_class = "tiq";
}
if (k.indexOf("js_page.") == 0) {
data_type = "JSPage";
data_type_class = "jspage";
}
if (k.indexOf("_c") == 0) {
data_type = "E-Commerce";
data_type_class = "ecomm";
}
if (k.indexOf("meta.") == 0) {
data_type = "META";
data_type_class = "meta";
}
if (k.indexOf("ls.") == 0) {
data_type = "LocalStorage";
data_type_class = "ls";
}
if (k.indexOf("ss.") == 0) {
data_type = "SessionStorage";
data_type_class = "ss";
}
if (
k.indexOf("tealium_") == 0 ||
k.indexOf("ut.") == 0 ||
(k.indexOf("_") == 0 && k.indexOf("_c") == -1 && k.indexOf("_t_") == -1)
) {
data_type = "iQ";
data_type_class = "tiq";
}
if (k.indexOf("va.") == 0) {
data_type = "Enrich";
data_type_class = "enrich";
}
if (k == "tealium_event" && o.data[k] != "view" && o.data[k] != "link") {
data_type = "UDO";
data_type_class = "udo";
}
if (!data_type && k.indexOf("_") != 0) {
data_type = "UDO";
data_type_class = "udo";
}
if (!data_type || k == "cfg" || k == "_preserved" || k == "_utag_event") {
show = false;
}
if (show) {
var disp = " ";
if (typeof o.data[k] != "undefined") {
if (isArray(o.data[k])) {
disp = JSON.stringify(o.data[k]);
disp = disp.replace(/","/g, '", "');
disp = disp.replace(/' +
'
';
if (data_type != "UDO") {
row += "(" + data_type + ")";
}
row +=
" | " +
'' +
(k == "tealium_event" ? "" + k + "" : k) +
" | ";
row +=
': ' +
(k == "tealium_event" ? "" + disp + "" : disp) +
" | ";
data_rows[data_type_class].push(row);
}
}
s += data_rows["udo"].join("");
delete data_rows["udo"];
var row_keys = Object.keys(data_rows);
row_keys.sort();
for (var i = 0; i < row_keys.length; i++) {
var k = row_keys[i];
s += (data_rows[k] || []).join("");
}
var t = '";
return t;
}
function is_event_object(e, o, prev) {
var p = "";
if (prev && typeof prev != "object") {
p = prev;
}
var is_trigger = p.indexOf("trigger:") == 0;
var has_trigger_match = p === "trigger:" + e;
if (is_trigger && !has_trigger_match) {
return false;
}
var is_tag_object = p.indexOf("send:") > -1;
var is_init_object = p == "Pre-INIT";
var version = get_utag_version();
return (
o &&
typeof o == "object" &&
!is_tag_object &&
e &&
((version >= 4.36 &&
p == "All Tags EXTENSIONS" &&
o["ut.event"] &&
o["ut.event"] == e) ||
(version < 4.36 &&
(has_trigger_match ||
(o["_utag_event"] && o["_utag_event"] == e) ||
(o["ut.event"] && o["ut.event"] == e) ||
is_init_object ||
(!o["_utag_event"] && !o["ut.event"] && o["cp.utagdb"]))))
);
}
function get_static_events(preserve_log) {
var this_event_list;
if (preserve_log) {
udb("static list: preserve log");
this_event_list = window.static_event_list;
} else {
udb("static list: no preserve log");
this_event_list = [];
}
document.getElementById("utag_view_count").innerHTML = "0";
document.getElementById("utag_link_count").innerHTML = "0";
if (
window.opener &&
window.opener.utag &&
typeof window.opener.utag.data != "undefined" &&
(!preserve_log || (preserve_log && !window.opener.utag.data["_preserved"]))
) {
var ev = new Object();
if (preserve_log) window.opener.utag.data["_preserved"] = true;
ev.data = cp(window.opener.utag.data);
ev.code = "utag_view";
ev.method = "utag.data";
ev.url = window.opener.document.URL || "";
this_event_list[this_event_list.length] = ev;
document.getElementById("utag_view_count").innerHTML++;
}
return this_event_list.slice(0);
}
function get_live_events(utag_view, utag_link, preserve_log) {
var this_event_list = [];
if (preserve_log) {
udb("event list: preserve log");
this_event_list = window.our_event_list;
for (var i = 0; i < this_event_list.length; i++) {
this_event_list[i].hidden = false;
}
} else {
udb("event list: no preserve log");
this_event_list = [];
}
if (this_event_list.length == 0) {
document.getElementById("utag_view_count").innerHTML = "0";
document.getElementById("utag_link_count").innerHTML = "0";
}
if (window.opener) {
if (window.opener.utag && typeof window.opener.utag.db_log == "object") {
var prev;
for (
var event_num = 0;
event_num < window.opener.utag.db_log.length;
event_num++
) {
var l = window.opener.utag.db_log[event_num];
if (
typeof l == "object" &&
(window.is_first_run || !l["_preserved"]) &&
is_event_object("view", l, prev)
) {
udb("utag.view event found");
l["_preserved"] = true;
var ev = new Object();
ev.data = cp(l);
ev.code = "utag_view";
ev.method = "utag.view";
ev.url = window.opener.document.URL || "";
this_event_list[this_event_list.length] = ev;
document.getElementById("utag_view_count").innerHTML++;
}
if (
typeof l == "object" &&
(window.is_first_run || !l["_preserved"]) &&
is_event_object("link", l, prev)
) {
udb("utag.link event found");
l["_preserved"] = true;
var ev = new Object();
ev.data = cp(l);
ev.code = "utag_link";
ev.method = "utag.link";
ev.url = window.opener.document.URL || "";
this_event_list[this_event_list.length] = ev;
document.getElementById("utag_link_count").innerHTML++;
}
prev = l;
}
}
}
for (var i = 0; i < this_event_list.length; i++) {
var m = this_event_list[i].method;
if (!window[m] && m != "utag.data") {
udb("event is hidden");
this_event_list[i].hidden = true;
}
}
var rv = this_event_list.slice(0);
if (window.static_event_list.length > 0) {
rv.unshift(static_event_list[0]);
}
window.is_first_run = false;
return rv;
}
function cp(src, dst, c, d) {
dst = {};
for (c in src) {
if (src.hasOwnProperty(c) && typeof src[c] != "function") {
if (src[c] instanceof Array) {
dst[c] = src[c].slice(0);
} else {
dst[c] = src[c];
}
}
}
return dst;
}
function set_lost_parent_message() {
_set_top_message(
'Parent window not detected'
);
}
function set_no_live_events_message() {
_set_top_message(
'No live events detected'
);
}
function set_debug_refresh_message() {
_set_top_message(
'Activate Debug Mode and Reload'
);
}
function _set_top_message(el) {
var cell = document.getElementById("top_message"),
display = "";
if (cell) {
cell.innerHTML = el;
}
}
function activate_debug() {
window.opener.document.cookie = "utagdb=true;path=/";
window.opener.utag.cfg["utagdb"] = true;
}
function hide_debug_refresh_message() {
var el = document.getElementById("activate_debug_btn");
el.style.display = "none";
}
function activate_debug_refresh() {
activate_debug();
hide_debug_refresh_message();
refresh_parent();
}
function refresh_parent() {
window.opener.location.reload();
window.close();
}
function event_list_display(event_list, auto_refresh, reverse_order) {
var cell = document.getElementById("request_list_cell"),
display = "";
if (cell) {
if (event_list.length > 0) {
var hidden_count = 0;
for (var i = 0; i < event_list.length; i++) {
if (event_list[i].hidden) {
hidden_count++;
}
}
display +=
'' +
'' +
parseInt(event_list.length - hidden_count) +
" of " +
event_list.length +
" Event" +
(event_list.length == 1 ? "" : "s") +
' Displayed Clear Events |
';
if (reverse_order) event_list.reverse();
for (
var request_num = 0;
request_num < event_list.length;
request_num++
) {
var data_box = utag_data_parse(event_list[request_num]);
if (event_list[request_num].hidden) {
continue;
}
display +=
"" +
'' +
"" +
'' +
'' +
event_list[request_num].code +
" #" +
(reverse_order ? event_list.length - request_num : request_num + 1) +
" - " +
event_list[request_num].method +
' - ' +
event_list[request_num].url +
" | " +
"" +
data_box +
" | " +
' | |
';
}
display += "
";
cell.innerHTML = display;
update_data_visibility();
}
}
}
function do_live_display() {
udb("do_live_display");
try {
event_list_display(
get_live_events(
window["utag.view"],
window["utag.link"],
window.opt_preserve_log
),
window.opt_auto_refresh,
window.opt_reverse_sort
);
} catch (e) {
udb(e);
}
}
function do_static_display() {
udb("do_static_display");
event_list_display(
get_static_events(window.opt_preserve_log),
window.opt_auto_refresh,
window.opt_reverse_sort
);
}
function update_bookmarklet() {
var qs = "";
if (!window["utag.view"]) qs += "utag.view=0&";
if (!window["utag.link"]) qs += "utag.link=0&";
if (!window.opt_auto_refresh) qs += "opt_auto_refresh=0&";
if (!window.opt_reverse_sort) qs += "opt_reverse_sort=0&";
if (!window.opt_preserve_log) qs += "opt_preserve_log=0&";
if (!window.opt_show_data.jspage) qs += "opt_show_jspage=0&";
if (!window.opt_show_data.meta) qs += "opt_show_meta=0&";
if (!window.opt_show_data.ls) qs += "opt_show_ls=0&";
if (!window.opt_show_data.ss) qs += "opt_show_ss=0&";
if (!window.opt_show_data.cookie) qs += "opt_show_cookie=0&";
if (!window.opt_show_data.dom) qs += "opt_show_dom=0&";
if (!window.opt_show_data.querystring) qs += "opt_show_query=0&";
if (!window.opt_show_data.enrich) qs += "opt_show_enrich=0&";
if (!window.opt_show_data.tiq) qs += "opt_show_tiq=0&";
document.getElementById("bookmarklet").href =
"javascript:void(window.open(%22%22,%22utagmon%22,%22width=600,height=600,location=0,menubar=0,status=1,toolbar=0,resizable=1,scrollbars=1%22).document.write(%22%22));";
}
function utagmon_run(a) {
udb("***utagmon_run***");
update_bookmarklet();
do_live_display();
if (!window.opener || !window.opener.utag) {
udb("utagmon_run: lost parent window connection");
set_lost_parent_message();
} else if (window.our_event_list.length == 0) {
udb("utagmon_run: still no live events");
set_no_live_events_message();
do_static_display();
} else {
_set_top_message('');
}
if (window.opt_auto_refresh) {
setTimeout(
function (a) {
a = a || 0;
udb("run: " + a++);
utagmon_run(a);
},
2000,
a
);
}
}
document.write(
"Tealium UTAG Debugger" +
'" +
'' +
'" +
""
);
document.title = "Tealium UTAG Debugger";
window.status = "Tealium UTAG Debugger";
window.utagmon_path =
"//tags.tiqcdn.com/utag/tealium-solutions/main/prod/utag.4.js";
window.utagmondb = false;
window.is_first_run = true;
window["utag.view"] = get_setting("utag.view");
window["utag.link"] = get_setting("utag.link");
window.opt_auto_refresh = get_setting("opt_auto_refresh");
window.opt_preserve_log = get_setting("opt_preserve_log");
window.opt_reverse_sort = get_setting("opt_reverse_sort");
window.opt_show_data = {};
window.opt_show_data.meta = get_setting("opt_show_meta");
window.opt_show_data.ls = false;
window.opt_show_data.ss = false;
window.opt_show_data.cookie = get_setting("opt_show_cookie");
window.opt_show_data.dom = get_setting("opt_show_dom");
window.opt_show_data.querystring = get_setting("opt_show_query");
window.opt_show_data.jspage = get_setting("opt_show_jspage");
window.opt_show_data.enrich = get_setting("opt_show_enrich");
window.opt_show_data.tiq = get_setting("opt_show_tiq");
window.our_event_list = [];
window.static_event_list = [];
if (window.opener && window.opener.utag) {
set_utag_version();
if (!window.opener.utag.cfg.utagdb) {
udb("init: enabling debug");
activate_debug();
} else {
udb("init: debug mode is active");
}
utagmon_run();
}