<%
Class DirSrch
    Private strTmp1, strTmp2, gblMatches, bExecuted

    Private Sub Class_Initialize()
        bExecuted = False
    End Sub

    Private Function FindDir(ByVal directory, ByVal DirToFind)
        If Len( directory ) = 0 And Len( dirtofind ) = 0 Then 
            FindDir = "" & vbCrLf
            Exit Function
        End If
        Dim objFSO, fldr, folder, tmp
        Set objFSO = Server.CreateObject(_
         "Scripting.FileSystemObject")
        Set fldr = objfso.getfolder(directory)
        For Each folder In fldr.subfolders
            If UCase( folder.name ) = _
             UCase( DirToFind ) Then
                tmp = tmp & folder.path & vbCrLf
            ElseIf InStr( UCase( folder.path ), _
             UCase( DirToFind ) ) Then
                tmp = tmp & folder.path & vbCrLf
            Else
                ' tmp = join(tmp, vbCrLf)
                tmp = tmp & FindDir( _
                 folder.path, DirToFind )
            End If
        Next
        Set fldr = Nothing
        Set objfso = Nothing
        FindDir = tmp
    End Function

    Public Sub Execute()
        Dim a, b
        a = Split( FindDir( StartDirectory, _
            LookingFor ), vbCrLf )
        b = UBound(a) - 1
        ReDim Preserve a(b)
        gblMatches = a
        bExecuted = True
    End Sub

    Public Function MatchingDirs()
        If Not bExecuted Then
            Err.Raise 5199, "DirSrch Class", _
                "Cannot Call 'MatchingDirs' before " & _
                "calling the 'Execute' method."
            Exit Function
        End If
        MatchingDirs = gblMatches
    End Function

    Public Function CountMatches()
        If Not bExecuted Then
            Err.Raise 5199, "DirSrch Class", _
                "Cannot Call 'CountMatches' before " & _
                "calling the 'Execute' method."
            Exit Function
        End If
        CountMatches = CLng( UBound( gblMatches ) + 1 )
    End Function

    Public Property Let StartDirectory(ByVal strInput)
        strTmp1 = strInput
    End Property

    Public Property Let LookingFor(ByVal strInput)
        strTmp2 = strInput
    End Property

    Public Property Get StartDirectory()
        If Len( strTmp1 ) = 0 Then 
            Err.Raise 5199, "DirSrch Class", _
                "You must set the 'StartDirectory' property " & _
                "before calling the 'Execute' method."
            Exit Property
        End If
        StartDirectory = strTmp1
    End Property

    Public Property Get LookingFor()
        If Len( strTmp2 ) = 0 Then 
            Err.Raise 5199, "DirSrch Class", _
                "You must set the 'LookingFor' property " & _
                "before calling the 'Execute' method."
            Exit Property
        End If
        LookingFor = strTmp2
    End Property
End Class
%>