﻿/*************************************************************************
* 업무 그룹명 : POR
* 서브 업무명 : Portal Management
* 설       명 : 포탈 관리 부분에서 공통적으로 사용되는 Script.
				키보드 이벤트 막기. 마우스 클릭 막기. 팝업 윈도우 생성. 
* 작  성   자 : 민혜란
* 작  성   일 : 2007. 10. 29
* Copyright ⓒ ThinkMarine All Right Reserved
*************************************************************************/
//document.onkeydown = preventKeyDown;
//document.oncontextmenu = preventContextMenu;
//document.onmousedown = preventRMouseClick;

window.history.forward();		// Back, Forward 버튼 막기

/*************************************************************************
* 키보드 이벤트 막기 ( Ctrl+N, Ctrl+R, F2 ~ F12 )
* 예 : document.onkeydown = preventKeyDown()
*************************************************************************/
function preventKeyDown()
{
	if (!event)
		return;
    if((event.ctrlKey == true && (event.keyCode == 78 || event.keyCode == 82 
                                  || event.keyCode == 79 || event.keyCode == 76)) //ctrl+N , ctrl+R, Ctrl+O, ctrl+L
			|| (event.altKey == true && (event.keyCode == 13 || event.keyCode == 10))
            || (event.keyCode == 113/*F2*/)  || (event.keyCode == 114/*F3*/) 
            || (event.keyCode == 115 /*F4*/) || (event.keyCode == 116/*F5*/) 
            || (event.keyCode == 117/*F6*/)  || (event.keyCode == 118 /*F7*/) 
            || (event.keyCode == 119/*F8*/)  || (event.keyCode == 120/*F9*/) 
            || (event.keyCode == 121 /*F10*/)|| (event.keyCode == 122/*F11*/) 
            || (event.keyCode == 123/*F12*/) )
    {
        event.keyCode = 0;
        event.cancelBubble = true;
        event.returnValue = false;
    }
}


/*************************************************************************
* 마우스 오른쪽 클릭 이벤트 막기 document.onmousedown = preventRMouseClick()
*************************************************************************/
function preventRMouseClick()
{
	if (!event)
		return;
    if( event.button == 2 )
    {
        event.returnValue = false;
    }
}

/*************************************************************************
* 컨텍스트 메뉴 막기 document.oncontextmenu = preventContextMenu();
*************************************************************************/
function preventContextMenu()
{
	event.returnValue = false;
    return false;
}

/*************************************************************************
* 문자열 뒤 공백 제거
* text : 공백을 제거할 문자열
*************************************************************************/
function trim( text )
{
    var i = text.length - 1;
    while( text.charAt(i) == " " )
    {
        i--;
    }
    return text.substr( 0, i + 1 );
}

/********************************************************************************
* 매개변수로 넘어온 headerCheck의 checked 값을 판별하여 
* gridID의 그리드 전체 행에 체크합니다.
********************************************************************************/
function setAllCheckBox(headerCheck, gridID)
{
	var grid = null;
	var checkValue = headerCheck.checked;
	
     grid  = igtbl_getGridById(gridID);

	 for (i = 0; i < grid.Rows.length; i++)   
     {
        grid.Rows.getRow(i).getCellFromKey("P_CHECK").setValue(checkValue);
     }      
}

/*************************************************************************
* 상위 노드의 Seq가 매개변수로 넘어온 Seq와 같으면 FALSE를 리턴합니다.
*************************************************************************/
function confirmSelfParent(nodeElement, selfSeq)
{
	var parentNode = nodeElement.getParent();
	var nodeKeyArray = parentNode.getDataKey().split(',');
	if (nodeKeyArray[0] == selfSeq)
		return false;
	else
	{
		if (parentNode.getParent())
		{
			var confirm = confirmSelfParent(parentNode, selfSeq);
			if( confirm == false)
				return false;
		}
	}	
}

/*************************************************************************
* 함수를 호출한 페이지에 메뉴 순번이 존재하면 신고하기 팝업창을 띄웁니다.
*************************************************************************/
function openReport()
{
	var menuseq				= null;
	menuseq					= getQueryString("MENUSEQ");
	if (menuseq)
	{
		var url 				= window.location.pathname.substring(1).split("/");

		if (url.length > 3 && url[2].length > 3)
		{
			if (url[2].substring(url[2].length - 3) == "Kor")
				windowOpenModal(460, 410, "/SHORE/POR/ReportKor/frmReport.aspx", "NO");
			else
				windowOpenModal(460, 410, "/SHORE/POR/Report/frmReport.aspx", "NO");
		}
		else
			windowOpenModal(460, 410, "/SHORE/POR/Report/frmReport.aspx", "NO");
	}
	else
	{
		if (window.location.pathname.indexOf("frmDelegationUserChange") > 0)
			windowOpenModal(460, 410, "/SHORE/POR/Report/frmReport.aspx?MENUSEQ=NO", "NO");
		else
		{
			if (window.location.pathname.indexOf("Kor/") > 0 )
				alert("메뉴 순번이 존재하지 않습니다.");
			else
				alert("Menu order does not exist.");
		}
	}
}

/************************************************************************************
* 트리의 선택된 노드의 하위 노드를 전부 체크하거나 체크 해지 합니다. 
* checkValue : 체크, 언체크 값. 
* treeId : 트리 ID
* alertMsg : 한 영 메시지
************************************************************************************/
function selectAll(checkValue, treeId, alertMsg)
{
	var tree = null;
	var node = null;
	var parent = null;
	
	tree	= igtree_getTreeById(treeId);
	if (!tree)
	{
		event.returnValue = false;
		event.cancelBuble = true;
		return;
	}
		
	node	= tree.getSelectedNode();
	if (!node)
	{
		alert(alertMsg);
		event.returnValue = false;
		event.cancelBuble = true;
		return;
	}	
	
	if (checkValue)
	{
		if (node.getChecked() == false)
			node.setChecked(true);
				
		if (node.getChildNodes().length > 0)
			recursiveChildCheck(node, checkValue);		
	}
	else
	{
		if (node.getChildNodes().length > 0)
			recursiveChildCheck(node, checkValue);		
		
		if (node.getChecked())
			node.setChecked(false);
	}

	event.returnValue = false;
	event.cancelBuble = true;
}

/************************************************************************************
* 선택된 노드의 하위 노드가 있을 경우 계속적으로 체크 여부를 판단합니다. 
* parentNode : 선택된 노드, 혹은 그 하위 노드
* checkValue : 체크, 언체크 값
************************************************************************************/
function recursiveChildCheck(parentNode, checkValue)
{
	var nodes			= parentNode.getChildNodes();
	for (var i = 0; i < nodes.length; i++)
	{
		if (!nodes[i])
			continue;
		
		if (checkValue )
		{
			if (nodes[i].getChecked() == false)
				nodes[i].setChecked(true);
				
			if (nodes[i].getChildNodes().length > 0 )
				recursiveChildCheck(nodes[i], checkValue);
		}
		else
		{
			if (nodes[i].getChildNodes().length > 0 && nodes[i].getChecked() == true)
				recursiveChildCheck(nodes[i], checkValue);
			
			if (nodes[i].getChecked())
				nodes[i].setChecked(false);
		}
	}
}

/*************************************************************************
* 포탈 바로 가기 .
* queryString : 메뉴 순번과 선택 메뉴 순번의 조합
* url	: 메인 화면에 뿌려질 url, 없을 경우 선택 메뉴 순번이 뿌려짐.
*************************************************************************/
function locationPortal(queryString, url)
{
	if (!queryString)
		return ;
		
	try
	{
		parent.frames["TopMenu"].closeSearch();
		parent.openLeftFrame();
		if (url)
		{
			parent.frames["LeftMenu"].location.href	= "/SHORE/POR/Portal/frmLeft.aspx?"+queryString + "&OPENMAIN=NO";
			parent.frames["Main"].location.href		= url;
		}
		else
		{
			parent.frames["LeftMenu"].location.href	= "/SHORE/POR/Portal/frmLeft.aspx?"+queryString;
		}
	}
	catch (exception) {}	
}

/*************************************************************************
* frmLeft.aspx로 보내지 않는 바로 가기 .
* left : 좌측 화면에 뿌려질 URL
* main : 메인 화면에 뿌려질 URL
*************************************************************************/
function locationPortalNo(left, main)
{
	if (!left || !main)
		return ;
		
	try
	{
		parent.frames["TopMenu"].closeSearch();
		parent.openLeftFrame();
		
		parent.frames["LeftMenu"].location.href	= left;
		parent.frames["Main"].location.href		= main;
	}
	catch (exception) {}
}


/*************************************************************************
* ERP 바로 가기 .
*************************************************************************/
function locationErp(queryString)
{
	if (!queryString)
		return ;
	
	try
	{
		if (parent.erp && parent.erp.closed == false)
		{
			parent.erp.frames["LeftMenuErp"].location.href = "/SHORE/POR/Portal/frmLeftErp.aspx?" + queryString;
			parent.erp.focus();
		}
		else
		{
			var widthValue   = 1020;
			var heightValue  = 712;

			var left = (screen.availWidth - widthValue)/2;
			var top = (screen.availHeight - heightValue)/2;
			
			parent.erp = window.open("/SHORE/POR/Portal/frmMainErp.aspx?" + queryString, "ERP", "width="+widthValue+", height="+heightValue+",resizable=0, locationbar=0,menubar=0,toolbar=0, left="+left+", top="+top);
			if (parent.erp)
				parent.erp.focus();
		}
	}
	catch(exception) {}
}

var setTabString;
/*************************************************************************
* ERP 바로 가기 .
*************************************************************************/
function locationErpUrl(queryString, url, title)
{
	try
	{
		if (!queryString || !url || !title)
			return ;
			
		if (parent.erp && parent.erp.closed == false)
		{
			if (parent.erp.frames["MainErp"].location.href.search("frmContentTab.aspx") <= 0)
			{		
				setTabString										= getQueryStringInUrl("SELECTMENUSEQ", queryString)+ ", " + url + ", " + title;
				parent.erp.frames["LeftMenuErp"].location.href			= "/SHORE/POR/Portal/frmLeftErp.aspx?" + queryString + "&OPENMAIN=NO";
			}
			else
			{
				parent.erp.frames["LeftMenuErp"].location.href			= "/SHORE/POR/Portal/frmLeftErp.aspx?" + queryString + "&OPENMAIN=NO";
				if (parent.erp.frames["MainErp"].igtab_getTabById( "uwtbErp" ))
					parent.erp.frames["MainErp"].setNewTab( getQueryStringInUrl("SELECTMENUSEQ", queryString), url, title, true );	//메뉴 Seq, PageURL, 페이지 명		
			}
			parent.erp.focus();
		}
		else
		{
			var widthValue   = 1020;
			var heightValue  = 712;

			var left = (screen.availWidth - widthValue)/2;
			var top = (screen.availHeight - heightValue)/2;
			
			parent.erp = window.open("/SHORE/POR/Portal/frmMainErp.aspx?" + queryString + "&OPENMAIN=NO", "ERP", "width="+widthValue+", height="+heightValue+", locationbar=0,menubar=0,toolbar=0, left="+left+", top="+top);
			if (parent.erp)
			{
				parent.erp.focus();
				setTabString = getQueryStringInUrl("SELECTMENUSEQ", queryString)+ ", " + url + ", " + title;
				parent.erp.frames["MainErp"].lcoation.href  = "/SHORE/POR/Portal/frmContentTab.aspx";
			}
		}
	}
	catch (exception)
	{
	}
}

/*************************************************************************
* 도움말 .
* 수정 : 포탈 팝업창에서 SHORE/,,,으로 넘어올 때
*************************************************************************/
function openHelp(paramLanguage)
{
	var path;
	
	if (document.location.pathname.indexOf("/") == 0 )
		path			= document.location.pathname;
	else
		path			= "/" + document.location.pathname;
		
	var BasePath		= path.substring(path.indexOf('/')+1, path.length); // Path
	var FirstPath		= "/" + BasePath.substring(0,BasePath.indexOf('/'))+"/";  // 육상용 /SHORE/, //선박용 /VESSEL/
	
	var pathArray	= path.split('/');
	var i;
	var helpPath = "";
	for(i=1; i < pathArray.length-1; i++)
	{
		if(i==2)
		{
			helpPath = helpPath + "/HELP/HELP.html?helpPath=" +  pathArray[i];
		}
		else
		{
			helpPath = helpPath + "/" + pathArray[i];
		}
	}
	
	//ERP 시스템의 한/영 체크?
	var language		= "20";
	try
	{
		if (helpPath.indexOf("Kor") <= 0)
		{
			if (parent && parent.location.href.indexOf("PortalKor") > 0 
			&& (parent.location.href.indexOf("PortalKor/frmMainErp.aspx") > 0 || parent.location.href.indexOf("PortalKor/frmContentTab.aspx") > 0) )
				language		= "10";
			else if (opener && opener.parent && opener.parent.location.href.indexOf("PortalKor") > 0 
			&& (opener.parent.location.href.indexOf("PortalKor/frmMainErp.aspx") > 0 || opener.parent.location.href.indexOf("PortalKor/frmContentTab.aspx") > 0) )
				language		= "10";
			else if (dialogArguments && dialogArguments.parent && dialogArguments.parent.location.href.indexOf("PortalKor") > 0 
			&& (dialogArguments.parent.location.href.indexOf("PortalKor/frmMainErp.aspx") > 0 || dialogArguments.parent.location.href.indexOf("PortalKor/frmContentTab.aspx") > 0) )
				language		= "10";	
		}
	}
	catch (e)
	{
		language		= "20";
	}
	
	if (paramLanguage)
		language		= paramLanguage;
		
	if (language		== "20")
		helpPath		= helpPath + "/index.html";
	else
	{
		if (pathArray[3].indexOf("Kor") > -1 )
			helpPath = helpPath + "/index.html";
		else
			helpPath	= helpPath + "Kor/index.html";
	}
	
	helpAnchor = pathArray[pathArray.length-1].split('.')[0];
	
	helpPath = helpPath + "#" + helpAnchor;
	
	var left				= (window.screen.width - 720) / 2;
	var top				= (window.screen.height - 660) / 2;	
	
	var helpWin=window.open(helpPath,"help","width=720, height=660, top=" + top + ",left=" + left + ",scrollbar=yes,resizable=no");
	helpWin.focus();
}

/**************************************************************************************
* Url로 부터 입력된 QueryName 에 해당하는 쿼리스트링 값을 얻어온다.
* url : window.location.search.substring(1) 
**************************************************************************************/
function getQueryStringInUrl(queryName, url)
{
	 var arrayQueryString		= url.split("&");
    
    for( var i = 0 ; i < arrayQueryString.length ; i++) 
    {  
		var arrayQuery			= arrayQueryString[i].split("=");
		
		if (arrayQuery[0] == queryName ) 
			return arrayQuery[1];
    }
    
    return "";
}

/**************************************************************************************
* 도움말 페이지를 호출합니다.
**************************************************************************************/
function windowOpenHelp(path)
{
	var left				= (window.screen.width - 730) / 2;
	var top				= (window.screen.height - 660) / 2;	
	window.open('/SHORE/HELP/HELP.html?helpPath='+path, 'help', 'left=' + left +', top=' + top + ',width=730, height=660,scrollbar=yes,menubar=no,');
}


/*************************************************************************
* 유효성 검사에 통과하면 show 함수를 호출합니다.
* valigationGroupName : 버튼의 유효성 검사 그룹 명
*************************************************************************/
function checkShow(valigationGroupName)
{
	if (Page_ClientValidate(valigationGroupName))
		show();
}

/*************************************************************************
* 특정 페이지로 이동합니다.
*************************************************************************/
function LocationPage(menuSeq, selectMenuSeq, url, text)
{  
	try
	{
		try
		{
			parent.frames["TopMenu"].closeSearch();
		}
		catch (exception)
		{
			parent.parent.frames["TopMenu"].closeSearch();
		}

		try
		{
			parent.openLeftFrame();
		}
		catch (exception)
		{
			parent.parent.openLeftFrame();
		}
		
		var leftUrl																= "/SHORE/POR/Portal/frmLeft.aspx?MENUSEQ=" + menuSeq + "&SELECTMENUSEQ=" + selectMenuSeq;
		var division;
		
		division																= parent.division;
			
		if (parent.division != "undefined")
			division															= parent.parent.division;

		// 탭으로 구성될 경우.
		if (division == false)
		{
			if (url)
			{
				if (parent.parent.frames["Main"].location.href.search("frmContentTab.aspx") <= 0)
				{
					parent.parent.frames["Main"].location.href			= "frmContentTab.aspx";
					parent.parent.frames["TopMenu"].newTabString	= menuSeq + ", " + url + ", " + text;
				}
				else
				{
					if (parent.parent.frames["Main"].igtab_getTabById("uwtbErp"))
						parent.parent.frames["Main"].setNewTab(menuSeq, url, text);
				}
				
				parent.parent.frames["LeftMenu"].location.href				= leftUrl + "&OPENMAIN=NO";
			}
			else
				parent.parent.frames["LeftMenu"].location.href				= leftUrl;
		}
		// 탭으로 구성되지 않을 경우.
		else
		{
			if (url)
			{
				try
				{
					parent.frames["LeftMenu"].location.href				= leftUrl + "&OPENMAIN=NO";
					parent.frames["Main"].location.href					= url;
				}
				catch (exception)
				{
					parent.parent.frames["LeftMenu"].location.href		= leftUrl + "&OPENMAIN=NO";
					parent.parent.frames["Main"].location.href			= url;
				}
			}
			else
			{
				try
				{
					parent.frames["LeftMenu"].location.href				= leftUrl;
				}
				catch (exception)
				{
					parent.parent.frames["LeftMenu"].location.href		= leftUrl;
				}
			}
		}
	}
	catch (exception) {}	
}

/*************************************************************************
* 포탈 바로 가기 .
* queryString : 메뉴 순번과 선택 메뉴 순번의 조합
* url	: 메인 화면에 뿌려질 url, 없을 경우 선택 메뉴 순번이 뿌려짐.
*************************************************************************/
function locationPortalUrl(menuUrl, queryString, url, title)
{
	if (!queryString)
		return ;
		
	try
	{
		parent.frames["TopMenu"].closeSearch();
		parent.openLeftFrame();
		
		parent.frames["LeftMenu"].location.href			= menuUrl + "&SELECTMENUSEQ=" + queryString + "&OPENMAIN=NO";
		parent.frames["LeftMenu"].openTab(queryString, url, title);
	}
	catch (exception) {}	
}
