// This javascript tags file downloads and external links in Google Analytics.
//Developed by Virante.com and BestWebPractices.com

function querySt(ji) { hu = window.location.search.substring(1); gy = hu.split("&"); for (i=0;i<gy.length;i++) { ft = gy[i].split("="); if (ft[0] == ji) { return ft[1]; } }
}

// If you set debug=1, then it will modify all anchor text of links so that you can see how the links are tagged.
var jsdbg = querySt('jsdbg');

if (document.getElementsByTagName) {
	// Initialize external link handlers
	var hrefs = document.getElementsByTagName("a");
	for (var l = 0; l < hrefs.length; l++) {
	// try {} catch{} block added by erikvold VKI
		try {
		//protocol, host, hostname, port, pathname, search, hash
  
		if (hrefs[l].protocol == "mailto:") { // Check if this is an email
			startListening(hrefs[l],"click",trackMailto);
			if(jsdbg==1) { hrefs[l].innerHTML = hrefs[l].innerHTML + ": isMailto"; }     

		} else if (hrefs[l].hostname == location.host) { // Check if this is an internal link
			var path = hrefs[l].pathname + hrefs[l].search;
			var isDoc = path.match(/\.(?:doc|docx|xls|xlsx|ppt|pdf|zip|txt|vsd|vxd|rar|exe|tar|gz)($|\&|\?)/);
			var isImg = path.match(/\.(?:gif|eps|jpg|png|svg|bmp|jpeg|psd|tiff)($|\&|\?)/);
			var isMov = path.match(/\.(?:wma|mov|avi|wmv|mp4|webm|flv)($|\&|\?)/);
			var isMus = path.match(/\.(?:mp3|m4a|wav|aac|ogg)($|\&|\?)/);
			var isSys = path.match(/\.(?:js|css|xml)($|\&|\?)/);    
			var isGoTo = path.match(/(?:\/goto\/)/);
			
			if (isDoc) {
				startListening(hrefs[l],"click",trackDocumentLinks);
				if(jsdbg==1) { hrefs[l].innerHTML = hrefs[l].innerHTML + ": isDoc"; }
			} else if (isImg) {
				startListening(hrefs[l],"click",trackImageLinks);
				if(jsdbg==1) { hrefs[l].innerHTML = hrefs[l].innerHTML + ": isImg"; }
			} else if (isMov) {
				startListening(hrefs[l],"click",trackMovieLinks);
				if(jsdbg==1) { hrefs[l].innerHTML = hrefs[l].innerHTML + ": isMov"; }
			} else if (isMus) {
				startListening(hrefs[l],"click",trackMusicLinks);
				if(jsdbg==1) { hrefs[l].innerHTML = hrefs[l].innerHTML + ": isMus"; }
			} else if (isSys) {
				startListening(hrefs[l],"click",trackSystemLinks);
				if(jsdbg==1) { hrefs[l].innerHTML = hrefs[l].innerHTML + ": isSys"; }
			} else if (isGoTo) {
				startListening(hrefs[l],"click",trackGoToLinks);
				if(jsdbg==1) { hrefs[l].innerHTML = hrefs[l].innerHTML + ": isGoTo"; }
			}
		} else {  
				startListening(hrefs[l],"click",trackExternalLinks);
				if(jsdbg==1) { hrefs[l].innerHTML = hrefs[l].innerHTML + ": isExternal"; }
		}
    }
	catch(e){
        continue;
    }
   }
}

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(_gaq) == "object") _gaq.push(['_trackEvent', 'Mailto', mailto]);
}

function trackDocumentLinks (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 (typeof(_gaq) == "object") _gaq.push(['_trackEvent', 'Document Download', lnk]);
}

function trackImageLinks (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 (typeof(_gaq) == "object") _gaq.push(['_trackEvent', 'Image Download', lnk]);
}

function trackMovieLinks (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 (typeof(_gaq) == "object") _gaq.push(['_trackEvent', 'Movie Download', lnk]);
}

function trackMusicLinks (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 (typeof(_gaq) == "object") _gaq.push(['_trackEvent', 'Music Download', lnk]);
}

function trackSystemLinks (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 (typeof(_gaq) == "object") _gaq.push(['_trackEvent', 'System File Download', lnk]);
}

function trackGoToLinks (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 (typeof(_gaq) == "object") _gaq.push(['_trackEvent', 'GoTo', lnk, 'External Affiliate Site']);
}

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 = e.hostname + lnk;
  if (typeof(_gaq) == "object") _gaq.push(['_trackEvent', 'External Link', lnk, 'Other External Link', 5]);
}
