//Copyright 2003-2008 e-Software.cn. All Rights Reserved.
//Written by Gengjian. Email:gengs@163.com
//**Start Encode**
function GetCatInfo( CatFileName )
{
    
    
    var CurEnum         = 0 
    var CurMember       = 0
    var CurMemberHash   = ""
    var CurAttr         = 0
    var MemberAttrXml   = ""
    var DrvFileArray = new Array()
    DrvFileArray["Rows"] = 0
    var MemberInfo

    var CATHandle = DrvCert.CATOpen( CatFileName )
    if ( CATHandle )
    {
        do
        {
            CurMember     = DrvCert.CATEnumMember( CATHandle , CurMember )
            if ( CurMember )
            {
                CurMemberHash = DrvCert.CATGetMemberHashID( CurMember )

                MemberAttrXml = DrvCert.GetCATMemberAttr( CATHandle , CurMember )
                MemberInfo= GetMemberInfoFromXml( MemberAttrXml )
                
                if ( MemberInfo["File"]  )
                {
                    DrvFileArray[ DrvFileArray["Rows"] + ",File" ] = MemberInfo["File"]
                    DrvFileArray[ DrvFileArray["Rows"] + ",OS"   ] = MemberInfo["OS"  ]
                    DrvFileArray[ DrvFileArray["Rows"] + ",Hash" ] = CurMemberHash.replace( / /gi , "" )    
                    
                    
                    DrvFileArray[ MemberInfo["File"].toUpperCase() ] = DrvFileArray["Rows"]
                    DrvFileArray[ CurMemberHash.toUpperCase()      ] = DrvFileArray["Rows"]

                    DrvFileArray["Rows"] ++
                }
            }
        }
        while ( CurMember )
        DrvCert.CATClose( CATHandle )
    }

return ( DrvFileArray )    
}
function  GetMemberInfoFromXml( MemberAttrXml )
{
    var Info = new Array()

    var i=0
    do
    {
        var AttrXml  = GetXmlSingleNodeXml( MemberAttrXml , "Attr" + i )
        if ( AttrXml )
        {
            var AttrName = GetXmlSingleNodeText( AttrXml , "AttrName" )
            var AttrValue= GetXmlSingleNodeText( AttrXml , "AttrValue" )
            if ( AttrName.toUpperCase() == "FILE" )
            {
                Info[ "File" ] = AttrValue
            }
            if ( AttrName.toUpperCase() == "OSATTR" )
            {
                Info[ "OS" ] = AttrValue
            }
        }
        i++
	}
    while( AttrXml )
return ( Info )
}
function GetXmlSingleNodeXml( Xml , NodeTag )
{
	var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
	xmlDoc.async = false;
	xmlDoc.loadXML( Xml );
	if (!xmlDoc) return(null)
	var objNode = xmlDoc.selectSingleNode("\/\/" + NodeTag )
	if (!objNode) return (null)
	var text = objNode.xml
	xmlDoc = null

return (text)
}
function GetXmlSingleNodeText( Xml , NodeTag )
{
	var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
	xmlDoc.async = false;
	xmlDoc.loadXML( Xml );
	if (!xmlDoc) return(null)
	var objNode = xmlDoc.selectSingleNode("\/\/" + NodeTag )
	if (!objNode) return (null)
	var text = objNode.text
	xmlDoc = null

return (text)
}

