/********************************************************
*	©2006-2010 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.toLowerCase() != "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++) {
            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);
