﻿// http://www.brucelawson.co.uk/index.php/2005/opening-links-in-new-windows-in-xhtml-strict-2/

function externalLinks() {
    var objCurrent, objReplacement;
    
    if (document.getElementsByTagName) {
        var objAnchors = document.getElementsByTagName('a');
        for (var iCounter = 0; iCounter < objAnchors.length; iCounter++) {
            if (objAnchors[iCounter].getAttribute('href') && objAnchors[iCounter].getAttribute('rel') == 'external') {
                objAnchors[iCounter].onclick = function(event) { return launchWindow(this, event); }
                objAnchors[iCounter].onkeypress = function(event) { return launchWindow(this, event); }

                if (document.replaceChild) {
                    objCurrent = objAnchors[iCounter].firstChild;
                    if (objCurrent.nodeType == 3) // Text node
                    {
                        objReplacement = document.createTextNode(objCurrent.data);
                        objAnchors[iCounter].replaceChild(objReplacement, objCurrent);
                    }
                    else if (objCurrent.alt) // Current element is an image
                    {
                        objReplacement = objCurrent;
                        objReplacement.alt = objCurrent.alt + ' (Opens In A New Window)';
                        try {
                            objAnchors[iCounter].replaceChild(objReplacement, objCurrent);
                        }
                        catch (e) { }
                    }
                }
            }
        }
    }
}


function launchWindow(objAnchor, objEvent) {
    var iKeyCode;

    if (objEvent && objEvent.type == 'keypress') {
        if (objEvent.keyCode)
            iKeyCode = objEvent.keyCode;
        else if (objEvent.which)
            iKeyCode = objEvent.which;

        if (iKeyCode != 13 && iKeyCode != 32)
            return true;
    }

    return !window.open(objAnchor);
}

AddLoadEvent(externalLinks);