var Dialog = function(){		
	function getModalWrapper(){
		var cover = new Element('div', 
				{id: getUniqueDomId(), "class": "modalWrapper"}
		);
		return cover;
	}
	
	function getModalPane(){
		var pane = new Element('div', 
				{"class": "modalPane"}
		);
		return pane;
	}
	
	return {			
		createDialog: function(wholeMessage, modal){		
			var isModal = typeof(modal) == 'undefined' ? true : modal;
			// Set up message for effects
			wholeMessage.id = getUniqueDomId();
			wholeMessage.set("opacity", 0);
			
			// Used for show/hide hooks
			var wrapperId = wholeMessage.id;
			
			if(isModal){
				var modalWrapper = getModalWrapper();
				var modalPane = getModalPane();
				getBody().appendChild(modalWrapper);
				modalWrapper.appendChild(modalPane);
				wrapperId = modalWrapper.id;
				modalWrapper.appendChild(wholeMessage);
			} else {
				getBody().appendChild(wholeMessage);
			}
			
			return {
				getMessage: function(){
					return wholeMessage;
				},
				
				id: wrapperId,
				
				close: function(){
					fadeOutAndDisposeById(wrapperId);
				},
				
				show: function(){					
					centerElement(wholeMessage);
					fadeItemFromTo({item: wholeMessage});
				},
				
				flash: function(timeout){
					var useTimeout = timeout || 5000;
					fadeItemFromTo({item: wholeMessage, callback: function(){
						highlight(wrapperId);
						setTimeout("fadeOutAndDisposeById('" + wrapperId + "')", useTimeout);
					}});
				},
				
				center: function(){	
					centerElement(wholeMessage);
					return this;
				}
			};
		}
	};
}();

var DialogHelper = {
	flashMessage: function(message){
		var useTimeout = message.timeout || 5000;
		var wrapper = new Element('div', {"class": "flashMessageWrapper"});		
		var message = new Element('div', {text: message.text,
			"class": "flashMessage"});
		wrapper.appendChild(message);
		Dialog.createDialog(wrapper, false).flash(useTimeout);	
	},
		
	createBasicMessage: function(message){
		var useMessage = message || {text: "No message entered.", 
			title: "default title", footer: "No footer entered.",
			close: "close"};
		
		useText = useMessage.text || "";
		useTitle = useMessage.title || "";
		useClose = useMessage.close || "";
		useFooter = useMessage.footer || "";
		useWidth = useMessage.width || "300px";
		
		var wholeMessage = Element('div', {"class": "dialogWrapper", styles: {width: useWidth}});
		var textDiv = Element('div', {text: useText, "class": "dialogText"});
		var titleTextDiv = Element('div', {text: useTitle, "class": "dialogTitleText"});
		var titleDiv = Element('div', {"class": "dialogTitle", styles: {opacity: 1}});
		var closeDiv = Element('div', {text: useClose, "class": "dialogClose"});
		var footerDiv = Element('div', {text: useFooter, "class": "dialogFooter"});
	
		titleDiv.appendChild(titleTextDiv);
		titleDiv.appendChild(closeDiv);
		wholeMessage.appendChild(titleDiv);
		wholeMessage.appendChild(textDiv);
		wholeMessage.appendChild(footerDiv);
		
		return wholeMessage;
	}
};

