/*
 * Adams & Remers
 *
 * Script: AdamsRemersBehaviour.js
 * Behaviour layer
 *
 * By Andy Smith, Preview Graphics
 * www.preview.co.uk
 */


/* Add an event handler to all external links inside a node (the handler
   will be called if the link is followed). External links are determined
   using isInternalAddress() defined below. */

function addExternalLinkHandler(node, handler)
{
  if (!node.getElementsByTagName) return;
  var links = node.getElementsByTagName('a');

  for (var i = 0; i < links.length; i++) {
      if (links[i].href && !isInternalAddress(links[i].href)) {
          addEvent(links[i], 'click', handler);
          addEvent(links[i], 'DOMActivate', handler);
      }
  }
}


/* Test whether a link destination is internal or external. Many internal links
   use absolute addresses (beginning with http://) so for these links check
   whether the link is back to the same site. The internal_link_prefixes list
   defined below contains possible prefixes for external links; if the address
   begins with any of these (case-insensitively) it is considered internal. */

function isInternalAddress(address)
{
  var prefix;

  address = address.toLowerCase();

  if ((address.length < 7) || (address.substr(0, 7) != 'http://')) {
      return true; /* A real relative link */
  }

  for (var i = 0; i < internal_link_prefixes.length; i++) {
      prefix = internal_link_prefixes[i].toLowerCase();
      if ((address == prefix) ||
          ((address.length > prefix.length) &&
           (address.substr(0, prefix.length + 1) == prefix + '/'))) {
          return true; /* An absolute internal link */
      }
  }

  return false; /* An external link */
}

internal_link_prefixes = [
    'http://www.adams-remers.co.uk',
    'http://www.adams-remers.co.uk',
    'http://www.adams-remers.com'
  ];


/* Click event handler to make external links open in a new window. */

function popupLink(e)
{
  if (!e) var e = window.event;

  var target = getEventLinkTarget(e);

  if (target && target.href && window.open) {
      window.open(target.href);
      return stopEventDefault(e);
  } else {
      return true;
  }
}


/*
 * Initialise link handler. Make external links open in a new window (sorry!)
 */

addEvent(window, 'load', function () {
    if (!document.getElementById) return;

    var elContent = document.getElementById('page-content-area');
    if (elContent) {
        addExternalLinkHandler(elContent, popupLink);
    }

    var elFooter = document.getElementById('page-footer');
    if (elFooter) {
        addExternalLinkHandler(elFooter, popupLink);
    }
  });

