/**
* ----------------------------------------------------------common start--------------------------------------------------------------
*/
//采集指纹次数
var FINGERPRINT_NUMBER = 3;
//胁迫指纹数--胁迫指纹时,在普通指纹上加的数
var DURESS_FINGER_NUM = 16;
//胁迫指纹标记
var duressFingerFlag = null;
//是否显示胁迫指纹(用户登记指纹时,不需要胁迫指纹),默认显示胁迫指纹
var duressFingerShowFlag = true;
//手指标记数组
var fingerIdArray = new Array();//[]
//指纹模板数据数组
var templateDataArray = new Array();//[]
//静脉标记数组
var fvIdArray = new Array();
//指静脉模板数据数组
var templateFVDataArray = new Array();
//定时器--关闭setTimeOut时用到
var timer = null;
//定时器--验证
var verifyTimer = null;
//判断当前手指是否正在采集中
var collectFlag = false;
//当前点击的手指标记
var fpIdNum = null;
//访问ISSOnline_server的ip
var serverIp = null;
//访问的ISSOnline_server端口
var serverPort = null;
var httpsServerPort = null;
//ISSOnline_server的url的公共部分:http://localhost:24008/ISSOnline
var issOnlineUrl = null;
//是否是访客
var isVisPager = false;
/**
* 表单提交
* @author wenxin
* @create 2013-08-05 15:19:11 pm
*/
function formSubmit(id)
{
$('#'+id).serialize();
$('#'+id).ajaxForm(function(data){
callBackFormSubmit(data);
});
$('#'+id).submit(); //表单提交。
}
/**
* 加载xml中ISSOnline_server的ip和port
* @author wenxin
* @create 2013-06-15 15:01:31 pm
* @param url 加载xml的url
*/
function loadXml(url)
{
$.ajax( {
type : "GET",
url : url,
dataType : "xml",
async: false,
success : function(xml)
{
$(xml).find('service').each(function(){
var service = $(this);
serverIp = service.find('ISSOnline_serverIp').text();
serverPort = service.find('ISSOnline_serverPort').text();
httpsServerPort = service.find('ISSOnline_https_serverPort').text() || "24308";
});
},
error : function(XMLHttpRequest, textStatus, errorThrown)
{
//如果取配置文件出错,则设置默认
serverIp = "127.0.0.1";
serverPort = "24008";
httpsServerPort = "24308";
}
});
//给issOnlineUrl赋值
issOnlineUrl = window.location.protocol + "//"+serverIp+":"+getServerPort()+"/ISSOnline";
}
/**
* 获取服务端口
*/
function getServerPort()
{
if(window.location.protocol.indexOf("https:") == 0)
{
return httpsServerPort;
}
return serverPort;
}
/**
*
* TODO 是否https协议
*
* @author chenPF
* @since 2016年4月22日 下午5:23:15
* @returns {Boolean}
*/
function isHttpsProtocol()
{
return window.location.protocol.indexOf("https:") == 0;
}
/**
* 获取编辑时,查询的数据库的指纹标记和指纹模板
* @author wenxin
* @create 2013-04-22 10:18:31 am
* @param fingerIdList 数据库查询的指纹标记
* @param templateList 数据库查询的指纹模板
*/
function loadFPDataTemplate(fingerIdList, templateList)
{
if(fingerIdList == "[]")
{
$("#fingerId").val(" ");
}
else
{
$("#fingerId").val(fingerIdList);
}
if(templateList == "[]")
{
$("#fingerTemplate10").val(" ");
}
else
{
$("#fingerTemplate10").val(templateList);
}
showFPCount("");
}
function loadFVDataTemplate(fvIdList, templateFVList)
{
var regAll = new RegExp("\"","g");
if(fvIdList == "[]")
{
$("#fvId").val(" ");
}
else
{
fvIdList = fvIdList.replace(regAll,"").replace("\[","").replace("\]","");
$("#fvId").val(fvIdList);
}
if(templateFVList == "[]")
{
$("#fvTemplate10").val(" ");
}
else
{
templateFVList = templateFVList.replace(regAll,"").replace("\[","").replace("\]","");
$("#fvTemplate10").val(templateFVList);
}
showFVCount("");
}
/**
* 清空比对服务数据
* @author wenxin
* @create 2013-10-25 20:18:31 pm
*/
function clearFPServerData()
{
$.ajax( {
type : "post",
url : "baseBioVerifyAction!clearFPTemplate.action",
dataType : "json",
async: false,
//timeout:1000,
success : function(result)
{
//接口调用成功返回时
if(result.ret == "ok")
{
openMessage(msgType.success, "Emptied the data Successfully.");
}
else
{
openMessage(msgType.warning, "Failed to empty the data.");
}
},
error : function(XMLHttpRequest, textStatus, errorThrown)
{
messageBox({messageType: "alert", title: "Prompt", text: "Please install the fingerprint driver or start the service!"});
}
});
}
/**
* 获取比对服务器数据--暂未用到,定制后台指纹比对中用到
* @author wenxin
* @create 2014-03-21 09:23:31 am
*/
function getFPServerInfo()
{
$.ajax( {
type : "post",
url : "baseBioVerifyAction!getFPServerInfo.action",
dataType : "json",
async: false,
//timeout:1000,
success : function(result)
{
if("" != result.msg)
{
var templateMsg = jQuery.parseJSON(result.msg);
$("#templateCount").val(templateMsg.db_template_count);
$("#templateLimitCount").val(templateMsg.db_template_limit);
}
else
{
//alert("Did not start the finger service");
//$("#templateCount").val();
//$("#templateLimitCount").val();
}
},
error : function(XMLHttpRequest, textStatus, errorThrown)
{
//alert("Please install the fingerprint driver or start the service!");
}
});
}
/**
* 判断是否安装指纹驱动
* @author wenxin
* @create 2013-04-22 20:18:31 pm
* @param browserFlag 浏览器标记 simple:简易版本,表示是ie浏览器;html5:表示支持html5的浏览器
* @param paramArray 存放国际化元素的数组
* @param isFPLogin 是否是指纹登录 true:是;false:否
*/
function checkDriver(paramArray, browserFlag, isFPLogin)
{
var hrefStr = "";
if(browserFlag == "html5")
{
// 发送一个请求,检查是否安装驱动
getWebServerInfo(paramArray, isFPLogin, "0");
}
else if(browserFlag == "simple")
{
//发送一个请求,检查是否安装驱动
getWebServerInfoForSimple(paramArray, isFPLogin, "0");
}
else if(browserFlag == "upgradeBrowser")
{
if($("#userLoginForm [name='fingerLogin']").val() != undefined)
{
$("#userLoginForm [name='fingerLogin']").attr("onclick", "");
$("#userLoginForm [name='fingerLogin']").attr("title", "Browser does not support this feature, please upgrade the browser!");
}
if($("#fpRegister").val() != undefined)
{
$("#fpRegister").attr("onclick", "");
$("#fpRegister").attr("title", "Browser does not support this feature, please upgrade the browser!");
}
}
}
/**
* 检查指纹采集器
* @author wenxin
* @create 2013-06-17 20:18:31 pm
* @param context 2d画布上下文
* @param paramArray 存放国际化元素的数组
* @param browserFlag 浏览器标记 simple:简易版本,表示是ie浏览器;html5:表示支持html5的浏览器
*/
function checkFPReader(context, paramArray, browserFlag)
{
if(browserFlag == "html5")
{
$.ajax( {
type : "GET",
url : issOnlineUrl+"/beginCapture?type=1&random="+getRandomNum(),
dataType : "json",
async: false,
//timeout:1000,
success : function(result)
{
//返回码
var ret = null;
ret = result.ret;
//接口调用成功返回时
if(ret == 0)
{
//显示框--采集提示
collectTips(context, paramArray[0], "html5");
}
else if(ret == -2001||(ret == -2&&fpvType == 2))//指静脉的-2可能是指静脉动态链接库初始化失败或未检测到指静脉采集器。
{
//显示框--采集提示
collectTips(context, paramArray[1], "html5", "warning");
}
else if(ret == -2002)
{
getWebServerInfo(null, null, "1");
}
else if(ret == -2005)
{
//显示框--采集提示
collectTips(context, paramArray[3], "html5");
}
collectFlag = true;
//取消采集
cancelRegister();
},
error : function(XMLHttpRequest, textStatus, errorThrown)
{
collectTips(context, "Please install the finger vein driver or start the service.", "html5", "warning");
}
});
}
else if(browserFlag == "simple")
{
//创建XDomainRequest实例,用于ie8和ie9跨域访问
var xDomainRequest = new XDomainRequest();
//如果xDomainRequest存在,则可以使用xDomainRequest函数,否则,说明不是ie浏览器
if (xDomainRequest)
{
xDomainRequest.open('GET', issOnlineUrl+"/beginCapture?type=1&random="+getRandomNum());
xDomainRequest.onload = function()
{
//获取接口返回值
var resultData = xDomainRequest.responseText;
//转化为json对象
var obj = jQuery.parseJSON(resultData);
//返回码
var ret = null;
if(obj != null && obj.ret != undefined)
{
ret = obj.ret;
}
//接口调用成功返回时
if(ret == 0)
{
//显示框--采集提示
collectTips(null, paramArray[0], "simple");
}
else if(ret == -2001)
{
//显示框--采集提示
collectTips(null, paramArray[1], "simple", "warning");
}
else if(ret == -2002)
{
getWebServerInfoForSimple(null, null, "1");
}
collectFlag = true;
//取消采集
cancelRegister();
};
xDomainRequest.onerror = function()
{
//用完后,将对象置为空
xDomainRequest = null;
};
xDomainRequest.send();
}
}
}
/**
* 显示登记--点击采集指纹
* @author wenxin
* @create 2013-06-14 10:09:20 am
* @param paramArray 存放国际化元素的数组
*/
function showRegister(paramArray)
{
var hrefStr = "";
var param = '"'+paramArray[0]+'", "'+paramArray[1]+'", "'+paramArray[2]+'", '+null+'';
$("#fpRegister").remove();
$("#downloadDriver").remove();
$(".countMessage").attr("driverDownload","");
//webservice接口调用成功,说明驱动已经安装
hrefStr = ""+paramArray[3]+"";
$("#fpRegisterDiv").append(hrefStr);
$("#fpCountMessage").attr("fpRegister",hrefStr);
}
function showFVRegister(paramArray)
{
var hrefStr = "";
var param = '"'+paramArray[8]+'", "'+paramArray[9]+'", "'+paramArray[2]+'", '+null+'';
$("#fvRegister").remove();
$("#fvDownloadDriver").remove();
hrefStr = ""+paramArray[3]+"";
$("#fvRegisterDiv").append(hrefStr);
$("#fvCountMessage").attr("fpRegister",hrefStr);
}
/**
* 显示指纹登录--点击进行指纹验证
* @author wenxin
* @create 2013-06-14 10:09:20 am
* @param paramArray 存放国际化元素的数组
*/
function showFPVerify(paramArray)
{
$("#userLoginForm .but_fing_disabled").hide();
$("#userLoginForm .but_fing").show();
/*$("#fingerLogin").attr("class", "input_button button_over2");
$("#fingerLogin").attr("onmouseover", "this.className='button_over1 ';");
$("#fingerLogin").attr("onmouseout", "this.className='input_button button_over2';");
$("#fingerLogin").attr("onclick", "fpVerification('"+paramArray[1]+"', '"+paramArray[0]+"', true)");
$("#fingerLogin").attr("title", "Fingerprint");*/
}
/**
* 鼠标over事件
* @author wenxin
* @create 2013-06-18 10:09:20 am
*/
function mouseOverEvent()
{
$("#fpRegister").mouseover(function(e){
if(e.pageY > 270)
{
e.pageY = e.pageY - 55;
e.pageX = e.pageX - 10;
}
this.myTitle = this.title;
this.title = "";
var tooltip = "
"+ this.myTitle +"<\/div>"; //创建 div 元素
$("#fpCountMessage").append(tooltip); //把它追加到文档中
$("#tooltip").css({
"top": (e.pageY - 80) + "px",
"left": (e.pageX - 240) + "px",
"z-index": "2px",
"position": "absolute",
"display": "inline",
"border": "1px solid #000",
"background": "#f7f5d1"
}).show("fast"); //设置x坐标和y坐标,并且显示
}).mouseout(function(){
this.title = this.myTitle;
$("#tooltip").remove(); //移除
});
}
/**
* 指纹验证
* @author wenxin
* @create 2013-06-21 11:09:20 am
* @param title 页面标题国际化内容
* @param isDriverInstall 是否安装了驱动
* @param downloadPrompt 提示安装驱动国际化内容
*/
function fpVerification(title, downloadPrompt, isDriverInstall)
{
//安装驱动
if(isDriverInstall)
{
//支持html5
if(typeof(Worker) != "undefined")
{
createWindow('base_baseFPVerify.do?random=' + getRandomNum() + '^0^0^465^320^'+title);
//关闭页面前,取消采集
cancelCaptureBeforeClose("html5");
}
else
{
createWindow('base_baseFPVerifySimple.do?random=' + getRandomNum() + '^0^0^465^320^' + title);
//关闭页面前,取消采集
cancelCaptureBeforeClose("simple");
}
}
else
{
messageBox({messageType: "alert", title: "Prompt", text: downloadPrompt});
}
}
/**
* 指纹验证(针对停车场在线监控的弹窗)
* @author gaoqi.lian
* @create 2016-09-12 11:09:20 am
* @param title 页面标题国际化内容
* @param isDriverInstall 是否安装了驱动
* @param downloadPrompt 提示安装驱动国际化内容
*/
function vidFpVerification(title, downloadPrompt, isDriverInstall)
{
//安装驱动
if(isDriverInstall)
{
//支持html5
if(typeof(Worker) != "undefined")
{
createWindow('base_baseFPVerify.do?random=' + getRandomNum() + '^0^0^465^320^'+title);
if(isIE || navigator.userAgent.indexOf("Chrome") > 0)
{
var _tip=$(".dhxwin_active");
$(".dhxwin_active .dhxwin_hdr").css({"z-index":"105","position":"absolute","width":"100%"})
_tip.prepend('
')
}
//关闭页面前,取消采集
cancelCaptureBeforeClose("html5");
}
else
{
createWindow('base_baseFPVerifySimple.do?random=' + getRandomNum() + '^0^0^465^320^' + title);
if(isIE || navigator.userAgent.indexOf("Chrome") > 0)
{
var _tip=$(".dhxwin_active");
$(".dhxwin_active .dhxwin_hdr").css({"z-index":"105","position":"absolute","width":"100%"})
_tip.prepend('
')
}
//关闭页面前,取消采集
cancelCaptureBeforeClose("simple");
}
}
else
{
messageBox({messageType: "alert", title: "Prompt", text: downloadPrompt});
}
}
/**
* 关闭页面前,如果正在进行验证,则先取消采集
* @author wenxin
* @create 2013-06-24 19:57:11 pm
* @param browserFlag 浏览器标记 simple:简易版本,表示是ie浏览器;html5:表示支持html5的浏览器
*/
function cancelCaptureBeforeClose(browserFlag)
{
//关闭页面时,监听关闭的onclick事件
getCurrentWindow().button("close").attachEvent("onClick", function()
{
clearTimeout(verifyTimer);
if(browserFlag == "html5")
{
//正在进行验证,还没有关闭指纹采集
if(verifyFlag)
{
//取消采集
cancelCapture();
}
//关闭页面
closeWindow();
}
else if(browserFlag == "simple")
{
//alert("cancel capture before close window!");
//将定时器的递归调用关闭
clearTimeout(timer);
//取消采集
cancelRegister();
//此处应该在取消结束后,再关闭窗口
closeWindow();
}
});
}
/**
* 延时进行登录
* @author wenxin
* @create 2013-07-26 16:57:11 pm
*/
function _callBackFunction(url)
{
return function()
{
window.location.href = url;
};
}
/**
* 在页面初始化时,计算指纹数量
* @author wenxin
* @create 2013-04-25 11:31:20 am
*
*/
function showFPCountInit(fingerIdCount, text)
{
$("#fpCountMessage").empty();
$("#fpCountMessage").append("

" +" "+ fingerIdCount);
}
function showFVCountInit(fvIdCount, text)
{
$("#fvCountMessage").empty();
$("#fvCountMessage").append("

" +" "+ fvIdCount);
}
/**
* 点击登记,触发事件
* @author wenxin
* @create 2013-05-21 11:31:20 am
* @param title 页面标题国际化内容
* @param fpCount 指纹数国际化内容
* @param saveText 提示:是否保存国际化内容
* @param downloadText 驱动安装国际化内容
* @param isDriverInstall 是否安装了驱动
*/
var fpvType=1;//登录使用指纹验证时不跑submitRegister方法无法识别fpvType的值,所以必须给fpvType赋初值。
function submitRegister(title, fpCount, saveText, downloadText, isDriverInstall)
{
fpvType=1;//指纹为1,指静脉为2。
issOnlineUrl = window.location.protocol + "//"+serverIp+":"+getServerPort()+"/ISSOnline";
//支持html5
if (typeof(Worker) !== "undefined" && isDriverInstall)
{
createWindow('base_baseFPRegister.action?random=' + getRandomNum() + '^0^0^465^480^' + title);//public/html/applet.html
//关闭页面时,提示保存数据
storeBeforeClose(fpCount, saveText);
}
else if(typeof(Worker) == "undefined" && isDriverInstall)
{
createWindow('base_baseFPRegisterSimple.action?random=' + getRandomNum() + '^0^0^465^460^' + title);//public/html/applet.html
//关闭页面时,提示保存数据
storeBeforeClose(fpCount, saveText);
}
else if(!isDriverInstall)
{
messageBox({messageType: "alert", title: "Prompt", text: "Please install the fingerprint driver or start the service!"});
if(typeof($("#downloadDriver").val()) == "undefined")
{
var hrefStr = "
"+downloadText+"";
$("#driverDownload").append(hrefStr);
}
}
}
function submitFVRegister(title, fpCount, saveText, downloadText, isDriverInstall)
{
fpvType=2;//指纹为1,指静脉为2。
issOnlineUrl = window.location.protocol + "//"+serverIp+":"+getServerPort()+"/ISSOnline/fingervein";
//支持html5
if (typeof(Worker) !== "undefined" && isDriverInstall)
{
createWindow('base_baseFVRegister.action?random=' + getRandomNum() + '^0^0^465^480^' + title);//public/html/applet.html
//关闭页面时,提示保存数据
storeBeforeClose(fpCount, saveText);
}
else if(typeof(Worker) == "undefined" && isDriverInstall)
{
createWindow('base_baseFVRegisterSimple.action?random=' + getRandomNum() + '^0^0^465^460^' + title);//public/html/applet.html
//关闭页面时,提示保存数据
storeBeforeClose(fpCount, saveText);
}
else if(!isDriverInstall)
{
messageBox({messageType: "alert", title: "Prompt", text: "Please install the fingerprint driver or start the service!"});
if(typeof($("#fvDownloadDriver").val()) == "undefined")
{
var hrefStr = "
"+downloadText+"";
$("#fvDriverDownload").append(hrefStr);
}
}
}
/**
* 关闭页面时,如果有修改操作,则提示用户保存数据
* @author wenxin
* @create 2013-06-08 19:36:20 pm
* @param fpCount 指纹数国际化内容
* @param saveText 提示:是否保存国际化内容
*/
function storeBeforeClose(fpCount, saveText)
{
//关闭页面时,监听关闭的onclick事件
getCurrentWindow().button("close").attachEvent("onClick", function(){
//判断是否修改了数据(包括新增和删除)
if ($("#whetherModify").val() != undefined && (fpModifyFlag != undefined && fpModifyFlag))
{
//获取指纹标记数据
var fingerIdData = fingerIdArray;
//获取指纹模板数据
var fingerTemplateData = templateDataArray;
messageBox({
messageType : "confirm",
text : saveText,
callback : function(result)
{
saveData(result, fpCount);
}
});
}
else
{
//取消采集
cancelRegister();
//将定时器的递归调用关闭
clearTimeout(timer);
closeWindow();
}
});
}
/**
* 将指纹数据保存到页面
* @author wenxin
* @create 2013-05-24 16:12:21 pm
*/
function storeDataToHtml()
{
//没有手指标记数据
if(fingerIdArray.length == 0)
{
$("#fingerId").val(" ");
}
else
{
//将手指标记数据保存到页面
$("#fingerId").val("["+fingerIdArray.toString()+"]");
}
showFPCountInit(fingerIdArray.length,"");
//没有指纹模板数据
if(templateDataArray.length == 0)
{
$("#fingerTemplate10").val(" ");
}
else
{
//将指纹模板数据保存到页面
$("#fingerTemplate10").val("["+templateDataArray.toString()+"]");
}
}
function storeFVDataToHtml()
{
//没有手指标记数据
if(fvIdArray.length == 0)
{
$("#fvId").val(" ");
}
else
{
//将手指标记数据保存到页面
$("#fvId").val(fvIdArray.toString());
}
showFVCountInit(fvIdArray.length,"");
//没有指静脉模板数据
if(templateFVDataArray.length == 0)
{
$("#fvTemplate10").val(" ");
}
else
{
//将指静脉模板数据保存到页面
$("#fvTemplate10").val(templateFVDataArray.toString());
}
//没有手指标记数据
if(fingerIdArray.length == 0)
{
$("#fingerId").val(" ");
}
else
{
//将手指标记数据保存到页面
$("#fingerId").val("["+fingerIdArray.toString()+"]");
}
showFPCountInit(fingerIdArray.length,"");
//没有指纹模板数据
if(templateDataArray.length == 0)
{
$("#fingerTemplate10").val(" ");
}
else
{
//将指纹模板数据保存到页面
$("#fingerTemplate10").val("["+templateDataArray.toString()+"]");
}
}
/**
* 判断指纹数量--页面加载时,没有计算。只是在采集完指纹后计算指纹数量
* @author wenxin
* @create 2013-04-22 21:26:31 pm
*/
function showFPCount(text)
{
var fingerId = $("#fingerId").val();
if($.trim(fingerId) == "")
{
showFPCountInit(0,"");
//$("#fpCountMessage").text(text + " " + 0);
}
else
{
fingerId = fingerId.substr(1, fingerId.length - 2);
var fingerIdArray = new Array();
fingerIdArray = fingerId.split(",");
showFPCountInit(fingerIdArray.length,"");
//$("#fpCountMessage").text(text + " " + fingerIdArray.length);
}
}
function showFVCount(text)
{
var fvId = $("#fvId").val();
if($.trim(fvId) == "")
{
$("#fvCountMessage").children().remove();
showFVCountInit(0,"");
//$("#fvCountMessage").text(text + " " + 0);
}
else
{
fvId = fvId.substr(1, fvId.length - 2);
var fvIdArray = new Array();
fvIdArray = fvId.split(",");
$("#fvCountMessage").children().remove();
showFVCountInit(fvIdArray.length/3,"");
showFPCount('');
//$("#fvCountMessage").text(text + " " + fvIdArray.length/3);
}
}
/**
* 获取页面的指纹数据
* @author wenxin
* @create 2013-05-13 10:18:31 am
* @param
*/
function getDataFromPage()
{
var fingerId = $("#fingerId").val();
var fingerTemplate = $("#fingerTemplate10").val();
//如果有数据
if($.trim(fingerId) != "")
{
fingerId = fingerId.substr(1, fingerId.length-2);
fingerTemplate = fingerTemplate.substr(1, fingerTemplate.length-2);
fingerIdArray = fingerId.split(",");
templateDataArray = fingerTemplate.split(",");
}else{
fingerIdArray=new Array();
templateDataArray=new Array();
}
}
function getFVDataFromPage()
{
var fvId = $("#fvId").val();
var fvTemplate = $("#fvTemplate10").val();
//如果有数据
if($.trim(fvId) != "")
{
//fvId = fvId.substr(0, fvId.length);
//fvTemplate = fvTemplate.substr(0, fvTemplate.length);
fvIdArray = fvId.split(",");
templateFVDataArray = fvTemplate.split(",");
}else{
fvIdArray=new Array();
templateFVDataArray=new Array();
}
getDataFromPage();
}
/**
* 点击已经采集指纹的手指时,弹出框删除数据
* 删除时的回调函数
* @author wenxin
* @create 2013-05-14 17:12:21 pm
* @param result 弹出框选择确定还是取消
* @param context 2d画布上下文
* @param browserFlag 浏览器标记 simple:简易版本,表示是ie浏览器;html5:表示支持html5的浏览器
*/
var delFPData = function(result, context, browserFlag)
{
var fingerId;
if(result)
{
//将数组中的指定元素删除
for(var i=0; i
= DURESS_FINGER_NUM)
{
fingerId = fingerId - DURESS_FINGER_NUM;
if(fingerId == fpIdNum)
{
//fingerIdArray.remove(i);
//templateDataArray.remove(i);
removeItem(fingerIdArray, i);
removeItem(templateDataArray, i);
}
}
else
{
if(fingerId == fpIdNum)
{
//fingerIdArray.remove(i);
//templateDataArray.remove(i);
removeItem(fingerIdArray, i);
removeItem(templateDataArray, i);
}
}
}
if(browserFlag == "simple")
{
document.getElementById("finger" + fingerId).checked = false;
}
else if(browserFlag == "html5")
{
//将手指颜色改变--重画时也要判断
context.fillStyle = bgColor;
context.fill();
if(lastFPIdNum != null && lastFPIdNum != lastFPIdNum)
{
//消除原来手指的颜色
renderAfterColl(globalContext, lastFPIdNum, bgColor, false);
}
//消除需要删除的手指颜色
renderAfterColl(globalContext, fpIdNum, bgColor, false);
}
fpModifyFlag = true;
$("#duressFinger").attr("disabled", false);
$("#submitButtonId").attr("disabled", false);
}
else
{
if(browserFlag == "simple")
{
document.getElementById("finger" + fpIdNum).checked = true
collectFlag = true;
}
else if(browserFlag == "html5")
{
//消除原来手指的颜色--有问题,如果原来手指和现在的一样,有问题
//renderAfterColl(globalContext, lastFPIdNum, bgColor, false);
}
}
}
function delFV()
{
//将数组中的指定元素删除
for(var i=0; i= DURESS_FINGER_NUM)
{
fingerId = fingerId -DURESS_FINGER_NUM;
if(browserFlag == "html5")
{
if(fingerId == num)
{
context.fillStyle = "red";
context.fill();
}
}
}
else
{
if(browserFlag == "html5"){
if(fingerId == num)
{
context.fillStyle = "rgb(122,193,66)";
context.fill();
}
}
}
if(browserFlag == "simple")
{
document.getElementById("finger" + fingerId).checked = true;
}
}
}
function renderFVInit(context, num, browserFlag)
{
var fvId,tempFvId;
for(var i=0; i= DURESS_FINGER_NUM)
{
fingerId = fingerId -DURESS_FINGER_NUM;
}
if(fingerId == num)
{
isCollected = true;
}
}
return isCollected;
}
function isFVContains(fvIdArray, num)
{
var fvId,tempFvId;
var isCollected = false;
for(var j=0; j this.length)
{
return false;
}
//<
for (var i = 0, n = 0; i < this.length; i++)
{
if(this[i] != this[dx])
{
this[n++] = this[i]
}
}
this.length -= 1
}*/
/**
* 获取浏览器类型
* @author wenxin
* @create 2013-08-09 17:24:31 pm
*/
function getBrowserType()
{
var browserFlag = "";
//是否支持html5的cors跨域
if (typeof(Worker) !== "undefined")
{
browserFlag = "html5";
}
//此处判断ie8、ie9
else if(navigator.userAgent.indexOf("MSIE 8.0")>0 || navigator.userAgent.indexOf("MSIE 9.0")>0)
{
browserFlag = "simple";
}
else
{
browserFlag = "upgradeBrowser";//当前浏览器不支持该功能,请升级浏览器
}
return browserFlag;
}
/**
* 获取webserver信息的回调函数
* @author wenxin
* @create 2013-08-09 17:24:31 pm
*/
function getWebServerInfoCallBack(result, paramArray, isFPLogin)
{
//返回码
var ret = null;
ret = result.ret;
//接口调用成功返回时
if(ret == 0)
{
if(isFPLogin)
{
//显示指纹登录
showFPVerify(paramArray);
}
else
{
//显示登记--可以点击采集指纹
showRegister(paramArray);
//显示指静脉登记--可以点击采集指静脉
showFVRegister(paramArray);
//计算指纹数量Fingerprint Quantity:指纹数
showFPCountInit(paramArray[5], paramArray[6]);
//计算指静脉数
showFVCountInit(paramArray[11], paramArray[9]);
//鼠标over事件
//mouseOverEvent();
// 对比指纹驱动
if (result.data&&result.data.server_version){
compareFPDriver(result.data.server_version);
}
}
}
}
/**
* 对比指纹驱动版本
* @author gordon.zhang
* @param oldVersion 旧驱动版本
* @create 2015-01-28 17:24:31 pm
*/
function compareFPDriver(oldVersion)
{
var newVersion = "2.0.50";
if (oldVersion==newVersion){
return;
}else{
var newVerArr = newVersion.split(".");
var oldVerArr = oldVersion.split(".");
var length = newVerArr.length>oldVerArr.length?oldVerArr.length:newVerArr.length;
for (var i=0;iparseInt(oldVerArr[i])){
showNewDriver();
showFVNewDriver();
return;
}
}
}
}
/**
* 显示发现新驱动
* @author gordon.zhang
* @create 2015-01-28 17:24:31 pm
*/
function showNewDriver(){
var hrefStr = "Download New Driver";
$("#driverDownload").append(hrefStr);
$("#driverDownload").removeAttr("style");
$(".countMessage").attr("driverDownload",hrefStr);
}
function showFVNewDriver(){
var hrefStr = "Download New Driver";
$("#fvDriverDownload").append(hrefStr);
$("#fvDriverDownload").removeAttr("style");
}
/**
* 获取webserver的信息
* @author wenxin
* @param
* @param paramArray 存放国际化元素的数组
* @param isFPLogin 是否是指纹登录 true:是;false:否
* @param type 0 表示发送完请求后,还有别的操作。1 表示发送完请求后,没有其余的操作了
* @create 2013-08-09 17:24:31 pm
*/
function getWebServerInfo(paramArray, isFPLogin, type)
{
//修改访客登记使用网络摄像头抓拍,出现“插件加载失败”的提示
setTimeout(function(){
$.ajax( {
type : "GET",
url : issOnlineUrl+"/info",
dataType : "json",
async: false,
// timeout:1000,
success : function(result)
{
//检查驱动
if(type == "0")
{
getWebServerInfoCallBack(result, paramArray, isFPLogin);
}
//检查动态库连接
else if(type == "1")
{
getDLLConnectCallBack(result);
}
},
error : function(XMLHttpRequest, textStatus, errorThrown)
{
showDriverInfoMessage();
}
});
},5);
}
function showDriverInfoMessage()
{
if(isHttpsProtocol() && $('body').children('#driverInfoMessage').length == 0)
{
var html = ""+
"

" +
"
Driver detection exception, click here to process. ";
$('body').prepend(html);
$('body').children(".dhxcelltop_hdr").css("margin-top","20px");
var cont = $('body').children(".dhxlayout_cont");
cont.css({"top":parseInt(cont.css("top"))+20,"height":cont.height()-20});
cont.children().css("height",cont.height());
$(".dhx_cell_cont_layout.dhx_cell_cont_no_borders").css("height",cont.height());
$(".dhx_cell_cont_layout.dhx_cell_cont_no_borders .dhxacc_cont").css("height",cont.height());
}
}
/**
*
* TODO https提示安装证书
*
* @author chenPF
* @since 2016年4月25日 上午11:24:58
*/
function installCert()
{
if(isHttpsProtocol())
{
createWindow("base_opBaseInstallCert.do?type=custom^0^0^700^300^Prompt");
}
$("#driverInfoMessage").css("display","none");
}
/**
* 获取webserver的信息--简易版
* @author wenxin
* @param paramArray 存放国际化元素的数组
* @param isFPLogin 是否是指纹登录 true:是;false:否
* @create 2013-08-09 17:43:31 pm
*/
function getInfoForSimpleCallBack(xDomainRequest, paramArray, isFPLogin)
{
//获取接口返回值
var resultData = xDomainRequest.responseText;
//转化为json对象
var obj = jQuery.parseJSON(resultData);
//返回码
var ret = null;
if(obj != null && obj.ret != undefined)
{
ret = obj.ret;
}
//接口调用成功返回时
if(ret == 0)
{
if(isFPLogin)
{
//显示指纹比对
showFPVerify(paramArray);
}
else
{
//显示登记--点击采集指纹
showRegister(paramArray);
//显示指静脉登记--可以点击采集指静脉
showFVRegister(paramArray);
//计算指纹数量Fingerprint Quantity:指纹数
showFPCountInit(paramArray[5], paramArray[6]);
//计算指静脉数
showFVCountInit(paramArray[11], paramArray[9]);
//鼠标over事件
//mouseOverEvent();
}
//用完后,将对象置为空
xDomainRequest = null;
}
}
/**
* 获取webserver的信息
* @author wenxin
* @param paramArray 存放国际化元素的数组
* @param isFPLogin 是否是指纹登录 true:是;false:否
* @param type 0 表示发送完请求后,还有别的操作。1 表示发送完请求后,没有其余的操作了
* @create 2013-08-09 17:24:31 pm
*/
function getWebServerInfoForSimple(paramArray, isFPLogin, type)
{
//创建XDomainRequest实例,用于ie8和ie9跨域访问
var xDomainRequest = new XDomainRequest();
//如果xDomainRequest存在,则可以使用xDomainRequest函数,否则,说明不是ie浏览器
if (xDomainRequest)
{
xDomainRequest.open('GET', issOnlineUrl+"/info?random="+getRandomNum());
xDomainRequest.onload = function()
{
//检查驱动
if(type == "0")
{
getInfoForSimpleCallBack(xDomainRequest, paramArray, isFPLogin);
}
//检查动态库连接
else if(type == "1")
{
getDLLConnectCallBack(xDomainRequest);
}
};
xDomainRequest.onerror = function()
{
//用完后,将对象置为空
xDomainRequest = null;
};
xDomainRequest.send();
}
}
var readyStateForSimple = false;//判断接口调用状态标志--指纹采集简易版防止频繁调用webservice接口
/**
* 取消采集(简易版)
* @author wenxin
* @create 2013-06-01 14:54:31 pm
*/
function cancelCaptureForSimple()
{
readyStateForSimple = false;
//创建XDomainRequest实例,用于ie8和ie9跨域访问
xDomainRequest = new XDomainRequest();
if (xDomainRequest)
{
xDomainRequest.open('GET', issOnlineUrl+"/cancelCapture?random="+getRandomNum());
xDomainRequest.onload = cancelCaptureCallBack;
xDomainRequest.onerror = errorMsg;
xDomainRequest.send();
}
}
/**
* 打开采集,开始扫描
* @author wenxin
* @create 2013-06-01 10:18:31 am
*/
function beginFPRegister(type)
{
//让ie支持cors方式跨域
jQuery.support.cors = true;
//创建XDomainRequest实例,用于ie8和ie9跨域访问
xDomainRequest = new XDomainRequest();
//如果xDomainRequest存在,则可以使用xDomainRequest函数,否则,说明不是ie浏览器
if (xDomainRequest)
{
xDomainRequest.open('GET', issOnlineUrl+"/beginCapture?type="+type+"&random="+getRandomNum());
xDomainRequest.onload = beginCaptureCallBack;
xDomainRequest.onerror = errorMsg;
xDomainRequest.send();
}
}
/**
* 采集指纹、显示采集次数、指纹图像
* @author wenxin
* @create 2013-06-01 14:54:31 pm
*/
function captureAndGetImage()
{
//创建XDomainRequest实例,用于ie8和ie9跨域访问
xDomainRequest = new XDomainRequest();
if (xDomainRequest)
{
xDomainRequest.open('GET', issOnlineUrl+"/getImage?random="+getRandomNum());
xDomainRequest.onload = getImageCallBack;
xDomainRequest.onerror = errorMsg;
xDomainRequest.send();
}
}
/**
* 获取指纹模板(简易版)
* @author wenxin
* @create 2013-06-04 15:15:31 pm
*/
function getFPTemplateForSimple()
{
//创建XDomainRequest实例,用于ie8和ie9跨域访问
xDomainRequest = new XDomainRequest();
if (xDomainRequest)
{
xDomainRequest.open('GET', issOnlineUrl+"/getTemplate?random="+getRandomNum());
xDomainRequest.onload = getTemplateCallBack;
xDomainRequest.onerror = errorMsg;
xDomainRequest.send();
}
}
/**
* 清空指纹图像
* @author wenxin
* @create 2013-09-05 15:15:11 pm
*/
function clearFPImage(context, browserFlag)
{
if(browserFlag == "verification")
{
// showImage(context, "/base/images/base_fpVerify_clearImage.png", "clearForVerify");
}
else if(browserFlag == "register")
{
showImage(context, "/base/images/base_fpVerify_clearImage.png", "clearForRegister");
}
else if(browserFlag == "verifyForSimple" || browserFlag == "registerForSimple")
{
showImage(null, "", "clearForSimple");
}
}
/**
* 显示指纹图像
* @author wenxin
* @create 2013-05-18 11:22:31 am
* @param context 2d画布上下文
* @param browserFlag 浏览器标记 simple:简易版本,表示是ie浏览器;html5:表示支持html5的浏览器
*/
var baseShowImageInterval,flag=0;
function showImage(context, base64FPImg, browserFlag)
{
var img,imgGif;
var imgSrc = "data:image/jpg;base64,"+base64FPImg;
if(browserFlag == "html5"){
img = new Image();
//img.src = sysCfg.rootPath + "/public/html/bmpFile1.jpg";
img.src = imgSrc;
img.onload=function() {
// 保存当前的绘图状态
context.save();
// 开始创建路径
context.beginPath();
// 画一个椭圆
context.oval(125, 142, 112, 145);
// 关闭路径
context.closePath();
// 剪切路径
context.clip();
//将图片画到画布上
context.drawImage(img, 70, 70, 112, 145);
//调用restore最后一次存储的状态会被恢复
context.restore();
}
}
else if(browserFlag == "verification")
{
img = new Image();
img.src = imgSrc;
img.onload=function() {
// 保存当前的绘图状态
context.save();
// 开始创建路径
context.beginPath();
// 画一个椭圆
context.oval(92, 159, 100, 128);
// 关闭路径
context.closePath();
// 剪切路径
context.clip();
//将图片画到画布上
context.drawImage(img, 37, 90, 112, 145);
//调用restore最后一次存储的状态会被恢复
context.restore();
}
}
else if(browserFlag == "clearForVerify" || browserFlag == "clearForRegister")
{
img = new Image();
img.src = base64FPImg;
img.onload=function() {
// 保存当前的绘图状态
context.save();
// 开始创建路径
context.beginPath();
// 画一个椭圆
if(browserFlag == "clearForVerify")
{
context.oval(91, 160, 112, 145);
}
else if(browserFlag == "clearForRegister")
{
context.oval(125, 142, 132, 165);
}
// 关闭路径
context.closePath();
// 剪切路径
context.clip();
//将图片画到画布上
if(browserFlag == "clearForVerify")
{
context.drawImage(img, 12, 54, 160, 213);
}
else if(browserFlag == "clearForRegister")
{
if(fpvType==2)//指纹
{
imgGif = new Image();
imgGif.src = "/base/images/base_fv0.png";
clearInterval(baseShowImageInterval);
baseShowImageInterval=setInterval(function (){
if(flag==0)
{
context.drawImage(img, 60, 60, 132, 165);
flag=1;
}
else
{
context.drawImage(imgGif, 60, 60, 132, 165);
flag=0;
}
}, 700);
}
else
{
context.drawImage(img, 60, 60, 132, 165);
}
}
//调用restore最后一次存储的状态会被恢复
context.restore();
}
}
else if(browserFlag == "simple")
{
$("#showFPImageDiv").html("
");
}
else if(browserFlag == "verifySimple")
{
$("#showSeachingDiv").show();
$("#showSeachingDiv").html("
");
}
else if(browserFlag == "clearForSimple")
{
$("#showFPImageDiv").html("");
}
}
/**
* 获取指纹模板
* @author wenxin
* @create 2013-05-22 19:51:31 pm
* @param paramArray 存放国际化元素的数组
* @param flag 判断是登记和验证标记 register:登记;verification:验证
*/
function getFPTemplate(paramArray, flag)
{
var fpTemplate = "";
var fvTemplate = "";
var collectSuccessFlag = false;
$.ajax( {
type : "GET",
url : issOnlineUrl+"/getTemplate?random="+getRandomNum(),
dataType : "json",
async: false,
success : function(result)
{
//返回码
var ret = null;
ret = result.ret;
if(ret == 0)
{
if(fpvType==1)//指纹
{
fpTemplate = result.data.template;
}
else if(fpvType==2)//指静脉
{
fpTemplate = result.data.fingerprint.template;
}
}
//成功
if(ret == 0)
{
collectSuccessFlag = true;
if(flag == "register")
{
//判断手指是否已经采集指纹
var compareRet = "";
if(fpvType==1)//指纹
{
//如果前面已经录入指纹
if(templateDataArray.length > 0)
{
//发送请求,进行后台指纹比对
compareRet = fpComparision(fpTemplate, templateDataArray, paramArray[3]);
}
}
else if(fpvType==2)//指静脉
{
//如果前面已经录入指纹
if(templateFVDataArray.length > 0)
{
var templateDataTempArray = new Array();
templateDataTempArray = templateDataArray.slice();
//如果指静脉中含有指纹并且原来指纹也有录入该指纹则删除该指纹,使用最后录入的指纹。
if(fpTemplate!=undefined&&fpTemplate!="")
{
for(var i=0; i= DURESS_FINGER_NUM)
{
fingerId = fingerId - DURESS_FINGER_NUM;
if(fvIdArray.indexOf(fingerId+"_0")==-1)
{
removeItem(templateDataTempArray, i);
}
}
else
{
if(fvIdArray.indexOf(fingerId+"_0")==-1)
{
removeItem(templateDataTempArray, i);
}
}
}
}
//发送请求,进行后台指纹比对,指纹比对通过指静脉也通过已经与陈工确认过。
compareRet = fpComparision(fpTemplate, templateDataTempArray, paramArray[3]);
}
}
if($.trim(compareRet) == "dllNotExist")
{
//采集完指纹,渲染手指
renderAfterColl(globalContext, fpIdNum, bgColor, false);//bgColor判断
//显示框--采集提示
collectTips(globalContext, "Load Library error.", "html5");
}
else
{
if(compareRet == "noFingerServer")
{
//采集完指纹,渲染手指
renderAfterColl(globalContext, fpIdNum, bgColor, false);//bgColor判断
//显示框--采集提示
collectTips(globalContext, "Did not start the finger service", "html5");
}
else
{
//此手指未采集指纹
if(compareRet != "ok")
{
//采集完指纹,渲染手指
renderAfterColl(globalContext, fpIdNum, bgColor, true);//bgColor判断
//显示框--采集提示
collectTips(globalContext, paramArray[0], "html5");
if(fpvType==1)//指纹
{
//胁迫指纹
if(duressFingerFlag)
{
//将手指标记保存到数组中
fingerIdArray[fingerIdArray.length] = fpIdNum + DURESS_FINGER_NUM;
}
else
{
//将手指标记保存到数组中
fingerIdArray[fingerIdArray.length] = fpIdNum;
}
}
else//指静脉
{
fvIdArray[fvIdArray.length] = fpIdNum+"_0";
fvIdArray[fvIdArray.length] = fpIdNum+"_1";
fvIdArray[fvIdArray.length] = fpIdNum+"_2";
//如果指静脉中含有指纹并且原来指纹也有录入该指纹则删除该指纹,使用最后录入的指纹。
if(fpTemplate!=undefined&&fpTemplate!="")
{
for(var i=0; i= DURESS_FINGER_NUM)
{
fingerId = fingerId - DURESS_FINGER_NUM;
if(fingerId == fpIdNum)
{
removeItem(fingerIdArray, i);
removeItem(templateDataArray, i);
fpIdNum = fpIdNum + DURESS_FINGER_NUM;
}
}
else if(fingerId == fpIdNum)
{
removeItem(fingerIdArray, i);
removeItem(templateDataArray, i);
}
}
}
//将手指标记保存到数组中
fingerIdArray[fingerIdArray.length] = fpIdNum;
}
if(fpvType==2)//指静脉会采集一枚指纹三枚指静脉
{
//templateFVDataArray[templateFVDataArray.length] = fpTemplate;//指静脉采集时的指纹
//将指纹中的指纹模板保存到数组中
templateDataArray[templateDataArray.length] = fpTemplate;
templateFVDataArray[templateFVDataArray.length] = result.data.fingervein[0].template;
templateFVDataArray[templateFVDataArray.length] = result.data.fingervein[1].template;
templateFVDataArray[templateFVDataArray.length] = result.data.fingervein[2].template;
}
else if(fpvType==1)//指纹
{
//将指纹中的指纹模板保存到数组中
templateDataArray[templateDataArray.length] = fpTemplate;
}
}
else
{
//采集完指纹,渲染手指
renderAfterColl(globalContext, fpIdNum, bgColor, false);//bgColor判断
//Please don't repeat input fingerprint!
//显示框--采集提示
collectTips(globalContext, paramArray[2], "html5");
}
}
}
}
else if(flag == "verification")
{
verifyFlag = false;
//指纹比对
fpComparison(fpTemplate);
}
}
else if(ret == -2003)
{
//采集完指纹,渲染手指
renderAfterColl(globalContext, fpIdNum, bgColor, false);
//显示框--采集提示
collectTips(globalContext, paramArray[1], "html5", "warning");
}
},
error : function(XMLHttpRequest, textStatus, errorThrown)
{
messageBox({messageType: "alert", title: "Prompt", text: paramArray[3]});
}
});
return collectSuccessFlag;
}
/**
* 发送请求到后台,进行比对
* @author wenxin
* @create 2013-08-05 16:20:31 pm
* @param fpTemplate 指纹模板
* @param templateArray 指纹模板数组
* @param errorMsg ajax请求报错,错误信息
*/
function fpComparision(fpTemplate, templateArray, errorMsg)
{
var ret = "";
var templates = templateArray.toString();
//特殊字符转义
fpTemplate = transferredMeaning(fpTemplate);
templates = transferredMeaning(templates);
$.ajax( {
type : "POST",
url : "baseBioVerifyAction!fpComparison.action",
contentType : "application/x-www-form-urlencoded;charset=UTF-8",
data : "verifyTemplate="+fpTemplate+"&templates="+templates,
dataType : "json",
async: false,
success : function(result)
{
if(result.ret == "ok")
{
ret = "ok";
}
if(result.msg == "noFingerServer")
{
ret = "noFingerServer";
}
if(result.msg == "dllNotExist")
{
ret = "dllNotExist";
}
},
error : function(XMLHttpRequest, textStatus, errorThrown)
{
messageBox({messageType: "alert", title: "Prompt", text: "The server failed to process the data. Please try again! Error code:"});
}
});
return ret;
}
/**
* ----------------------------------------------------------common end--------------------------------------------------------------
*/
/**
* ----------------------------------------------------------html5 start-------------------------------------------------------------
*/
/**
* 初始化绘画手指、手掌、圆弧的起始坐标,并做成json格式
* @author wenxin
* @create 2013-06-15 15:40:31 pm
*/
function initCoordJson()
{
var coordJson = [{"num" : 0, "coord" : {"x" : x + 3, "y" : y - 37}},
{"num" : 1, "coord" : {"x" : x + 25, "y" : y - 37}},
{"num" : 2, "coord" : {"x" : x + 47, "y" : y - 34}},
{"num" : 3, "coord" : {"x" : x + 67, "y" : y - 26}},
{"num" : 4, "coord" : {"x" : x + 77, "y" : y + 18}},
{"num" : 5, "coord" : {"x" : x + 153, "y" : y + 34}},
{"num" : 6, "coord" : {"x" : x + 159, "y" : y - 19}},
{"num" : 7, "coord" : {"x" : x + 177, "y" : y - 30}},
{"num" : 8, "coord" : {"x" : x + 198, "y" : y - 36}},
{"num" : 9, "coord" : {"x" : x + 220, "y" : y - 36}},
{"num" : 10, "coord" : {"x" : x, "y" : y}},
{"num" : 11, "coord" : {"x" : x + 170, "y" : y + 12}},
{"num" : 12, "coord" : {"x" : x + 210, "y" : y - 346}}];
return coordJson;
}
/**
* 采集完指纹后渲染手指
* @author wenxin
* @create 2013-05-18 11:33:31 am
* @param context 2d画布上下文
* @param num 当前需要渲染的手指编号
* @param fillColor 采集完后填充颜色
* @param successOrNot 采集是否成功--布尔值 true:采集成功;false:采集失败
*/
function renderAfterColl(context, num, fillColor, successOrNot)
{
var canvas = document.getElementById("canvas");
var localContext = canvas.getContext("2d");
var coordArray = new Array();
//初始化起始坐标,并返回json格式数据
var coordJson = initCoordJson();
//进来页面,点击删除
if(num == null)
{
num = fpIdNum;
}
//点击的手指编号和json中num相等
if(coordJson[num].num == num)
{
//初始化坐标数组和绘画手指
initCoordAndDrawFinger(context, coordArray, coordJson[num].coord.x, coordJson[num].coord.y, num);
}
//采集成功,填充颜色(红、绿)
if(successOrNot)
{
if(duressFingerFlag)
{
localContext.fillStyle = "red";//fillColor
localContext.fill();
fpModifyFlag = true;
}
else
{
localContext.fillStyle = "rgb(122,193,66)";//fillColor
localContext.fill();
fpModifyFlag = true;
}
}
else
{
//采集失败,填充背景色--消除颜色(黄)
localContext.fillStyle = fillColor;
localContext.fill();
}
}
/**
* 坐标点对象
* @author wenxin
* @create 2013-05-31 18:01:33 pm
*/
var Coord = function(x, y)
{
this.x = x;
this.y = y;
}
/**
* 初始化坐标数组和绘画手指--获取当前的context
* @author wenxin
* @create 2013-05-31 18:01:33 pm
* @param context 2d画布上下文
* @param pointArray 坐标点数组
* @param x,y 绘画当前手指的起始坐标
* @param num 手指标记
*/
function initCoordAndDrawFinger(context, coordArray, x, y, num)
{
coordArray = initCoordArray(coordArray, x, y, num);
new renderFinger(context, coordArray).drawFinger(strokeStyle, fingerBorderColor);
}
/**
* 绘画手指
* @author wenxin
* @create 2013-05-31 18:01:33 pm
* @param context 2d画布上下文
* @param pointArray 坐标点数组
* @param renderFlag 渲染标记 stroke:绘画边线;fill:填充
* @param color 渲染颜色
*/
var renderFinger = function(context, pointArray)
{
this.context = context;
this.pointArray = pointArray;
this.isClick = false;
this.drawFinger = function(renderFlag, color)
{
if(renderFlag == "stroke")
{
this.context.strokeStyle = color;
}
else if(renderFlag == "fill")
{
this.context.fillStyle = color;
}
this.context.lineWidth = 1;
this.context.beginPath();
for(var i=0; i"+text+"");
}
else if(browserFlag == "html5")
{
context.fillStyle = bgColor;//bgColor;
//修改在非中文环境下文本显示排版问题 modified by 陈彩云 20160526
context.fillRect(75, 18, 350, 16);
//修改防假提示语颜色 modified by 陈彩云 20160616
if(text == "Suspected fake fingerprint, please re-register.")
{
if(type=="warning")
{
context.fillStyle = "#e57a14";
}
else
{
context.fillStyle = "rgb(255,0,0)";
}
}
else
{
if(type=="warning")
{
context.fillStyle = "#e57a14";
}
else
{
context.fillStyle = "rgb(122,193,66)";
}
}
context.font ="12px Arial,微软雅黑";
//context.shadowColor = 'white';
//context.shadowBlur = 10;
//context.strokeText(text, 230, 30);
context.textAlign = "end";
context.fillText(text, 400, 30);
}
else if(browserFlag == "verification")
{
//#6BA5D7
if(type=="warning")
{
context.fillStyle = "#e57a14";
}
else
{
context.fillStyle = "#F3F5F0";//#6BA5D7
}
context.fillRect(2, 8, 600, 30);
//获取canvas对象
var canvas = document.getElementById("canvas");
// canvas.width = canvas.width;
//返回一个文本的度量信息对象metrics
var metrics = context.measureText(text);
//文本宽度
var textWidth = metrics.width;
//canvas宽度
canvas != null?canvasWidth = canvas.width:canvasWidth = 450;
//文本开始x坐标
var x = textWidth/2 + (canvasWidth - textWidth)/2;
//context.fillStyle = bgColor;
//context.fillRect(0, 18, 445, 16);
if(type=="warning")
{
context.fillStyle = "#e57a14";
}
else
{
context.fillStyle = "rgb(122,193,66)";
}
context.font ="24px Arial,微软雅黑";
context.textAlign = "center";
//自动换行
autoWordBreak(context,text,canvasWidth,x);
context.restore();
}
else if(browserFlag == "verifyForSimple")
{
$("#showCollInfoDiv").html(""+text+"");
}
}
/**
* 画布文本自动换行
* @author chenpf
* @create 2015-03-10 16:56:31 pm
* @param context 2d画布上下文
* @param text 显示信息内容
* @param CWidth 画布宽度
* @param x 文本X坐标值
*
*/
function autoWordBreak(context,text,CWidth,x){
context.clear();
var rownum = CWidth / 10;
var len = strlen(text);
if (rownum > len)
{
context.fillText(text, x, 30);
}
else
{
var endInd = rownum=text.length)
break;
endInd = beginInd + rownum;
}
}
}
/**
* 画进度条
* @author wenxin
* @create 2013-05-16 16:56:31 pm
* @param context 2d画布上下文
* @param x,y,width,height 进度条底框的坐标和宽度、高度
*/
function drawProgressBar(context, collCount)
{
var x = 285;
var y = 60;
var width = 90;
var height = 20;
context.fillStyle = bgColor;
context.fillRect(x, y, width, height);
if(collCount == 0)
{
context.fillStyle = "rgb(175,181,185)";
context.fillRect(x + 4, y + 2, width - 52, height - 4);
context.fillRect(x + 46, y + 2, width -52, height - 4);
context.fillRect(x + 86, y + 2, width - 52, height - 4);
}
else if(collCount == 1)
{
context.fillStyle = "rgb(122,193,66)";
context.fillRect(x + 4, y + 2, width - 52, height - 4);
context.fillStyle = "rgb(175,181,185)";
context.fillRect(x + 46, y + 2, width - 52, height - 4);
context.fillRect(x + 86, y + 2, width - 52, height - 4);
}
else if(collCount == 2)
{
context.fillStyle = "rgb(122,193,66)";
context.fillRect(x + 4, y + 2, width - 52, height - 4);
context.fillRect(x + 46, y + 2, width - 52, height - 4);
context.fillStyle = "rgb(175,181,185)";
context.fillRect(x + 86, y + 2, width - 52, height - 4);
}
else if(collCount == 3)
{
context.fillStyle = "rgb(122,193,66)";
context.fillRect(x + 4, y + 2, width - 52, height - 4);
context.fillRect(x + 46, y + 2, width - 52, height - 4);
context.fillRect(x + 86, y + 2, width - 52, height - 4);
}
}
/**
* ----------------------------------------------------------html5 end-------------------------------------------------------------
*/