/**
  * Simulate <a target="_blank"> with <a rel="external">
  *
  */

// Append listeners to initialise a target=_blank
if (window.addEventListener) {
      window.addEventListener('load', a_target_blank, false);
} else if (document.attachEvent) {
      window.attachEvent('onload', a_target_blank, false);
}

// Convert all a-elements
function a_target_blank() {
	if (!document.getElementsByTagName) { return; }
	
	var aAnchors = document.getElementsByTagName("a");
	var objAnchor = null;

	for (var i = 0; i < aAnchors.length; i++) {
		objAnchor = aAnchors[i];

		if (objAnchor.getAttribute("href") && objAnchor.getAttribute("rel") && objAnchor.getAttribute("rel").indexOf("external") > -1) {
			if (objAnchor.addEventListener) {
				objAnchor.removeEventListener('click', a_target_blank_open, false);
				objAnchor.removeEventListener('keypress', a_target_blank_open, false);
				objAnchor.addEventListener('click', a_target_blank_open, false);
				objAnchor.addEventListener('keypress', a_target_blank_open, false);
			} else if (document.attachEvent) {
				objAnchor.detachEvent('onclick', a_target_blank_open, false);
				objAnchor.detachEvent('onkeypress', a_target_blank_open, false);
				objAnchor.attachEvent('onclick', a_target_blank_open, false);
				objAnchor.attachEvent('onkeypress', a_target_blank_open, false);
			}
		}
	}
}

// Click on a link
function a_target_blank_open(e) {
	// Get event properties
	if (e == null) {
		e = window.event;
	}
	var eSource = null;
	
	if (e.srcElement) {
		eSource = e.srcElement;
	} else {
		eSource = e.target;
	}
	
	// If the current element is NOT a link, get the parent element until we reach a link
	while(eSource.tagName.toLowerCase() != 'a') {
		if (eSource.parentNode != null) {
			eSource = eSource.parentNode;
		} else {
			return;
		}
	}
	
	// Open new window
	window.open(eSource.href);
	
	// Exit
    e.returnValue = false;
    e.cancelBubble = true;
    if (e.preventDefault) {
    	e.preventDefault();
    }
    return false;
}

