// 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 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://(www|br|cn)\.vaisala\.(com|co\.jp|de|fi|fr|nl|se)|^mailto");
	var link = x.href.toLowerCase().match(external);
	if (!link) {
	  if (x.attachEvent) {
	    x.attachEvent('onclick', function () {TrackExternal(window.event.srcElement)}); // IE
	  } else {
	    x.addEventListener('click', function () {TrackExternal(this)}, false); // Firefox
	  }
    }
    // Attach tracking code to specific file types (Do this last to avoid mixing with external files.)
    var extensions = new RegExp(".+\.(zip|pdf|xls|doc|csv|txt|ppt|xml|rtf)$");
    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
      }
    }
  }
}

function TrackFile(link) {
  // Remove the path (we only want to know the document name.)
  //var lastSlash = link.href.lastIndexOf("/");
  //var docName = link.href.toLowerCase();
  var docName = link.pathname.toLowerCase();
  // Replace special characters
  docName = docName.replace(/%20/g, " ");

  urchinTracker(docName);
}

function TrackMail(link) {
  // We need to delete "mailto:" from the link
  var mailAddress = link.href.toLowerCase().substring(7, link.href.length);

  urchinTracker(_udl.pathname + _udl.search + "/" + mailAddress);
}

function TrackExternal(link) {
  var slashes = link.href.indexOf("//") + 2;
  var externalLink = link.href.toLowerCase().substring(slashes, link.href.length);

  urchinTracker("/external/" + externalLink);
}
