var gIsContinue=0;
//var E2E_keytype = "0"; //S Key »ç¿ë => xw·Î settingÇØ¾ß ÇÔ
var E2E_keytype = "1"; //S' Key »ç¿ë => xk·Î settingÇØ¾ß ÇÔ

var busy_info = "¾ÏÈ£È­ ÀÛ¾÷ÀÌ ÁøÇàÁßÀÔ´Ï´Ù. È®ÀÎÀ» ´©¸£½Ã°í Àá½Ã ±â´Ù·Á ÁÖ½Ê½Ã¿À."


// ÀÍ½ºÇÃ·Î ¹öÀü±¸ÇÏ±â
function GetInternetExplorerVersion( )
{
	var ver = -1;
	
	if( navigator.appName == 'Microsoft Internet Explorer' )
	{
		var ua = navigator.userAgent;
		var re = new RegExp( "MSIE ([0-9]{1,}[\.0-9]{0,})" );
		
		if( re.exec( ua ) != null )
			ver = parseFloat( RegExp.$1 );
	}

	return ver;
}

/*************************************************
 * XecureWEB ¹öÀü
 * ¾÷µ¥ÀÌÆ®½Ã ¹Ýµå½Ã ¼öÁ¤
 **************************************************/
/*
var Xecure_VER = '7, 2, 2, 3';
if( GetInternetExplorerVersion() >= 8.0 )
	Xecure_VER = '7, 2, 2, 7';
*/
var Xecure_VER = '7,2,3,3';

// YESSIGN CA ADDRESS//////////////////////////////////////////////////////
// TEST : 203.233.91.234
// REAL : 203.233.91.71  
//var yessign_ca_type = 11;	// Yessign Test

var yessign_ca_type = 1;	// Yessign Real
var yessign_ca_ip =  "203.233.91.71";
var yessign_ca_port = 4512;

// XECURE CA ADDRESS///////////////////////////////////////////////////////
// TEST : 192.168.10.30
var xecure_ca_type = 101;	// XecureCA (RSA)
var xecure_ca_ip =  "10.10.10.19;pki8 ca";
var xecure_ca_port = 7636;

var accept_cert = "yessignCA:1.2.410.200005.1.1.1:1.2.410.200005.1.1.2:1.2.410.200005.1.1.4:1.2.410.200005.1.1.5";
accept_cert += ",signGate CA:1.2.410.200004.5.2.1.2:1.2.410.200004.5.2.1.1:1.2.410.200004.5.2.1.7.1";
accept_cert += ",signGATE CA2:1.2.410.200004.5.2.1.2:1.2.410.200004.5.2.1.1:1.2.410.200004.5.2.1.7.1";
accept_cert += ",SignKorea CA:1.2.410.200004.5.1.1.5:1.2.410.200004.5.1.1.7";
accept_cert += ",NCASign CA:1.2.410.200004.5.3.1.9:1.2.410.200004.5.3.1.2:1.2.410.200004.5.3.1.1";
accept_cert += ",NCASignCA:1.2.410.200004.5.3.1.9:1.2.410.200004.5.3.1.2:1.2.410.200004.5.3.1.1";
accept_cert += ",CrossCertCA:1.2.410.200004.5.4.1.1:1.2.410.200004.5.4.1.2:1.2.410.200004.5.4.1.101";
accept_cert += ",CrossCert Certificate Authority:1.2.410.200004.5.4.1.1:1.2.410.200004.5.4.1.2:1.2.410.200004.5.4.1.101";
accept_cert += ",TradeSignCA:1.2.410.200012.1.1.1:1.2.410.200012.1.1.3:1.2.410.200012.1.1.101";

var accept_cert_dti = "yessignCA:1.2.410.200005.1.1.2:1.2.410.200005.1.1.5:1.2.410.200005.1.1.6.8";
accept_cert_dti += ",signGate CA:0.0.0.0";
accept_cert_dti += ",signGATE CA2:0.0.0.0";
accept_cert_dti += ",SignKorea CA:0.0.0.0";
accept_cert_dti += ",NCASign CA:0.0.0.0";
accept_cert_dti += ",NCASignCA:0.0.0.0";
accept_cert_dti += ",CrossCertCA:0.0.0.0";
accept_cert_dti += ",CrossCert Certificate Authority:0.0.0.0";
accept_cert_dti += ",TradeSignCA:0.0.0.0";

// ÀüÀÚ¼­¸í, ÀÎÁõ¼­ °»½Å, ÀÎÁõ¼­ Æó±â½Ã¿¡ ÀÎÁõ¼­ ¾ÏÈ£¿À·ù¸¦ Çã¿ëÈ¸¼ö
var pwd_fail = 3; 

///////////////////////////////////////////////////////////////////////////////////
// ÀÎÁõ±â°ü ÀÎÁõ¼­ ´Ù¿î·Îµå½Ã ÀÎÁõ±â°ü ÀÎÁõ¼­¿Í ÀÎÁõ¼­ CN
//var pCaCertUrl= "http://" + window.location.host + "/XecureObject/signed_cacert.bin";
//var pCaCertName = "³Ø¼­ºê CA";
var pCaCertUrl= "http://" + window.location.host + "/XecureObject/signed_cacert.bin";
//var pCaCertName = "Å×½ºÆ® ÀÎÁõ±â°ü";
var pCaCertName = "shinbo real ca";

//////////////////////////////////////////////////////////////////////////////////
// ÀüÀÚ¼­¸í È®ÀÎÃ¢¿¡ º¸ÀÏ ¸Þ¼¼Áö¿Í ÀüÀÚ¼­¸í È®ÀÎÃ¢ º¸±â ¿É¼Ç
// 0 : ¼­¸í ¿ø¹® Ãâ·Â ¾ÈÇÔ, 1: ¼­¸í ¿ø¹® Ãâ·Â 
var sign_desc = "";
var show_plain = 0; 

///////////////////////////////////////////////////////////////////////////////////
// xgate ¼­¹ö ¸í:Æ÷Æ® ÁöÁ¤ , Æ÷Æ® »ý·«½Ã µðÆúÆ®·Î 443 Æ÷Æ® »ç¿ë
var xgate_addr	=  "mybank.ibk.co.kr" + ":443:8080";	
//var xgate_addr	= window.location.hostname + ":443:8080";
///////////////////////////////////////////////////////////////////////////////////
// Netscape plugin version information
var packageURL = 'http://' + window.location.host + '/XecureObject/NPXecSSL_Install.jar';
//var versionMin = 2;
//var versionRel = 6;
var versionMaj = 5;
var versionMin = 1;
var versionRel = 0;

 
//////////////////////////////////////////////////////////////////////////////////
//	Xecure Big ÇÔ¼öµé....
/*¿ëµµÁ¦ÇÑ¿ëÀÎÁõ¼­ Ãß°¡¿¡ µû¸¥ ¼Ò½ºÃß°¡  ½ÃÀÛ 2004.10.29 ÀÌ½ÂÈñ */
function SetConvertTable() {
    document.XecureWeb.SetPolicyConvertTableFirst(0, "1.2.410.200005.1.1.1", "ÀüÀÚ°Å·¡¹ü¿ë°³ÀÎ");
    document.XecureWeb.SetPolicyConvertTableNext("1.2.410.200005.1.1.2", "±ÝÀ¶°Å·¡±â¾÷");
    document.XecureWeb.SetPolicyConvertTableNext("1.2.410.200005.1.1.4", "ÀºÇàº¸Çè¿ë°³ÀÎ");
    document.XecureWeb.SetPolicyConvertTableNext("1.2.410.200005.1.1.5", "ÀüÀÚ°Å·¡¹ü¿ë±â¾÷");
    document.XecureWeb.SetPolicyConvertTableNext("1.2.410.200005.1.1.6.8", "ÀüÀÚ¼¼±Ý¿ë±â¾÷");

    //ÇÑ±¹ Á¤º¸ÀÎÁõ
    document.XecureWeb.SetPolicyConvertTableNext("1.2.410.200004.5.2.1.2", "ÀüÀÚ°Å·¡¹ü¿ë°³ÀÎ");
    document.XecureWeb.SetPolicyConvertTableNext("1.2.410.200004.5.2.1.1", "ÀüÀÚ°Å·¡¹ü¿ë±â¾÷");
    document.XecureWeb.SetPolicyConvertTableNext("1.2.410.200004.5.2.1.7.1", "ÀºÇàº¸Çè¿ë");

    //ÇÑ±¹ Áõ±ÇÀü»ê
    document.XecureWeb.SetPolicyConvertTableNext("1.2.410.200004.5.1.1.5", "ÀüÀÚ°Å·¡¹ü¿ë°³ÀÎ");
    document.XecureWeb.SetPolicyConvertTableNext("1.2.410.200004.5.1.1.7", "ÀüÀÚ°Å·¡¹ü¿ë±â¾÷");

    //ÇÑ±¹ Àü»ê¿ø
    document.XecureWeb.SetPolicyConvertTableNext("1.2.410.200004.5.3.1.9", "ÀüÀÚ°Å·¡¹ü¿ë°³ÀÎ");
    document.XecureWeb.SetPolicyConvertTableNext("1.2.410.200004.5.3.1.2", "ÀüÀÚ°Å·¡¹ü¿ë±â¾÷");
    //ÇÑ±¹ ÀüÀÚÀÎÁõ
    document.XecureWeb.SetPolicyConvertTableNext("1.2.410.200004.5.4.1.1", "ÀüÀÚ°Å·¡¹ü¿ë°³ÀÎ");
    document.XecureWeb.SetPolicyConvertTableNext("1.2.410.200004.5.4.1.2", "ÀüÀÚ°Å·¡¹ü¿ë±â¾÷");
    document.XecureWeb.SetPolicyConvertTableNext("1.2.410.200004.5.4.1.9", "ÀüÀÚ°Å·¡¹ü¿ë±â¾÷");

    //ÇÑ±¹¹«¿ª Á¤º¸Åë½Å
    document.XecureWeb.SetPolicyConvertTableNext("1.2.410.200012.1.1.1", "ÀüÀÚ°Å·¡¹ü¿ë°³ÀÎ");
    document.XecureWeb.SetPolicyConvertTableNext("1.2.410.200012.1.1.3", "ÀüÀÚ°Å·¡¹ü¿ë±â¾÷");
    document.XecureWeb.SetPolicyConvertTableNext("1.2.410.200012.1.1.101", "ÀºÇàº¸Çè¿ë");

    document.XecureWeb.SetPolicyConvertTableFinal(0);

    document.XecureWeb.SetIssuerConvertTableFirst("yessignCA", "±ÝÀ¶°áÁ¦¿ø");
    document.XecureWeb.SetIssuerConvertTableNext("SignKorea CA", "Áõ±ÇÀü»ê");
    document.XecureWeb.SetIssuerConvertTableNext("signGate CA", "Á¤º¸ÀÎÁõ");
    document.XecureWeb.SetIssuerConvertTableNext("NCASign CA", "Àü»ê¿ø");
    document.XecureWeb.SetIssuerConvertTableNext("TradeSignCA", "¹«¿ªÁ¤º¸Åë½Å");
    document.XecureWeb.SetIssuerConvertTableNext("CrossCertCA", "ÀüÀÚÀÎÁõ");
    document.XecureWeb.SetIssuerConvertTableNext("CertRSA01", "KISAÀÎÁõ±â°ü");
    document.XecureWeb.SetIssuerConvertTableNext("signGATE CA2", "Á¤º¸ÀÎÁõ");
    document.XecureWeb.SetIssuerConvertTableNext("NCASignCA", "Àü»ê¿ø");
    document.XecureWeb.SetIssuerConvertTableNext("CrossCert Certificate Authority", "ÀüÀÚÀÎÁõ");
    document.XecureWeb.SetIssuerConvertTableNext("KISA RootCA 1", "KISAÀÎÁõ±â°ü");
    document.XecureWeb.SetIssuerConvertTableFinal();
}

//////////////////////////////////////////////////////////////////////////////////
//	Xecure ÇÔ¼öµé....
//test ÇÔ¼ö
///envOption
//
//
//
//
//
/*
function EnvelopData_test(data,envOption,envPwd,envCertPem,certSerial,CertLocation)
{
	var envData;
	envData=EnvelopData(xaddr, XecureEscape(accept_cert), data, envOption, envPwd, envCertPem, certSerial, CertLocation, sign_desc,pwd_fail);
	alert(envData);
	return envData;
}


function EnvelopData_test(envData,DeenvPwd,DeenvOption)
{
	var DeEnvData;
	DeEnvData=DeEnvelopData(xaddr, XecureEscape(accept_cert), envData, DeenvOption,DeenvPwd, sign_desc,pwd_fail);
	
}
*/
//test ÇÔ¼ö ³¡~~~~~
////Env_______________start/////////////

function EnvelopData( inMsg, pwd, certPem, envOption )
{
	var envMsg;

		
	envMsg = document.XecureWeb.EnvelopData(
			xgate_addr, 
			XecureEscape(accept_cert), 
			XecureEscape(inMsg), 
			envOption, 
			pwd, 
			certPem, 
			"", 
			0, 
			"", 
			3 );

   	if( envMsg == "" )
   	{
		XecureWebError();
   	}

	return envMsg;
}

function DataEnvelop( plain, envOption )
{
	var r;
	var errCode;
	var errMsg='';
//	var envOption = 64 + 32 + 8;
		
	if(navigator.appName == 'Netscape') 
	{		
		alert( "Not supported function" );
	}
	else	/* Explorer */
	{	
		r = document.XecureWeb.EnvelopData(xgate_addr, accept_cert, plain, envOption, "", "", "", 0, "", 3);

	   	if( r == "" )
	   	{
			errCode = document.XecureWeb.LastErrCode();
			errMsg = document.XecureWeb.LastErrMsg();
			EAlert( errCode, errMsg );
			return false;
	   	}
	   	
	   	//form.plaintxt.value = r;
	}
	
	return r;
}

function DataDeEnvelop( env_msg, deEnvOption )
{
	var r;
	var errCode;
	var errMsg='';
//	var envOption = 64 + 32 + 8;
		
	if(navigator.appName == 'Netscape') 
	{		
		alert( "Not supported function" );
	}
	else	/* Explorer */
	{	
		r = document.XecureWeb.DeEnvelopData(xgate_addr, accept_cert,env_msg, 0, "", "", 3);
	   	if( r == "" )
	   	{
			errCode = document.XecureWeb.LastErrCode();
			errMsg = document.XecureWeb.LastErrMsg();
			EAlert( errCode, errMsg );
			return false;
	   	}
	   	
	   	alert(r);
	   	
//	   	form.plaintxt.value = r;
	}
	
	return r;
}
////Env_______________end/////////////
function UserAgent()
{
	return navigator.userAgent.substring(0,9);
}

function IsNetscape()			// by Zhang
{
	if(navigator.appName == 'Netscape')
		return true ;
	else
		return false ;
}

function IsNetscape60()			// by Zhang
{
	if(IsNetscape() && UserAgent() == 'Mozilla/5')
		return true ;
	else
		return false ;
}

function IsNetscape60()			// by Zhang
{
	if(IsNetscape() && UserAgent() == 'Mozilla/5')
		return true ;
	else
		return false ;
}

function XecureUnescape(Msg)		// by Zhang
{
	if(IsNetscape())
		return unescape(Msg) ;
	else
		return Msg ;
}

function XecureEscape(Msg)		// by Zhang
{
	if(IsNetscape())
		return escape(Msg) ;
	else
		return Msg ;
}

function XecurePath(xpath)		// by zhang
{
	if(IsNetscape())
		return (xpath) ;
	else
		return ("/" + xpath) ;		
}

function XecureAddQuery(qs)
{
	if(qs == "")	
		return "" ;
	else
		return "&" + qs ;
}

function XecureWebError()		// by zhang
{
	var errCode = 0 ;
	var errMsg = "" ;
	
	if( IsNetscape60() )		// Netscape 6.0
	{
		errCode = document.XecureWeb.nsIXecurePluginInstance.LastErrCode();
		errMsg  = document.XecureWeb.nsIXecurePluginInstance.LastErrMsg();
	}
	else
	{
		errCode = document.XecureWeb.LastErrCode();
		errMsg  = document.XecureWeb.LastErrMsg();
	}

	if(errCode == -144)
	{
		if(confirm("¿¡·¯ÄÚµå : " + errCode + "\n\n" + XecureUnescape(errMsg) + "\n\n ÀÎÁõ¼­°ü¸®Ã¢À» ¿­°Ú½À´Ï±î?"))
			ShowCertManager() ;
	}
	else if(errCode == -141) {
		reset_submit(); // ·¹ÀÌ¾î ÃÊ±âÈ­
	}
	else if(errCode == -1201) {
		
	}
	else {
//	else if(errCode != 0)	
		alert( "¿¡·¯ÄÚµå : " + errCode + "\n\n" + XecureUnescape(errMsg) );
	}
	
	return false;
}

function escape_url(url) {
	var i;
	var ch;
	var out = '';
	var url_string = '';

	url_string = String(url);

	for (i = 0; i < url_string.length; i++) {
		ch = url_string.charAt(i);
		if (ch == ' ')		out += '%20';
		else if (ch == '%')	out += '%25';
		else if (ch == '&')	out += '%26';
		else if (ch == '+')	out += '%2B';
		else if (ch == '=')	out += '%3D';
		else if (ch == '?') out += '%3F';
		else				out += ch;
	}
	return out;
}

function ran_gen()
{
	var maxnumbers = "999999";
	var r = Math.round(Math.random() * (maxnumbers-1))+1+"";

	for(var i=0; i < 6-r.length; i++)
		r = "0" + r;
	
	return r;
}

function XecureNavigate_NoEnc( url, target )
{
	var qs ;
	var path = "/";
	var sid;
	var xecure_url;

	document.XecureWeb.SecKeyStroke = "XW_SKS_JRSOFT_DRIVER";
	// get path info & query string & hash from url
	qs_begin_index = url.indexOf('?');
	path = getPath(url)

	// get query string action url
	if ( qs_begin_index < 0 ) {
		qs = "";
	}
	else {
		qs = url.substring(qs_begin_index + 1, url.length );
	}

	if( gIsContinue == 0 ) {
		gIsContinue = 1;
		if( IsNetscape60() )		// Netscape 6.0
			sid = document.XecureWeb.nsIXecurePluginInstance.BlockEnc(xgate_addr, path, "", "GET");
		else
			sid = document.XecureWeb.BlockEnc ( xgate_addr, path, "", "GET" );
		gIsContinue = 0;
	}
	else {
		alert(busy_info);
		return false ;
	}

	if( sid == null || sid == "")	return XecureWebError();

	xecure_url = path + "?q=" + sid + XecureAddQuery(qs);

	open ( xecure_url, target );
}

function XecureNavigate( url, target, feature )
{
	var qs ;
	var path = "/";
	var cipher;
	var xecure_url;
	var location_url;	// ÇöÀçÆäÀÌÁö url

	document.XecureWeb.SecKeyStroke = "XW_SKS_JRSOFT_DRIVER";

	if(location.href.indexOf('?') > -1){
		location_url = location.href.substring(0, location.href.indexOf('?'));
	}else{
		location_url = location.href.substring(0, location.href.indexOf('.jsp'));
	}
	// get path info & query string & hash from url
	qs_begin_index = url.indexOf('?');
	path = getPath(url)
	// get query string action url
	if ( qs_begin_index < 0 ) {
		qs = "?SNCT_REQUEST_PAGE=" + location_url;	// ÇöÀçÆäÀÌÁö urlÀ» ´ÙÀ½ÆäÀÌÁö·Î ³Ñ±â±âÀ§ÇØ. °áÀç½ÇÇà ¿Ï·áÈ­¸é ¸Þ´ºÇ¥½Ã¿ë.(À¥ÄÉ½Ã ÀÌÀçÈ£)
	}
	else {
		qs = url.substring(qs_begin_index + 1, url.length );
		qs += "&SNCT_REQUEST_PAGE=" + location_url;	// ÇöÀçÆäÀÌÁö urlÀ» ´ÙÀ½ÆäÀÌÁö·Î ³Ñ±â±âÀ§ÇØ. °áÀç½ÇÇà ¿Ï·áÈ­¸é ¸Þ´ºÇ¥½Ã¿ë.(À¥ÄÉ½Ã ÀÌÀçÈ£)
	}

	if( gIsContinue == 0 ) {
		gIsContinue = 1;
		if( IsNetscape60() )		// Netscape 6.0
			cipher = document.XecureWeb.nsIXecurePluginInstance.BlockEncEx(xgate_addr, path, XecureEscape(qs), "GET", accept_cert);
		else{
			cipher = document.XecureWeb.BlockEncEx(xgate_addr, path, XecureEscape(qs),"GET", accept_cert);}
		gIsContinue = 0;
	}
	else {
		alert(busy_info);
		return false;
	}
			
	if( cipher == null || cipher == "" )	return XecureWebError();

	xecure_url = path + "?q=" + escape_url(cipher);

	if (feature=="" || feature==null) open ( xecure_url, target );
	else open(xecure_url, target, feature );
	
}

function XecureNaviFullURL( url, target, feature )
{

	var qs ;
	var path = "/";
	var cipher;
	var xecure_url;

	document.XecureWeb.SecKeyStroke = "XW_SKS_JRSOFT_DRIVER";
	qs_begin_index = url.indexOf('?');

	if ( qs_begin_index < 0 ) {
		path = url;
	}else{    
		path = url.substring(0, qs_begin_index );
	}
	if ( qs_begin_index < 0 ) {
		qs = "";
	}
	else {
		qs = url.substring(qs_begin_index + 1, url.length );
	}
	//ver_check();
	if( gIsContinue == 0 ) {
		gIsContinue = 1;
		if( IsNetscape60() )		// Netscape 6.0
			cipher = document.XecureWeb.nsIXecurePluginInstance.BlockEnc(xgate_addr, path, XecureEscape(qs), "GET");
		else 
			cipher = document.XecureWeb.BlockEnc(xgate_addr, path, XecureEscape(qs),"GET");
		gIsContinue = 0;
	}
	else {
		alert(busy_info);
		return false;
	}

	if( cipher == null || cipher == "" )	return XecureWebError() ;

	if ( qs_begin_index < 0 ) {
		xecure_url = path;
	}else{
		xecure_url = path + "?q=" + escape_url(cipher);
	}
	if (feature=="" || feature==null) open ( xecure_url, target );
	else open(xecure_url, target, feature );
}

function XecureBanca( url, target, feature )  //¹æÄ«·Î±×ÀÎ °ü·Ã 2009.4.23 ÃÖ¼ºÈ£ Ãß°¡
{
	var qs ;
	var path = "/";
	var cipher;
	var xecure_url;

	document.XecureWeb.SecKeyStroke = "XW_SKS_JRSOFT_DRIVER";
	qs_begin_index = url.indexOf('?');
	path = url.substring(0, qs_begin_index );
	if ( qs_begin_index < 0 ) {
		qs = "";
	}
	else {
		qs = url.substring(qs_begin_index + 1, url.length );
	}

	//xgate_addr="banca.kiupbank.co.kr:443:8080"
	xgate_addr="banca.ibk.co.kr:443:8080"
	document.XecureWeb.EndSession(xgate_addr);

	if( gIsContinue == 0 ) {
		gIsContinue = 1;
		if( IsNetscape60() )		// Netscape 6.0
			cipher = document.XecureWeb.nsIXecurePluginInstance.BlockEnc(xgate_addr, path, XecureEscape(qs), "GET");
		else
			cipher = document.XecureWeb.BlockEnc(xgate_addr, path, XecureEscape(qs),"GET");
		gIsContinue = 0;
	}
	else {
		alert(busy_info);
		return false;
	}

	if( cipher == null || cipher == "" ) return XecureWebError() ;

	xecure_url = path + "?q=" + escape_url(cipher);
	if (feature=="" || feature==null) open ( xecure_url, target );
	else open( xecure_url, target, feature );
}

function XecureLink( link )
{
	var qs ;
//	var path = "/";
	var cipher;
	// get path info & query string from action url 

	document.XecureWeb.SecKeyStroke = "XW_SKS_JRSOFT_DRIVER";
	if ( link.protocol != "http:" ) {
		alert ( "http ÇÁ·ÎÅäÄÝ¸¸ »ç¿ë °¡´ÉÇÕ´Ï´Ù." );
		return true;
	}
	qs = link.search;
	if ( qs.length > 1 ) {
		qs = link.search.substring(1);
	}
	hash = link.hash;
	
	if( gIsContinue == 0 ) {
		path = XecurePath(link.pathname) ;

		gIsContinue = 1;
		
		if( IsNetscape60() )		// Netscape 6.0
			cipher = document.XecureWeb.nsIXecurePluginInstance.BlockEnc(xgate_addr, path, XecureEscape(qs), "GET");
		else {
			//cipher = document.XecureWeb.BlockEnc(xgate_addr, "/XecureDemo/jsp/ibs/transfer_input.jsp", XecureEscape(qs),"GET");
			cipher = document.XecureWeb.BlockEnc(xgate_addr, path, XecureEscape(qs),"GET");

		}
		gIsContinue = 0;
	} 
	else {

		return false;
	}
	
	if( cipher == null || cipher == "")	return XecureWebError() ;
	// link.search = "?q=" + escape_url(cipher);
	xecure_url = "http://" + link.host + path + hash + "?q=" + escape_url(cipher);

	if ( link.target == "" || link.target == null ) open ( xecure_url, "_self" );
	else open( xecure_url, link.target );

	return false;


}

function XecureLinkCert( link )
{
	var qs ;
//	var path = "/";
	var cipher;
	// get path info & query string from action url 

	document.XecureWeb.SecKeyStroke = "XW_SKS_JRSOFT_DRIVER";
	if ( link.protocol != "http:" ) {
		alert ( "http ÇÁ·ÎÅäÄÝ¸¸ »ç¿ë °¡´ÉÇÕ´Ï´Ù." );
		return true;
	}

	qs = link.search;
	if ( qs.length > 1 ) {
		qs = link.search.substring(1);
	}

	hash = link.hash;
	
	if( gIsContinue == 0 ) {
		path = XecurePath(link.pathname) ;

		gIsContinue = 1;
		
		if( IsNetscape60() )		// Netscape 6.0
			cipher = document.XecureWeb.nsIXecurePluginInstance.BlockEnc(xgate_addr, "/on", XecureEscape(qs), "GET");
		else {
			//cipher = document.XecureWeb.BlockEnc(xgate_addr, "/XecureDemo/jsp/ibs/transfer_input.jsp", XecureEscape(qs),"GET");
			cipher = document.XecureWeb.BlockEncEx(xgate_addr, "/on", XecureEscape(qs),"GET", accept_cert);

		}
		gIsContinue = 0;
	} 
	else {
		alert(busy_info);
		return false;
	}
	
	if( cipher == null || cipher == "")	return XecureWebError() ;

	// link.search = "?q=" + escape_url(cipher);
	xecure_url = "http://" + link.host + path + hash + "?q=" + escape_url(cipher);

	if ( link.target == "" || link.target == null ) open ( xecure_url, "_self" );
	else open( xecure_url, link.target );

	return false;


}

function XecureLinkCert_dti( link )
{
	var qs ;
//	var path = "/";
	var cipher;
	// get path info & query string from action url 

	document.XecureWeb.SecKeyStroke = "XW_SKS_JRSOFT_DRIVER";
	if ( link.protocol != "http:" ) {
		alert ( "http ÇÁ·ÎÅäÄÝ¸¸ »ç¿ë °¡´ÉÇÕ´Ï´Ù." );
		return true;
	}

	qs = link.search;
	if ( qs.length > 1 ) {
		qs = link.search.substring(1);
	}

	hash = link.hash;
	
	if( gIsContinue == 0 ) {
		path = XecurePath(link.pathname) ;

		gIsContinue = 1;
		
		if( IsNetscape60() )		// Netscape 6.0
			cipher = document.XecureWeb.nsIXecurePluginInstance.BlockEnc(xgate_addr, "/on", XecureEscape(qs), "GET");
		else {
			//cipher = document.XecureWeb.BlockEnc(xgate_addr, "/XecureDemo/jsp/ibs/transfer_input.jsp", XecureEscape(qs),"GET");
			cipher = document.XecureWeb.BlockEncEx(xgate_addr, "/on", XecureEscape(qs),"GET",accept_cert_dti);

		}
		gIsContinue = 0;
	} 
	else {
		alert(busy_info);
		return false;
	}
	
	if( cipher.length == 0)	return XecureWebError() ;

	// link.search = "?q=" + escape_url(cipher);
	xecure_url = "http://" + link.host + path + hash + "?q=" + escape_url(cipher);

	if ( link.target == "" || link.target == null ) open ( xecure_url, "_self" );
	else open( xecure_url, link.target );

	return false;


}

function XecureSubmit( form , isMass)
{
	var qs ;
	var path ;
	var cipher;

	qs_begin_index = form.action.indexOf('?');

	// if action is relative url, get base url from window location
	path = getPath(form.action)
	// get path info & query string & hash from action url
	if ( qs_begin_index < 0 ) {
		qs = "";
	}
	else {
		qs = form.action.substring(qs_begin_index + 1, form.action.length );
	}
	document.xecure.target = form.target;
	if ( form.method == "get" || form.method=="GET" ) {
		// collect input field values 
		if(isMass == true) qs = MakePlainMass(form)
		else qs = XecureMakePlain( form );

		// encrypt QueryString
		if( gIsContinue == 0 ) {
			gIsContinue = 1;
			if( IsNetscape60() )		// Netscape 6.0
				cipher = document.XecureWeb.nsIXecurePluginInstance.BlockEnc(xgate_addr, path, XecureEscape(qs),"GET");			
			else{
				cipher = document.XecureWeb.BlockEnc(xgate_addr, path, XecureEscape(qs),"GET");
			}
			gIsContinue = 0;
		}
		else {
			alert(busy_info);
			return false;
		}
		
		if( cipher == "" )	return XecureWebError() ;
		
		xecure_url = path + "?q=" + escape_url(cipher);
		if ( form.target == "" || form.target == null ) open( xecure_url, "_self");
		else open ( xecure_url, form.target );
	}
	else {
		document.xecure.method = "post";

		// encrypt QueryString of action field
		if( gIsContinue == 0 ) {
			gIsContinue = 1;
			if( IsNetscape60() )		// Netscape 6.0
				cipher = document.XecureWeb.nsIXecurePluginInstance.BlockEnc(xgate_addr, path, XecureEscape(qs),"GET");			
			else {
				cipher = document.XecureWeb.BlockEnc(xgate_addr, path, XecureEscape(qs),"GET");
			}
			gIsContinue = 0;
		}
		else {
			alert(busy_info);
			return false;
		}		


		if( cipher == "" )	return XecureWebError() ;

		document.xecure.action = path + "?q=" + escape_url(cipher);

		//alert(document.xecure.action);
		if(isMass == true) posting_data = MakePlainMass(form)
		else posting_data = XecureMakePlain( form );


		if( gIsContinue == 0 ) {
			gIsContinue = 1;
			if( IsNetscape60() )		// Netscape 6.0
				cipher = document.XecureWeb.nsIXecurePluginInstance.BlockEnc ( xgate_addr, path, XecureEscape(posting_data), "POST" );
			else{
				cipher = document.XecureWeb.BlockEnc ( xgate_addr, path, XecureEscape(posting_data), "POST" );
			}
			gIsContinue = 0;
		}
		else {
			alert(busy_info);
			return false;
		}		

		
		if( cipher == "" )	return XecureWebError() ;
		
		//alert(document.xecure.action);
		document.xecure.p.value = cipher;
		//alert(document.xecure.p.value);
		document.xecure.submit();

	}
	
	return false;
}

function XecureSubmit2( form )
{
	var qs ;
	var path ;
	var cipher;

	qs_begin_index = form.action.indexOf('?');
	
	// if action is relative url, get base url from window location
	//path = getPath(form.action)
	path = form.action;
	// get path info & query string & hash from action url
	if ( qs_begin_index < 0 ) {
		qs = "";
	}
	else {
		qs = form.action.substring(qs_begin_index + 1, form.action.length );
	}
	document.xecure.target = form.target;

	if ( form.method == "get" || form.method=="GET" ) {
		// collect input field values 
		qs = XecureMakePlain( form );

		// encrypt QueryString
		if( gIsContinue == 0 ) {
			gIsContinue = 1;
			if( IsNetscape60() )		// Netscape 6.0
				cipher = document.XecureWeb.nsIXecurePluginInstance.BlockEnc(xgate_addr, path, XecureEscape(qs),"GET");			
			else{
				cipher = document.XecureWeb.BlockEnc(xgate_addr, path, XecureEscape(qs),"GET");
			}
			gIsContinue = 0;
		}
		else {
			alert(busy_info);
			return false;
		}
		
		if( cipher == null || cipher == "" )	return XecureWebError() ;
		
		xecure_url = path + "?q=" + escape_url(cipher);
		if ( form.target == "" || form.target == null ) open( xecure_url, "_self");
		else open ( xecure_url, form.target );
	}
	else {
		document.xecure.method = "post";

		// encrypt QueryString of action field
		if( gIsContinue == 0 ) {
			gIsContinue = 1;
			if( IsNetscape60() )		// Netscape 6.0
				cipher = document.XecureWeb.nsIXecurePluginInstance.BlockEnc(xgate_addr, path, XecureEscape(qs),"GET");			
			else {
				cipher = document.XecureWeb.BlockEnc(xgate_addr, path, XecureEscape(qs),"GET");
			}
			gIsContinue = 0;
		}
		else {
			alert(busy_info);
			return false;
		}		


		if( cipher == null || cipher == "" )	return XecureWebError() ;

		document.xecure.action = path + "?q=" + escape_url(cipher);
		posting_data = XecureMakePlain( form );

		if( gIsContinue == 0 ) {
			gIsContinue = 1;
			if( IsNetscape60() )		// Netscape 6.0
				cipher = document.XecureWeb.nsIXecurePluginInstance.BlockEnc ( xgate_addr, path, XecureEscape(posting_data), "POST" );
			else{
				cipher = document.XecureWeb.BlockEnc ( xgate_addr, path, XecureEscape(posting_data), "POST" );
			}
			gIsContinue = 0;
		}
		else {
			alert(busy_info);
			return false;
		}		
		
		if( cipher == null || cipher == "" )	return XecureWebError() ;
		
		document.xecure.p.value = cipher;
		document.xecure.submit();

	}
	return false;
}

/* ´ë·® µ¥ÀÌÅÍ ÀÌÃ¼¿ë 2009-03-07 by softforum */
function MakePlainMass(form)
{
	var flag = false;
	var plain_text="";
	var j = 0;
	var name = new Array(form.elements.length);
	var value = new Array(form.elements.length);
	
	len = form.elements.length;
	for (i = 0; i < len; i++) {
		if (flag)
			plain_text += "&";
		else
			flag = true;
		plain_text += form.elements[i].name ;
		plain_text += "=";
		plain_text += round_escape(form.elements[i].value);
	}

	return plain_text;
}


/* È®ÀåE2E¿ë XecureMakePlainÇÔ¼ö */

function XecureMakePlain(form)
{
	var name = new Array(form.elements.length);
	var value = new Array(form.elements.length);
	var flag = false;
	var j = 0;
	var plain_text="";
	var is9x = false;
	var enc_xgate = document.XecureWeb.GetEncUserData(xgate_addr);
	if(document.CKKeyPro==null || typeof(document.CKKeyPro) == "undefined" || document.CKKeyPro.object==null) {
		enable=false;
	} else {
		enable=true;
		// 9x°è¿­ check
 		if(navigator.userAgent.indexOf("Windows 9") != -1)
			is9x = true;
	}
	
	len = form.elements.length;
	for (i = 0; i < len; i++)
	{
		if ((form.elements[i].type != "button") && 
				(form.elements[i].type != "reset") && 
				(form.elements[i].type != "submit"))
		{
			if (form.elements[i].type == "radio" || form.elements[i].type == "checkbox")
			{
				if (form.elements[i].checked == true)
				{
					if (form.elements[i].disabled == false)
					{
						name[j] = form.elements[i].name;
						value[j] = form.elements[i].value;
						j++;
					}
				}
			}
			else if(enable && form.elements[i].type == "text" 
				&& form.elements[i].enc=="on" 
				&& form.elements[i].value != null 
				&& form.elements[i].value != "")
			// À§ÀÇ Á¶°Ç ¹®Àº ¼öÁ¤µÇÁö ¾Ê½À´Ï´Ù.
			{
				//name[j] = "xk" + form.elements[i].name;
				//if(!is9x)
					name[j] = "xk"+form.elements[i].name;
				//else
				//	name[j] = form.elements[i].name;
				
				value[j] = document.CKKeyPro.GetEncData(enc_xgate,form.name,form.elements[i].name);
				j++;
				
			}

			else if(enable && form.elements[i].type == "password")
			// DefaultEnc="On". ¸ðµç password field¿¡ ´ëÇÏ¿© E2E Àû¿ë	
			{
				if(form.elements[i].enc=="off" || form.elements[i].value == null || form.elements[i].value == "")
				{
					name[j] = form.elements[i].name;
					value[j] = form.elements[i].value;
				}
				else
				{
					//if(!is9x)
						name[j] = "xk"+form.elements[i].name;
					//else
					//	name[j] =  form.elements[i].name;
				
					value[j] = document.CKKeyPro.GetEncData(enc_xgate,form.name,form.elements[i].name);
				}
				j++;
			}
			else if(enable && form.elements[i].type == "hidden"	&& form.elements[i].hidden_enc == "on")
			{
				name[j] = "xk" + form.elements[i].name;
				value[j] = form.elements[i].value;
				j++;
			}
			else
			{
				name[j] = form.elements[i].name;
				if (form.elements[i].type == "select-one")
				{
					var ind = form.elements[i].selectedIndex;
					var op_len = form.elements[i].length;
					if (op_len > 0)
					{
						if(ind > 0)
						{
							if (form.elements[i].options[ind].value != '') value[j] = form.elements[i].options[ind].value;
							// else value[j] = form.elements[i].options[ind].text;
							else value[j] = "";
						}
						else
						{
							if(ind == 0)
							{
								if (form.elements[i].options[ind].value != '') value[j] = form.elements[i].options[ind].value;
								//else value[j] = form.elements[i].options[ind].text;
								else value[j] = "";
							}
						}
						// form.elements[i].selectedIndex = 0;
					}
				}
				else if (form.elements[i].type == "select-multiple")
				{
					var llen = form.elements[i].length;
					var increased = 0;
					for( k = 0; k < llen; k++)
					{
						if (form.elements[i].options[k].selected)
						{
							name[j] = form.elements[i].name;
							if (form.elements[i].options[k].value != '') value[j] = form.elements[i].options[k].value;
							//else value[j] = form.elements[i].options[k].text;
							else value[j] = "";
							j++;
							increased++;
						}
					}
					if(increased > 0)
					{
						j--;
					}
					else
					{
						value[j] = "";
					}
				}
				else
				{
					value[j] = form.elements[i].value;
				}
				j++;
			}
		}
	}
	for (i = 0; i < j; i++) {
		str = value[i];
		value[i] = round_escape(str); 
	}
	for (i = 0; i < j; i++) {
		if (flag)
			plain_text += "&";
		else
			flag = true;
		plain_text += name[i] ;
		plain_text += "=";
		plain_text += value[i];
	}
	return plain_text;
	
}




/*************For Applet**********************/
function BlockEnc(auth_type,plain_text)
{
	var cipher = "";

	if( IsNetscape60() )		// Netscape 6.0
		cipher =  XecureUnescape(document.XecureWeb.nsIXecurePluginInstance.BlockEnc(xgate_addr,auth_type,plain_text,"GET"));
	else
		cipher =  XecureUnescape(document.XecureWeb.BlockEnc(xgate_addr,auth_type,plain_text,"GET"));
		
	if( cipher == null || cipher == "" )	return XecureWebError() ;
	
	return cipher;
}

function BlockDec(cipher)
{
	var plain = "";

	if( IsNetscape60() )		// Netscape 6.0
		plain = XecureUnescape(document.XecureWeb.nsIXecurePluginInstance.BlockDec( xgate_addr, cipher));
	else {
		plain = XecureUnescape(document.XecureWeb.BlockDec( xgate_addr, cipher));
	}

	if( plain == "" ) XecureWebError() ;
		
	return plain;
}

function BlockXMLDec(cipher)
{
	var path = "";

	if( IsNetscape60() )		// Netscape 6.0
		path = XecureUnescape(document.XecureWeb.nsIXecurePluginInstance.BlockXMLDec( xgate_addr, cipher));	
	else
		path = XecureUnescape(document.XecureWeb.BlockXMLDec( xgate_addr, cipher));
	
	if( path == "" ) 	XecureWebError() ;
	
	return path;
}

//function XecureLogIn( link )
//{
//	EndSession();
//	return XecureLink(link);
//}

/*
 * XecureLogIn(url, target, option)
 * option : 1 - USB default, Å¸ ÀúÀå¸ÅÃ¼ »ç¿ëÇÒ ¼ö ¾øÀ½
 *          2 - USB default, Å¸ ÀúÀå¸ÅÃ¼ »ç¿ëÇÒ ¼ö ÀÖÀ½
 *          3 - HardDisk default, Å¸ ÀúÀå¸ÅÃ¼ »ç¿ëÇÒ ¼ö ÀÖÀ½
 *
 * certType : 1 - ¸ðµç ¹ýÀÎ ÀÎÁõ¼­ ¼ö¿ë
 *            2 - ±ÝÀ¶°áÁ¦¿ø ¹ýÀÎ ÀÎÁõ¼­¸¸ ¼ö¿ë
 *            3 - °³ÀÎÀÎÁõ¼­¸¸ ¼ö¿ë
 */
 
function XecureLogIn( url, target, option, certType )
{
  
	EndSession();
	PutBannerUrl();
	PutUBIKey();

	var qs ;
	var path = "/";
	var sid;
	var xecure_url;

	document.XecureWeb.SecKeyStroke = "XW_SKS_JRSOFT_DRIVER";
	// get path info & query string & hash from url
	qs_begin_index = url.indexOf('?');
	path = getPath(url)

	// get query string action url
	if ( qs_begin_index < 0 ) {
		qs = "";
	}
	else {
		qs = url.substring(qs_begin_index + 1, url.length );
	}
	if( gIsContinue == 0 ) {
		sid = document.XecureWeb.BlockEncEx ( xgate_addr, "/on", "", "GET", accept_cert );
		gIsContinue == 0;
	}else {
		alert(busy_info);
		return false;
	}
	if( sid == null || sid == "" )	return XecureWebError() ;
	
	xecure_url = path + "?q=" + sid + XecureAddQuery(qs);

	open ( xecure_url, target );
}

function XecureLogInCert( link ) 
{
	EndSession();
	return XecureLinkCert(link);
}

function XecureLogInCert_dti( link ) 
{
	EndSession();
	return XecureLinkCert_dti(link);
}

function EndSession()
{
	if( IsNetscape60() )		// Netscape 6.0
		document.XecureWeb.nsIXecurePluginInstance.EndSession( xgate_addr );
	else
		document.XecureWeb.EndSession(xgate_addr);
}

// XecureWeb ver 4.1 add
// option : 0 : no confirm window, all certificates
// option : 1 : confirm window, all certificates
// option : 2 : no confirm window, log-on certificate only
// option : 3 : confirm window, log-on certificate only

function Sign_with_option( option, plain )
{
	var signed_msg;
	
	PutUBIKey();

	document.XecureWeb.SecKeyStroke = "XW_SKS_JRSOFT_DRIVER";
	if( IsNetscape60() )	// Netscape 6.0
		signed_msg = document.XecureWeb.nsIXecurePluginInstance.SignDataCMS( xgate_addr,
							escape(accept_cert), 
							escape(plain), 
							option, 
							escape(sign_desc),
							pwd_fail);
	else
		signed_msg = document.XecureWeb.SignDataCMS(
							xgate_addr,
							XecureEscape(accept_cert), 
							XecureEscape(plain), 
							option, 
							XecureEscape(sign_desc),
							pwd_fail);

    if( signed_msg == "" )	XecureWebError();

    return signed_msg;
}


function Sign_with_option_dti( option, plain )
{
	var signed_msg;
	
	PutUBIKey();

	document.XecureWeb.SecKeyStroke = "XW_SKS_JRSOFT_DRIVER";
	if( IsNetscape60() )	// Netscape 6.0
		signed_msg = document.XecureWeb.nsIXecurePluginInstance.SignDataCMS( xgate_addr,
							escape(accept_cert_dti), 
							escape(plain), 
							option, 
							escape(sign_desc),
							pwd_fail);
	else
		signed_msg = document.XecureWeb.SignDataCMS(
							xgate_addr,
							XecureEscape(accept_cert_dti), 
							XecureEscape(plain), 
							option, 
							XecureEscape(sign_desc),
							pwd_fail);

    if( signed_msg == "" )	XecureWebError();

    return signed_msg;
}
 
function Sign_Add( option, plain )
{
	var signed_msg;
	
	PutUBIKey();

	signed_msg = document.XecureWeb.SignDataAdd ( xgate_addr, accept_cert, plain, option, sign_desc, pwd_fail );

    if( signed_msg == "" )	XecureWebError() ;

    return signed_msg;
}

function Sign( plain )
{
	var signed_msg;
	
	PutUBIKey();

	document.XecureWeb.SecKeyStroke = "XW_SKS_JRSOFT_DRIVER";	
	if( IsNetscape60() )		// Netscape 6.0
	{
		signed_msg = document.XecureWeb.nsIXecurePluginInstance.SignDataCMS( xgate_addr, XecureEscape(accept_cert), XecureEscape(plain), show_plain, XecureEscape(sign_desc) );
	}
	else
	{
		signed_msg = document.XecureWeb.SignDataCMS( xgate_addr, XecureEscape(accept_cert), XecureEscape(plain), show_plain, XecureEscape(sign_desc) );
	}
	
	if( signed_msg == "" )	XecureWebError() ;
	
	return signed_msg;
}

function Sign_with_desc( plain, desc )
{
	var signed_msg;
	
	PutUBIKey();
	document.XecureWeb.SecKeyStroke = "XW_SKS_JRSOFT_DRIVER";
	if( IsNetscape60() )		// Netscape 6.0
		signed_msg = document.XecureWeb.nsIXecurePluginInstance.SignDataCMS( xgate_addr, XecureEscape(accept_cert), XecureEscape(plain), show_plain, XecureEscape(desc) );
	else
		signed_msg = document.XecureWeb.SignDataCSM( xgate_addr, XecureEscape(accept_cert), XecureEscape(plain), show_plain, XecureEscape(desc) );
		
	if( signed_msg == "" )	XecureWebError() ;
	
	return signed_msg;
}

// XecureWeb ver 4.1 add
// option : 0 : no confirm window, all certificates
// option : 1 : confirm window, all certificates
// option : 2 : no confirm window, log-on certificate only
// option : 3 : confirm window, log-on certificate only

// XecureWeb ver 5.0 add

function Sign_with_vid_user( option, plain, svrCert )
{
	 
	var signed_msg;  
	option = option + 4 +16;
	
	PutUBIKey();

	document.XecureWeb.SecKeyStroke = "XW_SKS_JRSOFT_DRIVER";	
	if(IsNetscape())
	{ 
		alert("Not supported function");
	}
	else {
		signed_msg = document.XecureWeb.SignDataWithVID ( xgate_addr, accept_cert, plain, svrCert, option, sign_desc, pwd_fail );
	}

    if( signed_msg == "" )	XecureWebError();

    return signed_msg;
}

function Sign_with_vid_web( option, plain, svrCert, idn )
{
	var ret;
	var signed_msg;

	option = option + 12;
	
	PutUBIKey();

	document.XecureWeb.SecKeyStroke = "XW_SKS_JRSOFT_DRIVER";	
	if(IsNetscape())
	{
		alert("Not supported function");
	}
	else {
		ret = Set_ID_Num(idn);
		if(ret != 0) {
			XecureWebError();
			return signed_msg;
		}
			
		signed_msg = document.XecureWeb.SignDataWithVID ( xgate_addr, accept_cert, plain, svrCert, option, sign_desc, pwd_fail );
	}

    if( signed_msg == "" )	XecureWebError();

    return signed_msg;
}

// only over XecureWeb Client v5.3.0.1
// [certLocation]
// 	0 : HARD
//	1 : REMOVABLE
//	2 : ICCARD
//	3 : CSP
//	4 : VSC
// [option]
//	0 : ¼­¸í¿ø¹® È®ÀÎÃ¢ ¾øÀ½
//	1 : ¼­¸í¿ø¹® È®ÀÎÃ¢ ¶ç¿ò
function Sign_with_vid_user_serial( certSerial, certLocation, option, plain, svrCert )
{
	var signed_msg;

	option = option + 4;
	
	PutUBIKey();

	document.XecureWeb.SecKeyStroke = "XW_SKS_JRSOFT_DRIVER";	
	if(IsNetscape())
	{
		alert("Not supported function");
	}
	else {
		signed_msg = document.XecureWeb.SignDataWithVID_Serial ( xgate_addr, accept_cert, certSerial, certLocation, plain, svrCert, option, sign_desc, pwd_fail );
	}

    if( signed_msg == "" )	XecureWebError();

    return signed_msg;
}

// only over XecureWeb Client v5.3.0.1
// [certLocation]
// 	0 : HARD
//	1 : REMOVABLE
//	2 : ICCARD
//	3 : CSP
//	4 : VSC
// [option]
//	0 : ¼­¸í¿ø¹® È®ÀÎÃ¢ ¾øÀ½
//	1 : ¼­¸í¿ø¹® È®ÀÎÃ¢ ¶ç¿ò
function Sign_with_vid_web_serial( certSerial, certLocation, option, plain, svrCert, idn )
{
	var ret;
	var signed_msg;

	option = option + 12;
	
	PutUBIKey();

	document.XecureWeb.SecKeyStroke = "XW_SKS_JRSOFT_DRIVER";	
	if(IsNetscape())
	{
		alert("Not supported function");
	}
	else {
		ret = Set_ID_Num(idn);
		if(ret != 0) {
			XecureWebError();
			return signed_msg;
		}
			
		signed_msg = document.XecureWeb.SignDataWithVID_Serial ( xgate_addr, accept_cert, certSerial, certLocation, plain, svrCert, option, sign_desc, pwd_fail );
	}

    if( signed_msg == "" )	XecureWebError();

    return signed_msg;
}

function Set_ID_Num(idn)
{
	var ret;
	
	if( IsNetscape() )
	{
		alert("Not supported function");
	}
	else
	{
		ret = document.XecureWeb.SetIDNum(idn);
	}
	
	return ret;
}

function send_vid_info()
{
	var	vid_info;
	
	if( IsNetscape() )
	{
		alert("Not supported function");
	}
	else
	{
		vid_info = document.XecureWeb.GetVidInfo();
	}
	
	if(vid_info.length == 0)
		return null;
	else
		return vid_info;
}

// only over XecureWeb Client v5.3.0.1
// [certLocation]
// 	0 : HARD
//	1 : REMOVABLE
//	2 : ICCARD
//	3 : CSP
//	4 : VSC
// [option]
//	0 : ¼­¸í¿ø¹® È®ÀÎÃ¢ ¾øÀ½
//	1 : ¼­¸í¿ø¹® È®ÀÎÃ¢ ¶ç¿ò
function Sign_with_serial( certSerial, certLocation, plain, option )
{
	var	signed_msg;
	
	PutUBIKey();

	document.XecureWeb.SecKeyStroke = "XW_SKS_JRSOFT_DRIVER";
	if( IsNetscape() )
	{
		alert("Not supported function");
	}
	else
	{
		signed_msg = document.XecureWeb.SignDataCMSWithSerial(  xgate_addr, 
									XecureEscape(accept_cert), 
									certSerial, 
									certLocation, 
									plain, 
									option, 
									XecureEscape(sign_desc),
									pwd_fail );
	}

	if( signed_msg == "" )	XecureWebError();

	return signed_msg;	
}

//
// only over XecureWeb Client v5.4.x
//
// !!! This function need site/executable license !!!
// 
// [option]
//      0 : only signature verification( NOT perform cert verification )
// 	1 : signature verification + default cert verification
//	2 : + cert chain check
//	3 : + CRL check
//	4 : + LDAP 
// [directoryServer]
//	ex) dirsys.rootca.or.kr:389 or ""
//
function Verify_SignedData( signedData, option, directoryServer )
{
	var	verified_msg;
	var	errCode;
	
	if( IsNetscape() )
	{
		alert("Not supported function");
		return "";
	}
	else
	{
		verified_msg = document.XecureWeb.VerifySignedData( signedData, option, directoryServer );
	}

	// VerifySignedData´Â ÀÎÁõ¼­ °ËÁõ½Ã ¿À·ù°¡ ¹ß»ýÇÏ´õ¶óµµ ¿ø¹® ÃßÃâÀÌ ¼º°øÇÏ¸é ¿ø¹®À» ¸®ÅÏÇÏ±â ¶§¹®¿¡
	// ¹Ýµå½Ã LastErrCode¸¦ È®ÀÎÇØ¾ß ÇÑ´Ù.
	errCode = document.XecureWeb.LastErrCode();
	if( errCode != 0 )
		XecureWebError();
	
	return verified_msg;	
}

//
// only over XecureWeb Client v5.4.x
//
// applicable cert location : usbtoken_kb, usbtoken_kiup
//
function Set_PinNumber( pin )
{
	var	ret = -1;
	
	if( IsNetscape() )
	{
		alert("Not supported function");
	}
	else
	{
		 ret = document.XecureWeb.SetPinNum( pin );
	}

	return ret;
}

// type 10 : YessignCA
// type 11 : XecureCA
function RequestCertificate ( type, ref_code, auth_code )
{
	var r;
	var ca_type;
	var ca_ip;
	var ca_port;

	document.XecureWeb.SecKeyStroke = "XW_SKS_JRSOFT_DRIVER";	
	if(type == 10) {
		ca_type = yessign_ca_type;
		ca_ip = yessign_ca_ip;
		ca_port = yessign_ca_port;
	}
	else if(type == 11) {
		ca_type = xecure_ca_type;
		ca_ip = xecure_ca_ip;
		ca_port = xecure_ca_port;
	}
	else if(type == 12) {
		ca_type = xecure_ca_type_1;
		ca_ip = xecure_ca_ip_1;
		ca_port = xecure_ca_port_1;
	}
	else {
		alert("Input type error!");
		return 0;
	}

	if(IsNetscape())
	{
		if( IsNetscape60() )	// Netscape 6.0
			r = document.XecureWeb.nsIXecurePluginInstance.RequestCertificate2 ( ca_port, ca_ip, ref_code, auth_code, ca_type );
		else
			r = document.XecureWeb.RequestCertificate2 ( ca_port, ca_ip, ref_code, auth_code, ca_type );
	}
	else 
	{
		r = document.XecureWeb.RequestCertificate ( ca_port, ca_ip, ref_code, auth_code, ca_type);
	}

	if ( r != 0 )	
		XecureWebError();
	
	return r;
}

// ÀÎÁõ¼­ ¹ß±Þ, USBkey ´Ù¿î , ·Î±×ÀÎ Ã¢
function setCertLocation(store_option) {

	var storage;
	document.XecureWeb.CertLocation= "";
	
	if (store_option == 1)
		storage = "USBTOKEN_KIUP,NO_SMARTON";          
	else if(store_option == 2) 
		storage = "USBTOKEN_KIUP,HARD,REMOVABLE,NO_SMARTON";
	else if(store_option == 3)
		storage = "hard,removable,csp,pkcs11,iccard,USBTOKEN_KIUP,MPHONE,NO_SMARTON";
	
	document.XecureWeb.CertLocation= storage;
}


// type 00 : YessignCA
// type 11 : XecureCA
function RenewCertificate ( type )
{

	var r;
	var ca_type;
	var ca_ip;
	var ca_port;

	document.XecureWeb.SecKeyStroke = "XW_SKS_JRSOFT_DRIVER";	
	if(type == 10) {
		ca_type = yessign_ca_type;
		ca_ip = yessign_ca_ip;
		ca_port = yessign_ca_port;
	}
	else if(type == 11) {
		ca_type = xecure_ca_type;
		ca_ip = xecure_ca_ip;
		ca_port = xecure_ca_port;
	}
	else if(type == 12) {
		ca_type = xecure_ca_type_1;
		ca_ip = xecure_ca_ip_1;
		ca_port = xecure_ca_port_1;
	}
	else {
		alert("Input type error!");
		return 0;
	}

	if(IsNetscape())
	{
		if( IsNetscape60() )	// Netscape 6.0
			r = document.XecureWeb.nsIXecurePluginInstance.RenewCertificate2( ca_port, ca_ip, ca_type, pwd_fail );
		else
			r = document.XecureWeb.RenewCertificate2( ca_port, ca_ip, ca_type, pwd_fail );
	}
	else{
		r = document.XecureWeb.RenewCertificate ( ca_port, ca_ip, ca_type, pwd_fail );
	}

	if ( r != 0 ) 	XecureWebError();
	
	return r;
}

// type 00 : YessignCA
// type 11 : XecureCA
function RevokeCertificate ( type, jobcode, reason )
{
	var r;
	var ca_type;
	var ca_ip;
	var ca_port;
	
	if(type == 10) {
		ca_type = yessign_ca_type;
		ca_ip = yessign_ca_ip;
		ca_port = yessign_ca_port;
	}
	else if(type == 11) {
		ca_type = xecure_ca_type;
		ca_ip = xecure_ca_ip;
		ca_port = xecure_ca_port;
	}
	else if(type == 12) {
		ca_type = xecure_ca_type_1;
		ca_ip = xecure_ca_ip_1;
		ca_port = xecure_ca_port_1;
	}
	else {
		alert("Input type error!");
		return 0;
	}
	
	if(IsNetscape())
	{
		if( IsNetscape60() )	// Netscape 6.0
			r = document.XecureWeb.nsIXecurePluginInstance.RevokeCertificate2( ca_port, ca_ip, jobcode, reason, ca_type, pwd_fail );
		else
			r = document.XecureWeb.RevokeCertificate2( ca_port, ca_ip, jobcode, reason, ca_type,  pwd_fail);
	}
	else {
		r = document.XecureWeb.RevokeCertificate ( ca_port, ca_ip, jobcode, reason, ca_type, pwd_fail );
	}

        if ( r != 0 ) 	XecureWebError();

	return r;
}

//OTP »ç¿ëÀÚµéÀ» À§ÇØ (ÀÎÁõ¼­¹ß±Þ Áß ÀÎÁõ¼­ ÀúÀå - default HARD)
function RequestCertificate2 ( type, ref_code, auth_code )
{
	var r;
	var ca_type;
	var ca_ip;
	var ca_port;

	document.XecureWeb.SecKeyStroke = "XW_SKS_JRSOFT_DRIVER";	
	if(type == 10) {
		ca_type = yessign_ca_type;
		ca_ip = yessign_ca_ip;
		ca_port = yessign_ca_port;
	}
	else if(type == 11) {
		ca_type = xecure_ca_type;
		ca_ip = xecure_ca_ip;
		ca_port = xecure_ca_port;
	}
	else if(type == 12) {
		ca_type = xecure_ca_type_1;
		ca_ip = xecure_ca_ip_1;
		ca_port = xecure_ca_port_1;
	}
	else {
		alert("Input type error!");
		return 0;
	}
	
	if(IsNetscape())
	{
		if( IsNetscape60() )	// Netscape 6.0
			r = document.XecureWeb.nsIXecurePluginInstance.RequestCertificate2 ( ca_port, ca_ip, ref_code, auth_code, ca_type );
		else
			r = document.XecureWeb.RequestCertificate2 ( ca_port, ca_ip, ref_code, auth_code, ca_type );
	}
	else  
	{
		r = document.XecureWeb.RequestCertificate ( ca_port, ca_ip, ref_code, auth_code, ca_type);
	}

	if ( r != 0 )	XecureWebError();
	
	return r;
}

function GenCertReq ( )
{
	if( IsNetscape60() )		// Netscape 6.0
		cert_req = document.XecureWeb.nsIXecurePluginInstance.GenerateCertReq( 1024 );
	else
		cert_req = document.XecureWeb.GenerateCertReq( 1024 );

	if ( cert_req == "" )	XecureWebError() ;
	
	return cert_req;
}

function InstallCertificate (cert_type, cert)
{
	if( IsNetscape60() )		// Netscape 6.0
		document.XecureWeb.nsIXecurePluginInstance.InstallCertificate(cert_type, cert );
	else
		document.XecureWeb.InstallCertificate(cert_type, cert );
}

function ShowCertManager()
{
	if( IsNetscape60() )		// Netscape 6.0
		document.XecureWeb.nsIXecurePluginInstance.ShowCertManager();
	else
		document.XecureWeb.ShowCertManager();
}

function DeleteCertificate( dn )
{       
	var r; 
	
	if( IsNetscape60() )		// Netscape 6.0
		r = document.XecureWeb.nsIXecurePluginInstance.DeleteCertificate( XecureEscape(dn) );
	else
		r = document.XecureWeb.DeleteCertificate ( XecureEscape(dn) );

	if( r != 0 )	XecureWebError() ;
	else 		alert('ÀÎÁõ¼­¸¦ »èÁ¦ÇÏ¿´½À´Ï´Ù.');
}

function PutBannerUrl()
{
  // ·Î±×ÀÎ Ã¢¿¡ º¸ÀÏ ÀÌ¹ÌÁö¸¦ ´Ù¿î·Îµå ¹ÞÀ» URL
  var bannerUrl =  "http://" + window.location.host + "/ibs/img/kiup_bg.bmp";
  var bannerUrlSigned = "http://" + window.location.host + "/ibs/img/kiup_bg.bmp.sig";
  var version = document.XecureWeb.GetVerInfo(1);

  if(HaveControl_web()) {
        if( IsNetscape60() )            // Netscape 6.0
        {
                document.XecureWeb.nsIXecurePluginInstance.PutBigBannerUrl( xgate_addr, bannerUrl);
        }
        else if( version.indexOf('7, 2,') >= 0 ||  version.indexOf('7,2,') >=0 )
        // OS °¡ ºñ½ºÅ¸ ÀÏ¶§¸¸ ¼­¸íµÈ ¹è³Ê »ç¿ë.
        {
                document.XecureWeb.PutBigBannerUrl( xgate_addr, bannerUrlSigned);
      }
      else
        {
                document.XecureWeb.PutBigBannerUrl( xgate_addr, bannerUrl);
        }
        } else {
        XecInsError();
  }
}

function PutCACert()
{
	var r ;
	
	if( IsNetscape60() )		// Netscape 6.0
		r = document.XecureWeb.nsIXecurePluginInstance.PutCACert( XecureEscape(pCaCertName), pCaCertUrl);
	else
		r = document.XecureWeb.PutCACert( XecureEscape(pCaCertName), pCaCertUrl);

	if( r != 0 )	XecureWebError() ;
}

function isNewPlugin(desc)
{
	index = desc.indexOf('v.', 0);
	if (index < 0)
		return false;
	desc += ' ';

	versionString = desc.substring(index +2, desc.length);
	arrayOfStrings = versionString.split('.');
	thisMajor = parseInt(arrayOfStrings[0], 10);
	thisMinor = parseInt(arrayOfStrings[1], 10);
	thisBuild = parseInt(arrayOfStrings[2], 10);
	
	if (thisMajor > versionMaj)	return true;
	if (thisMajor < versionMaj)	return false;
	
	if (thisMinor > versionMin)	return true;
	if (thisMinor < versionMin)	return false;
	
	if (thisBuild > versionRel)	return true;
	if (thisBuild < versionRel)	return false;

	return true;
}

function downloadNow () {
	if ( navigator.javaEnabled() ) {
		trigger = netscape.softupdate.Trigger;
		if ( trigger.UpdateEnabled() ) {
			if (navigator.platform == "Win32") {
				trigger.StartSoftwareUpdate( packageURL, trigger.DEFAULT_MODE);
			}
			else alert('ÀÌ ÇÃ·¯±× ÀÎÀº À©µµ¿ìÁî 95/98/NT È¯°æ¿¡¼­¸¸ ÀÛµ¿ÇÕ´Ï´Ù.')
		}
		else
			alert('³Ý½ºÄÉÀÔÀÇ SmartUpdate ¼³Ä¡¸¦ °¡´ÉÇÏµµ·Ï ÇØ¾ßÇÕ´Ï´Ù.');
	}
	else
		alert('Java ½ÇÇàÀ» °¡´ÉÇÏµµ·Ï ÇØ¾ßÇÕ´Ï´Ù.');
}

function isOldPlugin(desc,version)	// by Zhang
{
	index = desc.indexOf('v.', 0);
	if (index < 0)	return true;
	
	desc += ' ';
	versionString = desc.substring(index +2, desc.length);
	arrayOfStrings = versionString.split('.');
	thisMaj = parseInt(arrayOfStrings[0], 10);
	thisMin = parseInt(arrayOfStrings[1], 10);
	thisRel = parseInt(arrayOfStrings[2], 10);
	
	arrayOfStrings = version.split('.');
//	verMaj = parseInt(arrayOfStrings[0], 10);
//	verMin = parseInt(arrayOfStrings[1], 10);
//	verRel = parseInt(arrayOfStrings[2], 10);
	s_verMaj = parseInt(arrayOfStrings[0], 10);
	s_verMin = parseInt(arrayOfStrings[1], 10);
	s_verRel = parseInt(arrayOfStrings[2], 10);
	
	if (thisMaj > s_verMaj)	return false;
	if (thisMaj < s_verMaj)	return true;
	
	if (thisMin > s_verMin)	return false;
	if (thisMin < s_verMin)	return true;
	
	if (thisRel > s_verRel)	return false;
	if (thisRel < s_verRel)	return true;

	return false;
}

function DownloadPackage(packageURL) // by Zhang
{
	if ( navigator.javaEnabled() ) {
		trigger = netscape.softupdate.Trigger;
		if ( trigger.UpdateEnabled() ) {
			if (navigator.platform == "Win32") {
				trigger.StartSoftwareUpdate( packageURL, trigger.DEFAULT_MODE);
			}
			else
				alert('ÀÌ ÇÃ·¯±× ÀÎÀº À©µµ¿ìÁî 95/98/NT È¯°æ¿¡¼­¸¸ ÀÛµ¿ÇÕ´Ï´Ù.');
		}
		else
			alert('³Ý½ºÄÉÀÔÀÇ SmartUpdate ¼³Ä¡¸¦ °¡´ÉÇÏµµ·Ï ÇØ¾ßÇÕ´Ï´Ù.');
	}
	else
		alert('Java ½ÇÇàÀ» °¡´ÉÇÏµµ·Ï ÇØ¾ßÇÕ´Ï´Ù.');
}

function XecureWebPlugin(version)	// by Zhang
{	
	if (navigator.appName == 'Netscape' && UserAgent() == "Mozilla/4") 
	{
  		var XecureMime = navigator.mimeTypes["application/x-SoftForum-XecSSL40"];
		if (XecureMime) {   // Xecure PlugIn ÀÌ ÀÌ¹Ì ¼³Ä¡µÇ¾î ÀÖ´Â °æ¿ì
			if ( isOldPlugin(XecureMime.enabledPlugin.description,version))
				DownloadPackage(packageURL);
		}
		else {     // Xecure PlugIn ÀÌ ¼³Ä¡µÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì
			DownloadPackage(packageURL);
		}
	}
}

function PrintObjectTag()
{	
	if( IsNetscape60() )	
		alert("Netscape 6.0Àº Áö¿øÇÏÁö ¾Ê½À´Ï´Ù") ;
	else
	{		
		if(navigator.appName == 'Netscape')
		{
			document.write("<EMBED type='application/x-SoftForum-XecSSL40' hidden=true name='XecureWeb'></EMBED><NOEMBED>No XecureWeb PlugIn</NOEMBED>");
		}
		else
		{
			var locale= 'KO'
			try{
				locale = calendarLocale;
			}catch(e){}
			var param_lang = 'korean';
			if(locale == 'EN')
				param_lang = 'english';

			var Agent = navigator.userAgent;
			Agent = Agent.toLowerCase();
			if( GetInternetExplorerVersion() >= 8.0 ) {
				document.write('<OBJECT ID="XecureWeb" CLASSID="CLSID:7E9FDB80-5316-11D4-B02C-00C04F0CD404" CODEBASE="http://download.softforum.com/Published/XecureWeb/v7.2.4.1/xw_install.cab#Version=' + Xecure_VER + '"  width=0 height=0  onError="XlsError(1)"><PARAM NAME="SECKEY" VALUE="XW_SKS_JRSOFT_DRIVER"><param name="lang" value="' + param_lang + '"><param name="storage" value="hard,removable,iccard,csp,pkcs11,usbtoken,mphone"></OBJECT>');
			} else {
				document.write('<OBJECT ID="XecureWeb" CLASSID="CLSID:7E9FDB80-5316-11D4-B02C-00C04F0CD404" CODEBASE="http://download.softforum.com/Published/XecureWeb/v7.2.4.1/xw_install.cab#Version=' + Xecure_VER + '" width=0 height=0  onError="XlsError(1)"><PARAM NAME="SECKEY" VALUE="XW_SKS_JRSOFT_DRIVER"><param name="lang" value="' + param_lang + '"><param name="storage" value="hard,removable,iccard,csp,pkcs11,usbtoken,mphone"></OBJECT>');
			}
			
			PutUBIKey();
		}
	}
}

function get_sid() 
{
	var sid = document.XecureWeb.BlockEnc ( xgate_addr, "", "", "GET" );
        
	if( sid == null || sid == "") 	return XecureWebError() ;
        
	return sid;
}

// applet¿¡¼­ servletÀ¸·Î º¸³¾ °ªÀ» ¾ÏÈ£È­ ÇÏ´Â function
function enc(str) {
	var state='';
	var plain='';
	var escaped_state='';
	plain=String(str);

	if (navigator.appName == 'Netscape')
		state=XecureWeb.BlockEnc(xgate_addr, path, escape(plain), "POST");
	else
   		state=XecureWeb.BlockEnc(xgate_addr, path, plain, "POST");
   	//escaped_state=escape_url(state);
   	escaped_state=escape_url_applet(state);
//   	alert("POST:" + escaped_state);
	return escaped_state;
}

// servlet¿¡¼­ appletÀ¸·Î º¸³»ÁØ °ªÀ» º¹È£È­ ÇÏ´Â function
function dec(str) {
	var result=BlockDec(str);
	return result;
}

// XecureNavigate ÇÔ¼öÀÇ async È£Ãâ ½Ã Å° º¯°æÀ» ¸·´Â ÇÔ¼ö 2009-03-13
function XecureNavigate2iframe( url, target, feature, sid) 
{
	var qs ;
	var path = "/";
	var cipher;
	var xecure_url;
	var location_url;	// ÇöÀçÆäÀÌÁö url
	if(location.href.indexOf('?') > -1){
		location_url = location.href.substring(0, location.href.indexOf('?'));
	}else{
		location_url = location.href.substring(0, location.href.indexOf('.jsp'));
	}
	// get path info & query string & hash from url
	qs_begin_index = url.indexOf('?');
	path = getPath(url)
	// get query string action url
	if ( qs_begin_index < 0 ) {
		qs = "?SNCT_REQUEST_PAGE=" + location_url;	// ÇöÀçÆäÀÌÁö urlÀ» ´ÙÀ½ÆäÀÌÁö·Î ³Ñ±â±âÀ§ÇØ. °áÀç½ÇÇà ¿Ï·áÈ­¸é ¸Þ´ºÇ¥½Ã¿ë.(À¥ÄÉ½Ã ÀÌÀçÈ£)
	}
	else {
		qs = url.substring(qs_begin_index + 1, url.length );
		qs += "&SNCT_REQUEST_PAGE=" + location_url;	// ÇöÀçÆäÀÌÁö urlÀ» ´ÙÀ½ÆäÀÌÁö·Î ³Ñ±â±âÀ§ÇØ. °áÀç½ÇÇà ¿Ï·áÈ­¸é ¸Þ´ºÇ¥½Ã¿ë.(À¥ÄÉ½Ã ÀÌÀçÈ£)
	}
	if( gIsContinue == 0 ) {
		gIsContinue = 1;
		if( IsNetscape60() )		// Netscape 6.0
			cipher = document.XecureWeb.nsIXecurePluginInstance.BlockEnc(xgate_addr, path, XecureEscape(qs), "POST");
		else{
			cipher = document.XecureWeb.BlockEnc(xgate_addr, path, XecureEscape(qs),"POST");}
		gIsContinue = 0;
	}
	else {
		alert(busy_info);
		return false;
	}
			
	if( cipher == "" )	return XecureWebError();
	xecure_url = path + "?q=" + sid + ";" + escape_url(cipher);

	if (feature=="" || feature==null) open ( xecure_url, target );
	else open(xecure_url, target, feature );
	
}




function getPath(url)
{
	var path = "/";
	// get path info & query string & hash from url
	qs_begin_index = url.indexOf('?');
	// if action is relative url, get base url from window location
	if ( url.charAt(0) != '/' && url.substring(0,7) != "http://" ) {
		path_end = window.location.href.indexOf('?');
		if(path_end < 0)	path_end_str = window.location.href;
		else				path_end_str = window.location.href.substring(0,path_end); 
		path_relative_base_end = path_end_str.lastIndexOf('/');
		path_relative_base_str = path_end_str.substring(0,path_relative_base_end+1);
		path_begin_index = path_relative_base_str.substring (7,path_relative_base_str.length).indexOf('/');
		if (qs_begin_index < 0){
			path = path_relative_base_str.substring( 7+path_begin_index,path_relative_base_str.length ) + url;
		}
		else {
			path = path_relative_base_str.substring( 7+path_begin_index,path_relative_base_str.length )
				 + url.substring(0, qs_begin_index );
		}
	}
	else if ( url.substring(0,7) == "http://" ) {
		path_begin_index = url.substring (7, url.length).indexOf('/');
		if (qs_begin_index < 0){
			path = url.substring( path_begin_index + 7, url.length);
		}
		else {
			path = url.substring(path_begin_index + 7, qs_begin_index );
		}
	}
	else if (qs_begin_index < 0){
		path = url;
	}
	else {
		path = url.substring(0, qs_begin_index );
	}
	return path;
}

// option bit : _4_ _3_ _2_ _1_
//                       |   |
//                       |   --- 0 : ¸ðµç ÀÎÁõ¼­ ¸®½ºÆ®¾÷, 1 : ·Î±×ÀÎÇÑ ÀÎÁõ¼­ »ç¿ë
//                       ------- 0 : »ç¿ëÀÚ¿¡°Ô idn ÀÔ·Â ¿ä±¸, 1 : idn¿¡ "NULL" setting, ¼­¹ö¿¡¼­ idn ¼³Á¤
function VerifyVirtualID(Idn, TimeStamp, ServerCertPem)
{
	var msg;
	
	var option = 0;
	
	option = 0;   // ¸ðµç ÀÎÁõ¼­ ¸®½ºÆ®¾÷, »ç¿ëÀÚ¿¡°Ô idn ÀÔ·Â ¿ä±¸
//	option = 1;   // ·Î±×ÀÎÇÑ ÀÎÁõ¼­ »ç¿ë, »ç¿ëÀÚ¿¡°Ô idn ÀÔ·Â ¿ä±¸
// only over XecureWeb Client v5.3.0.1
//	option = 2;   // ¸ðµç ÀÎÁõ¼­ ¸®½ºÆ®¾÷, idn¿¡ "NULL" ¼³Á¤
//	option = 3;   // ·Î±×ÀÎÇÑ ÀÎÁõ¼­ »ç¿ë, idn¿¡ "NULL" ¼³Á¤
	
	if( IsNetscape() )
	{
		msg = document.XecureWeb.VerifyAndGetVID(xgate_addr, ServerCertPem, TimeStamp, escape(accept_cert), option, escape(Idn));
	}
	else 
	{
		msg = document.XecureWeb.VerifyAndGetVID(xgate_addr, ServerCertPem, TimeStamp, accept_cert, option, Idn);
	}
	
	return msg;

}

// nOption is 0 : (default value) File version, which is checked by 'Internet Explorer'
//            1 : Product version
//            2 : File Description
function GetVersion(nOption)
{
	var ver;
	
	if( IsNetscape() )
	{
		alert("Not supported function");
		ver = "";
	}
	else
	{
		ver = document.XecureWeb.GetVerInfo(nOption);
		if( ver == "" )
			alert("No version information");
	}
	
	return ver;
}

// only over XecureWeb Client v5.3.0.1
function UpdateModules( infoURL )
{
	var	ret;
	
	if( IsNetscape() )
	{
		alert("Not supported function");
		ret = 0;
	}
	else
	{
		// success : 0, cancel : 1, file(s) holded : 2, already updated : 3, invalid user : 4, need not : 5
		// error : -1
		ret = document.XecureWeb.UpdateModules( infoURL );
		
		PutUBIKey();
	}
		
	return	ret;
}

// only over XecureWeb Client v5.3.0.1
function SetUpdateInfo( section, key, value1 )
{
	var	ret;
	
	if( IsNetscape() )
	{
		alert( "Not supported function" );
		ret = 0;
	}
	else
	{
		ret = document.XecureWeb.SetUpdateInfoString( section, key, value1 );
	}
	
	return ret;			
}

// inserted by knlee 2003/06/10
function SetProviderList()
{
	var	ret;
	
	//var	provName = "TrustedNet Connect 2 Smart Card CSP;Microsoft Base Cryptographic Provider v1.0;Microsoft Enhanced Cryptographic Provider v1.0";
	var	provName = "TrustedNet Connect 2 Smart Card CSP;Keycorp CSP";
	
	if( IsNetscape() )
	{
		alert("Not supported function");
		return -1;
	}
	else
	{
		ret = document.XecureWeb.SetProvider(provName);
		if( ret != 0 )
			alert("Set Provider name is Fail!");
	}
	
	return ret;
}

// applet¿¡¼­ servletÀ¸·Î º¸³¾ °ªÀ» ¾ÏÈ£È­ ÇÏ´Â function
function enc(str) {
	var state='';
	var plain='';
	var escaped_state='';
//	plain=String(str);

	if (navigator.appName == 'Netscape')
		state=XecureWeb.BlockEnc(xgate_addr, "/off", escape(str), "POST");
	else
   		state=XecureWeb.BlockEnc(xgate_addr, "/off", str, "POST");
   	//escaped_state=escape_url(state);
//   	escaped_state=escape_url_applet(state);
	//alert("enc end");
	return state;
}

// servlet¿¡¼­ appletÀ¸·Î º¸³»ÁØ °ªÀ» º¹È£È­ ÇÏ´Â function
function dec(str) {
	var result=BlockDec(str);
	return result;
}



function quick_escape1(str) {
	var cut, len ,i, pos, j, k, out = "", out1 = "", out2 = "";
	len = str.length;
	if (len > 160) {
		cut		= Math.round(len/2);
		out1	= quick_escape1(str.substring(0, cut));
		out2	= quick_escape1(str.substring(cut));
		out		= out1 + out2;
	} else {
		pos = 0;j = -2;k = -2;
		while (pos > -1 && pos < len) {
			if(j == -2)
				j = str.indexOf('?', pos);
			if(k == -2)		
				k = str.indexOf('%', pos);
			if(j < 0 && k < 0) {
				out += str.substring(pos);
				break;
			}
			
			if ((j < k && j > -1) || (j > -1 && k < 0)) {
				out += str.substring(pos, j);
				out += '%3F';
				pos = j + 1;
				j = -2;
			} else if ((j > k && k > -1) || (k > -1 && j < 0)) {
				out += str.substring(pos, k);
				out += '%25';
				pos = k + 1;
				k = -2;
			} else {
				out += str.substring(pos);
				pos = -1;
			}
		}
	}
	return out;
}

function quick_escape2(str) {
	var cut, len ,i, pos, j, k, out = "", out1 = "", out2 = "";
	len = str.length;
	if (len > 160) {
		cut		= Math.round(len/2);
		out1	= quick_escape2(str.substring(0, cut));
		out2	= quick_escape2(str.substring(cut));
		out		= out1 + out2;
	} else {
		pos = 0;j = -2;k = -2;
		while (pos > -1 && pos < len) {
			if(j == -2)
				j = str.indexOf('+', pos);
			if(k == -2)		
				k = str.indexOf('=', pos);
			if(j < 0 && k < 0) {
				out += str.substring(pos);
				break;
			}
			
			if ((j < k && j > -1) || (j > -1 && k < 0)) {
				out += str.substring(pos, j);
				out += '%2B';
				pos = j + 1;
				j = -2;
			} else if ((j > k && k > -1) || (k > -1 && j < 0)) {
				out += str.substring(pos, k);
				out += '%3D';
				pos = k + 1;
				k = -2;
			} else {
				out += str.substring(pos);
				pos = -1;
			}
		}
	}
	return out;
}


function quick_escape3(str) {
	var cut, len ,i, pos, j, k, out = "", out1 = "", out2 = "";
	len = str.length;
	if (len > 160) {
		cut		= Math.round(len/2);
		out1	= quick_escape3(str.substring(0, cut));
		out2	= quick_escape3(str.substring(cut));
		out		= out1 + out2;
	} else {
		pos = 0;j = -2;k = -2;
		while (pos > -1 && pos < len) {
			if(j == -2)
				j = str.indexOf('&', pos);
			if(k == -2)		
				k = str.indexOf(' ', pos);
			if(j < 0 && k < 0) {
				out += str.substring(pos);
				break;
			}
			
			if ( (j < k && j > -1) || (j > -1 && k < 0) ) {
				out += str.substring(pos, j);
				out += '%26';
				pos = j + 1;
				j = -2;
			} else if ( (j > k && k > -1) || (k > -1 && j < 0) ) {
				out += str.substring(pos, k);
				out += '%20';
				pos = k + 1;
				k = -2;
			} else {
				out += str.substring(pos);
				pos = -1;
			}
		}
	}
	return out;
}

function round_escape(in_str) {
        var cut, len , out = "", out1 = "", out2 = "";

        if(in_str == null || in_str == "") str = "";
        else str = String(in_str);

        len = str.length;

        if ( len > 160 ) {
                cut     = Math.round(len/2);
                out1 = quick_escape3(quick_escape2(quick_escape1(str.substring(0, cut))));
                out2 = quick_escape3(quick_escape2(quick_escape1(str.substring(cut))));
                out = out1 + out2;
        } else {
                out = quick_escape3(quick_escape2(quick_escape1(str)));
        }
        return out;
}




function escape_url_applet(in_str)
{
	var len, leftlen, cut;
	var out = "", out1 = "", out2 = "";
	
	len = in_str.length;
	
	if(len > 160) {
		leftlen = len/2;
		cut = Math.round(leftlen);
		out1 = quick_escape3(quick_escape2(quick_escape1(in_str.substring(0, cut))));
		out2 = quick_escape3(quick_escape2(quick_escape1(in_str.substring(cut))));
		out = out1 + out2;
	}else {
		out = quick_escape3(quick_escape2(quick_escape1(in_str)));
		//out = quick_escape(in_str);
	}
	return out;
}


function Sign_with_option_with_htmlEx( option, html_templ, plain, svrCert)
{
	var signed_msg;
	var agent;
	agent = UserAgent();
	
	PutUBIKey();

	document.XecureWeb.SecKeyStroke = "XW_SKS_JRSOFT_DRIVER";	
	if( IsNetscape60() )          // Netscape 6.0
	{
		alert("Áö¿øµÇÁö ¾Ê´Â ±â´ÉÀÔ´Ï´Ù.");
	}else{		
		signed_msg = document.XecureWeb.SignDataCMSWithHTMLEx(xgate_addr,XecureEscape(accept_cert),XecureEscape(html_templ),XecureEscape(plain),svrCert,option,XecureEscape(sign_desc),pwd_fail);
	}
	
	if( signed_msg == "" ) 
	{
		XecureWebError();
	}
 
	return signed_msg;             
}


function Multi_Sign_Init() {

    var multiSignId;
    
    PutUBIKey();

    multiSignId = document.XecureWeb.MultiSignInit();  //MultiSignInit()È£Ãâ

    if( multiSignId < 0 )
            return XecureWebError();
            
    return multiSignId;
}


function Set_Multi_Sign_Data(multiSignId, plain){
    var     originalDataTotalSize = 0;
    
    PutUBIKey();

    if(multiSignId != "")
    {
        originalDataTotalSize = document.XecureWeb.SetMultiSignData(multiSignId, plain);

//        if( originalDataTotalSize < 0 )
//             return XecureWebError();
    }
    else
    {
    alert("MultiSignInit¸¦ ¸ÕÀú ÇØÁÖ½Ê½Ã¿À");
    }

    return originalDataTotalSize;
}

function Multi_Sign(multiSignId, option){
    var result = 0;
    
    PutUBIKey();

    if(multiSignId != "")
    {
	//MultiSignEx(int nMultiSignId, BSTR xaddr, BSTR ca_list, BSTR desc, int option, int nLimitPwd, int *ret)
	//alert(accept_cert); 
        result = document.XecureWeb.MultiSignEx(multiSignId, xgate_addr, accept_cert, sign_desc, option, 2);
//        if( result < 0 )
//            return XecureWebError();
    }
    else
    {
        alert("MultiSignInit¸¦ ¸ÕÀú ÇØÁÖ½Ê½Ã¿À");
    }
    return result;
}

function Get_Multi_Signed_Data(multiSignId, index){
    var signedData = "";

    if(multiSignId != "")
    {
        signedData = document.XecureWeb.GetMultiSignedData(multiSignId, index);
//        if( signedData == "" )
//         return XecureWebError();
   }
    else
    {
        alert("MultiSignInit¸¦ ¸ÕÀú ÇØÁÖ½Ê½Ã¿À");
    }
    return signedData;
}



function MultiSign(total,sign_msg,delimeter, option){
	
    var signed_msg = "";
    var multiSign_id = "";
    var tmp = sign_msg;
    var index= "";
    var length = "";
    var signed_tmp = "";
    var ret = "";
    
    PutUBIKey();

	document.XecureWeb.SecKeyStroke = "XW_SKS_JRSOFT_DRIVER";
    if (total <= 0 || sign_msg == "")
    {
        alert("¼­¸íÇÒ µ¥ÀÌÅ¸°¡ ¾ø½À´Ï´Ù");
        return;
    }

    //MultiÀüÀÚ¼­¸í ÃÊ±âÈ­
    multiSign_id = Multi_Sign_Init();

    //¼­¸í°ª ¼¼ÆÃ
    for(i =0;i < total ;i++)
    {
        length = tmp.length;
        index = tmp.indexOf(delimeter);
        Set_Multi_Sign_Data(multiSign_id,tmp.substring(0,index));
        tmp = tmp.substring(index+1,length);
    }
    //¼­¸í°ª »ý¼º
    //ret = Multi_Sign(multiSign_id,0);//HEX  encoding
    if(option == undefined)
    	option = 256+2;
    ret = Multi_Sign(multiSign_id,option);//base64  encoding    
	
    if(ret != 0)
    {	
        return ;
    }
	
    //¼­¸í°ª ÃßÃâ
    for(i = 0; i < total ; i++)
    {
        signed_tmp = Get_Multi_Signed_Data(multiSign_id,i);
        signed_msg += signed_tmp + delimeter;
    }
    return signed_msg;
}


/****************For AJAX****************/

function XecureAjaxGet(url)
{
	var qs ;
	var path = "/";
	var cipher;
	var xecure_url;

	// get path info & query string & hash from url
	qs_begin_index = url.indexOf('?');
	path = getPath(url)
	// get query string action url
	if ( qs_begin_index < 0 ) {
		qs = "";
	}
	else {
		qs = url.substring(qs_begin_index + 1, url.length );
	}

	if( gIsContinue == 0 ) {
		gIsContinue = 1;

		if( IsNetscape60() )		// Netscape 6.0
			cipher = document.XecureWeb.nsIXecurePluginInstance.BlockEnc(xgate_addr, "/off", XecureEscape(qs), "GET");
		else
			cipher = document.XecureWeb.BlockEnc(xgate_addr, "/off", XecureEscape(qs),"GET");

		gIsContinue = 0;
	}
	else {
		alert(busy_info);
		return false;
	}

	if( cipher == null || cipher == "" )	return XecureWebError() ;

	xecure_url = path + "?q=" + escape_url(cipher);
	return xecure_url;
}

function XecureAjaxPost(qs)
{
	var qs ;
	var p_value;
	
	if( gIsContinue == 0 ) {
		gIsContinue = 1;

		if( IsNetscape60() )		// Netscape 6.0
			cipher = document.XecureWeb.nsIXecurePluginInstance.BlockEnc ( xgate_addr, "/off", XecureEscape(qs), "POST" );
		else{
			cipher = document.XecureWeb.BlockEnc ( xgate_addr, "/off", XecureEscape(qs), "POST" );
		}
		gIsContinue = 0;
	}

	else {
		alert(busy_info);
		return false;
	}

	if( cipher == null || cipher == "" )	return XecureWebError() ;
	
	p_value = "p="+escape_url(cipher);
	return p_value;
}

//USB½Ã¸®¾ó ÃßÃâ(kiupbank Ãß°¡)
function USBTokenSerial() {
	var certLocation = 2;
	var USBSerial;

	 if( IsNetscape60() )		// Netscape 6.0
			USBSerial = XecureUnescape(document.XecureWeb.nsIXecurePluginInstance.GetUSBTokenSerial(certLocation));
		else {
			USBSerial = XecureUnescape(document.XecureWeb.GetUSBTokenSerial(certLocation));
		}

	if (USBSerial != 0) {
	      if (USBSerial.substring(0,1) != 'M' && USBSerial.substring(0,1)  != '1') {
			   USBSerial = 'N' + USBSerial;
		}
	}
	else {
		//alert("no usb" );
	}

//USB½Ã¸®¾ó°ª ¸ø¾ò´Â °æ¿ì ÆäÀÌÁö³» function¿¡¼­ Ã³¸®ÇÏ±â À§ÇØ COMMENTÃ³¸®ÇÔ2007-06-15
//	if( USBSerial == "" ) XecureWebError() ;
	//alert("USBSerial=" + USBSerial );
	return USBSerial;
}


/*
 * e2e Àû¿ëµÈ ÇÊµå ½ÇÁ¦°ª ¸®ÅÏ
 */
function getE2EValue(form,elements) {
           var is9x = false;
           var enable = false;
           var e2e_value = "";
           var enc_xgate = "";

           if(document.CKKeyPro==null 
                                || typeof(document.CKKeyPro)=="undefined" 
                                || document.CKKeyPro.object==null)  {
                     enable = false;
           }
           else if(navigator.userAgent.indexOf("Win64") >= 0) {
                     enable = false;
           }
           else {
                     enable = true;
                     if(navigator.userAgent.indexOf("Windows 9") != -1) is9x = true;
           }
           if(enable) {
                     enc_xgate = document.XecureWeb.GetEncUserData(xgate_addr);
                     e2e_value = document.CKKeyPro.GetEncData(enc_xgate,form.name,elements.name);
           }
           else {
                     e2e_value = elements.value;
           }

           return e2e_value;
}

function HaveControl_web()
{
	if(document.XecureWeb==null || typeof(document.XecureWeb) == "undefined" ||document.XecureWeb.object==null) {
		return false;
	} else {
		return true;
	}
}

/*****************************************************8
 * ÈÞ´ëÆù ÀÎÁõ¼­ °ü·Ã - ÀÎÆ÷¹ÙÀÎ
 *******************************************************/
function PutMPhoneData()
{
	 var downUrl = "http://" + window.location.host + "/ibs/jsp/guest/infovine/DownloadFile";
	 var pageurlsize = "http://" + window.location.host + "/ibs/jsp/guest/infovine/download.html|width=450,height=400";

	 var mphone_data = "MPHONE:" + document.XecureWeb.GetEncUserData(xgate_addr);
	 mphone_data += "&KIUPBANK|" + downUrl + "&SOFTFORUM|SOFTFORUM";
	 mphone_data += "&"+ pageurlsize + "|" + window.location.hostname;
	 
	 if( GetInternetExplorerVersion() >= 8.0 )
		 mphone_data += "|1.0.3.7";
	 else
		 mphone_data += "|1.0.2.7";

	 document.XecureWeb.PutUserData( xgate_addr, mphone_data );
	 document.XecureWeb.SetPhoneData(mphone_data,1);
}

function GetInternetExplorerVersion( )
{
	var ver = -1;
	
	if( navigator.appName == 'Microsoft Internet Explorer' )
	{
		var ua = navigator.userAgent;
		var re = new RegExp( "MSIE ([0-9]{1,}[\.0-9]{0,})" );
		   
		if( re.exec( ua ) != null )
			ver = parseFloat( RegExp.$1 );
	}
	       
	return ver;
}

function PutUBIKey()
{
	if ( HaveControl_web() )
	{
		PutMPhoneData();
	}
}
