var oModalUpdateProgress = null;
Sys.UI._ModalUpdateProgress = function Sys$UI$_ModalUpdateProgress(element) {
	Sys.UI._ModalUpdateProgress.initializeBase(this, [element]);
	this._backgroundCssClass = null;
	this._cancelControlID = null;
	this._backgroundElement = null;
	this._foregroundElement = null;
	this._cancelHandler = null;
	this._scrollHandler = null;
	this._resizeHandler = null;
	this._windowHandlersAttached = false;
	this._beginRequestHandlerDelegate = null;
	this._startDelegate = null;
	this._endRequestHandlerDelegate = null;
	this._pageRequestManager = null;
	this._timerCookie = null;
	this._saveTabIndexes = new Array();
	this._saveDisableSelect = new Array();
	this._tagWithTabIndex = new Array('A', 'AREA', 'BUTTON', 'INPUT', 'OBJECT', 'SELECT', 'TEXTAREA', 'IFRAME');
	this._disableTabsCalled = false;
}
function Sys$UI$_ModalUpdateProgress$get_backgroundCssClass() {
	/// <value type="String"></value>
	if (arguments.length !== 0) throw Error.parameterCount();
	return this._backgroundCssClass;
}
function Sys$UI$_ModalUpdateProgress$set_backgroundCssClass(value) {
	this._backgroundCssClass = value;
}
function Sys$UI$_ModalUpdateProgress$get_cancelControlID() {
	/// <value type="String"></value>
	if (arguments.length !== 0) throw Error.parameterCount();
	return this._cancelControlID;
}
function Sys$UI$_ModalUpdateProgress$set_cancelControlID(value) {
	this._cancelControlID = value;
}
function Sys$UI$_ModalUpdateProgress$_attachPopup() {
	if (!this._scrollHandler) {
		this._scrollHandler = Function.createDelegate(this, this._onLayout);
	}
	if (!this._resizeHandler) {
		this._resizeHandler = Function.createDelegate(this, this._onLayout);
	}
	$addHandler(window, 'resize', this._resizeHandler);
	$addHandler(window, 'scroll', this._scrollHandler);
	this._windowHandlersAttached = true;
}
function Sys$UI$_ModalUpdateProgress$_detachPopup() {
	if (this._windowHandlersAttached) {
		if (this._scrollHandler) {
			$removeHandler(window, 'scroll', this._scrollHandler);
		}
		if (this._resizeHandler) {
			$removeHandler(window, 'resize', this._resizeHandler);
		}
		this._windowHandlersAttached = false;
	}
}
function Sys$UI$_ModalUpdateProgress$_onCancel(e) {
	var element = $get(this._cancelControlID);
	if (element && !element.disabled) {
		if (this._pageRequestManager !== null) {
			this._pageRequestManager.abortPostBack();
		}
		this._hide();
		e.preventDefault();
		return false;
	}
}
function Sys$UI$_ModalUpdateProgress$_onLayout(e) {
	this._layout();
}
function Sys$UI$_ModalUpdateProgress$_layout() {
	var scrollLeft = (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
	var scrollTop = (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
	var clientWidth;
	if (window.innerWidth) {
		clientWidth = ((Sys.Browser.agent === Sys.Browser.Safari) ? window.innerWidth : Math.min(window.innerWidth, document.documentElement.clientWidth));
	} else {
		clientWidth = document.documentElement.clientWidth;
	}
	var clientHeight;
	if (window.innerHeight) {
		clientHeight = ((Sys.Browser.agent === Sys.Browser.Safari) ? window.innerHeight : Math.min(window.innerHeight, document.documentElement.clientHeight));
	} else {
		clientHeight = document.documentElement.clientHeight;
	}
	this._backgroundElement.style.left = scrollLeft + 'px';
	this._backgroundElement.style.top = scrollTop + 'px';
	this._backgroundElement.style.width = clientWidth + 'px';
	this._backgroundElement.style.height = clientHeight + 'px';
	this._foregroundElement.style.left = scrollLeft + ((clientWidth - this._foregroundElement.offsetWidth) / 2) + 'px';
	this._foregroundElement.style.top = scrollTop + ((clientHeight - this._foregroundElement.offsetHeight) / 2) + 'px';
}
function Sys$UI$_ModalUpdateProgress$_show() {
	this._attachPopup();
	this._backgroundElement.style.display = '';
	if (this._dynamicLayout) {
		this._foregroundElement.style.display = 'block';
	} else {
		this._foregroundElement.style.visibility = 'visible';
	}
	this._disableTabs();
	this._layout();
	this._layout();
}
function Sys$UI$_ModalUpdateProgress$_disableTabs() {
	if (!this._disableTabsCalled) {
		var i = 0;
		var tagElements;
		var tagElementsInPopUp = new Array();
		Array.clear(this._saveTabIndexes);
		for (var j = 0; j < this._tagWithTabIndex.length; j++) {
			tagElements = this._foregroundElement.getElementsByTagName(this._tagWithTabIndex[j]);
			for (var k = 0; k < tagElements.length; k++) {
				tagElementsInPopUp[i] = tagElements[k];
				i++;
			}
		}
		i = 0;
		for (var j = 0; j < this._tagWithTabIndex.length; j++) {
			tagElements = document.getElementsByTagName(this._tagWithTabIndex[j]);
			for (var k = 0; k < tagElements.length; k++) {
				if (Array.indexOf(tagElementsInPopUp, tagElements[k]) == -1) {
					this._saveTabIndexes[i] = { tag: tagElements[k], index: tagElements[k].tabIndex };
					tagElements[k].tabIndex = "-1";
					i++;
				}
			}
		}
		i = 0;
		if ((Sys.Browser.agent === Sys.Browser.InternetExplorer) && (Sys.Browser.version < 7)) {
			var tagSelectInPopUp = new Array();
			tagElements = this._foregroundElement.getElementsByTagName('SELECT');
			for (var k = 0; k < tagElements.length; k++) {
				tagSelectInPopUp[i] = tagElements[k];
				i++;
			}
			i = 0;
			Array.clear(this._saveDisableSelect);
			tagElements = document.getElementsByTagName('SELECT');
			for (var k = 0; k < tagElements.length; k++) {
				if (Array.indexOf(tagSelectInPopUp, tagElements[k]) == -1) {
					this._saveDisableSelect[i] = { tag: tagElements[k], visib: this._getCurrentStyle(tagElements[k], 'visibility') };
					tagElements[k].style.visibility = 'hidden';
					i++;
				}
			}
		}
		this._disableTabsCalled = true;
	}
}
function Sys$UI$_ModalUpdateProgress$_restoreTabs() {
	if (this._disableTabsCalled) {
		for (var i = 0; i < this._saveTabIndexes.length; i++) {
			this._saveTabIndexes[i].tag.tabIndex = this._saveTabIndexes[i].index;
		}
		if ((Sys.Browser.agent === Sys.Browser.InternetExplorer) && (Sys.Browser.version < 7)) {
			for (var k = 0; k < this._saveDisableSelect.length; k++) {
				this._saveDisableSelect[k].tag.style.visibility = this._saveDisableSelect[k].visib;
			}
		}
		this._disableTabsCalled = false;
	}
}
function Sys$UI$_ModalUpdateProgress$_hide() {
	this._backgroundElement.style.display = 'none';
	this._foregroundElement.style.display = 'none';
	this._restoreTabs();
	this._detachPopup();
}
function Sys$UI$_ModalUpdateProgress$_handleBeginRequest(sender, arg) {
	var curElem = arg.get_postBackElement();
	var showProgress = !this._associatedUpdatePanelId;
	while (!showProgress && curElem) {
		if (curElem.id && this._associatedUpdatePanelId === curElem.id) {
			showProgress = true;
		}
		curElem = curElem.parentNode;
	}
	if (showProgress) {
		this._timerCookie = window.setTimeout(this._startDelegate, this._displayAfter);
	}
}
function Sys$UI$_ModalUpdateProgress$_startRequest() {
	if (this._pageRequestManager.get_isInAsyncPostBack()) {
		this._show();
	}
	this._timerCookie = null;
}
function Sys$UI$_ModalUpdateProgress$_handleEndRequest(sender, arg) {
	this._hide();
	if (this._timerCookie) {
		window.clearTimeout(this._timerCookie);
		this._timerCookie = null;
	}
}
function Sys$UI$_ModalUpdateProgress$_getCurrentStyle(element, attribute, defaultValue) {
	var currentValue = null;
	if (element) {
		if (element.currentStyle) {
			currentValue = element.currentStyle[attribute];
		} else if (document.defaultView && document.defaultView.getComputedStyle) {
			var style = document.defaultView.getComputedStyle(element, null);
			if (style) {
				currentValue = style[attribute];
			}
		}

		if (!currentValue && element.style.getPropertyValue) {
			currentValue = element.style.getPropertyValue(attribute);
		}
		else if (!currentValue && element.style.getAttribute) {
			currentValue = element.style.getAttribute(attribute);
		}
	}

	if ((!currentValue || currentValue == "" || typeof (currentValue) === 'undefined')) {
		if (typeof (defaultValue) != 'undefined') {
			currentValue = defaultValue;
		}
		else {
			currentValue = null;
		}
	}
	return currentValue;
}
function Sys$UI$_ModalUpdateProgress$dispose() {
	this._detachPopup();
	this._scrollHandler = null;
	this._resizeHandler = null;
	if (this._cancelHandler && $get(this._cancelControlID)) {
		$removeHandler($get(this._cancelControlID), 'click', this._cancelHandler);
		this._cancelHandler = null;
	}
	if (this._pageRequestManager !== null) {
		this._pageRequestManager.remove_beginRequest(this._beginRequestHandlerDelegate);
		this._pageRequestManager.remove_endRequest(this._endRequestHandlerDelegate);
	}
	Sys.UI._ModalUpdateProgress.callBaseMethod(this, "dispose");
}
function Sys$UI$_ModalUpdateProgress$initialize() {
		Sys.UI._ModalUpdateProgress.callBaseMethod(this, 'initialize');

		this._foregroundElement = this.get_element();
		this._backgroundElement = document.createElement('div');
		this._backgroundElement.style.display = 'none';
		this._backgroundElement.style.position = 'absolute';
		this._backgroundElement.style.zIndex = 100000;
		if (this._backgroundCssClass) {
			this._backgroundElement.className = this._backgroundCssClass;
		}
		this._foregroundElement.parentNode.appendChild(this._backgroundElement);
		this._foregroundElement.style.display = 'none';
		this._foregroundElement.style.position = 'absolute';
		this._foregroundElement.style.zIndex = this._getCurrentStyle(this._backgroundElement, 'zIndex', this._backgroundElement.style.zIndex) + 1;

		if (this._cancelControlID) {
			this._cancelHandler = Function.createDelegate(this, this._onCancel);
			$addHandler($get(this._cancelControlID), 'click', this._cancelHandler);
		}

		this._scrollHandler = Function.createDelegate(this, this._onLayout);
		this._resizeHandler = Function.createDelegate(this, this._onLayout);

		this._beginRequestHandlerDelegate = Function.createDelegate(this, this._handleBeginRequest);
		this._endRequestHandlerDelegate = Function.createDelegate(this, this._handleEndRequest);
		this._startDelegate = Function.createDelegate(this, this._startRequest);
		if (Sys.WebForms && Sys.WebForms.PageRequestManager) {
			this._pageRequestManager = Sys.WebForms.PageRequestManager.getInstance();
		}
		if (this._pageRequestManager !== null) {
			this._pageRequestManager.add_beginRequest(this._beginRequestHandlerDelegate);
			this._pageRequestManager.add_endRequest(this._endRequestHandlerDelegate);
		}
		oModalUpdateProgress = this;
	}

Sys.UI._ModalUpdateProgress.prototype = {
	get_backgroundCssClass: Sys$UI$_ModalUpdateProgress$get_backgroundCssClass,
	set_backgroundCssClass: Sys$UI$_ModalUpdateProgress$set_backgroundCssClass,
	get_cancelControlID: Sys$UI$_ModalUpdateProgress$get_cancelControlID,
	set_cancelControlID: Sys$UI$_ModalUpdateProgress$set_cancelControlID,
	_attachPopup: Sys$UI$_ModalUpdateProgress$_attachPopup,
	_detachPopup: Sys$UI$_ModalUpdateProgress$_detachPopup,
	_onCancel: Sys$UI$_ModalUpdateProgress$_onCancel,
	_onLayout: Sys$UI$_ModalUpdateProgress$_onLayout,
	_layout: Sys$UI$_ModalUpdateProgress$_layout,
	_show: Sys$UI$_ModalUpdateProgress$_show,
	_disableTabs: Sys$UI$_ModalUpdateProgress$_disableTabs,
	_restoreTabs: Sys$UI$_ModalUpdateProgress$_restoreTabs,
	_hide: Sys$UI$_ModalUpdateProgress$_hide,
	_handleBeginRequest: Sys$UI$_ModalUpdateProgress$_handleBeginRequest,
	_startRequest: Sys$UI$_ModalUpdateProgress$_startRequest,
	_handleEndRequest: Sys$UI$_ModalUpdateProgress$_handleEndRequest,
	_getCurrentStyle: Sys$UI$_ModalUpdateProgress$_getCurrentStyle,
	dispose: Sys$UI$_ModalUpdateProgress$dispose,
	initialize: Sys$UI$_ModalUpdateProgress$initialize
}
Sys.UI._ModalUpdateProgress.registerClass('Sys.UI._ModalUpdateProgress', Sys.UI._UpdateProgress);
