// Default button functionality
// ----------------------------


var currentFocus = null;
var defaultButton = null;
var currentDefaultButton = null;


// Changes the default button
// If the element is a button, set it as default button; otherwise set the actual default button
function setCurrentDefaultButton(o)
{
  if (o == currentDefaultButton) return;
  var oldCurrentDefault = currentDefaultButton;
  if (isButton(o, false)) currentDefaultButton = o; else currentDefaultButton = defaultButton;
  setDefaultVisuals(currentDefaultButton, true);
  if (oldCurrentDefault != currentDefaultButton) setDefaultVisuals(oldCurrentDefault, false);
}

// Installs the focus tracker and determines the default button
function installFocusTracker()
{
  var fields = getAllElements(""), i, firstButton = null;
  for (i = 0; i < fields.length; i++)
    if ((fields[i].nodeName == "INPUT" && fields[i].type.toUpperCase() != "HIDDEN") || (fields[i].nodeName == "SELECT") || (fields[i].nodeName == "TEXTAREA") || (fields[i].nodeName == "A")) {
      addEvent(fields[i], "blur", function() { currentFocus = null; } );
      addEvent(fields[i], "focus", function() { currentFocus = this; setCurrentDefaultButton(this); } );
      if (isButton(fields[i], true) && isVisible(fields[i]) && !fields[i].disabled) {
        if (!firstButton) firstButton = fields[i];
        if (!defaultButton && DefaultButtonName != "" && fields[i].name == DefaultButtonName) defaultButton = fields[i];
      }
    }
  if (!defaultButton && DefaultButtonName != "NoDefault") defaultButton = firstButton;
  currentDefaultButton = defaultButton;
  setDefaultVisuals(currentDefaultButton, true);
}

function kH(e) {
  var pK = e ? e.which : window.event.keyCode;
  if (pK != 13) return true;
  if (currentFocus && (currentFocus.tagName == 'A' || (currentFocus.tagName == 'SELECT' && currentFocus.size == 1))) return true;
  if (currentDefaultButton) {
    if (currentDefaultButton.tagName == 'A') {
      if (hasEvent(currentDefaultButton, "click")) callEvents(currentDefaultButton, "click");
      else if (currentDefaultButton.onclick) currentDefaultButton.onclick();
      else window.location = currentDefaultButton.href;
    } else if (currentDefaultButton.click && !isParentOf(currentDefaultButton, lastButtonPressed)) currentDefaultButton.click();
  }
  return false;
}

addEvent(document, "keypress", kH);
addEvent(window, "load", installFocusTracker);