  /**********************************************************************
   **                           文件说明:                               **
   **                         secmail.util.js                          **
   **                      只用于给第三方调用接口（工具包）                     **
   *********************************************************************/

  /***********************************
  **   查询控件状态是否安装              **
  **   返回true为安装                   **
  **   返回false为示安装                **
  ************************************/ 
function GTIsActiveXReady()
{
	try{
		var objUtil = gtpwin.safewebmail.factory;
		if ('undefined' != typeof(objUtil))
		{
		    return true;
		}
		else
		{
			return false;
		}
	}
	catch(ex)
	{
		return false;
	}
}

  /***********************************
  **   查询KEY状态是否插入              **
  **   返回true为存在                   **
  **   返回false为不存在                **
  ************************************/
  
  function GTIsInsertUsbKey()
  {
      if(GTIsActiveXReady){
	      try{
	          var objUtil = gtpwin.safewebmail.factory;
			  var arrayVariants = objUtil.GetDevicesInfo(0);
			  if('undefined' != typeof(arrayVariants))
			  {
			       return true;
			  }
			  else
			  {
			       return false;
			  }
	       }
	       catch (ex)
	       {
	                return false;
	       }
      }
      else
      {
         return false;
      }
   }
   
  /***********************************
  **       异常处理返回提示信息          **
  ************************************/
  
   function GTGetErrorMessage(errorCode)
   {
       var errorTxt;
	   switch(errorCode)
	   {
			case -2146828284:
			    errorTxt = '流指针参数类型错误!';
			    break;
			case -2146828284:
			    errorTxt = '传入空指针给要求非空指针参数!';
			    break;
			case -2146828284:
			    errorTxt = '传入空值给要求非空值参数!';
			    break;
			case -2146828284:
			    errorTxt = '传入参数数据类型不正确!';
			    break;
			case -2146828031:
			    errorTxt = '指定的文件不存在!';
			    break;
			case -2146828030:
			    errorTxt = '不能创建或打开指定文件!';
			    break;
			case -2146828029:
			    errorTxt = '没有操作权限!';
			    break;
			case -2146828028:
			    errorTxt = '流读操作错误!';
			    break;
			case -2146828027:
			    errorTxt = '流写操作错误!';
			    break;
			case -2146828026:
			    errorTxt = '流转换错误!';
			    break;
			case -2146828025:
			    errorTxt = '文件流句柄为空!';
			    break;
			case -2146828024:
			    errorTxt = '被破坏的文件!';
			    break;
			case -2146827775:
			    errorTxt = '接口或重要类指针值为空!';
			    break;
			case -2146827774:
			    errorTxt = '接口或重要类创建失败!';
			    break;
			case -2146827773:
			    errorTxt = '内存不足够!';
			    break;
			case -2146827772:
			    errorTxt = '用户取消!';
			    break;
			case -2146827771:
			    errorTxt = '底层库调用崩溃!';
			    break;
			case -2146827770:
			    errorTxt = '缓冲过小!';
			    break;
			case -2146827769:
			    errorTxt = '无效的密码引擎!';
			    break;
			case -2146827768:
			    errorTxt = '密码口令或设备PIN码错误!';
			    break;
			case -2146827767:
			    errorTxt = '不合法的消息或信息被修改或格式错误!';
			    break;
			case -2146827766:
			    errorTxt = '无效的时间数据，可能您的私钥已过期!';
			    break;
			case -2146827765:
			    errorTxt = '值未设置!';
			    break;
			case -2146827764:
			    errorTxt = '值已经被设置!';
			    break;
			case -2146827763:
			    errorTxt = '无效的属性!';
			    break;
			case -2146827762:
			    errorTxt = 'WINDOWS CSP 操作失败!';
			    break;
			case -2146827761:
			    errorTxt = '二进制编码错误!';
			    break;
			case -2146827760:
			    errorTxt = '二进制解码错误!';
			    break;
			case -2146827759:
			    errorTxt = '编码错误!';
			    break;
			case -2146827519:
			    errorTxt = '数字信套太大!';
			    break;
			case -2146827218:
			    errorTxt = '没有主题、正文与附件的空邮件!';
			    break;
			case -2146827217:
			    errorTxt = '非加密或签名数据!';
			    break;
			case -2146827216:
			    errorTxt = 'EMail地址格式错误!';
			    break;
			case -2146827215:
			    errorTxt = '没有发件人!';
			    break;
			case -2146827214:
			    errorTxt = '发件人有多个!';
			    break;
			case -2146827213:
			    errorTxt = '没有收件人!';
			    break;
			case -2146827263:
			    errorTxt = '密码设备不支持的操作!';
			    break;
			case -2146827262:
			    errorTxt = '密码设备被拔出!';
			    break;
			case -2146827261:
			    errorTxt = '找不到指定的设备!';
			    break;
			case -2146827260:
			    errorTxt = '未知设备类型!';
			    break;
			case -2146827259:
			    errorTxt = '私钥文件中不包含有效信息,如没有绑定任何标识!';
			    break;
			case -2146827258:
			    errorTxt = '设备操作失败!';
			    break;
			case -2146827257:
			    errorTxt = '容器已经存在!';
			    break;
			case -2146827256:
			    errorTxt = '设备已满!';
			    break;
			case -2146827255:
			    errorTxt = '设备被锁定!';
			    break;
			case -2146827254:
			    errorTxt = '无效的设备参数!';
			    break;
			case -2148140309:
			    errorTxt = '找不到要求的IBC系统参数!';
			    break;
			case -2148140308:
			    errorTxt = '未指定用户数字证书!';
			    break;
			case -2148140307:
			    errorTxt = '找不到用户指定的数字证书!';
			    break;
			case -2148140306:
			    errorTxt = '同标识的私钥已加载且更有效!';
			    break;
			case -2148140305:
			    errorTxt = '私钥文件类型不支持!';
			    break;
			case -2148140304:
			    errorTxt = '找不到指定的私钥!';
			    break;
			case -2148140303:
			    errorTxt = '未指定指定标识的私钥!';
			    break;
			case -2148140302:
			    errorTxt = '指定的私钥标识与要求的私钥标识不符!';
			    break;
			case -2148140301:
			    errorTxt = '激活时网络失败!';
			    break;
			case -2148140300:
			    errorTxt = '用户指定的数字证书包含私钥需要密码!';
			    break;
			case -2148140299:
			    errorTxt = '无效的IBC系统参数!';
			    break;
			case -2148140298:
			    errorTxt = 'IBC系统参数生成错误!';
			    break;
			case -2148140297:
			    errorTxt = '无效的IBC系统参数属性!';
			    break;
			case -2148140296:
			    errorTxt = '加载证书失败!';
			    break;
			case -2148140295:
			    errorTxt = '无效的证书!';
			    break;
			case -2148140294:
			    errorTxt = '无效的公钥!';
			    break;
			case -2148140293:
			    errorTxt = '无效的公钥属性!';
			    break;
			case -2148140292:
			    errorTxt = '无效的私钥!';
			    break;
			case -2148140291:
			    errorTxt = '无效的私钥属性!';
			    break;
			case -2148140290:
			    errorTxt = '加载私钥错误!';
			    break;
			case -2148140289:
			    errorTxt = '激活失败!';
			    break;
			case -2146826751:
			    errorTxt = '签名人列表为空!';
			    break;
			case -2146826750:
			    errorTxt = '接收人列表为空!';
			    break;
			case -2146826749:
			    errorTxt = '没有找到指定的标识!';
			    break;
			case -2146826748:
			    errorTxt = '从接收人列表中删除发件人自身!';
			    break;
			case -2146826747:
			    errorTxt = '从接收人列表中删除必须的标识(邮件接收人)!';
			    break;
			case -2146826746:
			    errorTxt = '数据内容为空!';
			    break;
			case -2146826745:
			    errorTxt = '底层库不读也不写错误!';
			    break;
			case -2146826744:
			    errorTxt = '不支持的密码操作!';
			    break;
			case -2146826743:
			    errorTxt = '任务已经开始执行!';
			    break;
			case -2146826742:
			    errorTxt = '任务没有找到';
			    break;
			case -2146826741:
			    errorTxt = '任务无法启动!';
			    break;
			case -2146826740:
			    errorTxt = '不是有效的数字信封!';
			    break;
			case -2146826739:
			    errorTxt = '数字信封签名验证失败，不能使用!';
			    break;
			case -2146826738:
			    errorTxt = '缺少或无效的标识信息!';
			    break;
			case -2146826737:
			    errorTxt = '无效的标识属性或计数!';
			    break;
			case -2146826736:
			    errorTxt = '无效的标识列表!';
			    break;
			case -2146826735:
			    errorTxt = '无效的PKCS7对象!';
			    break;
			case -2146826734:
			    errorTxt = '无效的PKCS7对象属性!';
			    break;
			case -2146826733:
			    errorTxt = 'PKCS7编码错误!';
			    break;
			case -2146826732:
			    errorTxt = 'PKCS7解码错误!';
			    break;
			case -2146826731:
			    errorTxt = '签名失败!';
			    break;
			case -2146826730:
			    errorTxt = '验证签名失败!';
			    break;
			case -2146826729:
			    errorTxt = '验证失败!';
			    break;
			case -2146826728:
			    errorTxt = '加密会话密钥错误!';
			    break;
			case -2146826727:
			    errorTxt = '解密会话密钥错误!';
			    break;
			case -2146826726:
			    errorTxt = '错误的密钥类型';
			    break;
			case -2146826725:
			    errorTxt = '算法内部错误!';
			    break;
			case -2146826724:
			    errorTxt = '错误的密钥分散数据!';
			    break;
			case -2146826723:
			    errorTxt = 'Shamir秘密恢复操作失败!';
			    break;
			case -2146826722:
			    errorTxt = '需要更多的处理数据!';
			    break;
			case -2146826495:
			    errorTxt = '无效的策略!';
			    break;
			case -2146826494:
			    errorTxt = '策略私钥请求内部错误!';
			    break;
			case -2146826493:
			    errorTxt = '策略未满足!';
			    break;
			case -2146762753:
			    errorTxt = '未知错误!';
			    break;
		   default:
		        errorTxt = '';
		        break;
		   }
		   return errorTxt;
   }

