  function fKeyPress(eventObj){
  	var keycode;
  	keycode=eventObj.keyCode;
  	if (keycode==13)  {
  		 if (document.logonForm.pin == "" && document.logonForm.password.value == "" ) {
  		    return;
  		 }else{
  		 check();
  		 }
  		 
 
     	
  	}
  }
 
  function winOnload(){
   	document.logonForm.userName.focus(); 
   	
   	var error = "null";
   	if (error != "null") {
   		alert("错误信息(in login):"+error);	 
   	}  
 }
 
 function check() {
 
 	 var frm = document.logonForm;
	 if (frm.pin.value != "") {
		 caVerys();
	 } else {
	 	   if (frm.userName.value == "") {
	 	       alert("请输入用户登录id！");
	 	       frm.userName.focus();	
	 			return;
	 	   }
		   if (frm.password.value == "") {
	 	       alert("请输入口令！");	
	 		    frm.password.focus();
	 			return;
	 	   } 
	 	   
	 	   
	     document.logonForm.submit();
	 }
 }
 
 
<!--   GDCA -->
var hashAlgo="GDCA_ALGO_SHA1";
var PkiCom3 = document.PkiCom3;
var PSIAtv = document.PSIAtv;
var GDCACom = document.GDCACom;
var UseCom="";
var currentKeyType;
var userCert;
var userEncCert;
var userCAId;
function alertMsg(msg) {
	alert(msg);
	systemstatus.innerText = msg;
}
function showMsg(msg) {
	systemstatus.innerText = msg;
}
function caVerys()
{
	var ret=-1;
	var Pin = document.logonForm.pin.value;
	var CertData = new Array;
	var CertData2 = new Array;
	var KeyID = new Array;
	var KeyType = new Array;
	if (PkiCom3 == null || PSIAtv == null || GDCACom == null) {
		alertMsg("未正确安装Key的驱动程序");
	}
	
	var DeviceType = GDCACom.GDCA_GetDevicType();
	ret = parseInt(DeviceType);
    if (ret == -1) {
		alert("不能识别到电子证书硬件设备，请检查电子证书是否正确的插入了USB口，或者联系系统管理员！");
		return;
	} 
 
	showMsg("正在进行数字验证，可能需要1分钟时间，请稍候...");
	
	//完成初始化，并确定KEY类型和控件,讲Key的类型写入到KeyType中
	ret = ActiveXInit(PkiCom3,PSIAtv,GDCACom,KeyType)
	if(ret != 0)
	{
		alertMsg("初始化客户端key控件失败，请联系系统管理员，检查是否正确安装了客户端驱动");
		return ret;
	}
	showMsg("Key检验工具初始化成功....");
	//  alert("main KeyType:"+KeyType[0]);
	//parent.frames("client_server").KeyType.value=KeyType[0];
  document.logonForm.keytype.value = KeyType[0];
	currentKeyType = KeyType[0];
	switch(parseInt(KeyType[0]))
	{
		case 0  :  UseCom=PkiCom3;
   				   break;
		case 1  :  UseCom=PSIAtv;
   				   break;
		default :  UseCom=GDCACom;
   }
 
   showMsg("识别正确的key类型:" + KeyType[0]);
   
//alert("124");   
 
   //登陆到Key设备中
   ret = GDCALogin(UseCom,KeyType[0],Pin);
   if(ret != 0)
   {
		alertMsg("登陆失败,pin码输入有误");
		return ret;
   }
   showMsg("PIN码检测成功...");
   
   // alert("form1.KeyType.value ="+form1.KeyType.value);
 
   //读取用户Key中的用户证书
   //读取签名证书
   ret = GDCAReadCert(UseCom,KeyType[0],SignCert,CertData);
//alert("139");   
   if(ret != 0)
   {
		alertMsg("证书读取错误："+ret);
		return ret;
   }
   showMsg("获取数字证书成功....");
   //读取加密证书
   ret = GDCAReadCert(UseCom,KeyType[0],EncCert,CertData2);
//alert("147");   
   if(ret != 0)
   {
		alertMsg("证书读取错误："+ret);
		return ret;
   }
   showMsg("加密数字证书成功....");
//alert("151");      
 
 //  parent.frames("client_server").ClientSignCert.value = CertData[0];
 //  parent.frames("client_server").ClientEncrytCert.value = CertData2[0];
 
 //  form1.sign_cert.value = CertData[0];
 //  form1.enc_cert.value= CertData2[0];
 
   //alert("user_cert="+form1.user_cert.value);
 
   //判断签名证书的证书时间的有效性（判断证书是否过期）
   ret=GDCAGetCerTime(UseCom,KeyType[0],CertData[0]);
   if(ret != 0)
   {
		alertMsg("证书已经过期："+ret);
		return ret;
   }
   showMsg("证书在有效期内.....");
 
   //读取Key的唯一标识证书序列号
   ret = GDCAGetKeyID(UseCom,KeyType[0],KeyID,CertData[0]);
   if(ret != 0)
   {
		alertMsg("读取证书硬件介质号出错："+ret);
		return;
   }
//alert("176");
   showMsg("读取证书硬件介质成功");
          
   document.logonForm.caID.value = KeyID[0];
   userCAId = KeyID[0];
   document.logonForm.cert.value = CertData[0];
   userCert = CertData[0];
   document.logonForm.enccert.value = CertData2[0];
   userEncCert = CertData2[0];
//alert("183");   
   showMsg("获取加密服务器验证....");
   CAVerify.getRandomSn(sn);
 
 
//alert("185");
//msg("key id " + id);
   
   
}
 
var sn = function(randomSn)
    {
      if (randomSn == null || randomSn == ""  )
      {
      	alertMsg("无法从服务器取得有效校验数!");
      	return;
      } 
	  showMsg("获得有效校验数" + randomSn);
//alert("208");
      var outData = new Array;
//alert("randomSn" + randomSn);
//alert("UserCom" + UseCom);
   	  var ret=GDCASignData(UseCom, currentKeyType, userEncCert,document.logonForm.pin.value,randomSn,hashAlgo,outData);
//alert("212");
	  if(ret!=0)
	    {
		     alertMsg("客户端签名失败，请检查!"+ret);
		     return ret;
	    }
		var signedSn =outData[0];
//alert("212");	
//alert("对数据的签名值"+signedSn);
     	if(signedSn == "")
	    {
		      alertMsg("客户端签名失败，请检查!");
	        return;
	    }
		showMsg("客户端签名成功...");
	    
     /*****************end*******************/
	    ret=GDCALogout(UseCom,currentKeyType);
//alert("229");      
      if(ret != 0)
      {
        alert("logout error"+ret);
        return -1;
       }
     showMsg("退出客户端校验,转由服务器处理....");
     document.logonForm.signedSn.value=signedSn;
 
 
			document.logonForm.submit();
    }
