var CAPICOM_LOCAL_MACHINE_STORE = 1;
var CAPICOM_CURRENT_USER_STORE = 2;
var CAPICOM_STORE_OPEN_READ_ONLY = 0;
var CAPICOM_STORE_OPEN_READ_WRITE = 1;
var CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;
var CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;
var CAPICOM_CERTIFICATE_FIND_ISSUER_NAME = 2;
var Certificates;

function IsCAPICOMInstalled()
{	
	if(typeof(oCAPICOM)=="object"){
		if(oCAPICOM.object!=null)
			return true;
		else
			return false;
	}
	else
		return false;
}

function FindMenCert(certs)
{
	
	var FoundCertificates=new ActiveXObject("CAPICOM.Certificate");

	if (IsCAPICOMInstalled() != true){
		alert("CAPICOM没有安装");
		return FoundCertificates;
	}

	var MyStore = new ActiveXObject("CAPICOM.Store");

	var iDisplayCount = 0;

	try
	{
		MyStore.Open(CAPICOM_CURRENT_USER_STORE, "My", CAPICOM_STORE_OPEN_READ_WRITE);
	}
	catch (e)
	{
		//document.all.alertxt.innerHTM="打开'MY'证书容器失败！";
		return false;
	}

  var found=false;
	for(var i=1;i<MyStore.Certificates.Count+1;i++)
	{
		FoundCertificates=MyStore.Certificates.Item(i);

		if(FoundCertificates.IssuerName=="C=CN, S=Beijing, L=Beijing City, O=Beijing Itownet Cyber Technology Ltd., OU=Information Security Department, CN=Itownet CA")
		{
			
			if(certs==FoundCertificates.SerialNumber)
			{
				found=true;
		 		 break;
				
			}
			
		}
	}
	
	if(found==true)
	{
	
		document.all.txt.value=FoundCertificates.SerialNumber;
		document.all.cerfd.value=FoundCertificates.Export(0);	
		
		return true;
	}
	else
	{

		//document.all.alertxt.innerHTM="请确认EKEY状态正常";
		return false;
	}		
	MyStore = null;
return true;
}
function FindselectCert()
{
	var FoundCertificates=new ActiveXObject("CAPICOM.Certificate");

	if (IsCAPICOMInstalled() != true){
		alert("CAPICOM没有安装");
		return FoundCertificates;
	}

	var MyStore = new ActiveXObject("CAPICOM.Store");

	var iDisplayCount = 0;

	try
	{
		MyStore.Open(CAPICOM_CURRENT_USER_STORE, "My", CAPICOM_STORE_OPEN_READ_WRITE);
	}
	catch (e)
	{
		//document.all.alertxt.innerHTM="打开'MY'证书容器失败！";
		alert("打开'MY'证书容器失败！");
		return false;
	}

  var found=false;
	for(var i=1;i<MyStore.Certificates.Count+1;i++)
	{
		FoundCertificates=MyStore.Certificates.Item(i);

		if(FoundCertificates.IssuerName=="C=CN, S=Beijing, L=Beijing City, O=Beijing Itownet Cyber Technology Ltd., OU=Information Security Department, CN=Itownet CA")
		{
			found=true;
		  break;
		}
	}
	
	if(found==true)
	{
		document.all.allCerts.value=FoundCertificates.SerialNumber;
		document.all.cerfd.value=FoundCertificates.Export(0);
		while(document.all.item("allCerts").options.length>1)
		document.all.item("allCerts").options.remove(1)
	//alert("aa");
	//alert(MyStore.Certificates.count);
	if (MyStore.Certificates.count==0){
		alert("机器中没有由 '"+issuer+"' 颁发的证书");
		return;
	}
		var i;
	for (i=1;i<=MyStore.Certificates.Count;i++){
		var curCertOption=document.createElement("OPTION");
		var certCNName=GetDNAttribute(MyStore.Certificates(i).subjectName,"CN");
		curCertOption.text= certCNName;
		curCertOption.value=i-1;
		curCertOption.selected=false;
		document.all.item("allCerts").add(curCertOption);
	}
	}
	else
	{
		alert("请确认EKEY状态正常");
		//document.all.alertxt.innerHTM="请确认EKEY状态正常";
		return false;
	}		
	MyStore = null;
return true;
}
function OnSelectCert2(selectObjectName,serialObjectName)
{
	var MyStore = new ActiveXObject("CAPICOM.Store");
	try
	{
		MyStore.Open(CAPICOM_CURRENT_USER_STORE, "My", CAPICOM_STORE_OPEN_READ_WRITE);
	}
	catch (e)
	{
		//document.all.alertxt.innerHTM="打开'MY'证书容器失败！";
		alert("打开'MY'证书容器失败！");
		return false;
	}
	index=document.all.item(selectObjectName).options.selectedIndex;
	document.all.item(serialObjectName).value=MyStore.Certificates.item(index+1).SerialNumber;
	
}
function GetDNAttribute(DN,attr)
{
	var i;
	var attrs=DN.split(",");
	for (i=0;i<attrs.length;i++){
		var curAttr=attrs[i];
		curAttr=curAttr.replace(/(^\s*)|(\s*$)/g, "");
		if (curAttr.indexOf(attr+"=")==0)
			return curAttr.substr(attr.length+1);
	}
	return "";
}

