﻿/* 

    DefaultButton Behaviour Fix
        
        1.  Fixes Multiline Textbox behaviour in FireFox - The standard ASP.NET default button behaviour has some
            IE specific functionality where it checks for the element tag name using 'event.srcElement'.
            
        2.  Fixes LinkButton behaviour in FireFox - The standard ASP.NET default button behaviour relies on the
            default button having a client-side 'click' event. However, anchor tags in FireFox do not have this
            event, so by default LinkButtons do not work as default buttons in FireFox.
            
    Reference this file from the Page_Load of your page master, as follows:
    
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            Page.ClientScript.RegisterClientScriptInclude("UpdatedDefaultButtonScript", ResolveUrl("~/_resx/defaultbuttonfix.js"))
        End Sub
        
    This then overrides the default ASP.NET WebForm_FireDefaultButton function with the fixed version.

*/

function WebForm_FireDefaultButton(event, target) 
{
    var source = event.srcElement || event.target;
    
    if (event.keyCode == 13 && !(source && source.tagName.toLowerCase() == "textarea")) 
    {
        var defaultButton;
        if (__nonMSDOMBrowser) 
        {
            defaultButton = document.getElementById(target);
        } 
        else 
        {
            defaultButton = document.all[target];
        }
        if (defaultButton && typeof defaultButton.click != "undefined") 
        {
            defaultButton.click();
            event.cancelBubble = true;
            if (event.stopPropagation) 
            {
                event.stopPropagation();
            }
            return false;
        }
		else if (defaultButton && defaultButton.tagName.toLowerCase() == "a")
		{
			var result = true;
			if (defaultButton.onclick) result = defaultButton.onclick();
			if (typeof(result) == 'undefined' || result) {
				eval(defaultButton.getAttribute('href'));
			}
		}
    }
    return true;
}
