var publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCJ9s1qlOyv9qpuaTqauW6fUftzE50rVk3yVPZwv1aO1Ch/XSEz76xCwkyvqpaqceRXrPpdBmO5+ruJ+I8osOHo7L5GWEOcMOO+8izp9hXKBBrmRMD4Egpn00k9DhVIEKp/vyddZPS/doxB8onhN6poTJDLdFLFVEicMf52caN9GQIDAQAB";
//加密敏感字段
function encrypt(str){
var encrypt = new JSEncrypt();
encrypt.setPublicKey(publicKey);
str = encrypt.encrypt(str);
return str;
}
var pgeditor = new $.pge({
pgePath : "./ocx/",//控件下载目录,可以指定绝对路径,如"http://www.baidu.com/download/"
pgeId : "_ocx_password",//控件id
pgeEdittype : 0,//控件显示类型,0(星号),1(明文)
pgeEreg1 : "[\\s\\S]*",//输入过程中字符类型限制,如"[0-9]*"表示只能输入数字
//pgeEreg2 : "^((?=.*[a-z])(?=.*[0-9])(?=.*[^0-9a-zA-Z])|(?=.*[A-Z])(?=.*[0-9])(?=.*[a-z])|(?=.*[A-Z])(?=.*[a-z])(?=.*[^0-9a-zA-Z])|(?=.*[A-Z])(?=.*[0-9])(?=.*[^0-9a-zA-Z]))[\x21-\x7e]{8,20}$",//输入完毕后字符类型判断条件,与pgeditor.pwdValid()方法对应
pgeEreg2:"[\\s\\S]{6,21}",
pgeMaxlength : 21,//允许最大输入长度
pgeTabindex : 2,//tab键顺序
pgeClass : "ocx_style",//控件css样式
pgeInstallClass : "ocx_style",//针对安装或升级的css样式
pgeOnkeydown :"FormSubmit()",//回车键响应函数,需焦点在控件中才能响应
tabCallback : "input2",//火狐tab键回调函数,设置要跳转到的对象ID
pgeOnfocus:"pgeFocus()",//监控光标切入密码控件框
pgeOnblur:"pgeBlur()",//监控光标切出密码控件框
pgeCert:"30818902818100a14c00666a2a72062f21eb696f61ed79af886d5c907bb674ff89dfdca1bb9b0642ac17dafb43ecdb8c8e045e559a27af5c8674641e260769c04e4203428ac9f653a6873950bc6076748e8a1a5e1d55e9084aeb90bb75876eff1bd4c54649133b3ec5001f423fc07aa96d4c10aa87c30c8c8ade1a8ec2180bf233e2662df5c49f0203010001",
pgeCertSM:"2df5e9f76b79da29e6e56779fd9e1d81fd2ccd2372caddf2310e29a64dce8476|91609a35e7dab24609cd44a89b548e88ccf1850658203f0b24de73bff0e88527",
pgeWindowID:"password"+new Date().getTime()+1,
pgeRZRandNum:"j9sg01vmlvoghc5pvrib5imgf6ysihi1",
pgeRZDataB:"reLx8MQhgSeDHYny+zmU7a0ZjJsDuZATKPKJ1ojs7EQ="
});
window.pgeCtrl = pgeditor;
var i = 0;
//密码控件获得焦点时,提示一下
function pgeFocus(){
inputFocus($("#_ocx_password"));
}
//密码控件失去焦点时获得密码强度,并展示出来
function pgeBlur(){
//显示密码强度
inputBlur($("#_ocx_password"));
/* GetLevel(); */
}
window.onload = function(){
$("#login").focus();
pgeditor.pgInitialize();
$("lic").html(pgeditor.setLicense());
}
//添加判断浏览器版本判断语句
function browserBatch(){
var mb = myBrowser();
if(mb != "IE" && mb != "FF"&& mb != "Chrome"){
myalert(promptHint, browerBatchErr, 400,142);
}
}
function myBrowser(){
var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
var isOpera = userAgent.indexOf("Opera") > -1;
if (isOpera) {
return "Opera"
}; //判断是否Opera浏览器
if (userAgent.indexOf("Firefox") > -1) {
return "FF";
} //判断是否Firefox浏览器
if (userAgent.indexOf("Chrome") > -1){
return "Chrome";
}
if (userAgent.indexOf("Safari") > -1) {
return "Safari";
} //判断是否Safari浏览器
if (userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera) {
return "IE";
}; //判断是否IE浏览器
}
// browserBatch();
//根据浏览器,动态加载js文件
function BrowserInfo() {
var res = {
name: "",
version: "",
};
var reg;
var userAgent = self.navigator.userAgent;
if (reg = /edge\/([\d\.]+)/i.exec(userAgent)) {
res.name = "Edge";
res.version = reg[1];
}
else if (reg = /edg\/([\d\.]+)/i.exec(userAgent)) {
res.name = "Edge(Chromium)";
res.version = reg[1];
}
else if (/msie/i.test(userAgent)) {
res.name = "Internet Explorer";
res.version = /msie ([\d\.]+)/i.exec(userAgent)[1];
}
else if (/Trident/i.test(userAgent)) {
res.name = "Internet Explorer";
res.version = /rv:([\d\.]+)/i.exec(userAgent)[1];
}
else if (/chrome/i.test(userAgent)) {
res.name = "Chrome";
res.version = /chrome\/([\d\.]+)/i.exec(userAgent)[1];
}
else if (/safari/i.test(userAgent)) {
res.name = "Safari";
res.version = /version\/([\d\.]+)/i.exec(userAgent)[1];
}
else if (/firefox/i.test(userAgent)) {
res.name = "Firefox";
res.version = /firefox\/([\d\.]+)/i.exec(userAgent)[1];
}
return res;
}
var isMac = function() {
return /macintosh|mac os x/i.test(navigator.userAgent);
}();
loadJs();
function loadJs(){
browser = BrowserInfo();
if ((("Chrome" == browser.name && parseInt(browser.version) > 41) || ("Firefox" == browser.name && parseInt(browser.version) > 52)) && isMac){
/* loadJSbyUrl("/BIZSS/resources/js/certQuery/mac/nmCertEnrollment.UnionPay_chrome_mac.js?002", usecallback()); */
/* loadJSbyUrl("/BIZSS/resources/js/certQuery/mac/nmCryptoKit_chrome_mac.js?002", usecallback()); */
/* loadJSbyUrl("/BIZSS/resources/js/certQuery/mac/certQuery_chrome_mac.js?003", usecallback()); */
/* loadJSbyUrl("/BIZSS/resources/js/certQuery/mac/certsign_chrome_mac.js?002", usecallback()); */
loadJSbyUrl("/BIZSS/resources/js/certQuery/mac/nmCryptoKit_chrome_mac.js?002", usecallback());
loadJSbyUrl("/BIZSS/resources/js/certQuery/mac/certsign_chrome_mac.js?002", usecallback());
loadJSbyUrl("/BIZSS/resources/js/certQuery/mac/login_chome.js?0002", usecallback());
}else{
if((("Chrome" == browser.name && parseInt(browser.version) > 41) || ("Firefox" == browser.name && parseInt(browser.version) > 52)) || "Edge(Chromium)" == browser.name ){
loadJSbyUrl("/BIZSS/resources/js/certQuery/windows/chrome/login.js?008", usecallback());
}else{
// alert("IE浏览器");
loadJSbyUrl("/BIZSS/resources/js/certQuery/windows/IE/CertEnrollment.UnionPay.js?0001", usecallback());
loadJSbyUrl("/BIZSS/resources/js/certQuery/windows/IE/CryptoKit.js?0001", usecallback());
loadJSbyUrl("/BIZSS/resources/js/certQuery/windows/IE/certQuery.js?0001", usecallback());
loadJSbyUrl("/BIZSS/resources/js/certQuery/windows/IE/certsign_SM2_IE.js?0001", usecallback());
loadJSbyUrl("/BIZSS/resources/js/certQuery/windows/IE/certsign.js?0001", usecallback());
loadJSbyUrl("/BIZSS/resources/js/certQuery/windows/IE/login.js?0002", usecallback());
}
}
}
//动态加载js方法
function loadJSbyUrl(url, callback){
if(!isExist(url)){
var script = document.createElement('script'),
fn = callback || function(){};
script.type = 'text/javascript';
if(script.readyState){
script.onreadystatechange = function(){
if( script.readyState == 'loaded' || script.readyState == 'complete' ){
script.onreadystatechange = null;
fn();
}
};
}else{
script.onload = function(){
fn();
};
}
script.src = url;
document.getElementsByTagName('head')[0].appendChild(script);
}
}
//动态删除js
function removeJsByUrl(filename){
var filetype = "js";
var targetelement=(filetype=="js")? "script" :(filetype=="css")? "link" : "none";
var targetattr=(filetype=="js")?"src" : (filetype=="css")? "href" :"none";
var allsuspects=document.getElementsByTagName(targetelement);
for(var i = allsuspects.length; i>=0; i--){
if (allsuspects[i] &&allsuspects[i].getAttribute(targetattr)!=null && allsuspects[i].getAttribute(targetattr).indexOf(filename)!=-1){
allsuspects[i].parentNode.removeChild(allsuspects[i]);
}
}
}
function isExist(filename){
var filetype = "js";
var targetelement=(filetype=="js")? "script" :(filetype=="css")? "link" : "none";
var targetattr=(filetype=="js")?"src" : (filetype=="css")? "href" :"none";
var allsuspects=document.getElementsByTagName(targetelement);
for(var i = allsuspects.length; i>=0; i--){
if (allsuspects[i] &&allsuspects[i].getAttribute(targetattr)!=null && allsuspects[i].getAttribute(targetattr).indexOf(filename)!=-1){
return true;
}
}
return false;
}
function usecallback(){}
dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
//Windows IE32
var PGEdit_IE32_CLASSID="FEF66BD2-220B-4D49-87A9-5BC0A9274C54";
var PGEdit_IE32_CAB="";
var PGEdit_IE32_EXE="UmsPassGuardIE.exe";
var PGEdit_IE32_VERSION="1.0.0.1";
//Windows IE64
var PGEdit_IE64_CLASSID="FEF66BD2-220B-4D49-87A9-5BC0A9274C54";
var PGEdit_IE64_CAB="";
var PGEdit_IE64_EXE="UmsPassGuardX64.exe";
var PGEditt_IE64_VERSION="1.0.0.1";
//Windows 非IE
var PGEdit_FF="UmsPassGuardFF.exe";
var PGEdit_FF_VERSION="1.0.0.1";
//Win10Edge / Chrome42+
var PGEdit_Edge="UmsPassGuardEdge.exe";
var PGEdit_Edge_Mac="UmsPassGuardEdge.pkg";
var PGEdit_Edge_VERSION="1.0.0.1";
//Mac OS
var PGEdit_MacOs="UmsPassGuard.pkg";
var PGEdit_MacOs_VERSION="1.0.0.1";
//Win10Edge / Chrome42+环境下用到的一些变量
var CIJSON = {"interfacetype":0,"data":{"switch":3}};//检查控件是否安装
var ICJSON = {"interfacetype":0,"data":{"switch":2}};//实例化控件窗口
var INCJSON = {"interfacetype":1,"data":{}};//初始化控件参数
var OPJSON = {"interfacetype":0,"data":{"switch":0}};//开启控件保护
var XTJSON = {"interfacetype":0,"data":{"switch":5}};//心跳监测
var CPJSON = {"interfacetype":0,"data":{"switch":1}};//关闭控件保护
var OUTJSON = {"interfacetype":2,"data":{}};//获取值类json串
var CLPJSON = {"interfacetype":0,"data":{"switch":4}};//清空密码
//心跳监听变量、集合、本地服务地址、日志开关、全局检测安装变量
var isInstalled = -1,objVersion = "",interv,urls,logFlag = true,onceInterv={},iterArray=[];
var inFlag = {},datac,RZCIJSON;//控制是否能输入
var license = "QVFxb3FjcDlEcFJVK3UxUmc2cEluQ0V4NkxnWllEODBNSEt6YVg5OFZXdDRDZDBFaEZONXI4VkI3QjRsb0VoRElXdWVkNXdaYlJVaVJyb0dJRjQ3d0dnMkZiS2sxQ1pLeFRLanR6MzF6YkdMbVY0YStVLytyakc3TnJnak5Zd0sxRU8rbzFRRXJOcE1EUUpIWE9qNHlrL1RtYVNPckdxYVZBaEkrcFduemQ0PXsiaWQiOjAsInR5cGUiOiJwcm9kdWN0IiwicGFja2FnZSI6WyIiXSwiYXBwbHluYW1lIjpbIjE5Mi4xNjguMS4xMTgiXSwicGxhdGZvcm0iOjR9";
var licenseMac = "SUxtVTdoVSt3RVd4WHlNUWMxWGxvS0VhZUF3V1BVS2N4VDEzaGp1M0x3WUlRVEtiaC9PaGlQQUlDOXB5UkNWUVV6clRiV3oxTWJHeFJyeEYwWE9YTVQ4S09vdkcxYVNzYWpSWkZaaElvekV5OTdGNktJbVBiMGpTelE5OGREVWFxYk5NWWZBSHZHeXJ1bnU4bDNSVmJrc0QwSmpqR2h2L0RMZ0xZWTI2SitRPXsiaWQiOjAsInR5cGUiOiJwcm9kdWN0IiwicGFja2FnZSI6WyIiXSwiYXBwbHluYW1lIjpbIjE5Mi4xNjguMS4xMTgiXSwicGxhdGZvcm0iOjh9";
var PGEdit_Update="0";//非IE控件是否强制升级 1强制升级,0不强制升级
if(navigator.userAgent.indexOf("MSIE")<0){navigator.plugins.refresh();}//非IE需要刷新plugins数组
(function(jQuery) {
jQuery.pge = function (options) {
this.settings = jQuery.extend(true, {}, jQuery.pge.defaults, options);
this.init();
};
jQuery.extend(jQuery.pge, {
defaults: {
pgePath: "./ocx/",
pgeId: "",
pgeEdittype: 0,
pgeEreg1: "",
pgeEreg2: "",
pgeMaxlength: 12,
pgeTabindex: 2,
pgeClass: "ocx_style",
pgeInstallClass: "ocx_style",
passLoginStyle:"passLoginStyle",
pgeOnkeydown:"",
pgeFontName:"",
pgeFontSize:"",
tabCallback:"",
pgeBackColor:"",
pgeForeColor:"",
pgeUrls:"https://windows10.microdone.cn",
pgePort:5566,
pgeWindowID:"password"+new Date().getTime()
},
prototype: {
init: function() {//初始化pge对象
this.pgeDownText="请点此安装控件";
this.osBrowser = this.checkOsBrowser();
if(isInstalled == -1) isInstalled = this.checkInstall();
this.pgeVersion = this.getVersion();
},
apiVersion : "2016.07.10001",//js脚本版本号
/**输入接口**/
//给控件设置随机因子
pwdSetSk : function(s) {
if (isInstalled) {
try {
var control = this.pwdGetEById(this.settings.pgeId);
if (this.osBrowser==1 || this.osBrowser==3 || this.osBrowser==6 || this.osBrowser==8) {
control.input1 = s;
} else if (this.osBrowser==2) {
control.input(1,s);
}else if (this.osBrowser == 10 || this.osBrowser == 11){
var id = this.settings.pgeWindowID;
INCJSON = {"interfacetype" : 1,"data" : {}};
INCJSON.id = id , INCJSON.data.aeskey = s;
datac = this.getEnStr(this.settings.pgeRZRandNum,INCJSON);
RZCIJSON = {"rankey":this.settings.pgeRZRandNum,"datab":this.settings.pgeRZDataB,"datac":datac};
this.pwdGetData(RZCIJSON);
}
} catch (err) { }
}
},
//设置授权license
setLicense:function(){
if(isInstalled){
var control = document.getElementById(this.settings.pgeId);
if(this.osBrowser == 1 || this.osBrowser == 3){
control.license = license;
}
}
},
/**输出接口**/
//获得密码长度
pwdLength : function() {
var code = 0;
if (!isInstalled) {
code = 0;
}else{
try {
var control = this.pwdGetEById(this.settings.pgeId);
if (this.osBrowser==1 || this.osBrowser==3) {
code = control.output3;
} else if (this.osBrowser==2) {
code = control.output(3);
}else if (this.osBrowser==6 || this.osBrowser==8) {
code = control.get_output3();
}else if (this.osBrowser == 10 || this.osBrowser == 11){
var id = this.settings.pgeWindowID;
OUTJSON.id = id,OUTJSON.data.datatype = 3,OUTJSON.data.encrypttype = 0;
datac = this.getEnStr(this.settings.pgeRZRandNum,OUTJSON);
RZCIJSON = {"rankey":this.settings.pgeRZRandNum,"datab":this.settings.pgeRZDataB,"datac":datac};
code = this.pwdGetData(RZCIJSON);
}
} catch (err) { code = 0; }
}
return code;
},
//获得密码的Hash值
pwdHash : function() {
var code = 0;
if (!isInstalled) {
code = 0;
}else{
try {
var control = this.pwdGetEById(this.settings.pgeId);
if (this.osBrowser==1 || this.osBrowser==3) {
code = control.output2;
} else if (this.osBrowser==2) {
code = control.output(2);
}else if (this.osBrowser==6 || this.osBrowser==8) {
code = control.get_output2();
}else if (this.osBrowser == 10 || this.osBrowser == 11){
var id = this.settings.pgeWindowID;
OUTJSON.id = id,OUTJSON.data.datatype = 2,OUTJSON.data.encrypttype = 1;
datac = this.getEnStr(this.settings.pgeRZRandNum,OUTJSON);
RZCIJSON = {"rankey":this.settings.pgeRZRandNum,"datab":this.settings.pgeRZDataB,"datac":datac};
code = this.pwdGetData(RZCIJSON);
}
} catch (err) {code = 0;}
}
return code;
},
//判断密码是否是简单密码
pwdSimple: function() {
var code = '';
if (!isInstalled) {
code = '';
}else{
try {
var control = this.pwdGetEById(this.settings.pgeId);
if (this.osBrowser==1 || this.osBrowser==3) {
code = control.output44;
} else if (this.osBrowser==2) {
code = control.output(13);
}else if (this.osBrowser==6 || this.osBrowser==8) {
code = control.get_output10();
}else if (this.osBrowser == 10 || this.osBrowser == 11){
var id = this.settings.pgeWindowID;
OUTJSON.id = id,OUTJSON.data.datatype = 13,OUTJSON.data.encrypttype = 1;
datac = this.getEnStr(this.settings.pgeRZRandNum,OUTJSON);
RZCIJSON = {"rankey":this.settings.pgeRZRandNum,"datab":this.settings.pgeRZDataB,"datac":datac};
code = this.pwdGetData(RZCIJSON);
}
} catch (err) {code = '';}
}
return code;
},
//判断密码是否匹配正则表达式二
pwdValid : function() {
var code = 1;
if (!isInstalled) {
code = 1;
}else{
try {
var control = this.pwdGetEById(this.settings.pgeId);
if (this.osBrowser==1 || this.osBrowser==3) {
if(control.output1) code = control.output5;
} else if (this.osBrowser==2) {
code = control.output(5);
}else if (this.osBrowser==6 || this.osBrowser==8) {
code = control.get_output5();
}else if (this.osBrowser == 10 || this.osBrowser == 11){
var id = this.settings.pgeWindowID;
OUTJSON.id = id,OUTJSON.data.datatype = 5,OUTJSON.data.encrypttype = 0;
datac = this.getEnStr(this.settings.pgeRZRandNum,OUTJSON);
RZCIJSON = {"rankey":this.settings.pgeRZRandNum,"datab":this.settings.pgeRZDataB,"datac":datac};
code = this.pwdGetData(RZCIJSON);
}
} catch (err) { code = 1; }
}
return code;
},
//获得密码AES密文
pwdResult: function() {
var code = '';
if (!isInstalled) {
code = '';
}else{
try {
var control = this.pwdGetEById(this.settings.pgeId);
if (this.osBrowser==1 || this.osBrowser==3) {
code = control.output1;
} else if (this.osBrowser==2) {
code = control.output(7);
}else if (this.osBrowser==6 || this.osBrowser==8) {
code = control.get_output1();
}else if (this.osBrowser == 10 || this.osBrowser == 11){
OUTJSON.id = this.settings.pgeWindowID,OUTJSON.data.datatype = 7,OUTJSON.data.encrypttype = 0;
datac = this.getEnStr(this.settings.pgeRZRandNum,OUTJSON);
RZCIJSON = {"rankey":this.settings.pgeRZRandNum,"datab":this.settings.pgeRZDataB,"datac":datac};
code = this.pwdGetData(RZCIJSON);
}
} catch (err) { code = '';}
}
return code;
},
//获得AES+RSA密文
pwdResult28: function(type,account) {
var code = '';
if (!isInstalled) {
code = '';
}else{
try {
var control = this.pwdGetEById(this.settings.pgeId);
if (this.osBrowser==1 || this.osBrowser==3) {
control.input8=this.settings.pgeCert;
code = control.output28(type,account);
} else if (this.osBrowser==2) {
control.input(900,type) ;
control.input(901,account);
control.input(800,this.settings.pgeCert);
code = control.output(900,1);
}else if (this.osBrowser==6 || this.osBrowser==8) {
control.input11 =this.settings.pgeCert;
control.input18 =Number(type);
control.input19 =account;
code = control.get_output23();
}else if (this.osBrowser == 10 || this.osBrowser == 11){
INCJSON.id=this.settings.pgeWindowID;
INCJSON.data.oem_900=type;
INCJSON.data.oem_901=account;
datac = this.getEnStr(this.settings.pgeRZRandNum,INCJSON);
RZCIJSON1 = {"rankey":this.settings.pgeRZRandNum,"datab":this.settings.pgeRZDataB,"datac":datac};
this.pwdGetData(RZCIJSON1);
OUTJSON.id = this.settings.pgeWindowID,OUTJSON.data.datatype = 900,OUTJSON.data.encrypttype = 0;
datac = this.getEnStr(this.settings.pgeRZRandNum,OUTJSON);
RZCIJSON = {"rankey":this.settings.pgeRZRandNum,"datab":this.settings.pgeRZDataB,"datac":datac};
code = this.pwdGetData(RZCIJSON);
}
} catch (err) { code = '';}
}
return code;
},
//获得SM2+SM4密文
pwdResultSM: function(type,account) {
var code = '';
if (!isInstalled) {
code = '';
}else{
try {
var control = this.pwdGetEById(this.settings.pgeId);
if (this.osBrowser==1 || this.osBrowser==3) {
control.input7=this.settings.pgeCertSM;
code = control.output104(type,account);
} else if (this.osBrowser==2) {
control.input(900,type) ;
control.input(901,account);
control.input(200,this.settings.pgeCertSM);
code = control.output(901,12);
}else if (this.osBrowser==6 || this.osBrowser==8) {
control.input13 =this.settings.pgeCertSM;
control.input18 =Number(type);
control.input19 =account;
code = control.get_output24();
}else if (this.osBrowser == 10 || this.osBrowser == 11){
INCJSON.id=this.settings.pgeWindowID;
INCJSON.data.oem_900=type;
INCJSON.data.oem_901=account;
datac = this.getEnStr(this.settings.pgeRZRandNum,INCJSON);
RZCIJSON1 = {"rankey":this.settings.pgeRZRandNum,"datab":this.settings.pgeRZDataB,"datac":datac};
this.pwdGetData(RZCIJSON1);
OUTJSON.id = this.settings.pgeWindowID,OUTJSON.data.datatype = 901,OUTJSON.data.encrypttype = 0;
datac = this.getEnStr(this.settings.pgeRZRandNum,OUTJSON);
RZCIJSON = {"rankey":this.settings.pgeRZRandNum,"datab":this.settings.pgeRZDataB,"datac":datac};
code = this.pwdGetData(RZCIJSON);
}
} catch (err) { code = '';}
}
return code;
},
//获得计算机Mac信息密文
machineNetwork : function() {
var code = '';
if (!isInstalled) {
code = '';
}else{
try {
var control = this.pwdGetEById(this.settings.pgeId);
if (this.osBrowser==1 || this.osBrowser==3) {
code = control.GetIPMacList();
} else if (this.osBrowser==2) {
code = control.output(9);
}else if (this.osBrowser==6 || this.osBrowser==8) {
code = control.get_output7(0);
}else if (this.osBrowser == 10 || this.osBrowser == 11){
var id = this.settings.pgeWindowID;
OUTJSON.id = id,OUTJSON.data.datatype = 9,OUTJSON.data.encrypttype = 0;
datac = this.getEnStr(this.settings.pgeRZRandNum,OUTJSON);
RZCIJSON = {"rankey":this.settings.pgeRZRandNum,"datab":this.settings.pgeRZDataB,"datac":datac};
code = this.pwdGetData(RZCIJSON);
}
} catch (err) { code = ''; }
}
return code;
},
//获得计算机硬盘信息密文
machineDisk : function() {
var code = '';
if (!isInstalled) {
code = '';
}else{
try {
var control = this.pwdGetEById(this.settings.pgeId);
if (this.osBrowser==1 || this.osBrowser==3) {
code = control.GetNicPhAddr(1);
} else if (this.osBrowser==2) {
code = control.output(11);
}else if (this.osBrowser==6 || this.osBrowser==8) {
code = control.get_output7(2);
}else if (this.osBrowser == 10 || this.osBrowser == 11){
var id = this.settings.pgeWindowID;
OUTJSON.id = id,OUTJSON.data.datatype = 11,OUTJSON.data.encrypttype = 0;
datac = this.getEnStr(this.settings.pgeRZRandNum,OUTJSON);
RZCIJSON = {"rankey":this.settings.pgeRZRandNum,"datab":this.settings.pgeRZDataB,"datac":datac};
code = this.pwdGetData(RZCIJSON);
}
} catch (err) { code = ''; }
}
return code;
},
//获得计算机cpu信息密文
machineCPU : function() {
var code = '';
if (!isInstalled) {
code = '';
}else{
try {
var control = this.pwdGetEById(this.settings.pgeId);
if (this.osBrowser==1 || this.osBrowser==3) {
code = control.GetNicPhAddr(2);
} else if (this.osBrowser==2) {
code = control.output(10);
}else if (this.osBrowser==6 || this.osBrowser==8) {
code = control.get_output7(1);
} else if (this.osBrowser == 10 || this.osBrowser == 11){
var id = this.settings.pgeWindowID;
OUTJSON.id = id,OUTJSON.data.datatype = 10,OUTJSON.data.encrypttype = 0;
datac = this.getEnStr(this.settings.pgeRZRandNum,OUTJSON);
RZCIJSON = {"rankey":this.settings.pgeRZRandNum,"datab":this.settings.pgeRZDataB,"datac":datac};
code = this.pwdGetData(RZCIJSON);
}
} catch (err) { code = '';}
}
return code;
},
pwdValid2:function(){
var code = 0;
if (!isInstalled) {
code = 0;
}else{
try {
var control = this.pwdGetEById(this.settings.pgeId);
if(this.osBrowser == 10 || this.osBrowser == 11){
var id = this.settings.pgeWindowID;
OUTJSON.id = id,OUTJSON.data.datatype = 3,OUTJSON.data.encrypttype = 0,datac = this.getEnStr(this.settings.pgeRZRandNum,OUTJSON);
RZCIJSON = {"rankey":this.settings.pgeRZRandNum,"datab":this.settings.pgeRZDataB,"datac":datac};
var len = this.pwdGetData(RZCIJSON);
OUTJSON.data.datatype = 4,OUTJSON.data.encrypttype =2,datac = this.getEnStr(this.settings.pgeRZRandNum,OUTJSON);
RZCIJSON = {"rankey":this.settings.pgeRZRandNum,"datab":this.settings.pgeRZDataB,"datac":datac};
var num = this.pwdGetData(RZCIJSON);
OUTJSON.data.datatype = 4,OUTJSON.data.encrypttype = 1,datac = this.getEnStr(this.settings.pgeRZRandNum,OUTJSON);
RZCIJSON = {"rankey":this.settings.pgeRZRandNum,"datab":this.settings.pgeRZDataB,"datac":datac};
var zoom = this.pwdGetData(RZCIJSON);
} else if (this.osBrowser==1 || this.osBrowser==3) {
var len = control.output3;
var num = control.output4;
var zoom = control.output54;
} else if (this.osBrowser==2 ) {
var len = control.output(3);
var num = control.output(4);
var zoom = control.output(4,1);
}else if (this.osBrowser==6 || this.osBrowser==8) {
var len = control.get_output3();
var num = control.get_output4();
var zoom = control.get_output16();
}
if(zoom==7||zoom==11||zoom==13||zoom==14||zoom==15){
code = 0;//符合要求
}else {
code = 1; //不符合要求
}
} catch (err) { code ="";}
}
return code;
},
//获得密码的强度(强度的规则可调整)
pwdStrength : function() {
var code = 0;
if (!isInstalled) {
code = 0;
}else{
try {
var control = this.pwdGetEById(this.settings.pgeId);
if(this.osBrowser == 10 || this.osBrowser == 11){
var id = this.settings.pgeWindowID;
OUTJSON.id = id,OUTJSON.data.datatype = 3,OUTJSON.data.encrypttype = 0,datac = this.getEnStr(this.settings.pgeRZRandNum,OUTJSON);
RZCIJSON = {"rankey":this.settings.pgeRZRandNum,"datab":this.settings.pgeRZDataB,"datac":datac};
var len = this.pwdGetData(RZCIJSON);
OUTJSON.data.datatype = 4,OUTJSON.data.encrypttype =2,datac = this.getEnStr(this.settings.pgeRZRandNum,OUTJSON);
RZCIJSON = {"rankey":this.settings.pgeRZRandNum,"datab":this.settings.pgeRZDataB,"datac":datac};
var num = this.pwdGetData(RZCIJSON);
OUTJSON.data.datatype = 4,OUTJSON.data.encrypttype = 1,datac = this.getEnStr(this.settings.pgeRZRandNum,OUTJSON);
RZCIJSON = {"rankey":this.settings.pgeRZRandNum,"datab":this.settings.pgeRZDataB,"datac":datac};
var zoom = this.pwdGetData(RZCIJSON);
} else if (this.osBrowser==1 || this.osBrowser==3) {
var len = control.output3;
var num = control.output4;
var zoom = control.output54;
} else if (this.osBrowser==2 ) {
var len = control.output(3);
var num = control.output(4);
var zoom = control.output(4,1);
}else if (this.osBrowser==6 || this.osBrowser==8) {
var len = control.get_output3();
var num = control.get_output4();
var zoom = control.get_output16();
}
if(len < 6){
code = 0;
}else if(num == 1 && len >= 6){
code = 1; //弱
}else if(num == 2 && len >= 6){
code = 2; //中
}else if(num == 3 && len >= 6){
code = 3; //强
}
} catch (err) { code ="";}
}
return code;
},
//获得控件版本号
getVersion : function() {
try {
if (this.osBrowser==1 || this.osBrowser==3) {
var comActiveX = new ActiveXObject("UmsPassGuardX.PassGuard.1");
return comActiveX.output35;
}else if(this.osBrowser == 2 || this.osBrowser == 6 || this.osBrowser == 8 ){
var arr = new Array(),pge_version;
var pge_info = navigator.plugins['UmsPassGuardX'].description;
if(pge_info.indexOf(":") > 0){
arr = pge_info.split(":");
pge_version = arr[1];
}else{
pge_version = "";
}
} else if (this.osBrowser == 10 || this.osBrowser == 11){
if(isInstalled == -1 || !isInstalled) return;
var id = this.settings.pgeWindowID;
OUTJSON.id = id,OUTJSON.data.datatype = 12,OUTJSON.data.encrypttype = 0;
datac = this.getEnStr(this.settings.pgeRZRandNum,OUTJSON);
RZCIJSON = {"rankey":this.settings.pgeRZRandNum,"datab":this.settings.pgeRZDataB,"datac":datac};
pge_version = this.pwdGetData(RZCIJSON);
}
return pge_version;
}catch(err){ return "";}
},
//获得密码字符类型个数
pwdNum : function() {
var code = 0;
if (!isInstalled) {
code = 0;
}else{
try {
var control = this.pwdGetEById(this.settings.pgeId);
if (this.osBrowser==1 || this.osBrowser==3) {
code = control.output4;
} else if (this.osBrowser==2) {
code = control.output(4);
}else if (this.osBrowser==6 || this.osBrowser==8) {
code = control.get_output4();
}else if (this.osBrowser == 10 || this.osBrowser == 11){
var id = this.settings.pgeWindowID;
OUTJSON.id = id,OUTJSON.data.datatype = 4,OUTJSON.data.encrypttype = 0;
datac = this.getEnStr(this.settings.pgeRZRandNum,OUTJSON);
RZCIJSON = {"rankey":this.settings.pgeRZRandNum,"datab":this.settings.pgeRZDataB,"datac":datac};
code = this.pwdGetData(RZCIJSON);
}
} catch (err) { code = 0;}
}
return code;
},
/**公共方法**/
//检测操作系统和浏览器信息
checkOsBrowser: function() {
var userosbrowser;
var regStr_chrome = /chrome\/[\d.]+/gi ;
var regStr_firefox = /firefox\/[\d.]+/gi ;
if((navigator.platform =="Win32") || (navigator.platform =="Windows")){
if(navigator.userAgent.indexOf("MSIE")>0 || navigator.userAgent.indexOf("msie")>0 || navigator.userAgent.indexOf("Trident")>0 || navigator.userAgent.indexOf("trident")>0){
if(navigator.userAgent.indexOf("ARM")>0){
userosbrowser=9; // win8 RAM Touch
this.pgeditIEExe="";
}else{
userosbrowser=1;// windows32ie32
this.pgeditIEClassid=PGEdit_IE32_CLASSID;
this.pgeditIECab=PGEdit_IE32_CAB;
this.pgeditIEExe=PGEdit_IE32_EXE;
}
}else if(navigator.userAgent.indexOf("Edge")>0){
userosbrowser = 10;
this.pgeditFFExe = PGEdit_Edge;
}else if(navigator.userAgent.indexOf("Chrome")>0){
var chromeVersion = navigator.userAgent.match(regStr_chrome).toString();
chromeVersion = parseInt(chromeVersion.replace(/[^0-9.]/gi,""));
if(chromeVersion >= 42){
userosbrowser = 10;
this.pgeditFFExe = PGEdit_Edge;
}else{
userosbrowser=2;
this.pgeditFFExe = PGEdit_FF;
}
}else if(navigator.userAgent.indexOf("Firefox")>0){
var firefoxVersion = navigator.userAgent.match(regStr_firefox).toString();
firefoxVersion = parseInt(firefoxVersion.replace(/[^0-9.]/gi,""));
if(firefoxVersion >= 51){
userosbrowser = 10;
this.pgeditFFExe = PGEdit_Edge;
}else{
userosbrowser=2;
this.pgeditFFExe = PGEdit_FF;
}
}else{
userosbrowser=2; // windowsff
this.pgeditFFExe=PGEdit_FF;
}
}else if((navigator.platform=="Win64")){
if((navigator.userAgent.indexOf("Windows NT 6.2")>0 || navigator.userAgent.indexOf("windows nt 6.2")>0) && navigator.userAgent.indexOf("Firefox") == -1){
userosbrowser=1;// windows32ie32
this.pgeditIEClassid=PGEdit_IE32_CLASSID;
this.pgeditIECab=PGEdit_IE32_CAB;
this.pgeditIEExe=PGEdit_IE32_EXE;
}else if(navigator.userAgent.indexOf("MSIE")>0 || navigator.userAgent.indexOf("msie")>0 || navigator.userAgent.indexOf("Trident")>0 || navigator.userAgent.indexOf("trident")>0){
userosbrowser=3;//windows64ie64
this.pgeditIEClassid=PGEdit_IE64_CLASSID;
this.pgeditIECab=PGEdit_IE64_CAB;
this.pgeditIEExe=PGEdit_IE64_EXE;
}else if(navigator.userAgent.indexOf("Edge")>0 || navigator.userAgent.indexOf("Firefox")){
userosbrowser = 10;
this.pgeditFFExe = PGEdit_Edge;
}else if(navigator.userAgent.indexOf("Chrome")>0){
var chromeVersion = navigator.userAgent.match(regStr_chrome).toString();
chromeVersion = parseInt(chromeVersion.replace(/[^0-9.]/gi,""));
if(chromeVersion >= 42){
userosbrowser = 10;
this.pgeditFFExe = PGEdit_Edge;
}else{
userosbrowser = 2;
this.pgeditFFExe = PGEdit_FF;
}
}else{
userosbrowser=2;
this.pgeditFFExe=PGEdit_FF;
}
}else if(navigator.userAgent.indexOf("Macintosh")>0){
if(navigator.userAgent.indexOf("Safari")>0 && (navigator.userAgent.indexOf("Version/5.1")>0 || navigator.userAgent.indexOf("Version/5.2")>0 || navigator.userAgent.indexOf("Version/6")>0)){
userosbrowser=8;//macos Safari 5.1 more
this.pgeditFFExe=PGEdit_MacOs;
}else if(navigator.userAgent.indexOf("Firefox")>0 || navigator.userAgent.indexOf("Chrome")>0){
var chromeVersion = navigator.userAgent.match(regStr_chrome);
var firefoxVersion = navigator.userAgent.match(regStr_firefox);
if( chromeVersion != null){
chromeVersion = chromeVersion.toString();
chromeVersion = parseInt(chromeVersion.replace(/[^0-9.]/gi,""));
if(chromeVersion >= 42){
userosbrowser = 11;
this.pgeditFFExe = PGEdit_Edge_Mac;
}else{
userosbrowser=6;
this.pgeditFFExe = PGEdit_MacOs;
}
}
if( firefoxVersion != null){
firefoxVersion = firefoxVersion.toString();
firefoxVersion = parseInt(firefoxVersion.replace(/[^0-9.]/gi,""));
if(firefoxVersion >= 51){
userosbrowser = 11;
this.pgeditFFExe = PGEdit_Edge_Mac;
}else{
userosbrowser=6;
this.pgeditFFExe = PGEdit_MacOs;
}
}
}else if(navigator.userAgent.indexOf("Opera")>=0 && (navigator.userAgent.indexOf("Version/11.6")>0 || navigator.userAgent.indexOf("Version/11.7")>0)){
userosbrowser=6;//macos
this.pgeditFFExe=PGEdit_MacOs;
}else if(navigator.userAgent.indexOf("Safari")>=0){
var regStr_mac = /Version\/[\d.]+/gi;
var num = navigator.userAgent.match(regStr_mac).toString();
num=parseInt(num.replace(/[^0-9.]/gi,""));
if(num>=12){
userosbrowser = 11;
this.pgeditFFExe = PGEdit_Edge_Mac;
}else{
userosbrowser=6;//macos
this.pgeditFFExe=PGEdit_MacOs;
};
}else{
userosbrowser=0;//macos
this.pgeditFFExe="";
}
}
return userosbrowser;
},
//根据不同的浏览器生成控件标签代码
getpgeHtml: function() {
if (this.osBrowser==1 || this.osBrowser==3) {
return '<span id="'+this.settings.pgeId+'_pge" class="'+this.settings.passLoginStyle+'"><OBJECT ID="' + this.settings.pgeId + '" CLASSID="CLSID:' + this.pgeditIEClassid + '" codebase="'
+this.settings.pgePath+ this.pgeditIECab + '" onkeydown="if(13==event.keyCode || 27==event.keyCode)'+this.settings.pgeOnkeydown+';" tabindex="'+this.settings.pgeTabindex+'" class="' + this.settings.pgeClass + '">'
+ '<param name="edittype" value="'+ this.settings.pgeEdittype + '"><param name="maxlength" value="' + this.settings.pgeMaxlength +'"><param name="input58" value="'+this.settings.pgeOnfocus+'"><param name="input59" value="'+this.settings.pgeOnblur+'">'
+ '<param name="input2" value="'+ this.settings.pgeEreg1 + '"><param name="input3" value="'+ this.settings.pgeEreg2 + '"></OBJECT></span>'
+ '<span id="'+this.settings.pgeId+'_down" class="'+this.settings.pgeInstallClass+'" style="text-align:center;display:none;"><a href="'+this.settings.pgePath+this.pgeditIEExe+'">'+this.pgeDownText+'</a></span>';
} else if (this.osBrowser==2) {
var ff = "";
if(navigator.userAgent.indexOf("SE 2.X") > -1 || navigator.userAgent.indexOf("OPR") > -1){
ff = "this.focus();";
}
var pgeOcx='<embed onmouseover="'+ff+'" onfocus="'+this.settings.pgeOnfocus+'" input_0 ="'+license+'" onblur="'+this.settings.pgeOnblur+'" ID="' + this.settings.pgeId + '" maxlength="'+this.settings.pgeMaxlength+'" input_2="'+this.settings.pgeEreg1+'" input_3="'+this.settings.pgeEreg2+'" edittype="'+this.settings.pgeEdittype+'" type="application/umspass-guard-x" tabindex="'+this.settings.pgeTabindex+'" class="' + this.settings.pgeClass + '" ';
if(this.settings.pgeOnkeydown!=undefined && this.settings.pgeOnkeydown!="") pgeOcx+=' input_1013="'+this.settings.pgeOnkeydown+'"';
if(this.settings.tabCallback!=undefined && this.settings.tabCallback!="") pgeOcx+=' input_1009="setTimeout(function(){document.getElementById(\''+this.settings.tabCallback+'\').focus();},10);"';
if(navigator.userAgent.indexOf("Chrome") > -1 || navigator.userAgent.indexOf("Safari") > -1){
if(this.settings.pgeOnfocus!=undefined && this.settings.pgeOnfocus!="") pgeOcx+=' input_1010="'+this.settings.pgeOnfocus+'"';
if(this.settings.pgeOnblur!=undefined && this.settings.pgeOnblur!="") pgeOcx+=' input_1011="'+this.settings.pgeOnblur+'"';
}
if(this.settings.pgeFontName!=undefined && this.settings.pgeFontName!="") pgeOcx+=' FontName="'+this.settings.pgeFontName+'"';
if(this.settings.pgeFontSize!=undefined && this.settings.pgeFontSize!="") pgeOcx+=' FontSize='+Number(this.settings.pgeFontSize)+'';
pgeOcx+='/>';
return pgeOcx;
} else if (this.osBrowser==6 || this.osBrowser==8) {
return '<embed ID="' + this.settings.pgeId + '" tabcallback = "'+this.settings.pgeMacTabCB+'" setlic ="'+licenseMac+'" losefocuscallback="'+this.settings.pgeOnblur+'" havefocuscallback="'+this.settings.pgeOnfocus+'" input2="'+ this.settings.pgeEreg1 + '" input3="'+ this.settings.pgeEreg2 + '" input4="'+Number(this.settings.pgeMaxlength)+'" input0="'+Number(this.settings.pgeEdittype)+'" type="application/umspass-guard-x" version="'+PGEdit_MacOs_VERSION+'" tabindex="'+this.settings.pgeTabindex+'" class="' + this.settings.pgeClass + '"/>';
} else if (this.osBrowser == 10 || this.osBrowser == 11){
var obj =this;
this.checkInstall(1,function(obj){
if(!isInstalled || isInstalled == -1) isInstalled = true;
var id = obj.settings.pgeId;
var winId = obj.settings.pgeWindowID;
if((obj.getConvertVersion(objVersion)<obj.getConvertVersion(PGEdit_Edge_VERSION))&&PGEdit_Update=="1"){
var winPath = obj.settings.pgePath+obj.pgeditFFExe;
$(".winA").html("请点此升级控件");
$(".winA").attr("href",winPath);
}else{
var fos = "";
if(obj.osBrowser == 10){
fos = "this.type='password';";
}
$("#"+id+"_down").parent().html('<div><input type="password" name="txtPassword" style="height:0px;width:0px;visibility:hidden; float:right"/><input type="password" name="txtPassword" style="height:0px;width:0px;visibility:hidden;float:right"/></div><div><input type="text" onfocus="'+fos+' pgeCtrl.openProt(\''+winId+'\',this.id);pgeCtrl.setCX(this);'+obj.settings.pgeOnfocus+'" onkeydown="pgeCtrl.setSX(event,\''+obj.settings.pgeOnkeydown+'\',this);" onclick = "pgeCtrl.setCX(this)" onblur = "pgeCtrl.closeProt(\''+winId+'\',this.id);'+obj.settings.pgeOnblur+'" id = "'+id+'" style="ime-mode:disabled" tabindex="2" class="' + obj.settings.pgeClass + '"/></div>');
var o = obj.pwdGetEById(id);
if(obj.osBrowser == 10 || obj.osBrowser == 11){
o = obj.pwdGetEById(id)
if(o != null){
if(obj.osBrowser == 11){
o.onkeypress = function(e){
var chrTyped, chrCode=0, evt = e ? e : event,chrCode = evt.which;
var x = String.fromCharCode(chrCode);
var maxlength = parseInt(obj.settings.pgeMaxlength);
if(chrCode>=32 && chrCode<=126){
if(this.value.length > (maxlength-1)) return false;
var reg1 = obj.settings.pgeEreg1.replace("*","");
reg1 = new RegExp(reg1);
if(reg1.test(x)) this.value+='*';
return false;
}else return true;
}
o.onkeydown = function(e){
var chrTyped, chrCode=0, evt=e?e:event;
chrCode = evt.which;
var x = String.fromCharCode(chrCode);
if(chrCode == 13){
this.blur();
eval("("+obj.settings.pgeOnkeydown+")");
}else if(chrCode>=37 && chrCode<=40) return false;
else return true;
}
}
if(obj.osBrowser == 10){
o.onkeypress = function(){ return inFlag[winId].flag; }
}
}
obj.instControl(winId,obj);
}
}
});
return '<div id="'+this.settings.pgeId+'_down" class="'+this.settings.pgeInstallClass+'" style="text-align:center;line-height:25px;"><a href="'+this.settings.pgePath+this.pgeditFFExe+'">'+this.pgeDownText+'</a></div>';
} else {
return '<div id="'+this.settings.pgeId+'_down" class="'+this.settings.pgeInstallClass+'" style="text-align:center;">暂不支持此浏览器</div>';
}
},
//用document.write()绘制控件标签代码
generate: function() {
if (this.osBrowser==10 || this.osBrowser==11) {return document.write(this.getpgeHtml());}
if (!isInstalled) {
return document.write(this.getDownHtml());
}else{
if(this.osBrowser==1){
if(this.getConvertVersion(this.pgeVersion)<this.getConvertVersion(PGEdit_IE32_VERSION) && PGEdit_Update==1){
this.setDownText();
return document.write(this.getDownHtml());
}
} else if(this.osBrowser==3){
if(this.getConvertVersion(this.pgeVersion)<this.getConvertVersion(PGEditt_IE64_VERSION) && PGEdit_Update==1){
this.setDownText();
return document.write(this.getDownHtml());
}
} else if(this.osBrowser==2){
if(this.getConvertVersion(this.pgeVersion)<this.getConvertVersion(PGEdit_FF_VERSION) && PGEdit_Update==1){
this.setDownText();
return document.write(this.getDownHtml());
}
} else if (this.osBrowser==6 || this.osBrowser==8) {
if(this.getConvertVersion(this.pgeVersion)<this.getConvertVersion(PGEdit_MacOs_VERSION)&& PGEdit_Update==1){
this.setDownText();
return document.write(this.getDownHtml());
}
}
return document.write(this.getpgeHtml());
}
},
//返回绘制控件标签代码
load : function() {
if (this.osBrowser==10 || this.osBrowser==11) {return this.getpgeHtml();}
if (!isInstalled) {
return this.getDownHtml();
}else{
if(this.osBrowser==1){
if(this.getConvertVersion(this.pgeVersion)<this.getConvertVersion(PGEdit_IE32_VERSION) && PGEdit_Update==1){
this.setDownText();
return this.getDownHtml();
}
}else if(this.osBrowser==3){
if(this.getConvertVersion(this.pgeVersion)<this.getConvertVersion(PGEditt_IE64_VERSION) && PGEdit_Update==1){
this.setDownText();
return this.getDownHtml();
}
}else if(this.osBrowser==2){
if(this.getConvertVersion(this.pgeVersion)<this.getConvertVersion(PGEdit_FF_VERSION) && PGEdit_Update==1){
this.setDownText();
return this.getDownHtml();
}
} else if (this.osBrowser==6 || this.osBrowser==8) {
if(this.getConvertVersion(this.pgeVersion)<this.getConvertVersion(PGEdit_MacOs_VERSION)&& PGEdit_Update==1){
this.setDownText();
return this.getDownHtml();
}
}
return this.getpgeHtml();
}
},
//返回提示下载的标签代码
getDownHtml : function() {
if (this.osBrowser==1 || this.osBrowser==3) {
return '<div id="'+this.settings.pgeId+'_down" class="'+this.settings.pgeInstallClass+'" style="text-align:center;line-height:28px;"><a href="'+this.settings.pgePath+this.pgeditIEExe+'">'+this.pgeDownText+'</a></div>';
} else if (this.osBrowser==2 || this.osBrowser==6 || this.osBrowser==8 || this.osBrowser == 10 || this.osBrowser == 11) {
return '<div id="'+this.settings.pgeId+'_down" class="'+this.settings.pgeInstallClass+'" style="text-align:center;line-height:25px;"><a href="'+this.settings.pgePath+this.pgeditFFExe+'">'+this.pgeDownText+'</a></div>';
} else {
return '<div id="'+this.settings.pgeId+'_down" class="'+this.settings.pgeInstallClass+'" style="text-align:center;">暂不支持此浏览器</div>';
}
},
//清空密码
pwdClear : function() {
if (isInstalled) {
try{
if(this.osBrowser == 10 || this.osBrowser == 11){
var id = this.settings.pgeWindowID,inputID = this.settings.pgeId;
$("#"+inputID).val("");
CLPJSON.id = id,datac = this.getEnStr(this.settings.pgeRZRandNum,CLPJSON);
RZCIJSON = {"rankey":this.settings.pgeRZRandNum,"datab":this.settings.pgeRZDataB,"datac":datac};
this.pwdGetData(RZCIJSON);
}else{
var control = this.pwdGetEById(this.settings.pgeId);
control.ClearSeCtrl();
}
}catch(err){}
}
},
//检测控件是否已安装
checkInstall : function(s,callf) {
try {
if (this.osBrowser == 1 || this.osBrowser == 3) {
var comActiveX = new ActiveXObject("UmsPassGuardX.PassGuard.1");
return true;
} else if (this.osBrowser==2 || this.osBrowser==6 || this.osBrowser==8) {
var arr = new Array(),pge_version;
var pge_info=navigator.plugins['UmsPassGuardX'].description;
if(pge_info.indexOf(":")>0){
arr = pge_info.split(":");
pge_version = arr[1];
if (pge_version != "") return true;
}else{
pge_version = "";
return false;
}
} else if ((this.osBrowser == 10 || this.osBrowser == 11) && s == 1){
var obj = this,id = this.settings.pgeWindowID;
if(!this.settings.pgeRZRandNum) return -1;
CIJSON.id = this.settings.pgeWindowID,datac = this.getEnStr(this.settings.pgeRZRandNum,CIJSON);
RZCIJSON = {"rankey":this.settings.pgeRZRandNum,"datab":this.settings.pgeRZDataB,"datac":datac};
urls = this.settings.pgeUrls+":"+this.settings.pgePort;
if(logFlag) console.log(urls);
jQuery.ajax( {timeout:3000,url : urls,dataType : "jsonp",
data : {"str" : JSON.stringify(RZCIJSON),"type" : "check"},
contentType : "application/json;utf-8",jsonp : "jsoncallback",
success : function(x) {
objVersion = x.data;
if(!!callf) callf(obj);
},
error : function(jqXHR, textStatus, errorThrown) {
$("#logg").html($("#logg").html() + "<br/>" + textStatus )
if(obj.settings.pgePort < 5570){
obj.settings.pgePort++;
obj.checkInstall(1, callf);
}else{isInstalled = false;return;}
}
});
}
}catch(err){return false;}
},
//发同步ajax请求
pwdGetData : function(datas){
var d = 0;
jQuery.ajax( {
timeout : 1000,
url : urls,
type : 'GET',
async:false,
data : {
jsoncallback:"jsoncallback",
"str" : JSON.stringify(datas)
},
success : function(x) {
x=x.substring(13,x.length-1);
x=JSON.parse(x);
d=x.data;
},
error : function(x){d = -1;}
});
return d;
},
//将控件版本号转换成整形值,用于比较
getConvertVersion:function(version) {
try {
if(version==undefined || version==""){
return 0;
}else{
var flag = false,m = "";
if(this.osBrowser == 1 || this.osBrowser == 3){
if(version.indexOf(",")> -1) flag = true;
}
if(flag) m = version.split(",");
else m=version.split(".");
var v=parseInt(m[0]*1000)+parseInt(m[1]*100)+parseInt(m[2]*10)+parseInt(m[3]);
return v;
}
}catch(err){return 0;}
},
//获得当前时间毫秒,主要用于防止缓存
pwdGetTime : function() {
return new Date().getTime();
},
//通过id获取页面元素
pwdGetEById : function(id) {
return document.getElementById(id);
},
//加密通信数据
getEnStr : function (sKey,jsonStr) {
var neiKey = [ 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x1A, 0x2A, 0x2B,
0x2C, 0x2D, 0x2E, 0x2F, 0x3A, 0x3B, 0x11, 0x22, 0x33, 0x44, 0x55,
0x66, 0x77, 0x1A, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x3A, 0x3B ];
var fkey = "";
var lx = "";
for ( var i = 0; i < sKey.length; i++) {
lx = String.fromCharCode(sKey[i].charCodeAt(0) ^ neiKey[i]);
fkey += lx;
}
var hexKey = CryptoJS.enc.Utf8.parse(fkey);
var enStr = CryptoJS.AES.encrypt(JSON.stringify(jsonStr), hexKey, {
mode : CryptoJS.mode.ECB,
padding : CryptoJS.pad.Pkcs7
});
return enStr.toString();
},
//设置提示文字
setDownText:function(){
if(this.pgeVersion!=undefined && this.pgeVersion!=""){
this.pgeDownText="请点此升级控件";
}
},
//初始化密码框属性
pgInitialize:function(){
if(isInstalled){
if(this.osBrowser==1 || this.osBrowser==3){
jQuery('#'+this.settings.pgeId).show();
}
}else{
jQuery('#'+this.settings.pgeId+'_pge').hide();
if(this.osBrowser==1 || this.osBrowser==3){
jQuery('#'+this.settings.pgeId+'_down').show();
}
}
},
/**Win10Edge控件相关接口**/
//当按enter键时,提交表单
setSX : function(e,m,o){
var keynum,va = this.pwdGetEById(o.id),len = va.value.length,maxlen=this.settings.pgeMaxlength+1;
if(window.event){//IE
keynum = e.keyCode
}else if(e.which) {//FF
keynum = e.which
}
if(keynum == 13){
o.blur();
eval("("+m+")");
}
},
//控制不能从密码框中间编辑
setCX : function(ctrl) {
var caretPos = 0,len = ctrl.value.length;
if (document.selection) {//IE
var sel = document.selection.createRange();
sel.moveStart('character', -ctrl.value.length);
caretPos = sel.text.length;
}else if (ctrl.selectionStart || ctrl.selectionStart == '0'){//FF
caretPos = ctrl.selectionStart;
}
if (caretPos <= len) {
if (ctrl.setSelectionRange) {//设置光标位置函数 FF
setTimeout(function(){
ctrl.setSelectionRange(len, len);
},1);
} else if (ctrl.createTextRange) {//IE
var range = ctrl.createTextRange();
range.collapse(true);
range.moveEnd('character', len);
range.moveStart('character', len);
range.select();
}
}
},
//实例化密码控件窗口
instControl : function(id,obj) {
ICJSON.id = id,datac = this.getEnStr(this.settings.pgeRZRandNum,ICJSON);
RZCIJSON = {"rankey":this.settings.pgeRZRandNum,"datab":this.settings.pgeRZDataB,"datac":datac};
jQuery.ajax( {url : urls,dataType : "jsonp",
data : {"str" : JSON.stringify(RZCIJSON),"type" : "inst"},
contentType : "application/json;utf-8",jsonp : "jsoncallback",
success : function(x) {
if(logFlag) console.log("id:"+id);
if(logFlag) console.log("x.data:"+x.data+",x.code:"+x.code);
if (x.code == 0) {
if(logFlag) console.info("实例化成功");
obj.initControl(id);
}
}
});
//初始化是否能输入
inFlag[id] = {"flag":false};
},
//初始化密码控件窗口参数
initControl : function(id) {
INCJSON.id = id,INCJSON.data.edittype = this.settings.pgeEdittype,INCJSON.data.maxlength = this.settings.pgeMaxlength;
INCJSON.data.reg1 = this.settings.pgeEreg1,INCJSON.data.reg2 = this.settings.pgeEreg2;
INCJSON.data.cryptorkey=this.settings.pgeCert;
INCJSON.data.sm2xyhexkey=this.settings.pgeCertSM;
if(this.osBrowser == 10) INCJSON.data.lic = {"liccode":license,"url":"aHR0cDovLzE5Mi4xNjguMS4xMTg6ODA4Ny9EZW1vWF9BTExfQUVTL2xvZ2luLmpzcA=="};
if(this.osBrowser == 11) INCJSON.data.lic = {"liccode":licenseMac,"url":"aHR0cDovLzE5Mi4xNjguMS4xMTg6ODA4Ny9EZW1vWF9BTExfQUVTL2xvZ2luLmpzcA=="};
datac = this.getEnStr(this.settings.pgeRZRandNum,INCJSON);
RZCIJSON = {"rankey":this.settings.pgeRZRandNum,"datab":this.settings.pgeRZDataB,"datac":datac};
jQuery.ajax( {url : urls,dataType : "jsonp",
data : {"str" : JSON.stringify(RZCIJSON),"type" : "init"},
contentType : "application/json;utf-8",jsonp : "jsoncallback",
success : function(x) {
if(logFlag) console.log("id:"+id);
if(logFlag) console.log("x.data:"+x.data+",x.code:"+x.code);
if (x.code == 0) {
if(logFlag) console.info("设置参数成功");
inFlag[id] = {"flag":false};
} else {
if(logFlag) console.info("data:" + x.data);
}
},
error : function(a , b , c){
var x = 1;
}
});
//初始化对应id心跳值
onceInterv[id]="";
},
//开启密码控件保护
openProt : function(id,inputID) {
//控制不让输入,待开启保护后才让输入
inFlag[id].flag = false,OPJSON.id = id,datac = this.getEnStr(this.settings.pgeRZRandNum,OPJSON);
RZCIJSON = {"rankey":this.settings.pgeRZRandNum,"datab":this.settings.pgeRZDataB,"datac":datac};
jQuery.ajax( {url : urls,dataType : "jsonp",
data : {"str" : JSON.stringify(RZCIJSON),"type" : "open"},
contentType : "application/json;utf-8",jsonp : "jsoncallback",
success : function(x) {
if(logFlag) console.log("成功开启密码控件保护");
if(logFlag) console.log("x.data:"+x.data+",x.code:"+x.code);
inFlag[id].flag = true;//控制让输入
}
});
if(typeof onceInterv[id] == "string"){//监听焦点切出
for(var i = 0;i < iterArray.length;i++){
window.clearInterval(iterArray[i]);
}
onceInterv[id] = window.setInterval("pgeCtrl.intervlOut(\""+id+"\",\""+inputID+"\")",800);
iterArray.push(onceInterv[id]);
}
},
//心跳监测
intervlOut : function(id,inputID) {
XTJSON.id = id,datac = this.getEnStr(this.settings.pgeRZRandNum,XTJSON);
RZCIJSON = {"rankey":this.settings.pgeRZRandNum,"datab":this.settings.pgeRZDataB,"datac":datac};
jQuery.ajax( {url : urls,dataType : "jsonp",
data : {"str" : JSON.stringify(RZCIJSON),"type" : "hert"},
contentType : "application/json;utf-8",jsonp : "jsoncallback",
success : function(x) {
if(logFlag) console.log("x.data(长度):"+x.data+",x.code:"+x.code);
code = parseInt(x.data);
var va = pgeCtrl.pwdGetEById(inputID), len = va.value.length,y = "",i = 0;
if(logFlag) console.log(id+"的长度:"+len);
if(logFlag){
if(logFlag) console.log(id+"的长度:"+len);
if(logFlag) console.log("x.data(长度):"+ code);
}
for( ; i < code; i++) y += "*";
va.value = y;
}
});
},
//关闭密码控件保护
closeProt : function(id,inputID) {
CPJSON.id = id,datac = this.getEnStr(this.settings.pgeRZRandNum,CPJSON);
RZCIJSON = {"rankey":this.settings.pgeRZRandNum,"datab":this.settings.pgeRZDataB,"datac":datac};
jQuery.ajax( {url : urls,dataType : "jsonp",
data : {"str" : JSON.stringify(RZCIJSON),"type" : "close"},
contentType : "application/json;utf-8",jsonp : "jsoncallback",
success : function(x) {
if(logFlag) console.log("关闭密码控件保护成功");
if(logFlag) console.log("x.data:"+x.data+",x.code:"+x.code);
inFlag[id].flag = false;
}
});
if(typeof onceInterv[id] == "number"){
for(var i = 0;i < iterArray.length;i++){
window.clearInterval(iterArray[i]);
}
onceInterv[id] = "";
}
}
}
});
})(jQuery);
var pgeCtrl = new $.pge();//公共对象,跟本地服务交互时会用到