<%@ Language=VBScript   %>
<%	Option Explicit 	%>
<%
	'-------------------------------------------------------------------------
	' logs.asp: lists all the logs, events for the selected log and provides 
	'			links for clearing, editing the properties and downloading
	' Copyright (c) Microsoft Corporation.  All rights reserved. 
	'-------------------------------------------------------------------------
%>
	<!-- #include virtual="/admin/inc_framework.asp" -->
	<!-- #include virtual="/admin/ots_main.asp" -->
	<!-- #include file="loc_event.asp" -->
<%
	'-------------------------------------------------------------------------
	' Global Constants
	'-------------------------------------------------------------------------
	Const TYPE_COLUMN = 1
	Const DATE_COLUMN = 2
	Const TIME_COLUMN = 3
	Const SOURCE_COLUMN = 4
	Const EVENT_COLUMN = 5
	
	Const CONST_WBEMPRIVILEGESECURITY=7	'Prilivilege constant
	Const NOOFRECORDS= 100 'fixing the constant value for getting the minimum records
	
	Dim SOURCE_FILE
	Const ENABLE_TRACING = TRUE
	
	SOURCE_FILE = SA_GetScriptFileName()
	
	Const CONST_HIDDEN="Hidden"	' Need not localize this variable as this is hidden
	
	'-------------------------------------------------------------------------
	' Global Variables
	'-------------------------------------------------------------------------
	'frame work variables
	Dim rc
	Dim page
	Dim g_bSearchChanged
	Dim g_iSearchCol
	Dim g_sSearchColValue
	
	Dim g_bPagingInitialized
	Dim g_bPageChangeRequested
	Dim g_sPageAction
	Dim g_iPageMin
	Dim g_iPageMax
	Dim g_iPageCurrent
	Dim g_iSortCol
	Dim g_sSortSequence
	Dim g_bSortRequested
	
	Dim G_strLogName	'Log name
	Dim G_objConnection	'Object to WMI connection

	'-------------------------------------------------------------------------
	' Form Variables
	'-------------------------------------------------------------------------
	Dim F_strevent_title	'To get the title from previous page
	Dim F_pageTitle			'to get the page title.
	Dim arrTitle(1)
	
	'======================================================
	' Entry point
	'======================================================
	
	' Create Page
	
	'Title localisation
	F_strevent_title  = lcase(Request.QueryString("Title"))
	Select case F_strevent_title
		case Lcase("Applicationlog")
			F_pageTitle = L_APPLICATION_TEXT
		case Lcase("Systemlog")	
			F_pageTitle = L_SYSTEM_TEXT
		case Lcase("Securitylog")	
			F_pageTitle = L_SECURITY_TEXT
	End select 	
	
	arrTitle(0) = F_pageTitle
	
	L_PAGETITLE_LOGS_TEXT = SA_GetLocString("event.dll", "403F001A", arrTitle)

	Call SA_CreatePage(L_PAGETITLE_LOGS_TEXT, "", PT_AREA, page )
	Call SA_ShowPage( page )
	
	'---------------------------------------------------------------------
	' Function name:	OnInitPage
	' Description:		Called to signal first time processing for this page. 
	' Input Variables:	PageIn and EventArg
	' Output Variables:	PageIn, EventArg
	' Return Values:	TRUE to indicate initialization was successful. FALSE to indicate
	'					errors. Returning FALSE will cause the page to be abandoned.
	' Global Variables: Out: G_strLogName
	' Called to signal first time processing for this page. Use this method
	' to do first time initialization tasks. 
	'---------------------------------------------------------------------
	Public Function OnInitPage(ByRef PageIn, ByRef EventArg)
		
		OnInitPage = TRUE
		
		If ( ENABLE_TRACING ) Then 
			Call SA_TraceOut(SOURCE_FILE, "OnInitPage")
		End If
		
		'Getting the value of the log. and description from previous page.
		F_strevent_title  = Request.QueryString("Title")
						
		G_strLogName = getWMILogFileName(F_strevent_title)
		
		'Set default values
		'
		'Sort hidden column in descending sequence as we have numbering in reverse order
		g_iSortCol = 6
		g_sSortSequence = "D"

		'
		' Paging needs to be initialized
		g_bPagingInitialized = FALSE
		'
		'Start on page #1
		g_iPageCurrent = 1
		
	End Function
	
	'---------------------------------------------------------------------
	' Function name:	OnServeAreaPage
	' Description:		Called when the page needs to be served. 
	' Input Variables:	PageIn, EventArg
	' Output Variables:	PageIn, EventArg
	' Return Values:	TRUE to indicate no problems occured. FALSE to indicate errors.
	'					Returning FALSE will cause the page to be abandoned.
	' Global Variables: None
	'Called when the page needs to be served. Use this method to serve content.
	'---------------------------------------------------------------------
	Public Function OnServeAreaPage(ByRef PageIn, ByRef EventArg)
				
		OnServeAreaPage= getLogsEvents()
		
		'Release the object
		Set G_objConnection = Nothing
		
	End Function
	
	
	'---------------------------------------------------------------------
	' Function:	OnSearchNotify()
	'
	' Synopsis:	Search notification event handler. When one or more columns are
	'			marked with the OTS_COL_SEARCH flag, the Web Framework fires
	'			this event in the following scenarios:
	'
	'			1) The user presses the search Go button.
	'			2) The user requests a table column sort
	'			3) The user presses either the page next or page previous buttons
	'
	'			The EventArg indicates the source of this notification event which can
	'			be either a search change event (scenario 1) or a post back event 
	'			(scenarios 2 or 3)
	'
	' Returns:	Always returns TRUE
	'
	'---------------------------------------------------------------------
	Public Function OnSearchNotify(ByRef PageIn, _
										ByRef EventArg, _
										ByVal sItem, _
										ByVal sValue )
		OnSearchNotify = TRUE

		'
		' User pressed the search GO button
		'
		If SA_IsChangeEvent(EventArg) Then
			If ( ENABLE_TRACING ) Then 
				Call SA_TraceOut(SOURCE_FILE, "OnSearchNotify() Change Event Fired")
			End If
			g_bSearchChanged = TRUE
			g_iSearchCol = Int(sItem)
			g_sSearchColValue = CStr(sValue)
		'
		' User clicked a column sort, OR clicked either the page next or page prev button
		ElseIf SA_IsPostBackEvent(EventArg) Then
			If ( ENABLE_TRACING ) Then 
				Call SA_TraceOut(SOURCE_FILE, "OnSearchNotify() Postback Event Fired")
			End If
			g_bSearchChanged = FALSE
			g_iSearchCol = Int(sItem)
			g_sSearchColValue = CStr(sValue)
		'
		' Unknown event source
		Else
			If ( ENABLE_TRACING ) Then 
				Call SA_TraceOut(SOURCE_FILE, "Unrecognized Event in OnSearchNotify()")
			End If
		End IF
			
	End Function
	
	'---------------------------------------------------------------------
	' Function:	OnPagingNotify()
	'
	' Synopsis:	Paging notification event handler. This event is triggered in one of
	'			the following scenarios:
	'
	'			1) The user presses either the page next or page previous buttons
	'			2) The user presses the search Go button.
	'			3) The user requests a table column sort
	'
	'			The EventArg indicates the source of this notification event which can
	'			be either a paging change event (scenario 1) or a post back event 
	'			(scenarios 2 or 3)
	'
	'			The iPageCurrent argument indicates which page the user has requested.
	'			This is an integer value between iPageMin and iPageMax.
	'
	' Returns:	Always returns TRUE
	'
	'---------------------------------------------------------------------
	Public Function OnPagingNotify(ByRef PageIn, _
										ByRef EventArg, _
										ByVal sPageAction, _
										ByVal iPageMin, _
										ByVal iPageMax, _
										ByVal iPageCurrent )
		OnPagingNotify = TRUE
			
		g_bPagingInitialized = TRUE
			
		'
		' User pressed either page next or page previous
		'
		If SA_IsChangeEvent(EventArg) Then
			If ( ENABLE_TRACING ) Then 
				Call SA_TraceOut(SOURCE_FILE, "OnPagingNotify() Change Event Fired")
			End If
			g_bPageChangeRequested = TRUE
			g_sPageAction = CStr(sPageAction)
			g_iPageMin = iPageMin
			g_iPageMax = iPageMax
			g_iPageCurrent = iPageCurrent
		'
		' User clicked a column sort OR the search GO button
		ElseIf SA_IsPostBackEvent(EventArg) Then
			If ( ENABLE_TRACING ) Then 
				Call SA_TraceOut(SOURCE_FILE, "OnPagingNotify() Postback Event Fired")
			End If
			g_bPageChangeRequested = FALSE
			g_sPageAction = CStr(sPageAction)
			g_iPageMin = iPageMin
			g_iPageMax = iPageMax
			g_iPageCurrent = iPageCurrent
		'
		' Unknown event source
		Else
			If ( ENABLE_TRACING ) Then 
				Call SA_TraceOut(SOURCE_FILE, "Unrecognized Event in OnPagingNotify()")
			End If
		End IF
			
	End Function


	'---------------------------------------------------------------------
	' Function:	OnSortNotify()
	'
	' Synopsis:	Sorting notification event handler. This event is triggered in one of
	'			the following scenarios:
	'
	'			1) The user presses the search Go button.
	'			2) The user presses either the page next or page previous buttons
	'			3) The user requests a table column sort
	'
	'			The EventArg indicates the source of this notification event which can
	'			be either a sorting change event (scenario 1) or a post back event 
	'			(scenarios 2 or 3)
	'
	'			The sortCol argument indicated which column the user would like to sort
	'			and the sortSeq argument indicates the desired sort sequence which can
	'			be either ascending or descending.
	'
	' Returns:	Always returns TRUE
	'
	'---------------------------------------------------------------------
	Public Function OnSortNotify(ByRef PageIn, _
										ByRef EventArg, _
										ByVal sortCol, _
										ByVal sortSeq )
			OnSortNotify = TRUE
			
			' User pressed column sort
			If SA_IsChangeEvent(EventArg) Then
				Call SA_TraceOut("SOURCE_FILE", "OnSortNotify() Change Event Fired")
				g_bSearchChanged=TRUE
				g_iSortCol = Int(sortCol)
				g_sSortSequence = sortSeq
				
			' User presed the search GO button OR clicked either the page next or page prev button
			ElseIf SA_IsPostBackEvent(EventArg) Then
				Call SA_TraceOut("SOURCE_FILE", "OnSortNotify() Postback Event Fired")
				g_iSortCol = sortCol
				g_bSortRequested = TRUE
				' Unknown event source
			Else
				Call SA_TraceOut("SOURCE_FILE", "Unrecognized Event in OnSearchNotify()")
			End IF

			Call SA_TraceOut(SOURCE_FILE, "Sort col: " + CStr(sortCol) + "   sequence: " + sortSeq)

	End Function
		
	'---------------------------------------------------------------------
	' Function name:	getLogsEvents
	' Description:		To get events for a log
	' Input Variables:	None
	' Output Variables:	None
	' Return Values:	TRUE to indicate no problems occured. FALSE to indicate errors.
	'					Returning FALSE will display error message.
	' Global Variables: L_(*),G_strLogName
	'Called to display events for a log in OTS table.
	'---------------------------------------------------------------------
	Function getLogsEvents()
		Err.Clear
		On Error Resume Next
	
		Dim objTableLog 'Object to table
		Dim objLognames
		Dim strTitle
		Dim strLogTitle, strLogName
		Dim strQuery, strDate , strTime , objInstances 
		Dim colFlags
		Dim strRecordNumber
		
		Dim intRowCt
		Dim intArrIndex
		Dim intCount
		Dim arrLogs()
		Dim strLogType		'Logs type
		Dim arrLogType(1)

		Dim oEncoder
		Set oEncoder = new CSAEncoder
		
		'This variable is only used to sort the entries this is temporary one As OTS allows only string sort  
		'we are making use of numbers to sort as string 
		Dim strSortKeyNumber
		strSortKeyNumber=90000 
		'
		'
		Const CONST_SESCURITY = "Security" 
		
		intRowCt = 0
		intArrIndex = 0
				
		'Forming the log title
		strTitle="?Title=" & G_strLogName
		
		'To get the title for the log
		strLogTitle = Split(F_strevent_title, L_LOG_TXT) 
		arrLogType(0) = strLogTitle(0)
		strLogName =SA_GetLocString("event.dll", "403F0014", arrLogType)
		F_strevent_title = strLogName
				
		'Trying to connect to the server
		Set G_objConnection = getWMIConnection(CONST_WMI_WIN32_NAMESPACE)	'Connecting to the server
		
		'setting the security previleges only in the case of security log
		If Lcase(G_strLogName) = Lcase(CONST_SESCURITY) then
			'G_ObjConnection.Security_.Privileges.Add CONST_WBEMPRIVILEGESECURITY	'giving the req privileges 
		End If	
		
		'Incase connection fails
		If Err.number <> 0 then
			Call SA_ServeFailurepage (L_FAILEDTOGETWMICONNECTION_ERRORMESSAGE)
			getLogsEvents = false
			Exit Function
		End if
			
		'Querying to get the events for the log	
		strQuery  ="SELECT * FROM  Win32_NTlogEvent WHERE Logfile=" & chr(34) & G_strLogName & chr(34)
		Set objLognames = G_objConnection.ExecQuery(strQuery,"WQL",48,null)
				
		For each objInstances in objLognames
			redim preserve arrLogs(5, intArrIndex)

			'strDate=Mid(objInstances.TimeGenerated,5,2)& "/" & Mid(objInstances.TimeGenerated,7,2) & "/" & Mid(objInstances.TimeGenerated,1,4)
			strDate=Mid(objInstances.TimeGenerated,1,4) & "-" & Mid(objInstances.TimeGenerated,5,2) & "-" & Mid(objInstances.TimeGenerated,7,2)
			strTime=Mid(objInstances.TimeGenerated,9,2)& ":" & Mid(objInstances.TimeGenerated,11,2)& ":" & Mid(objInstances.TimeGenerated,13,2) 
			strRecordNumber = objInstances.RecordNumber
					
			'Assigning event fields to the array
			arrLogs(0,intArrIndex)=strRecordNumber
			arrLogs(1,intArrIndex)=objInstances.Type			
			arrLogs(2,intArrIndex)=FormatDateTime(CDate(strDate),2)
			arrLogs(3,intArrIndex)=FormatDateTime(CDate(strTime),3)
			arrLogs(4,intArrIndex)=objInstances.sourceName
			arrLogs(5,intArrIndex)=objInstances.EventCode	
			
                        'If the OS and SAKit languages are different,
                        'convert event type string to SAKit language
                        'It works only from English to Non-English
                        'If OS is not English, just use the string as it is.
			Select Case ucase(arrLogs(1,intArrIndex))
		
				case ucase("information")
					strLogType = L_INFORMATION_TYPE_TEXT
				case ucase("error")
					strLogType = L_ERROR_TYPE_TEXT
				case ucase("warning")
					strLogType = L_WARNING_TYPE_TEXT
				case ucase("audit success" )
					strLogType = L_SUCCESSAUDIT_TYPE_TEXT
				case ucase("audit failure")
					strLogType = L_FAILUREAUDIT_TYPE_TEXT
				case else
					strLogType = arrLogs(1,intArrIndex)
			End Select
			
			arrLogs(1,intArrIndex) = strLogType 
			intArrIndex = intArrIndex + 1	
		Next
	
		If Err.number <> 0 then
			Call SA_ServeFailurepage (L_FAILEDTOGETEVENTS_ERRORMESSAGE)
			getLogsEvents = false
			Exit Function
		End if
		
		'Create table if events are there in the log
		If intArrIndex <> 0 then
			'Create Appliance Log table with 7 coloumns
			objTableLog = OTS_CreateTable(F_strevent_title, L_DESCRIPTION_HEADING_TEXT )
		Else
			'Description is changed if no events are available in the log
			objTableLog = OTS_CreateTable(F_strevent_title, L_DESCRIPTION_PROPERTIES_HEADING_TEXT)
		End if
		
		'
		' If the search criteria changed then we need to recompute the paging range
		If ( TRUE = g_bSearchChanged ) Then
			'
			' Need to recalculate the paging range
			g_bPagingInitialized = FALSE
			'
			' Restarting on page #1
			g_iPageCurrent = 1
		End If
				
		'
		' Create columns
		colFlags = (OTS_COL_FLAG_HIDDEN OR OTS_COL_SORT OR OTS_COL_KEY)
		Call OTS_AddTableColumn(objTableLog, OTS_CreateColumnEx(L_PRIMARY_TEXT,"left",colFlags ,15))
			
		colFlags = (OTS_COL_SEARCH OR OTS_COL_SORT OR OTS_COL_KEY)
		Call OTS_AddTableColumn(objTableLog, OTS_CreateColumn(L_TYPE_TEXT, "left", colFlags))
													
		colFlags = (OTS_COL_SEARCH OR OTS_COL_SORT)
		Call OTS_AddTableColumn(objTableLog, OTS_CreateColumnEx( L_DATE_TEXT, "left",colFlags,40))
				
		colFlags = (OTS_COL_SEARCH OR OTS_COL_SORT)
		Call OTS_AddTableColumn(objTableLog, OTS_CreateColumnEx(L_TIME_TEXT,"left",colFlags,70))
		
		colFlags = (OTS_COL_SEARCH OR OTS_COL_SORT)
		Call OTS_AddTableColumn(objTableLog, OTS_CreateColumnEx(L_SOURCE_TEXT, "left",colFlags,100))
		
		colFlags = (OTS_COL_SEARCH OR OTS_COL_SORT)
		Call OTS_AddTableColumn(objTableLog, OTS_CreateColumnEx(L_ID_TEXT,"left", colFlags,130))
		
		colFlags = (OTS_COL_FLAG_HIDDEN OR OTS_COL_SORT OR OTS_COL_KEY)
		Call OTS_AddTableColumn(objTableLog, OTS_CreateColumnEx(CONST_HIDDEN,"left",colFlags ,15))
		
		
		' Set Tasks section title
		Call OTS_SetTableTasksTitle(objTableLog, L_TASKS_TEXT)
		
		' Add the tasks associated with Logs objects
												
		Call OTS_AddTableTask( objTableLog, OTS_CreateTaskEx(L_ITEMDETAILS_TEXT,L_ITEMDETAILS_ROLLOVER_TEXT , "logs/log_details.asp" & strTitle,OTS_PT_AREA,"OTS_TaskAny") )
								
		Call OTS_AddTableTask( objTableLog, OTS_CreateTaskEx(L_DOWNLOAD_TEXT,L_DOWNLOAD_ROLLOVER_TEXT , "logs/log_download.asp" & strTitle, OTS_PT_AREA, "OTS_TaskAny") )

		Call OTS_AddTableTask( objTableLog, OTS_CreateTaskEx(L_PROPERTIES_TEXT,L_PROPERTIES_ROLLOVER_TEXT , "logs/log_prop.asp" & strTitle,OTS_PT_PROPERTY,"OTS_TaskAlways") )
		
		Call OTS_AddTableTask( objTableLog, OTS_CreateTaskEx(L_CLEAR_TEXT,L_CLEAR_ROLLOVER_TEXT , "logs/log_clear.asp" & strTitle,OTS_PT_PROPERTY,"OTS_TaskAny") )
		
		
				
		'Adding items to the OTS table
		For intCount = 0 to intArrIndex-1
		
			
		
			'This variable is only used to sort the entries this is temporary one As OTS allows only string sort  
			'we are making use of numbers to sort as string 
			strSortKeyNumber = strSortKeyNumber - 1
			'
			'
		
			If ( Len( g_sSearchColValue ) <= 0 ) Then

				' Search criteria blank, select all rows
				intRowCt=intRowCt+1
				' Verify that the current user part of the current page
				If ( IsItemOnPage( intRowCt, g_iPageCurrent, NOOFRECORDS) ) Then
					Call OTS_AddTableRow( objTableLog, Array( arrLogs(0,intCount) ,arrLogs(1,intCount) ,arrLogs(2,intCount) ,arrLogs(3,intCount) ,arrLogs(4,intCount),arrLogs(5,intCount),strSortKeyNumber ) )
				End If
				
			Else
				' Check the Search criteria

				Select Case (g_iSearchCol)
					
					Case TYPE_COLUMN

						If ( InStr(1, arrLogs(1,intCount), g_sSearchColValue, 1) ) Then
							intRowCt=intRowCt+1
							' Verify that the current event part of the current page
							If ( IsItemOnPage( intRowCt, g_iPageCurrent,  NOOFRECORDS) ) Then
								Call OTS_AddTableRow( objTableLog, Array( arrLogs(0,intCount) ,arrLogs(1,intCount) ,arrLogs(2,intCount) ,arrLogs(3,intCount) ,arrLogs(4,intCount),arrLogs(5,intCount),strSortKeyNumber ) )
							End If
						End If
			
					Case DATE_COLUMN

						If ( InStr(1, arrLogs(2,intCount), g_sSearchColValue, 1) ) Then
							intRowCt=intRowCt+1
							If ( IsItemOnPage( intRowCt, g_iPageCurrent,  NOOFRECORDS) ) Then
								Call OTS_AddTableRow( objTableLog,Array( arrLogs(0,intCount) ,arrLogs(1,intCount) ,arrLogs(2,intCount) ,arrLogs(3,intCount) ,arrLogs(4,intCount),arrLogs(5,intCount),strSortKeyNumber ) )
							End if
						End If
							
					Case TIME_COLUMN

						If ( InStr(1, arrLogs(3,intCount), g_sSearchColValue, 1) ) Then
							intRowCt=intRowCt+1
							If ( IsItemOnPage( intRowCt, g_iPageCurrent,  NOOFRECORDS) ) Then
								Call OTS_AddTableRow( objTableLog, Array( arrLogs(0,intCount) ,arrLogs(1,intCount) ,arrLogs(2,intCount) ,arrLogs(3,intCount) ,arrLogs(4,intCount),arrLogs(5,intCount),strSortKeyNumber ) )
							End if
						End If
						
					Case SOURCE_COLUMN

						If ( InStr(1, arrLogs(4,intCount), g_sSearchColValue, 1) ) Then
							intRowCt=intRowCt+1
							If ( IsItemOnPage( intRowCt, g_iPageCurrent,  NOOFRECORDS) ) Then
								Call OTS_AddTableRow( objTableLog, Array( arrLogs(0,intCount) ,arrLogs(1,intCount) ,arrLogs(2,intCount) ,arrLogs(3,intCount) ,arrLogs(4,intCount),arrLogs(5,intCount),strSortKeyNumber ) )
							End if
						End If
					
					Case EVENT_COLUMN

						If ( InStr(1, arrLogs(5,intCount), g_sSearchColValue, 1) ) Then
							intRowCt=intRowCt+1
							If ( IsItemOnPage( intRowCt, g_iPageCurrent,  NOOFRECORDS) ) Then
								Call OTS_AddTableRow( objTableLog, Array( arrLogs(0,intCount) ,arrLogs(1,intCount) ,arrLogs(2,intCount) ,arrLogs(3,intCount) ,arrLogs(4,intCount),arrLogs(5,intCount),strSortKeyNumber ) )
							End if
						End If
							
					Case Else

						Call SA_TraceOut(SOURCE_FILE, "Unrecognized search column: " + CStr(g_iSearchCol))
						intRowCt=intRowCt+1		
						If ( IsItemOnPage( intRowCt, g_iPageCurrent,  NOOFRECORDS) ) Then
							Call OTS_AddTableRow( objTableLog, Array( arrLogs(0,intCount) ,arrLogs(1,intCount) ,arrLogs(2,intCount) ,arrLogs(3,intCount) ,arrLogs(4,intCount),arrLogs(5,intCount),strSortKeyNumber ) )
						End if

				End Select

			End If

		Next
				
		' Enable paging feature
		Call OTS_EnablePaging(objTableLog, true)
		
		If ( ENABLE_TRACING ) Then 
			Call SA_TraceOut(SOURCE_FILE, "Total records: " + CStr(intArrIndex))
		End If

		'
		' If paging range needs to be initialised then
		' we need to figure out how many pages we are going to display
		If ( FALSE = g_bPagingInitialized ) Then
			g_iPageMin = 1
			
			g_iPageMax = Int(intRowCt / NOOFRECORDS )
			If ( (intRowCt MOD NOOFRECORDS) > 0 ) Then
				g_iPageMax = g_iPageMax + 1
			End If
			
			g_iPageCurrent = 1
			Call OTS_SetPagingRange( objTableLog, g_iPageMin, g_iPageMax, g_iPageCurrent)
		End If
		
		'
		' Sort the table
		'
		Call OTS_SortTable(objTableLog, g_iSortCol, g_sSortSequence, SA_RESERVED)

		' Send table to the response stream
		'
		Call OTS_ServeTable(objTableLog)
		
		'Display msg if no events are there in log
		If intRowCt = 0 then
			Response.write "<br>" & oEncoder.EncodeElement(L_NOEVENTSAVAILABLE_TEXT) & "<br>"
		End if
		
		'Set to nothing
		Set objInstances  = Nothing
		Set objLognames=Nothing
		
		getLogsEvents = True
	End Function

	'-------------------------------------------------------------------------
	' Function name:	getWMILogFileName
	' Description:		returns WMI Log File name
	' Input Variables:	strTitle - Title or caption of the log
	' Output Variables:	None
	' Return Values:	Returns WMI Log File name
	' Global Variables: None
	' Return the WMI LogFile name. If the Title is not found Returns null
	'-------------------------------------------------------------------------
	Function getWMILogFileName(strTitle)
		Err.Clear 
		On Error Resume Next
				
		const strDNS			= "DNS Server"
		const strApplication	= "Application"
		const strSecurity		= "Security"
		const strSystem			= "System"
		
		'To get the Log name
		select case strTitle
		
			case "ApplicationLog" 
					getWMILogFileName = strApplication
			case "SystemLog" 
					getWMILogFileName = strSystem
			case "SecurityLog" 
					getWMILogFileName = strSecurity
			case "DnsLog" 
					getWMILogFileName = strDNS
			case else
					getWMILogFileName = ""
		end select
		
	End Function

	 
	'-------------------------------------------------------------------------
	' Function name:	IsItemOnPage
	' Description:		Search for the item on page
	' Input Variables:	iCurrentItem, iCurrentPage, iItemsPerPage
	' Output Variables:	None
	' Return Values:	True/False
	' Global Variables: None
	'------------------------------------------------------------------------- 
	
	 Private Function IsItemOnPage(ByVal iCurrentItem, iCurrentPage, iItemsPerPage)
		
		Dim iLowerLimit
		Dim iUpperLimit

		iLowerLimit = ((iCurrentPage - 1) * iItemsPerPage )
		iUpperLimit = iLowerLimit + iItemsPerPage + 1
		
		If ( iCurrentItem > iLowerLimit AND iCurrentItem < iUpperLimit ) Then
			IsItemOnPage = TRUE
		Else
			IsItemOnPage = FALSE
		End If
		
	End Function
%>