// Google Analytics - Custom measurement functions
// (c) Trainers' House
// 2008 - 2009
// (c) Satama Interactive
// 2006 - 2008

var urchinAccountIDCode = 'UA-1461051-1'; // Insert UA-account code here for functionality

//
/* Measurement code start - Do not change anything beyond this line! */
//

var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));

function urchinTrack(){
	// Variable default values
	this.urchinAccountIDCode = (typeof(urchinAccountIDCode) != "undefined") ? urchinAccountIDCode : 'UA-XXXXXXX-X'; // Default account ID (useful for multidomain tracking scripts)
	this.urchinLocalization = (typeof(urchinLocalization) != "undefined") ? urchinLocalization : ''; // Localization content group, if set, must end with a slash, e.g. "english/". Default: no value
	this.urchinDownload = (typeof(urchinDownload) != "undefined") ? urchinDownload : '\.pdf$|\.zip$|\.rar$|\.gz$|\.bz2$|\.exe$|\.tar$|\.7z$|\.ppt$|\.doc$|\.xls$'; // Download types or dynamic files defined as downloads, delimiter character: |
	this.urchinPageName = (typeof(urchinPageName) != "undefined") ? urchinPageName : ''; // Page name (leave empty if you don't know what you're doing)
	this.urchinPageNameToLower = (typeof(urchinPageNameToLower) != "undefined") ? urchinPageNameToLower : 'false'; // Force lower case page & content group names. Recommended. NOTE: Added to improve data integrety. May break site overlay
	this.urchinInternalDomains = (typeof(urchinInternalDomains) != "undefined") ? urchinInternalDomains : ''; // Comma separated list of domains concidered as internal links (not tracked as exitlinks) (format: '|domain.com|domain.net')


	var uponorTrack = _gat._getTracker(this.urchinAccountIDCode);
	uponorTrack._initData(); // New GA data initalization
	
		var tmpDomain = document.domain.split(".");
		if(document.domain.search(".co.") == -1 && document.domain.search(".com.") == -1) {
			tmpDomain = tmpDomain.slice(-2);
		} else {
			tmpDomain = tmpDomain.slice(-3);
		}
		this.urchinDomain = tmpDomain.join(".");
	
		// Main function, sends Google Analytics "page view" hit.
	this.urchinRun = function(urchinPageName){
		if(urchinPageName != null)
		{
      this.urchinPageName = urchinPageName;
    }
		if(this.urchinPageName&&this.urchinPageName != "") {
				this.urchinPageName = this.urchinPageName;
		} else {
				this.urchinPageName = location.pathname + location.search; 
		}
		if(this.urchinPageNameToLower == "true")
		{
		  this.urchinPageName = this.urchinPageName.toLowerCase();
		}
		uponorTrack._trackPageview(this.urchinPageName);
		this.urchinLinks();
	}
	
	// This function enables tracking of anchor (a) HTML elements. Includes:
	// - Download links
	// - Exit links
	// - Mail links
	// For development, add more functions.
	this.urchinLinks = function(){
		var a = document.getElementsByTagName('a');
		var domain = /^(http|https):\/\/([a-z-.0-9]+)[\/]{0,1}/i.exec(window.location);
		var isDownload = new RegExp("("+this.urchinDownload+")", "i");
		var isInternalLink = new RegExp("("+this.urchinDomain+this.urchinInternalDomains+")", "i");
		for(var i = 0; i < a.length; i++){
			var actionBind = 'click'; // What event to bind to (do not define e.g. "ONclick", just "click")? Default "click"
			var actionIdent = '/'; // Content group to be used? Default '/'
			// Until a better solution presents itself, change "a[i].href" to "a[i].alt", "a[i].title" or "a[i].innerHTML" depending on what you want to be the link name
			// Wargning DO NOT USE innerHTML unless you are 110% sure there are no image etc. links with HTML as the link text. Will ruin your day.
			
			if(a[i].protocol != "javascript:") {
				if(a[i].protocol == "mailto:") {
					this.runTracker('email', a[i], a[i].href, actionBind, actionIdent, false);
				}  else if(this.urchinDownload && isDownload.test(a[i].href)){
					this.runTracker('downloads', a[i], a[i].href, actionBind, actionIdent, false);
				} else if(!isInternalLink.test(a[i].href)) {
					this.runTracker('exit', a[i], a[i].href, actionBind, actionIdent, false);
				}
			}
		}
	}
	
	this.runTracker = function(pageType, pageItem, pageName, pageBind, pageIdent, pageCondition) {
		switch (pageType)
		{
			case "email":
				urchinEventBind(pageItem, pageBind, function(){ uponorTrack._trackPageview('/Email'+pageIdent+pageName.substring(7)); }, pageCondition);
				break;
			case "downloads":
				urchinEventBind(pageItem, pageBind, function(){ uponorTrack._trackPageview('/Download'+pageIdent+pageName.replace(/^(http|https):\/\/([a-z-.0-9]+)\//i, '')); }, pageCondition);
				break;
			case "exit":
				urchinEventBind(pageItem, pageBind, function(){ uponorTrack._trackPageview('/Offsite'+pageIdent+pageName.replace(/^http:\/\/|https:\/\//i, '')); }, pageCondition);
				break;
			default:
		}
	}
	return true;
}

// Helper functions

function urchinEventBind(obj, evt, newhandler, captures)
{
	if (obj.attachEvent)
		obj.attachEvent('on' + evt, newhandler);
	else if (obj.addEventListener)
		obj.addEventListener(evt, newhandler, captures);
	else
	{
		var oldhandler;
		if (oldhandler = obj['on' + evt])
			obj['on' + evt] = function() { oldhandler(); newhandler(); }
		else obj['on' + evt] = newhandler;
	}
}

// End of helper functions
