

var pluginURL = "/js/SecuiSCTIE.cab"; 
var cabVersion = "#Version=4,0,0,2";  

var encAlgo = "SEED";                 
var signAlgo = "SHA1";                
var signCert = null;                   
var encRandom = null;				   

var serverCert = "-----BEGIN CERTIFICATE-----|MIICWzCCAcSgAwIBAgICAsEwDQYJKoZIhvcNAQEFBQAwODETMBEGA1UECgwKdW5l|dHN5c3RlbTEQMA4GA1UECwwHVHJ1c3RDQTEPMA0GA1UEAwwGQ0xBU1MxMB4XDTA4|MDUyMjAwMzU1M1oXDTE4MDUyMTAwMzU1M1owNzETMBEGA1UECgwKdW5ldHN5c3Rl|bTESMBAGA1UECwwJbWlyYWVsaWZlMQwwCgYDVQQDDAMwMDEwgZ8wDQYJKoZIhvcN|AQEBBQADgY0AMIGJAoGBAL9jLJTkuFfwAn7W8TUPZ3L/LKF8QrhtmhVLM7XLHrwp|J7K7jb9E2RhfTwt6cVLhWL/D8RBKlb3N0behS/kwhfSj9gq9t+DckbsLRTmfE6Ep|IR15Tp1FNUEgJnQUwehckv+0dojbbEVn0FjKZz7lc2/rhgTp5Bn01qlyOFRZxIb1|AgMBAAGjdTBzMAsGA1UdDwQEAwIDODAJBgNVHRMEAjAAMFkGA1UdHwRSMFAwTqBM|oEqGSGxkYXA6Ly8xMC4xMC4zMC40NzozODkvY249dW5ldHN5c3RlbSxjbj1UcnVz|dFJBMSxvdT1UcnVzdENBLG89dW5ldHN5c3RlbTANBgkqhkiG9w0BAQUFAAOBgQCX|WnbVXb2gojbNT/KmNbBrpNQupiHitNfHFqBIM9oO+0UgUtkxcv0wxnivU4wAm2lp|dJnd00TgQAgECaY+oBqQYxbuuQAO1BGb9XenFA7+cU00tDeDQFocACmngxsowVS2|m62JViE4uPh6x+Xf+OlHCNM+hoFle2J6Fswc3zsw7A==|-----END CERTIFICATE-----";

document.writeln('<OBJECT ID="SecuiSS" CLASSID="clsid:6B016453-8383-4DFE-8677-F068B972645E" width=0 height=0 ');
document.writeln('CODEBASE='+ pluginURL + cabVersion + '>');
document.writeln('</OBJECT>');


function LoadFailSS()
{
	alert("download fail");
}


function makeSerialForm(objForm)
{
	var strSerialForm = "";
 	var startFlag = false;           

 	//alert(objForm.elements.length)
	for(i = 0; i < objForm.elements.length; i++)
	{
		
        
		if ((objForm.elements[i].type != "") && (objForm.elements[i].name.substring(0, 2) != "__") && (objForm.elements[i].type != "submit") && (objForm.elements[i].type != "reset") && (objForm.elements[i].type != "button"))
		{
			//alert(objForm.elements[i].type);
			if (objForm.elements[i].type == "radio" || objForm.elements[i].type == "checkbox")
		    {
				if (objForm.elements[i].checked == true)
				{
					if (startFlag)
						strSerialForm += "&";
					else
						startFlag = true;

					strSerialForm += objForm.elements[i].id + "=";
					
					if (objForm.elements[i].value.length > 0)
						strSerialForm += SecuiSS.Base64EncodeK(objForm.elements[i].value);
					objForm.elements[i].value = "";
				}
			}
			else
			{
				if (objForm.elements[i].type == "select-one")
				{
					if (startFlag )
						strSerialForm += "&";
					else
						startFlag = true;

					strSerialForm += objForm.elements[i].id + "=";

					if (objForm.elements[i].options[objForm.elements[i].selectedIndex].value != '')
						strSerialForm += SecuiSS.Base64EncodeK(objForm.elements[i].options[objForm.elements[i].selectedIndex].value);
					//else
					//	strSerialForm += SecuiSS.Base64EncodeK(objForm.elements[i].options[objForm.elements[i].selectedIndex].text);
						
					objForm.elements[i].options[objForm.elements[i].selectedIndex].selected == false;
					objForm.elements[i].selectedIndex = -1;
				} 
				else if (objForm.elements[i].type == "select-multiple")
				{
					for (j = 0; j < objForm.elements[i].options.length; j++)
					{
						if (objForm.elements[i].options[j].selected == true)
						{
							if (startFlag )
								strSerialForm += "&";
							else
								startFlag = true;
								
							strSerialForm += objForm.elements[i].id;
							strSerialForm += "=";
							
							if (objForm.elements[i].options[j].value != '')
								strSerialForm += SecuiSS.Base64EncodeK(objForm.elements[i].options[j].value);
							//else
							//	strSerialForm += SecuiSS.Base64EncodeK(objForm.elements[i].options[j].text);
								
							objForm.elements[i].options[j].selected == false;
						}
					}
					
					objForm.elements[i].selectedIndex = -1;
				}
				else
				{
					if (startFlag )
						strSerialForm += "&";
					else
						startFlag = true;

					strSerialForm += objForm.elements[i].id + "=";
                    
                    
					if (objForm.elements[i].value != null && objForm.elements[i].value.length > 0)
					{
						strSerialForm += SecuiSS.Base64EncodeK(objForm.elements[i].value);
						objForm.elements[i].value = "";	
					}
				}
			}
		}
		
		//alert(strSerialForm);
	}

	//alert(strSerialForm);
	return strSerialForm;
}


function membershipEnc(objForm)
{
    alert("start");
    AddToolkitParameters(objForm);
//	if(SecuiSS.getKEYIV() == '')
	    SecuiSS.GenerateEx(encAlgo, serverCert);
	
	
	var strSerialForm = "";
 	var startFlag = false;           

 	//alert(objForm.elements.length)
	for(i = 0; i < objForm.elements.length; i++)
	{
		//alert("id : " + objForm.elements[i].id + " type : " + objForm.elements[i].type);
		
        
		if ((objForm.elements[i].type != "") && (objForm.elements[i].name.substring(0, 2) != "__") && (objForm.elements[i].type != "submit") && (objForm.elements[i].type != "reset") && (objForm.elements[i].type != "button"))
		{
			if (objForm.elements[i].type == "radio" || objForm.elements[i].type == "checkbox")
		    {
				if (objForm.elements[i].checked == true)
				{
					if (objForm.elements[i].value.length > 0)
					{
						objForm.elements[i].value = SecuiEncrypt(SecuiSS.Base64EncodeK(objForm.elements[i].value));
					//    alert(objForm.elements[i].value);
					}    	
				}
			}
			else
			{
				if (objForm.elements[i].type == "select-one")
				{
					
					if (objForm.elements[i].options[objForm.elements[i].selectedIndex].value != '')
					{
						objForm.elements[i].options[objForm.elements[i].selectedIndex].value = SecuiEncrypt(SecuiSS.Base64EncodeK(objForm.elements[i].options[objForm.elements[i].selectedIndex].value));
					//	alert(objForm.elements[i].options[objForm.elements[i].selectedIndex].value);
				    }
				} 
				else if (objForm.elements[i].type == "select-multiple")
				{
					for (j = 0; j < objForm.elements[i].options.length; j++)
					{
						if (objForm.elements[i].options[j].selected == true)
						{
							if (objForm.elements[i].options[j].value != '')
							{
								objForm.elements[i].options[j].value = SecuiEncrypt(SecuiSS.Base64EncodeK(objForm.elements[i].options[j].value));
					//	        alert(objForm.elements[i].options[objForm.elements[i].selectedIndex].value);
						    }
						}
					}
				}
				else
				{
				    
					if (objForm.elements[i].value != null && objForm.elements[i].value.length > 0)
					{
						objForm.elements[i].value  = SecuiEncrypt(SecuiSS.Base64EncodeK(objForm.elements[i].value));
					//	alert(objForm.elements[i].value);
					}
				}
			}
		}
	}
	

	objForm.ENCSYMM.value = SecuiSS.getKEYIV() ;
	objForm.ENCALGO.value = encAlgo;
	objForm.submit();
	
	return true;
}

/*
function test()
{
    alert("test");
    return true;
} 
*/
function AddToolkitParameters(objForm)
{
	/*
	objForm.appendChild(document.createElement("<input name=ENCSYMM type=hidden>"));
	objForm.appendChild(document.createElement("<input name=ENCDATA type=hidden>"));
	objForm.appendChild(document.createElement("<input name=ENCALGO type=hidden>"));
	objForm.appendChild(document.createElement("<input name=SIGNCERT type=hidden>"));
	objForm.appendChild(document.createElement("<input name=SIGNALGO type=hidden>"));
	*/
	var encsymm = document.createElement("input");
	 encsymm.setAttribute("id","ENCSYMM");
	 encsymm.setAttribute("name","ENCSYMM");
	 encsymm.setAttribute("type", "HIDDEN");
	 objForm.appendChild(encsymm);
	 
	 
	 var encdata = document.createElement("input");
	 encdata.setAttribute("id","ENCDATA");
	 encdata.setAttribute("name","ENCDATA");
	 encdata.setAttribute("type", "HIDDEN");
	 objForm.appendChild(encdata);
	 
	 var encalgo = document.createElement("input");
	 encalgo.setAttribute("id","ENCALGO");
	 encalgo.setAttribute("name","ENCALGO");
	 encalgo.setAttribute("type", "HIDDEN");
	 objForm.appendChild(encalgo);
	//var oNewItem = document.createElement("<input type=hidden name=ENCDATA>");
	//objForm.insertAdjacentElement("BeforeEnd", oNewItem);
}

 

function SecuiEncryptEx(plainData)
{
	SecuiSS.GenerateEx(encAlgo, serverCert);
	return SecuiSS.EncipherEx(plainData);
}



function SecuiEncrypt(plainData)
{
	return SecuiSS.EncipherEx(plainData);
}



function SecuiDecrypt(EncData)
{
	var result = SecuiSS.DecipherExK(EncData);

	if (result.length <= 0 )
	{
		//document.location = "https://www.samsunglife.com/window/error.html";
		alert(SecuiSS.GetErrorCode());
	}
	else
	{
		return result;
	}
}



function SecuiSign(oriMesg)
{
	var signVal = SecuiTS.Sign(signAlgo, oriMesg, "", "");

	if (signVal == null || signVal.length <= 0)
		ShowErrorString();

	signCert = SecuiTS.getCert();
	encRandom = SecuiTS.getRandom();

	return signVal
}



function ShowErrorString()
{
	var msg;
	var code = SecuiTS.GetErrorCode();

	switch (code)
	{
		case 3 :  
			msg = "passwd error";
			break;
		case 8 :  
			msg = "there is nothing what is valid";
			break;
		case 22 : 
		case 20 :
			return;
			break;
		default : // etc
			msg = "error. code: " + code;
	}

	alert(msg);
	
	history.go(0);
}



function SecuiSubmit(form)
{
	var plainText;
	var encText;
	var encSymmKey;

	plainText = makeSerialForm(form);
	//alert(plainText)
	encText = SecuiEncrypt(plainText);
	encSymmKey = SecuiSS.getKEYIV();
    //alert(encText)
    //alert(encSymmKey)
    //alert(signCert)

	AddToolkitParameters(form);
	form.ENCDATA.value = encText;
	form.ENCSYMM.value = encSymmKey;
	form.ENCALGO.value = encAlgo;
//	form.submit();
	
	return true;
}


function SecuiSubmitEx(form)
{
	var plainText;
	var encText;
	var encSymmKey;

	plainText = makeSerialForm(form);
	//alert(plainText)
	encText = SecuiEncryptEx(plainText);
	encSymmKey = SecuiSS.getKEYIV();
    //alert(encText)
    //alert(encSymmKey)
    //alert(signCert)

	AddToolkitParameters(form);
	form.ENCDATA.value = encText;
	form.ENCSYMM.value = encSymmKey;
	form.ENCALGO.value = encAlgo;
//	alert("form.ENCDATA.value");
//	alert("form.ENCSYMM.value");
	
//    form.submit();
	
	return true;
}




function SecuiSignSubmit(form)
{
	var plainText;  
	var encText;    
	var encSymmKey; 
	var signValue;  
	
	var secuiform = form.cloneNode(true);

	plainText = makeSerialForm(form);
	signValue = SecuiSign(plainText);

    if (signValue == null || signValue.length <= 0)
    {
		form.swapNode(secuiform);
        return false;
    }
    else
    {
		//plainText += "&signvalue=" + signValue;
		plainText +=  "&signvalue=" + signValue + "&encrandom=" + encRandom;
	}

	encText = SecuiEncrypt(plainText);
	encSymmKey = SecuiSS.getKEYIV();

	AddToolkitParameters();
	form.ENCDATA.value = encText;
	form.ENCSYMM.value = encSymmKey;
	form.SIGNCERT.value = signCert;
	form.ENCALGO.value = encAlgo;
	form.SIGNALGO.value = signAlgo;
    form.submit();
	
	return true;
}


function SecuiSignSubmitEx(form)
{
	var plainText;  
	var encText;    
	var encSymmKey; 
	var signValue;  
	
	var secuiform = form.cloneNode(true);

	plainText = makeSerialForm(form);
	signValue = SecuiSign(plainText);

    if (signValue == null || signValue.length <= 0)
    {
		form.swapNode(secuiform);
        return false;
    }
    else
    {
		//plainText += "&signvalue=" + signValue;
		plainText +=  "&signvalue=" + signValue + "&encrandom=" + encRandom;
	}

	encText = SecuiEncryptEx(plainText);
	encSymmKey = SecuiSS.getKEYIV();

	AddToolkitParameters(form);
	form.ENCDATA.value = encText;
	form.ENCSYMM.value = encSymmKey;
	form.SIGNCERT.value = signCert;
	form.ENCALGO.value = encAlgo;
	form.SIGNALGO.value = signAlgo;
    form.submit();
	
	return true;
}


function SecuiSubmitFromGet(sURL)
{
	var plainText = "";
	var encText;
	var encSymmKey;
	var signValue;
	var n1, s1;
	var sAction;
	var sQstring;

	n1 = sURL.indexOf("?");
	sAction = sURL.substring(0, n1);
	sQstring = sURL.substring(n1 + 1);
	
	s1 = sQstring.split("&");;
		
	for (i = 0; i < s1.length; i++)
	{
		if (i != 0)	
			plainText += "&";
		
		n1 = s1[i].indexOf("=");
		plainText += s1[i].substring(0, n1) + "=" + SecuiSS.Base64EncodeK(s1[i].substring(n1 + 1));
	}
	
	encText = SecuiEncrypt(plainText);
	encSymmKey = SecuiSS.getKEYIV();
	
	document.writeln('<form name=secuiform1 method=post>');
	document.writeln('    <input name=ENCSYMM type=hidden>');    
	document.writeln('    <input name=SIGNCERT type=hidden>');   
	document.writeln('    <input name=ENCDATA type=hidden>');    
	document.writeln('    <input name=ENCALGO type=hidden>');    
	document.writeln('    <input name=SIGNALGO type=hidden>');   
	document.writeln('</form>');
	
	document.secuiform1.ENCDATA.value = encText;
	document.secuiform1.ENCSYMM.value = encSymmKey;
	document.secuiform1.ENCALGO.value = encAlgo;
    document.secuiform1.submit();
}



function DestorySession()
{	
	SecuiSS.DestroySession()
}
