// Filename: DocumentKeyboardInputValidation.js
// Author:	Steve Morse	04 Sep 2002
// Purpose:	Include referenced by stdfooter.asp (see comments there)

var mnumReturnKeyCounter = 0;
var mbDisplayReturnKeyWindow = false;
var mbReturnKeyTimerRunning = false;
var mnumReturnKeyTimerDelay = 75;

function validateF5KeyboardInput() {
  if (window.event && window.event.keyCode == 116  && !window.event.altKey) {
    // is an F5 (without [Alt], else problems!)
    if (window.mbF5Disabled) {
      alert('The [F5] key has been disabled');
      window.event.keyCode = 17;
      window.event.cancelBubble = true;
	  window.event.returnValue = false;
    } else if(window.mstrHTTPMethod && mstrHTTPMethod!='post') {
      // "get" (or unknown); display message
	  if (confirm('Press OK to refresh.'))
		  window.mbRefresh = true;
		else // Redirect to Ctrl (this key has no effect in IE) where Cancel pressed
  		  window.event.keyCode = 17;
    } else // "post" - use inbuilt message, but must assume they say OK...
      window.mbRefresh = true;
  }	
}

function validateDocumentKeyboardInput() {
	
	//Handle F5 key
	validateF5KeyboardInput();
	
	// Handle press of Enter key
	if (window.event && window.event.keyCode == 13) {
		if (window.event.srcElement && window.event.srcElement.type == 'textarea') {
			//do nothing for text areas
		}
		else if (mbReturnKeyTimerRunning) {
			//Increment Counter where return key pressed
			mnumReturnKeyCounter = mnumReturnKeyCounter + 1;		
		}
		else if (mbDisplayReturnKeyWindow == true) {
			//Open new window where Return Key has been pressed more than 2 times
			OpenJavascriptOKWindow('Continuous Return Key Input', '<HTML><BODY><TABLE CLASS=Help><TR><TD>The Return key has been pressed ' + mnumReturnKeyCounter + ' times in the underlying window in ' + mnumReturnKeyTimerDelay + ' milliseconds. This is probably because the Return key was being permanently held down.<BR/><BR/>To prevent the situation where continuously pressing the Return key causes many hits on the web and database servers this window has been displayed.<BR/><BR/>Please close this window to return to the underlying window.</TD></TR></TABLE></BODY></HTML>', 250, 300, false);
			//window.open('javascript:','','width=400,height=400,menubar=no,toolbar=no');
			mbDisplayReturnKeyWindow = false;
			mnumReturnKeyCounter = 0;
			mbReturnKeyDisabled = false;
		}
		else {
			//Set Timer running and make call to ReturnKeyTimer() in 1 second for 1st call in
			mbReturnKeyTimerRunning = true;
			mnumReturnKeyCounter = 1;
			setTimeout("returnKeyTimer()", mnumReturnKeyTimerDelay);
		}
	}

	if (window.event && window.event.keyCode == 17) {

	  	// Cancel effects of pressing Control
	  	window.event.cancelBubble = true;
	  	window.event.returnValue = false;
	  	return false;
	}

}

function returnKeyTimer() {

	if (mnumReturnKeyCounter > 2) {
		mbDisplayReturnKeyWindow = true;
	}
	mbReturnKeyTimerRunning = false;

}

if (document.onkeydown == null) {
	//Only set onkeydown handler where one isnt already set
	document.onkeydown = validateDocumentKeyboardInput;
}