var dialog = new Dialog();

/* generic dialog */
function Dialog(){
	this.initialized = false;
	
	/* initialize dialog */
	this.init = function(){
		if(!this.initialized){
			var dialogOverlay = document.createElement("div");
			var dialogWindow = document.createElement("div");
			
			dialogOverlay.id = "dialogOverlay";
			dialogWindow.id = "dialogWindow";
			
			setOpacity(dialogOverlay,75);
			
			document.body.appendChild(dialogOverlay);
			document.body.appendChild(dialogWindow);
			
			/* create iframe for ie6 */
			if(typeof document.body.style.maxHeight==="undefined"){
				var dialogFrame = document.createElement("iframe");
				dialogFrame.id = "dialogFrame";
				
				setOpacity(dialogFrame,0);
				
				document.body.appendChild(dialogFrame);
			}
			
			this.initialized = true;
		}
	}
	
	/* show dialog */
	this.show = function(html,width,height,smooth){
		this.init();
		
		var dialogOverlay = _("dialogOverlay");
		var dialogWindow = _("dialogWindow");
		
		if(dialogOverlay && dialogOverlay){
			/* show iframe for ie6 */
			if(typeof document.body.style.maxHeight==="undefined"){
				var dialogFrame = _("dialogFrame");
				
				if(dialogFrame){
					dialogFrame.style.display = "inline";	
				}
			}
			
			var windowHeight = (document.compatMode=="CSS1Compat" ? document.documentElement.clientHeight : document.body.clientHeight);
			var windowWidth = (document.compatMode=="CSS1Compat" ? document.documentElement.clientWidth : document.body.clientWidth);
			
			dialogWindow.innerHTML = html;
			dialogWindow.style.width = width+"px";
			dialogWindow.style.height = height+"px";
			dialogWindow.style.left = Math.floor((windowWidth-width)/2)+"px";
			dialogWindow.style.top = Math.floor((windowHeight-height)/2)+"px";
			dialogOverlay.style.display = "inline";
			dialogWindow.style.display = "inline";
		}

		document.onkeydown = abortDialog;
	}
	
	/* hide dialog */
	this.hide = function(){
		this.init();
		
		var dialogOverlay = _("dialogOverlay");
		var dialogWindow = _("dialogWindow");
		
		if(dialogOverlay && dialogOverlay){
			/* hide iframe for ie6 */
			if(typeof document.body.style.maxHeight==="undefined"){
				var dialogFrame = _("dialogFrame");
				
				if(dialogFrame){
					dialogFrame.style.display = "none";	
				}
			}
			
			dialogOverlay.style.display = "none";
			dialogWindow.style.display = "none";
		}
		
		document.onkeydown = null;
	}
}
	
/* hide dialog when escape-key is pressed */
function abortDialog(e){
	var keycode = (e==null ? window.event.keyCode : (e.modifiers ? e.which : e.keyCode));
	var escapeKey = (e==null ? 27 : (e.modifiers ? 27 : (e.DOM_VK_ESCAPE ? e.DOM_VK_ESCAPE : 27)));
	
	if(keycode==escapeKey){
		dialog.hide();
	}
	
	return false;
}