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

///////////// since 6.0 v210 //////////////////////////////////////////////
// usePageCharset : ¾Ïº¹È£½Ã ÆäÀÌÁö¿¡ ¸í½ÃµÈ ¹®ÀÚ¼ÂÀÇ »ç¿ë ¿©ºÎ
// XecureWeb Java ¹öÀü ¾Ïº¹È£½Ã ½Ã½ºÅÛ µðÆúÆ® ÀÎÄÚµù°ú ´Ù¸¥ ¹®ÀÚ¼ÂÀÇ
// ¸Þ¼¼Áö¸¦ Ã³¸®ÇÏ´Â °æ¿ì true ¼³Á¤
// 
//var usePageCharset=true;
var usePageCharset=false;


var accept_cert="yessignCA";
accept_cert+=":1.2.410.200005.1.1.1";                              //¹ü¿ë°³ÀÎ
accept_cert+=":1.2.410.200005.1.1.2";                              //±ÝÀ¶±â¾÷
accept_cert+=":1.2.410.200005.1.1.4";                              //ÀºÇà-º¸Çè
accept_cert+=":1.2.410.200005.1.1.5";                              //¹ü¿ë±â¾÷

// ÇÑ±¹Á¤º¸ÀÎÁõ ÀÎÁõ¼­ ¼ö¿ë ºÎºÐ
accept_cert+=",signGATE CA";
accept_cert+=":1.2.410.200004.5.2.1.1";                            //¹ü¿ë±â¾÷
accept_cert+=":1.2.410.200004.5.2.1.2";                            //¹ü¿ë°³ÀÎ
accept_cert+=":1.2.410.200004.5.2.1.7.1";                          //ÀºÇà-º¸Çè
accept_cert+=":1.2.410.200004.5.2.1.7.2";                          //Áõ±Ç-º¸Çè

// Áõ±ÇÀü»ê¿ø ÀÎÁõ¼­ ¼ö¿ë ºÎºÐ
accept_cert+=",SignKorea CA";
accept_cert+=":1.2.410.200004.5.1.1.5";                            //¹ü¿ë°³ÀÎ
accept_cert+=":1.2.410.200004.5.1.1.7";                            //¹ü¿ë¹ýÀÎ
accept_cert+=":1.2.410.200004.5.1.1.9";                            //Áõ±Ç-º¸Çè

// ÇÑ±¹Àü»ê¿ø ÀÎÁõ¼­ ¼ö¿ë ºÎºÐ
accept_cert+=",NCASign CA";                                                                              
accept_cert+=":1.2.410.200004.5.3.1.9";                            //¹ü¿ë°³ÀÎ
accept_cert+=":1.2.410.200004.5.3.1.2";                            //¹ü¿ë±â¾÷

// ÇÑ±¹ÀüÀÚÀÎÁõ ÀÎÁõ¼­ ¼ö¿ë ºÎºÐ
accept_cert+=",CrossCertCA";
accept_cert+=":1.2.410.200004.5.4.1.1";                            //¹ü¿ë°³ÀÎ
accept_cert+=":1.2.410.200004.5.4.1.2";                            //¹ü¿ë±â¾÷
accept_cert+=":1.2.410.200004.5.4.1.101";                          //ÀºÇà-º¸Çè

// ÇÑ±¹¹«¿ªÁ¤º¸Åë½Å ÀÎÁõ¼­ ¼ö¿ë ºÎºÐ
accept_cert+=",TradeSignCA";
accept_cert+=":1.2.410.200012.1.1.1";                              //¹ü¿ë°³ÀÎ
accept_cert+=":1.2.410.200012.1.1.3";                              //¹ü¿ë±â¾÷
accept_cert+=":1.2.410.200012.1.1.101";                            //ÀºÇà-º¸Çè
accept_cert+=":1.2.410.200012.1.1.103";                            //Áõ±Ç-º¸Çè

///////// [softforum] ½Å±Ô Ãß°¡µÈ CA LIST

// ½Å ÇÑ±¹Á¤º¸ÀÎÁõ ÀÎÁõ¼­ ¼ö¿ë ºÎºÐ
accept_cert+=",signGATE CA2";
accept_cert+=":1.2.410.200004.5.2.1.1";                            //¹ü¿ë±â¾÷
accept_cert+=":1.2.410.200004.5.2.1.2";                            //¹ü¿ë°³ÀÎ
accept_cert+=":1.2.410.200004.5.2.1.7.1";                          //ÀºÇà-º¸Çè
accept_cert+=":1.2.410.200004.5.2.1.7.2";                          //Áõ±Ç-º¸Çè

// ½Å ÇÑ±¹Àü»ê¿ø ÀÎÁõ¼­ ¼ö¿ë ºÎºÐ
accept_cert+=",NCASignCA";                                                                  
accept_cert+=":1.2.410.200004.5.3.1.9";                            //¹ü¿ë°³ÀÎ
accept_cert+=":1.2.410.200004.5.3.1.2";                            //¹ü¿ë±â¾÷

// ½Å ÇÑ±¹ÀüÀÚÀÎÁõ ÀÎÁõ¼­ ¼ö¿ë ºÎºÐ
accept_cert+=",CrossCert Certificate Authority";
accept_cert+=":1.2.410.200004.5.4.1.1";                            //¹ü¿ë°³ÀÎ
accept_cert+=":1.2.410.200004.5.4.1.2";                            //¹ü¿ë±â¾÷
accept_cert+=":1.2.410.200004.5.4.1.101";                          //ÀºÇà-º¸Çè

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

/////////////////////////////////////////////////////////////////////////////////
// ÀÎÁõ¼­ °ü·Ã ÆäÀÌÁö°¡ ÀÖ´Â À¥½ºÇÇ¾î Context
var contextPath = '/eCustomer';

function setContextPath(str){
	//alert(str);
	contextPath = str;
}

//////////////////////////////////////////////////////////////////////////////////
// ·Î±×ÀÎ Ã¢¿¡ º¸ÀÏ ÀÌ¹ÌÁö¸¦ ´Ù¿î·Îµå ¹ÞÀ» URL
var bannerUrl =  "http://" + window.location.host + contextPath + "/XecureObject/xecure_final.bmp";

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

///////////////////////////////////////////////////////////////////////////////////
// xgate ¼­¹ö ¸í:Æ÷Æ® ÁöÁ¤ , Æ÷Æ® »ý·«½Ã µðÆúÆ®·Î 443 Æ÷Æ® »ç¿ë
var xgate_addr	= window.location.hostname + ":4443:8080";
//var xgate_addr	= "192.168.184.21" + ":4443:8080";


///////////////////////////////////////////////////////////////////////////////////
// Netscape plugin version information
var packageURL = 'http://' + window.location.host + contextPath + '/XecureObject/NPXecSSL_Install.jar';

var versionMaj = 5;
var versionMin = 1;
var versionRel = 0;

//////////////////////////////////////////////////////////////////////////////////
//	Xecure Big ÇÔ¼öµé....
function SetConvertTable() {
    
}

//////////////////////////////////////////////////////////////////////////////////
//	Xecure ÇÔ¼öµé....
function UserAgent()
{
	return navigator.userAgent.substring(0,9);
}

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

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


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

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

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

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

function XecureWebError()		
{
	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 != 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;

	// 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( qs_begin_index < 0 ) {
		path = url;
	} else {
		path = url.substring(0,qs_begin_index);
	}
	
	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 == "")	return XecureWebError();

	xecure_url = path + "?q=" + sid + XecureAddQuery(qs);
	// adding character set information
	if(usePageCharset)
		xecure_url += "&charset=" + document.charset;

	open ( xecure_url, target );
}

function XecureNavigate( url, target, feature )
{
	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( qs_begin_index < 0 ) {
		path = url;
	} else {
		path = url.substring(0,qs_begin_index);
	}
	
	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);
	// adding character set information
	if(usePageCharset)
		xecure_url += "&charset=" + document.charset;

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


function XecureLink( link )
{	
	var qs ;
	var path = "/";
	var cipher;
	
	var url = "";	
	url = url + link;
	
	qs_begin_index = url.indexOf('?');	
	
	if ( qs_begin_index < 0 ) {
		qs = "";
	}
	else {
		qs = url.substring(qs_begin_index + 1, url.length );		
	}
	
	if( qs_begin_index < 0 ) {
		path = url;
	} else {
		path = url.substring(0,qs_begin_index);
	}
	
	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, path, XecureEscape(qs),"GET");			
		}
		gIsContinue = 0;
	}
	else {
		alert(busy_info);
		return false;
	}
	
	if( cipher.length == 0)	return XecureWebError() ;

	
	xecure_url = path + "?q=" + escape_url(cipher);
	if(usePageCharset)
		xecure_url += "&charset=" + document.charset;

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



function XecureSubmit( 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);
	// 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 );
	}
	
	if( qs_begin_index < 0 ) {
		path = form.action;
	} else {
		path = form.action.substring(0,qs_begin_index);
	}
	
	document.xecure.target = form.target;

	if ( form.method == "get" || form.method=="GET" ) {
		// collect input field values 
		//qs = XecureMakePlain( form );
		if(qs.length!=0)
			qs += "&"+XecureMakePlain( 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);
		// adding character set information
		if(usePageCharset)
			xecure_url += "&charset=" + document.charset;
			
		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);
		// adding character set information
		if(usePageCharset)
			document.xecure.action += "&charset=" + document.charset;
		
		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() ;
		
		document.xecure.p.value = cipher;
		document.xecure.submit();
	}
	return false;
}



function XecureMakePlain(form)	// modified by tiger on 2004/12/22
{
       var name = new Array(form.elements.length);
       var value = new Array(form.elements.length);
       var flag = false;
       var j = 0;
       var plain_text="";


       //for softcamp
       if(document.secukey==null || typeof(document.secukey) == "undefined" || document.secukey.object==null) {
                    enable=false;
                    //alert("Å°º¸µå º¸¾ÈÀÌ ¼³Ä¡µÇ¾î ÀÖÁö ¾Ê½À´Ï´Ù.");
					//return;
       }
       else {
                    enable=secukey.GetSecuKeyEnable();
                    //alert("Å°º¸µå º¸¾ÈÀÌ ¼³Ä¡µÇ¾î ÀÛµ¿Áß ÀÔ´Ï´Ù.") ;
       }

       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++;
                                                }
                                              }
                                 }
                                 //for softcamp
                                 else if(enable && form.elements[i].type == "password"){
                                              if(form.elements[i].type == "password"){
                                                            name[j] = "xw" + form.elements[i].name;
                                                            value[j] = secukey.GetEncString(form.elements[i].value,form.elements[i].name);
                                                            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;
                                                                               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;
                                                                                          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;
                                                                               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] = escape_url(str);
       }
 
       for (i = 0; i < j; i++) {
                    if (flag)
                                 plain_text += "&";
                    else
                                 flag = true;
                    plain_text += name[i] ;
                    plain_text += "=";
                    if (value[i] !="undefined"){
                                 plain_text += value[i];
                    }else {
                                 plain_text += "";
                    }
       }
 
       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 == "" ) 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);
}

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;

	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_Add( option, plain )
{
	var signed_msg;

	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;
	
	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;

	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;
	
	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;
	
	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;
	
	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;
	
	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;

	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;
}

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

function PutBannerUrl()
{
	var bannerUrlSigned = bannerUrl + ".sig";    // ¼­¸íµÈ ÀÌ¹ÌÁö ÆÄÀÏ¸í

    var version = GetVersion(1);

	if( IsNetscape60() )                       // Netscape 6.0
	{
		document.XecureWeb.nsIXecurePluginInstance.PutBigBannerUrl( xgate_addr, bannerUrl);
	} else if ( version.indexOf('7, 2,') >= 0 ||  version.indexOf('7,2,') >=0 ) {    // 7,2 ¹öÁ¯ ÀÌ»ó ÀÏ¶§¸¸ ¼­¸í º£³Ê »ç¿ë                 
		document.XecureWeb.PutBigBannerUrl( xgate_addr, bannerUrlSigned);
	} else {
		document.XecureWeb.PutBigBannerUrl( xgate_addr, bannerUrl);
	}
}


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)	
{
	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) 
{
	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)	
{	
	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 Sign_without_vid_web( option, plain, svrCert, idn )
{
    var ret;
    var signed_msg;

    option = option + 12;

    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 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
		{		
			//document.write('<OBJECT ID="XecureWeb" CLASSID="CLSID:7E9FDB80-5316-11D4-B02C-00C04F0CD404" CODEBASE="http://download.softforum.co.kr/Published/XecureWeb/v7.2.0.3/xw_install.cab#Version=7,2,0,3" width=0 height=0><param name="lang" value="korean"><PARAM NAME="SECKEY" VALUE="XW_SKS_SOFTCAMP_DRIVER"><param name="LICENSE" value="30820661020101310b300906052b0e03021a0500303f06092a864886f70d010701a0320430313a7777772e6169676c6966652e636f2e6b723a5369676e5f776974685f6f7074696f6e5f776974685f68746d6c4578a0820467308204633082034ba003020102020107300d06092a864886f70d01010505003077310b3009060355040613024b52311e301c060355040a1315536f6674666f72756d20436f72706f726174696f6e3121301f06035504031318536f6674666f72756d20526f6f7420417574686f726974793125302306092a864886f70d010901161663616d617374657240736f6674666f72756d2e636f6d301e170d3034303431393030303030305a170d3333303131333030303030305a308192310b3009060355040613024b52311e301c060355040a1315536f6674666f72756d20436f72706f726174696f6e311e301c060355040b1315536563757269747920524e44204469766973696f6e311c301a06035504031313536f6674666f72756d205075626c69632043413125302306092a864886f70d010901161663616d617374657240736f6674666f72756d2e636f6d30820121300d06092a864886f70d01010105000382010e00308201090282010043340b4e1f2f30d6634c818e9fa4b35c199e0628503dbe0d1f5ad2c05890a918408dc330c991083bc7cdfc50021303c04afab4cb522d22fced11d1be6559835f1f000d466120cff97a2a80e4fdf972ac127f9bb8e8ddb84974323e4cb822c5f15b22f82da3de6ef61a0b6798ca49a85af3d8f8298912b4d26411e2e1635c081a3306931716c5e56b279c4d36068a4b645c10aa582693086e14132ba67fb03526312790261f9c641993e2ffc3fd9e8df3efebfddecd722e874d6366ad1252ac0d8bddb5674533cc2717a7342e5cfb18f8a301e7196ca33d6c3bb7e1f1e4bee34f5358af6ae0fd52a9fc3bdd4925f5eab7db6628e24738f6c882bb0aaa0e10afbf0203010001a381de3081db301f0603551d2304183016801409b5e27e7d2ac24a8f56bb67accebb93f5318fd3301d0603551d0e041604142e49ab278ae8c8af977537de8b74bb240e0d275f300e0603551d0f0101ff04040302010630120603551d130101ff040830060101ff02010030750603551d1f046e306c306aa068a06686646c6461703a2f2f6c6461702e736f6674666f72756d2e636f6d3a3338392f434e3d58656375726543524c505542432c4f553d536563757269747920524e44204469766973696f6e2c4f3d536f6674666f72756d20436f72706f726174696f6e2c433d4b52300d06092a864886f70d010105050003820101003ce700a0492b225b1665d9c73d84c34f7a5faad7b397ed49231f030e4e0e91953a607bd9006425373d490ef3ba1cf47810ca8c22fabe0c609f93823efdede64744458e910267f9f857c907318e286da6c131c9dd5fada43fd8cfdf6bd1b1b239338cea83eb6b6893b88fbcfd8e86a677b7270ad96be5a82b40569efc2dda6df4bcd642d067183186d6cace6c8f73b80f30b57acb3bcd5cbbc51307922d5edb38cb0d90c3917a8e37534183ba10f403c1c034287f39442df795050f39d78ddad97da8a43f02d7641549af9b5d68908e49faa8a1597cfed4a43baadd42c8fe4fd44c96d314df56147b8a7fa6ba65ffdee9ed3a5da52ef9ac7f9ca5afb633e1ccdf318201a13082019d020101307c3077310b3009060355040613024b52311e301c060355040a1315536f6674666f72756d20436f72706f726174696f6e3121301f06035504031318536f6674666f72756d20526f6f7420417574686f726974793125302306092a864886f70d010901161663616d617374657240736f6674666f72756d2e636f6d020107300706052b0e03021a300d06092a864886f70d010105050004820100117b76b4c8ec2a0fbd1f0e523c003f344bf40e1a85e87a4b218d3ec3e54f9a5aa7d896350513acba0acb87df34ac13837ecc9171d1e7a6f4300e804f66cca142ea1c87529a1e3559cf2efcf3782a873263d5d7d294d3e0a832c87bc3bff192834a2aa1ce75840dff8da1c6372c8e9745a4edfa38f865f7dccfdfe35be2be869a555a2f023e0c8b095150ee0cacb3846418bfcc46bc4432513ef60b44b3f3d72dc95285731513d51f26516d94e8b65dfd2d3b04f42f3ff86b2ea527ad3fa2021d676db54bdfa1fde6e35a4b2b479bfca50f90d5ff96eec3ad4d162372be60e61e49e565fe86c82c628407aee35db6e47ce0193701a558522f013927edf2cb0e8c">No XecureWeb PlugIn</OBJECT>');
			document.write('<OBJECT ID="XecureWeb" CLASSID="CLSID:7E9FDB80-5316-11D4-B02C-00C04F0CD404" CODEBASE="http://download.softforum.co.kr/Published/XecureWeb/v7.2.0.3/xw_install.cab#Version=7,2,0,3" width=0 height=0><param name="lang" value="korean"><PARAM NAME="SECKEY" VALUE="XW_SKS_SOFTCAMP_DRIVER"><param name="LICENSE" value="30820653020101310b300906052b0e03021a0500303106092a864886f70d010701a0240422313a6b6f726473616f7261313a5369676e44617461434d535769746848544d4c4578a0820467308204633082034ba003020102020107300d06092a864886f70d01010505003077310b3009060355040613024b52311e301c060355040a1315536f6674666f72756d20436f72706f726174696f6e3121301f06035504031318536f6674666f72756d20526f6f7420417574686f726974793125302306092a864886f70d010901161663616d617374657240736f6674666f72756d2e636f6d301e170d3034303431393030303030305a170d3333303131333030303030305a308192310b3009060355040613024b52311e301c060355040a1315536f6674666f72756d20436f72706f726174696f6e311e301c060355040b1315536563757269747920524e44204469766973696f6e311c301a06035504031313536f6674666f72756d205075626c69632043413125302306092a864886f70d010901161663616d617374657240736f6674666f72756d2e636f6d30820121300d06092a864886f70d01010105000382010e00308201090282010043340b4e1f2f30d6634c818e9fa4b35c199e0628503dbe0d1f5ad2c05890a918408dc330c991083bc7cdfc50021303c04afab4cb522d22fced11d1be6559835f1f000d466120cff97a2a80e4fdf972ac127f9bb8e8ddb84974323e4cb822c5f15b22f82da3de6ef61a0b6798ca49a85af3d8f8298912b4d26411e2e1635c081a3306931716c5e56b279c4d36068a4b645c10aa582693086e14132ba67fb03526312790261f9c641993e2ffc3fd9e8df3efebfddecd722e874d6366ad1252ac0d8bddb5674533cc2717a7342e5cfb18f8a301e7196ca33d6c3bb7e1f1e4bee34f5358af6ae0fd52a9fc3bdd4925f5eab7db6628e24738f6c882bb0aaa0e10afbf0203010001a381de3081db301f0603551d2304183016801409b5e27e7d2ac24a8f56bb67accebb93f5318fd3301d0603551d0e041604142e49ab278ae8c8af977537de8b74bb240e0d275f300e0603551d0f0101ff04040302010630120603551d130101ff040830060101ff02010030750603551d1f046e306c306aa068a06686646c6461703a2f2f6c6461702e736f6674666f72756d2e636f6d3a3338392f434e3d58656375726543524c505542432c4f553d536563757269747920524e44204469766973696f6e2c4f3d536f6674666f72756d20436f72706f726174696f6e2c433d4b52300d06092a864886f70d010105050003820101003ce700a0492b225b1665d9c73d84c34f7a5faad7b397ed49231f030e4e0e91953a607bd9006425373d490ef3ba1cf47810ca8c22fabe0c609f93823efdede64744458e910267f9f857c907318e286da6c131c9dd5fada43fd8cfdf6bd1b1b239338cea83eb6b6893b88fbcfd8e86a677b7270ad96be5a82b40569efc2dda6df4bcd642d067183186d6cace6c8f73b80f30b57acb3bcd5cbbc51307922d5edb38cb0d90c3917a8e37534183ba10f403c1c034287f39442df795050f39d78ddad97da8a43f02d7641549af9b5d68908e49faa8a1597cfed4a43baadd42c8fe4fd44c96d314df56147b8a7fa6ba65ffdee9ed3a5da52ef9ac7f9ca5afb633e1ccdf318201a13082019d020101307c3077310b3009060355040613024b52311e301c060355040a1315536f6674666f72756d20436f72706f726174696f6e3121301f06035504031318536f6674666f72756d20526f6f7420417574686f726974793125302306092a864886f70d010901161663616d617374657240736f6674666f72756d2e636f6d020107300706052b0e03021a300d06092a864886f70d0101050500048201000c86175cfa11c2e5cd21f04c1c0badd020f523ecbd8d0a474806d2a6e8992d5e264b2ca6b081b141ba38e40ba6d535548871b190f0aa88d0bfd59eb71a0e19026bd74082d9e0833f348f48db8b4b21ce2d5624e6b4359703a41627fb13c0a422c9d31fb4d46283a8ed94d45a074cbb5b1fe2507e8f6ba78c801ddae78791cdf89e79f6ae1e070c7090893bd4beabadb13d5bb33c051201db8f507274de3994afff4403e6b4fa4b726516d2346a71de1c5b88d6a6c90fb1d672e7cee30d5b1beba36e4fbe8fd92ae7a75d0c144e286be05f25e695a16c1c7fdc13f37ab1bfe55e1e90e5899c739a43f5341b7a4f825d7f8bab2855d1991303b9c599733a6b41ae">No XecureWeb PlugIn</OBJECT>');
		}
	}
}

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



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

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

	path = getPath(url);
	
	cipher = document.XecureWeb.BlockEnc(xgate_addr, path, XecureEscape(qs),"POST");
		
	if( cipher.length == 0 ) 	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 );
	}
		
	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='';
	if (navigator.appName == 'Netscape')
		state=XecureWeb.BlockEnc(xgate_addr, "/off", escape(str), "POST");
	else
   		state=XecureWeb.BlockEnc(xgate_addr, "/off", str, "POST");
   	
	return state;
}

function quick_escape(str)
{
	var len, leftlen, cut, i, j, pos, k;
	var out = "", out1 = "", out2 = "";

	len = str.length;
	if(len > 160) {
		leftlen = len/2;
		cut = Math.round(leftlen);
		out1 = quick_escape(str.substring(0, cut));
		out2 = quick_escape(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 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_escape(in_str.substring(0, cut));
		out2 = quick_escape(in_str.substring(cut));
		out = out1 + out2;
	}else {
		out = quick_escape(in_str);
	}
	alert("escape_url_applet end : " + out.length);
	return out;
} 

/*
	*** valid for only XWebFilCom v5.5.x ***
	
	It is possible to combine following option flags
	[EXCEPTION]
	   - 1,2 cannot be used simultaneously
	   - 4 is valid for only 1
	
	envOption  =   1 : ÀÎÁõ¼­±â¹Ý ÀüÀÚºÀÅõ
	           =   2 : ÆÐ½º¿öµå±â¹Ý ÀüÀÚºÀÅõ
	           =   4 : ¿©·¯ °³ÀÇ ÀÎÁõ¼­·Î ÀüÀÚºÀÅõ
	           =   8 : CMS Å¸ÀÔÀ¸·Î Envelop
	           = 256 : ·Î±×ÀÎÇÑ ÀÎÁõ¼­·Î ÀüÀÚºÀÅõ
	           
	return value
	   - success : enveloped message
	   - fail    : ""
*/
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;
}

// 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
// add by choi jae hwi (2007.4.13)
function Sign_with_option_with_htmlEx( option, html_templ, plain, sc)
{
	var signed_msg;
	var agent;
	agent = UserAgent();
	
	if( IsNetscape60() )          // Netscape 6.0
	{
		alert("Áö¿øµÇÁö ¾Ê´Â ±â´ÉÀÔ´Ï´Ù.");
	}else{
		signed_msg = document.XecureWeb.SignDataCMSWithHTMLEx(xgate_addr,XecureEscape(accept_cert),XecureEscape(html_templ),XecureEscape(plain),sc,option,XecureEscape(sign_desc),pwd_fail);
	}
	
	if( signed_msg == "" ) 
	{
		XecureWebError();
	}
 
	return signed_msg;             
}




/**************** AJAX API 20080901 Updated ****************/
// ¾ÏÈ£È­ ¼¼¼ÇÀ» ¸Î°í GETÆÄ¶ó¸ÞÅÍ¸¦ ¾ÏÈ£È­ ÇÑ´Ù.
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)
	path = 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;
		cipher = document.XecureWeb.BlockEnc(xgate_addr, "/off", XecureEscape(qs),"GET");
		gIsContinue = 0;
	}	else {
		alert(busy_info);
		return false;
	}

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

// POSTÆÄ¶ó¸ÞÅÍ¸¦ ¾ÏÈ£È­ ÇÑ´Ù.
function XecureAjaxPost(qs)
{
	var qs ;
	var p_value;
	
	if( gIsContinue == 0 ) {
		gIsContinue = 1;	
			cipher = document.XecureWeb.BlockEnc ( xgate_addr, "/off", XecureEscape(qs), "POST" );		
		gIsContinue = 0;
	}
	else {
		alert(busy_info);
		return false;
	}

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

// ¼­¹ö¿¡¼­ ³»·Á¿Â ¾ÏÈ£¹®À» º¹È£È­ ÇÑ´Ù.
function XecureAjaxDec(cipher)
{
	var plain = "";
	
	if(cipher == "") return "";
	
	
	if( gIsContinue == 0 ) {
		gIsContinue = 1;
			plain = document.XecureWeb.BlockDec( xgate_addr, cipher);
		gIsContinue = 0;
	}	else {
		alert(busy_info);
		return false;
	}

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

	return plain;
}

// ¾ÏÈ£È­ ¼¼¼ÇÀ» ¸Î°í GETÆÄ¶ó¸ÞÅÍ¸¦ ¾ÏÈ£È­ ÇÑ´Ù. 
// 20081021 ¸¶½ºÅÍÇÃ·¡³Ê Áö¿ø S08-1310 
function XecureAjaxGet_mpapp(url)
{
	var qs ;
	var path = "/";
	var cipher;
	var xecure_url;

	// get path info & query string & hash from url
	qs_begin_index = url.indexOf('?');

	path = url.substring(0, qs_begin_index);

	// 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;
		cipher = document.XecureWeb.BlockEnc(xgate_addr, "/off", XecureEscape(qs),"GET");
		gIsContinue = 0;
	}	else {
		alert(busy_info);
		return false;
	}

	if( cipher == "" )	return XecureWebError();
	xecure_url = path + "?q=" + escape_url(cipher);
	return xecure_url;
}
/*
* 20081022 Ã¢À» °¡¿îµ¥·Î ¶ç¿ì±â À§ÇÔ.
*/
function XecureNavigateToCenter( url, target, feature, width, height )
{
	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( qs_begin_index < 0 ) {
		path = url;
	} else {
		path = url.substring(0,qs_begin_index);
	}
	
	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);
	// adding character set information
	if(usePageCharset)
		xecure_url += "&charset=" + document.charset;

	if (feature=="" || feature==null) open ( xecure_url, target );
	else 
	{
		var wd = width;
		var he = height;
		var topposition = (screen.height)?(screen.height-he)/2:0;
		var leftposition = (screen.width)?(screen.width-wd)/2:0;
		feature += ", width="+wd+",height="+he+",top="+topposition+",left="+leftposition;
		open(xecure_url, target, feature);
	}
	
}
