function jTrimValue(str) {
	str = str.replace(/(^\s{1,})/, "");
	str = str.replace(/(\s{1,}$)/, "");

	return str;
}

function XecureSubmit( form, resultProcessMethod )
{
	var path = getPath(form.action);
	var cipher;
	
	var qs = "";

	// 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 {
		document.all.processingBar.style.display = "none";
		alert(busy_info);
		return false;
	}
			
	if( cipher == "" ) {
		document.all.processingBar.style.display = "none";
		return XecureWebError() ;
	}
		
	document.xecure.q.value = escape_url(cipher);
	document.xecure.charset.value = 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 {
		document.all.processingBar.style.display = "none";
		alert(busy_info);
		return false;
	}		
		
	if( cipher == "" ) {
		document.all.processingBar.style.display = "none";
		return XecureWebError() ;
	}

	document.xecure.p.value = cipher;
	
	var queryString = Form.serialize(document.xecure);
	xmlHttpPost(path, queryString, resultProcessMethod);
		
	return false;
}

function getPKIDnInfo(resultProcessMethod) {
	var signform = document.signform;
	var signed_msg = Sign_with_option(0, "police");
	if(signed_msg != "") {
		document.all.processingBar.style.display = "block";
		
		signform.signed_msg.value = signed_msg;
		signform.action = "/gpki/pkiDnInfo.crd";

		// /softforum/XecureObject/xecureweb.js 에 정의되어 있는 함수를 우리에 맞게 커스터마이징 함.
		// 커스터마이징 한 함수는 해당 소스 softforum_pki.js 의 상단에 정의되어 있음.
		XecureSubmit(signform, resultProcessMethod);
	} 
	
	return;
}

<!-- 로그인 - 인증서 로그인에 사용하는 스크립트 함수  -->
function pkiLogin() {
	getPKIDnInfo("return_pki_dnval");
}

function return_pki_dnval(result) {
	result = jTrimValue(result);
	
	document.all.processingBar.style.display = "none";
	
	if (result.indexOf("T||") == 0) {
		var resultArr = result.split("||");

		if (resultArr.length < 6) {
			alert("사용자 정보를 받는데 실패하였습니다.");
			reutrn;
		}
		
		var existUser = resultArr[1];
		var pkiType = resultArr[2];
		var pkiPolicy = resultArr[3];
		var pkiDnVal = resultArr[4];
		var pkiLdapInfo = resultArr[5];
		var pkiName = resultArr[6];
		
		if (existUser == "Y") {
			if (pkiDnVal == "") {
				alert("사용자 정보를 받는데 실패하였습니다.");
				reutrn;
			}
			
			document.pkiFormX.dn_gubun.value = pkiType;
			document.pkiFormX.dn.value = pkiDnVal;
			document.pkiFormX.submit();
		} else {
			if (confirm("해당 인증서로 등록된 사용자가 없습니다.\n인증을 거친 후 인증서를 등록 및 갱신 하시겠습니까?")) {
				window.open('/user/checkId.crd', 'checkId', 'width=400,height=250,resizable=0,scrollbars=0,status=0,top=200,left=200');
			}
			
			return;
		}
		
	} else {
		var failCode = result.substring(3, result.length);
		var failCont = failCode;
		
		if (failCode == "CLIENTAUTH") {
			failCont = "사용자 인증이 필요합니다.";
		} else if (failCode == "OIDVALIDITY") {
			failCont = "인증서 유효성 실패 (인증서가 유효하지 않음)";
		} else if (failCode == "CRLFLAG") {
			failCont = "제출한 인증서는 폐기된 인증서 입니다.";
		} else if (failCode == "OIDTYPE") {
			failCont = "허용하지 않는 인증서입니다.";
		} else if (failCode == "DNVALUE") {
			failCont = "사용자 정보를 받는데 실패하였습니다.";
		} else if (failCode == "NODATA") {
			failCont = "인증 검증에 실패하였거나, 폐지된 인증서 입니다. ";
		}
		
		alert("인증서 인증을 실패하였습니다.\n\n[이유 : "+ failCont +"]");
		return;
	}
}
<!-- // 로그인  - 인증서 로그인에 사용하는 스크립트 함수  -->

<!-- 로그인 - 인증서 등록 -->
function checkIdOpen() {
	window.open('/user/checkId.crd', 'checkId', 'width=400,height=250,resizable=0,scrollbars=0,status=0,top=200,left=200');
}


function keyCheck(event){
	if(event.keyCode != "13") return;
	else userAuthCheck();
}

function userAuthCheck() {
	var userid = jTrimValue(document.getElementById("userid").value);
	var userdomain = jTrimValue(document.getElementById("userdomain").value);		
	var userpass = jTrimValue(document.getElementById("userpass").value);
	
	if(userid == "") {
		alert("아이디를 입력하세요.");
		document.getElementById("userid").focus();
		return;
	}
	if(userpass == "") {
		alert("비밀번호를 입력하세요.");
		document.getElementById("userpass").focus();
		return;
	}
	
	var url = "/user/userAuthX.crd";
    var queryString = Form.serialize(FormX);
	var resultProcessMethod = 'return_user_auth';
	
	xmlHttpPost(url, queryString, resultProcessMethod);
}
	
function return_user_auth(result) {
	result = jTrimValue(result);
	
	if (result.indexOf("T||") == 0) {
		var resultArr = result.split("||");

		if (resultArr.length < 4) {
			alert("사용자 정보를 받는데 실패하였습니다.");
			reutrn;
		}
		
		var email = resultArr[1];
		var seq_user = resultArr[2];
		var username = resultArr[3];
		
		var sendForm = document.sendForm;
		sendForm.email.value = email;
		sendForm.seq_user.value = seq_user;
		sendForm.username.value = username;
		
		getPKIDnInfo("return_user_auth2");
		
		return;
	} else {
		var failCont = result.substring(3, result.length);
		
		if (failCont == "") {
			alert("사용자 인증을 실패하였습니다.!!");
		} else {
			alert(failCont);
		}
		
		return;
	}
}

function return_user_auth2(result) {
	result = jTrimValue(result);
	
	document.all.processingBar.style.display = "none";
	
	if (result.indexOf("T||") == 0) {
		var resultArr = result.split("||");

		if (resultArr.length < 6) {
			alert("사용자 정보를 받는데 실패하였습니다.");
			reutrn;
		}
		
		var pkiType = resultArr[2];
		var pkiPolicy = resultArr[3];
		var pkiDnVal = resultArr[4];
		var pkiLdapInfo = resultArr[5];
		var pkiName = resultArr[6];
		
		var userType = "G";
		if (pkiPolicy == "1.2.410.100001.2.1.2" || pkiPolicy == "1.2.410.100001.5.3.1.5" || pkiPolicy == "1.2.410.100001.5.3.1.1") {
			userType = "O";
		}
		
		var sendForm = document.sendForm;
		
		var username = jTrimValue(sendForm.username.value);
		if (userType == "G" && pkiName != username && (pkiName.indexOf(username) < 0 )) {
			alert(username +"님의 인증서가 아닙니다.\n"+ username +"님의 인증서로 등록/갱신을 해 주시기 바랍니다.");
			return;
		}
		
		sendForm.dn.value = pkiDnVal;
		sendForm.dn_gubun.value = pkiType;
		sendForm.userdn_type.value = userType;
		sendForm.ldap_info.value = pkiLdapInfo;
			
		sendForm.submit();
		
	} else {
		var failCode = result.substring(3, result.length);
		var failCont = failCode;
		
		if (failCode == "CLIENTAUTH") {
			failCont = "사용자 인증이 필요합니다.";
		} else if (failCode == "OIDVALIDITY") {
			failCont = "인증서 유효성 실패 (인증서가 유효하지 않음)";
		} else if (failCode == "CRLFLAG") {
			failCont = "제출한 인증서는 폐기된 인증서 입니다.";
		} else if (failCode == "OIDTYPE") {
			failCont = "허용하지 않는 인증서입니다.";
		} else if (failCode == "DNVALUE") {
			failCont = "사용자 정보를 받는데 실패하였습니다.";
		} else if (failCode == "NODATA") {
			failCont = "인증 검증에 실패하였거나, 폐지된 인증서 입니다. ";
		}
		
		alert("인증서 인증을 실패하였습니다.\n\n[이유 : "+ failCont +"]");
		return;
	}
}
<!-- // 로그인 - 인증서 등록 -->

<!-- 관리자 - 인증서 관리 -->
function insertPKIInfo() {
	if (! confirm("인증서를 등록 하시겠습니까?")) {
		return;
	}
	
	document.sendForm.cmd.value = "insert";
	
	getPKIDnInfo("return_admin_dnval");
}

function updatePKIInfo() {
	if (! confirm("인증서를 갱신 하시겠습니까?")) {
		return;
	}
	
	document.sendForm.cmd.value = "update";
	
	getPKIDnInfo("return_admin_dnval");
}

function delPKIInfo() {
	var sendForm = document.sendForm;		
	sendForm.cmd.value = "delete";
		
	var url = "/gpki/PkiInfoManage.crd";
	var queryString = Form.serialize(sendForm);
	var resultProcessMethod = 'return_pki_result';
	xmlHttpPost(url, queryString, resultProcessMethod);

	return;
}

function return_admin_dnval(result) {
	result = jTrimValue(result);
	
	document.all.processingBar.style.display = "none";
	
	if (result.indexOf("T||") == 0) {
		var resultArr = result.split("||");

		if (resultArr.length < 6) {
			alert("사용자 정보를 받는데 실패하였습니다.");
			reutrn;
		}
		
		var pkiType = resultArr[2];
		var pkiPolicy = resultArr[3];
		var pkiDnVal = resultArr[4];
		var pkiLdapInfo = resultArr[5];
		var pkiName = resultArr[6];
		
		var userType = "G";
		if (pkiPolicy == "1.2.410.100001.2.1.2" || pkiPolicy == "1.2.410.100001.5.3.1.5" || pkiPolicy == "1.2.410.100001.5.3.1.1") {
			userType = "O";
		}
		
		var sendForm = document.sendForm;
		
		var username = jTrimValue(sendForm.username.value);
		if (userType == "G" && pkiName != username && (pkiName.indexOf(username) < 0 )) {
			alert(username +"님의 인증서가 아닙니다.\n"+ username +"님의 인증서로 등록/갱신을 해 주시기 바랍니다.");
			return;
		}
		
		sendForm.dn.value = pkiDnVal;
		sendForm.dn_gubun.value = pkiType;
		sendForm.userdn_type.value = userType;
		sendForm.ldap_info.value = pkiLdapInfo;
		
		document.all.processingBar.style.display = "block";
			
		var url = "/gpki/PkiInfoManage.crd";
		var queryString = Form.serialize(sendForm);
		var resultProcessMethod = 'return_pki_result';
		xmlHttpPost(url, queryString, resultProcessMethod);
		
	} else {
		var failCode = result.substring(3, result.length);
		var failCont = failCode;
		
		if (failCode == "CLIENTAUTH") {
			failCont = "사용자 인증이 필요합니다.";
		} else if (failCode == "OIDVALIDITY") {
			failCont = "인증서 유효성 실패 (인증서가 유효하지 않음)";
		} else if (failCode == "CRLFLAG") {
			failCont = "제출한 인증서는 폐기된 인증서 입니다.";
		} else if (failCode == "OIDTYPE") {
			failCont = "허용하지 않는 인증서입니다.";
		} else if (failCode == "DNVALUE") {
			failCont = "사용자 정보를 받는데 실패하였습니다.";
		} else if (failCode == "NODATA") {
			failCont = "인증 검증에 실패하였거나, 폐지된 인증서 입니다. ";
		}
		
		alert("인증서 인증을 실패하였습니다.\n\n[이유 : "+ failCont +"]");
		return;
	}
}

function return_pki_result(result) {
	result = jTrimValue(result);
	
	document.all.processingBar.style.display = "none";
	
	if (result.indexOf("F||") == 0) {
		var reason = result.substring(3, result.length);
		
		if (reason == "AUTHFAIL") {
			var username = jTrimValue(document.getElementById("username").value);
			alert(username +"님의 인증서가 아닙니다.\n"+ username +"의 인증서로 등록해 주시기 바랍니다.");
		} else if (reason == "EXISTDNVAL") {
			alert("다른 사용자가 사용하고 있는 인증서입니다.");
		} else if (reason == "CRLFLAG") {
			alert("제출한 인증서는 폐기된 인증서 입니다.");
		} else if (reason == "OIDTYPE") {
			alert("허용하지 않는 인증서입니다.");
		} else if (reason == "ERRORPATH") {
			alert("잘못된 경로로 접근하였습니다.\n다시 한번 시도해 주십시오.");
		} else {
			alert("정상적으로 처리를 하지 못했습니다.\n다시 한번 시도해 주십시오.");
		}
		
		return;
	} else if (result.indexOf("T||") == 0) {
		var cmd = document.sendForm.cmd.value;
		
		var dnVal = "";
		if (cmd == "insert") {
			alert("정상적으로 인증서를 등록하였습니다.");
			
			dnVal = result.substring(11, result.length);
			var dnValTmp = dnVal.replace(",", ",<br>");
			
			document.all.viewDnVal.innerHTML = dnValTmp;
			
			document.all.insertpki.style.display = "none";
			document.all.updatepki.style.display = "block";
		} else if (cmd == "update") {
			alert("정상적으로 인증서를 갱신하였습니다.");
			
			dnVal = result.substring(11, result.length);
			var dnValTmp = dnVal.replace(",", ",<br>");
			
			document.all.viewDnVal.innerHTML = dnValTmp;
			
		} else if (cmd == "delete") {
			alert("정상적으로 인증서를 삭제하였습니다.");
			
			document.all.viewDnVal.innerHTML = "인증서 등록 안됨";
			document.all.updatepki.style.display = "none";
			document.all.insertpki.style.display = "block";
		}
		
		return;
	}
}

<!-- // 관리자 - 인증서 관리 -->

function helpLoginProcess() {
	window.open('/user/helpLogin.crd', 'helpLogin', 'width=460,height=500,resizable=0,scrollbars=0,status=0,top=200,left=200');
}

