var OKOnly = 0;
var OKCancel = 1;
var YesNoCancel = 2;
var YesNo = 3;

function XMSGB_show(params, callback)
{
	var strcb = "callback(";

	var defaults = 
	{
		type:OKOnly,
		title:'alert',
		msg:'Are your sure?',
		width:280,
		height:50,
		language:'ko',

		ok:'확인',
		cancel:'취소',
		yes:'예',
		no:'아니오'
	}

	if(params)
	{
		eval("params = {" + params + "}");
		defaults = jQuery.extend(defaults,params);
		switch(defaults.language)
		{
			case 'en' :
				defaults.ok = 'OK';
				defaults.cancel = 'Cancel';
				defaults.yes = 'Yes';
				defaults.no = 'No';
				break;
			case "ko" :
				defaults.ok = '확인';
				defaults.cancel = '취소';
				defaults.yes = '예';
				defaults.no = '아니오';
				break;
			case "ja" :
				defaults.ok = '確認';
				defaults.cancel = '取り消し';
				defaults.yes = 'はい';
				defaults.no = 'いいえ';
				break;
			case "zh" :
				defaults.ok = '确认';
				defaults.cancel = '取消';
				defaults.yes = '是';
				defaults.no = '不是';
				break;
		}
	}

	if (typeof callback != 'function')
	{
		if (typeof callback == 'object')
		{
			try
			{
				follow = callback.href;
				callback = function() { location.href = follow; }
			}
			catch (e)
			{
				callback = function() {}
			}

		}
		else
		{
			callback = function() {}
		}
	}

	for (var i = 2; i < XMSGB_show.arguments.length; i++)
	{
		if(typeof XMSGB_show.arguments[i] == 'string')
			strcb += "\'" + XMSGB_show.arguments[i] + "\', ";
		else
			strcb += XMSGB_show.arguments[i] + ", ";
	}

	try
	{
		var strContent;

		if (document.getElementById("XMDB_HideSelect") == null)
			jQuery("body").append("<iframe id='XMDB_HideSelect'></iframe><div id='XMDB_overlay'></div><div id='XMDB_window'></div>");

		jQuery(window).scroll(XMDB_position);
		XMDB_overlaySize();
			
		XMDB_WIDTH = (defaults.width*1) + 30;
		XMDB_HEIGHT = (defaults.height*1) + 40;

		if(jQuery.browser.msie)
			modalContentW = XMDB_WIDTH - 8;
		else
			modalContentW = XMDB_WIDTH - 40;
		modalContentH = XMDB_HEIGHT - 40;

		jQuery("#XMDB_window").append("<div id='XMDB_title'><div id='XMDB_modalWindowTitle'>"+defaults.title+"</div><div id='XMDB_closeModalWindow'><a href='#' id='XMDB_closeWindowButton' title='Close'>x</a></div></div>");
		strContent = "<div id='XMDB_modalContent'>"+defaults.msg+"<div id='XMDB_dialogButtons'>"
		switch(defaults.type)
		{
			case OKOnly :
				strContent += "<input type='submit' id='XMSGB_okButton' value='"+defaults.ok+"' class='XMBbtntype1' style='width: 70px;'>";
				break;
			case OKCancel :
				strContent += "<input type='submit' id='XMSGB_okButton' value='"+defaults.ok+"' class='XMBbtntype1' style='width: 70px;'> <input type='submit' id='XMSGB_cancelButton' value='"+defaults.cancel+"' class='XMBbtntype1' style='width: 70px;'>";
				break;
			case YesNoCancel :
				strContent += "<input type='submit' id='XMSGB_yesButton' value='"+defaults.yes+"' class='XMBbtntype1' style='width: 70px;'> <input type='submit' id='XMSGB_noButton' value='"+defaults.no+"' class='XMBbtntype1' style='width: 70px;'> <input type='submit' id='XMSGB_cancelButton' value='"+defaults.cancel+"' class='XMBbtntype1' style='width: 70px;'>";
				break;
			case YesNo :
				strContent += "<input type='submit' id='XMSGB_yesButton' value='"+defaults.yes+"' class='XMBbtntype1' style='width: 70px;'> <input type='submit' id='XMSGB_noButton' value='"+defaults.no+"' class='XMBbtntype1' style='width: 70px;'>";
				break;
		}
		strContent += "</div></div>";
		jQuery("#XMDB_window").append(strContent);

		if (defaults.classname) jQuery("#XMDB_window").addClass(defaults.classname);
		jQuery("#XMDB_modalContent").css({'padding': '20px', 'width': modalContentW+'px'});
		
		jQuery("#XMSGB_okButton").click
		(
			function()
			{ 
			 	XMSGB_remove();
				eval(strcb += "1)");
				return false;
			}
		);
		jQuery("#XMSGB_yesButton").click
		(
			function()
			{ 
			 	XMSGB_remove();
				eval(strcb += "1)");
				return false;
			}
		);
		jQuery("#XMSGB_noButton").click
		(
			function()
			{ 
			 	XMSGB_remove();
				eval(strcb += "0)");
				return false;
			}
		);
		jQuery("#XMSGB_cancelButton").click
		(
			function()
			{ 
				XMSGB_remove();
				eval(strcb += "-1)");
				return false;
			}
		);
		jQuery("#XMDB_closeWindowButton").click
		(
			function()
			{ 
				XMSGB_remove();
				eval(strcb += "-1)");
				return false;
			}
		);

		XMDB_position();
		jQuery("#XMDB_window").css({display:"block"}); 
		
		jQuery(window).resize(XMDB_position);
		
		// close on escape
		document.onkeyup = function(e)
		{ 	
			if (e == null)
			{ // ie
				keycode = event.keyCode;
			}
			else
			{ // mozilla
				keycode = e.which;
			}
			if(keycode == 27)
			{ // close
				XMSGB_remove();
				eval(strcb += "-1)");
				return false;
			}	
		}

	}
	catch(e)
	{
		console.warn(e);
	}
	
	return false;
}

function XMSGB_remove()
{
	jQuery("#XMDB_closeWindowButton").unbind("click");
	jQuery("#XMDB_window").fadeOut("fast",function(){jQuery('#XMDB_window,#XMDB_overlay,#XMDB_HideSelect').remove();});
	document.onkeyup = null;
}
