﻿//Web Root Path를 반환한다.
function fn_GetWebRoot()
{
	return "/" + WEBROOT + "/";
}

//현재 사이트 테마를 반환한다.
function fn_GetDnTheme()
{
    if(this._strDnTheme)
        return this._strDnTheme;
    else
        return "";
}

//Http Root Path를 반환한다.
function fn_GetHttpRoot()
{
	return "http://" + window.document.location.host + fn_GetWebRoot() + "Data/";
}

//파일저장경로와 FileKey를 결합해준다.
function fn_GetFileUpload(strValue,strFileKey)
{
	var strTemp;
	try
	{
		if(strFileKey == null)
		{
			strTemp = fn_GetWebRoot() + "Common/File/FileUpload.aspx?PATH=" + strValue;
		}
		else
		{
			strTemp = fn_GetWebRoot() + "Common/File/FileUpload.aspx?PATH=" + strValue + "&FILEKEY=" + strFileKey;
		}
	}
	catch(exception){}
	return strTemp;
}

//Document Path를 반환한다.
function fn_DocumentPath()
{
	try
	{
		var strHref = "";
		var strPath = "";
		var arrPath = null;
		strHref = document.location.href;
		arrPath = strHref.split("/");
		for ( var i = 0 ; i < arrPath.length - 1 ; i++ )
		{
			strPath += arrPath[i] + "/";
		}
		return strPath;
	}
	catch(exception){}
}

//메시지박스 스타일 정의
function fn_MessageBoxStyle()
{
	return "dialogWidth:" + DIALOGWIDTH + "px;dialogHeight:" + (DIALOGHEIGHT - DIALOGSMALLHEIGHT) + "px;status=no;scroll=no";
}

//에러 메시지 상자를 띠운다.
//sInfo - 출력할 메시지
function fn_OpenErrorMessage(strTemp)
{
	try
	{
		fn_Progressbar(false);
		var strImsi;
		if(strTemp == null)
			strImsi = window.document.all.errorMessage.value;
		else
			strImsi = strTemp;
		window.showModalDialog(fn_GetWebRoot() + "Base/Message/ErrorMessage.htm",strImsi,fn_MessageBoxStyle());
	}
	catch(exception){}
}

//작업정보 상자를 띠운다.
//sInfo - 출력할 메시지
function fn_OpenInformation(sInfo)
{
	try
	{		
		window.showModalDialog( fn_GetWebRoot() + "Base/Message/InformationMessage.htm", sInfo, fn_MessageBoxStyle());
	}
	catch(exception){}
}

//질문 상자를 띠운다.
//sInfo - 출력할 메시지
function fn_OpenConfirm(sInfo)
{
	try
	{
		var args = new Object();
		args.win = window;
		args.dlgtype= "Q";
		var res = window.showModalDialog( fn_GetWebRoot() + "Base/Message/ConfirmMessage.htm", sInfo,fn_MessageBoxStyle());
		return res;
	}
	catch(exception){}
}

//팝업창을 띠운다
//sUrl - 띠울 URL
//sFrame - 띠울이름
//sFeature - 창 속성
function fn_OpenDialog(sUrl, sFrame, sFeature)
{
	return window.open(sUrl, sFrame, sFeature);	
}

//가운데, 창 띄우기
//sUrl - 띠울 URL
//sFrame - 띠울이름
//sFeature - 창 속성
function fn_OpenCenterDialog(sUrl, nWidth, nHeight, sFrame, sFeature)
{
	var nTop = 0;
	var nLeft = 0;
	var oReturn = null;
	try
	{	
		if(nHeight == 0) nHeight = 1;
		if(nWidth == 0) nWidth = 0;
		nTop = (window.screen.height / 2) - (nHeight / 2);
		nLeft = (window.screen.width / 2) - (nWidth / 2);
		if(nTop < 0) nTop = 0;
		if(nLeft < 0) nLeft = 0;
		
		oReturn = window.open(
			fn_GetWebRoot() + sUrl, 
			sFrame, 
			"width=" + nWidth.toString() 
			+ ",height=" + nHeight.toString() 
			+ ",top=" + nTop 
			+ ",left=" + nLeft 
			+ ((sFeature == null || sFeature == "") ? "" : ",") + sFeature);
	}
	catch(exception){}
	return oReturn
}

//가운데, 창 띄우기
function fn_OpenFullDialog(fileName, isWebSite)
{
	var x;
	var y;
	try
	{
		x = window.screen.availWidth;
		y = window.screen.availheight;
		if(isWebSite == null || isWebSite == false)
		{
			x = x - 10;
			y = y - 30;
			etcParam = "toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=1";
		}
		else
		{
			etcParam = "toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes";
		}
		
		objNewWin = fn_OpenDialog(fileName,"", etcParam + ",top=0,left=0,width=" + x + ",height=" + y);
	}
	catch(exception){}
	return objNewWin;
}

//모달팝업창을 띠운다.
//sUrl - 띠울 URL
//sParam - 인자
//sFeature - 창 속성
function fn_OpenModalDialog(sUrl,sParam, sFeature)
{
	try
	{
		var strReturn = "";
		var strFearture_TMP = "";
		if(sFeature != null)
		{
			var strNewFearture = ModifyDialogFeature(sFeature);
			strReturn = window.showModalDialog( fn_GetWebRoot() + "Base/Dialog/ModalDialog.html?" + sUrl, sParam, strNewFearture);
			
		}
		else
		{
			strReturn = window.showModalDialog( fn_GetWebRoot() + "Base/Dialog/ModalDialog.html?" + sUrl, sParam, "");
		}
		return strReturn;
	}
	catch(exception){}
}

//모달리스팝업창을 띠운다.
//sUrl - 띠울 URL
//sParam - 인자
//sFeature - 창 속성
function fn_OpenModelessDialog(sUrl,sParam, sFeature)
{
	try
	{
		var strReturn = "";
		var strFearture_TMP = "";
		if(sFeature != null)
		{
			var strNewFearture = ModifyDialogFeature(sFeature);
			strReturn = window.showModelessDialog( fn_GetWebRoot() + "Base/Dialog/ModelessDialog.html?" + sUrl, sParam, strNewFearture);
			
		}
		else
		{
			strReturn = window.showModelessDialog( fn_GetWebRoot() + "Base/Dialog/ModelessDialog.html?" + sUrl,sParam, "");
		}
		return strReturn;
	}
	catch(exception){}
}

function fn_WindowClose(e)
{
	if(e.keyCode == 27){top.window.close();}	
}

//윈도우XP SP2 적용시 브라우저에 상태바가 출력되어 강제로 창 사이즈 늘린다.
function ModifyDialogFeature(feature)
{
	try
	{
		var strStyle = "DialogHeight".toUpperCase() + ":";
		var strStyleLen = strStyle.length;
		var strFeature = feature.toUpperCase();
		var strFeartureLen = strFeature.length;
		var i = 0;
		while(i < strFeartureLen)
		{
			var j = i + strStyleLen;
			if (strFeature.substring(i, j) == strStyle)
			{
				var endstr = strFeature.indexOf (";", j);
				if (endstr == -1) endstr = strFeature.length;
				var strValue = strFeature.substring(j, endstr);
				strValue = strValue.toUpperCase();
				if(strValue.indexOf("PX") > (-1)) strValue = strValue.replace("PX","");
				if(strValue.length <= 0) return strFeature;
				var strNewValue = (parseInt(strValue) + 20).toString();
				strFeature = strFeature.replace((strStyle + strValue), (strStyle + strNewValue));
				return strFeature.toLowerCase();
			}
			i = strFeature.indexOf(";", i) + 1;
			if(i == 0) break;
		}
		return strFeature;
	}
	catch(exception){
		fn_OpenErrorMessage(exception.description);
	}
}

//파라메터로 지정한 위치에 모달 카렌더를 띠운다.
//Parameter :	oCtrl - 선택된 날짜가 리턴될 컨트롤 이름
//			posTop, posLeft = 위치
//Return	  :	날짜 ( YYYY-MM-DD )
function fn_OpenModalCalendar(posTop, posLeft,selDate)
{
	var arrValue;
	try
	{
		if(selDate != null)
		{
			arrValue = new Array(selDate);
		}
		var strOpenUrl = fn_GetWebRoot() + "Base/Dialog/ModalCalendar.html";
		var strReturn = window.showModalDialog(strOpenUrl,arrValue , "dialogTop:" + posTop + "px;dialogLeft:" + posLeft + "px;dialogWidth:240px;dialogHeight:270px;status:no;help:no;scroll:no");
		if (strReturn == null)
			return "";
		else
			return strReturn;
	}
	catch(exception)
	{
		return "";
	}
}

//문자열을 숫자로 변환한다.
function fn_GetInt(sNum)
{
	try
	{
		for ( var i = 0 ; i < sNum ; i++ )
		{
			if ( sNum.substring(0, 1) == 0 )
				sNum = sNum.substring(1, sNum.length);
			else
				return parseInt(sNum);
		}
		return parseInt(sNum);
	}
	catch (exception){}
}


//숫자를 2자리 문자열로 변환한다.
//		Parameter :	iNum - 2자리 이하 숫자
//		Return	  :	2자리 숫자 문자열
function fn_LeadingZero(iNum)
{
	var strReturn;
	try
	{
		if ( iNum < 10 )
			strReturn = "0" + iNum;
		else
			strReturn = "" + iNum;
	}
	catch (exception){}
	return strReturn;
}

/*
PostBack을 일으킨다
		Parameter :	targetForm - Submit 대상 폼					eventTarget - Target Element
					eventArgs - 이벤트 파라메터
*/
function fn_RaisePostBack(targetForm, eventTarget, eventArgs) 
{
	try
	{
		targetForm.__EVENTTARGET.value = eventTarget.split("$").join(":");
		targetForm.__EVENTARGUMENT.value = eventArgs;
		targetForm.submit();
	}
	catch (exception){}
}

//메일 주소들 체크 
//ex)"홍길동"<nallari@interdev.co.kr>;"sicc"<nallari@interdev.co.kr>,nallari@interdev.co.kr;
function fn_CheckEmailAddress(strAddr) 
{
	var arrAddr;
	var arrMatch;
	var strEmail;
	if (strAddr.length == 0) {
		return true;
	}
	arrAddr = strAddr.replace(/,/, ";").split(";");
	for (var i = 0; i < arrAddr.length; i++) {
		arrMatch = arrAddr[i].match(/^([^<>]*)<([^<>]+)>$/);
		if (arrMatch == null) {
			strEmail = arrAddr[i];
		}else {
			strEmail = arrMatch[2];
		}
		if(strEmail != null&&strEmail!=""){
			if (fn_CheckEmailSub(strEmail) == false) {
				return false;
			}
		}
	}
	return true;
}

//e-mail 주소 계정 및 도메인을 체크한다.외부에서 직접 호출하지 말고 fn_CheckEmailAddress 로부터 호출받아 사용된다.
function fn_CheckEmailSub(strEmail) 
{
	var arrMatch = strEmail.match(/^(\".*\"|[A-Za-z0-9_-]([A-Za-z0-9_-]|[\+\.])*)@(\[\d{1,3}(\.\d{1,3}){3}]|[A-Za-z0-9][A-Za-z0-9_-]*(\.[A-Za-z0-9][A-Za-z0-9_-]*)+)$/);
	if (arrMatch == null) {
		return false;
	}

	var arrIP = arrMatch[2].match(/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/);
	if (arrIP != null) {
		for (var i = 1; i <= 4; i++) {
			if (arrIP[i] > 255) {
				return false;
      		}
   		}
	}
	return true;
}

//문자열 길이제한을 체크한다.
//str - 입력문자
//limit - 한계개수
function fn_CheckStringLength(str, limit){
	if( str.length >= limit ) 
		event.returnValue=false;
}

//특수문자만 체크하여 입력된다.
function fn_CheckSpecialString()
{
	try
	{
		//소문자 || 대문자 || 숫자
		if ( (window.event.keyCode >= 97 && window.event.keyCode <= 122 ) || (window.event.keyCode >= 65 && window.event.keyCode <= 90 ) || (window.event.keyCode >= 48 && window.event.keyCode <= 57)  )
			event.returnValue=false;
	}
	catch (exception){}	
}

//특수문자만 체크하여 입력안된다.
function fn_CheckSpecialNoString()
{
	try
	{
		//소문자 || 대문자 || 숫자
		if (window.event.keyCode == 95 || window.event.keyCode == 45 || (window.event.keyCode >= 97 && window.event.keyCode <= 122 ) || (window.event.keyCode >= 65 && window.event.keyCode <= 90 ) || (window.event.keyCode >= 48 && window.event.keyCode <= 57) || window.event.keyCode == 32)
			event.returnValue = true;
		else
		    event.returnValue = false;
	}
	catch (exception){}	
}

//HTML을 인코딩한다
function fn_encodeHtml(htmlText) 
{
	try
	{
//		var encodedHtml;
//		encodedHtml = escape(html);
//		encodedHtml = encodedHtml.replace(/\//g,"%2F");
//		encodedHtml = encodedHtml.replace(/\?/g,"%3F");
//		encodedHtml = encodedHtml.replace(/=/g,"%3D");
//		encodedHtml = encodedHtml.replace(/&/g,"%26");
//		encodedHtml = encodedHtml.replace(/@/g,"%40");
		return escape(htmlText);
	}
	catch(exception){}
}

//HTML 을 로드하기 위해서 디코딩한다
function fn_decodeHtml(html)
{
	try
	{
		var decodeHtml;
		decodeHtml = unescape(html);
		return decodeHtml;
	}
	catch(exception){}
}

//메뉴 롤오버
var bMenuClick = false;
var oMenuIconSelected = null;
var oMenuTextSelected = null;
function fn_MenuOver(menuIcon, menuText)
{
	menuIcon.background = menuIcon.bgOnOver;
	menuText.background = menuText.bgOnOver;
}
function fn_MenuOut(menuIcon,menuText)
{
	if (bMenuClick && oMenuIconSelected == menuIcon) {
		menuIcon.background = menuIcon.bgOnClick;
		menuText.background = menuText.bgOnClick;
	} else {
		menuIcon.background = menuIcon.bgOnOut;
		menuText.background = menuText.bgOnOut;
	}
}
function fn_MenuClick(menuIcon,menuText)
{
	menuIcon.background = menuIcon.bgOnClick;
	menuText.background = menuText.bgOnClick;
	if (oMenuIconSelected != null) {
		oMenuIconSelected.background = oMenuIconSelected.bgOnOut;
		oMenuTextSelected.background = oMenuTextSelected.bgOnOut;
	}
	oMenuIconSelected = menuIcon;
	oMenuTextSelected = menuText;
	bMenuClick = true;
}

//메뉴가 5개 이상일 경우 스크롤 기능 자동 추가
//Parameter   : htr, direction [U(Up)/D(Down)], himg
var nStartIndex = 1;
var nEndIndex = 5;
var oTimerID = null;;
var bTimerRunning = false;
function fn_StartMenuScroll(htr, direction, himg, htabc)
{
	fn_StopMenuScroll(himg, htabc);
	oTimerID = setInterval("fn_MenuScroll('" + htr + "', '" + direction + "', document.all." + himg.id + ", " + htabc.id + ")", 500);
	bTimerRunning = true;
}
function fn_StopMenuScroll(himg, htabc)
{
	if ( bTimerRunning ) {
		himg.src = himg.srcOnOut;
		htabc.background = htabc.bgOnOut;
		clearInterval(oTimerID);
	}
	bTimerRunning = false;
}
function fn_MenuScroll(htr, direction, himg, htabc)
{
	var nOldStartIndex = nStartIndex;
	var nOldEndIndex = nEndIndex;
	var oTemp;
	try {
		himg.src = himg.srcOnOver;
		htabc.background = htabc.bgOnOver;
		switch (direction)
		{
			case "U":
				if ( nStartIndex > 1 ) {
					nStartIndex--;
					nEndIndex--;
					oTemp = eval(htr + nStartIndex);
					oTemp.style.display = "";
					oTemp = eval(htr + nOldEndIndex);
					oTemp.style.display = "none";
				}
				break;
			case "D":
				if ( eval(htr + (nEndIndex+1)) ) {
					nStartIndex++;
					nEndIndex++;
					oTemp = eval(htr + nEndIndex);
					oTemp.style.display = "";
					oTemp = eval(htr + nOldStartIndex);
					oTemp.style.display = "none";
				}
				break;
		}
	} 
	catch (exception) {}
}

//해당메세지 가져오기
//Return	    : 메세지배열컬렉션
function fn_Msg(messageID,parameters)
{
	try
	{
		//메세지 받아오기
		var strTemp;
		var arrTemp;
			arrTemp = fn_MsgT(messageID);
			strTemp = arrTemp[2];
		if(parameters != null) //파라미터가 없는경우
		{	
			for(var i = 0 ; i < parameters.length ; i++)
			{
				strTemp = fn_ReplaceAll(strTemp,"{" + i + "}",parameters[i]);
			}
		}
		//메세지 분기
		if(arrTemp != null)
		{
			switch(arrTemp[1])
			{
				case "01":
				{
					fn_OpenInformation(strTemp);
					break;
				}
				case "02":
				{
					return fn_OpenConfirm(strTemp);
					break;
				}
				case "03":
				{
					fn_OpenErrorMessage(strTemp);
					break;
				}
			}
		}
	}
	catch(exception){}
}

//해당Dictionary 가져오기
function fn_Dic(dictionaryList)
{
	try
	{
		var strImsi = fn_ReplaceAll(dictionaryList,",","^");
		var strTemp = fn_GetWebRoot() + "ISHCommon/WebService/YIVW_Dic.aspx?Dic=" + escape(strImsi);
		var oXmlDoc = new ActiveXObject("Microsoft.XMLDOM");
			oXmlDoc = fn_GetXmlDomDocument(strTemp);
		var oElemList = oXmlDoc.getElementsByTagName("ROOT")		
		var strJamsi = oElemList.item(0).childNodes(0).text;//Dictionary
		var arrTemp;
		strJamsi = strJamsi.substring(0,strJamsi.length - 1);
		arrTemp = strJamsi.split('^');
		return arrTemp;
	}
	catch(exception){}
}

//replace함수
//Parameter	: 원본,찾을단어,바꿀단어
//Return		: 바뀌어진스트링
function fn_ReplaceAll(oldStr,findStr,repStr) {
	try
	{
		var srchNdx = 0;
		var newStr = ""; 
		while (oldStr.indexOf(findStr,srchNdx) != -1)  
		{
			newStr += oldStr.substring(srchNdx,oldStr.indexOf(findStr,srchNdx));
			newStr += repStr;
			srchNdx = (oldStr.indexOf(findStr,srchNdx) + findStr.length);
		}
		newStr += oldStr.substring(srchNdx,oldStr.length);
		return newStr;
	}
	catch(exception){}
}

//주소 가지고 오기
//Return		: 주소SEQ와 주소 스트링
function fn_GetAddress(nTemp)
{
	try
	{
		var url = "ISHCommon/WebService/YIVW_ZipCode.aspx";
		var strTemp = fn_OpenModalDialog(url, "","dialogWidth:600px;dialogHeight:265px;status=no;scroll=no")
		if(strTemp != null)
		{
			var arrTemp = strTemp.split('^');
			if(nTemp == null)		
			{
				return arrTemp[0] + ' ' + arrTemp[1];
			}
			else
			{
				return arrTemp;
			}
		}
	}
	catch (exception){}
}

//해당메세지 가져오기
function fn_MsgT(messageID)
{
	try
	{
		var strTemp = fn_GetWebRoot() + "ISHCommon/WebService/YIVW_Msg.aspx?MessageID=" + messageID;
		var oXmlDoc = new ActiveXObject("Microsoft.XMLDOM");
			oXmlDoc = fn_GetXmlDomDocument(strTemp);
		var oElemList = oXmlDoc.getElementsByTagName("ROOT")		
		var arrTemp = new Array(4)
			arrTemp[0]		= oElemList.item(0).childNodes(0).text;//MessageID
			arrTemp[1]		= oElemList.item(0).childNodes(1).text;//MessageType
			arrTemp[2]		= oElemList.item(0).childNodes(2).text;//Korean
		return arrTemp;
	}
	catch(exception){}
}

//Xml받아오기
function fn_GetXmlDomDocument(sPage)
{
	var oXmlDoc;
	try
	{
		oXmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		oXmlDoc.async = false;
		oXmlDoc.load(sPage);
		if(oXmlDoc.readyState != 4 && !oXmlDoc.parseError)
		{
			return null;
		}
		else
		{
			return oXmlDoc;
		}
	}
	catch(exception){}
}

//Xml보내기

function fn_SetXmlHttpDocument(postXml,filePath,sendMethod)
{	
	var oXmlHttp;
	var strTemp;
	try
	{
		oXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		oXmlHttp.open(sendMethod, filePath, false);
		oXmlHttp.send(postXml);			
		
		if(oXmlHttp.status == 500)
		{
			strTemp = "false";//oXmlHttp.statusText;
		}
		else
		{
			strTemp = oXmlHttp.responseText;
		}
		oXmlHttp = null;
	}
	catch(e){}
	return strTemp;
}

//String 의 공백을 모두 제거한다.
function fn_Trim(sourceString)
{
	var strResult ;
	strResult = sourceString.replace(/\s/g,"");
	return strResult;
}

//String 의 양쪽공백을 모두 제거한다.
function fn_RLTrim(strSource)
{
	return strSource.replace(/(^\s*)|(\s*$)/g, "");
}

//폴더권한정보를 보거나 셋팅할때 쓰인다.
function fn_openFolderAuthSetting(rgParams, folderID, userID, isEditMode) {
	var nWidth = 450;
	var nHeight = 520;
	if (isEditMode == true)
	{
		var sUrl =  "Common/Auth/FolderSetting.aspx?id=" + folderID+ "&edit=true";
	}
	else
	{
		var sUrl =  "Common/Auth/FolderSetting.aspx?id=" + folderID+ "&edit=false";
	}
	var strReturn = "";
	
	var sFeature = "dialogHeight:"+nHeight+"px;dialogWidth:"+nWidth+"px;status:no;resizable:no;help:no;scroll=no";

	try
	{
		strReturn = fn_OpenModalDialog(sUrl, rgParams, sFeature);		
	}
	catch (exception){}
	return strReturn;
}

//그룹 권한정보를 보거나 셋팅할때 쓰인다.
function fn_openGroupAdd(rgParams) 
{
	var nWidth = 600;
	var nHeight = 400;
	if (rgParams["grpcd"] != null)
		var sUrl = "Common/Admin/GroupAdd.aspx?GroupID="+rgParams["grpcd"];
	else
		var sUrl = "Common/Admin/GroupAdd.aspx";
	var strReturn = "";
	var sFeature = "dialogHeight:"+nHeight+"px;dialogWidth:"+nWidth+"px;status:no;resizable:no;help:no;scroll=no";
	try
	{
		strReturn = fn_OpenModalDialog(sUrl, rgParams, sFeature);		
	}
	catch (exception){}
	return strReturn;
}

//개체권한정보를 보거나 셋팅할때 쓰인다.
function fn_openObjectAuthSetting(rgParams, objectGuid, userID, isEditMode) {
	var nWidth = 320;
	var nHeight = 340;
	if (isEditMode == true)
	{
		var sUrl = "Common/Auth/ObjectAuthSetting.aspx?id=" + objectGuid + "&edit=true";
	}
	else
	{
		var sUrl = "Common/Auth/ObjectAuthSetting.aspx?id=" + objectGuid + "&edit=false";
	}
	var strReturn = "";
	var sFeature = "dialogHeight:"+nHeight+"px;dialogWidth:"+nWidth+"px;status:no;resizable:no;help:no;scroll=no";
	try
	{
		strReturn = fn_OpenModalDialog(sUrl, rgParams, sFeature);		
	}
	catch (exception){}
	return strReturn;
}

//사이트맵 세부정보 세팅
function fn_openSiteMapDetailInfo(rgParams,id) 
{
	var nWidth = 560;
	var nHeight = 440;
	var strMode = rgParams["mode"];
	var sUrl;
	if (strMode == "new")
		sUrl = "Common/Admin/SiteDetailBottom.aspx?FolderID=" + id
	else	
		sUrl = "Common/Admin/SiteDetailBottom.aspx?SiteMapID=" + id
		
	var sFeature = "dialogHeight:"+nHeight+"px;dialogWidth:"+nWidth+"px;status:no;resizable:no;help:no;scroll=no";

	try
	{
		strReturn = fn_OpenModalDialog(sUrl, rgParams, sFeature);		
	}
	catch (exception){}
	return strReturn;
}

//OWA인증처리
function fn_AuthenticationByOWA()
{
	var strAuth;
	var oXmlhttp;
	var oXmlhttp2;
	var oXmlDom;
	var oElemList;
	var strJamsi;
	try
	{
		//OWA 인증
		oXmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		strAuth = fn_GetWebRoot() + "Common/Authentication/Authenticate.aspx";
		oXmlDom = fn_GetXmlDomDocument(strAuth);
		oElemList = oXmlDom.getElementsByTagName("ROOT");
		oXmlhttp.Open("Get",oElemList.item(0).childNodes(2).text,false,oElemList.item(0).childNodes(0).text,oElemList.item(0).childNodes(1).text);
		oXmlhttp.send();

		//도메인 인증
		try
		{
			var strJamsi = window.document.location.host.toUpperCase();
			if(strJamsi.indexOf("LOCALHOST") < 0)
			{
				oXmlhttp2 = new ActiveXObject("Msxml2.XMLHTTP");
				oXmlhttp2.Open("Get",oElemList.item(0).childNodes(3).text,false,oElemList.item(0).childNodes(0).text,oElemList.item(0).childNodes(1).text);
				oXmlhttp2.send();
			}
		}
		catch(exception){}

		if(oXmlhttp.status == "200")
		{
			return true;
		}
		else
		{
			return false;
		}
	}
	catch(exception)
	{
		if(exception.number ==  "-2146828218")
		{
			return true;
		}
	}
}

//그리드화면 엑셀로 부어주기
var oExcel;
function fn_Excel(ynaGrid,excelParam)
{
	var oBook;
	var oGrid;
	var oGridTr;
	var oGridTd;
	var nRow;
	var nCol;
	var strTemp;
	var strFileName;
	var strWorkSheetName;
	var strTitle;
	var bVisible;
	var arrTextColumns;
	try
	{
		if(document.all[ynaGrid] == null) return; //해당 그리드가 존재하지 않으면 중단
		if(excelParam != null) //사용자 정의 시트가 있는경우
		{
			strFileName = excelParam.FileName;
			strWorkSheetName = excelParam.WorkSheetName;
			strTitle = excelParam.Title;
			bVisible = excelParam.Visible;
			arrTextColumns = excelParam.TextColumns;
		}
		else
		{
			strFileName = "";
			strWorkSheetName = document.title;
			strTitle = "";
			bVisible = true;
			arrTextColumns = null;
		}
		if(oExcel == null) oExcel = new ActiveXObject("Excel.Application");
		oBook = oExcel.Workbooks.Add(); //워크북 추가
		oSheet = oBook.ActiveSheet; //디폴트시트에 포커스맞추기
		oSheet.name = strWorkSheetName; //시트이름 설정
		oExcel.Visible = bVisible; //엑셀시트
		oGrid = document.all[ynaGrid];
		oGridTr = oGrid.childNodes[0].childNodes;
//					oExcel.Range("B10").Select;
//					window.clipboardData.clearData();
//					window.clipboardData.setData("Text","zergzerg");
//					oSheet.Paste();
		if(strTitle != "") oSheet.Cells(1,1).Value = strTitle; //타이틀 설정
		nRow = 2;
		for(var i = 0 ; i < oGridTr.length ; i++) //Row뽑기
		{
			if(oGridTr[i].id != "")
			{
				if(oGridTr[i].style != null)
				{
					if(oGridTr[i].style.display.toUpperCase() != "NONE")
					{
						oGridTd = oGridTr[i].childNodes;
						nCol = 1;
						for(var j = 0 ; j < oGridTd.length ; j++) //Col뽑기
						{
							if(oGridTd[j].style.display.toUpperCase() != "NONE")
							{
								if(fn_RLTrim(oGridTd[j].innerText) != "")
								{
									if(arrTextColumns != null)
									{
										for(var k = 0 ; k < arrTextColumns.length ; k++)
										{
											strTemp = "";
											if(arrTextColumns[k] == nCol)
											{
												strTemp = "'";
												break;
											}
										}
									}
									oSheet.Cells(nRow,nCol).Value = strTemp + oGridTd[j].innerText;
									nCol++;
								}
							}
						}
						nRow++;
					}
				}
			}						
		}
		if(strFileName != "")
		{
			try
			{
				oSheet.SaveAs(strFileName);
			}
			catch(exception){}
		}
		//oExcel.Application.Quit();
	}
	catch(exception){fn_OpenErrorMessage(exception.description);}
}

//엑셀관련파라미터 설정
function fn_Excel_Param()
{
	this.FileName;
	this.WorkSheetName;
	this.Title;
	this.Visible;
	this.TextColumns;
}

//OWA메일 보내기
function fn_OWASendMail(mailTo,mailCC,mailTitle,mailContent)
{
	var oXmlhttp;
	var oXmlDom;
	var oElemList;
	var strTemp;
	try
	{
		if(mailTo == null) mailTo = "";
		if(mailCC == null) mailCC = "";
		if(mailTitle == null) mailTitle = "";
		if(mailContent == null) mailContent = "";
		
		strTemp = "_MT=" + escape(mailTo) + "&";
		strTemp += "_MC=" + escape(mailCC) + "&";
		strTemp += "_TIT=" + escape(mailTitle) + "&";
		strTemp += "_BODY=" + escape(mailContent) + "&";

		oXmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		strAuth = fn_GetWebRoot() + "Common/Authentication/ServerItems.aspx";
		oXmlDom = fn_GetXmlDomDocument(strAuth);
		oElemList = oXmlDom.getElementsByTagName("ROOT");
		_owaMailWindow = fn_OpenFullDialog(oElemList.item(0).childNodes(0).text + "?Cmd=new&" + strTemp);
		//_owaMailWindow = fn_OpenFullDialog("http://devweb01.dev.com/Exchange/1111111" + "?Cmd=new&" + strTemp);
	}
	catch(exception){}
	finally
	{		
		if(oElemList != null) oElemList = null;
		if(oXmlDom != null) oXmlDom = null;
		if(oXmlhttp != null) oXmlhttp = null;
	}
}

//OWA 링크메일 보내기
function fn_OWALinkSendMail(mailTo,mailCC,mailTitle,mailContent)
{
	fn_OWASendMail(mailTo,mailCC,mailTitle + "[Maintain_subject_for_link_doc]",mailContent);
}

//프로그레스바생성
var bwating_window = false;
var wating_window;
function fn_Progressbar(visible, posTop, posLeft, message)
{
/*
	var strUrl;
	var strFeature;
	var nTop = 0;
	var nLeft = 0;
	try
	{
		try
		{
			event.srcElement.disabled = visible;
		}
		catch(exception){}
		if(visible)
		{
			if(message == null) message = fn_MsgT("Common","0049")[3];
			strUrl = fn_GetWebRoot() + "Base/Message/Progress.htm";
			strFeature = "dialogWidth:300px;dialogHeight:150px;center:yes;help:no;resizable:no;status:no;scroll:no;toolbar:no;location:no;directories:no;menubar:no;";
			if(bwating_window == false) wating_window = window.showModelessDialog(strUrl,message,strFeature);
			bwating_window = true;
		}
		else
		{
			bwating_window = false;
			wating_window.close();
		}
	}
	catch(exception)
	{
		try
		{
			event.srcElement.disabled = false;
		}
		catch(exception){}
	}
*/
}

//시간설정함수
var _oTimePopup;
function fn_OpenTime(oTemp,defaultTime,leftPoint,topPoint)
{
	var oPopBody;
	var strTemp;
	var strImsi;
	var strJam;
	try
	{
		//위치가 넘어오지 않았을경우

		if(leftPoint == null) leftPoint = event.srcElement.offsetLeft+20;
		if(topPoint == null) topPoint = event.srcElement.offsetTop+10;
		
		//날짜시간 렌더링

		strTemp = "<table border=0 cellspacing=0 cellpadding=0>";
		strTemp += "<tr>";
		strTemp +=	"<td>";
		strTemp +=		"<select name=TimeItem id=TimeItem size=8 onclick=\"parent.document.all['" + oTemp + "'].value = this.value;parent._oTimePopup.hide();\">";
		for(var i = 1 ; i <= 24 ; i++) {
			for(var j = 0 ; j <= 30 ; j=j+30) {
				strImsi = fn_LeadingZero(i) + ":" + fn_LeadingZero(j);
				strJam = "";
				if(defaultTime != null) {if(strImsi == defaultTime) strJam = "selected";} //초기선택값설정

				strTemp += "<option value='" + strImsi + "' " + strJam + ">" + strImsi + "</option>";
			}
		}
		strTemp +=		"</select>";
		strTemp +=	"</td>";
		strTemp += "</tr>";
		strTemp += "</table>";
		
		_oTimePopup = window.createPopup();
		oPopBody = _oTimePopup.document.body;
		oPopBody.innerHTML = strTemp;
		_oTimePopup.show(leftPoint,topPoint,59,126,oPopBody);
	}
	catch(exception)
	{
		//alert(exception.description);
	}
	finally
	{
		//if(oPop != null) oPop = null;
	}
}

//주민등록번호 체크
function fn_SSNCheck(SSN1, SSN2)
{
	var i3 = 0
	for (var i=0 ;i<SSN1.length ;i++)
	{
		var ch1 = SSN1.substring(i, i+1);
		if (ch1<'0' || ch1>'9') { i3 = i3 + 1 }
	}
	if ((SSN1 == '') || ( i3 != 0 ))
	{
		//fn_OpenErrorMessage("없는 주민등록번호 입니다.<br>다시 입력해 주세요!!");
		return false;
	}
	
	var i4 = 0
	for (var i=0;i<SSN2.length;i++)
	{
		var ch1 = SSN2.substring(i, i+1);
		if (ch1<'0' || ch1>'9') { i4 = i4 + 1 }
	}
	if ((SSN2 == '') || ( i4 != 0 ))
	{
		//fn_OpenErrorMessage("없는 주민등록번호 입니다.<br>다시 입력해 주세요!!");
		return false;
	}

	if(SSN1.substring(0,1) < 4)
	{
		//fn_OpenErrorMessage("없는 주민등록번호 입니다.<br>다시 입력해 주세요!!");
		return false;
	}

	if(SSN2.substring(0,1) > 2)
	{
		//fn_OpenErrorMessage("없는 주민등록번호 입니다.<br>다시 입력해 주세요!!");
		return false;
	}

	if((SSN1.length > 7) || (SSN2.length > 8))
	{
		//fn_OpenErrorMessage("없는 주민등록번호 입니다.<br>다시 입력해 주세요!!");
		return false;
	}

	if ((SSN1 == '72') || ( SSN2 == '18'))
	{
		//fn_OpenErrorMessage("없는 주민등록번호 입니다.<br>다시 입력해 주세요!!");
		return false;
	}
	
	var f1 = SSN1.substring(0,1)
	var f2 = SSN1.substring(1,2)
	var f3 = SSN1.substring(2,3)
	var f4 = SSN1.substring(3,4)
	var f5 = SSN1.substring(4,5)
	var f6 = SSN1.substring(5,6)
	var hap = f1*2+f2*3+f3*4+f4*5+f5*6+f6*7
	var l1 = SSN2.substring(0,1)
	var l2 = SSN2.substring(1,2)
	var l3 = SSN2.substring(2,3)
	var l4 = SSN2.substring(3,4)
	var l5 = SSN2.substring(4,5)
	var l6 = SSN2.substring(5,6)
	var l7 = SSN2.substring(6,7)
	hap = hap+l1*8+l2*9+l3*2+l4*3+l5*4+l6*5
	hap = hap%11
	hap = 11-hap
	hap = hap%10
	
	if (hap != l7) 
	{
		//fn_OpenErrorMessage("없는 주민등록번호 입니다.<br>다시 입력해 주세요!!");
		return false;
	}
	var i9 = 0
	return true;
}

//해당컨트롤의 페이지권한레벨에 따른 Display를 처리해준다.
function fn_PolicySet(controls,policyMode)
{
	var nTemp = 0;
	var strTemp = "0";
	try
	{
		switch(policyMode)
		{
			case "READ":	{nTemp = 1; break;}
			case "WRITE":	{nTemp = 3; break;}
			case "FULL":	{nTemp = 7; break;}
			default:		{nTemp = 1; break;}
		}
		
		if(document.all["pagePolicyMode"] != null)
		{
			strTemp = document.all["pagePolicyMode"].value;
			if(strTemp < nTemp) 
			{
				for(var i = 0 ; i < controls.length ; i++)
				{
					document.all[controls[i]].style.display = "none";
				}
			}
		}
	}
	catch(e){}
   
    

}
 // FrameWork Version Check	

	CLRVersion = "2.0.50728";
function HasRuntimeVersion(v)
    {
  
      var va = GetVersion(v);
      var i;
      var a = navigator.userAgent.match(/\.NET CLR [0-9.]+/g);
      
      
        for (i = 0; i < a.length; ++i)
          if (CompareVersions(va, GetVersion(a[i])) <= 0)
  
    
          return true;
       
     
      return false;
    }

    function GetVersion(v)
    {
      var a = v.match(/([0-9]+)\.([0-9]+)\.([0-9]+)/i);
        return a.slice(1);
    }
    function CompareVersions(v1, v2)
    {
    
      for (i = 0; i < v1.length; ++i)
      {
      
        var n1 = new Number(v1[i]);
        var n2 = new Number(v2[i]);
        if (n1 < n2)
          return -1;
        if (n1 > n2)
          return 1;
      }
      return 0;
    }
  
