var utm_module=window.location.href.match(/([^\/\.]*)\.(html|aspx?)/i);
var utm_pathname=top.location.pathname;
try{
	if(currentPageType=='PopUp'){
		utm_module = window.opener.location.href.match(/([^\/\.]*)\.(html|aspx?)/i);
		utm_pathname = window.opener.top.location.pathname;
	}
}catch(ex){}

if( utm_module == null )
{
	utm_module='';
}


var utm_modulestep = location.search.match(/action=([^&#]*)/i);

TM.GoogleAnalytics = {
	extTrack: ["localhost", "127.0.0.1", "tourisme-montreal.org", "test.discusswireless.com", "tm-qaweb2008.cactus.net"],
	extDoc: [".doc", ".xls", ".exe", ".zip", ".pdf", ".ppt", ".wav", ".mp3", ".mov", ".mpg", ".avi", ".wmv"],
	utm_pagename: "",
	utm_account: "UA-4406200-1",
	utm_defaultparams: "",
	utm_moreparams: "",
	trackPageview: function(){},
	doHeader: function() {
		this.initialize();
	},

	doFooter: function() {
		this.trackPagename();
		this.addLinkerEvents("");
	},

	initialize: function() {
		if (typeof (currentLanguageId) != "undefined") {
			if (currentLanguageId == 1) {
				this.utm_defaultparams = "utm_language=fr&utm_currentSiloId=" + currentSiloId + "&utm_currentWebSiloSectionId=" + currentWebSiloSectionId + "&utm_currentThemeId=" + currentThemeId + "&utm_currentUserAnonymous=" + currentUserAnonymous + "&utm_currentCampaign=" + currentCampaign;
			}
			if (currentLanguageId == 2) {
				this.utm_defaultparams = "utm_language=en&utm_currentSiloId=" + currentSiloId + "&utm_currentWebSiloSectionId=" + currentWebSiloSectionId + "&utm_currentThemeId=" + currentThemeId + "&utm_currentUserAnonymous=" + currentUserAnonymous + "&utm_currentCampaign=" + currentCampaign;
			}
		}
		if (typeof (window._gat) != "undefined") {
			window.pageTracker = _gat._getTracker(this.utm_account);
			if (location.host.indexOf("tourisme-montreal.org") > -1) {
				pageTracker._setDomainName(".tourisme-montreal.org");
			}
			//this.addSearchEngines();
		}
	},

	_AttachEvent: function(oid, eventName, eventDef) {
		if (oid.id == '' || oid.id == null || typeof (oid.id) == 'undefined')
			return;
		var o = $get(oid.id);
		if (null != o && (typeof (o.ga) == 'undefined' || o.ga != true)) {
			$addHandler(o, eventName, (typeof (eventDef) == 'string') ? new Function(eventDef) : eventDef);
			o.ga = true;
		}
	},
	

	/****************************************************
	Based on Brian Clifton's script
	Url: http://www.advanced-web-metrics.com
	 
	Author: Julien Bissonnette (Magnet Search Marketing)
	 
	Version: 2.06
	****************************************************/
	addLinkerEvents: function(gaparams) {
		var as = document.getElementsByTagName("a");
		var areas = document.getElementsByTagName("area");

		var tags = new Array(as.length + areas.length);
		for (var i = 0; i < as.length; i++) {
			tags[i] = as[i];
		}
		for (var i = 0; i < areas.length; i++) {
			tags[as.length + i] = areas[i];
		}

		for (var i = 0; i < tags.length; i++) {
			var flag = true;
			var found = false;
			var current_host = null;
			var currentOnclick = '';

			if (tags[i].href.indexOf('google-analytics.com') != -1 || tags[i].href.toLowerCase().indexOf('javascript:') != -1) continue;

			// Fix Magnet to prevent exit links on <a> tags without href attribute
			if (tags[i].href.length > 0) {
				// Tracking electronic documents
				for (var j = 0; j < this.extDoc.length; j++) {
					if (tags[i].href.search(eval('/' + this.extDoc[j].replace(/\./, '\\.') + '$/i')) != -1) {
						var result = tags[i].href.replace(/https?:\/\//, '');
						TM.GoogleAnalytics._AttachEvent(tags[i], 'click', 'TM.GoogleAnalytics.customLink("download","' + JsLib.Utilities.ReplaceQuote(result,' ') + '","' + JsLib.Utilities.ReplaceQuote(gaparams,' ') + '")');
						found = true;
						break;
					}
				}

				// Tracking mailto links
				if (tags[i].href.search(/mailto:/i) != -1) {
					var result = tags[i].href.replace(/mailto:/i, '');
					TM.GoogleAnalytics._AttachEvent(tags[i], 'click', 'TM.GoogleAnalytics.customLink("mailto","' + JsLib.Utilities.ReplaceQuote(result,' ') + '","' + JsLib.Utilities.ReplaceQuote(gaparams,' ') + '")');
					found = true;
				}

				if (found == false) {
					// Tracking outbound links
					for (var j = 0; j < this.extTrack.length; j++) {
						var regex = new RegExp('^(http|https):\/\/([^/]*)' + this.extTrack[j] + '.*', "i");
						if (regex.test(tags[i].href)) {
							flag = false;
							break;
						}
					}
					if (flag) {
						var result = tags[i].href.replace(/https?:\/\//, '');
						TM.GoogleAnalytics._AttachEvent(tags[i], 'click', "TM.GoogleAnalytics.customLink('exit','" + JsLib.Utilities.ReplaceQuote(result,' ') + "','" + JsLib.Utilities.ReplaceQuote(gaparams,' ') + "')");
					}
				}
			}
		}
	},

	getDirectLinkValue: function() {
		var pagenamevalue = location.pathname;

		if (typeof (currentPageName) != "undefined" && currentPageName.length > 0) {
			pagenamevalue = currentPageName;
		}
		return pagenamevalue;
	},

	customLink: function(utm_action, utm_actionelement, gaparams) {
		if (typeof (utm_actionelement) == "undefined" || utm_actionelement == "") {
			utm_actionelement = utm_action;
		}
		this.trackPagename("utm_action=" + utm_action + "&utm_actionelement=" + utm_actionelement + (gaparams.length > 0 ? "&" + gaparams : ""));
	},

	setDefaultPagename: function(moreparams) {
		var pagename = this.getDirectLinkValue();
		this.setPagename(pagename, moreparams);
	},

	setPagename: function(basePagename, moreparams) {
		this.utm_moreparams = typeof (moreparams) != "undefined" ? moreparams : "";
		this.utm_pagename = basePagename;
	},

	trackPagename: function(gaparams) {
		if (typeof (pageTracker) != "undefined") {
			if (this.utm_pagename == "") {
				this.setDefaultPagename("");
			}
			var queryparams = this.utm_defaultparams + (this.utm_defaultparams.length > 0 && this.utm_moreparams.length > 0 ? "&" : "") + this.utm_moreparams + (typeof (gaparams) != "undefined" && gaparams.length > 0 ? ((this.utm_defaultparams.length > 0 || this.utm_moreparams.length > 0 ? "&" : "") + gaparams) : "");
			var pageview = this.utm_pagename + (queryparams.length > 0 ? ((this.utm_pagename.indexOf("?") > -1 ? "&" : "?") + queryparams) : "");
			pageTracker._trackPageview(pageview);
		}
	},

	/*
	* getCookie(): given a cookie name, get its value. Returns null if the cookie can't be found.
	* From http://www.webreference.com/js/column8/functions.html
	*
	*/
	getCookie: function(name) {
		var dc = document.cookie;
		var prefix = name + "=";
		var begin = dc.indexOf("; " + prefix);
		if (begin == -1) {
			begin = dc.indexOf(prefix);
			if (begin != 0) return null;
		} else
			begin += 2;
		var end = document.cookie.indexOf(";", begin);
		if (end == -1)
			end = dc.length;
		return unescape(dc.substring(begin + prefix.length, end));
	},

	/*
	* utmvCookieCheck(): given a value, read the __utmv cookie and see if
	* that value is already set. Return true if so, false otherwise.
	*
	*/
	utmvCookieCheck: function(value) {
		var utmvCookie = this.getCookie("__utmv");

		if (utmvCookie == null)
			return false;

		// get rid of the Google's domain prefix ID, which appear on all
		// GA cookies
		utmvCookie = utmvCookie.replace(/^\d*\./, '');

		return (utmvCookie == value) ? true : false;
	},

	trackUserDefined: function(userDefinedValue) {
		if (typeof (pageTracker) != "undefined") {
			// from: http://www.startupcto.com/marketing-tech/google-analytics/setvar-and-the-zero-bounce-rate-bug
			if (!this.utmvCookieCheck(userDefinedValue)) {
				pageTracker._setVar(userDefinedValue);
			}
		}
	},

	trackEvent: function(category, action, label, value) {
		if (typeof (pageTracker) != "undefined") {
			pageTracker._trackEvent(category, action, label);
		}
	},

	trackCommerce: function(category, product, sku) {
		if (typeof (pageTracker) == "undefined") {
			return;
		}

		var timeObj = new Date;
		var unixTimeMs = timeObj.getTime();
		var unixTime = parseInt(unixTimeMs / 1000);

		var t = this.utm_defaultparams;
		var z = 0;
		var utm_prefix = "";
		while (t) {
			var y = t.indexOf("&");
			y = y < 0 ? t.length : y;
			t = t.substring(0, y);
			if (t.indexOf("=")) {
				utm_prefix += t.substring(t.indexOf("=") + 1, t.length) + "-";
			}
			z += y + 1;
			t = this.utm_defaultparams.substring(z, this.utm_defaultparams.length);
			t = z < this.utm_defaultparams.length ? t : '';
		}

		var orderID = utm_prefix + pageTracker._visitCode() + '-' + unixTime;

		pageTracker._addTrans(
			orderID,             			// order ID - required 
			"", 							// affiliation or store name
			0,            					// total - required
			"",             				// tax
			"",          					// shipping
			"",  		       				// city
			"",       						// state or province
			"" 			            		// country
		);

		pageTracker._addItem(
			orderID,             			// order ID - required
			sku, 						// SKU/code
			product,         				// product name
			category,     					// category or variation
			0,            					// unit price - required
			1                 				// quantity - required
		);

		pageTracker._trackTrans();
	}
};
