<%@ LANGUAGE="VBSCRIPT"%>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual InterDev 1.0">
<META HTTP-EQUIV="Content-Type" content="text/html; charset=utf-8">
</HEAD>
<BODY>
<!-- Insert HTML here -->
<%
'Option Explicit
Public aUsers(), aColors(), iNumUsers, iSize
Dim fs, fd, fc, f, a
Dim strTranscriptPath, strChannelName, strChannelNameEncoded, strFileName
Dim strOneLine, strName
Dim iColor, nLinesDisplayed, bRef
Dim req 'Channel name as a parameter
Dim pageno, i 'pages are split into 100 line segments
Dim FileNo, NumFiles, j
'-- Localizeable Static Strings --
L_SelectAChannel_StaticText = "Select a Channel"
L_PreviousFile_StaticText = "Previous File"
L_PreviousPage_StaticText = "Previous Page"
L_Page_StaticText = "Page"
L_NextPage_StaticText = "Next Page"
L_NextFile_StaticText = "Next File"
'-- Localizeable Strings --
L_START_Text = "[START ]"
L_STOP_Text = "[STOP ]"
L_MEMBER_Text = "[MEMBER ]"
L_MESSAGE_Text = "[MESSAGE]"
L_ENTERS_Text = "[ENTERS ]"
L_LEAVES_Text = "[LEAVES ]"
L_ACTION_Text = "[ACTION ]"
L_TOPIC_Text = "[TOPIC ]"
L_ChannelName_Text = "Channel Name"
Const LinesPerPage = 100
Const HeaderOffset = 16 '# of chars until [XXXXXXXXX] tags appear
Const TagLength = 9 '# of chars between []'s
Const DataOffset = 25 'HeaderOffset + TagLength
IPMask = "xxx.xxx.xxx.xxx"
Redim aUsers(200)
Redim aColors(200)
Redim aRefs(200)
iSize = 200
iNumUsers = 0
strTranscriptPath = Server.MapPath(".")
req = request.querystring("CHNL")
If req = "" Then
Response.Write "<P><B>" + L_SelectAChannel_StaticText + "</B></P>"
Else
FileNo = request.querystring("FILENO")
If FileNo = "" Then
FileNo = 1
Else
FileNo = CInt(FileNo)
End if
pageno = request.querystring("PAGENO")
If pageno = "" Then
pageno = 1
Else
pageno = CInt(pageno)
End if
strChannelName = req
strChannelNameEncoded = Server.URLEncode(req)
Set fs = CreateObject("Scripting.FileSystemObject")
'get Channel Folder
Set fd = fs.GetFolder(strTranscriptPath + "\" + strChannelName)
'get List of all files in the folder
set fc = fd.Files
'iterate through all files until desired # - cant use item to get file directly
j = 1
NumFiles = fc.Count
For Each f in fc
If j = FileNo Then
strFileName = f.name
Set a = fs.OpenTextFile( strTranscriptPath + "\" + strChannelName + "\" + strFileName, 1, False, 0)
'read the channel name and display it
strOneLine = a.ReadLine
response.write "<P><B>"
response.write L_ChannelName_Text + ": " + strOneLine
response.write "</B></P>" + vbCrLf
'start reading at current page
for i = 1 to (pageno - 1) * LinesPerPage
'a.skipline
strOneLine = a.ReadLine
If MID(strOneLine, HeaderOffset, TagLength) = "[MEMBER ]" Then
strName = GetUsername(strOneLine)
iUser = FindUser(strName)
If iUser < 1 Then
iUser = NewUser(strName)
End If
iColor = aColors(iUser)
End If
next
i = 1
Do While (a.AtEndOfStream <> True) and (i <= LinesPerPage)
strOneLine = a.ReadLine
response.write "<P>"
If MID(strOneLine, HeaderOffset, TagLength) = "[MESSAGE]" Then
strName = GetUserName(strOneLine)
iUser = FindUser(strName)
iColor = aColors(iUser)
response.write "<Font Color = ""#" & Hex(iColor) & """>"
response.write MID(strOneLine, DataOffset)
response.write "</Font>"
ElseIf MID(strOneLine, HeaderOffset, TagLength) = "[MEMBER ]" Then
strName = GetUsername(strOneLine)
iUser = FindUser(strName)
If iUser < 1 Then
iUser = NewUser(strName)
End If
iColor = aColors(iUser)
response.write "<Font Color = ""#" & Hex(iColor) & """>"
response.write L_MEMBER_Text + MaskIp(MID(strOneLine, DataOffset))
response.write "</Font>"
ElseIf MID(strOneLine, HeaderOffset, TagLength) = "[ENTERS ]" Then
response.write L_ENTERS_Text + MID(strOneLine, DataOffset)
ElseIf MID(strOneLine, HeaderOffset, TagLength) = "[LEAVES ]" Then
response.write L_LEAVES_Text + MID(strOneLine, DataOffset)
ElseIf MID(strOneLine, HeaderOffset, TagLength) = "[START ]" Then
response.write L_START_Text + MID(strOneLine, DataOffset)
ElseIf MID(strOneLine, HeaderOffset, TagLength) = "[TOPIC ]" Then
response.write L_TOPIC_Text + MID(strOneLine, DataOffset)
ElseIf MID(strOneLine, HeaderOffset, TagLength) = "[STOP ]" Then
response.write L_STOP_Text + MID(strOneLine, DataOffset)
ElseIf MID(strOneLine, HeaderOffset, TagLength) = "[ACTION ]" Then
response.write L_ACTION_Text + MID(strOneLine, DataOffset)
Else
response.write MID(strOneLine, HeaderOffset)
End If
response.write "</P>" + vbCrlf
i = i + 1
Loop
a.Close
'Create Navigation links on bottom of page
'Create table to format columns neatly
response.write "<TABLE WIDTH=80% COLS=5>" + vbCrLf
response.write "<TR>" + vbCrLf
response.write "<TD WIDTH=20% >"
If FileNo > 1 Then
response.write "<A HREF=Transcript.asp?CHNL=" + strChannelNameEncoded + "&FILENO=" + CSTR(FileNo - 1) + "&PAGENO=1> Previous File</A>"
Else
response.write L_PreviousFile_StaticText
End If
response.write "</TD>" + vbCrLf
response.write "<TD WIDTH=20% >"
If pageno > 1 Then
response.write " <A HREF=Transcript.asp?CHNL=" + strChannelNameEncoded + "&FILENO=" + CSTR(FileNo) + "&PAGENO=" + CSTR(PAGENO - 1) + "> Previous Page</A>"
Else
response.write " " + L_PreviousPage_StaticText
End If
response.write "</TD>" + vbCrLf
response.write "<TD WIDTH=20% >"
response.write "<B><A HREF=Transcript.asp?CHNL=" + strChannelNameEncoded + "&FILENO=" + CSTR(FileNo) + "&PAGENO=" + CSTR(PAGENO) + "> " + L_Page_StaticText + " " + CStr(PageNo) + "</A></B>"
response.write "</TD>" + vbCrLf
response.write "<TD WIDTH=20% >"
If i >= LinesPerPage Then
response.write " <A HREF=Transcript.asp?CHNL=" + strChannelNameEncoded + "&FILENO=" + CSTR(FileNo) + "&PAGENO=" + CSTR(PAGENO + 1) + "> " + L_NextPage_StaticText + "</A>"
Else
response.write " " + L_NextPage_StaticText
End If
response.write "</TD>" + vbCrLf
response.write "<TD WIDTH=20% >"
If j < NumFiles Then
response.write " <A HREF=Transcript.asp?CHNL=" + strChannelNameEncoded + "&FILENO=" + CSTR(FileNo + 1) + "&PAGENO=1> " + L_NextFile_StaticText + "</A>"
Else
response.write " " + L_NextFile_StaticText
End If
response.write "</TD>" + vbCrLf
response.write "</TR>" + vbCrLf
response.write "</TABLE>" + vbCrLf
End If
j = j + 1
Next
End If
%>
</BODY>
</HTML>
<%
Function GetUserName(strOneLine)
Dim I
I = DataOffset
Do While (mid(strOneLine, I, 1) <> " " AND i < Len(strOneLine))
I = I + 1
Loop
GetUserName = mid(strOneLine, DataOffset, I - DataOffset)
End Function
Function FindUser(strUser)
Dim I
For I = 1 to iNumUsers
If Trim(strUser) = Trim(aUsers(I)) Then
FindUser = I
Exit Function
End If
Next
FindUser = -1
End Function
Function NewUser(strUser)
If iNumUsers >= iSize Then
iSize = iSize + 200
Redim preserve aUsers(iSize)
Redim preserve aColors(iSize)
End If
iNumUsers = iNumUsers + 1
aColors(iNumUsers) = CLng(Rnd * 16000000)
aUsers(iNumUsers) = strUser
NewUser = iNumUsers
End Function
Function MaskIp(strUserInfo)
Dim I, StartIp, EndIp
StartIp = 0
For I = 1 to Len(strUserInfo)
If Mid(strUserInfo, I, 1) = "@" Then
StartIp = I + 1
Exit For
End If
Next
EndIp = 0
For I = StartIp to Len(strUserInfo) - 4
If Mid(strUserInfo, I, 4) = "Real" Then
EndIp = I - 2
Exit For
End If
Next
strMasked = Mid(strUserInfo, 1, StartIp - 1)
For I = StartIp To EndIp
If Mid(strUserInfo, I, 1) = "." Then
strMasked = strMasked + "."
Else
strMasked = strMasked + "x"
End If
Next
strMasked = strMasked + Mid(strUserInfo, EndIp + 1)
MaskIp = strMasked
End Function
%>