/*
	taglinks.js, customised by Chris McGuire, Occupancy Marketing 2008 <chris@occupancymarketing.com>
	
	This javascript file tags each link to an external site, document for download, or email address 
	to be tracked by Google Analytics.
	
	Please note that this function is set to use the object pageTracker2, 
	rather than the standard pageTracker.
*/

if (document.getElementsByTagName) { 
	// Initialize external link handlers 
	var hrefs = document.getElementsByTagName("a"); 
	var bob = hrefs[48];
	for (var l = 0; l < hrefs.length; l++) { 
		//protocol, host, hostname, port, pathname, search, hash 
		if (!hrefs[l].href)
			continue;
		if (hrefs[l].protocol == "mailto:") { 
			startListening(hrefs[l],"click",trackMailto); 
		} else if (hrefs[l].hostname == location.host) { 
			var path = hrefs[l].pathname + hrefs[l].search; 
			var isDoc = path.match(/(?:doc|eps|exe|jpg|pdf|png|ppt|svg|vsd|xls|zip)($|\&)/); 
			if (isDoc) { 
				startListening(hrefs[l],"click",trackDownloads); 
			} 
		} else { 
			startListening(hrefs[l],"click",trackExternalLinks); 
		} 
	}
} 


function startListening (obj,evnt,func) { 
        if (obj.addEventListener) { 
                obj.addEventListener(evnt,func,false); 
        } else if (obj.attachEvent) { 
                obj.attachEvent("on" + evnt,func); 
        } 
} 


function trackMailto (evnt) { 
        var href = (evnt.srcElement) ? evnt.srcElement.href : this.href; 
        var mailto = "/mailto/" + href.substring(7); 
        if (typeof(pageTracker2) == "object") 
		pageTracker2._trackPageview(mailto); 
} 


function trackExternalLinks (evnt) { 
        var e = (evnt.srcElement) ? evnt.srcElement : this; 
        while (e.tagName != "A") { 
                e = e.parentNode; 
        } 
        var lnk = (e.pathname.charAt(0) == "/") ? e.pathname : "/" + e.pathname; 
        if (e.search && e.pathname.indexOf(e.search) == -1) 
        	lnk += e.search; 
        if (e.hostname != location.host) 
        	lnk = "/external/" + e.hostname + lnk; 
	if (typeof(pageTracker2) == "object") 
		pageTracker2._trackPageview(lnk); 
}

function trackDownloads (evnt) {
        var href = (evnt.srcElement) ? evnt.srcElement.href : this.href; 
	var download = "/download/" + href;
	if (typeof(pageTracker2) == "object") 
		pageTracker2._trackPageview(download); 
}
