
var dojoModalFloatingPane =
{
	_window: null,
	_bgDiv: null,

	show: function(properties)
	{
		dojo.require("dojo.widget.*");
		dojo.require("dojo.widget.FloatingPane");
		dojo.require("dojo.widget.ContentPane");
		dojo.require("dojo.event.*");
		dojo.require("dojo.html");

		var viewportWidth = dojo.html.getViewportWidth();
		var viewportHeight = Math.max(document.documentElement.scrollHeight, Math.max(document.body.scrollHeight, dojo.html.getViewportHeight()));

		// Calculate coordinates to center the window
		var scroll_offset = dojo.html.getScroll().offset;
		var viewport_size = dojo.html.getViewport();
			
	 	var windowLeft = scroll_offset.x + (viewport_size.width - properties.width)/2;
 		var windowTop = scroll_offset.y + (viewport_size.height - properties.height)/2;
		if (properties.width > viewportWidth)
			windowLeft = 0;
		if (properties.height > viewportHeight)
			windowTop = 0;

		var windowDiv = document.createElement("div");
		var windowDivStyle = windowDiv.style;
		windowDivStyle.position = "absolute";
		windowDivStyle.width = properties.width +"px";
		windowDivStyle.height = properties.height + "px";
		windowDivStyle.left = windowLeft + "px";
		windowDivStyle.top = windowTop + "px";
		windowDivStyle.zIndex = 99999;
		document.body.appendChild(windowDiv);

		this._window = dojo.widget.createWidget("FloatingPane", properties, windowDiv);
		if (properties.titleBgColor)
			this._window.titleBar.style.backgroundColor = properties.titleBgColor;
		this._window.drag.constrainTo()

		// Background block
		this._bgDiv = document.createElement("div");
		var bgDivStyle = this._bgDiv.style;
		bgDivStyle.position = "absolute";
		bgDivStyle.width = viewportWidth + "px";
	   	bgDivStyle.height = viewportHeight + "px";
		bgDivStyle.left = "0px";
		bgDivStyle.top = "0px";
		bgDivStyle.display = "block";
		bgDivStyle.backgroundColor = (properties.bgColor ? properties.bgColor : "#BEBEBE");
		dojo.html.setOpacity(this._bgDiv, (properties.bgOpacity ? properties.bgOpacity : 0.5));
		document.body.appendChild(this._bgDiv);

		dojo.event.connect(this._window, "closeWindow", this, this._close);

		if (properties.bodyId)
		{
			var bodyContentPane = dojo.widget.createWidget("ContentPane", {layoutAlign: "client"});
	        bodyContentPane.setContent("<div id='" + properties.bodyId + "'></div>");
			this._window.addChild(bodyContentPane);
		}

		return this._window;
	},

	_close: function()
	{
		this._bgDiv.style.display = "none";
		this._bgDiv = null;
		this._window = null;
	},

	closeWindow: function()
	{
		this._window.closeWindow();
	},
	
	isClose: function()
	{
		return (this._window == null);
	}
};
