Skip to content
Snippets Groups Projects
analytics.js 3.01 KiB
/* global define: false */
define(['jquery'], function($) {
	"use strict";
	var wdnProp = 'UA-3203435-1';
	var unlDomain = '.unl.edu';
	var Plugin;
	var thisURL = String(window.location);

	var gaWdnName = 'wdn';
	var gaWdn = gaWdnName + '.';

	// ga.js method for getting default tracker (with set account)
	var getDefaultGATracker = function() {
		var tracker = _gat._getTrackerByName();
		if (tracker._getAccount() !== 'UA-XXXXX-X') {
			return tracker;
		}

		return undefined;
	};

	// analytics.js method for getting default tracker
	var getDefaultAnalyticsTracker = function() {
		return ga.getByName('t0');
	};

	Plugin = {
		initialize : function() {
			ga('create', wdnProp, {
				name: gaWdnName,
				cookieDomain: unlDomain,
				allowLinker: true
			});
			Plugin.callTrackPageview();
		},

		callTrackPageview: function(thePage, trackInWDNAccount){
			var action = 'pageview', method = 'send', legacyMethod = '_trackPageview';

			if (!thePage) {
				ga(gaWdn+method, action);
				return;
			}

			if (trackInWDNAccount !== false) {
				trackInWDNAccount = true;
			}

			// First, track in the wdn analytics
			if (trackInWDNAccount) {
				ga(gaWdn+method, action, thePage);
			}

			// Second, track in local site analytics
			try {
				_gaq.push(function() {
					var tracker = getDefaultGATracker();
					if (tracker) {
						tracker[legacyMethod](thePage);
					}
				});

				ga(function() {
					var tracker = getDefaultAnalyticsTracker();
					if (tracker) {
						tracker[method](action, thePage);
					}
				});
			} catch(e) {}
		},

		callTrackEvent: function(category, evtaction, label, value, noninteraction) {
			var action = 'event', method = 'send', legacyMethod = '_trackEvent', evtOpt;

			if (noninteraction !== true) {
				noninteraction = false;
			}

			evtOpt = {
				eventCategory: category,
				eventAction: evtaction,
				eventLabel: label,
				eventValue: value,
				nonInteraction: noninteraction
			};

			ga(gaWdn+method, action, evtOpt);

			try {
				_gaq.push(function() {
					var tracker = getDefaultGATracker(), legacyValue = value;
					if (tracker) {
						if (typeof value !== "undefined") {
							legacyValue = Math.floor(value);
						}

						tracker[legacyMethod](category, evtaction, label, legacyValue, noninteraction);
					}
				});

				ga(function() {
					var tracker = getDefaultAnalyticsTracker();
					if (tracker) {
						tracker[method](action, evtOpt);
					}
				});
			} catch(e) {}
		},

		callTrackTiming: function(category, variable, value, label, sampleRate) {
			var action = 'timing', method = 'send', legacyMethod = '_trackTiming';

			ga(gaWdn+method, action, category, variable, value, label);

			try {
				_gaq.push(function() {
					var tracker = getDefaultGATracker();
					if (tracker) {
						tracker[legacyMethod](category, variable, value, label, sampleRate);
					}
				});

				ga(function() {
					var tracker = getDefaultAnalyticsTracker();
					if (tracker) {
						tracker[method](action, category, variable, value, label);
					}
				});

			} catch (e) {}
		}
	};

	return Plugin;
});