YAHOO.namespace("cmsIT");

if (!YAHOO.cmsIT.alertBox)
{
	YAHOO.cmsIT.alertBox = function()
	{
		// Private
		var	alertContainer = new Object(),
			alertContainerCount = 0,
			panelsCreated = false;


		// Public
		return {
			alertExists: function(alertName)
			{
				if (alertContainer[alertName])
				{
					return true;
				}
				else
				{
					return false;
				}
			},


			createAlertContainer: function(alertName, width, visible, closeable, modal)
			{
				for (var key in alertContainer)
				{
					if (key == alertName)
					{
						alert("Alert (" + alertName + ") has already been used.");
						return false;
					}
				}
		
				if (width == null)
				{
					alert("Missing argument \'width\'");
				}
				else
				{
					if (visible == undefined || visible == null)
					{
						visible = false;
					}
		
					if (closeable == undefined || closeable == null)
					{
						closeable = true;	
					}
		
					if (modal == undefined || modal == null)
					{
						modal = true;	
					}
		
					alertContainer[alertName] = new Object();
					alertContainer[alertName].width = width;
					alertContainer[alertName].visible = visible;
					alertContainer[alertName].closeable = closeable;
					alertContainer[alertName].modal = modal;
					alertContainer[alertName].onHide = new YAHOO.util.CustomEvent("onHide");
					alertContainer[alertName].onShow = new YAHOO.util.CustomEvent("onShow");
		
					alertContainerCount++;
				}
			},


			createPanels: function()
			{
				if (!panelsCreated)
				{
					panelsCreated = true;
					
					for (var key in alertContainer)
					{
						if (alertContainer[key].visible)
						{
							YAHOO.util.Dom.get(key).style.display = "block";
						}
		
						alertContainer[key].obj = new YAHOO.widget.Panel(key, 	{ 
																					width: alertContainer[key].width + "px", 
																					visible: alertContainer[key].visible, 
																					constraintoviewport: true, 
																					appendtodocumentbody: true, 
																					zIndex: 10,
																					y: 50,
																					//fixedcenter: true,
																					modal: alertContainer[key].modal
																				} );
						alertContainer[key].obj.render(document.body);
		
						var newX = Math.floor(YAHOO.util.Dom.getViewportWidth() / 2) - Math.floor(alertContainer[key].width / 2);
						
						alertContainer[key].obj.cfg.setProperty("x", newX);
		
						var ypc = YAHOO.util.Dom.getAncestorByClassName(key, "yui-panel-container");
						ypc.style.width = alertContainer[key].width + "px";
		
						var elementArray = YAHOO.util.Dom.getElementsByClassName("alertTitle", "div", key);
						var alertTitle = elementArray[0];
						
						elementArray = YAHOO.util.Dom.getElementsByClassName("alertMessage", "div", key);
						var alertMessage = elementArray[0];
		
						alertContainer[key].title = alertTitle;
						alertContainer[key].message = alertMessage;
					}
				}
			},


			getAlert: function(alertName)
			{
				return alertContainer[alertName];
			},


			getAlertContainer: function(alertName)
			{
				return alertContainer[alertName].obj;
			},


			getMessage: function(alertName)
			{
				return alertContainer[alertName].message.innerHTML;
			},


			getTitle: function(alertName)
			{
				return alertContainer[alertName].title.innerHTML;
			},


			hide: function(alertName)
			{
				if (alertContainer[alertName].closeable)
				{
					alertContainer[alertName].obj.hide();
					alertContainer[alertName].onHide.fire();
				}
			},


			openAlert: function(alertName, title, message)
			{
				this.setTitle(alertName, title);
				this.setMessage(alertName, message);
				this.show(alertName);
			},


			setMessage: function(alertName, message)
			{
				alertContainer[alertName].message.innerHTML = message;
		
				if (message.length > 0)
				{
					YAHOO.util.Dom.removeClass(alertContainer[alertName].message, "empty");
				}
				else
				{
					YAHOO.util.Dom.addClass(alertContainer[alertName].message, "empty");
				}
			},


			setTitle: function(alertName, title)
			{
				alertContainer[alertName].title.innerHTML = title;
			},


			show: function(alertName)
			{
				if (YAHOO.util.Dom.get(alertName).style.display == "none")
				{
					YAHOO.util.Dom.get(alertName).style.display = "block";
				}
				
				alertContainer[alertName].obj.show();
				alertContainer[alertName].onShow.fire();
			}
		};
	}();

	YAHOO.util.Event.addListener(window, "load", YAHOO.cmsIT.alertBox.createPanels);

	// Here for backwards compatibility
	alertContainerManager = YAHOO.cmsIT.alertBox;
}
