var modalOpened = false;
var Dialog = {

	show:function(id, params){
		
		var msgBox = document.getElementById(id);
			
		if (msgBox!=null){
			return;
		}		
		
		if(!params) {
			params = {};
		}		
		
		var content = params.content ? params.content : "";
		var  x, y , w =  params.w ? params.w : 350, h = params.h ? params.h : 90;
		var type = (params.type ? params.type : (params.type="Simple")), 
			opacity = typeof params.opacity != "undefined" ? params.opacity : 1;
		var modal = typeof params.modal != "undefined" ? params.modal : false, 
			shadow = typeof params.shadow != "undefined" ? params.shadow : true;
		
		if(typeof params.x == "number" && typeof params.y == "number") {			
			x = params.x;
			y = params.y;
		} else {			
			var viewportWidth = $(window).width();
			var viewportHeight = $(window).height();
	
			x = (viewportWidth-w)/2;
			y = $(window).scrollTop() + (viewportHeight-h)/2 - 200;			
		}
		
		var elem = document.createElement('div');
	
		content = content.replace(/'/gi, "\\'");
		id = id.replace(/'/gi, "\\'");		
		
		var html = "";
		switch(type) {
			case "Standard":
			case "Simple":			
				html = renderStandardDialogHTML(id, params);
				elem.className = "dialogStandard";				
				break;
			case "Tooltip":
				html = renderTooltipDialogHTML(id, params);
				elem.className = "dialogTooltip";
				break;				
		}
		
		elem.innerHTML = html;
		elem.id = id;
		
		elem.style.position='absolute';
		elem.style.top=y+'px';
		elem.style.left=x+'px';
		elem.style.zIndex=999;

		if(typeof w == "number") {
			w = w+"px";
		}

		if(typeof h == "number") {
			h = h+"px";
		}
		
		elem.style.height= h;	
		elem.style.width=w;
		elem.style.opacity = opacity;
		elem.style.filter = "alpha(opacity="+Math.round(opacity*100)+")"; /* IE's opacity*/
		
		if(modal) {
			Dialog.showModalOverlay();
		}		
		
		document.body.appendChild(elem);
		
		if(shadow) {
			Dialog.showShadow(elem);
		}		
	},
	
	showShadow: function(dlgEl) {
		var shadow = document.createElement("DIV");
		shadow.id = "shadow-"+dlgEl.id;
		shadow.className = "shadow";
		shadow.style.height = dlgEl.offsetHeight+"px";
		shadow.style.width = dlgEl.offsetWidth+"px";
		shadow.style.zIndex = 998;
		shadow.style.top = parseInt(dlgEl.style.top)+9+"px";
		shadow.style.left = parseInt(dlgEl.style.left)+7+"px";	
		
		document.body.appendChild(shadow);
	},
	
	recalcSize: function(dlgElId) {
		var shadow = $("#shadow-"+dlgElId);
		var dlg = $("#"+dlgElId);
		if(shadow != null && dlg != null)  {			
			shadow.css("height", dlg.css("height"));
			shadow.css("width", dlg.css("width"));			
		}
	},
	
	hideShadow: function(dlgId) {
		var shdEl = $id("shadow-"+dlgId);
		if(shdEl != null) {
			shdEl.parentNode.removeChild(shdEl);
		}
	},
	
	showModalOverlay: function(){
		var modal_el = $(".modal_overlay");
		modal_el.css("z-index", 997);
		modal_el.css("height", $(document).height());
		modal_el.css("width", $(document).width());
		modalOpened = true;		
	},
	
	hideModalOverlay: function(){
		var modal_el = $(".modal_overlay");
		modal_el.css("z-index", 0);
		modal_el.css("height", 0);
		modal_el.css("width", 0);
		modalOpened = false;		
	},
	
	hide:function(id){
		
		var msgBox = document.getElementById(id);
		
		if (msgBox!=null){
			msgBox.parentNode.removeChild(msgBox);

		}
		
		if(modalOpened) {
			Dialog.hideModalOverlay();
		}
		
		Dialog.hideShadow(id);
	}
}

function renderStandardDialogHTML(id, params) {
		if(!params) {
			params = {};
		}
	
		var html = [];
		
		html.push('<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">');
		html.push(  '<tr>');
		html.push(		'<td width="4" height="4"><img src="tpl/img/corner_tl.png" width="4" height="4" /></td>');
		html.push(			'<td height="4" style="border-top: 1px solid #b1bac3;"></td>');
		html.push(			'<td width="4" height="4"><img src="tpl/img/corner_tr.png" width="4" height="4" /></td>');
		html.push(	   '</tr>');
		html.push(	  '<tr>');
		html.push(		'<td style="border-left: 1px solid #b1bac3;"></td>');
		html.push(		'<td align="right" style="padding-right:5px; height:10px;"><div onclick="Dialog.hide(\''+id+'\')" class="btn_close" onmouseover="this.className=\'btn_close_hover\'" onmouseout="this.className=\'btn_close\'" ></div></td>');
		html.push(		'<td style="border-right: 1px solid #b1bac3;"></td>');
		html.push(  '</tr>');
		html.push(	  '<tr>');
		html.push(		'<td style="border-left: 1px solid #b1bac3;"></td>');
		html.push(		'<td >');
		if(params.type == "Simple") {
			html.push("<div style='padding-left: 20px'>");
			html.push(			params.content);
			html.push("</div>");
		} else {
			html.push(			params.content);
		}

		html.push(		'</td>');
		html.push(		'<td style="border-right: 1px solid #b1bac3;"></td>');
		html.push(  '</tr>');
		
		if(params.buttons) {
			html.push(  '<tr>');	
			html.push(		'<td style="border-left: 1px solid #b1bac3;"></td>');
			html.push(		'<td>');
			html.push(			'<div align="right" style="padding: 0px 15px 10px 0px;">');
			
			var btn;
			for(var i=0; i<params.buttons.length; i++) {
				btn = params.buttons[i];
				
				if(!btn.onclick) {
					btn.onclick = "Dialog.hide(\'"+id+"\')";
				}
				
				if(!btn.className) {
					btn.className = "btn_"+((i!=params.buttons.length-1 || i == 0)?1:2)+'medium';
				}
				
				if(!btn.id) {
					btn.id = id+"_"+btn.label;
				}
				
				html.push('<input id="'+btn.id+'"  type="button" onclick="'+btn.onclick+'" class="'+btn.className+' text_bold"  value="'+btn.label+'" /> ');
			}
			
			html.push(			'</div>');					
			html.push(		'</td>');
			html.push(		'<td style="border-right: 1px solid #b1bac3;"></td>');
			html.push(  '</tr>');										
		}
		

		html.push(  '<tr>');
		html.push(		'<td><img src="tpl/img/corner_bl.png" width="4" height="4" /></td>');
		html.push(		'<td height="4" style="border-bottom: 1px solid #b1bac3;"></td>');
		html.push(		'<td><img src="tpl/img/corner_br.png" width="4" height="4" /></td>');
		html.push(  '</tr>');
		html.push('</table>');
		
		return html.join("");
}



function renderTooltipDialogHTML(id, params) {
	return params.content;
}