forked from nsjcy/frontEnd/nsjcy

liuwh
2020-05-29 2fdc3dc444a2f8199866780205c0fa4b5ac40522
SunshineIns/src/copy/fingerprint/js/fingerprint.js
@@ -41,23 +41,20 @@
 * @create 2013-06-15 15:01:31 pm
 * @param url 加载xml的url
 */
function loadXml(url)
{
function loadXml(url) {
   $.ajax( {
      type : "GET",
      url : url,
      dataType : "xml",
      async: false,
      success : function(xml)
      {
      success: function (xml) {
         $(xml).find('service').each(function(){
            var service = $(this);
            serverIp = service.find('ISSOnline_serverIp').text(); 
            serverPort = service.find('ISSOnline_serverPort').text();
         })
      },
      error : function(XMLHttpRequest, textStatus, errorThrown)
      {
      error: function (XMLHttpRequest, textStatus, errorThrown) {
         //如果取配置文件出错,则设置默认
         serverIp = "127.0.0.1";
         serverPort = "22001";
@@ -74,22 +71,17 @@
 * @param fingerIdList 数据库查询的指纹标记
 * @param templateList 数据库查询的指纹模板
 */
function loadFPDataTemplate(fingerIdList, templateList)
{
   if(fingerIdList == "[]")
   {
function loadFPDataTemplate(fingerIdList, templateList) {
   if (fingerIdList == "[]") {
      $("#fingerId").val(" ");
   } 
   else
   {
   else {
      $("#fingerId").val(fingerIdList);
   }
   if(templateList == "[]")
   {
   if (templateList == "[]") {
      $("#fingerTemplate10").val(" ");
   } 
   else
   {
   else {
      $("#fingerTemplate10").val(templateList);
   }
}
@@ -100,21 +92,17 @@
 * @author wenxin
 * @create 2013-08-09 17:24:31 pm
 */
function getBrowserType()
{
function getBrowserType() {
   var browserFlag = "";
    //是否支持html5的cors跨域
    if (typeof(Worker) !== "undefined")
    {
   if (typeof (Worker) !== "undefined") {
        browserFlag = "html5";
    }
    //此处判断ie8、ie9
    else if(navigator.userAgent.indexOf("MSIE 8.0")>0 || navigator.userAgent.indexOf("MSIE 9.0")>0)
    {
   else if (navigator.userAgent.indexOf("MSIE 8.0") > 0 || navigator.userAgent.indexOf("MSIE 9.0") > 0) {
        browserFlag = "simple";
    }
    else
   {
   else {
      browserFlag = "upgradeBrowser";//当前浏览器不支持该功能,请升级浏览器
   }
    return browserFlag;
@@ -128,28 +116,22 @@
 * @param paramArray 存放国际化元素的数组
 * @param isFPLogin 是否是指纹登录 true:是;false:否
 */
function checkDriver(paramArray, browserFlag, isFPLogin)
{
function checkDriver(paramArray, browserFlag, isFPLogin) {
   var hrefStr = "";
   if(browserFlag == "html5")
   {
   if (browserFlag == "html5") {
      // 发送一个请求,检查是否安装驱动
      getWebServerInfo(paramArray, isFPLogin, "0");
   }
   else if(browserFlag == "simple")
   {
   else if (browserFlag == "simple") {
      //发送一个请求,检查是否安装驱动
      getWebServerInfoForSimple(paramArray, isFPLogin, "0");
   }
   else if(browserFlag == "upgradeBrowser")
   {
      if($("#userLoginForm [name='fingerLogin']").val() != undefined)
      {
   else if (browserFlag == "upgradeBrowser") {
      if ($("#userLoginForm [name='fingerLogin']").val() != undefined) {
         $("#userLoginForm [name='fingerLogin']").attr("onclick", "");
         $("#userLoginForm [name='fingerLogin']").attr("title", "当前浏览器不支持改功能,请升级浏览器!");
      }
      if($("#fpRegister").val() != undefined)
      {
      if ($("#fpRegister").val() != undefined) {
         $("#fpRegister").attr("onclick", "");
         $("#fpRegister").attr("title", "当前浏览器不支持改功能,请升级浏览器!");
      }
@@ -165,30 +147,25 @@
 * @param type 0 表示发送完请求后,还有别的操作。1 表示发送完请求后,没有其余的操作了
 * @create 2013-08-09 17:24:31 pm
 */
function getWebServerInfo(paramArray, isFPLogin, type)
{
function getWebServerInfo(paramArray, isFPLogin, type) {
   $.ajax( {
      type : "GET",
      url : issOnlineUrl+"/info",
      dataType : "json",
      async: true,
      //timeout:1000,
      success : function(result)
      {
      success: function (result) {
         //检查驱动
         if(type == "0")
         {
         if (type == "0") {
            getWebServerInfoCallBack(result, paramArray, isFPLogin);
         }
         //检查动态库连接
         else if(type == "1")
         {
         else if (type == "1") {
            getDLLConnectCallBack(result,isComp);
         }
         
      },
      error : function(XMLHttpRequest, textStatus, errorThrown)
      {
      error: function (XMLHttpRequest, textStatus, errorThrown) {
         
       }
   });
@@ -202,29 +179,23 @@
 * @param type 0 表示发送完请求后,还有别的操作。1 表示发送完请求后,没有其余的操作了
 * @create 2013-08-09 17:24:31 pm
 */
function getWebServerInfoForSimple(paramArray, isFPLogin, type)
{
function getWebServerInfoForSimple(paramArray, isFPLogin, type) {
   //创建XDomainRequest实例,用于ie8和ie9跨域访问
   var xDomainRequest = new XDomainRequest();
   //如果xDomainRequest存在,则可以使用xDomainRequest函数,否则,说明不是ie浏览器
   if (xDomainRequest)
   {
   if (xDomainRequest) {
      xDomainRequest.open('GET', issOnlineUrl+"/info?random="+getRandomNum());  
      xDomainRequest.onload = function()
      {
      xDomainRequest.onload = function () {
         //检查驱动
         if(type == "0")
         {
         if (type == "0") {
            getInfoForSimpleCallBack(xDomainRequest, paramArray, isFPLogin);
         }
         //检查动态库连接
         else if(type == "1")
         {
         else if (type == "1") {
            getDLLConnectCallBack(xDomainRequest,isComp);
         }
      };  
      xDomainRequest.onerror = function()
      {
      xDomainRequest.onerror = function () {
         //用完后,将对象置为空
         xDomainRequest = null;
      };
@@ -238,21 +209,17 @@
 * @author wenxin
 * @create 2013-08-09 17:24:31 pm
 */
function getWebServerInfoCallBack(result, paramArray, isFPLogin)
{
function getWebServerInfoCallBack(result, paramArray, isFPLogin) {
   //返回码
   var ret = null;
   ret = result.ret;
   //接口调用成功返回时
   if(ret == 0)
   {
      if(isFPLogin)
      {
   if (ret == 0) {
      if (isFPLogin) {
         //显示指纹登录
         showFPVerify(paramArray);
      }
      else
      {
      else {
         //显示登记--可以点击采集指纹
         showRegister(paramArray);
         //计算指纹数量${pers_person_templateCount}:指纹数
@@ -274,8 +241,7 @@
 * @create 2013-06-14 10:09:20 am
 * @param paramArray 存放国际化元素的数组
 */
function showFPVerify(paramArray)
{
function showFPVerify(paramArray) {
   $("#userLoginForm .but_fing_disabled").hide();
   $("#userLoginForm .but_fing").show();
}
@@ -286,14 +252,13 @@
 * @create 2013-06-14 10:09:20 am
 * @param paramArray 存放国际化元素的数组
 */
function showRegister(paramArray)
{
function showRegister(paramArray) {
   var hrefStr = "";
   var param = '"'+paramArray[0]+'", "'+paramArray[1]+'", "'+paramArray[2]+'", '+null+'';
   $("#fpRegister").remove();
   $("#downloadDriver").remove();
   //webservice接口调用成功,说明驱动已经安装
   hrefStr = "<a id='fpRegister' onclick='submitRegister("+param+", true"+")' title='"+paramArray[3]+"' class='linkStyle'>"+paramArray[3]+"</a>";
   hrefStr = "<button id='fpRegister' onclick='submitRegister(" + param + ", true" + ")' title='" + paramArray[3] + "' class='linkStyle'>" + paramArray[3] + "</button>";
   $("#fpRegisterDiv").append(hrefStr);
}
@@ -303,8 +268,7 @@
 * @create 2013-04-25 11:31:20 am
 * 
 */
function showFPCountInit(fingerIdCount, text)
{
function showFPCountInit(fingerIdCount, text) {
   $("#fpCountMessage").text(text +" "+ fingerIdCount);
}
@@ -314,28 +278,23 @@
 * @param oldVersion 旧驱动版本
 * @create 2015-01-28 17:24:31 pm
 */
function compareFPDriver(oldVersion)
{
function compareFPDriver(oldVersion) {
    var existVersion = fpDriverVersion
   var curVersion = oldVersion;//3.5.2
   var existVersionArr = existVersion.split(".");
   var curVersionArr = curVersion.split(".");
   var isLast = true;
   var len = existVersionArr.length;
   for(var i=len;i>0;i--)
   {
   for (var i = len; i > 0; i--) {
      var existVersionTemp = parseInt(existVersionArr[i-1]);
      var curVersionTemp = parseInt(curVersionArr[i-1]);
      if(existVersionTemp<curVersionTemp)
      {
      if (existVersionTemp < curVersionTemp) {
         isLast = false;
      }
      else if(existVersionTemp>curVersionTemp)
      {
      else if (existVersionTemp > curVersionTemp) {
         isLast = true;
      }
      else
      {
      else {
         //等于 忽略
      }
   }
@@ -357,28 +316,23 @@
 * @param isFPLogin 是否是指纹登录 true:是;false:否
 * @create 2013-08-09 17:43:31 pm
 */
function getInfoForSimpleCallBack(xDomainRequest, paramArray, isFPLogin)
{
function getInfoForSimpleCallBack(xDomainRequest, paramArray, isFPLogin) {
   //获取接口返回值
   var resultData = xDomainRequest.responseText;
   //转化为json对象
   var obj = jQuery.parseJSON(resultData);
   //返回码
   var ret = null;
   if(obj != null && obj.ret != undefined)
   {
   if (obj != null && obj.ret != undefined) {
      ret = obj.ret;
   }
   //接口调用成功返回时
   if(ret == 0)
   {
      if(isFPLogin)
      {
   if (ret == 0) {
      if (isFPLogin) {
         //显示指纹比对
         showFPVerify(paramArray);
      }
      else
      {
      else {
         //显示登记--点击采集指纹
         showRegister(paramArray);
         //计算指纹数量${pers_person_templateCount}:指纹数
@@ -402,11 +356,9 @@
 * @param downloadText 驱动安装国际化内容
 * @param isDriverInstall 是否安装了驱动
 */
function submitRegister(title, fpCount, saveText, downloadText, isDriverInstall)
{
function submitRegister(title, fpCount, saveText, downloadText, isDriverInstall) {
   //支持html5
   if (typeof(Worker) !== "undefined" && isDriverInstall)
   {
   if (typeof (Worker) !== "undefined" && isDriverInstall) {
      var box=document.getElementById("box");
       var bg=document.getElementById("bg");
         box.style.display="block";//显示内容层,显示覆盖层
@@ -419,19 +371,16 @@
       //关闭页面时,提示保存数据
      //storeBeforeClose(fpCount, saveText);
   } 
   else if(typeof(Worker) == "undefined" && isDriverInstall)
   {
   else if (typeof (Worker) == "undefined" && isDriverInstall) {
       //createWindow('base_baseFPRegisterSimple.action?random=' + getRandomNum() + '^0^0^465^460^' + title);//public/html/applet.html
       showModalDialog('webapp/html/baseFPRegisterSimple.html',title,'dialogWidth:465px;dialogHeight:460px;dialogLeft:600px;dialogTop:150px;center:yes;resizable:no;status:yes');
       //关闭页面时,提示保存数据
      //storeBeforeClose(fpCount, saveText);
   }  
   else if(!isDriverInstall)
   {
   else if (!isDriverInstall) {
      alert("请安装指纹驱动或启动该服务!");
      //messageBox({messageType: "alert", title: "提示", text: "请安装指纹驱动或启动该服务!"});
      if(typeof($("#downloadDriver").val()) == "undefined")
      {
      if (typeof ($("#downloadDriver").val()) == "undefined") {
         var hrefStr = "<a id='downloadDriver' href='webapp/middleware/zkbioonline.exe' title='" + downloadText + "'>"+downloadText+"</a>";
         $("#driverDownload").append(hrefStr);
      }
@@ -446,13 +395,11 @@
 * @param fpCount 指纹数国际化内容
 * @param saveText 提示:是否保存国际化内容
 */
function storeBeforeClose(fpCount, saveText)
{
function storeBeforeClose(fpCount, saveText) {
    //关闭页面时,监听关闭的onclick事件
   getCurrentWindow().button("close").attachEvent("onClick", function(){
      //判断是否修改了数据(包括新增和删除)
      if ($("#whetherModify").val() != undefined && (fpModifyFlag != undefined && fpModifyFlag))
      {
      if ($("#whetherModify").val() != undefined && (fpModifyFlag != undefined && fpModifyFlag)) {
         //获取指纹标记数据
         var fingerIdData = fingerIdArray;
         //获取指纹模板数据
@@ -460,8 +407,7 @@
         var flag=confirm(saveText);
         saveFPData(flag, fpCount);
      }
      else
      {
      else {
         //取消采集 
         cancelRegister();
         //将定时器的递归调用关闭
@@ -478,13 +424,11 @@
 * @create 2013-05-13 10:18:31 am
 * @param 
 */
function getDataFromPage()
{
function getDataFromPage() {
    var fingerId = $("#fingerId").val();
    var fingerTemplate = $("#fingerTemplate10").val();
    //如果有数据
    if($.trim(fingerId) != "")
    {
   if ($.trim(fingerId) != "") {
       fingerId = fingerId.substr(1, fingerId.length-2);
       fingerTemplate = fingerTemplate.substr(1, fingerTemplate.length-2);
       fingerIdArray = fingerId.split(",");
@@ -500,8 +444,7 @@
 * @author wenxin
 * @create 2013-06-15 15:40:31 pm
 */
function initCoordJson()
{
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}},
@@ -526,10 +469,8 @@
 * @param x, y 绘画手指的起点的坐标
 * @param num 手指、手掌编号0-9:手指编号;10:左手掌,11:右手掌,12:圆弧。
 */
function initCoordArray(coordArray, x, y, num)
{
   if(num == 0)
   {
function initCoordArray(coordArray, x, y, num) {
   if (num == 0) {
      coordArray[0] = new Coord(x, y);
      coordArray[1] = new Coord(x + 2, y - 35);
      coordArray[2] = new Coord(x + 5, y - 40);
@@ -542,8 +483,7 @@
      coordArray[9] = new Coord(x + 3, y + 5);
      coordArray[10] = new Coord(x, y);
   }
   else if(num == 1)
   {
   else if (num == 1) {
      coordArray[0] = new Coord(x, y);
      coordArray[1] = new Coord(x + 8, y - 50);
      coordArray[2] = new Coord(x + 12, y - 54);
@@ -556,8 +496,7 @@
      coordArray[9] = new Coord(x + 3, y + 4);
      coordArray[10] = new Coord(x, y);
   }
   else if(num == 2)
   {
   else if (num == 2) {
      coordArray[0] = new Coord(x, y);
      coordArray[1] = new Coord(x + 14, y - 54);
      coordArray[2] = new Coord(x + 16, y - 57);
@@ -570,8 +509,7 @@
      coordArray[9] = new Coord(x + 1, y + 5);
      coordArray[10] = new Coord(x, y);
   }
   else if(num == 3)
   {
   else if (num == 3) {
      coordArray[0] = new Coord(x, y);
      coordArray[1] = new Coord(x + 19, y - 37);
      coordArray[2] = new Coord(x + 21, y - 39);
@@ -598,8 +536,7 @@
      coordArray[10] = new Coord(x - 2, y + 8);
      coordArray[11] = new Coord(x, y);
   }
   else if(num == 5)
   {
   else if (num == 5) {
      coordArray[0] = new Coord(x, y);
      coordArray[1] = new Coord(x - 26, y - 21);
      coordArray[2] = new Coord(x - 27, y - 24);
@@ -612,8 +549,7 @@
      coordArray[9] = new Coord(x + 7, y + 1);
      coordArray[10] = new Coord(x, y);
   }
   else if(num == 6)
   {
   else if (num == 6) {
      coordArray[0] = new Coord(x, y);
      coordArray[1] = new Coord(x - 17, y - 46);
      coordArray[2] = new Coord(x - 17, y - 50);
@@ -626,8 +562,7 @@
      coordArray[9] = new Coord(x + 4, y + 2);
      coordArray[10] = new Coord(x, y);
   }
   else if(num == 7)
   {
   else if (num == 7) {
      coordArray[0] = new Coord(x, y);
      coordArray[1] = new Coord(x - 12, y - 54);
      coordArray[2] = new Coord(x - 10, y - 58);
@@ -640,8 +575,7 @@
      coordArray[9] = new Coord(x + 5, y + 4);
      coordArray[10] = new Coord(x, y);
   }
   else if(num == 8)
   {
   else if (num == 8) {
      coordArray[0] = new Coord(x, y);
      coordArray[1] = new Coord(x - 5, y - 50);
      coordArray[2] = new Coord(x - 2, y - 54);
@@ -654,8 +588,7 @@
      coordArray[9] = new Coord(x + 4, y + 5);
      coordArray[10] = new Coord(x, y);
   }
   else if(num == 9)
   {
   else if (num == 9) {
      coordArray[0] = new Coord(x, y);
      coordArray[1] = new Coord(x, y - 37);
      coordArray[2] = new Coord(x + 3, y - 41);
@@ -668,8 +601,7 @@
      coordArray[9] = new Coord(x + 3, y + 4);
      coordArray[10] = new Coord(x, y);
   }
   else if(num == 10)
   {
   else if (num == 10) {
      coordArray[0] = new Coord(x, y);
      coordArray[1] = new Coord(x + 2, y - 8);
      coordArray[2] = new Coord(x + 6, y - 16);
@@ -693,8 +625,7 @@
      coordArray[19] = new Coord(x + 2, y + 29);
      coordArray[20] = new Coord(x, y);
   }
   else if(num == 11)
   {
   else if (num == 11) {
      coordArray[0] = new Coord(x, y);
      coordArray[1] = new Coord(x - 2, y - 10);
      coordArray[2] = new Coord(x + 1, y - 20);
@@ -715,8 +646,7 @@
      coordArray[16] = new Coord(x + 16, y + 29);
      coordArray[17] = new Coord(x, y);
   }
   else if(num == 12)
   {
   else if (num == 12) {
      coordArray[0] = new Coord(x - 10, y);
      coordArray[1] = new Coord(x + 212, y);
      coordArray[2] = new Coord(x + 212, y + 129);
@@ -746,8 +676,7 @@
 * @author wenxin
 * @create 2013-05-31 18:01:33 pm
 */
var Coord = function(x, y)
{
var Coord = function (x, y) {
   this.x = x;
   this.y = y;
}
@@ -761,40 +690,31 @@
 * @param renderFlag 渲染标记 stroke:绘画边线;fill:填充
 * @param color 渲染颜色
 */
var renderFinger = function(context, pointArray)
{
var renderFinger = function (context, pointArray) {
   this.context = context;
   this.pointArray = pointArray;
   this.isClick = false;
   this.drawFinger = function(renderFlag, color)
   {
      if(renderFlag == "stroke")
      {
   this.drawFinger = function (renderFlag, color) {
      if (renderFlag == "stroke") {
         this.context.strokeStyle = color;
      }
      else if(renderFlag == "fill")
      {
      else if (renderFlag == "fill") {
         this.context.fillStyle = color;
      }
      this.context.lineWidth = 1;
      this.context.beginPath();
      for(var i=0; i<this.pointArray.length; i++)
      {
         if(i == 0)
         {
      for (var i = 0; i < this.pointArray.length; i++) {
         if (i == 0) {
            this.context.moveTo(this.pointArray[0].x, this.pointArray[0].y);
         }
         else
         {
         else {
            this.context.lineTo(this.pointArray[i].x, this.pointArray[i].y);
         }
      }
      if(renderFlag == "stroke")
      {
      if (renderFlag == "stroke") {
         this.context.stroke();
      }
      else if(renderFlag == "fill")
      {
      else if (renderFlag == "fill") {
         this.context.fill();
      }
   };
@@ -808,36 +728,28 @@
 * @param num 当前需要渲染的手指编号
 * @param browserFlag 浏览器标记 simple:简易版本,表示是ie浏览器;html5:表示支持html5的浏览器
 */
function renderInit(context, num, browserFlag)
{
function renderInit(context, num, browserFlag) {
   var fingerId;
   for(var i=0; i<fingerIdArray.length; i++)
   {
   for (var i = 0; i < fingerIdArray.length; i++) {
      fingerId = eval(fingerIdArray[i]);
      if(fingerId >= DURESS_FINGER_NUM)
      {
      if (fingerId >= DURESS_FINGER_NUM) {
         fingerId = fingerId -DURESS_FINGER_NUM;
         if(browserFlag == "html5")
         {
            if(fingerId == num)
             {
         if (browserFlag == "html5") {
            if (fingerId == num) {
               context.fillStyle = "red";
               context.fill();
             }
         }
      }
      else
      {
      else {
         if(browserFlag == "html5"){
            if(fingerId == num)
            {
            if (fingerId == num) {
               context.fillStyle = "rgb(122,193,66)";
               context.fill();
            }
         }
      }
      if(browserFlag == "simple")
      {
      if (browserFlag == "simple") {
         document.getElementById("finger" + fingerId).checked = true;
      }
   }
@@ -850,8 +762,7 @@
 * @param context 2d画布上下文
 * @param browserFlag 浏览器标记 simple:简易版本,表示是ie浏览器;html5:表示支持html5的浏览器
 */
function showImage(context, base64FPImg, browserFlag)
{
function showImage(context, base64FPImg, browserFlag) {
   var img;
   var imgSrc = "data:image/jpg;base64,"+base64FPImg;
   if(browserFlag == "html5"){
@@ -876,8 +787,7 @@
           context.restore();
       }
   }
   else if(browserFlag == "verification")
   {
   else if (browserFlag == "verification") {
      img = new Image();
      img.src = "";
      img.src = imgSrc;
@@ -898,8 +808,7 @@
           context.restore();
       }
   }
   else if(browserFlag == "clearForVerify" || browserFlag == "clearForRegister")
   {
   else if (browserFlag == "clearForVerify" || browserFlag == "clearForRegister") {
      img = new Image();
      img.src = "";
      img.src = base64FPImg;
@@ -909,12 +818,10 @@
         // 开始创建路径
         context.beginPath();
         // 画一个椭圆
         if(browserFlag == "clearForVerify")
         {
         if (browserFlag == "clearForVerify") {
            context.oval(91, 160, 112, 145);
         }
         else if(browserFlag == "clearForRegister")
         {
         else if (browserFlag == "clearForRegister") {
            context.oval(125, 142, 132, 165);
         }
         // 关闭路径
@@ -922,29 +829,24 @@
         // 剪切路径
         context.clip();
         //将图片画到画布上
         if(browserFlag == "clearForVerify")
         {
         if (browserFlag == "clearForVerify") {
            context.drawImage(img, 12, 54, 160, 213);
         }
           else if(browserFlag == "clearForRegister")
           {
         else if (browserFlag == "clearForRegister") {
              context.drawImage(img, 60, 60, 132, 165);
           }
         //调用restore最后一次存储的状态会被恢复
           context.restore();
       }
   }
   else if(browserFlag == "simple")
   {
   else if (browserFlag == "simple") {
      $("#showFPImageDiv").html("<img src="+imgSrc+" width='112' height='145' />");
   }
   else if(browserFlag == "verifySimple")
   {
   else if (browserFlag == "verifySimple") {
      $("#showSeachingDiv").show();
      $("#showSeachingDiv").html("&nbsp;&nbsp;<img src=\"/public/images/searching.gif\" width='20' height='20'/></br><label style='color:yellow;align:center;font-size: 14px;'>处理中...</label>");
   }
   else if(browserFlag == "clearForSimple")
   {
   else if (browserFlag == "clearForSimple") {
      $("#showFPImageDiv").html("");
   }
}
@@ -957,24 +859,19 @@
 * @param pointArray 坐标点数组
 * @param color 渲染颜色
 */
var renderHand = function(context, pointArray)
{
var renderHand = function (context, pointArray) {
   this.context = context;
   this.pointArray = pointArray;
   this.isClick = false;
   this.drawHand = function(color)
   {
   this.drawHand = function (color) {
      this.context.strokeStyle = color;
      this.context.lineWidth = 1;
      this.context.beginPath();
      for(var i=0; i<this.pointArray.length; i++)
      {
         if(i == 0)
         {
      for (var i = 0; i < this.pointArray.length; i++) {
         if (i == 0) {
            this.context.moveTo(this.pointArray[0].x, this.pointArray[0].y);
         }
         else
         {
         else {
            this.context.lineTo(this.pointArray[i].x, this.pointArray[i].y);
         }
      }
@@ -990,38 +887,31 @@
 * @param paramArray 存放国际化元素的数组
 * @param browserFlag 浏览器标记 simple:简易版本,表示是ie浏览器;html5:表示支持html5的浏览器
 */
function checkFPReader(context, paramArray, browserFlag)
{
   if(browserFlag == "html5")
   {
function checkFPReader(context, paramArray, browserFlag) {
   if (browserFlag == "html5") {
      $.ajax( {
         type : "GET",
         url : issOnlineUrl+"/fingerprint/beginCapture?type=1&FakeFunOn=0&random="+getRandomNum(),
         dataType : "json",
         async: false,
         //timeout:1000,
         success : function(result)
         {
         success: function (result) {
            //返回码
            var ret = null;
            ret = result.ret;
            //接口调用成功返回时
            if(ret == 0)
            {
            if (ret == 0) {
               //显示框--采集提示
               collectTips(context, paramArray[0], "html5");
            }
            else if(ret == -2001)
            {
            else if (ret == -2001) {
               //显示框--采集提示
               collectTips(context, paramArray[1], "html5");
            }
            else if(ret == -2002)
            {
            else if (ret == -2002) {
               getWebServerInfo(null, null, "1");
            }
            else if(ret == -2005)
            {
            else if (ret == -2005) {
               //显示框--采集提示
               collectTips(context, paramArray[3], "html5");
            }
@@ -1029,54 +919,45 @@
            //取消采集
            cancelRegister();
         },
         error : function(XMLHttpRequest, textStatus, errorThrown)
         {
         error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert("请安装指纹驱动或启动该服务!");
            //messageBox({messageType: "alert", title: "${common_prompt_title}", text: "${base_fp_connectPrompt}"});
          }
      });
   }
   else if(browserFlag == "simple")
   {
   else if (browserFlag == "simple") {
      //创建XDomainRequest实例,用于ie8和ie9跨域访问
      var xDomainRequest = new XDomainRequest();
      //如果xDomainRequest存在,则可以使用xDomainRequest函数,否则,说明不是ie浏览器
      if (xDomainRequest)
      {
      if (xDomainRequest) {
         xDomainRequest.open('GET', issOnlineUrl+"/fingerprint/beginCapture?type=1&FakeFunOn=0&random="+getRandomNum());  
         xDomainRequest.onload = function()
         {
         xDomainRequest.onload = function () {
            //获取接口返回值
            var resultData = xDomainRequest.responseText;
            //转化为json对象
            var obj = jQuery.parseJSON(resultData);
            //返回码
            var ret = null;
            if(obj != null && obj.ret != undefined)
            {
            if (obj != null && obj.ret != undefined) {
               ret = obj.ret;
            }
            //接口调用成功返回时
            if(ret == 0)
            {
            if (ret == 0) {
               //显示框--采集提示
               collectTips(null, paramArray[0], "simple");
            }
            else if(ret == -2001)
            {
            else if (ret == -2001) {
               //显示框--采集提示
               collectTips(null, paramArray[1], "simple");
            }
            else if(ret == -2002)
            {
            else if (ret == -2002) {
               getWebServerInfoForSimple(null, null, "1");
            }
            collectFlag = true;
            //取消采集
            cancelRegister();
         };  
         xDomainRequest.onerror = function()
         {
         xDomainRequest.onerror = function () {
            //用完后,将对象置为空
            xDomainRequest = null;
         };
@@ -1094,14 +975,11 @@
 * @param browserFlag 浏览器标记或比对验证标记 simple:简易版本,表示是ie浏览器;html5:表示支持html5的浏览器
 * --verification:指纹验证标记
 */
function collectTips(context, text, browserFlag)
{
   if(browserFlag == "simple")
   {
function collectTips(context, text, browserFlag) {
   if (browserFlag == "simple") {
      $("#showCollInfoDiv").html("<span style='color:rgb(122,193,66); font-size: 12px;word-break: break-all; word-wrap: break-word;'>"+text+"</span>");
   }
   else if(browserFlag == "html5")
   {
   else if (browserFlag == "html5") {
      context.fillStyle = bgColor;//bgColor;
      context.fillRect(205, 18, 240, 16);
      
@@ -1114,8 +992,7 @@
      context.textAlign = "end";
      context.fillText(text, 400, 30);
   }
   else if(browserFlag == "verification")
   {
   else if (browserFlag == "verification") {
      //#6BA5D7
      context.fillStyle = "#F3F5F0";//#6BA5D7
      context.fillRect(2, 8, 600, 30);
@@ -1148,8 +1025,7 @@
      autoWordBreak(context,text,canvasWidth,x);
      context.restore();
   }
   else if(browserFlag == "verifyForSimple")
   {
   else if (browserFlag == "verifyForSimple") {
      $("#showCollInfoDiv").html("<span style='color:yellow;align:center;font-size: 18px;word-break: break-all; word-wrap: break-word;'>"+text+"</span>");
   }
}
@@ -1161,39 +1037,34 @@
 * @param context 2d画布上下文
 * @param x,y,width,height 进度条底框的坐标和宽度、高度
 */
function drawProgressBar(context, collCount)
{
function drawProgressBar(context, collCount) {
   var x = 300;
   var y = 60;
   var width = 90;
   var height = 20;
   context.fillStyle = bgColor;
   context.fillRect(x, y, width, height);
   if(collCount == 0)
   {
   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)
   {
   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)
   {
   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)
   {
   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);
@@ -1209,19 +1080,15 @@
 * @param fingerIdArray 存放手指编号的数组
 * @return 返回boolean值 true:num包含在fingerIdArray中;false:没有包含
 */
function isContains(fingerIdArray, num)
{
function isContains(fingerIdArray, num) {
   var fingerId;
   var isCollected = false;
   for(var j=0; j<fingerIdArray.length; j++)
   {
   for (var j = 0; j < fingerIdArray.length; j++) {
      fingerId = eval(fingerIdArray[j]);
      if(fingerId >= DURESS_FINGER_NUM)
      {
      if (fingerId >= DURESS_FINGER_NUM) {
         fingerId = fingerId -DURESS_FINGER_NUM;
      }
      if(fingerId == num)
      {
      if (fingerId == num) {
         isCollected = true;
      }
   }
@@ -1233,18 +1100,14 @@
 * @author wenxin
 * @create 2013-09-05 15:15:11 pm
 */
function clearFPImage(context, browserFlag)
{
   if(browserFlag == "verification")
   {
function clearFPImage(context, browserFlag) {
   if (browserFlag == "verification") {
//      showImage(context, "${base}/base/images/base_fpVerify_clearImage.png", "clearForVerify");
   }
   else if(browserFlag == "register")
   {
   else if (browserFlag == "register") {
      showImage(context, "image/base_fpVerify_clearImage.png", "clearForRegister");
   }
   else if(browserFlag == "verifyForSimple" || browserFlag == "registerForSimple")
   {
   else if (browserFlag == "verifyForSimple" || browserFlag == "registerForSimple") {
      showImage(null, "", "clearForSimple");
   }
}
@@ -1256,8 +1119,7 @@
 * @param paramArray 存放国际化元素的数组
 * @param flag 判断是登记和验证标记 register:登记;verification:验证
 */
function getFPTemplate(paramArray, flag)
{
function getFPTemplate(paramArray, flag) {
   var fpTemplate = "";
   var collectSuccessFlag = false;
   $.ajax( {
@@ -1265,70 +1127,61 @@
      url : issOnlineUrl+"/fingerprint/getTemplate?random="+getRandomNum(),
      dataType : "json",
      async: false,
      success : function(result)
      {
      success: function (result) {
         //返回码
         var ret = null;
         ret = result.ret;
         if(ret == 0)
         {
         if (ret == 0) {
            fpTemplate = result.data.template;
            console.log('fpTemplate', fpTemplate)
            window.top.postMessage({
               fingerCode: result.data.template,
            });
         }
         //成功
         if(ret == 0)
         {
         if (ret == 0) {
            collectSuccessFlag = true;
            if(flag == "register")
            {
            if (flag == "register") {
               //判断手指是否已经采集指纹
               var compareRet = "";
               //如果前面已经录入指纹
               if(templateDataArray.length > 0)
               {
               if (templateDataArray.length > 0) {
                  //发送请求,进行后台指纹比对yls
                  //compareRet = fpComparision(fpTemplate, templateDataArray, paramArray[3]);
               }
               if($.trim(compareRet) == "dllNotExist")
               {
               if ($.trim(compareRet) == "dllNotExist") {
                  //采集完指纹,渲染手指
                  renderAfterColl(globalContext, fpIdNum, bgColor, false);//bgColor判断
                  //显示框--采集提示
                  collectTips(globalContext, "动态库加载失败", "html5");
               }
               else
               {
                  if(compareRet == "noFingerServer")
                  {
               else {
                  if (compareRet == "noFingerServer") {
                     //采集完指纹,渲染手指
                     renderAfterColl(globalContext, fpIdNum, bgColor, false);//bgColor判断
                     //显示框--采集提示
                     collectTips(globalContext, "未启动比对服务", "html5");
                  }
                  else
                  {
                  else {
                     //此手指未采集指纹
                     if(compareRet != "ok")
                     {
                     if (compareRet != "ok") {
                        //采集完指纹,渲染手指
                        renderAfterColl(globalContext, fpIdNum, bgColor, true);//bgColor判断
                        //显示框--采集提示
                        collectTips(globalContext, paramArray[0], "html5");
                        //胁迫指纹
                        if(duressFingerFlag)
                        {
                        if (duressFingerFlag) {
                           //将手指标记保存到数组中
                           fingerIdArray[fingerIdArray.length] = fpIdNum + DURESS_FINGER_NUM;
                        }
                        else
                        {
                        else {
                           //将手指标记保存到数组中
                           fingerIdArray[fingerIdArray.length] = fpIdNum;
                        }
                        //将指纹模板保存到数组中
                        templateDataArray[templateDataArray.length] = fpTemplate;
                     }
                     else
                     {
                     else {
                        //采集完指纹,渲染手指
                        renderAfterColl(globalContext, fpIdNum, bgColor, false);//bgColor判断
                        //Please don't repeat input fingerprint!
@@ -1338,23 +1191,20 @@
                  }
               }
            }
            else if(flag == "verification")
            {
            else if (flag == "verification") {
               verifyFlag = false;
               //指纹比对
               fpComparison(fpTemplate);
            }
         }
         else if(ret == -2003)
         {
         else if (ret == -2003) {
            //采集完指纹,渲染手指
            renderAfterColl(globalContext, fpIdNum, bgColor, false);
            //显示框--采集提示
            collectTips(globalContext, paramArray[1], "html5");
         }
      },
      error : function(XMLHttpRequest, textStatus, errorThrown)
      {
      error: function (XMLHttpRequest, textStatus, errorThrown) {
         alert(paramArray[3]);
         //messageBox({messageType: "alert", title: "${common_prompt_title}", text: paramArray[3]});
       }
@@ -1370,8 +1220,7 @@
 * @param templateArray 指纹模板数组
 * @param errorMsg ajax请求报错,错误信息
 */
function fpComparision(fpTemplate, templateArray, errorMsg)
{
function fpComparision(fpTemplate, templateArray, errorMsg) {
   var ret = "";
   var templates = templateArray.toString();
   console.log('fpTemplate',fpTemplate)
@@ -1386,23 +1235,18 @@
      data : "verifyTemplate="+fpTemplate+"&templates="+templates,
      dataType : "json",
      async: false,
      success : function(result)
      {
         if(result.ret == "ok")
         {
      success: function (result) {
         if (result.ret == "ok") {
            ret = "ok";
         }
         if(result.msg == "noFingerServer")
         {
         if (result.msg == "noFingerServer") {
            ret = "noFingerServer";
         }
         if(result.msg == "dllNotExist")
         {
         if (result.msg == "dllNotExist") {
            ret = "dllNotExist";
         }
      },
      error : function(XMLHttpRequest, textStatus, errorThrown)
      {
      error: function (XMLHttpRequest, textStatus, errorThrown) {
         alert("服务器处理数据失败,请重试!错误码:");
         //messageBox({messageType: "alert", title: "${common_prompt_title}", text: "${common_prompt_serverError}"});
       }
@@ -1419,8 +1263,7 @@
 * @param fillColor 采集完后填充颜色
 * @param successOrNot 采集是否成功--布尔值 true:采集成功;false:采集失败
 */
function renderAfterColl(context, num, fillColor, successOrNot)
{
function renderAfterColl(context, num, fillColor, successOrNot) {
   var canvas="";
   if(isComp){
      canvas = document.getElementById("canvasComp");
@@ -1432,35 +1275,29 @@
   //初始化起始坐标,并返回json格式数据 
   var coordJson = initCoordJson();
   //进来页面,点击删除
   if(num == null)
   {
   if (num == null) {
      num = fpIdNum;
   }
   //点击的手指编号和json中num相等
   if(coordJson[num].num == num)
   {
   if (coordJson[num].num == num) {
      //初始化坐标数组和绘画手指
      initCoordAndDrawFinger(context, coordArray, coordJson[num].coord.x, coordJson[num].coord.y, num);
   }
   
   //采集成功,填充颜色(红、绿)
   if(successOrNot)
   {
      if(duressFingerFlag)
      {
   if (successOrNot) {
      if (duressFingerFlag) {
         localContext.fillStyle = "red";//fillColor
         localContext.fill();
         fpModifyFlag = true;
      }
      else
      {
      else {
         localContext.fillStyle = "rgb(122,193,66)";//fillColor
         localContext.fill();
         fpModifyFlag = true;
      }
   }
   else
   {
   else {
      //采集失败,填充背景色--消除颜色(黄)
      localContext.fillStyle = fillColor;
      localContext.fill();
@@ -1476,8 +1313,7 @@
 * @param x,y 绘画当前手指的起始坐标
 * @param num 手指标记
 */
function initCoordAndDrawFinger(context, coordArray, x, y, num)
{
function initCoordAndDrawFinger(context, coordArray, x, y, num) {
   coordArray = initCoordArray(coordArray, x, y, num);
   new renderFinger(context, coordArray).drawFinger(strokeStyle, fingerBorderColor);
}
@@ -1488,12 +1324,9 @@
 * @create 2013-05-15 17:21:13 pm
 * @param "${base_fp_save}":确认保存当前修改吗?
 */
function cancelEvent(saveText, fpCountText)
{
   if(!fpModifyFlag)
   {
      if(collectFlag)
      {
function cancelEvent(saveText, fpCountText) {
   if (!fpModifyFlag) {
      if (collectFlag) {
         //取消采集
         cancelRegister();
         //将定时器的递归调用关闭
@@ -1502,8 +1335,7 @@
      //closeWindow();
      close();
   }
   else
   {
   else {
      var flag=confirm(saveText);
      if(flag){
         saveFPData(flag, fpCountText);
@@ -1524,24 +1356,20 @@
 * @param fpCount 指纹数国际化内容
 * @param ${pers_person_templateCount}:指纹数
 */
var saveFPData = function(result, fpCount)
{
   if(collectFlag)
   {
var saveFPData = function (result, fpCount) {
   if (collectFlag) {
      //取消采集
      cancelRegister();
      //将定时器的递归调用关闭
      clearTimeout(timer);
   }
   if(result)
   {
   if (result) {
      storeDataToHtml();
      showFPCount(fpCount);
      //closeWindow();
      close();
   }
   else
   {
   else {
      clearImageData();
      //closeWindow();
      close();
@@ -1553,15 +1381,12 @@
 * @author wenxin
 * @create 2013-04-22 21:26:31 pm
 */
function showFPCount(text)
{
function showFPCount(text) {
   var fingerId = $("#fingerId").val();
   if($.trim(fingerId) == "")
   {
   if ($.trim(fingerId) == "") {
      $("#fpCountMessage").text(text + " " + 0);
   }
   else
   {
   else {
      fingerId = fingerId.substr(1, fingerId.length - 2);
      var fingerIdArray = new Array();
      fingerIdArray = fingerId.split(",");
@@ -1574,25 +1399,20 @@
 * @author wenxin
 * @create 2013-05-24 16:12:21 pm
 */
function storeDataToHtml()
{
function storeDataToHtml() {
   //没有手指标记数据
   if(fingerIdArray.length == 0)
   {
   if (fingerIdArray.length == 0) {
      $("#fingerId").val(" ");
   }
   else
   {
   else {
      //将手指标记数据保存到页面
      $("#fingerId").val("["+fingerIdArray.toString()+"]");
   }
   //没有指纹模板数据
   if(templateDataArray.length == 0)
   {
   if (templateDataArray.length == 0) {
      $("#fingerTemplate10").val(" ");
   }
   else
   {
   else {
      //将指纹模板数据保存到页面
      $("#fingerTemplate10").val("["+templateDataArray.toString()+"]");
   }
@@ -1615,30 +1435,23 @@
 * @param context 2d画布上下文
 * @param browserFlag 浏览器标记 simple:简易版本,表示是ie浏览器;html5:表示支持html5的浏览器
 */
var delFPData = function(result, context, browserFlag)
{
var delFPData = function (result, context, browserFlag) {
   var fingerId;
   if(result)
   {
   if (result) {
      //将数组中的指定元素删除
      for(var i=0; i<fingerIdArray.length; i++)
      {
      for (var i = 0; i < fingerIdArray.length; i++) {
         fingerId = eval(fingerIdArray[i]);
         if(fingerId >= DURESS_FINGER_NUM)
         {
         if (fingerId >= DURESS_FINGER_NUM) {
            fingerId = fingerId - DURESS_FINGER_NUM;
            if(fingerId == fpIdNum)
            {
            if (fingerId == fpIdNum) {
               //fingerIdArray.remove(i);
               //templateDataArray.remove(i);
               removeItem(fingerIdArray, i);
               removeItem(templateDataArray, i);
            }
         }
         else
         {
            if(fingerId == fpIdNum)
            {
         else {
            if (fingerId == fpIdNum) {
               //fingerIdArray.remove(i);
               //templateDataArray.remove(i);
               removeItem(fingerIdArray, i);
@@ -1646,17 +1459,14 @@
            }
         }
      }
      if(browserFlag == "simple")
      {
      if (browserFlag == "simple") {
         document.getElementById("finger" + fingerId).checked = false;
      }
      else if(browserFlag == "html5")
      {
      else if (browserFlag == "html5") {
         //将手指颜色改变--重画时也要判断
         context.fillStyle = bgColor;
         context.fill();
         if(lastFPIdNum != null && lastFPIdNum != lastFPIdNum)
         {
         if (lastFPIdNum != null && lastFPIdNum != lastFPIdNum) {
            //消除原来手指的颜色
            renderAfterColl(globalContext, lastFPIdNum, bgColor, false);
         }
@@ -1667,15 +1477,12 @@
      $("#duressFinger").attr("disabled", false);
      $("#submitButtonId").attr("disabled", false);
   }
   else
   {
      if(browserFlag == "simple")
      {
   else {
      if (browserFlag == "simple") {
         document.getElementById("finger" + fpIdNum).checked = true
         collectFlag = true;
      }
      else if(browserFlag == "html5")
      {
      else if (browserFlag == "html5") {
         //消除原来手指的颜色--有问题,如果原来手指和现在的一样,有问题
         //renderAfterColl(globalContext, lastFPIdNum, bgColor, false);
      }
@@ -1688,8 +1495,7 @@
 * @create 2013-05-15 11:11:31 am
 * @param dx 要删除元素的下标
 */
function removeItem(array, dx)
{
function removeItem(array, dx) {
   array.splice(dx, 1);
}
@@ -1701,14 +1507,14 @@
 * @param isDriverInstall 是否安装了驱动
 * @param downloadPrompt 提示安装驱动国际化内容
 */
function fpVerification(title, downloadPrompt, isDriverInstall,context)
{
{/* <div id="comparison" style="display: inline"
      onclick='fpVerification("指纹比对","请安装指纹驱动或启动服务",true,globalContext)'>比对</div>
   <div></div> */}
function fpVerification(title, downloadPrompt, isDriverInstall, context) {
   //安装驱动
   if(isDriverInstall)
   {
   if (isDriverInstall) {
      //支持html5
      if(typeof(Worker) != "undefined")
      {
      if (typeof (Worker) != "undefined") {
         //createWindow('base_baseFPVerify.do?random=' + getRandomNum() + '^0^0^465^320^'+title);
         var comparisonDiv=document.getElementById("comparisonDiv");
          var bg=document.getElementById("bg");
@@ -1724,15 +1530,13 @@
          //关闭页面前,取消采集
         //cancelCaptureBeforeClose("html5");
      }
      else
      {
      else {
         createWindow('base_baseFPVerifySimple.do?random=' + getRandomNum() + '^0^0^465^320^' + title);
          //关闭页面前,取消采集
         //cancelCaptureBeforeClose("simple");
      }
   }
   else
   {
   else {
      alert(downloadPrompt);
      //messageBox({messageType: "alert", title: "提示", text: downloadPrompt});
   }
@@ -1752,17 +1556,14 @@
   context.clear();
   var rownum = CWidth / 10;
   var len = strlen(text);
   if (rownum > len)
   {
   if (rownum > len) {
      context.fillText(text, x, 30);
   }
   else
   {
   else {
      var endInd = rownum<text.length?rownum:text.length;
      var beginInd = 0;
      var endTemp=0;
      for (var i = 0; i <= text.length / rownum; i++)
      {
      for (var i = 0; i <= text.length / rownum; i++) {
         endTemp = text.substr(beginInd, endInd).lastIndexOf(" ");
         if(endTemp!=-1)
            endInd=beginInd+endTemp;
@@ -1797,25 +1598,20 @@
    * @create 2013-06-24 19:57:11 pm
    * @param browserFlag 浏览器标记 simple:简易版本,表示是ie浏览器;html5:表示支持html5的浏览器
    */
   function cancelCaptureBeforeClose(browserFlag)
   {
function cancelCaptureBeforeClose(browserFlag) {
       //关闭页面时,监听关闭的onclick事件
      getCurrentWindow().button("close").attachEvent("onClick", function()
      {
   getCurrentWindow().button("close").attachEvent("onClick", function () {
         clearTimeout(verifyTimer);
         if(browserFlag == "html5")
         {
      if (browserFlag == "html5") {
            //正在进行验证,还没有关闭指纹采集
            if(verifyFlag)
            {
         if (verifyFlag) {
               //取消采集
               cancelCapture();
            }
            //关闭页面
            closeWindow();
         }
         else if(browserFlag == "simple")
         {
      else if (browserFlag == "simple") {
            //alert("cancel capture before close window!");
            //将定时器的递归调用关闭
            clearTimeout(timer);
@@ -1832,8 +1628,7 @@
    * @author wenxin
    * @create 2013-08-05 15:19:11 pm
    */
   function formSubmit(id)
   {
function formSubmit(id) {
      
      $('#'+id).serialize();
      $('#'+id).ajaxForm(function(data){