/**************************************
// author: Andy Croxall (andy.croxall@halesway.co.uk)
// build date: 28 Jul '09
// description: scans document for outside-pointing links and, unless they contain a friendly rel flag (var: friendlyRelFlag), updates their title and prompts disclaimer on click
// customisation: see vars in 'prep'
**************************************/

//prep
var locSplitter = location.href.split("/");
var ourDomainFlag = locSplitter[0]+"/"+locSplitter[1]+"/"+locSplitter[2];
var friendlyRelFlag = "dxnet";
var toolTipId = "externalLinkToolTip";
var extLinksCSSClassName = "indicateExtLink";

//set up events
window.onload = function() { listen(); addClassToExternalLinks(); }
function listen() {
    if (!document.all) {
    	document.captureEvents(Event.MOUSECLICK);
    }
}

document.onclick = doclick;

//update classes, titles and targets on links
function addClassToExternalLinks(specificElNotWholePage) {

var lookIn = !specificElNotWholePage ? document : specificElNotWholePage;

	var extLinks = lookIn.getElementsByTagName('a');
    var titleAdd = " (opens in new window)";
	for (var y = 0; y<extLinks.length; y++)
    {
        //ignore internal anchor tags
        if (extLinks[y].href != '')
        {
            //external links
		    if (bool_elIssExternalLinkA(extLinks[y]) == true) {

			    //give class
                extLinks[y].className = extLinksCSSClassName;
                if (extLinks[y].title.indexOf(titleAdd) == -1) extLinks[y].title += titleAdd;

                //add little external-link image
                var tmp = extLinks[y].innerHTML.toUpperCase();
                if (tmp.indexOf('IMG') <= -1) {
                    extLinks[y].innerHTML = extLinks[y].innerHTML + '<img src="' + pathMod + 'imgs/extLink.png" style="margin-left: 5px;" />';
                }

                //set to open in new win
                extLinks[y].target = "_blank";

            }
            //external links that belong to Durex
            if (extLinks[y].rel == friendlyRelFlag) {
                extLinks[y].target = "_blank";
                extLinks[y].title += " (opens in new window)";
            }
        }
    }
}

//which element triggered the event?
function returnEventTrigger() {
	return document.all ? window.event.srcElement : arguments.callee.evt.target;
}

//script identifies outward-pointing links by seeing if the href starts with our domain, but that doesn't take into account JS links and anchors etc. Add exceptions here.
notExtHrefExceptions.exceptions = ["#", "mailto:", "javascript:", ");", "()"];
function notExtHrefExceptions(href) {
    var retVal = false;

    for (var y in notExtHrefExceptions.exceptions) {
        if (href.substr(0, notExtHrefExceptions.exceptions[y].length) == notExtHrefExceptions.exceptions[y]) { retVal = true; break; }
    }
    return retVal;
}

//was the trigger an external-pointing link?
function bool_elIssExternalLinkA(trigger) {
	return ((trigger.tagName.toLowerCase() == "a" && trigger.href.substr(0, ourDomainFlag.length) != ourDomainFlag) && trigger.rel != friendlyRelFlag && notExtHrefExceptions(trigger.href) == false); //can't simply look for hrefs starting with http://, as JS considers all links to start with that - even if transcribed relatively
}


//click actions
function doclick(evt) {

    returnEventTrigger.evt = evt;

	var trigger = returnEventTrigger();

	//was the trigger an <a> tag pointing to an external link?
	if (bool_elIssExternalLinkA(trigger) == true) {
		return confirm("SSL International is not responsible for the content of external internet sites.\n\nDo you still wish to visit this link?") ? true : false;
	}

}