/********************************************************
*	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);
		//alert(targetEl.id);
		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++){			
			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(window.attachEvent) {
	window.attachEvent("onload", KeySubmit.initializeIE);
} else if(document.addEventListener){
	document.addEventListener("keypress", KeySubmit.listener, true);
}