var object1Flag = 1;
var object2Flag = 1;

function doCaChkNew(password, rnd) {
	if(object2Flag == 0) {
		alert("请您至 http://gs.sheca.com/gs/ 下载最新营业执照电子副本驱动！");
		if(confirm("现在下载？")) {
			document.location = 'http://61.129.77.131/gs/GSKEYSETUPv1_2.zip';
		}
		return;
	}
	
	eKeyDevice.SetDeviceParam(0xa, "com1", "sheca");
	var strLicence = eKeyDevice.ReadLicence(0xa, "com1");
	if(eKeyDevice.LastError){
		if(eKeyDevice.ErrorMsg == "fail to load method readLicence") { // 驱动非最新
			alert("驱动版本已过期，请您至 http://gs.sheca.com/gs/ 下载最新营业执照电子副本驱动！");
			if(confirm("现在下载？")) {
				document.location = 'http://61.129.77.131/gs/GSKEYSETUPv1_2.zip';
			}
			return;
		}
		
		alert("营业执照电子副本中不含执照信息，请确认USB设备是否连接，如果是电子KEY问题，请至所属工商分局刷新KEY！");
		return;
	} else {
		if(eKeyDevice.GetUpdateStatus()) {
			alert("该营业执照电子副本未下载证书，请您至 http://gs.sheca.com/gs/DownloadCert.html 下载数字证书！");
			if(confirm("现在转至下载页面？")) {
				document.location = 'http://61.129.77.131/gs/DownloadCert.html';
			}
			return;
		}
	}
	
	/* Change the path and password below */
	/*strpassword=document.form1.pwd.value;*/
	SafeEngineCtl.SEH_InitialSession(0xA,"com1",password,0,0xA,"com1","");
	if(SafeEngineCtl.ErrorCode!==0)
	{
		alert(GetErrCode(SafeEngineCtl.ErrorCode));
		SafeEngineCtl.SEH_ClearSession();
		return;
	}
	/* 获取自己证书 */
	strCert = SafeEngineCtl.SEH_GetSelfCertificate(0xA, "com1", "");
	if(SafeEngineCtl.ErrorCode!==0)
	{
		alert(GetErrCode(SafeEngineCtl.ErrorCode));
		SafeEngineCtl.SEH_ClearSession();
		return;
	}
	/* 签名随机数 */
	strSigned = SafeEngineCtl.SEH_SignData(rnd, 3);
	if(SafeEngineCtl.ErrorCode!==0)
	{
		alert(GetErrCode(SafeEngineCtl.ErrorCode));
		SafeEngineCtl.SEH_ClearSession();
		return;
	}
	document.getElementById('strCert').value = strCert;
	document.getElementById('strSigned').value = strSigned;

    // 读取执照信息
	var ev = "(" + strLicence + ")";
	var obj = eval(ev);
	//alert("企业名称:" + obj.licence.qiye_mingchen);
	//alert("企业地址:" + obj.licence.dizhi);
	//alert("企业标识:" + obj.licence.qiye_biaoshi);
	document.getElementById('etpsId').value = obj.licence.qiye_biaoshi;
	document.getElementById('etpsName').value = obj.licence.qiye_mingchen;
	
	document.getElementsByName('loginForm')[0].action = "logging.do?method=caChkLogin";
		
	/* 释放 */
	SafeEngineCtl.SEH_ClearSession();
	
	document.getElementById('loginButton3').disabled = true;
	document.getElementById('loginButton4').disabled = true;
	document.getElementsByName('loginForm')[0].submit();
		
	return true;
}

/**
 * key值的读取
 * @param keyType  1代理机构  2已注册公司 * @param rnd  随机数
 */
function loginByKey(keyType, rnd){
	var pin = "";
	if(keyType == '2'){
		pin = document.getElementById('pinpw').value;
	}else if(keyType == '1'){
		pin = document.getElementById('pinpw1').value;
	}else{
	
	}
   
    if(pin==null||pin==""){
        alert("请您输入营业执照电子副本密码！");
        if(keyType == '2'){
			document.getElementById('pinpw').focus();
		}else if(keyType == '1'){
			document.getElementById('pinpw1').focus();
		}
        return ;
    }
    
    if(doChkKeyOld(pin, keyType)) { // 老KEY逻辑，判断返回false则转至新KEY逻辑
    } else {
    	doCaChkNew(pin, rnd);
    }
}

function doChkKeyOld(pin, keyType) {
	if(object1Flag==0) { // 读取老KEY设备失败，转至新KEY逻辑
		return false;
	}
	
    var rt=0;
    rt = ActiveOCX.OpkiSetHardWare(003);
    if(rt == -111515){
        alert("系统无法找到营业执照电子副本，请确认是否已经插入该设备以及安装了正确的驱动程序！");
        return true;
    }
    rt = ActiveOCX.OpkiInit();
    if(rt<0){
        alert("控件初始化失败，无法完成登陆，请关闭当前浏览器，重新访问本系统！");
        return true;
    }
    rt = ActiveOCX.OpkiLogin(1,pin);
    if(rt<0){
    	if (rt == -111517) {
            alert("密码错误，无法登陆营业执照电子副本！");
            return true;
        }
        if (rt == -111518) {
            alert("营业执照电子副本已经被锁定，无法登陆！");
            return true;
        }
        if (rt == -111004) { // 读取老KEY设备失败，转至新KEY逻辑
			return false;
        }
        alert("无法登陆营业执照电子副本！"+"错误代码:"+rt);
        return true;
    }
    var randnum = getRandNum();
    rt = ActiveOCX.OpkiSignData(Sign_Key_Lable,pin,randnum,32772,0);
    if(rt<0){
        alert("签名随机数失败，无法完成登陆，请关闭当前浏览器，重新访问本系统！");
        return true;
    }
    var signvalue = ActiveOCX.outData;
    
    rt = ActiveOCX.OpkiReadLabel("SHGS_ETPS_ID",3);
    if(rt<0){
        //alert("获取企业标识失败，请关闭当前浏览器，重新访问本系统！");
        //return;
    }
    var key_etps_id = base64Decode(ActiveOCX.outData);
    
    rt = ActiveOCX.OpkiReadLabel(Sign_Lable,1);
    if(rt<0){
        alert("获取用户证书失败，无法完成登陆，请关闭当前浏览器，重新访问本系统！");
        return true;
    }
    var SignCert = ActiveOCX.outData;
    rt = ActiveOCX.OpkiReadLabel(Encrypt_Lable,1);
    if(rt<0){
        alert("获取用户证书失败，无法完成登陆，请关闭当前浏览器，重新访问本系统！");
        return true;
    }
    var EncryptCert = ActiveOCX.outData;
    pin = base64Encode(pin);
    if(pin ==""){
        alert("编码数据失败，无法完成登陆，请关闭当前浏览器，重新访问本系统！");
        return true;
    }
    setCookie("pin",pin);
    rt = ActiveOCX.OpkiEnd();
    if(rt<0){
        alert("释放安全资源失败，无法完成登陆，请关闭当前浏览器，重新访问本系统！");
        return true;
    }
    
    document.getElementById('loginButton3').disabled=true;
	document.getElementById('loginButton4').disabled=true;
    document.sec.sign.value = signvalue;
    document.sec.ecert.value = EncryptCert;
    document.sec.scert.value = SignCert;
    document.sec.rand.value = randnum;
    document.sec.key_etps_id.value = key_etps_id;
    document.sec.keyType.value = keyType;
    document.sec.submit();
    
    return true;
}

function GetErrCode(errcode)
{
	var result = '';
	switch (errcode)
	{
		case -2113667072 :
		    result = "装载动态库错误，无法登陆营业执照电子副本！";
			break;
		case -2113667071 :
		    result = "内存分配错误，无法登陆营业执照电子副本！";
			break;
		case -2113667070 :
		    result = "读私钥设备错误，无法登陆营业执照电子副本！";
			break;
		case -2113667069 :
		    result = "私钥密码错误，无法登陆营业执照电子副本！";
			break;
		case -2113667068 :
		    result = "读证书链设备错误，无法登陆营业执照电子副本！";
			break;
		case -2113667067 :
		    result = "证书链密码错误，无法登陆营业执照电子副本！";
			break;
		case -2113667066 :
		    result = "读证书设备错误，无法登陆营业执照电子副本！";
			break;
		case -2113667065 :
		    result = "证书密码错误，无法登陆营业执照电子副本！";
			break;
		case -2113667064 :
		    result = "私钥超时，无法登陆营业执照电子副本！";
			break;
		case -2113667063 :
		    result = "缓冲区太小，无法登陆营业执照电子副本！";
			break;
		case -2113667062 :
		    result = "初始化环境错误，无法登陆营业执照电子副本！";
			break;
		case -2113667061 :
		    result = "清除环境错误，无法登陆营业执照电子副本！";
			break;
		case -2113667060 :
		    result = "数字签名错误，无法登陆营业执照电子副本！";
			break;
		case -2113667059 :
		    result = "验证签名错误，无法登陆营业执照电子副本！";
			break;
		case -2113667058 :
		    result = "摘要错误，无法登陆营业执照电子副本！";
			break;
		case -2113667057 :
		    result = "证书格式错误，无法登陆营业执照电子副本！";
			break;
		case -2113667056 :
		    result = "数字信封错误，无法登陆营业执照电子副本！";
			break;
		case -2113667055 :
		    result = "从LDAP获取证书错误，无法登陆营业执照电子副本！";
			break;
		case -2113667054 :
		    result = "证书已过期，无法登陆营业执照电子副本！";
			break;
		case -2113667053 :
		    result = "获取证书链错误，无法登陆营业执照电子副本！";
			break;
		case -2113667052 :
		    result = "证书链格式错误，无法登陆营业执照电子副本！";
			break;
		case -2113667051 :
		    result = "验证证书链错误，无法登陆营业执照电子副本！";
			break;
		case -2113667050 :
		    result = "证书已废除，无法登陆营业执照电子副本！";
			break;
		case -2113667049 :
		    result = "CRL格式错误，无法登陆营业执照电子副本！";
			break;
		case -2113667048 :
		    result = "连接OCSP服务器错误，无法登陆营业执照电子副本！";
			break;
		case -2113667047 :
		    result = "OCSP请求编码错误，无法登陆营业执照电子副本！";
			break;
		case -2113667046 :
		    result = "OCSP回包错误，无法登陆营业执照电子副本！";
			break;
		case -2113667045 :
		    result = "OCSP回包格式错误，无法登陆营业执照电子副本！";
			break;
		case -2113667044 :
		    result = "OCSP回包过期，无法登陆营业执照电子副本！";
			break;
		case -2113667043 :
		    result = "OCSP回包验证签名错误，无法登陆营业执照电子副本！";
			break;
		case -2113667042 :
		    result = "证书状态未知，无法登陆营业执照电子副本！";
			break;
		case -2113667041 :
		    result = "对称加解密错误，无法登陆营业执照电子副本！";
			break;
		case -2113667040 :
		    result = "获取证书信息错误，无法登陆营业执照电子副本！";
			break;
		case -2113667039 :
		    result = "获取证书细目错误，无法登陆营业执照电子副本！";
			break;
		case -2113667038 :
		    result = "获取证书唯一标识错误，无法登陆营业执照电子副本！";
			break;
		case -2113667037 :
		    result = "获取证书扩展项错误，无法登陆营业执照电子副本！";
			break;
		case -2113667036 :
		    result = "PEM编码错误，无法登陆营业执照电子副本！";
			break;
		case -2113667035 :
		    result = "PEM解码错误，无法登陆营业执照电子副本！";
			break;
		case -2113667034 :
		    result = "产生随机数错误，无法登陆营业执照电子副本！";
			break;
		case -2113667033 :
		    result = "PKCS12参数错误，无法登陆营业执照电子副本！";
			break;m
		case -2113667032 :
		    result = "私钥格式错误，无法登陆营业执照电子副本！";
			break;
		case -2113667031 :
		    result = "公私钥不匹配，无法登陆营业执照电子副本！";
			break;
		case -2113667030 :
		    result = "PKCS12编码错误，无法登陆营业执照电子副本！";
			break;
		case -2113667029 :
		    result = "PKCS12格式错误，无法登陆营业执照电子副本！";
			break;
		case -2113667028 :
		    result = "PKCS12解码错误，无法登陆营业执照电子副本！";
			break;
		case -2113667027 :
		    result = "非对称加解密错误，无法登陆营业执照电子副本！";
			break;
		case -2113667026 :
		    result = "OID格式错误，无法登陆营业执照电子副本！";
			break;
		case -2113667025 :
		    result = "LDAP地址格式错误，无法登陆营业执照电子副本！";
			break;
		case -2113667024 :
		    result = "LDAP地址错误，无法登陆营业执照电子副本！";
			break;
		case -2113667023 :
		    result = "连接LDAP服务器错误，无法登陆营业执照电子副本！";
			break;m
		case -2113667022 :
		    result = "LDAP绑定错误，无法登陆营业执照电子副本！";
			break;
		case -2113667021 :
		    result = "没有OID对应的扩展项，无法登陆营业执照电子副本！";
			break;
		case -2113667020 :
		    result = "获取证书级别错误，无法登陆营业执照电子副本！";
			break;
		case -2113667019 :
		    result = "读取配置文件错误，无法登陆营业执照电子副本！";
			break;
		case -2113667018 :
		    result = "私钥未载入，无法登陆营业执照电子副本！";
			break;
	// 以下错误用于登录
		case -2113666824 :
		    result = "无效的登录凭证，无法登陆营业执照电子副本！";
			break;
		case -2113666823 :
		    result = "参数错误，无法登陆营业执照电子副本！";
			break;
		case -2113666822 :
		    result = "不是服务器证书，无法登陆营业执照电子副本！";
			break;
		case -2113666821 :
		    result = "登录错误，无法登陆营业执照电子副本！";
			break;
		case -2113666820 :
		    result = "证书验证方式错误，无法登陆营业执照电子副本！";
			break;
		case -2113666819 :
		    result = "随机数验证错误，无法登陆营业执照电子副本！";
			break;
		case -2113666818 :
		    result = "与单点登录客户端代理通信，无法登陆营业执照电子副本！";
		break;
	}
	 
  	/*  result = "数字证书错误：" + result;*/
	return result;
}