var addListener = function() {
  if ( window.addEventListener ) {
    return function(el, type, fn) {
      el.addEventListener(type, fn, false);
    };
  } else if ( window.attachEvent ) {
    return function(el, type, fn) {
      var f = function() {
        fn.call(el, window.event);
      };
      el.attachEvent('on'+type, f);
    };
  } else {
    return function(el, type, fn) {
      element['on'+type] = fn;
    }
  }
}();
function domReady(init) {
  /* for Mozilla */
  if (document.addEventListener) {
    document.addEventListener("DOMContentLoaded", init, false);
    return;
  }
  /* for Internet Explorer */
  /*@cc_on @*/
  /*@if (@_win32)
    document.write("<script id=__ie_onload defer><\/script>");
    var script = document.getElementById("__ie_onload");
    script.onreadystatechange = function() {
      if (this.readyState == "complete") {
        init(); // call the onload handler
      }
    };
    return;
  /*@end @*/
  /* for Safari */
  if (/WebKit/i.test(navigator.userAgent)) { // sniff
    var _timer = setInterval(function() {
      if (/loaded|complete/.test(document.readyState)) {
        init(); // call the onload handler
      }
    }, 10);
    return;
  }
  /* for other browsers */
  window.onload = init;
  return;
}
function isLinkExternal(link) {
  var r = new RegExp('^https?://(?:www.)?'
    + location.host.replace(/^www./, ''));
  return !r.test(link);
}
domReady(
  function() {
    addListener(document, 'click',
      function(e) {
        var target = (window.event) ? e.srcElement : e.target;
        while (target) {
          if (target.href) break;
          target = target.parentNode;
        }
        if (!target || !isLinkExternal(target.href))
          return true;
        var link = target.href;
        link = '/outgoing/'
          + link.replace(/:\/\//, '/')
          .replace('/^mailto:/', 'mailto/');
        pageTracker._trackPageview(link);
      }
    );
  }
);