if (document.getElementsByTagName) {
// Initialize external link handlers
var hrefs = document.getElementsByTagName("a");
for (var l = 0; l < hrefs.length; l++) {
// try {} catch{} block 
try{
//protocol, host, hostname, port, pathname, search, hash
if (hrefs[l].protocol == "mailto:") {
startListening(hrefs[l],"click",trackMailto);
} else if (hrefs[l].protocol == "tel:") {
startListening(hrefs[l],"click",trackTelto);
} else if (hrefs[l].hostname == location.host) {
var path = hrefs[l].pathname + hrefs[l].search;
var re=new RegExp("/.(? :doc|docx|eps|jpg|png|svg|xls|xslx|ppt|pptx|pdf|zip|txt|vsd|vxd|js|rar|exe|wma|mov|avi|wmv|mp3)($|&|?)/");
var isDoc = path.match(re);
if (isDoc) {
startListening(hrefs[l],"click",trackExternalLinks);
}
} else if (!hrefs[l].href.match(/^[removed]/)) {
startListening(hrefs[l],"click",trackExternalLinks);
}
}
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);
_gaq.push(['_trackEvent', 'Mail', 'ClickonMail', mailto]);
}

function trackTelto (evnt) {
var href = (evnt.srcElement) ? evnt.srcElement.href : this.href;
var telto = "/telto/" + href.substring(4);
_gaq.push(['_trackEvent', 'Phone', 'ClickonPhone', telto]);
}

function trackExternalLinks (evnt) {
var e = (evnt.srcElement) ? evnt.srcElement : this;
while (e.tagName != "A") {
e = e[removed];
}
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;
_gaq.push(['_trackEvent', 'Documents', 'Downloads', lnk]);

}
