/********************************************************
*	(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 inputs = root.getElementsByTagName("BUTTON");
		for(var i=0; i<inputs.length; i++){
			//if(inputs[i].getAttribute("type") == "submit" || String(inputs[i].getAttribute("onclick")).indexOf("__doPostBack") > 0)
				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);

