//
// INIplugn-128 Java Script
// 1. update 2002/01/29 wakano@initech.com
//  - ½ÅÇÑÀºÇà È£È¯ ¸Þ¼Òµå ±â´É Ãß°¡.
//		EncryptInput(form)     => EncForm
//		EncryptInput2(form, r) => EncFormVerify
//		À§ ¸Þ¼Òµå »ç¿ë½Ã ³»ºÎÀûÀ¸·Î ShinHan_plugin º¯¼ö¸¦ »ç¿ëÇÏ¿© Ã³¸®µÊ
//	-. INIpluginData¾øÀÌ EcnForm.. »ç¿ë½Ã ¿¡·¯Ã³¸®
//
// 2. update 2002/03/13 wakano@initech.com
//  - ¿¡ÇÃ¸´ÀÌ³ª ÇÃ·¹½¬ °°Àº°ÍÀº elementsÀÇ °ªÀÌ "" ÀÏ°æ¿ì°¡ ÀÖÀ½
//		if(element.name=="") continue;
//
// 3. update 2002/11/30 wakano@initech.com
//  - GatherValeu¿¡¼­ element.typeÀÌ "select"ÀÏ°æ¿ì ¾ÏÈ£È­µÈ ¿øº»ÀÌ »èÁ¦µÇÁö ¾Ê´Â ¹ö±×¼öÁ¤
//
// 4. update 2002/06/11 brson@initech.com
//  -. GatherValue, EncLink, EncLocation ¼öÁ¤
//		:AddServerTimeÀÌ trueÀÏ¶§ TimeURL¿¡¼­ server½Ã°£ ¾ò¾î¼­ µ¥ÀÌÅ¸·Î Ãß°¡ÇÔ.
//
// 5. update 2004/07/29 wakano@initech.com
//	-. iframe»ç¿ë½Ã ÇÁ·¹ÀÓ¸í(secureframe)°ú Àü¿ªº¯¼ö¸íÀÌ Ãæµ¹·Î ÀÎÇÏ¿© secureframeÀ» Ã£Áö ¸øÇÏ´Â ¹ö±×¼öÁ¤
//	   (Àü¿ªº¯¼ö·Î ¼±¾ðµÈ secureframe¸¦ __secureframe__·Î º¯°æ)
//
// 6. update 2005/09/07 smgrl@initech.com
//      -. GatherValue ¹ö±× ¼öÁ¤, ±×¿Ü ÁÖ¼®µé Á¤¸®

var TimeURL = "http://" + window.location.host + "/common/Time2.jsp";       // ¾àÇÑ Replay-Attack ¹æÁö(JSP)
//var TimeURL = "http://" + window.location.host + "/initech/plugin/tools/Time.asp";       // ¾àÇÑ Replay-Attack ¹æÁö(ASP)
//var TimeURL = "http://" + window.location.host + "/initech/plugin/tools/Random.jsp";   // °­ÇÑ Replay-Attack ¹æÁö(JSP ¸¸ ÀÖÀ½)

var LogoURL = 'http://' + window.location.host + '/initech/plugin60/site/img/plugin.initech.com.gif';

var YessignCAIP = "203.233.91.234";
var YessignCMPPort = "4512";
//var YessignCAIP = "203.233.91.71";
//var YessignCMPPort = 4512;

var cipher = "SEED-CBC";
var InitechPackage = "INITECH";
var YessignPackage = "YESSIGN";

var EnableMsg = true;
var secureframename="secureframe";
var __secureframe__=null;
var framecount = 0;
var maxframecount = 10;
var ShinHan_plugin = false;
//var ShinHan_plugin = true;
var AddServerTime=true;
//20070803 ÆË¾÷ ¹× ¸ð´ÞÃ¢°ü·Ã ¼öÁ¤
function FindSecureFrame(inframe)
{
	if(__secureframe__!=null) return __secureframe__;
	if (framecount++ > maxframecount) return null;
	if ((typeof inframe == "undefined") || (inframe == null))
	{
		return null;
	}
	else if ((typeof inframe.secureframe != "undefined")  && (inframe.secureframe != null))
	{
		framecount = 0;
		return inframe.secureframe
	} 
	else if (inframe.parent.frames.length > 0) 
	{
		
		if(inframe != inframe.parent)
		{
			return FindSecureFrame(inframe.parent);
		}
	}
    	return null;
}
//20070803 ÆË¾÷ ¹× ¸ð´ÞÃ¢°ü·Ã ¼öÁ¤
function FrameCheck()
{
	if (typeof document.INIplugin != "undefined") 
	{
		__secureframe__ = self;
	} 
	else 
	{
		framecount = 0;		
		__secureframe__ = FindSecureFrame(parent);
		
		//ÆË¾÷,¸ð´Þ ÆË¾÷Ã¢ÀÎ °æ¿ì Ãß°¡
		//¸ð´ÞÃ¢À» »ý¼º½Ã window°³Ã¼¸¦ Arguments·Î Àü´ÞÇßÀ»°æ¿ì »ç¿ë°¡´É
		if (__secureframe__ == null) {
			var open_frame = null;
			open_frame = top.opener;
			
			//opener°¡ ¾øÀ»°æ¿ì ¸ð´ÞÃ¢À¸·Î ÆÇ´Ü ¸ð´ÞÃ¢À¸·Î ³Ñ°Ü¹ÞÀº À©µµ¿ì °³Ã¼¸¦ open_frameÀ¸·Î ¼³Á¤
			if ((typeof open_frame) == "undefined" && (typeof window.dialogArguments)!="undefined")
			{
				open_frame = window.dialogArguments;
			}
			//ÃÖ»óÀ§ opener±îÁö Ã£¾Æ°£´Ù.
			while((typeof open_frame) != "undefined")
			{
				 if((typeof open_frame.document) == "unknown"){break;}//opener°¡ Á¸ÀçÇÏ´ÂÁö ¿©ºÎ Ã¼Å©			      			      				
				framecount = 0;
				 __secureframe__ = FindSecureFrame(open_frame);
				 
				if (__secureframe__ != null){
					break;
				}else{							
					var t_open_frame = open_frame;
					open_frame = open_frame.top.opener;

					if ((typeof open_frame) == "undefined" && (typeof t_open_frame.window.dialogArguments)!="undefined")//opener°¡ ¾øÀ»°æ¿ì ¸ð´ÞÀ¸·Î ÆÇ´Ü
					{
						open_frame = t_open_frame.window.dialogArguments;
					}
				}
			}
		}
	}
}


function ModuleInstallCheck()
{
	FrameCheck();
	if (__secureframe__==null) return;

	if(navigator.appName == "Netscape")
	{
		return __secureframe__.document.INIplugin;
	}
	else
	{
		if(__secureframe__.INIplugin==null || typeof(__secureframe__.INIplugin) == "undefined" || __secureframe__.INIplugin.object==null) return null;
		else return __secureframe__.INIplugin;
	}
}

function GatherValue(form, start, bErase)
{
	var strResult = "";
	var name = "";
	var value = "";
	var sel=0;

	// INIplugin-128 Install Check
	obj = ModuleInstallCheck();
	if (obj == null) return "";
	
	len = form.elements.length;
	for(i=start; i<len; i++) 
	{
		element = form.elements[i];

		//add to wakano 2002/03/13
		if(element.name=="") continue;
		if(element.name=="INIpluginData") continue;
		//add to smgrl 2004/06/22
		if(element.name=="filedata") continue;

		if ((ShinHan_plugin) && (element.name=="input")) // with for Shinhan Bank 
			continue;
		if (!((form.elements[i].type != "button") && (form.elements[i].type != "reset") && (form.elements[i].type != "submit"))) 
			continue;

		if ( ((element.type == "radio") || (element.type == "checkbox")) && (element.checked!=true) ) 
			continue;
		// File Field´Â SKIPÇÑ´Ù.
     		if(form.elements[i].name.indexOf('file_', 0) >= 0) {
			continue;
        	}

		if (element.type == "select-one") {
			sel = element.selectedIndex;
			if(sel<0) continue;
      //2007.04.19 ¼öÁ¤ select box ±¸Çö½Ã value °ªÀÌ ""ÀÎ°æ¿ì ¼­¹ö¿¡´Â text°ªÀÌ value·Î ³Ñ¾î°¡´Â Çö»ó ¼öÁ¤
      value = element.options[sel].value;
			/*if (element.options[sel].value != ''){	
				value = element.options[sel].value;
			} else {
				//value = element.options[sel].text;
                                value = '';
			}*/
			if(bErase) element.selectedIndex = -1;
		} else{
			value = element.value;
			if(bErase && !((element.type == "radio") || (element.type == "checkbox"))) element.value = "";
		}
		
		//add to smgrl 2004/06/29
		if(element.type == "select-multiple") {
			var j;
			
			for(j=0;j<element.options.length;j++){
				if(element.options[j].selected==true){
					if(strResult!="") strResult += "&";
					if(element.id=="")
						strResult += element.name;
					else
						strResult += element.id;
					strResult += "=";
					strResult += obj.URLEncode(element.options[j].value);
					if(bErase) element.options[j].select=false;
				}
			}
			if(bErase) element.selectedIndex = -1;
			continue;
		}

		// modify wakano 2001/08/21
		if ((element.type == "checkbox") && (bErase)) element.checked = false;

		if (strResult!="") strResult += "&";

		// modify brson 2002/06/11 check element.name
		/*
		if(element.name!=""){
			if(element.id=="")
				strResult += element.name;
			else
				strResult += element.id;
			strResult += "=";
			strResult += obj.URLEncode(value);
		}
		*/
		// 2007.05.03 ¼öÁ¤ element.name default (id°¡ ¾Æ´Ï¶ó nameÀ» ½á¾ß¸¸ HTML ±Ô°Ý¿¡ ¸ÂÀ½)
    strResult += element.name;
    strResult += "=";
    strResult += obj.URLEncode(value);

	}

	//modify brson 2002/06/11 
	//dt¿¡ server time Ãß°¡
	var ver="4,2,0,0";
	if(AddServerTime && EnableFunction(ver)) {
		if(strResult!=""){
				strResult = "__INIts__=" + obj.GetServerTime(TimeURL) + "&" + strResult;
		}
		else{
				strResult = "__INIts__=" + obj.GetServerTime(TimeURL);
		}
	}

	return strResult;
}

function GatherFileValue(form, start, bErase)
{
	var strResult = "";
	var name = "";
	var value = "";
	var sel=0;

	// INIplugin-128 Install Check
	obj = ModuleInstallCheck();
	if (obj == null) return "";
	
	len = form.elements.length;
	for(i=start; i<len; i++) 
	{
		element = form.elements[i];

		//add to wakano 2002/03/13
		if(element.name=="") continue;
		if(element.name=="INIpluginData") continue;
		if(element.name=="filedata") continue;

		if ((ShinHan_plugin) && (element.name=="input")) // with for Shinhan Bank 
			continue;
		if (!((form.elements[i].type != "button") && (form.elements[i].type != "reset") && (form.elements[i].type != "submit"))) 
			continue;

		if ( ((element.type == "radio") || (element.type == "checkbox")) && (element.checked!=true) ) 
			continue;
		// File Field
        if(form.elements[i].name.indexOf('file_', 0)>=0)
		{
	        if(strResult!="")
			{
 	        	strResult += "&";
            }
            strResult+= form.elements[i].name;
            strResult += "=";
            strResult += obj.URLEncode(form.elements[i].value);
			if(bErase) form.elements[i].value = "";
 		}
	}
	return strResult;
}

// make for Shinhan Bank
function EncryptInput(form)
{	
	ShinHan_plugin = true;
	return EncForm(form);
}

function EncryptInput2(form, r)
{
	ShinHan_plugin = true;
	return EncFormVerify(form);
}

function EncForm(form) 
{
	var INIdata = "";
	var eletemp = "";
	var filetemp = "";

	obj = ModuleInstallCheck();
	if (obj == null) {
		alert("¾ÏÈ£È­ÇÁ·¹ÀÓ(secureframe)À» Ã£À»¼ö ¾ø½À´Ï´Ù.");
		return false;
	}

	filetemp = GatherFileValue(form, 0, true);
	if (filetemp !=  "")
	{
		if ((form.filedata.value = obj.MakeFileData(0, cipher, filetemp)) == "") return false; 
	}

	eletemp = GatherValue(form, 0, true);
	if ((INIdata = obj.MakeINIpluginData(0, cipher, eletemp, ""))=="") return false;

	//add bye wakano 2001/01/29
	if (typeof form.INIpluginData == "undefined") 
	{
		if (ShinHan_plugin) // with for Shinhan Bank 
		{
			form.input.value = INIdata;
			form.input.name = "INIpluginData"; // for Shinhan Bank
		} else {
			alert("INIpluginData(form.name)°¡ ÇÊ¿äÇÕ´Ï´Ù.");
			return false;
		}
	} else {
		form.INIpluginData.value = INIdata;
	}

	//alert("¾ÏÈ£È­µÈ µ¥ÀÌÅ¸ : [" + INIdata + "]");
	return true;
}

function EncForm2(form1, form2) 
{
	var INIdata = "";
	var eletemp = "";
	var filetemp = "";
	
	obj = ModuleInstallCheck();
	if (obj == null) {
		alert("¾ÏÈ£È­ÇÁ·¹ÀÓ(secureframe)À» Ã£À»¼ö ¾ø½À´Ï´Ù.");
		return false;
	}

	filetemp = GatherFileValue(form1, 0, false);
	if (filetemp !=  "") 
	{
		if ((form2.filedata.value = obj.MakeFileData(0, cipher, filetemp)) == "") return false; 
	}

	eletemp = GatherValue(form1, 0, false);
	if ((INIdata = obj.MakeINIpluginData(0, cipher, eletemp, ""))=="") return false;

	//add bye wakano 2001/01/29
	if (typeof form2.INIpluginData == "undefined") 
	{
		if (ShinHan_plugin) // with for Shinhan Bank 
		{
			form2.input.value = INIdata;
			form2.input.name = "INIpluginData"; // for Shinhan Bank
		} else {
			alert("INIpluginData(form.name)°¡ ÇÊ¿äÇÕ´Ï´Ù.");
			return false;
		}
	} else {
		form2.INIpluginData.value = INIdata;
	}

   	return true;
}

function EncLink(url, encData, target, style)
{
	var queryString = "INIpluginData=";
	var INIdata;

	obj = ModuleInstallCheck();
	if (obj == null) {
		alert("¾ÏÈ£È­ÇÁ·¹ÀÓ(secureframe)À» Ã£À»¼ö ¾ø½À´Ï´Ù.");
		return false;
	}

	//modify brson 2002/06/11 
	//dt¿¡ server time Ãß°¡
	var ver="4,2,0,0";
	if(AddServerTime && EnableFunction(ver)) {
		if(encData!=""){
				encData = "__INIts__=" + obj.GetServerTime(TimeURL) + "&" + encData;
		}
		else{
				encData = "__INIts__=" + obj.GetServerTime(TimeURL);
		}
	}
	
	if ((INIdata = obj.MakeINIpluginData("0", cipher, encData, ""))=="") return;
	queryString += obj.URLEncode(INIdata);
	if(url.indexOf('?', 0) < 0) url += "?";
	if((url.charAt(url.length-1)!='?') && (url.charAt(url.length-1)!='&')) url += "&";
	url += queryString;
	
	window.open(url, target, style);
}


function Idecrypt(data)
{
	var decdata = "";
	obj = ModuleInstallCheck();
	if (obj == null) return "";
	
	//alert("º¹È£È­ÇÏ±âÀü µ¥ÀÌÅ¸ : [" + data + "]");

	if (navigator.appName == 'Netscape') 
		decdata = unescape(obj.Decrypt(cipher, data));
	else
		decdata = obj.Decrypt(cipher, data);

	//alert("º¹È£È­µÈ µ¥ÀÌÅ¸ : [" + decdata + "]");

	return decdata;
}

function Idecrypt2(data)
{
	obj = ModuleInstallCheck();
	if (obj == null) return "";
	
	if (navigator.appName == 'Netscape') 
		return unescape(obj.Decrypt2(cipher, data));
	else
		return obj.Decrypt2(cipher, data);
}

//¾ÐÃà+¾ÏÈ£È­ µÈ ³»¿ëÀ» º¹È£È­ ÇÏ¿© ¸®ÅÏÇÔ.(by Seon Jong Kim.)
function IdecryptWithGunzip(data)
{
	var decdata = "";
	obj = ModuleInstallCheck();
	if (obj == null) return "";

	var ver = "5, 1, 6, 1";
	if(!EnableFunction(ver)) {
		var msg;
		msg = "ÇöÀç ¼³Ä¡µÈ ¹öÀü V " + GetVersion() + " ¿¡¼­´Â º» ±â´ÉÀ» Áö¿øÇÏÁö ¾Ê½À´Ï´Ù."
		msg += "\n\nV " + ver + " ÀÌ»óÀ¸·Î ¾÷±×·¹ÀÌµå ÇÏ½Ã±â ¹Ù¶ø´Ï´Ù."
		if (EnableMsg) alert(msg);
		return false;
	}
	
	if (navigator.appName == 'Netscape') 
		decdata = unescape(obj.DecryptWithGunzip(cipher, data));
	else
		decdata = obj.DecryptWithGunzip(cipher, data);

	return decdata;
}

function EncFormVerify(form) 
{
	var INIdata = "";
	var eletemp = "";
	var filetemp = "";
	var Random = TimeURL; 

	obj = ModuleInstallCheck();
	if (obj == null) {
		alert("¾ÏÈ£È­ÇÁ·¹ÀÓ(secureframe)À» Ã£À»¼ö ¾ø½À´Ï´Ù.");
		return false;
	}

	filetemp = GatherFileValue(form, 0, true);
	if (filetemp !=  "") 
	{
		if ((form.filedata.value = obj.MakeFileData(1, cipher, filetemp)) == "") return false; 
	}
	
	eletemp = GatherValue(form, 0, true);
	if ((INIdata = obj.MakeINIpluginData(1, cipher, eletemp, Random))=="") return false;

	//add bye wakano 2001/01/29
	if (typeof form.INIpluginData == "undefined") 
	{
		if (ShinHan_plugin) // with for Shinhan Bank 
		{
			form.input.value = INIdata;
			form.input.name = "INIpluginData"; // for Shinhan Bank
		} else {
			alert("INIpluginData(form.name)°¡ ÇÊ¿äÇÕ´Ï´Ù.");
			return false;
		}
	} else {
		form.INIpluginData.value = INIdata;
	}
    
   	return true;
}

function EncFormVerify2(form1, form2)
{
	var INIdata = "";
	var eletemp = "";
	var filetemp = "";
	var Random = TimeURL;

	obj = ModuleInstallCheck();
	if (obj == null) {
		alert("¾ÏÈ£È­ÇÁ·¹ÀÓ(secureframe)À» Ã£À»¼ö ¾ø½À´Ï´Ù.");
		return false;
	}
	
	filetemp = GatherFileValue(form1, 0, false);
	if (filetemp !=  "") 
	{
		if ((form2.filedata.value = obj.MakeFileData(1, cipher, filetemp)) == "") return false; 
	}

	eletemp = GatherValue(form1, 0, false);
	if ((INIdata = obj.MakeINIpluginData(1, cipher, eletemp, Random))=="") return false;

	//add bye wakano 2001/01/29
	if (typeof form2.INIpluginData == "undefined") 
	{
		if (ShinHan_plugin) // with for Shinhan Bank 
		{
			form2.input.value = INIdata;
			form2.input.name = "INIpluginData"; // for Shinhan Bank
		} else {
			alert("INIpluginData(form.name)°¡ ÇÊ¿äÇÕ´Ï´Ù.");
			return false;
		}
	} else {
		form2.INIpluginData.value = INIdata;
	}
	//alert(form2.INIpluginData.value);
   	return true;
}

/* ASP Time Check ¿ë ÇÔ¼ö ÀÓ½Ã¿ëÀÔ´Ï´Ù. */
function imsi_FormVerify(form1, form2)
{
	var INIdata = "";
	var eletemp = "";
	var filetemp = "";
	var TimeURL = "http://" + window.location.host + "/initech/plugin60/tools/Time.asp";
	var Random = TimeURL;

	obj = ModuleInstallCheck();
	if (obj == null) {
		alert("¾ÏÈ£È­ÇÁ·¹ÀÓ(secureframe)À» Ã£À»¼ö ¾ø½À´Ï´Ù.");
		return false;
	}
	
	filetemp = GatherFileValue(form1, 0, false);
	if (filetemp !=  "") 
	{
		if ((form2.filedata.value = obj.MakeFileData(1, cipher, filetemp)) == "") return false; 
	}

	eletemp = GatherValue(form1, 0, false);
	if((form2.INIpluginData.value = obj.MakeINIpluginData(1, cipher, eletemp, Random))=="") return false;
	if ((INIdata = obj.MakeINIpluginData(1, cipher, eletemp, Random))=="") return false;

	//add bye wakano 2001/01/29
	if (typeof form2.INIpluginData == "undefined") 
	{
		if (ShinHan_plugin) // with for Shinhan Bank 
		{
			form2.input.value = INIdata;
			form2.input.name = "INIpluginData"; // for Shinhan Bank
		} else {
			alert("INIpluginData(form.name)°¡ ÇÊ¿äÇÕ´Ï´Ù.");
			return false;
		}
	} else {
		form2.INIpluginData.value = INIdata;
	}
	
   	return true;
}

function EncLinkVerify(url, encData, target)
{
	var queryString = "INIpluginData=";
	var INIdata;
	var Random = TimeURL;

	obj = ModuleInstallCheck();
	if (obj == null) {
		alert("¾ÏÈ£È­ÇÁ·¹ÀÓ(secureframe)À» Ã£À»¼ö ¾ø½À´Ï´Ù.");
		return false;
	}
	
	if((INIdata = obj.MakeINIpluginData(1, cipher, encData, Random))=="") return;
	queryString += obj.URLEncode(INIdata);

	if(url.indexOf('?', 0) < 0) url += "?";
	if((url.charAt(url.length-1)!='?') && (url.charAt(url.length-1)!='&')) url += "&";
	
	url += queryString;
	window.open(url, target);
}

function InsertUserCert(cert)
{
	obj = ModuleInstallCheck();
	if (obj == null) return false;

	return obj.InsertUserCert(InitechPackage, "", cert);
}

function InsertUserCert2(cert, storage)
{
	obj = ModuleInstallCheck();
	if (obj == null) return false;

	return obj.InsertUserCert(InitechPackage, storage, cert);
}

function CertRequest(form)
{
	var dn="";
	var temp=""
	len = form.elements.length;

	form.req.value="";

	obj = ModuleInstallCheck();
	if (obj == null) return false;
	
	for (i = 0; i < len; i++) 
	{
		var name = form.elements[i].name.toUpperCase();
		var temp = form.elements[i].value;
		if(name == "C")	dn = dn + "C=" + obj.URLEncode(temp) + "&";
		if(name == "L")	dn = dn + "L=" + obj.URLEncode(temp) + "&";
		if(name == "O")	dn = dn + "O=" + obj.URLEncode(temp) + "&";
		if(name == "OU") dn = dn + "OU=" + obj.URLEncode(temp) + "&";
		if(name == "CN") dn = dn + "CN=" + obj.URLEncode(temp) + "&";
		if(name == "EMAIL")
		{
			if(temp=="") temp = " ";

			dn = dn + "EMAIL=" + obj.URLEncode(temp) + "&";
		}
	}
	
	req = obj.CertRequest(InitechPackage, "", dn, form.challenge.value); 

	if(req=="") return false;
	form.req.value = req;
	
	return true;		
}


function CertRequest2(form)
{
	var dn="";
	var temp=""
	len = form.elements.length;

	form.req.value="";

	obj = ModuleInstallCheck();
	if (obj == null) return false;
	
	for (i = 0; i < len; i++) 
	{
		var name = form.elements[i].name.toUpperCase();
		var temp = form.elements[i].value;
		if(name == "C")	dn = dn + "C=" + obj.URLEncode(temp) + "&";
		if(name == "L")	dn = dn + "L=" + obj.URLEncode(temp) + "&";
		if(name == "O")	dn = dn + "O=" + obj.URLEncode(temp) + "&";
		if(name == "OU") dn = dn + "OU=" + obj.URLEncode(temp) + "&";
		if(name == "CN") dn = dn + "CN=" + obj.URLEncode(temp) + "&";
		if(name == "EMAIL")
		{
			if(temp=="") temp = " ";

			dn = dn + "EMAIL=" + obj.URLEncode(temp) + "&";
		}
	}
	
	req = obj.CertRequest2(InitechPackage, "", dn, form.challenge.value); 

	if(req=="") return false;
	form.req.value = req;
	
	return true;		
}

function IssueCertificate(szRef, szCode)
{
	obj = ModuleInstallCheck();
	if (obj == null) return false;
	
	var Arg = "";
	var challenge = "1111";
	
	Arg += "REF=";
	Arg += obj.URLEncode(szRef);
	Arg += "&CODE=";
	Arg += obj.URLEncode(szCode);
	Arg += "&CAIP=";
	Arg += obj.URLEncode(YessignCAIP);
	Arg += "&CAPORT=";
	Arg += obj.URLEncode(YessignCMPPort);
	
	obj.CertRequest(YessignPackage, "", Arg, challenge);
}

function UpdateCertificate()
{
	obj = ModuleInstallCheck();
	if (obj == null) return false;

	var Arg = "";
	var challenge = "1111";
	
	Arg += "CAIP=";
	Arg += obj.URLEncode(YessignCAIP);
	Arg += "&CAPORT=";
	Arg += obj.URLEncode(YessignCMPPort);
	
	//obj.CertUpdate(YessignPackage, "", Arg);
	if(obj.CertUpdate2(YessignPackage, "", Arg)=="")	return false; //Ä³½¬µÈÀÎÁõ¼­»ç¿ë½Ã
	return true;
}

function InsertCACert(cert)
{
	// INIplugin-128 Install Check
	obj = ModuleInstallCheck();
	if (obj == null) return false;
	
	obj.InsertCACert(InitechPackage, cert);
	
	return true;
}

//add bye wakano 2001/01/29 with for Shinhan Bank 
function EncryptedCertRequest(form1)
{
        ShinHan_plugin = true;
    	if(CertRequest(form1)){
        	return EncForm(form1);
    	}
    	return false;
}

function EncCertReq(form1)
{
	obj = ModuleInstallCheck();
	if (obj == null) return false;
	
	if(CertRequest(form1)) return EncForm(form1);

	return false;
	
}

function EncCertReq2(form1, form2)
{
	obj = ModuleInstallCheck();
	if (obj == null) return false;
	
	if(!CertRequest(form1))
		return false;

	return EncForm2(form1, form2);
}

function LoadCACert(CACert)
{
	obj = ModuleInstallCheck();
	if (obj == null) return false;
	
	obj.LoadCACert(CACert);
	
	return true;
}

function DeleteUserCert(DelCert)
{
	obj = ModuleInstallCheck();
	if (obj == null) return;
	
	if (obj.DeleteUserCert(InitechPackage, "", DelCert)) 
	{
		//alert("ÇØ´ç ÀÎÁõ¼­ »èÁ¦ÇÏ¿´½À´Ï´Ù.");
	}
	else
	{
		//alert("ÇöÀç »ç¿ëÇÏ½Ã´Â ÄÄÇ»ÅÍ¿¡ ÇØ´ç ÀÎÁõ¼­°¡ ¾ø¾î¼­ »èÁ¦ÇÏÁö ¸øÇÏ¿´½À´Ï´Ù.");
	}
	
	return;		
}

function RevokeCertificate(serial)
{
    obj = ModuleInstallCheck();
    if (obj == null) return false;
    //alert(serial);
	if(obj.DeleteUserCert(YessignPackage, "", serial))
	{
		//alert("ÇØ´ç ÀÎÁõ¼­ »èÁ¦ÇÏ¿´½À´Ï´Ù.");
		return true;
	}
	else
	{
		//alert("ÇöÀç »ç¿ëÇÏ½Ã´Â ÄÄÇ»ÅÍ¿¡ ÇØ´ç ÀÎÁõ¼­°¡ ¾ø¾î¼­ »èÁ¦ÇÏÁö ¸øÇÏ¿´½À´Ï´Ù.");
		return false;
	}

    return  true;
}

function SelFile(field)
{
    obj = ModuleInstallCheck();
    if (obj == null) return false;

    field.value = obj.SelectFile();
}

function InstallModule(InstallModuleURL)
{
	obj = ModuleInstallCheck();
	if (obj == null) return false;
	if(InstallModuleURL=="") return true;
	obj.InstallModule(InstallModuleURL);
	return true;
}

function FilterUserCert(storage, issuerAndSerial)
{
    obj = ModuleInstallCheck();
    if (obj == null) return -1;
	return obj.FilterUserCert(storage, issuerAndSerial);
}

function URLEncode(data)
{
    obj = ModuleInstallCheck();
    if (obj == null) return "";
	return obj.URLEncode(data);
}

function GetStorageSerial(storage, pin)
{
    obj = ModuleInstallCheck();
    if (obj == null) return "";
	return obj.GetStorageSerial(storage, pin);
}

function IsCheckCard(storage)
{
    obj = ModuleInstallCheck();
    if (obj == null) return false;
	return obj.IsCheckCard(storage);
}

function VerifyPin(storage, pin)
{
    obj = ModuleInstallCheck();
    if (obj == null) return false;
	return obj.VerifyPIN(storage, pin);
}

function ChangePIN(storage, oldpin, newpin)
{
    obj = ModuleInstallCheck();
    if (obj == null) return false;
	return obj.ChangePIN(storage, oldpin, newpin);
}

//add to brson :  ÆÄÀÏ¾ÏÈ£È­ V4.0.2.4
///////////////////////////////////////////////////
///////////// ÆÄÀÏ¾ÐÈ£È­ API  /////////////////////
///////////////////////////////////////////////////

function EncFile(url, form) 
{
	var eletemp = "";
	var filetemp = "";

	obj = ModuleInstallCheck();
	if (obj == null) return false;

	filetemp = GatherFileValue(form, 0, true);
	if (filetemp !=  "")
	{
		if ((form.INIfileData.value = obj.UploadEncryptFile(url, 0, cipher, filetemp, "")) == ""){
			alert("File Upload Fail");
			return false; 
		}
		//alert("INIfileData = " + form.INIfileData.value);
	}

	eletemp = GatherValue(form, 0, true);
	if ((form.INIpluginData.value = obj.MakeINIpluginData(0, cipher, eletemp, ""))=="") return false;

   	return true;
}

function EncFile2(url, form, form2) 
{
	var eletemp = "";
	var filetemp = "";

	obj = ModuleInstallCheck();
	if (obj == null) return false;

	filetemp = GatherFileValue(form, 0, false);
	if (filetemp !=  "")
	{
		//alert("fileValue = " + filetemp);
		if ((form.INIfileData.value = obj.UploadEncryptFile(url, 0, cipher, filetemp, "")) == ""){
			alert("File Upload Fail");
			return false; 
		}
		//alert("INIfileData = " + form.INIfileData.value);
	}

	eletemp = GatherValue(form, 0, false);
	if ((form2.INIpluginData.value = obj.MakeINIpluginData(0, cipher, eletemp, ""))=="") return false;

   	return true;
}

function EncDown(url, args) 
{
	obj = ModuleInstallCheck();
	if (obj == null) return false;
	return obj.DownloadEncryptFile(url, 0, cipher, args, "");
}

function EncDownVerify(url, args) 
{

	obj = ModuleInstallCheck();
	if (obj == null) return false;
	return obj.DownloadEncryptFile(url, 1, cipher, args, TimeURL);
}

///////////////////////////////////////////////////
///////////// ÃÊ±â°ª ¼¼ÆÃ API  /////////////////////
///////////////////////////////////////////////////

function LoadCert(Cert)
{
	obj = ModuleInstallCheck();
	if (obj == null) return false;
	return obj.LoadCert(Cert);
}

function InitCache()
{
	obj = ModuleInstallCheck();
	if (obj == null) return false;
	
	obj.InitCache();
	
	return true;
}

function SetCacheTime(gap)
{
	obj = ModuleInstallCheck();
	if (obj == null) return false;
	
	obj.SetCacheTime(gap);
	
	return true;
}

function ReSession()
{
	obj = ModuleInstallCheck();
	if (obj == null) return false;
	obj.ReSession();
	return true;
}

function SetLogoPath()
{
    obj = ModuleInstallCheck();
    if (obj == null) return false;
    return obj.SetLogoPath(LogoURL);
}

function EnableCheckCRL(check)
{
    obj = ModuleInstallCheck();
    if (obj == null) return false;
    obj.EnableCheckCRL(check);
}

function SetVerifyNegoTime(time1, time2)
{
    obj = ModuleInstallCheck();
    if (obj == null) return false;
    obj.SetVerifyNegoTime(time1, time2);
}

function DisableInvalidCert(check)
{
	obj = ModuleInstallCheck();
	if (obj == null) return false;
	obj.DisableInvalidCert(check);
}

function SetTVBanking(bTV)
{
	var ver = "4, 1, 3, 0";
	if(EnableFunction(ver)) {
		obj = ModuleInstallCheck();
		if (obj == null) return false;
		obj.SetTVBanking(bTV);
	} else {
		var msg;
		msg = "ÇöÀç ¼³Ä¡µÈ ¹öÀü V " + GetVersion() + " ¿¡¼­´Â Áö¿øÇÏÁö ¾Ê´Â±â´ÉÀÔ´Ï´Ù."
	    msg += "\n\nV " + ver + " ÀÌ»óÀ¸·Î ¾÷±×·¹ÀÌµå ÇÏ½Ã±â ¹Ù¶ø´Ï´Ù."
		if (EnableMsg) alert(msg);
		return false;
	}
	return true;
}

///////////////////////////////////////////////////
///////////// ±âÅ¸             /////////////////////
///////////////////////////////////////////////////

function GetVersion()
{
	var ver = "4,0,0,0"
    obj = ModuleInstallCheck();
    if (obj == null) return ver;
	return new String(obj.GetVersion());
}

function EnableFunction(inputVersion)
{
	var thisArray = GetVersion().split(',');
    var inputArray = inputVersion.split(',');

	for (i=0; i<4; i++)
	{
		if (parseInt(thisArray[i], 10) > parseInt(inputArray[i], 10))
			return true;
		else if (parseInt(thisArray[i], 10) < parseInt(inputArray[i], 10))
			return false;
	}
	return true;
}

function ManageCert()
{
	obj = ModuleInstallCheck();
	if (obj == null) return; 
	
	obj.ManageCert();
}

function INIAbout()
{
	obj = ModuleInstallCheck();
	if (obj == null) return;
	obj.About();
}

function GetClientUID()
{
	var ver = "4, 5, 0, 0";
	if(EnableFunction(ver)) {
		obj = ModuleInstallCheck();
		if (obj == null) return;
	    return obj.GetClientUID();
	} else {
		var msg;
		//msg = "ÇöÀç ¼³Ä¡µÈ ¹öÀü V " + GetVersion() + " ¿¡¼­´Â Áö¿øÇÏÁö ¾Ê´Â±â´ÉÀÔ´Ï´Ù."
	    //msg += "\n\nV " + ver + " ÀÌ»óÀ¸·Î ¾÷±×·¹ÀÌµå ÇÏ½Ã±â ¹Ù¶ø´Ï´Ù."
	    msg = "\n .. °ø»çÁßÀÔ´Ï´Ù... "
		if (EnableMsg) alert(msg);
	}
	return;
}


///////////////////////////////////////////////////
/////////////¼¼±Ý°è»ê¼­ API ½ÃÀÛ/////////////////////
///////////////////////////////////////////////////

function MakeTaxData(inform, outform)
{
	var gValue = "";
    var ret  = "";
    
	len = inform.elements.length;
    outform.INIpluginTax.value="";

    // INIplugin-128 Install Check
    INIpluginObject = ModuleInstallCheck();
    if (INIpluginObject == null) return false;

    for (i = 0; i < len; i++) {
    	var name = inform.elements[i].name;
        var value = INIpluginObject.URLEncode(inform.elements[i].value);
        gValue = gValue + name + "=" + value + "&";
    }

    ret = INIpluginObject.MakeTaxData(gValue);
    if(ret == "" || ret == "CERT_NOT_FOUND") return false;
    outform.INIpluginTax.value = ret;

    return true;
}

function EncMakeTaxData(inform, outform)
{
	if(MakeTaxData(inform, outform)) {
		alert(outform.INIpluginTax.value);
		return EncForm(outform);
	}
	return false;
}

function SaveTaxData(taxData)
{
        // INIplugin-128 Install Check
        INIpluginObject = ModuleInstallCheck();
        if (INIpluginObject == null) return false;
        if(INIpluginObject.SaveTaxData(taxData)) {
                return true;
        } else {
                return false;
        }
}

function SaveTaxData2Clt(pfile, taxData)
{
        // INIplugin-128 Install Check
        INIpluginObject = ModuleInstallCheck();
        if (INIpluginObject == null) return false;
        if(INIpluginObject.SaveTaxData2Clt(pfile, taxData)) {
                return true;
        } else {
                return false;
        }
}

function ManageTax()
{
	INIpluginObject = ModuleInstallCheck();
        if (INIpluginObject == null) return false;
        if(INIpluginObject.manageTax()) {
                return true;
        } else {
                return false;
        }
}


///////////////////////////////////////////////////
///////////// ÀüÀÚ¼­¸í API ½ÃÀÛ/////////////////////
///////////////////////////////////////////////////

function IniSign(form, data, inputtitle, inputdata)
{
	var ver = "4, 1, 9, 0";
	if(EnableFunction(ver)) {
		INIpluginObject = ModuleInstallCheck();
		if (INIpluginObject == null) return false;
		
		form.PKCS7SignedData.value = INIpluginObject.IniSign("sha1", data, TimeURL, inputtitle, inputdata);
		if(form.PKCS7SignedData.value=="") return false;
		//alert(PKCS7SignedData);
		return true;
	} else {
		var msg;
		msg = "ÇöÀç ¼³Ä¡µÈ ¹öÀü V " + GetVersion() + " ¿¡¼­´Â ÀüÀÚ¼­¸í ±â´ÉÀ» Áö¿øÇÏÁö ¾Ê½À´Ï´Ù."
		msg += "\n\nV " + ver + " ÀÌ»óÀ¸·Î ¾÷±×·¹ÀÌµå ÇÏ½Ã±â ¹Ù¶ø´Ï´Ù."
		if (EnableMsg) alert(msg);
		return false;
	}
}

function IniSign2(form, data)
{
	var ver = "4, 1, 9, 0";
	if(EnableFunction(ver)) {
		INIpluginObject = ModuleInstallCheck();
		if (INIpluginObject == null) return false;

		form.PKCS7SignedData.value = INIpluginObject.IniSign2("sha1", data, TimeURL);
		if(form.PKCS7SignedData.value=="") return false;
		return true;

	} else {alert("this");
		var msg;
		msg = "ÇöÀç ¼³Ä¡µÈ ¹öÀü V " + GetVersion() + " ¿¡¼­´Â ÀüÀÚ¼­¸í ±â´ÉÀ» Áö¿øÇÏÁö ¾Ê½À´Ï´Ù."
		msg += "\n\nV " + ver + " ÀÌ»óÀ¸·Î ¾÷±×·¹ÀÌµå ÇÏ½Ã±â ¹Ù¶ø´Ï´Ù."
		//msg = "\n .. °ø»çÁßÀÔ´Ï´Ù... "
		if (EnableMsg) alert(msg);
		return false;
	}
}

function AddSignValue(data, name, value)
{
	if(data!="") data += "&";
	data += URLEncode(name);
	data += "=";
	data += URLEncode(value);
	return data;
}

function EncLocation(indata)
{
	var	INIdata;
	var s = indata.indexOf('?');
	var url = indata.substring(0, s) + "?INIpluginData=";
	var encData = indata.substring(s+1);

	obj = ModuleInstallCheck();
	if (obj == null) {
		alert("¾ÏÈ£È­ÇÁ·¹ÀÓ(secureframe)À» Ã£À»¼ö ¾ø½À´Ï´Ù.");
		return false;
	}
	//modify brson 2002/06/11 
	//dt¿¡ server time Ãß°¡
	var ver="4,2,0,0";
	if(AddServerTime && EnableFunction(ver)) {
		if(encData!=""){
				encData = "__INIts__=" + obj.GetServerTime(TimeURL) + "&" + encData;
		}
		else{
				encData = "__INIts__=" + obj.GetServerTime(TimeURL);
		}
	}

	if( (INIdata = obj.MakeINIpluginData("0", cipher, encData, "")) == "" )
		return;
	url += obj.URLEncode(INIdata);

	return url;
}



function AddSignValue(data, name, value)
{
	if(data!="") data += "&";
	data += URLEncode(name);
	data += "=";
	data += URLEncode(value);
	return data;
}

function PKCS7SignedData(form, data, view)
{
	var ver = "4, 1, 14, 0";
	obj = ModuleInstallCheck();
	if (obj == null) {
		alert("¾ÏÈ£È­ÇÁ·¹ÀÓ(secureframe)À» Ã£À»¼ö ¾ø½À´Ï´Ù.");
		return false;
	}
	if(EnableFunction(ver)) {
		form.PKCS7SignedData.value = obj.PKCS7SignData("sha1", data, TimeURL, view);
		if(form.PKCS7SignedData.value=="") return false;
		return true;
	} else {
		alert("this");
		var msg;
		msg = "ÇöÀç ¼³Ä¡µÈ ¹öÀü V " + GetVersion() + " ¿¡¼­´Â ÀüÀÚ¼­¸í ±â´ÉÀ» Áö¿øÇÏÁö ¾Ê½À´Ï´Ù."
		msg += "\n\nV " + ver + " ÀÌ»óÀ¸·Î ¾÷±×·¹ÀÌµå ÇÏ½Ã±â ¹Ù¶ø´Ï´Ù."
		if (EnableMsg)	alert(msg);
		return false;
	}
}

function SignFile(filename)
{
	var obj = ModuleInstallCheck();
	if (obj == null) return "";
	
	return obj.SignFile(filename);
}

//ÀÌÁß¾ÏÈ£È­
function EncryptTo(cert, data)
{
	var ver = "4, 3, 1, 0";
	if(EnableFunction(ver)) {
		obj = ModuleInstallCheck();
		if (obj == null) "";
		return obj.MakeINIpluginData2(cert, 0, cipher, data, "");
	} else {
		var msg;
		msg = "ÇöÀç ¼³Ä¡µÈ ¹öÀü V " + GetVersion() + " ¿¡¼­´Â ÀÌÁß¾ÏÈ£È­ ±â´ÉÀ» Áö¿øÇÏÁö ¾Ê½À´Ï´Ù."
		msg += "\n\nV " + ver + " ÀÌ»óÀ¸·Î ¾÷±×·¹ÀÌµå ÇÏ½Ã±â ¹Ù¶ø´Ï´Ù."
		if (EnableMsg) alert(msg);
		return "";
	}
	return "";
}

function AddValue(data, name, value)
{
	if(data!="") data += "&";
	data += URLEncode(name);
	data += "=";
	data += URLEncode(value);
	return data;
}

function SetProperty(name, value)
{
	var obj = ModuleInstallCheck();
	if (obj == null) return "";
	return obj.SetProperty(name, value);
}

// ÀºÇàÀÇ ¼­¹öÀÎÁõ¼­(BSCert)¸¦ ÀÌ¿ëÇÏ¿© ¾ÏÈ£È­µÈ SK»ý¼º
function makeSK(BSCert, form)
{
	var ver = "4, 5, 2, 11";
	if(!EnableFunction(ver)) {
		var msg;
		msg = "ÇöÀç ¼³Ä¡µÈ ¹öÀü V " + GetVersion() + " ¿¡¼­´Â ÀÌÁß¾ÏÈ£È­ ±â´ÉÀ» Áö¿øÇÏÁö ¾Ê½À´Ï´Ù."
		msg += "\n\nV " + ver + " ÀÌ»óÀ¸·Î ¾÷±×·¹ÀÌµå ÇÏ½Ã±â ¹Ù¶ø´Ï´Ù."
		if (EnableMsg) alert(msg);
		return false;
	}

	obj = ModuleInstallCheck();
	if (obj == null) {
		alert("¾ÏÈ£È­ÇÁ·¹ÀÓ(secureframe)À» Ã£À»¼ö ¾ø½À´Ï´Ù.");
		return false;
	}
	if (typeof form.INIencSK == "undefined") {
		alert("INIecnSK(form.name)°¡ ÇÊ¿äÇÕ´Ï´Ù.");
		return false;
	}
	
	form.INIencSK.value = obj.MakeSessionKeyInfo(BSCert, "SEED-CBC");
	return true;
}

// sk¸¦ ÀÌ¿ëÇÏ¿© Æ¯Á¤formÀÇ value°ªÀ» ¾ÏÈ£È­ÇÏ¿© ±âÁ¸ value¸¦ ±³Ã¼ÇÔ
function EncryptToSK(name, form)
{
	var ver = "4, 5, 2, 11";
	if(!EnableFunction(ver)) {
		var msg;
		msg = "ÇöÀç ¼³Ä¡µÈ ¹öÀü V " + GetVersion() + " ¿¡¼­´Â ÀÌÁß¾ÏÈ£È­ ±â´ÉÀ» Áö¿øÇÏÁö ¾Ê½À´Ï´Ù."
		msg += "\n\nV " + ver + " ÀÌ»óÀ¸·Î ¾÷±×·¹ÀÌµå ÇÏ½Ã±â ¹Ù¶ø´Ï´Ù."
		if (EnableMsg) alert(msg);
		return false;
	}

	obj = ModuleInstallCheck();
	if (obj == null) {
		alert("¾ÏÈ£È­ÇÁ·¹ÀÓ(secureframe)À» Ã£À»¼ö ¾ø½À´Ï´Ù.");
		return false;
	}
	for(var i=0; i<form.elements.length; i++) 
	{
		var element = form.elements[i];
		if (element.name == name) {
			element.value = obj.EncryptWithSKInfo2(form.INIencSK.value, element.value);
			return true;
		}
	}
	alert("ÀÌÁß¾ÏÈ£È­ÇÒ form.name(" + name + ")À» Ã£À»¼ö°¡ ¾ø½À´Ï´Ù.");
	return false;
}



function IsCachedCert()
{
	var obj = ModuleInstallCheck();
	if (obj == null) return false;
	return obj.IsCachedCert();
}

function GetCachedCert(name)
{
	var obj = ModuleInstallCheck();
	if (obj == null) return "";
	return obj.GetCachedCert(name);
}

function CheckCRL(cert)
{
	var obj = ModuleInstallCheck();
	if (obj == null) return false;
	return obj.CheckCRL(cert);
}

function ViewCert(cert)
{
	var obj = ModuleInstallCheck();
	if (obj == null) return;
	obj.ViewCert(cert);
}

//¼±Á¾ Ãß°¡... °øÀ¯ °ªÀ» ³ÖÀ» ¼ö ÀÖÀ½
function setSharedAttribute(name, value){
	obj = ModuleInstallCheck();
	if (obj == null) return false;

	var ver = "5, 1, 5, 23";
	if(!EnableFunction(ver)) {
		var msg;
		msg = "ÇöÀç ¼³Ä¡µÈ ¹öÀü V " + GetVersion() + " ¿¡¼­´Â º» ±â´ÉÀ» Áö¿øÇÏÁö ¾Ê½À´Ï´Ù."
		msg += "\n\nV " + ver + " ÀÌ»óÀ¸·Î ¾÷±×·¹ÀÌµå ÇÏ½Ã±â ¹Ù¶ø´Ï´Ù."
		if (EnableMsg) alert(msg);
		return false;
	}
	
	obj.setSharedAttribute(name, value);
	return true;
}

function getSharedAttribute(name){
	obj = ModuleInstallCheck();
	if (obj == null) return null;

	var ver = "5, 1, 5, 23";
	if(!EnableFunction(ver)) {
		var msg;
		msg = "ÇöÀç ¼³Ä¡µÈ ¹öÀü V " + GetVersion() + " ¿¡¼­´Â º» ±â´ÉÀ» Áö¿øÇÏÁö ¾Ê½À´Ï´Ù."
		msg += "\n\nV " + ver + " ÀÌ»óÀ¸·Î ¾÷±×·¹ÀÌµå ÇÏ½Ã±â ¹Ù¶ø´Ï´Ù."
		if (EnableMsg) alert(msg);
		return false;
	}
	
	return obj.getSharedAttribute(name);
}

/*
 * Ä³½¬µÈ ÀÎÁõ¼­ÀÇ serial °ªÀ» ¸®ÅÏÇÑ´Ù.
 * add by juno at 2004/11/11 - ½ÅÇÑÀºÇà Å¬¶óÀÌ¾ðÆ®¿¡¼­ ÀÎÁõ¼­ È®ÀÎÇÏ±â
 * GetCachedData("serial") - ÇöÀç Ä³½¬µÈ ÀÎÁõ¼­ÀÇ SerialNumber¸¦ ¸®ÅÏÇÑ´Ù.
 * GetCachedData("subjectcn") - ÇöÀç Ä³½¬µÈ ÀÎÁõ¼­ÀÇ SubjectCN¸¦ ¸®ÅÏÇÑ´Ù.
 * GetCachedData("subjectdn") - ÇöÀç Ä³½¬µÈ ÀÎÁõ¼­ÀÇ SubjectDNÀ» ¸®ÅÏÇÑ´Ù.
 * GetCachedData("issuerdn") - ÇöÀç Ä³½¬µÈ ÀÎÁõ¼­ÀÇ IssuerDNÀ» ¸®ÅÏÇÑ´Ù.
 */
function GetCachedData(key)
{
	obj = ModuleInstallCheck();
	if (obj == null) {
		alert("¾ÏÈ£È­ÇÁ·¹ÀÓ(secureframe)À» Ã£À»¼ö ¾ø½À´Ï´Ù.");
		return false;
	}

	if(key == "serial") {
	    return obj.GetCachedData(key);
	}
        else if(key == "subjectcn") {
	    return obj.GetCachedData(key);
	}
	else if(key == "subjectdn") {
	    return obj.GetCachedData(key);
	}
	else if(key == "issuerdn") {
	    return obj.GetCachedData(key);
	}
	else {
	    alert("Àû´çÇÑ key°¡ ¾Æ´Õ´Ï´Ù. [serial, subjectdn, subjectcn, issuerdn]");
	    return false;
	}
}

//ÆÄÀÏ °æ·Î¸¦ ÀÔ·Â¹Þ¾Æ ÇØ½¬°ª ¸®ÅÏÇØÁÜ.
function FileHash(filepath)
{
	//SetProperty("FileHash", filepath);

	alert("filepath : " + filepath);
	if (obj == null){ 
		alert("obj load fail");
	}
	else
	{
		return obj.ExtendMethod("FileHash", filepath);
	}
}

function FilterCert(storage, issuerAndSerial)
{
    obj = ModuleInstallCheck();
    if (obj == null) return -1;
	
	return obj.FilterCert(storage, issuerAndSerial);
}

function EncryptFile(sk,file1,file2){
	
	alert("file1["+file1+"]");
	alert("file2["+file2+"]");
	
	obj = ModuleInstallCheck();
 	if (obj == null) return null;
 	b64key = obj.Base64(0, sk+'INISAFE NETWORK.');
 	ret = obj.EncryptFile("SEED-CBC", b64key, file1, file2);
 	alert(ret);
  	return ret;

}
//ÀÎÁõ¼­ Ã¢ Ä³½¬±â´É ¹× Ä¸¼Çº¯°æ ÇÔ¼ö(2007.04.30)
/* 
	ForceCertQuest("ShowOnlySelectedOne");   
    - ¸¶Áö¸· Á¦ÃâµÈ ÀÎÁõ¼­¸¸ Ãâ·Â ÇÔ
    ForceCertQuest("CertReplace,MsgForChangeCert"); 
    - ¸ðµç ÀÎÁõ¼­¸¦ Ãâ·ÂÇÑ ÈÄ, ¸¶Áö¸· Á¦ÃâµÈ ÀÎÁõ¼­¿Í ´Ù¸¥ ÀÎÁõ¼­¸¦ ¼±ÅÃÇßÀ» ¶§, »ç¿ëÀÚ¿¡°Ô °æ°í ¸Þ¼¼Áö¸¦ Ãâ·ÂÈÄ »õ·Î ¼±ÅÃÇÑ ÀÎÁõ¼­·Î Àû¿ëÇÔ
    ForceCertQuest("MsgForChangeCert"); 
    - ¸ðµç ÀÎÁõ¼­¸¦ Ãâ·ÂÇÑ ÈÄ, ¸¶Áö¸· Á¦ÃâµÈ ÀÎÁõ¼­¿Í ´Ù¸¥ ÀÎÁõ¼­¸¦ ¼±ÅÃÇßÀ» ¶§, »ç¿ëÀÚ¿¡°Ô °æ°í ¸Þ¼¼Áö¸¦ Ãâ·ÂÈÄ ÀÌÀü ÀÎÁõ¼­·Î Àû¿ëÇÔ
    ForceCertQuest("CertReplace,");
    - ¸ðµç ÀÎÁõ¼­¸¦ Ãâ·ÂÇÑ ÈÄ, ¸¶Áö¸· Á¦ÃâµÈ ÀÎÁõ¼­¿Í ´Ù¸¥ ÀÎÁõ¼­¸¦ ¼±ÅÃÇßÀ» ¶§, ¸Þ¼¼Áö ¾øÀÌ »õ·Î ¼±ÅÃÇÑ ÀÎÁõ¼­·Î Àû¿ëÇÔ
    ForceCertQuest(""); 
    - ¸ðµç ÀÎÁõ¼­¸¦ Ãâ·ÂÇÑ ÈÄ, ¸¶Áö¸· Á¦ÃâµÈ ÀÎÁõ¼­¿Í ´Ù¸¥ ÀÎÁõ¼­¸¦ ¼±ÅÃÇßÀ» ¶§, ¸Þ¼¼Áö ¾øÀÌ ÀÌÀü ÀÎÁõ¼­·Î Àû¿ëÇÔ
*/
function ForceCertQuest(caption)
{
  obj = ModuleInstallCheck();
  if (obj == null) return null;

  return obj.ExtendMethod("ForceCertQuest", caption); 
  //return obj.ExtendMethod("InitCache", "on");
 }

//INISafeWebSSO.exe·ÎºÎÅÍ ÇØ´ç auth_ref¸¦ Å°·Î ÀúÀåµÈ °ªÀ» ÀÐ¾î¿Í
//»õ·Î¿î INISafeWebClient¿¡ ¼ÂÆÃÇÑ´Ù.
function SetCachedData(auth_ref)    
{
	obj = ModuleInstallCheck();
	if (obj == null) return "";

	return obj.SetCachedData(auth_ref);
}

//INISafeWebSSO.exe¿¡ ÀúÀåµÈ °ªÀ» ¸ðµÎ Áö¿î´Ù. 
function ClearCachedData()   
{
	obj = ModuleInstallCheck();
	if (obj == null) return "";
	return obj.ClearCachedData();
}

//INISafeWebSSO.exe¸¦ ÁßÁö½ÃÅ²´Ù.
function EndCacheProcess()
{
	obj = ModuleInstallCheck();
	if (obj == null) return "";
	return obj.EndCacheProcess();
}

//INISafeWebSSO.exe¸¦ ½ÇÇàÇÏ°í formÀÇ auth_ref¸¦ Å°·Î ÇÏ¿©
//ÀÎÁõ¼­ Á¤º¸¸¦ ÀúÀåÇÑ´Ù.
function CacheEncFormVerify(form) 
{
	var INIdata = "";
	var eletemp = "";
	var filetemp = "";
	var Random = TimeURL; 

	obj = ModuleInstallCheck();
	if (obj == null) {
		alert("¾ÏÈ£È­ÇÁ·¹ÀÓ(secureframe)À» Ã£À»¼ö ¾ø½À´Ï´Ù.");
		return false;
	}

	filetemp = GatherFileValue(form, 0, true);
	if (filetemp !=  "") 
	{
		if ((form.filedata.value = obj.MakeFileData(1, cipher, filetemp)) == "") return false; 
	}

	eletemp = GatherValue(form, 0, true);
	
	if ((INIdata = obj.CacheINIpluginData(1, cipher, eletemp, Random))=="") return false;

	//add bye wakano 2001/01/29
	if (typeof form.INIpluginData == "undefined") 
	{
		if (ShinHan_plugin) // with for Shinhan Bank 
		{
			form.input.value = INIdata;
			form.input.name = "INIpluginData"; // for Shinhan Bank
		} else {
			alert("INIpluginData(form.name)°¡ ÇÊ¿äÇÕ´Ï´Ù.");
			return false;
		}
	} else {
		form.INIpluginData.value = INIdata;
	}

   	return true;
}

