// We dont want the try adding the tracking code until the page links are loaded
if (document.addEventListener) {
  document.addEventListener("DOMContentLoaded", addEvents, null); // Firefox
} else {
  addEvents(); // IE: Call the function immediately because the script is referenced with the defer attribute supported by IE
}

function addEvents() {
  // Quit if this function has already been called
  if (arguments.callee.done) return;

  // Flag this function so we don't do the same thing twice
  arguments.callee.done = true;

  // Add Tracking to links
  for (i=0; i <document.links.length; i++) {
    var x = document.links[i];
    // Attach tracking code to specific file types
    var extensions = new RegExp(".+\.(zip|pdf|xls|doc|csv|txt|ppt|xml|rtf|avi)$");
    var doc = x.href.toLowerCase().match(extensions);
    if (doc) {
      if (x.attachEvent) {
      x.attachEvent('onclick', function () {TrackFile(window.event.srcElement)}); // IE
      } else {
        x.addEventListener('click', function () {TrackFile(this)}, false); // Firefox
      }
    }
    // Attach tracking code to email addresses (links that include "@")
    var address = x.href.toLowerCase().match("@");
    if (address) {
	  if (x.attachEvent) {
	    x.attachEvent('onclick', function () {TrackMail(window.event.srcElement)}); // IE
	  } else {
	    x.addEventListener('click', function () {TrackMail(this)}, false); // Firefox
      }
    }
    // Attach tracking code to external links
	var external = new RegExp("^http://kati.tiuhti.net|^mailto");
	var doc = x.href.toLowerCase().match(external);
	if (!doc) {
	  if (x.attachEvent) {
	    x.attachEvent('onclick', function () {TrackExternal(window.event.srcElement)}); // IE
	  } else {
	    x.addEventListener('click', function () {TrackExternal(this)}, false); // Firefox
	  }
    }
  }
}

function TrackFile(link) {
  // Remove the path (we only want to know the document name.)
  var lastSlash = link.href.lastIndexOf("/");
  var docName = link.href.toLowerCase().substring(lastSlash, link.href.length);
  // Replace special characters
  docName = docName.replace(/%20/g, " ");

  // urchinTracker("/downloads" + docName);

  pageTracker._trackPageview("/downloads" + docName);
}

function TrackMail(link) {
  // We need to delete "mailto:" from the link
  var mailAddress = link.href.toLowerCase().substring(7, link.href.length);

  // urchinTracker("/emailaddresses/" + mailAddress);
 
  pageTracker._trackPageview("/emailaddresses/" + mailAddress);
}

function TrackExternal(link) {
  var slashes = link.href.indexOf("//") + 2;
  var externalLink = link.href.toLowerCase().substring(slashes, link.href.length);

  // urchinTracker("/externallinks/" + externalLink);
 
  pageTracker._trackPageview("/externallinks/" + externalLink);
}
