// Enable/Disable default form submission by Internet Explorer

/*

Sample usage:

<script Language="javascript" src="enterkey.js"></script>

<script Language="javascript">

// Add the controls that needs the Enter key to function properly
EK_AcceptEnterKey("textArea1");

// Add Enter key redirection
EK_RedirectEnterKey("textBox1", "Button1");

// This will disable the ignore Enter key functionality.  RedirectEnterKey still works.
EK_IgnoreEnterKey(false);
</script>

<form onkeydown="EK_ProcessEnterKey()">

*/

var ignoreEnterKey = true;
var bypassCtrls = new Array();
var redirectCtrls = new Array();

function EK_ProcessEnterKey()
{
	// Intercept Enter at Form level:
	
	var btn, destCtrlId;
	
	if ((document.activeElement) && (event.keyCode == 13)) {

		destCtrlId = EK_CtrlRedirected(document.activeElement.id);
		if (destCtrlId != "") {
			btn = document.getElementById(destCtrlId);
			// cancel the default submit
			event.returnValue = false;
			event.cancel = true;
			// submit the form by programmatically clicking the specified button
			btn.click();
			return;
		}

		if (ignoreEnterKey && (!EK_CtrlBypassed(document.activeElement.id)))
		{
			// cancel the default submit
			event.returnValue = false;
			event.cancel = true;
		}

	}
}

function EK_AcceptEnterKey(ctrlId)
{
	// Do not ignore enter key for this control
	
	bypassCtrls[bypassCtrls.length] = ctrlId;
}

function EK_RedirectEnterKey(srcCtrlId, destCtrlId)
{
	// For a certain input field, redirect the Enter action from default to a specific control

	var redirect = new Object();
	redirect.srcCtrlId = srcCtrlId;
	redirect.destCtrlId = destCtrlId;

	redirectCtrls[redirectCtrls.length] = redirect;
}

function EK_CtrlBypassed(ctrlId)
{
	var i;
	
	for (i = 0; i < bypassCtrls.length; i++) {
		if (bypassCtrls[i] == ctrlId) {
			return true;
		}
	}
	return false;
}

function EK_CtrlRedirected(ctrlId)
{
	var i;
	
	for (i = 0; i < redirectCtrls.length; i++) {
		if (redirectCtrls[i].srcCtrlId == ctrlId) {
			return redirectCtrls[i].destCtrlId;
		}
	}
	return "";
}

function EK_IgnoreEnterKey(ignoreFlag)
{
	// Enable or disable ignore enter key functionality
	ignoreEnterKey = ignoreFlag;
}

