// Provides helper functionality for buttons on a page
// ---------------------------------------------------


var lastButtonPressed = null;

// "Disables" element in question. It is not really disabled. Instead,
// a div is placed above it which makes it impossible to click it again
// This should prevent double-clicks and is only to be used for submit buttons
var disableDivTimeoutID = 0;
function disableMe(button)
{
  if (!button) return true;
  if (lastButtonPressed == button) return false;
  var x = getX(button), y = getY(button), width = getWidth(button), height = getHeight(button);
  var disableDiv = findObject("DisableDiv");
  if (!disableDiv) disableDiv = document.createElement("div");
  if (disableDiv) addEvent(disableDiv, "click", function(e) { return StopEvent(e) } );
  var disableDivStyle = getStyleObject(disableDiv);
  if (!disableDivStyle) return true;
  button.appendChild(disableDiv);
  disableDiv.id = "DisableDiv";
  disableDivStyle.position = "absolute";
  disableDivStyle.zIndex = 90;
  disableDivStyle.backgroundColor = '#ffffff';
  disableDivStyle.borderStyle = 'none';
  setOpacity(disableDiv, 40);
  moveTo(disableDiv, x, y);
  resizeTo(disableDiv, width, height);
  appear(disableDiv);
  lastButtonPressed = button;
  window.clearTimeout(disableDivTimeoutID);
  disableDivTimeoutID = window.setTimeout(function() { var f = findObject("DisableDiv"); if (f) disappear(f); lastButtonPressed = null; }, 7000);
  return true;
}

// Adds various event handling functions to the buttons of a page
// - Class change during mouse-over
// - Automatic disabling when clicked
function applyButtonEventHandlers(buttonPrefix)
{
	var allDivs = getAllElements("div"), i;
	for (i = 0; i < allDivs.length; i++)
		if (allDivs[i].className.substring(0, buttonPrefix.length) == buttonPrefix) {
			addEvent(allDivs[i], "mouseover", function() { buttonClassSwitch(this, "On"); } );
			addEvent(allDivs[i], "mouseout", function() { buttonClassSwitch(this, "On"); } );
			if (allDivs[i].className.substr(allDivs[i].className.length - ("NoDisable").length) != "NoDisable")
        addEvent(allDivs[i], "click", function() { disableMe(this); } );
      else allDivs[i].className = allDivs[i].className.replace(/NoDisable/g, "");
		}
}

addEvent(window, "load", function() { applyButtonEventHandlers("Button"); } );