if (typeof (Controls) == "undefined")
	Controls = {};
if (typeof (Controls.PopupLayerManager) == "undefined") {
	Controls.PopupLayerManager = {};
	Controls.PopupLayerManager.LanguageID = null;
	Controls.PopupLayerManager._popupContainer = null;
	Controls.PopupLayerManager._popupContainerBackground = null;
	Controls.PopupLayerManager._currentCloseHandler = null;

	Controls.PopupLayerManager.Open = function(target, top, width, onCloseHandler, arguments) {
		var query = window.location.search.substr(1);
		var queryParts = query.split('&');

		var request = new CHttpRequest();
		request.QueryString = "AjaxType=HTML&RequestFile=" + target + "&MethodName=XRender&InstanceCall=1&LanguageID=" + Controls.PopupLayerManager.LanguageID;
		for (var i = 0; i < queryParts.length; i++) {
			var variable = queryParts[i].split('=');
			if (variable != 'Template') {
				request.QueryString += "&" + queryParts[i];
			}
		}
		request.AsyncCall = true;

		if (typeof (arguments) != 'undefined') {
			for (var i = 0; i < arguments.length; i++) {
				request.AddProperty("Arguments[" + arguments[i].Name + "]", arguments[i].Value);
			}
		}

		if (typeof (onCloseHandler) == "function")
			Controls.PopupLayerManager._currentCloseHandler = onCloseHandler;
		else
			Controls.PopupLayerManager._currentCloseHandler = null;

		var topString = (typeof (top) == "undefined" || top == null) ? "10%" : top + "px";
		var heightString = (typeof (top) == "undefined" || top == null) ? "80%" : "";
		var leftString = (typeof (width) == "undefined" || width == null) ? "10%" : (document.documentElement.offsetWidth - width) / 2 + "px";
		var widthString = (typeof (width) == "undefined" || width == null) ? "80%" : width + "px";
		
		request.State = { Top: topString, Left: leftString, Width:widthString, Height:heightString };
		request.OnResponse = Controls.PopupLayerManager.OpenCallback;
		request.Send();
	}

	Controls.PopupLayerManager.OpenCallback = function(request, state) {
		var div = Controls.PopupLayerManager.CreatePopup();
		div.style.top = state.Top;
		div.style.left = state.Left;
		div.style.width = state.Width;
		div.style.height = state.Height;
		Controls.Ajax.LoadContent(div, request.responseText);
		div.focus();
		//document.documentElement.style.overflow = "hidden";
		Controls.EventHelper.CaptureMouseWheel(document.documentElement, Controls.PopupLayerManager.Body_MouseWheel);
	}

	Controls.PopupLayerManager.CreatePopup = function() {
		if (Controls.PopupLayerManager._popupContainer == null) {

			Controls.PopupLayerManager._popupContainer = document.body.appendChild(document.createElement("DIV"));
			Controls.PopupLayerManager._popupContainer.id = "PopupContainer";
			Controls.PopupLayerManager._popupContainer.className = "PopupContainer";
			Controls.EventHelper.RegisterEventHandler(Controls.PopupLayerManager._popupContainer, "onkeydown", Controls.PopupLayerManager.Popup_KeyDown);

			Controls.PopupLayerManager._popupContainerBackground = document.body.appendChild(document.createElement("DIV"));
			Controls.PopupLayerManager._popupContainerBackground.id = "PopupContainerBackground";
			Controls.PopupLayerManager._popupContainerBackground.className = "PopupContainerBackground";
			Controls.UI.Effects.SetOpacity(Controls.PopupLayerManager._popupContainerBackground, 60);

			var browser = Controls.BrowserHelper.GetBrowserName(true);
			if (browser == "IE6") {
				Controls.PopupLayerManager._popupContainerBackground.style.position = "absolute";
				var body = document.documentElement;
				window.attachEvent("onscroll", Controls.PopupLayerManager.Body_Scroll);
				Controls.PopupLayerManager._popupContainerBackground.style.width = body.clientWidth;
				Controls.PopupLayerManager._popupContainerBackground.style.height = body.clientHeight;
				Controls.PopupLayerManager._popupContainer.style.position = "absolute";
			}
		}
		Controls.PopupLayerManager._popupContainer.style.visibility = "visible";
		Controls.PopupLayerManager._popupContainerBackground.style.visibility = "visible";
		return Controls.PopupLayerManager._popupContainer;
	}

	Controls.PopupLayerManager.Body_Scroll = function(e) {
		if (Controls.PopupLayerManager._popupContainerBackground != null) {
			Controls.PopupLayerManager._popupContainerBackground.style.top = document.documentElement.scrollTop;
			Controls.PopupLayerManager._popupContainer.style.top = (document.documentElement.clientHeight / 10) + document.documentElement.scrollTop;
		}
	}

	Controls.PopupLayerManager.ClosePopup = function() {
		var e = new Object();
		e.Cancel = false;
		if (Controls.PopupLayerManager._currentCloseHandler != null)
			Controls.PopupLayerManager._currentCloseHandler(Controls.PopupLayerManager._popupContainer, e);
		if (!e.Cancel) {
			Controls.PopupLayerManager._popupContainer.style.visibility = "hidden";
			Controls.PopupLayerManager._popupContainerBackground.style.visibility = "hidden";
			Controls.PopupLayerManager._popupContainer.innerHTML = "";
			//document.documentElement.style.overflow = "auto";
			Controls.EventHelper.ReleaseMouseWheel(document.documentElement, Controls.PopupLayerManager.Body_MouseWheel);
		}
	}

	Controls.PopupLayerManager.PopupClose_Click = function(sender, e) {
		Controls.PopupLayerManager.ClosePopup();
	}

	Controls.PopupLayerManager.Popup_KeyDown = function(e) {
		if (e.keyCode == 27)
			Controls.PopupLayerManager.ClosePopup();
	}

	Controls.PopupLayerManager.Body_MouseWheel = function(e) {
		Controls.EventHelper.CancelEvent(e);
	}
}