/*==============================================================================
 * Copyright(c) 2009 NARUWARE
 *
 * @File        : sso-login.js
 *
 * @Description : SSO Login Ã³¸®¸¦ ¼öÇàÇÏ´Â ÀÚ¹Ù ½ºÅ©¸³Æ®.
 *
 * Change history 
 * @LastModifyDate : 20090525
 * @LastModifier      :  ÁÖÁ¤¹Î
 * @LastVersion       :  1.0
 *    2009-05-25  ÁÖÁ¤¹Î
 *        1.0         ÃÖÃÊ »ý¼º
==============================================================================*/

///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 												Àü¿ª º¯¼ö ¼±¾ð ºÎºÐ											 //
///////////////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////// »ó¼ö ¼±¾ð ///////////////////////////////////////////////////

// ·Î±×ÀÎ ±¸¼º °ü·Ã º¯°æ»çÇ×
var LOGIN_FORM_NAME = "loginForm";						// ·Î±×ÀÎ Æû ÀÌ¸§
var LOGIN_FORM_ID = "loginId";							// ¾ÆÀÌµð ÅØ½ºÆ® ¹Ú½º ÀÌ¸§
var LOGIN_FORM_PW = "loginPassword";					// ÆÐ½º¿öµå ÅØ½ºÆ® ¹Ú½º ÀÌ¸§
var LOGIN_FORM_CODE = "loginCode";					// ÆÐ½º¿öµå ÅØ½ºÆ® ¹Ú½º ÀÌ¸§
var LOGIN_BUTTON_ID = "loginBtn";							// ·Î±×ÀÎ ¹öÆ° ÀÌ¸§
var LOGIN_CERTIFICATION_BUTTON_ID = "loginCertification";	// ÀÎÁõ¼­ ·Î±×ÀÎ ¹öÆ° ÀÌ¸§.


var FORM_CERTIFICATION = '<form name="formCertification">'
	+ '<input type="hidden" name="method" value="3"/>'
	+ '<input type="hidden" name="signedData"/>'
	+ '<input type="hidden" name="dn"/>'
	+ '<input type="hidden" name="serialNo"/>'
	+ '<input type="hidden" name="certification"/>'
	+ '<input type="hidden" name="privateKey"/>'
	+ '<input type="hidden" name="randomNo"/>'
	+ '</form>';
var FORM_MEMORY = '<form name="formMemory">'
	+ '<input type="hidden" name="loginData"/>'
	+ '</form>';
var FORM_CLIENT = '<form name="formClient" method="post" action="secureChangeKey.jsp">'
	+ '<input type="hidden" name="initialSessionKey"/>'
	+ '<input type="hidden" name="certNotAfter"/>'
	+ '</form>';
var FORM_DATA = '<form name="formData">'
	+ '<input type="hidden" name="method" value="0"/>'
	+ '<input type="hidden" name="userId"/>'
	+ '<input type="hidden" name="userPassword"/>'
	+ '<input type="hidden" name="userORGCODE"/>'
	+ '</form>';
var FORM_ERROR = '<form name="formError" method="post" action="secureErrorPage.jsp">'
	+ '<input type="hidden" name="message"/>'
	+ '</form>';

///////////////////////////////////////////////////////////////////////////////////////////////////////////////
//													ÇÔ¼ö Á¤ÀÇ ºÎºÐ											 //
///////////////////////////////////////////////////////////////////////////////////////////////////////////////

//·Î±×ÀÎ ÆäÀÌÁö°¡ »ç¿ë ÁØºñ »óÅÂ°¡ µÇ¸é ½ÇÇàµÈ´Ù.
$(document).ready(
	function()
	{
		if (!useX && usePopup)
		{
			registerLoginButtonEvent();
			return;
		}
		
		if (useJava)
		{
			readyMagicPassServer();
		}
		else
		{
			readyPlugIn();
		}
		
		//¿£ÅÍÅ°¸¦ ÀÌ¿ëÇÑ ·Î±×ÀÎ
		$("#" + LOGIN_FORM_ID).bind("keypress", function (event) {loginByEnterKey(event); return;});
		$("#" + LOGIN_FORM_PW).bind("keypress", function (event) {loginByEnterKey(event); return;});

		//ÆäÀÌÁö ·Îµù ½Ã, ¾ÆÀÌµð¿¡ Ä¿¼­ Æ÷Ä¿½º
		$("#" + LOGIN_FORM_ID).focus();
	}
);

function readyMagicPassServer()
{
	log("readyMagicPassServer function started.");
	
	var pluginArea = document.getElementById("pluginArea");
	var pluginHtml = getPolicyAppletTag(SECURE_SERVER_URL);
		
	pluginArea.innerHTML = pluginHtml;
	
	log("readyMagicPassServer function end.");
}

function forwardPage()
{
	//document.form1.action = '<%=request.getParameter("originPage")%>';
	log("forwardPage function started.");
	
	// MagicPassS¸¦ ½ÇÇà È¤Àº Lookup ÀÌÀü¿¡ Policy AppletÀÌ destroy µÇ´Â °ÍÀ» ¸·±â À§ÇØ.
	setTimeout(readyPlugIn, 500);
	//readyPlugIn();
	
	log("forwardPage function end.");
}

function showMessage()
{
	//readyPlugIn();

	alert("¸ðµç ºê¶ó¿ìÀú¸¦ ´Ý°í ´Ù½Ã ·Î±×ÀÎ ÇÏ½Ê½Ã¿À.");
	
	window.close();
	
	if (window.opener)
	{
		window.opener.close();
	}
}

function readyPlugIn()
{
	log("readyPlugIn function started.");
	
	var pluginArea = document.getElementById("pluginArea");
	var pluginHtml = createObjectTag(useX, SECURE_SERVER_URL);
	
	// ÇÊ¼ö Æû ÄÁÆ®·Ñ »ý¼º
	pluginHtml += FORM_CERTIFICATION + FORM_MEMORY + FORM_CLIENT + FORM_DATA + FORM_ERROR;

	try
	{
		pluginArea.innerHTML = pluginHtml;
	}
	catch(e) {}
	
	// MagicPass È¤Àº MagicPassS°¡ ½ÇÇà »óÅÂÀÎÁö È®ÀÎ.
	if (!checkExistClientProgram(objectId, useX))
	{
		if (useX && browserType == BROWSER_IE)
		{
			// MagicPass°¡ ½ÇÇàÁßÀÌ ¾Æ´Ï¶ó¸é ½ÇÇà½ÃÅ°°í, ¼³Ä¡ µÇ¾î ÀÖÁö ¾Ê´Ù¸é ¼³Ä¡ ÆäÀÌÁö¸¦ ¶ç¿ö ¼³Ä¡Åä·Ï ÇÑ´Ù.
			if (!launchProgram(PROGRAM_RUN_URL, "", objectId, useX))
			{
				// »õÃ¢ ¶ç¿ö¼­ ¸ÅÁ÷ÆÐ½º ¼³Ä¡
				//var windowStyle = "width=420,height=500,directories=no,location=no,menubar=no,resizable=no,scrollbars=no,status=yes,titlebar=no,toolbar=no";
				//window.open("sso/secureInstaller.jsp", "MagicPassInstallerPage", windowStyle);
				//var bodyTag = document.getElementsByTagName("body")[0];
				//var cIfrm = document.createElement("iframe");
				//cIfrm.setAttribute("src", "sso/secureInstaller.jsp");
				//bodyTag.appendChild (cIfrm);

			}
		}
		else
		{
			// MagicPass È¤Àº MagicPassS¸¦ ½ÇÇà½ÃÅ²´Ù. AppletÀÎ °æ¿ì MagicPass´Â ÀÌ¹Ì ¾ÖÇÃ¸´°ú ÇÔ²² ´Ù¿î·Îµå µÇ¾î ÀÖ´Â »óÅÂÀÌ´Ù.
			launchProgram();
		}
	}

	// ¼­¹ö ÀÎÁõ¼­ °¡Á®¿À±â
	sendData(ACTION_URL, "actionName=GET_SERVER_CERTIFICATION");

	// ¹öÆ° Å¬¸¯ ÀÌº¥Æ® µî·Ï
	registerLoginButtonEvent();

	log("readyPlugIn function end.");
}

function loginByEnterKey(event)
{
	if (event.keyCode == 13)
	{
		doLogin();
	}
}

function registerLoginButtonEvent()
{
	if (document.getElementById(LOGIN_BUTTON_ID)) {
		if (window.attachEvent)
		{
			document.getElementById(LOGIN_BUTTON_ID).attachEvent("onclick", doLogin);

			//ÀÎÁõ¼­ ¹öÆ° »ç¿ë ¾ÈÇÏ´Â °æ¿ì
			try {
				document.getElementById(LOGIN_CERTIFICATION_BUTTON_ID).attachEvent("onclick", loginUsingCertification);
			}
			catch (e) {
			}
			
			log("IE Style Button Event registered.");
		}
		else if (window.addEventListener)
		{
			document.getElementById(LOGIN_BUTTON_ID).addEventListener("click", doLogin, false);
			
			//document.getElementById(LOGIN_CERTIFICATION_BUTTON_ID).addEventListener("click", loginUsingCertification, false);
			
			log("NON-IE Style Button Event registered.");
		}
		else
		{
			log("Button Event register failed.");
		}
		
		//document.getElementById(LOGIN_BUTTON_ID).style.cursor = "pointer";
		//document.getElementById(LOGIN_CERTIFICATION_BUTTON_ID).style.cursor = "pointer";
	}
}

function doLogin()
{
	log("doLogin Fuction Started.");
	
	loginType = LOGIN_BY_ID;
	
	if (usePopup)
	{
		winBridge = openBridgeWindow("login");
	}
	else
	{
		if (checkLogin())
		{
			if (isRelogin)
			{
				startLogin();
			}
			else
			{
				if (validateInputValue())
				{
					document.formData.userId.value = document.getElementById(LOGIN_FORM_ID).value;
					document.formData.userPassword.value = document.getElementById(LOGIN_FORM_PW).value;

					//±â°üÄÚµå ¾ø´Â ¿¹¿Ü¿¡ ´ëÇÑ try
					try
					{
						document.formData.userORGCODE.value = document.getElementById(LOGIN_FORM_CODE).value;

						//[±â°üÄÚµå_¾ÆÀÌµð] Çü½ÄÀ¸·Î ¸¸µé±â
						document.formData.userId.value = document.getElementById(LOGIN_FORM_CODE).value + "_" + document.formData.userId.value; 
					}
					catch (e)
					{
					}
					
					// ·Î±×ÀÎ Á¤º¸ ¼³Á¤
					document.formMemory.loginData.value = makePlainText(document.formData);
		
					// ·Î±×ÀÎ ½ÃÀÛ
					startLogin();
				}
			}
		}
		else
		{
			alert("ÇöÀç ·Î±×ÀÎ»óÅÂÀÇ »ç¿ëÀÚ°¡ ·Î±×¿ÀÇÁ µÇ¾ú½À´Ï´Ù.\n\n·Î±×¿Â ÇÏ½Ã·Á¸é ·Î±×ÀÎ ¹öÆ°À» ´­·¯ ÁÖ½Ê½Ã¿À.");
		}
	}
	
	log("doLogin Fuction end.");
	
	return false;
}


function isExistId (id)
{
	var returnValue = false;
	
	$.ajax ({
		url			: "sso/idCheck.jsp"
		,type		: "POST"
		,dataType	: "xml"
		,data		: "id=" + encodeURIComponent (id)
		,async		: false
		,success	: function (xml)
			{
				returnValue = $(xml).find("value").text();
			}
	});
	
	return eval(returnValue);
}


/**
 * ·Î±×ÀÎÀÌ µÇ¾î ÀÖ´ÂÁö Ã¼Å©ÇÑ´Ù.
 * @return
 */
function checkLogin()
{
	log("checkLogin function started.");
	
	var returnCode = 0;
	
	if (isLogin(SITE_NAME))
	{
//		if (confirm("ÀÌ¹Ì ·Î±×ÀÎ µÇ¾î ÀÖ½À´Ï´Ù.\n\n·Î±×ÀÎµÈ »ç¿ëÀÚ¸¦ ·Î±×¿ÀÇÁ ÇÏ½Ã°Ú½À´Ï±î?"))
//		{
			ssoLogout(SITE_NAME);
//			return false;
//		}
//		else
//		{
			// ÇöÀç »ç¿ëÀÚ Á¤º¸·Î Àç·Î±×ÀÎ ±â´ÉÀº ¾ø¾Ö´Â°Ô ÁÁÀ» µíÇÔ. ¹«Á¶°Ç ·Î±×ÀÎ ÇÏ°Ô...
			//isRelogin = true;
//		}
	}
//	else
//	{
		returnCode = initModule(pkiType, algorismType, loginType, SITE_NAME);
		setSiteDelegate(SITE_NAME, SITE_DELEGATE_NAME);
/*
 * MagicPass°¡ Single Domain ¸¸À» Áö¿øÇÏ´Â ¹öÀüÀÎ °æ¿ì »ç¿ë.
		if (returnCode == OTHER_LOGON_STATUS)	// ÇöÀç ´Ù¸¥ »çÀÌÆ®¿¡ ·Î±×ÀÎ µÈ »óÅÂ
		{
			if (confirm("ÇöÀç ´Ù¸¥ »çÀÌÆ®¿¡ ·Î±×ÀÎ µÇ¾î ÀÖ½À´Ï´Ù.\n\n·Î±×¾Æ¿ôÀ» ½ÇÇàÇÑ µÚ, ·Î±×ÀÎ ÇÏ¼Å¾ß ÇÕ´Ï´Ù.\n·Î±×¾Æ¿ôÀ» ½ÇÇà ÇÏ½Ã°Ú½À´Ï±î?") )
			{
				ssoLogout(SITE_NAME);
				return false;
			}
			else
			{
				//alert("·Î±×¾Æ¿ôÀ» Ãë¼ÒÇÏ¼Ì½À´Ï´Ù.");
			}
		}
*/
//	}
	
	log("checkLogin function end.");
	
	return true;
}

/**
 * ¾ÆÀÌµð, ÆÐ½º¿öµå¸¦ ÀÔ·ÂÇÏ¿´´ÂÁö °Ë»ç.
 * 
 * @return
 */
function validateInputValue()
{
	log("validateInputValue function started.");
	
	var returnValue = true;

	var loginId = document.getElementById(LOGIN_FORM_ID);
	var loginPassword = document.getElementById(LOGIN_FORM_PW);

	if (loginId.value.length == 0)
	{
		alert("»ç¿ëÀÚ ID¸¦ ÀÔ·ÂÇÏ½Ê½Ã¿À.");
		loginId.focus();
		returnValue = false;
	}
	else if (loginPassword.value.length == 0)
	{
		alert("»ç¿ëÀÚ ÆÐ½º¿öµå¸¦ ÀÔ·ÂÇÏ½Ê½Ã¿À.");
		loginPassword.focus();
		returnValue = false;
	}
	
	log("validateInputValue function end.");
	
	return returnValue;
}

/**
 * 
 * @param form
 * @return
 */
function makePlainText(form)
{
	log("makePlainText fuction started.");
	
	var name = new Array(form.elements.length); 
	var value = new Array(form.elements.length); 
	var flag = false;
	var j = 0;
	var plain_text = "";
	var len = form.elements.length;
	
	for (var 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) 
				{
					name[j] = form.elements[i].name; 
					value[j] = form.elements[i].value;
					j++;
				}
			}
			else
			{
				name[j] = form.elements[i].name;
				
				if (form.elements[i].type == "select")
				{
					var ind = form.elements[i].selectedIndex;
					
					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].value;
				}
				
				j++;
			}
		}
	}
	
	for (i = 0; i < j; i++)
	{
		if (flag)
		{
			//plain_text += "¡è";
			plain_text += String.fromCharCode(8593);
		}
		else
		{
			flag = true;
		}
		
		plain_text += name[i] ;
		//plain_text += "¡é";
		plain_text += String.fromCharCode(8595);
		plain_text += value[i];
	}
	
	log("makePlainText fuction end.");

	return encodeURI(plain_text);
}

/**
 * SSO Login Ã³¸®¸¦ ½ÃÀÛÇÑ´Ù.
 * MagicPass¿¡¼­ ºñ¹ÐÅ° »ý¼ºÇÏ¿© ¼­¹öÀÇ °ø°³Å°·Î ¾ÏÈ£È­ÇÏ¿© ¼­¹ö·Î Àü¼ÛÇÑ´Ù.
 * 
 * @return
 */
function startLogin()
{
	log("startLogin function started.");
	
	// »çÀÌÆ® ÀÌ¸§°ú ¼­¹ö ÀÎÁõ¼­¸¦ ¼³Á¤ÇÏ¿©, EnvelopÇÑ ¼¼¼ÇÅ°¸¦ ¾ò´Â´Ù.		
	var initialSessionKey = "";
	var returnCode = -1;
	
	if (SERVER_CERTIFICATION == "")
	{
		sendData(ACTION_URL, "actionName=GET_SERVER_CERTIFICATION");
	}
	
	if (isRelogin)
	{
		returnCode = getAppEnvKey(SITE_NAME, LOGIN_APPLICATION_CODE, SERVER_CERTIFICATION)
	}
	else
	{
		returnCode = getLoginEnvKey(SITE_NAME, SERVER_CERTIFICATION);
	}
	
	if (returnCode == 0)
	{
		initialSessionKey = getResult(useX);
	}
	else if (returnCode == -1 || returnCode == 103)
	{
		var bodyTag = document.getElementsByTagName("body")[0];
		var cIfrm = document.createElement("iframe");
		cIfrm.setAttribute("src", "sso/secureInstaller.jsp");
		cIfrm.setAttribute("border", "0");
		cIfrm.setAttribute("frameborder", "0");
		cIfrm.setAttribute("height", "1");
		$(cIfrm).css("visibility", "hidden");
		bodyTag.appendChild (cIfrm);
		return false;
	}
	else if (returnCode == 586)
  {
      initModule(pkiType, algorismType, loginType, SITE_NAME);
      setSiteDelegate(SITE_NAME, SITE_DELEGATE_NAME);

      if (isRelogin)
      {
        returnCode = getAppEnvKey(SITE_NAME, LOGIN_APPLICATION_CODE, SERVER_CERTIFICATION)
      }
      else
      {
        returnCode = getLoginEnvKey(SITE_NAME, "MIID6DCCA1GgAwIBAgIEAh8vCTANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQGEwJrcjEQMA4GA1UEChMHeWVzc2lnbjETMBEGA1UECxMKTGljZW5zZWRDQTESMBAGA1UEAxMJeWVzc2lnbkNBMB4XDTA0MTAzMTE1MDAwMFoXDTA1MTEwMTE0NTkwMFowbTELMAkGA1UEBhMCa3IxEDAOBgNVBAoTB3llc3NpZ24xETAPBgNVBAsTCHBlcnNvbmFsMQwwCgYDVQQLEwNTSEIxKzApBgNVBAMMIu2VnOyInO2YuCgpMDAyNjAxMzIwMDQwNjI1MDAwMDA4NTAwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMUdenFnf/yKmr4A7PHvVuhz9MCEu3q/oU6iV36pb1pYtSuAdB4iY+Xoy792euo7VySN5JLaGJ3Y7SxwnG8I78ggYoKo4gtVIpQ/EO2P1UV4FlY6RmY4GPRuMxxVuugu2tMmx76pBv4hQKAeK3kYenyzgpZvsQui4Fmv93gWKQPLAgMBAAGjggG4MIIBtDAfBgNVHSMEGDAWgBTi7G0s5X2bwJ6sAVN5upqPmoXZCzAdBgNVHQ4EFgQUkItG3XIGae2hyr1x7QDUNp7LfpIwDgYDVR0PAQH/BAQDAgbAMHkGA1UdIAEB/wRvMG0wawYJKoMajJpFAQEBMF4wLgYIKwYBBQUHAgIwIh4gx3QAIMd4yZ3BHLKUACCs9cd4x3jJncEcACDHhbLIsuQwLAYIKwYBBQUHAgEWIGh0dHA6Ly93d3cueWVzc2lnbi5vci5rci9jcHMuaHRtMFgGA1UdEQRRME+gTQYJKoMajJpECgEBoEAwPgwJ7ZWc7Iic7Zi4MDEwLwYKKoMajJpECgEBATAhMAcGBSsOAwIaoBYEFPC0/1/ftkOeLcgtBqMBv1KQzTrTMFMGA1UdHwRMMEowSKBGoESGQmxkYXA6Ly8yMDMuMjMzLjkxLjM1OjM4OS9vdT1kcDJwMTE4Njcsb3U9TGljZW5zZWRDQSxvPXllc3NpZ24sYz1rcjA4BggrBgEFBQcBAQQsMCowKAYIKwYBBQUHMAGGHGh0dHA6Ly9vY3NwLnllc3NpZ24ub3JnOjQ2MTIwDQYJKoZIhvcNAQEFBQADgYEAk37g7Ye7uT9rZAyYo2wQDI4/XUoLKTuc603OWr3UHGU/U8uhSrXpXjZqg0hUVuz1FV+fNrcGWfuVxwr6+AZeDkn0SJ0Z9kj7mzktzXhSvZTzK0mATRhe9fdyWIWIE7F15e24gP58bGLt/DrCX8UoysHr/2eEr3JCOCP/p3QoivQ=");
      }

      initialSessionKey = getResult(useX);
  }
  else
	{
		processingError("[" + returnCode + "]" + getErrorMessage(returnCode));
		return false;
	}

	//±â°üÄÚµå ¾øÀ»°æ¿ì
	try
	{
		sendData(ACTION_URL, "actionName=SET_CODE&code=" + encodeURIComponent(document.getElementById(LOGIN_FORM_CODE).value));
	}
	catch (e)
	{
	}
	
	if (initialSessionKey == null || initialSessionKey == "")
	{
		processingError("Fail to create init SessionKey!!");
	}
	else
	{
		sendData(ACTION_URL, "actionName=INIT_KEY&initialSessionKey=" + encodeURIComponent(initialSessionKey));
	}
	
	log("startLogin function end.");
	
	return null;
}

/**
 * ¼­¹ö ÀÎÁõ¼­·Î Enveloping ÇÑ Å°
 * 
 * @param siteName
 * @param certification
 * @return
 */
function getLoginEnvKey(siteName, certification)
{
	log ("getLoginEnvKey function started : [" + siteName + "]");
	
	var result = -1;
	
	try
	{
		result = document.getElementById(objectId).GetLogonEnvKey(siteName, certification);
	}
	catch (e)
	{
	}
	
	log ("getLoginEnvKey function end : [" + result + "]");
	
	return result;
}

/**
 * ¼­¹ö¿¡¼­ »ý¼ºÇÑ ºñ¹ÐÅ°¸¦ MagicPass(S)¿¡ ¼³Á¤ÇÑ´Ù.
 * 
 * @param siteName
 * @param encryptedClientSessionKey
 * @return
 */
function changeLoginKey(siteName, encryptedClientSessionKey)
{
	log("changeLoginKey function started.");
	
	var result = document.getElementById(objectId).ChangeLogonKey(siteName, encryptedClientSessionKey);
	
	log("changeLoginKey function end.");
	
	return result;
}

/**
 * ¼­¹ö¿Í µ¿±âÈ­ ½ÃÅ² ºñ¹ÐÅ°·Î ·Î±×ÀÎ µ¥ÀÌÅÍ¸¦ ¾ÏÈ£È­ÇÑ´Ù.
 * 
 * @param siteName
 * @param loginData
 * @return
 */
function encryptLoginData(siteName, loginData)
{
	log("encryptLoginData function started : [" + siteName + ", " + loginData + "]");
	
	var result = -1;

	if (loginType == LOGIN_BY_ID)
	{
		result = document.getElementById(objectId).EncryptLogon(siteName, decodeURI(loginData));
	}
	else if (loginType == LOGIN_BY_CERT)
	{
		if (useX && browserType == BROWSER_IE)
		{
			result = document.getElementById(objectId).EncryptAuth(siteName, loginData);
		}
		else
		{
			result = document.getElementById(objectId).EncryptLogon(siteName, decodeURI(loginData));
		}
	}
	else
	{
		alert("Á¤ÀÇµÇÁö ¾ÊÀº ·Î±×ÀÎ Å¸ÀÔÀÔ´Ï´Ù. : [" + loginType + "]");
	}
	
	log("encryptLoginData function end : [" + result + "]");
	
	return result;
}

/**
 * 
 * @param siteName
 * @param charsetName 0 - ANSI, 1 - UTF-8
 * @return
 */
function setCharSet(siteName, charsetName)
{
	document.getElementById(objectId).SetCharSet(siteName, charsetName);
}

/**
 * EAM »ç¿ë½Ã Application Á¤º¸¸¦ MagicPass(S)¿¡ ¼³Á¤ÇÑ´Ù.
 * 
 * @param xmlString
 * @return
 */
function setApplication(xmlString)
{
	return document.getElementById(objectId).SetApplication(xmlString);
}

/**
 * ÃÊ±â Á¤º¸ ¼³Á¤, »çÀÌÆ® ÀÌ¸§°ú ¾ÏÈ£È­ ¹æ¹ýÀ» ¼³Á¤ÇÑ´Ù.
 * 
 * @param pkiType - 0 : GPKI, 1 : NPKI
 * @param cryptAlgo - Crypt Algorithm
 * @param loginMode
 * @param siteName
 * @return 0 : ¼º°ø, Other : ½ÇÆÐ
 */
function initModule(pkiType, cryptAlgo, loginMode, siteName)
{
	log("initModule function started.");
	var result = -1;
	
	try {
		result = document.getElementById(objectId).Init(pkiType, cryptAlgo, loginMode, siteName);
	}
	catch (e) {
	}
	
	log("initModule function end.");
	
	return result;
}

/**
 * MagicPass¿¡ »çÀÌÆ® ÀÌ¸§À» ¼³Á¤ÇÑ´Ù. ¼³Á¤ÇÏÁö ¾ÊÀ¸¸é »çÀÌÆ® ÄÚµå°¡ ³ªÅ¸³­´Ù.
 * 
 * @param siteName
 * @param delegate
 * @return
 */
function setSiteDelegate(siteName, delegate)
{
	log("setSiteDelegate function started.");
	
	try
	{
		document.getElementById(objectId).SetSiteDelegate(siteName, delegate);
	}
	catch (e)
	{
	}
	
	log("setSiteDelegate function end.");
}

function loginUsingCertification()
{
	log("loginUsingCertification function started.");
	
	loginType = LOGIN_BY_CERT;
	
	// ·Î±×ÀÎÃ¼Å©
	if (checkLogin())
	{
		if (isRelogin)
		{
			startLogin();
		}
		else
		{
			if (useX && browserType == BROWSER_IE)
			{
				// ÀÎÁõ¼­
				document.NMPCertX.Site = SITE_NAME;
				document.NMPCertX.LogonType = 2;
				
				if (document.NMPCertX.Start() == 0)
				{
					if (document.NMPCertX.MakeSignedData("signed") == 0)
					{
						document.formCertification.signedData.value = document.NMPCertX.Result;
						
						document.formMemory.loginData.value = "V5;0;0000;" + document.formCertification.signedData.value;
					}
					else
					{
						processingError("ÀÎÁõ¼­ Á¤º¸¸¦ È¹µæÇÏÁö ¸øÇÏ¿´½À´Ï´Ù.");
					}
					
					loginFlag = true;
		
					// ·Î±×ÀÎ
					startLogin();
				}
				else
				{
					loginFlag = false;
				}
			}
			else
			{
		//		initModule("<%=NPKI_TYPE%>", "<%=SYM_ALG_SEED_CBC%>", "<%=LOGON_BY_ID%>", "<%=MG_SITE_NAME%>");
		//		setSiteDelegate("<%=MG_SITE_NAME%>", "<%=SITE_DELEGATE_NAME%>");
				
				showMagicPassJ();
			}
		}
	}
	else
	{
		alert("ÇöÀç ·Î±×ÀÎ»óÅÂÀÇ »ç¿ëÀÚ°¡ ·Î±×¿ÀÇÁ µÇ¾ú½À´Ï´Ù.\n\n´Ù½Ã ·Î±×ÀÎ ÇÏ½Ê½Ã¿À.");
	}
	
	log("loginUsingCertification function end.");
	
	return false;
}

function showMagicPassJ()
{
	log("showMagicPassJ function started.");
	
	document.getElementById(objectId).certLoginManager.setLogoURL(SITE_LOGO_URL);
	document.getElementById(objectId).certLoginManager.setLogonSite(SITE_NAME);
	document.getElementById(objectId).certLoginManager.setLogonType(0);     // CN=1, DN=0;	  
	//document.getElementById(objectId).certLoginManager.setClienIP("<%=request.getRemoteAddr()%>");
	document.getElementById(objectId).certLoginManager.setClienIP("61.83.188.161");
	
	var returnCode = document.getElementById(objectId).certLoginManager.Start();

	if (returnCode == 0)
	{ 
		// Cert info
		document.formCertification.certification.value = document.getElementById(objectId).certLoginManager.getCert();			// ÀÎÁõ¼­
		document.formCertification.serialNo.value = document.getElementById(objectId).certLoginManager.getSerialNo();	// SerialNo
		document.formCertification.signedData.value = document.getElementById(objectId).certLoginManager.getLogon();		// Signed Data
		document.formCertification.dn.value = document.getElementById(objectId).certLoginManager.getSubjectDN();		// DN

		// 2005-08-26 Ãß°¡»çÇ×
		//certlogonForm.PRIVATEKEY.value = document.getElementById('MagicPassJ').certManager.getPrivateKey();	// PrivateKey
		document.formCertification.randomNo.value = document.getElementById(objectId).certLoginManager.getRandomNo();		// RandomNo
		document.formClient.certNotAfter.value = document.getElementById(objectId).certLoginManager.getCertNotAfter();

		// ·Î±×¿Â Á¤º¸ ¼³Á¤
		// Applet ÀÎÁõ¼­ ·Î±×ÀÎÀÏ °æ¿ì¿¡´Â 3.0 ¹æ½ÄÀ¸·Î Ã³¸®.
		document.formMemory.loginData.value = makePlainText(document.formCertification);

		// ·Î±×ÀÎ
		startLogin();
	}
	
	log("showMagicPassJ function end.");
}

/**
 * AppletÀÇ start() ¸Þ¼­µå ¸¶Áö¸·¿¡¼­ È£ÃâµÈ´Ù.
 * ÆäÀÌÁö°¡ ·Îµå µÇ¸é¼­ MagicPass È¤Àº MagicPassS¸¦ ½ÇÇà½ÃÄ×À¸¹Ç·Î ¿©±â¼­´Â ÀçÈ®ÀÎ ÇÑ´Ù.
 * @return
 */
function doProcess()
{
	log("doProcess function started.");
	
	// MagicPass È¤Àº MagicPassS°¡ ½ÇÇà »óÅÂÀÎÁö È®ÀÎ.
	if (!checkExistClientProgram(objectId, useX))
	{
		if (useX && browserType == BROWSER_IE)
		{
			// MagicPass°¡ ½ÇÇàÁßÀÌ ¾Æ´Ï¶ó¸é ½ÇÇà½ÃÅ°°í, ¼³Ä¡ µÇ¾î ÀÖÁö ¾Ê´Ù¸é ¼³Ä¡ ÆäÀÌÁö¸¦ ¶ç¿ö ¼³Ä¡Åä·Ï ÇÑ´Ù.
			if (!launchProgram(PROGRAM_RUN_URL, "", objectId, useX))
			{
				// »õÃ¢ ¶ç¿ö¼­ ¸ÅÁ÷ÆÐ½º ¼³Ä¡
				//var windowStyle = "width=420,height=480,directories=no,location=no,menubar=no,resizable=no,scrollbars=no,status=yes,titlebar=no,toolbar=no";
				//window.open("sso/secureInstaller.jsp", "MagicPassInstallerPage", windowStyle);
			}
		}
		else
		{
			// MagicPass È¤Àº MagicPassS¸¦ ½ÇÇà½ÃÅ²´Ù. AppletÀÎ °æ¿ì MagicPass´Â ÀÌ¹Ì ¾ÖÇÃ¸´°ú ÇÔ²² ´Ù¿î·Îµå µÇ¾î ÀÖ´Â »óÅÂÀÌ´Ù.
			launchProgram();
		}
	}
	
	log("doProcess function end.");
}

/**
  * MagicPass ¿¡¼­ ÀÚµ¿À¸·Î ·Î±×¾Æ¿ô ½ÃÅ²´Ù (10ÃÊ)
  * 
  * @param siteName
  * @param token
  * @return
  */
 function setAutoLogoutSite(siteName)
 {
	log("setAutoLogoutSite function execute.");
	
	var result = null;
	
	try {
		result = document.getElementById(objectId).SetAutoLogoutSite(siteName);
	}
	catch (e) {
	}
 	
	return result;
 }

 
/**
 * MagicPass(S)¿¡ »ç¿ëÀÚ ÅäÅ« Á¤º¸¸¦ ¼¼ÆÃÇÑ´Ù.
 * 
 * @param siteName
 * @param token
 * @return
 */
function setToken(siteName, token)
{
	return document.getElementById(objectId).SetToken(siteName, token);
}

function enableLoginControl()
{
	log("enableLoginControl function started.");
	
	try
	{
		if (useControlDisable)
		{
			var loginForm = document.getElementById(LOGIN_FORM_NAME);
			
			for (var i = 0, limit = loginForm.elements.length; i < limit; i++)
			{
				loginForm.elements[i].disabled = false;
			}
		}
	}
	catch (e)
	{
	}
	
	log("enableLoginControl function end.");
}

