'<script language="VBScript">

'MSD 05/13/2003   Added methods for Async calls.


OPTION EXPLICIT

'
' Global Defs.  
'
' gDocumentLoaderObjInstance : a reference to this object
' DocumetnLoaderAsyncCallBack: Callback function for async calls
'

Dim gDocumentLoaderObjInstance

Sub DocumentLoaderAsyncCallBack(oHttp)
  Call gDocumentLoaderObjInstance.InnerAsyncCallback(oHttp)
End Sub




Class cDocumentLoader
  Dim mlNodeID
  Dim vCallBack
  Dim mReturnValue

  '
  ' ReturnValue: Get the result of your async http request here.
  '
  
  Property Get ReturnValue
    ReturnValue = mReturnValue
  End Property
  
  
  '
  ' Property CallBackFunction: Function to call when async work is done.  You can either pass in
  '                            a string of a global method, or you can pass in an object reference.
  '                            If you pass in an object reference, then you will have to implement 
  '                            the function DocumentLoaderCallBack() within that class
  '
  
  Public Property Let CallBackFunction(vInCallBack)
    Set gDocumentLoaderObjInstance = Me
    If IsObject(vInCallBack) Then
      Set vCallBack = vInCallBack
    Else
      vCallBack = vInCallBack    
    End If
  End Property

  '
  ' Property NodeID
  '

  Public Property Get NodeID
    NodeID = mlNodeID
  End Property

  Public Property Let NodeID(lNodeID)
    mlNodeID = lNodeID
  End Property

  '
  ' InnerAsyncCallBack: Called after the async call in order to call into the callback function.
  '
  
  Public Function InnerAsyncCallBack(oHttp)
    If oHttp Is Nothing Then
      mReturnValue = vbNullString
    Else
      mReturnValue = oHttp.ResponseText
      
    End If
    
    Call External.HTTPTransactions.Remove("DocumentServer")
    
    If IsObject(vCallBack) Then
      Call vCallBack.DocumentLoaderCallBack()
    Else
      Call Execute(vCallBack) 
    End If
    
  End Function

  '
  ' Class_Initialize: Sets the global reference to this script class, so that
  '                   it can be used for async callback purposes
  '
  
  Private Sub Class_Initialize
    Set gDocumentLoaderObjInstance = Me
  End Sub

  '=============================================================================================  
  Public Function GetDocumentsByMergeCategoryID(lMergeCatID)
    Dim lDocCatID : lDocCatID = 1  'Always 1 for Forms.      
    Dim sTypesList
    Dim HTTPTrans

    sTypesList = GetTypesList(1, lMergecatID)
    
    If Len(sTypesList) > 0 Then
      Set HTTPTrans = external.HTTPTransactions.Add("DocumentServer")

      HTTPTrans.Open "POST", "/Infrastructure/DocumentManagement/DocumentServer.asp", False
      HTTPTrans.formElements.add("Op").Value = "LoadDocsByTypes"
      HTTPTrans.formElements.add("LocationID").Value = external.MOM.sessionStash.Item("ServerConfig/LocationID").Value 
      HTTPTrans.formElements.add("NodeID").Value = mlNodeID
      HTTPTrans.formElements.add("SecMask").Value = 2
      HTTPTrans.formElements.add("TypeIDList").Value = sTypesList
      HTTPTrans.formElements.add("IncludeHidden").Value = True
      HTTPTrans.send

      GetDocumentsByMergeCategoryID =  HTTPTrans.ResponseText
    
      Set HTTPTrans = Nothing
      External.HTTPTransactions.Remove("DocumentServer")

    Else
      GetDocumentsByMergeCategoryID = "<Documents/>"
    End If
  End Function
  '=============================================================================================
  Public Function GetDocumentsByMergeCategoryIDAsync(lMergeCatID)
    Dim lDocCatID : lDocCatID = 1  'Always 1 for Forms.      
    Dim sTypesList
    Dim HTTPTrans

    sTypesList = GetTypesList(1, lMergecatID)
    
    If Len(sTypesList) > 0 Then
      Set HTTPTrans = external.HTTPTransactions.Add("DocumentServer")

      HTTPTrans.onRequestComplete = GetRef("DocumentLoaderAsyncCallBack")

      HTTPTrans.Open "POST", "/Infrastructure/DocumentManagement/DocumentServer.asp", False
      HTTPTrans.formElements.add("Op").Value = "LoadDocsByTypes"
      HTTPTrans.formElements.add("LocationID").Value = external.MOM.sessionStash.Item("ServerConfig/LocationID").Value 
      HTTPTrans.formElements.add("NodeID").Value = mlNodeID
      HTTPTrans.formElements.add("SecMask").Value = 2
      HTTPTrans.formElements.add("TypeIDList").Value = sTypesList
      HTTPTrans.formElements.add("IncludeHidden").Value = True      
      HTTPTrans.send 

      Set HTTPTrans = Nothing
    Else
      Call DocumentLoaderAsyncCallBack(Nothing)
    End If
  End Function

  '=============================================================================================

  Public Function GetTypesList(sDocCatIDs, lMergeCatID)
    Dim oCodeQuery : Set oCodeQuery = External.CodeQuery
    Dim oTypesDOM : Set oTypesDOM = External.CreateObject("MSXML2.DOMDocument")
    Dim oTypesList, oTypeNode
    Dim sTypeID
    Dim sTypeIDList : sTypeIDList = vbNullString
    Dim sFilter
    Dim DocCatArray, MergeCatArray, i

    If Len(lMergeCatID) > 0 Then
      MergeCatArray = Split(lMergeCatID, ",")
      For i = 0 To UBound(MergeCatArray)
        If i = 0 Then
          sFilter = "VAL(CodeData->DocCatID) = 1 .And. VAL(CodeData->MergeCatID) = " & MergeCatArray(i) 
        Else
          sFilter = sFilter & " .OR. VAL(CODEDATA->MergeCatID) = " & MergeCatArray(i)          
        End If
      Next
    Else
      If Len(sDocCatIDs) > 0 Then
        DocCatArray = Split(sDocCatIDs, ",")
        For i = 0 To UBound(DocCatArray)
          If i = 0 Then
            sFilter = "VAL(CodeData->DocCatID) = " & DocCatArray(i) 
          Else
            sFilter = sFilter & " .Or. VAL(CodeData->DocCatID) = " & DocCatArray(i)          
          End If
        Next
      Else
        sFilter = vbNullString
      End If
    End If
    
    Call oCodeQuery.CloseTable("Operations", "uDocType")
    Call oTypesDOM.LoadXML(oCodeQuery.GetCodes("Operations", "uDocType", "11", "", sFilter))
    Call oCodeQuery.CloseTable("Operations", "uDocType")
    
    Set oTypesList = oTypesDOM.SelectNodes("CodeDatas/CodeData")

    For Each oTypeNode In oTypesList
      sTypeID = oTypeNode.getAttribute("codeid")   
      sTypeIDList = sTypeIDList & sTypeID & ","
    Next
    
    If Len(sTypeIDList) > 0 Then
      sTypeIDList = Left(sTypeIDList, Len(sTypeIDList) - 1)
    End If
  
    GetTypesList = sTypeIDList
  End Function
'=============================================================================================

  Function LoadDocument(lDocumentID, blnIncludeSecurity)
    Dim HTTPTrans
        
    Set HTTPTrans = external.HTTPTransactions.Add("DocumentServer")

    HTTPTrans.setRequestHeader "Op", "LoadDocument"
    HTTPTrans.setRequestHeader "DocumentID", lDocumentID
    HTTPTrans.setRequestHeader "IncludeSecurity", blnIncludeSecurity

    HTTPTrans.Open "POST", "/Infrastructure/DocumentManagement/DocumentServer.asp", False
    HTTPTrans.send vbNullString

    LoadDocument =  HTTPTrans.ResponseText
    
    Set HTTPTrans = Nothing
    External.HTTPTransactions.Remove("DocumentServer")

  End Function
'=============================================================================================  
  Function LoadDocumentAsync(lDocumentID, blnIncludeSecurity)
    Dim HTTPTrans
        
    Set HTTPTrans = external.HTTPTransactions.Add("DocumentServer")

    HTTPTrans.setRequestHeader "Op", "LoadDocument"
    HTTPTrans.setRequestHeader "DocumentID", lDocumentID
    HTTPTrans.setRequestHeader "IncludeSecurity", blnIncludeSecurity

    HTTPTrans.onRequestComplete = GetRef("DocumentLoaderAsyncCallBack")    

    HTTPTrans.Open "POST", "/Infrastructure/DocumentManagement/DocumentServer.asp", False
    HTTPTrans.send vbNullString

    Set HTTPTrans = Nothing
  End Function
'=============================================================================================  

  Function GetTypesListByCaseCat( lCaseCatID )
    Dim lMergeCatID
    
    lMergeCatID = oQuery.GetCodeField("Justice" , "sCaseCat" , "" , sCaseCat , "MrgCtgyID" )
  
    GetTypesListByCaseCat = GetTypesList("", lMergeCatID)
    
    Call oQuery.CloseTable("Justice", "sCaseCat")
  End Function
'=============================================================================================  
  Function GetTypesSecurity(lSecMask, sTypeIDList)
    Dim HTTPTrans
        
    Set HTTPTrans = external.HTTPTransactions.Add("DocumentServer")
    
    HTTPTrans.Open "POST", "/Infrastructure/DocumentManagement/DocumentServer.asp", False
    HTTPTrans.formElements.add("Op").Value = "LoadDocumentTypes"
    HTTPTrans.formElements.add("TypeIDList").Value = sTypeIDList
    HTTPTrans.formElements.add("SecMask").Value = lSecMask    
    HTTPTrans.send 

    GetTypesSecurity =  HTTPTrans.ResponseText
    
    Set HTTPTrans = Nothing
    External.HTTPTransactions.Remove("DocumentServer")
  End Function
'=============================================================================================  
  Function GetTypesSecurityAsync(lSecMask, sTypeIDList)
    Dim HTTPTrans
        
    Set HTTPTrans = external.HTTPTransactions.Add("DocumentServer")

    HTTPTrans.onRequestComplete = GetRef("DocumentLoaderAsyncCallBack")        

    HTTPTrans.Open "POST", "/Infrastructure/DocumentManagement/DocumentServer.asp", False
    HTTPTrans.formElements.add("Op").Value = "LoadDocumentTypes"
    HTTPTrans.formElements.add("TypeIDList").Value = sTypeIDList & vbNullString
    HTTPTrans.formElements.add("SecMask").Value = lSecMask    
    HTTPTrans.send 
    
    Set HTTPTrans = Nothing
  End Function
'=============================================================================================  

  Function LoadDocumentType(sDocTypeID, blnIncludeSecurity)
    Dim HTTPTrans
        
    Set HTTPTrans = external.HTTPTransactions.Add("DocumentServer")

    HTTPTrans.setRequestHeader "Op", "LoadDocumentType"
    HTTPTrans.setRequestHeader "DocumentTypeID", sDocTypeID
    HTTPTrans.setRequestHeader "IncludeSecurity", blnIncludeSecurity
    
    HTTPTrans.Open "POST", "/Infrastructure/DocumentManagement/DocumentServer.asp", False
    HTTPTrans.send vbNullString

    LoadDocumentType =  HTTPTrans.ResponseText
    
    Set HTTPTrans = Nothing
    External.HTTPTransactions.Remove("DocumentServer")
  End Function
'=============================================================================================  
  Function LoadDocumentTypeAsync(sDocTypeID, blnIncludeSecurity)
    Dim HTTPTrans
        
    Set HTTPTrans = external.HTTPTransactions.Add("DocumentServer")

    HTTPTrans.setRequestHeader "Op", "LoadDocumentType"
    HTTPTrans.setRequestHeader "DocumentTypeID", sDocTypeID
    HTTPTrans.setRequestHeader "IncludeSecurity", blnIncludeSecurity

    HTTPTrans.onRequestComplete = GetRef("DocumentLoaderAsyncCallBack")    
    
    HTTPTrans.Open "POST", "/Infrastructure/DocumentManagement/DocumentServer.asp", False
    HTTPTrans.send vbNullString
    
    Set HTTPTrans = Nothing
  End Function
'=============================================================================================  

  Function LoadDocumentsByVersionIDs(sVersionIDs)
    Dim HTTPTrans
        
    Set HTTPTrans = external.HTTPTransactions.Add("DocumentServer")

    HTTPTrans.setRequestHeader "Op", "LoadDocsByDocVerList"
    HTTPTrans.setRequestHeader "DocVerIDs", sVersionIDs
    HTTPTrans.setRequestHeader "LocationID", external.MOM.sessionStash.Item("ServerConfig/LocationID").Value 
    
    HTTPTrans.Open "POST", "/Infrastructure/DocumentManagement/DocumentServer.asp", False
    HTTPTrans.send vbNullString

    LoadDocumentsByVersionIDs =  HTTPTrans.ResponseText
    
    Set HTTPTrans = Nothing
    External.HTTPTransactions.Remove("DocumentServer")
  End Function
'=============================================================================================  
  Function LoadDocumentsByVersionIDsAsync(sVersionIDs)
    Dim HTTPTrans
        
    Set HTTPTrans = external.HTTPTransactions.Add("DocumentServer")

    HTTPTrans.setRequestHeader "Op", "LoadDocsByDocVerList"
    HTTPTrans.setRequestHeader "DocVerIDs", sVersionIDs
    HTTPTrans.setRequestHeader "LocationID", external.MOM.sessionStash.Item("ServerConfig/LocationID").Value 

    HTTPTrans.onRequestComplete = GetRef("DocumentLoaderAsyncCallBack")    
        
    HTTPTrans.Open "POST", "/Infrastructure/DocumentManagement/DocumentServer.asp", False
    HTTPTrans.send vbNullString

    Set HTTPTrans = Nothing
  End Function
'=============================================================================================  
  Function LoadDocumentsByParentAsync(lNodeID, lParentID, lParentTypeID, lSecMask, blnIncludeHidden)
    Dim HTTPTrans
        
    Set HTTPTrans = external.HTTPTransactions.Add("DocumentServer")

    HTTPTrans.setRequestHeader "Op", "LoadDocsByParentID"
    HTTPTrans.setRequestHeader "NodeID", lNodeID
    HTTPTrans.setRequestHeader "ParentID", lParentID
    HTTPTrans.setRequestHeader "ParentTypeID", lParentTypeID
    HTTPTrans.setRequestHeader "SecMask", lSecMask
    HTTPTrans.setRequestHeader "LocationID", external.MOM.sessionStash.Item("ServerConfig/LocationID").Value 
    HTTPTrans.setRequestHeader "IncludeHidden", blnIncludeHidden  

    HTTPTrans.onRequestComplete = GetRef("DocumentLoaderAsyncCallBack")    
        
    HTTPTrans.Open "POST", "/Infrastructure/DocumentManagement/DocumentServer.asp", False
    HTTPTrans.send vbNullString

    Set HTTPTrans = Nothing
  End Function

  Function LoadDocumentsByParentsSync(sNodeIDs, sParentIDs, sParentTypeIDs, sSecMasks, blnIncludeHidden)
    Dim HTTPTrans
        
    Set HTTPTrans = external.HTTPTransactions.Add("DocumentServer")

    HTTPTrans.setRequestHeader "Op", "LoadDocsByParentIDs"
    HTTPTrans.setRequestHeader "NodeID", sNodeIDs
    HTTPTrans.setRequestHeader "ParentID", sParentIDs
    HTTPTrans.setRequestHeader "ParentTypeID", sParentTypeIDs
    HTTPTrans.setRequestHeader "SecMask", sSecMasks
    HTTPTrans.setRequestHeader "LocationID", external.MOM.sessionStash.Item("ServerConfig/LocationID").Value 
    HTTPTrans.setRequestHeader "IncludeHidden", blnIncludeHidden  

    HTTPTrans.Open "POST", "/Infrastructure/DocumentManagement/DocumentServer.asp", False
    HTTPTrans.send vbNullString

    LoadDocumentsByParentsSync = HTTPTrans.ResponseText
  End Function
  
  
'=============================================================================================  
  Function LoadDocumentsByParentsAsync(sNodeIDs, sParentIDs, sParentTypeIDs, sSecMasks, blnIncludeHidden)
    Dim HTTPTrans
        
    Set HTTPTrans = external.HTTPTransactions.Add("DocumentServer")

    HTTPTrans.setRequestHeader "Op", "LoadDocsByParentIDs"
    HTTPTrans.setRequestHeader "NodeID", sNodeIDs
    HTTPTrans.setRequestHeader "ParentID", sParentIDs
    HTTPTrans.setRequestHeader "ParentTypeID", sParentTypeIDs
    HTTPTrans.setRequestHeader "SecMask", sSecMasks
    HTTPTrans.setRequestHeader "LocationID", external.MOM.sessionStash.Item("ServerConfig/LocationID").Value 
    HTTPTrans.setRequestHeader "IncludeHidden", blnIncludeHidden  

    HTTPTrans.onRequestComplete = GetRef("DocumentLoaderAsyncCallBack")    
        
    HTTPTrans.Open "POST", "/Infrastructure/DocumentManagement/DocumentServer.asp", False
    HTTPTrans.send vbNullString

    Set HTTPTrans = Nothing
  End Function
'============================================================================================= 
  Function GetDocumentsByParentsHTTPTrans(sNodeIDs, sParentIDs, sParentTypeIDs, sSecMasks, blnIncludeHidden)
    Dim HTTPTrans
        
    Set HTTPTrans = external.HTTPTransactions.Add("DocumentServer")

    HTTPTrans.setRequestHeader "Op", "LoadDocsByParentIDs"
    HTTPTrans.setRequestHeader "NodeID", sNodeIDs
    HTTPTrans.setRequestHeader "ParentID", sParentIDs
    HTTPTrans.setRequestHeader "ParentTypeID", sParentTypeIDs
    HTTPTrans.setRequestHeader "SecMask", sSecMasks
    HTTPTrans.setRequestHeader "LocationID", external.MOM.sessionStash.Item("ServerConfig/LocationID").Value 
    HTTPTrans.setRequestHeader "IncludeHidden", blnIncludeHidden  

    HTTPTrans.Open "POST", "/Infrastructure/DocumentManagement/DocumentServer.asp", False

    Set GetDocumentsByParentsHTTPTrans = HTTPTrans
  End Function

'=============================================================================================  
  Function LoadDocumentsByParentAsUserAsync(lNodeID, lUserIDtoMimic, lParentID, lParentTypeID, lSecMask, blnIncludeHidden)
    Dim HTTPTrans
        
    Set HTTPTrans = external.HTTPTransactions.Add("DocumentServer")

    HTTPTrans.setRequestHeader "Op", "LoadDocsByParentID"
    HTTPTrans.setRequestHeader "mthUserID", lUserIDtoMimic
    HTTPTrans.setRequestHeader "NodeID", lNodeID
    HTTPTrans.setRequestHeader "ParentID", lParentID
    HTTPTrans.setRequestHeader "ParentTypeID", lParentTypeID
    HTTPTrans.setRequestHeader "SecMask", lSecMask
    HTTPTrans.setRequestHeader "LocationID", external.MOM.sessionStash.Item("ServerConfig/LocationID").Value 
    HTTPTrans.setRequestHeader "IncludeHidden", blnIncludeHidden  

    HTTPTrans.onRequestComplete = GetRef("DocumentLoaderAsyncCallBack")    
        
    HTTPTrans.Open "POST", "/Infrastructure/DocumentManagement/DocumentServer.asp", False
    HTTPTrans.send vbNullString

    Set HTTPTrans = Nothing
  End Function  
  
  Function LoadDocumentsByParentAsUserSync(lNodeID, lUserIDtoMimic, lParentID, lParentTypeID, lSecMask, blnIncludeHidden)
    Dim HTTPTrans
        
    Set HTTPTrans = external.HTTPTransactions.Add("DocumentServer")

    HTTPTrans.setRequestHeader "Op", "LoadDocsByParentID"
    HTTPTrans.setRequestHeader "mthUserID", lUserIDtoMimic
    HTTPTrans.setRequestHeader "NodeID", lNodeID
    HTTPTrans.setRequestHeader "ParentID", lParentID
    HTTPTrans.setRequestHeader "ParentTypeID", lParentTypeID
    HTTPTrans.setRequestHeader "SecMask", lSecMask
    HTTPTrans.setRequestHeader "LocationID", external.MOM.sessionStash.Item("ServerConfig/LocationID").Value 
    HTTPTrans.setRequestHeader "IncludeHidden", blnIncludeHidden  

    'HTTPTrans.onRequestComplete = GetRef("DocumentLoaderAsyncCallBack")    
        
    HTTPTrans.Open "POST", "/Infrastructure/DocumentManagement/DocumentServer.asp", False
    HTTPTrans.send vbNullString

    LoadDocumentsByParentAsUserSync = HTTPTrans.ResponseText

    Set HTTPTrans = Nothing
  End Function

End Class