///	#############################################################################
///	#####
///	#####	ÇÑ±¹½Å¿ëÁ¤º¸ÁÖ½ÄÈ¸»ç	¼­ºñ½º ¿î¿µ¿¡ ÇÊ¿äÇÑ Utility Javascript ¼Ò½º
///	#####
///	#####	=====================================================================
///	#####
///	#####	Descriptions
///	#####		- ¼­ºñ½º ¿î¿µ¿¡ ÇÊ¿äÇÑ Utility ¼º°ÝÀÇ ÇÔ¼ö¸¦ °ü¸®ÇÑ´Ù.
///	#####
///	#####	---------------------------------------------------------------------
///	#####
///	#####	ÀÛ¼ºÀÚ 		: (ÁÖ)À¯ºñ¾ÆÀÌ¿¡½ºÄÁ¼³ÆÃ (www.ubisc.com)
///	#####	¿øº»ÂüÁ¶	:
///	#####	¿øº»ÆÄÀÏ	:
///	#####	ÀÛ¼ºÀÏÀÚ	: 2006.02.01
///	#####
///	#############################################################################

var CRNDSIZE					= "24";
var strPersonalCertKey			= "3";			//	°³ÀÎÀÎÁõÅ° ¼­ºñ½º ÇÁ·Î¼¼½º
var strRealNameCertKey			= "4";			//	½Ç¸íÀÎÁõÅ° ¼­ºñ½º ÇÁ·Î¼¼½º

var strDelimeter				= "!#!";		//	¹ÝÈ¯ Á¤º¸ Delimeter
var strDataDelimeter 			= "!@!";		//	¹ÝÈ¯µÈ µ¥ÀÌÅÍ Delimeter
var strHttpURL_G				= "http://secure.nuguya.com";
var strHttpsURL_G				= "https://secure.nuguya.com";
var strSafeBlockExptUrl			= strHttpsURL_G + "/nuguya/realname/rlnmSafeBlockExpt.do";						//	SafeBlock ÀÓ½ÃÇØÁ¦ URL
//var strValidExpireUrl			= strHttpURL_G + "/nuguya/certkey/personalcertkey/RlnmValidExpire.do";		//	°³ÀÎÀÎÁõÅ° À¯È¿±â°£ Àç ¼³Á¤
var strCertKeyServiceUrl		= strHttpsURL_G + "/nuguya/certkey/service.do";								//	°³ÀÎÀÎÁõÅ° / ½Ç¸íÀÎÁõÅ° ¼­ºñ½º URL
var strSendConfirmUrl			= strHttpsURL_G + "/nuguya/certkey/personalcertkey/IpinSendConfirm.do";		//	°³ÀÎÀÎÁõÅ° Àü¼Û °ËÁõ URL
var strNoticeUrl				= strHttpsURL_G + "/nuguya/certkey/notice.do";

function checkUtilSelf()
{
	return "Loaded";
}

function encode( data )
{
	return encodeURIComponent( data );
}

function decode( data )
{
	return decodeURIComponent( data );
}

function trimPKCS5Padding( data )
{
	return data.replace( /[\1\2\3\4\5\6\7]/g, '\0' );
}

//
//	Àü´ÞµÈ Á¤º¸¸¦ ¾ÏÈ£È­µÈ ¹®ÀÚ¿­·Î ¹ÝÈ¯ÇÑ´Ù.
//
function makeEncryptInfo( dataValues )
{
	var CRndValue = cryptoObject.getRandomKey( CRNDSIZE );
	var CDESValue = "";

	if ( dataValues.length == 0 )
	{
		var err = new Error();
		err.message = "makeEncryptInfo";
		err.description = getCheckMessage( "S96" );
		throw err;
	}

	var nIndex = 0;
	for( nIndex = 0; nIndex < dataValues.length - 1; nIndex++ )
	{
		CDESValue += dataValues[nIndex] + strDelimeter;
	}
	CDESValue += dataValues[nIndex];
	// ¿©±â±îÁöÁ¤»ó °ª ³Ñ¾î¿È..alert("´ÙÀ½Á¤º¸¸¦ Àü´ÞÇÏ°Ú½À´Ï´Ù.:"+CDESValue);
	CDESValue = cryptoObject.encode64( CRndValue + strDelimeter +
		cryptoObject.des( CRndValue, CDESValue, 1, 1, CRndValue ) );

	return CDESValue;
}

//
//	Àü´ÞµÈ Á¤º¸¸¦ ¾ÏÈ£È­µÈ ¹®ÀÚ¿­·Î ¹ÝÈ¯ÇÑ´Ù.
//
function makeEncryptInfo2( dataValues, realkey )
{
	var CRndValue = cryptoObject.getRandomKey( CRNDSIZE );
	var CDESValue = "";

	if ( dataValues.length == 0 )
	{
		var err = new Error();
		err.message = "makeEncryptInfo";
		err.description = getCheckMessage( "S96" );
		throw err;
	}

	var nIndex = 0;
	for( nIndex = 0; nIndex < dataValues.length - 1; nIndex++ )
	{
		CDESValue += dataValues[nIndex] + strDelimeter;
	}
	CDESValue += dataValues[nIndex];

	CDESValue = cryptoObject.encode64( CRndValue + strDelimeter +
		cryptoObject.des( realkey, CDESValue, 1, 1, realkey ) );

	return CDESValue;
}
//
//	°³ÀÎÀÎÁõÅ° ÀÎÁõÅ° °ËÁõ¿¡ ÇÊ¿äÇÑ Á¤º¸¸¦ ¾ÏÈ£È­ÇÏ¿© ¹ÝÈ¯ÇÑ´Ù.
//
function makeProcessInfo( dataObject )
{
	//	Format : NiceId + PingInfo + OrderNo + TrCd + InqRsn + ReturnURL + ValidTerm + userNm + resIdNo + userId
	return makeEncryptInfo( new Array( dataObject.niceId, dataObject.pingInfo, dataObject.orderNo, dataObject.trCd,
		dataObject.inqRsn, dataObject.returnUrl, dataObject.validTerm, encode( dataObject.niceNm ), dataObject.resIdNo, encode(dataObject.userId), dataObject.SIKey ) );
}

//
//	È¸¿ø»ç ¼­¹ö¿¡ Àü¼ÛÇÒ ´ëÃ¼ÀÎÁõ Á¤º¸¸¦ ¾ÏÈ£È­ÇÏ¿© ¹ÝÈ¯ÇÑ´Ù.
//
function makeCertKeyInfo( strNiceId, strPingInfo, strOrderNo, strInqRsn, strReturnUrl )
{
	//	Format : NiceId + PingInfo + OrderNo + InqRsn + ReturnURL
	return makeEncryptInfo( new Array( strNiceId, strPingInfo, strOrderNo, strInqRsn, strReturnUrl, "##" ) );
}

//
//	È¸¿ø»ç ¼­¹ö¿¡ Àü¼ÛÇÒ ´ëÃ¼ÀÎÁõ Á¤º¸¸¦ ¾ÏÈ£È­ÇÏ¿© ¹ÝÈ¯ÇÑ´Ù.
//
function makeCertKeyInfoPA( strNiceId, strPingInfo, strOrderNo, strInqRsn, strReturnUrl, strSIKey )
{
	//	Format : NiceId + PingInfo + OrderNo + InqRsn + ReturnURL
	return makeEncryptInfo( new Array( strNiceId, strPingInfo, strOrderNo, strInqRsn, strReturnUrl, strSIKey ) );
}

//
//	È¸¿ø»ç ¼­¹ö¿¡ Àü¼ÛÇÒ ´ëÃ¼ÀÎÁõ Á¤º¸¸¦ ¾ÏÈ£È­ÇÏ¿© ¹ÝÈ¯ÇÑ´Ù.
//
function makeCertKeyInfoPADup( strNiceId, strPingInfo, strOrderNo, strInqRsn, strReturnUrl, strSIKey, strUserCall, strJobInfo )
{
	//	Format : NiceId + PingInfo + OrderNo + InqRsn + ReturnURL
	return makeEncryptInfo( new Array( strNiceId, strPingInfo, strOrderNo, strInqRsn, strReturnUrl, strSIKey, strUserCall ) );
}

//
//	È¸¿ø»ç¿¡ Àü´ÞÇÒ ´ëÃ¼Á¤º¸¸¦ ¾ÏÈ£È­ÇÏ¿© ¹ÝÈ¯ÇÑ´Ù.
//
function makeCertKeyReturnInfo( dataObject )
{
	//alert("È¸¿ø»ç¿¡ Àü´ÞÇÒ ´ëÃ¼Á¤º¸¸¦ ¾ÏÈ£È­ÇÕ´Ï´Ù");
	//	Format : NiceId + OrderNo + TrCd + RetCd + RetDtlCd + Message + PAKey + Name + BirtyYear + Sex + dupeInfo + LIKey + coInfo
	return makeEncryptInfo( new Array( dataObject.niceId, dataObject.orderNo, dataObject.trCd, dataObject.retCd,
		dataObject.retDtlCd, encode( dataObject.message ), dataObject.PAKey, encode( dataObject.niceNm ), dataObject.birthYear, dataObject.sex,dataObject.dupeInfo, dataObject.LIKey, dataObject.coInfo) );
}

//
//	È¸¿ø»ç¿¡ Àü´ÞÇÒ ´ëÃ¼Á¤º¸¸¦ ¾ÏÈ£È­ÇÏ¿© ¹ÝÈ¯ÇÑ´Ù.
//
function makeIpinReturnInfo( dataObject )
{
	//	Format : NiceId + OrderNo + TrCd + RetCd + RetDtlCd + Message + PAKey + Name + BirtyYear + Sex
	return makeEncryptInfo2( new Array( dataObject.niceId, dataObject.orderNo, dataObject.trCd, dataObject.retCd,
		dataObject.retDtlCd, encode( dataObject.message ), dataObject.PAKey, encode( dataObject.niceNm ), dataObject.birthYear, dataObject.sex,dataObject.LIKey, dataObject.ageGroup,dataObject.foreigner, dataObject.sendTime, dataObject.CIKey), dataObject.authKeyStr);
}
//
//	È¸¿ø»ç ¼­¹ö¿¡ Àü¼ÛÇÒ Á¤º¸¸¦ ¾ÏÈ£È­ÇÏ¿© ¹ÝÈ¯ÇÑ´Ù.
//
function makeSendInfo( strNm, strNo, strRsn, strForeigner )
{
	//	Format : Name + resIdNo + InqRsn + Foreigner
	return makeEncryptInfo( new Array( encode( strNm ), strNo, strRsn, strForeigner ) );
}

//
//	È¸¿ø»ç ¼­¹ö¿¡ Àü¼ÛÇÒ ±â¾÷ Á¤º¸¸¦ ¾ÏÈ£È­ÇÏ¿© ¹ÝÈ¯ÇÑ´Ù.
//
function makeBizSendInfo( strNo, strNm, strRsn, strInfoFlag )
{
	//	Format : BizNo + BizNm + InqRsn + InfoFlag
	return makeEncryptInfo( new Array( strNo, encode( strNm ), strRsn, strInfoFlag ) );
}

//
//	È¸¿ø»ç ¼­¹ö¿¡ Àü¼ÛÇÒ ±â¾÷ Á¤º¸¸¦ ¾ÏÈ£È­ÇÏ¿© ¹ÝÈ¯ÇÑ´Ù.
//
function makAddBizSendInfo( strNo, strNm, strRsn, strInfoFlag, addGb, bizNm  )
{
	//	Format : BizNo + BizNm + InqRsn + InfoFlag
	return makeEncryptInfo( new Array( strNo, encode( strNm ), strRsn, strInfoFlag, addGb, encode( bizNm ) ) );
}

//
//	±â¾÷ ½Ç¸íÈ®ÀÎ »çÀ¯ÄÚµå ¼³Á¤ÇÔ¼ö
//
function setCoInqRsn( inqRsn )
{
	var optionText = "È¸¿ø°¡ÀÔ";
	var optionValue = "01";
	var textArray = optionText.split( ";" );
	var valueArray = optionValue.split( ";" );
	var nIndex = 0;

	for( nIndex = 0; nIndex < valueArray.length; nIndex++ )
	{
		var oOption = document.createElement( "OPTION" );
		inqRsn.options.add( oOption );
		oOption.innerText = textArray[nIndex];
		oOption.value = valueArray[nIndex];
	}
}

//
//	½Ç¸íÈ®ÀÎ »çÀ¯ÄÚµå ¼³Á¤ÇÔ¼ö
//
function setInqRsn( inqRsn )
{
	var optionText = "È¸¿ø°¡ÀÔ;±âÁ¸È¸¿ø È®ÀÎ;¼ºÀÎÀÎÁõ;ºñÈ¸¿ø È®ÀÎ;±âÅ¸ »çÀ¯";
	var optionValue = "10;20;30;40;90";
	var textArray = optionText.split( ";" );
	var valueArray = optionValue.split( ";" );
	var nIndex = 0;

	for( nIndex = 0; nIndex < valueArray.length; nIndex++ )
	{
		var oOption = document.createElement( "OPTION" );
		inqRsn.options.add( oOption );
		oOption.innerText = textArray[nIndex];
		oOption.value = valueArray[nIndex];
	}
}

//
//	³»/¿Ü±¹ÀÎ ±¸ºÐ ÄÚµå ¼³Á¤ ÇÔ¼ö
//
function setForeigner( foreigner )
{
	var optionText = "³»±¹ÀÎ;¿Ü±¹ÀÎ";
	var optionValue = "1;2";
	var textArray = optionText.split( ";" );
	var valueArray = optionValue.split( ";" );
	var nIndex = 0;

	for( nIndex = 0; nIndex < valueArray.length; nIndex++ )
	{
		var oOption = document.createElement( "OPTION" );
		foreigner.options.add( oOption );
		oOption.innerText = textArray[nIndex];
		oOption.value = valueArray[nIndex];
	}
}

//
//	Å¬¶óÀÌ¾ðÆ® °Å·¡ÀÏ·Ã¹øÈ£ Æ÷¸Ë±âÁØ »ý¼º ÇÔ¼ö (YYYYMMDDHHMMSS+Random)
//
function getOrderNo( digits )
{
	if ( digits < 20 )
	{
		alert( getMessage( "S11" ) );
		return;
	}

	//	ÀÏÀÚ ±âÁØ Á¤º¸¸¦ »ý¼ºÇÑ´Ù.
	var strOrderNo = new String( getYYYYMMDDHHMMSS() );

	//	·£´ýÅ°¸¦ »ý¼ºÇÑ´Ù.
	strOrderNo = strOrderNo + cryptoObject.getRandomKey( digits - strOrderNo.length );

	return strOrderNo;
}

//
//	ÇöÀç ÀÏÀÚ¿Í ½Ã°£À» 'YYYYMMDDHHMMSSsss' Çü½ÄÀ¸·Î ¹ÝÈ¯ÇÑ´Ù.
//
function getYYYYMMDDHHMMSSsss()
{
	var today = new Date();
	var strDateTime = (today.getFullYear() * 100 + today.getMonth() + 1) * 100;
	strDateTime = ( strDateTime + today.getDate() ) * 100;
	strDateTime = ( strDateTime + today.getHours() ) * 100;
	strDateTime = ( strDateTime + today.getMinutes() ) * 100;
	strDateTime = ( strDateTime + today.getSeconds() ) * 1000;
	strDateTime = strDateTime + today.getMilliseconds();

	return strDateTime;
}

//
//	ÇöÀç ÀÏÀÚ¿Í ½Ã°£À» 'YYYYMMDDHHMMSS' Çü½ÄÀ¸·Î ¹ÝÈ¯ÇÑ´Ù.
//
function getYYYYMMDDHHMMSS()
{
	var today = new Date();
	var strDateTime = (today.getFullYear() * 100 + today.getMonth() + 1) * 100;
	strDateTime = ( strDateTime + today.getDate() ) * 100;
	strDateTime = ( strDateTime + today.getHours() ) * 100;
	strDateTime = ( strDateTime + today.getMinutes() ) * 100;
	strDateTime = strDateTime + today.getSeconds();

	return strDateTime;
}

//
//	ÇöÀç ÀÏÀÚ¸¦ 'YYYYMMDD' Çü½ÄÀ¸·Î ¹ÝÈ¯ÇÑ´Ù.
//
function getYYYYMMDD()
{
	var today = new Date();
	var strDate = (today.getFullYear() * 100 + today.getMonth() + 1) * 100;
	strDate = strDate + today.getDate();

	return strDate;
}

//
//	ÇöÀç ½Ã°¢À» 'HHMMSSsss' Çü½ÄÀ¸·Î ¹ÝÈ¯ÇÑ´Ù.
//
function getHHMMSSsss()
{
	var today = new Date();
	var strTime = today.getHours() * 100;
	strTime = ( strTime + today.getMinutes() ) * 100;
	strTime = ( strTime + today.getSeconds() ) * 1000;
	strTime = strTime + today.getMilliseconds();

	return strTime;
}

//
//	ÇöÀç ½Ã°¢À» 'HHMMSS' Çü½ÄÀ¸·Î ¹ÝÈ¯ÇÑ´Ù.
//
function getHHMMSS()
{
	var today = new Date();
	var strTime = today.getHours() * 100;
	strTime = ( strTime + today.getMinutes() ) * 100;
	strTime = strTime + today.getSeconds();

	return strTime;
}

//
//	¹®ÀÚ ÀÔ·ÂÀ» °ËÁõÇÑ´Ù.
//
function checkString( srcString )
{
	var tmpChar;

	for( nIndex = 0; nIndex < srcString.length; nIndex++ )
	{
		tmpChar = srcString.charAt( nIndex );

		if ( ! ( (tmpChar < '0' || tmpChar > '9') && (tmpChar < 'a' || tmpChar > 'z') && (tmpChar < 'A' || tmpChar > 'Z') ) ) { return false; }
	}

	return true;
}

//
//	¼ýÀÚ ÀÔ·ÂÀ» °ËÁõÇÑ´Ù.
//
function checkNumeric( srcNumeric )
{
	if ( srcNumeric.Number == NaN ) return false;
//	var tmpChar;
//
//	for( nIndex = 0; nIndex < srcNumeric.length; nIndex++ )
//	{
//		tmpChar = srcNumeric.charAt( nIndex );
//
//		if ( tmpChar < '0' || tmpChar > '9' ) { return false; }
//	}

	return true;
}

//
//	ÁÖ¹Îµî·Ï¹øÈ£ Çü½ÄÀ» °ËÁõÇÑ´Ù.
//
function checkResIdNo( srcNumeric )
{
	var sum = 0;

	if ( srcNumeric.length < 13 ) return false;

	for( nIndex = 0; nIndex < 8; nIndex++ ) { sum += srcNumeric.substring( nIndex, nIndex + 1 ) * ( nIndex + 2 ); }
	for( nIndex = 8; nIndex < 12; nIndex++ ) { sum += srcNumeric.substring( nIndex, nIndex + 1 ) * ( nIndex - 6 ); }

	sum = 11 - ( sum % 11 );

	if ( sum >= 10 ) { sum -= 10; }
	if ( srcNumeric.substring( 12, 13 ) != sum || ( srcNumeric.substring( 6, 7 ) != 1 && srcNumeric.substring( 6, 7 ) != 2 ) ) { return false; }

	return true;
}

//
//	»ç¾÷ÀÚµî·Ï¹øÈ£ Çü½ÄÀ» °ËÁõÇÑ´Ù.
//
function checkBizNo( srcNumeric )
{
	var checkID = new Array(1, 3, 7, 1, 3, 7, 1, 3, 5, 1);
	var i, chkSum=0, c2, remander;

	for( i = 0; i <= 7; i++ ) chkSum += checkID[i] * srcNumeric.charAt(i);

	c2 = "0" + ( checkID[8] * srcNumeric.charAt(8) );
	c2 = c2.substring( c2.length - 2, c2.length );

	chkSum += Math.floor( c2.charAt(0) ) + Math.floor( c2.charAt(1) );

	remander = (10 - (chkSum % 10)) % 10 ;

	if (Math.floor(srcNumeric.charAt(9)) == remander)
		return true;
	else
		return false;
}

//
//	¿Ü±¹ÀÎµî·Ï¹øÈ£¸¦ Çü½ÄÀ» °ËÁõÇÑ´Ù.
//
function checkForeignNo( srcNumeric )
{
	var ch = srcNumeric.substring( 11, 12 );

	if ( ch != 7 && ch != 8 && ch != 9 )
		return false;
	else
		return true;
}

//
//	¿Ü±¹ÀÎ ¼º¸íÀ» °ËÁõÇÑ´Ù.
//
function checkForeignNm( srcNm )
{
	var chr = srcNm.split( "\\" );
	var strChar = chr[chr.length - 1];

	//	°ø¹é °ËÁõ
	if ( (/[\s]/).test( strChar ) )
	{
		return false;
	}

	for( nIndex = 0; nIndex < strChar.length; nIndex++ )
	{
		chr = strChar.substr( nIndex, 1 );

		if ( chr >= 'a' && chr <= 'z' )
			return false;
	}

	return true;
}

function getRandomKey( digits )
{
	var rndKey, nIndex;

	rndKey = "";

	do
	{
		nIndex = Math.floor( Math.random() * cryptoObject.KeyStr.length ) + 1;
		rndKey = rndKey + cryptoObject.KeyStr.substr( nIndex, 1 );
	}
	while ( rndKey.length < digits )

	return rndKey;
}

function endProcess()
{
	window.close();
	opener.focus();
}

function goReturnPage()
{
	var form = document.getElementById( "resForm" );
	if(oivsObject.identifydata != ""){
		//alert("1");
		form.IDENTIFYDATA.value = oivsObject.identifydata ;
		form.RETURNURL.value = oivsObject.pareturnUrl;
	}else{
		//		alert("2");
		//alert(form.SendInfo.value);
		form.SendInfo.value = oivsObject.clientData;
	}
	form.action = oivsObject.returnUrl;
	form.submit();
}

function goSafeBlockExpt()
{
	var popupWindow = window.open("", "popupSafeBlockExpt", "top=100, left=200, status=1, width=417, height=352" );
	popupWindow.document.location=strSafeBlockExptUrl;
	popupWindow.focus();
	return;
}

function goSafeBlockExptSelf()
{
	window.resizeTo( 425, 380 );
	document.location = strSafeBlockExptUrl;
	return;
}

function goSubmitUrl( encData, formObject, targetUrl )
{
	formObject.SendInfo.value = encData;
	formObject.action = targetUrl;
	formObject.submit();
}

