var extIdentifier  = '/outbound/';
var docIdentifier  = '/download';
var mailIdentifier = '/mailto/';



function listenToClicks() { 
	var domains    = ['mayer', 'dynavoxtech', 'localhost', 'taleo', 'dvox', 'pathable', 'adaptedlearning', 'dynavox.adobeconnect.com', 'vimeo.com', 'youtube.com', 'custhelp.com', 'bettshow.com', 'dynavox.confedge.com', 'dynavoxftp.com']; 
	var fileTypes  = [];

  
	
	if (document.getElementsByTagName) {
    var aTags = document.getElementsByTagName('a'); 

    ANCHOR:
    for (var i = 0; i < aTags.length; i++) { 
      if (aTags[i]=="")                                         {continue ANCHOR; }
      if (typeof aTags[i].hostname == "undefined")              {continue ANCHOR; }
      if (aTags[i].protocol.indexOf("javascript") != -1)        {continue ANCHOR; }
      if (aTags[i].protocol.indexOf("mailto") != -1)        {startListening(aTags[i],"click",trackMailto); continue ANCHOR; }
      
      DOMAIN:
      for (var j = 0; j < domains.length; j++) {
       
        if (aTags[i].href.indexOf(domains[j]) != -1) {
        	
          if (window.location.href.indexOf(domains[j]) == -1) { // We matched the link to an item in domains[], check to see if we are on the domain of the anchor tag, if not use linker

              if (aTags[i].href.indexOf('custhelp.com') > 0) {
                  continue ANCHOR;
              }

              startListening(aTags[i],"click",useLinker);
              continue ANCHOR; 

          } else {
			  continue ANCHOR; 		  
		  } // this anchor must be for the same domain, don't do anything special for this.
        }
      }
	
	// IE7 sees root relative ('/...') image link as external so treat it as an interal link
	if(aTags[i].href.substr(0,1) != '/' && aTags[i].href.substr(0,1) != '#'){
		startListening(aTags[i],"click",trackExternalLinks);        continue ANCHOR; // this anchor tag didn't match a domain from our array, it must be an external link
	}
	
   }
    
	}
}


// creates an event handler using browser specific method (addEventListener or AttachEvent) for our 3 functions below.
function startListening (obj,evnt,func) { 
  if (obj.addEventListener) { //debug += obj + "  " + func + "<br /><br />";
    obj.addEventListener(evnt,func,false);
  } else if (obj.attachEvent) { 
    obj.attachEvent("on" + evnt,func);
  }
}

// useLinker:  calls _link(); on the href in the <a> tag in question
function useLinker (evnt) {  //debug += "inside useLinker<br /><br />";
  var lnk; 
  if (evnt.srcElement) { 
    var elmnt = evnt.srcElement;
    while (elmnt.tagName != "A" && elmnt.tagName != "a") {
      var newelmnt = elmnt.parentNode;
      elmnt = newelmnt;
    }
	// if the pathname starts with a slash, don't put one in manually.s
	if (elmt.pathname.indexOf("/") === 0)
		lnk = "http://" + elmnt.hostname + elmnt.pathname + elmnt.search;
	else
		lnk = "http://" + elmnt.hostname + "/" + elmnt.pathname + elmnt.search;
	
  } else {
    lnk = "http://" + this.hostname + this.pathname + this.search;
  }

  if (typeof(pageTracker) == "object") { // make sure pageTracker is defined
	  pageTracker._link(lnk);
    if (evnt.preventDefault){ evnt.preventDefault();}
  evnt.returnValue = false
	}
}

// trackDocuments:  calls _trackPageview before downloading a file
function trackDocuments (evnt) { //debug += "inside trackDocuments<br /><br />";
  var url = (evnt.srcElement) ? "/" + evnt.srcElement.pathname : this.pathname; 
  url = docIdentifier + url;
  if (typeof(pageTracker) == "object") {//debug += "if pageTracker == object<br /><br />";
	  pageTracker._trackPageview(url);//ew.document.write(debug); 

  }
}

// trackExternalLinks:  calls _trackPageview before following an external link
function trackExternalLinks (evnt) {  //debug += "inside trackExternalLinks<br /><br />";
  var lnk; 
  if (evnt.srcElement) { 
    var elmnt = evnt.srcElement; 
    while (elmnt.tagName != "A" && elmnt.tagName != "a") { 
      var newelmnt = elmnt.parentNode; 
      elmnt = newelmnt; 
    } 
    lnk = extIdentifier +elmnt.hostname + "/" + elmnt.pathname + elmnt.search; 
  } else { 
    lnk = extIdentifier + this.hostname + this.pathname + this.search;
  } 
  if (typeof(pageTracker) == "object") {//debug += "if pageTracker == object<br /><br />";
	 pageTracker._trackPageview(lnk); //ew.document.write(debug); 

	}
  if (typeof(elmnt) != "undefined") {
    window.setTimeout(function(){ 
      if (elmnt.target == "_blank")
        {
            window.open("/site/redirect.aspx?dest=" + elmnt.href, "_blank");
      }else{
        location.href = "/site/redirect.aspx?dest=" + elmnt.href;
      }
    },200);
  } else { 
    th = this;
    window.setTimeout(function(){
      if (th.target == "_blank")
        {
            window.open("/site/redirect.aspx?dest=" + th.href, "_blank");
      }else{
        location.href= "/site/redirect.aspx?dest=" + th.href;
      }
    },200);
  }
  if (evnt.preventDefault){ evnt.preventDefault();}
  evnt.returnValue = false
}

function trackMailto (evnt) {
  var lnk;
    if (evnt.srcElement) { 
    var elmnt = evnt.srcElement; 
    while (elmnt.tagName != "A" && elmnt.tagName != "a") { 
      var newelmnt = elmnt.parentNode; 
      elmnt = newelmnt; 
    } 
    lnk = mailIdentifier + elmnt.href; 
  } else { 
    lnk = mailIdentifier + this.href; 
  } 
  if (typeof(pageTracker) == "object") {//debug += "if pageTracker == object<br /><br />";
	 pageTracker._trackPageview(lnk); //ew.document.write(debug); 

	}

}

startListening(window, 'load', listenToClicks); // register an event listener to run the script when the load event fires.
