var oExternalLinks = (function() {

  function addEvent(elem, type, func) {
    return elem.addEventListener?
      elem.addEventListener(type, func, false):
      elem.attachEvent?
        elem.attachEvent('on'+type, func):
        elem['on'+type] = func;
  }
  
  function testMethod() {
    var i = arguments.length - 1;
    for (i; i >= 0; i--) {
      if (!arguments[i]) {
        return false;
      }
    }
    return true;
  }
  
  function fix(e) {
    e = e || window.event;
    targetNode = e.target || e.srcElement;
    
    if (targetNode.nodeType == 3) {
      targetNode = targetNode.parentNode;
    }
    
    if (targetNode.nodeName.toLowerCase() == 'img') {
      targetNode = targetNode.parentNode;
    }
    
    if (targetNode.nodeName.toLowerCase() != 'a') {
      return;
    }
    
    window.open(targetNode.href, '_blank');
    
    if (e.preventDefault) {
      e.preventDefault();
    } else {
      e.returnValue = false;
    }
  }
  
  return {
  
    init:
      function() {
        if (testMethod(document.getElementById, document.getElementsByTagName)) {
          addEvent(window, 'load', oExternalLinks.load);
        }
      },
      
    load:
      function() {
        var allLinks = document.getElementsByTagName('a');
        for (var i = 0; i < allLinks.length; i++) {
          if (allLinks[i].href && (allLinks[i].href.substr(0,7) == 'http://') && (allLinks[i].href.indexOf(location.hostname) == -1)) {
            addEvent(allLinks[i], 'click', fix);
          }
        }
      }
      
  };
}) ();

oExternalLinks.init();