/****************************************************
     Author: Brian J Clifton
     Url: http://www.advanced-web-metrics.com
     This script is free to use as long as this info is left in

     Combined script for tracking external links, file downloads and mailto links

     All scripts presented have been tested and validated by the author and are believed to be correct
     as of the date of publication or posting. The Google Analytics software on which they depend is
     subject to change, however; and therefore no warranty is expressed or implied that they will
     work as described in the future. Always check the most current Google Analytics documentation.

****************************************************/


// Only links written to the page (already in the DOM) will be tagged
// This version is for ga.js (July 15th 2008)

function addLinkerEvents() {
	var as = document.getElementsByTagName("a");

	// List of local sites that should not be treated as an outbound link.
	// Include at least your own domain here
	var extTrack = internalSite;

	//List of file extensions on your site. Add/edit as you require
	var extDoc = docFileExt;

	/*If you edit no further below this line, Top Content will report as follows:
		/external/url-of-external-site
		/downloads/filename
		/mailto/email-address-clicked
	*/

	for(var i=0; i<as.length; i++) {
		var flag = 0;
		var tmp = as[i].getAttribute("onclick");

		// IE6-IE7 fix (null values error) with thanks to Julien Bissonnette for this
		if (tmp != null) {
			tmp = String(tmp);
			if (tmp.indexOf('urchinTracker') > -1 || tmp.indexOf('_trackPageview') > -1) continue;
    	}

		// Tracking outbound links off site - no GATC
		for (var j=0; j<extTrack.length; j++) {
			if (as[i].href.indexOf(extTrack[j]) == -1 && as[i].href.indexOf('google-analytics.com') == -1 ) {
				flag++;
			}
		}

		// Bug fix : put the urchinTracker function at the beginning of the onclick event to be sure that the function isn't skipped if a "return: false;" is present
		// Fix provided by Julien Bissonnette
		if (flag == extTrack.length){
			var splitResult = as[i].href.split("//");
			if(splitResult[1] != null) {
				as[i].setAttribute("onclick", "pageTracker._trackPageview('/external/" +splitResult[1]+ "');"+((tmp != null) ? tmp+";" : ""));
			}
		}

		// Tracking electronic documents - doc, xls, pdf, exe, zip
		for (var j=0; j<extDoc.length; j++) {
			// if (as[i].href.indexOf(extTrack[0]) != -1 && as[i].href.indexOf(extDoc[j]) != -1) {
			// changed test to check flag, not simply the first domain listed in extTrack --- JJM 9/29/08
			if (flag < extTrack.length && as[i].href.indexOf(extDoc[j]) != -1) {
				// var splitResult = as[i].href.split(extTrack[0]);
				// change split to use "/" so not dependent on domain; slice results using index of -1 to
				// return either the document name (if "/", as usually done, separates elements of URL)
				// or the entire href. --- JJM 9/29/08
				var splitResult = as[i].href.split("/");
				as[i].setAttribute("onclick", "pageTracker._trackPageview('/downloads/" + splitResult.slice(-1)+ "');" + ((tmp != null) ? tmp+";" : ""));
				break;
			}
		}

		// added to track mailto links 23-Oct-2007
		if (as[i].href.indexOf("mailto:") != -1  && as[i].href.indexOf("gashbug@google.com") == -1 ) {
			var splitResult = as[i].href.split(":");
			as[i].setAttribute("onclick", "pageTracker._trackPageview('/mailto/" +splitResult[1]+ "');" + ((tmp != null) ? tmp+";" : ""));
			break;
		}
	}
}

