﻿//Automatic submit javascript to ensure that the correct button is submitted
//depending on the input field where the user is pressing enter
function handleEnter (e) 
{
    if(!e) e = event;
    if(!e) return true;
    var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
    if (keyCode == 13) 
    {
        var source = e.srcElement;
        if(!source) source = e.target;
        if(!source) return true;
	    
        var NextSubmitElement = FindNextElmInDOM(source);
        if(NextSubmitElement)
        {
            //Then this should be submitted
            e.returnValue=false;
			e.cancel = true;
			NextSubmitElement.focus();
            NextSubmitElement.click();
            return true;
        }
        return false;
    } 
    else
        return true;
}
var returnNextFound = false;
function FindNextElmInDOM(relativeTO)
{ returnNextFound = false; return traverseDOMTree(document.getElementsByTagName("body")[0], relativeTO, false); }
function traverseDOMTree(currentElement, relativeTO)
{
    if (currentElement)
    {
        if(relativeTO==currentElement)
            returnNextFound = true;
        var i=0;
        var c=currentElement.childNodes[i];
        while (c)
        {
            if(c.tagName == "INPUT" && (c.type=="submit" || c.type=="image") && returnNextFound)
                return c;
            else
            {
                var foundChild = traverseDOMTree(c, relativeTO);
                if(foundChild) return foundChild;
                c=currentElement.childNodes[++i];
            }
        }
    }
}
function LoadAttach()
{
    var inputs = document.getElementsByTagName("input");
    if (inputs) 
        for (var i = 0; i < inputs.length; ++i) 
        {
            if(inputs[i].type == "text")
                addEvent(inputs[i], 'keyup' , handleEnter );
        }
}
function addEvent(obj, evType, fn)
{ 
    if (obj.addEventListener)
    { 
        obj.addEventListener(evType, fn, false); 
        return true; 
    } 
    else if (obj.attachEvent)
    { 
       var r = obj.attachEvent("on"+evType, fn); 
        return r; 
    }
    else 
        return false; 
}
addEvent(window, 'load', LoadAttach);
