///////
// gaAddons.js
// 	Author: StÃ©phane Hamel - shamel67@gmail.com - http://immeria.net
//  Contributors:
//	- Andy Edmonds - http://alwaysbetesting.com
//	- Damon Gudaitis - http://www.damongudaitis.com/
//	
///////

var bUseEventForOutbound = true; // Set to false to use trackPageView for outbount links
var bUseEventForDownload = true; // Set to false to use trackPageView for downloads
var gaA_fileTypes = new RegExp(/\.(docx*|xlsx*|pptx*|exe|zip|pdf|xpi)$/i);
// Indicate each file extension that needs to be tracked, gaA_fileTypes is the regular expression that matches downloadable files
var gaA_pageTracker = pageTracker;	// Should be set to the name of your tracker variable

if (document.getElementsByTagName) {
    var hrefs = document.getElementsByTagName('a');
    for (var l = 0, m = hrefs.length; l < m; l++) 
        if (gaA_fileTypes.test(hrefs[l].pathname)) 
            startListening(hrefs[l], "click", trackDocuments);
        else 
            if (hrefs[l].hostname != location.hostname) 
                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 trackDocuments(evnt){
    if (typeof gaA_pageTracker != "object") 
        return;
    bUseEventForDownload ? gaA_pageTracker._trackEvent("download", "click", (evnt.srcElement) ? "/" + evnt.srcElement.pathname : this.pathname) : gaA_pageTracker._trackPageView("/download/" + (evnt.srcElement) ? "/" + evnt.srcElement.pathname : this.pathname);
}

function trackExternalLinks(evnt){
    if (typeof gaA_pageTracker != "object") 
        return;
    var elmnt = evnt.srcElement;
    if (elmnt) {
		while (elmnt.tagName != "A") 
			elmnt = elmnt.parentNode;
		if (/http/.test(elmnt.protocol))
			bUseEventForOutbound ? gaA_pageTracker._trackEvent("outbound", "click", elmnt.hostname + "/" + elmnt.pathname + elmnt.search) : gaA_pageTracker._trackPageView("/outbound/" + elmnt.hostname + "/" + elmnt.pathname + elmnt.search);
		if (elmnt.protocol == "mailto:") 
			bUseEventForOutbound ? gaA_pageTracker._trackEvent("mailto", "click", elmnt.href.replace(/mailto:/,"")) : gaA_pageTracker._trackPageView("/mailto/" + elmnt.href.replace(/mailto:/,""));
	}
	else {
		if (/http/.test(this.protocol))
			bUseEventForOutbound ? gaA_pageTracker._trackEvent("outbound", "click", this.hostname + this.pathname + this.search) : gaA_pageTracker._trackPageView("/outbound/", this.hostname + this.pathname + this.search);
		if (this.protocol == "mailto:")
			bUseEventForOutbound ? gaA_pageTracker._trackEvent("mailto", "click", this.href.replace(/mailto:/,"")) : gaA_pageTracker._trackPageView("/mailto/", this.href.replace(/mailto:/,""));
	}
}

/// EOF ///