/*
要使用 DoAddCert 函数,必须在web.Config 中加入配置项 <add key="CertCustomUpload" value="True"/> 允许客户端上传证书信息

如果引用此脚本的页面不是位于根目录，请在调用函数之前修改 CertRelativeDir 变量的值为相对目录
例如 DotNetOA\Source\MrWorks 的页面这样调用:
 ...
 CertRelativeDir="../../"; 
 DoGetCertStatus("certhash");
 ...
*/
var CertRelativeDir="./";
var CertAjaxServer= "Source/MrCertManager/Cert_AjaxServer.aspx";

function DoCreateXmlHttpRequest()
{
		var xmlHttpObj = null;
		if (window.ActiveXObject)
		{
			try
			{
				xmlHttpObj = new ActiveXObject("Msxml2.XMLHTTP")
			}
			catch(e)
			{
				try
				{
					xmlHttpObj = new ActiveXObject("Microsoft.XMLHTTP")
				}
				catch(e2)
				{
				}
			}
		}
		else if (window.XMLHttpRequest)
		{
			xmlHttpObj = new XMLHttpRequest();
		}
		return xmlHttpObj;
}

function Do_escape(charString)
{
	 return escape(charString).replace(/\+/g, "%2B");
}

function ByteLength(AString) 
{
  var cArr = AString.match(/[^\x00-\xff]/ig);
  return AString.length + (cArr == null ? 0 : cArr.length);
}

function DoXmlHttpPostData(AUrl, data)
{
	var xmlHttpObj = DoCreateXmlHttpRequest();
	if (xmlHttpObj)
	{
		xmlHttpObj.open("POST", AUrl, false);
    xmlHttpObj.setrequestheader("content-length",ByteLength(data)); 
    xmlHttpObj.setrequestheader("content-type","application/x-www-form-urlencoded");		
		xmlHttpObj.send(data);
		return xmlHttpObj.responseText;
	}
}

function DoXmlHttpGetStr(AUrl)
{
		var xmlHttpObj = DoCreateXmlHttpRequest();
		if (xmlHttpObj)
		{
			xmlHttpObj.open("GET", AUrl, false);
			xmlHttpObj.send("get");
			return xmlHttpObj.responseText;
		}
		else
		{
			return "";
		}
}

function DoAddCert(vCertInfo, Use4Login, Use4Encrypt, Use4DigiSign, Desc, Purpose,UserID, FindCertUser) 
{
  var s=CertRelativeDir.toUpperCase();
  if(s.substr(0,7)=="HTTP://" && s.substr(0,17)!="HTTP://LOCALHOST:"  && s.substr(0,17)!="HTTP://LOCALHOST/"){return;}
  var CertInfo = vCertInfo.toArray();
  var Url,data,sRet;
  Url= CertRelativeDir + CertAjaxServer  
  //url="Http://192.168.0.23/Source/MrCertManager/Cert_AjaxServer.aspx";
  data = "func=AddCert";
  data = data + "&CERTHASH=" +  CertInfo[11];
  data = data + "&CERTTYPE=" + CertInfo[9];
  data = data + "&TIMESTART=" + CertInfo[7];
  data = data + "&TIMEEND=" + CertInfo[8];
  data = data + "&DISPLAYNAME=" + Do_escape(CertInfo[3]);
  data = data + "&ISSUERNAME=" + Do_escape(CertInfo[5]);
  data = data + "&SN=" + CertInfo[4];
  data = data + "&CUSTOMITEMNAME="+CertInfo[10];
  data = data + "&CUSTOMITEMVALUE="+CertInfo[6];  
  data = data + "&USE4LOGIN="+Use4Login;
  data = data + "&USE4ENCRYPT="+Use4Encrypt;
  data = data + "&USE4DIGISIGN="+Use4DigiSign;
  data = data + "&USE4DIGISIGN="+Use4DigiSign;  
  data = data + "&DESC=" + Do_escape(Desc);
  data = data + "&PURPOSE="+Purpose;
  data = data + "&FINDCERTUSER="+FindCertUser;   
  data = data + "&USERUID="+UserID;   
  data = data + "&CERTCONTENT=" + Do_escape(CertInfo[1]);
  sRet = DoXmlHttpPostData(Url, data);
  return sRet;
}

function DoAddCertOther(vCertInfo, Desc) 
{
  return DoAddCert(vCertInfo, 0, 0, 0, Desc, 1, 0, 0);
}

function DoAddCertOther2(vCertInfo, Use4Login, Use4Encrypt, Use4DigiSign, Desc) 
{
  return DoAddCert(vCertInfo, Use4Login, Use4Encrypt, Use4DigiSign, Desc, 1, 0, 0);
}

function DoGetCertStatus(CertHash)
{
	var s=CertRelativeDir.toUpperCase();
	if(s.substr(0,7)=="HTTP://" && s.substr(0,17)!="HTTP://LOCALHOST:"  && s.substr(0,17)!="HTTP://LOCALHOST/"){return;}

	//返回字符串1111111 charAt(0):是否存在，1:是否梦龙证书，2:是否其他证书，3:是否被禁用，
	//4:是否用于身份验证，5:是否用于电子签名，6:是否用于数据加密，7:是否在有效期内
	//以 "-" 开始则返回错误	
  var Url,data,sRet;
  Url = CertRelativeDir + CertAjaxServer;  
  data = "func=GetCertStatus";
  data = data + "&CERTHASH=" + CertHash;
  sRet = DoXmlHttpPostData(Url, data);  
  return sRet;
}

function DoGetCertExists(CertHash)
{
  var sRet = DoGetCertStatus(CertHash)
  if(sRet.length>0&&sRet.charAt(0)!="-")
  {
  	return (sRet.charAt(0)=="1");
  }
  else
  {
    return false;
  }
}