var _isIE = (typeof(window.attachEvent) != 'undefined');

function addOnEvent(obj, evt, cb) {
   if (obj.addEventListener) {
      return obj.addEventListener(evt, cb, false);
   } else if (obj.attachEvent) {
      return obj.attachEvent('on' + evt, cb);
   } else {
      //TODO: Exception thrown here
      alert('TODO: Throw Exception');
      return false;
   }
   return true;
}

function setTargetBlank(evt) {
   var el = (_isIE) ? evt.srcElement : evt.target;
   if ((!el) || (el.nodeName != 'A') || (el.getAttribute('rel') != 'external')) return true;
   var url = el.href;
   var win = window.open(url, '_blank');
   if (!win) window.location.href = url;
   if (_isIE) {
      evt.cancelBubble = true;
      evt.returnValue = false;
   } else {
      evt.preventDefault();
   }
   return false;
}

function recurseExternalLinks() {
   var els = document.body.getElementsByTagName('A');

   for (var i=0; i < els.length; i++) {
      var c = els[i];
      if ((c.nodeName == 'A') && (c.getAttribute('rel') == 'external')) {
         addOnEvent(c, 'click', setTargetBlank);
      }
   }
}

function fixExternalLinks() {
   recurseExternalLinks();
}


addOnEvent(window, 'load', fixExternalLinks);

