Cómo evitar el envío doble con jQuery en la aplicación ASP.NET con UpdatePanels

Tengo una aplicación Intranet ASP.NET que a veces es lenta para responder. Mi requisito es evitar el envío doble y, idealmente, proporcionar comentarios al usuario de que el formulario ya se ha enviado.

Los ejemplos que he encontrado muestran cómo deshabilitar un botón de envío, pero eso no es suficiente, ya que en mi aplicación puede ocurrir el envío:

Desde un botón de envío.Desde cualquier control con AutoPostBack = true (que se envía utilizando javascript AFAIK).De cualquiera de los anteriores dentro de un UpdatePanel, en cuyo caso, como lo entiendo, el POST se realiza con AJAX, y tendré que volver a habilitarlo cuando se complete la llamada AJAX.

Estoy pensando en algo como mostrar una superposición / ventana emergente modal, tal vez con una imagen de progreso animada que se mostraría al enviar. Y en el caso de un UpdatePanel, oculto cuando finaliza la llamada AJAX.

¿Alguien tiene una muestra que se pueda integrar fácilmente en las páginas ASP.NET como anteriormente? O indique qué eventos necesitaría conectar para mostrar / ocultar la superposición.

ACTUALIZAR

La respuesta de @Aristos me ha llevado casi todo el camino. La parte clave es manejar PageRequestManager.endRequest para ocultar el cuadro de diálogo de progreso cuando se completa una llamada AJAX.

Hay un caso en el que todavía tengo un problema: si un botón de envío produce una descarga de archivo, no tengo un evento que pueda usar para ocultar el cuadro de diálogo de progreso.Esta pregunta tiene una respuesta que puede hacer el truco, lo intentaré.

Respuestas a la pregunta(1)

Su respuesta a la pregunta