﻿var _gaq = _gaq || []; (function () { var b = document.createElement("script"); b.type = "text/javascript"; b.async = true; b.src = ("https:" == document.location.protocol ? "https://ssl" : "http://www") + ".google-analytics.com/ga.js"; var a = document.getElementsByTagName("script")[0]; a.parentNode.insertBefore(b, a) })(); (function (f, d, h) { var b = this, a = f("html"), e = f("body"); var c = { init: function (i) { if (!f.tbwaga.assert(i)) { return } return this.each(function (j, k) { var l = f(k); l.unbind("click.tbwaga"); if (!!i && (!!i.virtual || !!i.event || !!i.social)) { l.removeClass("notrack").removeAttr("notrack").gaRemoveData("notrack"); if (!!i.virtual) { l.gaData("virtual", i.virtual) } if (!!i.event) { l.gaData("event", i.event.join(",")) } if (!!i.social) { l.gaData("social", i.social.join(",")) } } if (f.tbwaga.isTrackable(k)) { l.bind("click.tbwaga", f.extend(true, {}, i), function (o) { if (!!o.data.preventDefault) { o.preventDefault() } if (!!o.data.stopImmediatePropagation) { o.stopImmediatePropagation() } var m, p, n; if ((m = !!o.data.onVirtualTrack ? o.data.onVirtualTrack.apply(this, [this, o.data]) : f.gaHasData(k, "virtual") ? l.gaData("virtual") : null)) { f.tbwaga.trackPageview(m) } if ((p = !!o.data.onEventTrack ? o.data.onEventTrack.apply(this, [this, o.data]) : f.gaHasData(k, "event") ? l.gaData("event") : null)) { f.tbwaga.trackEvent.apply(this, p.split(",")) } if ((n = !!o.data.onSocialTrack ? o.data.onSocialTrack.apply(this, [this, o.data]) : f.gaHasData(k, "social") ? l.gaData("social") : null)) { f.tbwaga.trackSocial.apply(this, n.split(",")) } }) } }) } }; f.tbwaga = function (i) { f.tbwaga.initialize(i); return f.tbwaga }; f.extend(f.tbwaga, { ns: "tbwaga-", ua: null, initialize: function (i) { i || (i = {}); i = f.extend(true, {}, { allowHash: true, allowLocalhost: true, cookiePath: "/", autoTrackPage: true, pageUrl: null }, i); if (!this.ua) { if (!i || !!i && !i.ua) { throw new Error("GA must be initialized with UswerAccount ID (UA)"); return false } else { if (!!i) { this.ua = i.ua; _gaq.push(["_setAccount", this.ua]); _gaq.push(["_setAllowHash", i.allowHash]); _gaq.push(["_setCookiePath", i.cookiePath]); if (i.allowLocalhost && d.location.hostname == "localhost") { _gaq.push(["_setDomainName", "none"]) } if (!i.pageUrl) { i.pageUrl = a.gaData("virtual") || null; i.pageUrl = i.pageUrl || e.gaData("virtual"); i.pageUrl = i.pageUrl || d.location.pathname } if (i.autoTrackPage === true) { f.tbwaga.trackPageview(typeof i.pageUrl === "function" ? i.pageUrl() : i.pageUrl) } return true } else { return } } } return true }, assert: function (i) { return this.initialize(i) }, normalize: function (i) { return i.replace(/[\/\\]/ig, "-").replace(/['`]/ig, "").replace(/[,\.\t\n\r]/ig, " ").replace(/\s{2,}/ig, " ") }, nsNormalize: function (i) { if (!i) { return } return f.camelCase(f.tbwaga.ns + i) }, applyTracking: function (j, i) { f(j).tbwaga(i) }, notTrackable: function (i) { var j = f(i), k = !!j.hasClass("notrack") || (!!j.attr("rel") && j.attr("rel").search(/\bnotrack\b/ig) > -1) || !!f.gaHasData(i, "notrack"); return k }, isTrackable: function (q) { var n = f(q), m = f.tbwaga.notTrackable(q), k = f.gaHasData(q, "virtual"), j = f.gaHasData(q, "event"), l = f.gaHasData(q, "social"), i = !!n.hasClass("download") || (!!n.attr("rel") && n.attr("rel").search(/\bdownload\b/ig) > -1), o = !!n.hasClass("external") || (!!n.attr("rel") && n.attr("rel").search(/\bexternal\b/ig) > -1), p = !!n.hasClass("mailto") || (!!n.attr("rel") && n.attr("rel").search(/\bmailto\b/ig) > -1); return !m && (!!k || !!j || !!l || !!i || !!o || !!p) }, trackPageview: function (i) { _gaq.push(["_trackPageview", i]) }, trackEvent: function () { _gaq.push(["_trackEvent"].concat(f.makeArray(arguments))) }, trackSocial: function () { _gaq.push(["_trackSocial"].concat(f.makeArray(arguments))) } }); f.fn.tbwaga = function (i) { if (c[i]) { return c[i].apply(this, Array.prototype.slice.call(arguments, 1)) } else { if (typeof i === "object" || !i) { return c.init.apply(this, arguments) } else { f.error("Method " + i + " does not exist on jQuery.tbwaga") } } }; f.fn.gaData = function (j, i) { return this.data(j ? f.tbwaga.nsNormalize(j) : j, i) }; f.gaData = function (i, k, j) { return f(i).gaData(k, j) }; f.fn.gaRemoveData = function (i) { return this.removeData(f.tbwaga.nsNormalize(i)) }; f.gaRemoveData = function (i, j) { return f.removeData(i, f.tbwaga.nsNormalize(j)) }; f.gaHasData = function (i, j) { return !!f(i).gaData(j) }; var g = {}; g.find = f.find; f.find = function (j, l, k, i) { j = j.replace(/:gaData\(([^)]*)\)/g, "[data-" + (f.tbwaga.ns || "") + "$1]"); return g.find.call(this, j, l, k, i) }; f.extend(f.find, g.find); f.find.matches = function (i, j) { return f.find(i, null, null, j) }; f.find.matchesSelector = function (i, j) { return f.find(j, null, null, [i]).length > 0 } })(jQuery, this);
