/*
	taglinks.js, customised by Chris McGuire, Occupancy Marketing 2009 <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.
*/

var Taglinks = {		
		initialiseTaglinks : function()
		{			
			// If we have access to the function getElementsByTagName
			if (document.getElementsByTagName) { 
				// Initialize external link handlers 
				var hrefs = document.getElementsByTagName("a"); 
					
				for (var l = 0; l < hrefs.length; l++) { 
					//protocol, host, hostname, port, pathname, search, hash 		
					
					if (!hrefs[l].href)
						continue;	// Skip this iteration if no href provided.
						
					if (hrefs[l].protocol == "mailto:") { 
						Taglinks.startListening(hrefs[l],"click", Taglinks.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) { 
							Taglinks.startListening(hrefs[l],"click", Taglinks.trackDownloads); 
						} 
						
					} else { 
						Taglinks.startListening(hrefs[l],"click", Taglinks.trackExternalLinks); 
					} 
				}
			}
		},
	
		startListening : function(obj,evnt,func) { 
	        if (obj.addEventListener) { 
	                obj.addEventListener(evnt,func,false); 
	        } else if (obj.attachEvent) { 
	                obj.attachEvent("on" + evnt,func); 
	        } 
		},
	
		trackMailto : function(evnt) { 
	        var href = (evnt.srcElement) ? evnt.srcElement.href : href; 
	        var mailto = "/mailto/" + href.substring(7); 
	        	
	        if (typeof(pageTracker) == "object") 
				pageTracker._trackPageview(mailto); 
		},
	
		trackExternalLinks : function(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(pageTracker) == "object") 
				pageTracker._trackPageview(lnk); 						
		},
	
		trackDownloads : function (evnt) {
	        var href = (evnt.srcElement) ? evnt.srcElement.href : href; 
	        	
			var download = "/download/" + href;
			
			if (typeof(pageTracker) == "object") 
				pageTracker._trackPageview(download); 				
				
			return false;
		},		
		
		chain : function(f) { 
  			var o=window.onload;window.onload=function() {if(o) o();f();}
  		} 
};

Taglinks.chain(Taglinks.initialiseTaglinks);