/*********************************************************************
  boxkill4.js, v 1
  M G O'Farrell, III
  031004

  JavaScript to kill the focus box, originally the one left lingering
  around text links.

  based upon an earlier script (boxkill.js) that blew-out when it
  encountered an "img" used as a link, and more generalized than a
  successor script (boxkill2.js), which considered only "a" and "area"
  elements to have the blur() method.

  boxkill3.js still left a focus box on buttons and input elements.
  the current script removes these as well, except for those of type
  "text".

  boxkill4.js was tested using Mozilla Firebird 0.6.1, with some
  allowance made for brain-dead browsers - ie, Micro$oft IE. if it
  doesn't function properly in some moronic application or another,
  fuck 'em. the author has no sympathy whatsoever for unenlightened,
  counter-evolutionary products and the benighted souls that cling to
  them.
*********************************************************************/

function focusHandler(e) {
  /* elements in HTML that support the tabindex property
     and therefore also have the blur() method.
     the '_'s allow us to exclude elements like "b" and "p".
  */
  var has_tabindex = "A_AREA_BUTTON_INPUT_OBJECT_SELECT_TEXTAREA_";

  if (!e)
    e = window.event;

  if (e.target) // "Netscape"
    obj = e.target;
  else if (e.srcElement) // Micro$oft
    obj = e.srcElement;
  else // oops! no idea what we've got here
    return;

  /* obj can still be an element that does not have a
     blur() method. if this happens on, say, an "img",
     an exception occurs. therefore, it's necessary to
     do nothing if capture has occured on an element
     contained within the link object itself.

     since in modern JavaScript implementations, the
     event will "bubble-up" to the next element in the
     DOM hierarchy, the blur() method will eventually
     be applied, and applied properly.
  */

  /* if current object does not support the tabindex
     property, then bail.
  */
  if(has_tabindex.indexOf( obj.tagName.toUpperCase() + "_" ) == -1)
    return;

  obj.blur();
}

function boxKill() {
  /* for some ungodly reason, ie6 gets shitty if one doesn't
     properly and formally declare one's variables.
  */
  var i;

  if (document.links)
    for ( i = 0; i < document.links.length; i++ )
      // register our event handler for each link
      document.links[i].onfocus = focusHandler;

  /* that takes care of links. next, deal with "input"
     and "button" elements.
  */

  var elements = document.getElementsByTagName( "input" );
  if (elements)
    for ( i = 0; i < elements.length; i++ )
      /* register our event handler for each "input" element
	 except those of type "text"
      */
      if (elements[i].type != "text")
        elements[i].onfocus = focusHandler;

  elements = document.getElementsByTagName( "button" );
  if (elements)
    for ( i = 0; i < elements.length; i++ )
      // register our event handler for each "button" element
      elements[i].onfocus = focusHandler;
}