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(pageTracker) == "object") {pageTracker._trackPageview(mailto);}
}
function trackDownloadLinks(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;}
        lnk = "/downloads/" + e.hostname + lnk;
        if (typeof(pageTracker) == "object") {pageTracker._trackPageview(lnk);}     
}
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 = "/clickout/" + e.hostname + lnk;}
        if (typeof(pageTracker) == "object") {pageTracker._trackPageview(lnk);}     
}
function tracksetLinker(evnt) {
        var e = (evnt.srcElement) ? evnt.srcElement : this;
        while (e.tagName != "A") { e = e.parentNode; }        
        if (typeof(pageTracker) == "object") {e.href="javascript:pageTracker._link('"+e.href+"',1)"; }
}

function array_inarray(haystack,needle){
  for (var i in haystack) { if (haystack[i] == needle) { return i;} }
  return -1;
}

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].protocol == "mailto:") { startListening(hrefs[l],"click",trackMailto); }
    else if ( (hrefs[l].href !== "") && (hrefs[l].hostname !== "") )
    {
      if ( (hrefs[l].hostname == location.host) || (typeof(trackhostnames) == "object" && array_inarray(trackhostnames,hrefs[l].hostname)>-1) ) {
        var path = hrefs[l].pathname + hrefs[l].search;
        var isDoc = path.match(/(?:doc|eps|jpg|png|svg|xls|ppt|pdf|xls|zip|txt|vsd|vxd|js|css|rar|exe|wma|mov|avi|wmv|mp3)($|\&)/);
        if (isDoc) { startListening(hrefs[l],"click",trackDownloadLinks); }
      }
      else {
        if ( (typeof(trackhostnames_linkout) == "object") && (array_inarray(trackhostnames_linkout,hrefs[l].hostname)>-1) ) { startListening(hrefs[l],"click",tracksetLinker); }
        else { startListening(hrefs[l],"click",trackExternalLinks); }
      }
    }
  }
}