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 = '' + s + "
"; 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 += '' + ''; 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 += "" + '' + "'; } display += "
' + parseInt(event_list.length - hidden_count) + " of " + event_list.length + " Event" + (event_list.length == 1 ? "" : "s") + ' Displayed  Clear Events
" + '' + '" + "" + '
' + 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 + "
"; 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%20+%20%22window.focus();%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" + '" + '' + '
' + '
' + '
' + "" + 'Bookmarklet:  Tealium UTAG Debugger  ' + "" + "
" + "
" + '
' + '

Universal Tag Debugger

' + '
' + "
" ); document.write( "" + '' + '" + '" + "
' + '' + '' + '' + "
Events:
" + "
Show Data: ' + '' + '' + ' ' + ' ' + '' + '' + '' + '' + "
" + '
' + '' + '' + "
" ); document.write( "" + '' + '' + "
" + "" ); 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(); }