/********************************************************
*	(C)2006-2007 Creuna AB KeySubmit.js
*		
*	When the user hits enter to submit the form on an 
*	asp.net page with multiple submit buttons the click 
*	event sent to the server may not be the expected.
*	
*	This javascript resolves this issue by capturing 
*	key events, looking for events made with the enter
*	key on input elements and then firing click event on
*	the closest submit button.
*	  
*********************************************************/

var KeySubmit = {

	// Event listener
	listener: function(e) {
		if (KeySubmit.keyCode(e) != 13) return;

		var srcEl = KeySubmit.source(e)

		if (!srcEl || srcEl.nodeName != "INPUT") return;

		// Stop current event
		if (window.event)
			window.event.returnValue = false;
		else
			e.preventDefault();
		var targetEl = KeySubmit.findTargetButton(srcEl.parentNode);
		targetEl.click();

	},

	// returns submit button closest in the source code
	findTargetButton: function(root) {
		var buttons = root.getElementsByTagName("BUTTON");
		for (var i = 0; i < buttons.length; i++) {
			//if(inputs[i].getAttribute("type") == "submit" || String(inputs[i].getAttribute("onclick")).indexOf("__doPostBack") > 0)
			return buttons[i];
		}

		var inputs = root.getElementsByTagName("INPUT");
		for (var i = 0; i < inputs.length; ++i) {
			if(inputs[i].getAttribute("defaultPostback"))
			{
				return inputs[i];
			}
		}

		return (typeof (root.parentNode) == "undefined") ? null : KeySubmit.findTargetButton(root.parentNode);
	},

	// returns keycode for the event
	keyCode: function(e) {
		return (window.event) ? window.event.keyCode : e.keyCode;
	},

	// returns the object from where the event was initiated
	source: function(e) {
		return (window.event) ? window.event.srcElement : e.target;
	},

	// attach event listener to keypress event on form element (Internet Explorer)
	initializeIE: function() {
		if (!window.event) return;
		var inputs = document.getElementsByTagName("INPUT");
		var selects = document.getElementsByTagName("SELECT");
		var textareas = document.getElementsByTagName("TEXTAREA");
		for (var i = 0; i < inputs.length; i++) {
			inputs[i].attachEvent("onkeypress", KeySubmit.listener);
		}
		for (var i = 0; i < selects.length; i++) {
			selects[i].attachEvent("onkeypress", KeySubmit.listener);
		}
		for (var i = 0; i < textareas.length; i++) {
			textareas[i].attachEvent("onkeypress", KeySubmit.listener);
		}
	}
}

if(document.addEventListener)
	document.addEventListener("keypress", KeySubmit.listener, true);
else if(window.attachEvent) 
	window.attachEvent("onload", KeySubmit.initializeIE);

