﻿var IE = document.attachEvent?true:false;
var IE7 = IE && (window.XMLHttpRequest);
var WC3DOM = document.addEventListener?true:false;

Global_BindEventsForDisableOnSubmit();

if(typeof(__doPostBack) =="function")
{
	var __oldDoPostBack = __doPostBack;
	__doPostBack = AlwaysFireBeforeFormSubmit;
}

function AlwaysFireBeforeFormSubmit(eventTarget, eventArgument)
{
	if (isSecondPostback)
	{
		return;
	}
	__oldDoPostBack(eventTarget,eventArgument);
	if(!disableCurtain && (typeof(g_excludeControlIds)=="undefined" || !g_excludeControlIds[eventTarget]))
	{
		if(Page_IsValid)
		{
			isSecondPostback = true;
			Global_ShowCurtain();
		}
	}
	disableCurtain = false;
}

//----------------------------------------------	
function Global_BindEventsForDisableOnSubmit(){
	if (typeof(Sys) != "undefined" && Sys.WebForms != null)
	{
		var prm = Sys.WebForms.PageRequestManager.getInstance();
		if (prm.get_isInAsyncPostBack())
			return; //We have attached the event before
	}
	var forms = document.forms;
	var length = forms.length;
	if(IE)
	{
		for(var i=0;i<length;i++)
		{
			forms[i].attachEvent("onsubmit", Global_DisableFormsOnSubmit);
		}
	}
	else if(WC3DOM)
	{
		for(i=0;i<length;i++)
		{
			forms[i].addEventListener("submit", Global_DisableFormsOnSubmit, false);
		}
	}
}
function Global_DisableFormsOnSubmit(node)
{
	if(Page_IsValid)
		Global_ShowCurtain();
}
function Global_ShowCurtain()
{
	if (typeof(Sys) != "undefined" && Sys.WebForms != null)
	{
		//We are using Microsoft Ajax
		var prm = Sys.WebForms.PageRequestManager.getInstance();
		//Check if we are using an async postback
		//and use this hack because prm.get_isInAsyncPostBack() returns false now!
		if (prm._postBackSettings != null && prm._postBackSettings.async) 
			return;
	}
	if(IE && !IE7)
	{
		var selects = document.getElementsByTagName("SELECT");
		var count = selects.length;
		for(var i=0;i<count;i++)
		{
			selects[i].style.visibility  = "hidden";
		}
	}
	var curtainElement = document.getElementById('DisableOnSubmit');
	if(curtainElement)
	{
		var curtainStyle =curtainElement.style;
		if(IE)
		{
			document.attachEvent('onkeydown',Global_DisableOnSubmit_Cancel);
			document.attachEvent('onmousedown',Global_DisableOnSubmit_Cancel);
			curtainStyle.width = (document.body.clientWidth +document.body.scrollLeft)+"px";
			curtainStyle.height = (document.body.clientHeight +document.body.scrollTop) +"px";
		}
		else if(WC3DOM)
		{
			document.addEventListener('keydown',Global_DisableFormsOnSubmit,false);
			document.addEventListener('mousedown',Global_DisableFormsOnSubmit,false);
			curtainStyle.width = (document.body.clientWidth +document.body.scrollLeft)+"px";
			curtainStyle.height = (document.body.clientHeight +document.body.scrollTop) +"px";
		}	
		curtainStyle.display ='block';
	}
}

function Global_DisableOnSubmit_Cancel(evt)
{
	var disableOnSubmit = document.getElementById('DisableOnSubmit');
	if (disableOnSubmit === null)
	{
		return false;
	}
	if(disableOnSubmit.style.display =='none')
	{
		return true;
	}
	else
	{																  
		if(IE)
		{
			if(event)
			{
				event.returnValue = false;
			}
		}
		else if(WC3DOM)
		{
			if(evt)
			{
				evt.preventDefault();
			}
		}
		return  false;
	}
}
