/*---CA-start--*/
var signedCaxlh;//对证书序列号的签名结果
var caxlh;//证书序列号
//枚举证书时，分配的索引号（从O开始编号）
var caIndex = 0;
//获得证书序列号的签名结果
function getSignedXlh() {
    return signedCaxlh;
}

//获得证书序列号
function getCaxlh() {
    return caxlh;
}

/**
 * 证书有效期天数
 * @param strDateStart  系统时间
 * @param strDateEnd    证书有效期
 */
function day_diff(strDateStart, strDateEnd) {
    var strSeparator = "-"; //日期分隔符
    var strDateArrayStart;
    var strDateArrayEnd;
    var intDay
    strDateArrayStart = strDateStart.split(strSeparator);
    strDateArrayEnd = strDateEnd.split(strSeparator);
    var strDateS = new Date(strDateArrayStart[0] + "/" + strDateArrayStart[1] + "/" + strDateArrayStart[2]);
    var strDateE = new Date(strDateArrayEnd[0] + "/" + strDateArrayEnd[1] + "/" + strDateArrayEnd[2]);
    intDay = (strDateS - strDateE) / (1000 * 3600 * 24)
    return intDay
}

/**
 * 清除证书
 * @param sysDate 系统时间
 */
function Check_Cert_Status(sysDate)
{
    var GetServerDate;
    var GetLocalTime;
    GetServerDate = sysDate;
    /*
     try
     {
     GetLocalTime = now().left(10).replace(" ", "").toString();
     }
     catch(e)
     {
     oPublicFunction.showErrorMessage("获取本地计算机日期失败，请安装最新网上报税控件程序!");
     return false;
     }
     */
    //清除客户端个人证书
    try {
        $("CertSign").Clear();
        oPublicFunction.showErrorMessage("证书清除成功,请重新插入电子令牌后登陆!");
        return false;
    }
    catch(e)
    {
        oPublicFunction.showErrorMessage("清除数字证书失败，请安装最新网上报税控件程序!");
        return false;
    }
}

/**
 * 检查客户端控件和证书的各种状态
 * @param sysDate 系统时间
 */
function checkCA(sysDate) {
    var Cert_number = -1;
    try {
        Cert_number = $("CertSign").GetCount();//获取证书个数
    } catch(e) {
        oPublicFunction.showErrorMessage("请先到登录页面下载最新网上报税控件程序并使用CA证书登录。");
        return false;
    }
    var getnow ;
    var cert_date;
    var cert_end_date;
    getnow = sysDate;
    if (Cert_number > 0)
    {
        if (Cert_number > 1) {
            caIndex = $("CertSign").GetTheChooseCert();//选择证书
            if (caIndex < 0) {
                return false;
            }
        }
        //判断证书到期时间 将给予提醒 到期证书无法正常登录
        //判断证书可用性
        cert_date = $("CertSign").GetValidDate(caIndex);//获得证书到期时间

        cert_date = cert_date.substr(0, 11);

        cert_end_date = day_diff(cert_date, getnow);//返回证书有效天数

        if (cert_end_date > 0)
        {
            if (cert_end_date < 30)
            {
                //临近到期证书提醒30内
                oPublicFunction.showErrorMessage("你的数字证书即将到期为了不影响你的正常使用请尽快联系CA中心进行证书更新!")
                //return false;
            }
            try {
                caxlh = $("CertSign").GetSerialNumber(caIndex);//获取证书序列号
                //对证书序列号进行签名
                signedCaxlh = $("CertSign").SignData(caxlh, "0", $('CertSign').GetSubjectName(caIndex));
                if ("signature false" == signedCaxlh) {
                    return false;
                }
            } catch(e) {
                oPublicFunction.showErrorMessage("进行数字签名时失败，请先下载安装最新的网上报税控件程序！")
                return false;
            }
        } else {
            //CertSign.Destory();
            oPublicFunction.showErrorMessage("你的数字证书已经过期请联系CA中心进行证书更新!")
            if (oPublicFunction.showConfirmMessage("如果您已经更新过证书系统中存在过期证书会影响您的正常使用，是否自动删除系统中过期证书") == true)
            {
                Check_Cert_Status(sysDate);
            }
            return false
        }
    }
    else
    {
        //CertSign.Destory()
        oPublicFunction.showErrorMessage("请插入电子令牌!");
        return false;
    }
    return true;
}
/*---CA-end--*/
