/**
 * 팝업 윈도우에 대해서 관리하는 자바스크립트
 *
 * @version	2003-12-16
 * @author	namjinpark
 * @constructor
 */
function WindowUtil() {
	this.im_oWindowList = new Array();
	
	this.openAtCenter = openAtCenter_WindowUtil;
	this.showDialog = showDialog_WindowUtil;
	this.handleUnload = handleUnload_WindowUtil;
}


/**
 * 현재스크립트 포함하는 Window가 다른 페이지로 이동, F5를 통해서 이동되거나 또는
 * 창이닫히는 경우의 onunload event 를 처리하게 된다. <BR>
 * onunload = lm_oWindowUtil.handleUnload; 가 설정되어 있어야 한다. <BR>
 * 처리가 잘 되지 않는다. 
 */
function handleUnload_WindowUtil() {
	//alert(this.im_oWindowList);
	//alert(this.im_oWindowList.length);
	for (var i in this.im_oWindowList) {
		if (this.im_oWindowList[i] != null) {
			//alert(this.im_oWindowList[i].name);
			if(this.im_oWindowList[i].closed == false) this.im_oWindowList[i].close();
		}	
	}
}

/**
 * 팝업 윈도우를 화면 중앙에 표시한다.
 *
 * @param	pm_sUrl	이동할 URL
 * @param	pm_sEnv	팝업 윈도우 환경 변수 값 (width, height, left, top, screenX, screenY 는 제외한 나머지 설정값)
 * @param	pm_iWidth	팝업 윈도우 width
 * @param	pm_iHeight	팝업 윈도우 height
 * @param	pm_sWinName	팝업 윈도우 이름
 * @return	PopUp Window Handler
 */
function openAtCenter_WindowUtil(pm_sUrl, pm_sEnv, pm_iWidth, pm_iHeight, pm_sWinName) {
	// URL 이 없는 경우 null 값을 리턴한다.
	if(pm_sUrl == null) {
		return null;
	}
	
	var lm_sWinName = "xeip_popup";
	var lm_iXPosition = (window.screen.width / 2);
	var lm_iYPosition = (window.screen.height / 2);
	// 현재 윈도우의 width
	var lm_iWidth = window.outerWidth;
	// 현재 윈도우의 height
	var lm_iHeight = window.outerHeight;
	// PopUp 윈도우 환경 변수 값
	var lm_sEnv = "";
	
	// Window 이름을 전달받은 경우
	if(pm_sWinName != null) {
		lm_sWinName = pm_sWinName;
	}
	
	// window의 width를 전달 받은 경우
	if(pm_iWidth != null) {
		lm_iWidth = pm_iWidth;
	}
	
	// window의 height을 전달 받은 경우
	if(pm_iHeight != null) {
		lm_iHeight = pm_iHeight;
	}
	
	lm_iXPosition = (window.screen.width / 2) - (lm_iWidth / 2 + 10);
	lm_iYPosition = (window.screen.height / 2) - (lm_iHeight / 2 + 20);
	lm_sEnv = "width=" + pm_iWidth + ", height=" + pm_iHeight +", ";
	lm_sEnv = lm_sEnv + "left=" + lm_iXPosition + ",top=" + lm_iYPosition + ",screenX=" + lm_iXPosition + ",screenY=" + lm_iYPosition + ", ";
	// window의 환경 변수 값을 전달 받은 경우
	if(pm_sEnv != null) {
		lm_sEnv += pm_sEnv;
	}
	
	var lm_oWinHandle = window.open(pm_sUrl, lm_sWinName, lm_sEnv);
	lm_oWinHandle.focus();
	this.im_oWindowList[lm_sWinName] = lm_oWinHandle;
    return lm_oWinHandle;
}

/**
 * ModalDialog 또는 ModelessDialog를 화면 중앙에 표시한다.
 *
 * @param	pm_sUrl			이동할 URL
 * @param	pm_oArguments	ModalDialog에 넘어가는 Argument 객체 값
 * @param	pm_sEnv			팝업 윈도우 환경 변수 값 (dialogWidth, dialogHeight, dialogTop, dialogLeft, center 를 제외한 나머지 값)
 * @param	pm_iWidth		팝업 윈도우 width
 * @param	pm_iHeight		팝업 윈도우 height
 * @param	pm_bModeless	Modeless Dialog 출력 플래그 (true 이면 Modeless Dialog 출력)
 * @return	ModalDialog 의 returnValue
 */
function showDialog_WindowUtil(pm_sUrl, pm_oArguments, pm_sEnv, pm_iWidth, pm_iHeight, pm_bModeless) {
	var lm_sEnv = "";
	var lm_sBasicEnv = "status:no; scroll:no; ";
	lm_sEnv += " dialogWidth:" + pm_iWidth + "px;";
	lm_sEnv += " dialogHeight:" + pm_iHeight + "px;";
	lm_sEnv += " center=yes; ";
	
	if(pm_sEnv == null && pm_sEnv == "") lm_sEnv += lm_sBasicEnv;
	else lm_sEnv += pm_sEnv;
	
	var lm_oReturn = null;
	if(pm_bModeless == true) lm_oReturn = window.showModelessDialog(pm_sUrl, pm_oArguments, lm_sEnv);
	else lm_oReturn = window.showModalDialog(pm_sUrl, pm_oArguments, lm_sEnv);
	
	return lm_oReturn;
}