<%class cls_article_Page
    '   Dim MyPage
    '   set MyPage = New article_Page
    '   MyPage.Page = 1
    '   MyPage.PageType = 1
    '   MyPage.MaxPerPage = 5000
    '   MyPage.FileName = "?ID=1&Page={Page}"
    '   MyPage.Body =
    '   Set MyPage = Nothing
    Private strContent, Mesky_currentPage, Mesky_PageType, Mesky_MaxPerPage, Mesky_FileName
    Public ResultBody, ResultPageNum
    '================================================================
    ' Class_Initialize 类的初始化
    '================================================================
    Private Sub Class_Initialize()
        ResultBody = ""
        ResultPageNum = 0
        Mesky_currentPage = 1
        Mesky_PageType = 1
        Mesky_MaxPerPage = 5000
        Mesky_FileName = ""
    End Sub
    '================================================================
    ' Class_Terminate 类注销
    '================================================================
    Private Sub Class_Terminate()
        strContent = Null
        Mesky_currentPage = Null
        Mesky_PageType = Null
        Mesky_MaxPerPage = Null
        Mesky_FileName = Null
        ResultBody = Null
    End Sub
    
    '================================================================
    '设置文章内容
    '================================================================
    Public Property Let Body(ByVal strBody)
        Dim arrContent
        strContent = strBody
        
        If Mesky_PageType = 1 Then  '采用手动分页方式显示文章具体的内容
            If InStr(strContent, "[NextPage]") <= 0 Then
                ResultBody = strContent
            Else
                arrContent = Split(strContent, "[NextPage]")
                ResultPageNum = UBound(arrContent) + 1
                ResultBody = arrContent(Mesky_currentPage - 1)
            End If
        ElseIf Mesky_PageType = 2 Then  '采用自动分页方式显示文件具体的内容
        
        Dim ContentLen, MaxPerPage, i, lngBound
        Dim BeginPoint, EndPoint
        ContentLen = Len(strContent)
        If ContentLen <= Mesky_MaxPerPage Then
            ResultBody = strContent
            'ResultBody = ResultBody & "</p><p align=""center""><font color=""red""><b>[1]</b></font></p>"
        Else
            ResultPageNum = ContentLen \ Mesky_MaxPerPage
            If Mesky_MaxPerPage * ResultPageNum < ContentLen Then
                ResultPageNum = ResultPageNum + 1
            End If
            lngBound = ContentLen        '最大误差范围
            If Mesky_currentPage < 1 Then Mesky_currentPage = 1
            If Mesky_currentPage > ResultPageNum Then Mesky_currentPage = ResultPageNum

            Dim lngTemp
            Dim lngTemp1, lngTemp1_1, lngTemp1_2, lngTemp1_1_1, lngTemp1_1_2, lngTemp1_1_3, lngTemp1_2_1, lngTemp1_2_2, lngTemp1_2_3
            Dim lngTemp2, lngTemp2_1, lngTemp2_2, lngTemp2_1_1, lngTemp2_1_2, lngTemp2_2_1, lngTemp2_2_2
            Dim lngTemp3, lngTemp3_1, lngTemp3_2, lngTemp3_1_1, lngTemp3_1_2, lngTemp3_2_1, lngTemp3_2_2
            Dim lngTemp4, lngTemp4_1, lngTemp4_2, lngTemp4_1_1, lngTemp4_1_2, lngTemp4_2_1, lngTemp4_2_2
            Dim lngTemp5, lngTemp5_1, lngTemp5_2
            Dim lngTemp6, lngTemp6_1, lngTemp6_2
        
            If Mesky_currentPage = 1 Then
                BeginPoint = 1
            Else
                BeginPoint = Mesky_MaxPerPage * (Mesky_currentPage - 1) + 1
            
                lngTemp1_1_1 = InStr(BeginPoint, strContent, "</table>", 1)
                lngTemp1_1_2 = InStr(BeginPoint, strContent, "</TABLE>", 1)
                lngTemp1_1_3 = InStr(BeginPoint, strContent, "</Table>", 1)
                If lngTemp1_1_1 > 0 Then
                    lngTemp1_1 = lngTemp1_1_1
                ElseIf lngTemp1_1_2 > 0 Then
                    lngTemp1_1 = lngTemp1_1_2
                ElseIf lngTemp1_1_3 > 0 Then
                    lngTemp1_1 = lngTemp1_1_3
                Else
                    lngTemp1_1 = 0
                End If
                            
                lngTemp1_2_1 = InStr(BeginPoint, strContent, "<table", 1)
                lngTemp1_2_2 = InStr(BeginPoint, strContent, "<TABLE", 1)
                lngTemp1_2_3 = InStr(BeginPoint, strContent, "<Table", 1)
                If lngTemp1_2_1 > 0 Then
                    lngTemp1_2 = lngTemp1_2_1
                ElseIf lngTemp1_2_2 > 0 Then
                    lngTemp1_2 = lngTemp1_2_2
                ElseIf lngTemp1_2_3 > 0 Then
                    lngTemp1_2 = lngTemp1_2_3
                Else
                    lngTemp1_2 = 0
                End If
            
                If lngTemp1_1 = 0 And lngTemp1_2 = 0 Then
                    lngTemp1 = BeginPoint
                Else
                    If lngTemp1_1 > lngTemp1_2 Then
                        lngTemp1 = lngTemp1_2
                    Else
                        lngTemp1 = lngTemp1_1 + 8
                    End If
                End If

                lngTemp2_1_1 = InStr(BeginPoint, strContent, "</p>", 1)
                lngTemp2_1_2 = InStr(BeginPoint, strContent, "</P>", 1)
                If lngTemp2_1_1 > 0 Then
                    lngTemp2_1 = lngTemp2_1_1
                ElseIf lngTemp2_1_2 > 0 Then
                    lngTemp2_1 = lngTemp2_1_2
                Else
                    lngTemp2_1 = 0
                End If
                        
                lngTemp2_2_1 = InStr(BeginPoint, strContent, "<p", 1)
                lngTemp2_2_2 = InStr(BeginPoint, strContent, "<P", 1)
                If lngTemp2_2_1 > 0 Then
                    lngTemp2_2 = lngTemp2_2_1
                ElseIf lngTemp2_2_2 > 0 Then
                    lngTemp2_2 = lngTemp2_2_2
                Else
                    lngTemp2_2 = 0
                End If
            
                If lngTemp2_1 = 0 And lngTemp2_2 = 0 Then
                    lngTemp2 = BeginPoint
                Else
                    If lngTemp2_1 > lngTemp2_2 Then
                        lngTemp2 = lngTemp2_2
                    Else
                        lngTemp2 = lngTemp2_1 + 4
                    End If
                End If

                lngTemp3_1_1 = InStr(BeginPoint, strContent, "</ur>", 1)
                lngTemp3_1_2 = InStr(BeginPoint, strContent, "</UR>", 1)
                If lngTemp3_1_1 > 0 Then
                    lngTemp3_1 = lngTemp3_1_1
                ElseIf lngTemp3_1_2 > 0 Then
                    lngTemp3_1 = lngTemp3_1_2
                Else
                    lngTemp3_1 = 0
                End If
            
                lngTemp3_2_1 = InStr(BeginPoint, strContent, "<ur", 1)
                lngTemp3_2_2 = InStr(BeginPoint, strContent, "<UR", 1)
                If lngTemp3_2_1 > 0 Then
                    lngTemp3_2 = lngTemp3_2_1
                ElseIf lngTemp3_2_2 > 0 Then
                    lngTemp3_2 = lngTemp3_2_2
                Else
                    lngTemp3_2 = 0
                End If
                    
                If lngTemp3_1 = 0 And lngTemp3_2 = 0 Then
                    lngTemp3 = BeginPoint
                Else
                    If lngTemp3_1 > lngTemp3_2 Then
                        lngTemp3 = lngTemp3_2
                    Else
                        lngTemp3 = lngTemp3_1 + 5
                    End If
                End If
            
                If lngTemp1 < lngTemp2 Then
                    lngTemp = lngTemp2
                Else
                    lngTemp = lngTemp1
                End If
                If lngTemp < lngTemp3 Then lngTemp = lngTemp3
                
                If lngTemp > BeginPoint And lngTemp <= BeginPoint + lngBound Then
                    BeginPoint = lngTemp
                Else
                    lngTemp4_1_1 = InStr(BeginPoint, strContent, "</li>", 1)
                    lngTemp4_1_2 = InStr(BeginPoint, strContent, "</LI>", 1)
                    If lngTemp4_1_1 > 0 Then
                        lngTemp4_1 = lngTemp4_1_1
                    ElseIf lngTemp4_1_2 > 0 Then
                        lngTemp4_1 = lngTemp4_1_2
                    Else
                        lngTemp4_1 = 0
                    End If
                
                    lngTemp4_2_1 = InStr(BeginPoint, strContent, "<li", 1)
                    lngTemp4_2_1 = InStr(BeginPoint, strContent, "<LI", 1)
                    If lngTemp4_2_1 > 0 Then
                        lngTemp4_2 = lngTemp4_2_1
                    ElseIf lngTemp4_2_2 > 0 Then
                        lngTemp4_2 = lngTemp4_2_2
                    Else
                        lngTemp4_2 = 0
                    End If
                
                    If lngTemp4_1 = 0 And lngTemp4_2 = 0 Then
                        lngTemp4 = BeginPoint
                    Else
                        If lngTemp4_1 > lngTemp4_2 Then
                            lngTemp4 = lngTemp4_2
                        Else
                            lngTemp4 = lngTemp4_1 + 5
                        End If
                    End If
                
                    If lngTemp4 > BeginPoint And lngTemp4 <= BeginPoint + lngBound Then
                        BeginPoint = lngTemp4
                    Else
                        lngTemp5_1 = InStr(BeginPoint, strContent, "<img", 1)
                        lngTemp5_2 = InStr(BeginPoint, strContent, "<IMG", 1)
                        If lngTemp5_1 > 0 Then
                            lngTemp5 = lngTemp5_1
                        ElseIf lngTemp5_2 > 0 Then
                            lngTemp5 = lngTemp5_2
                        Else
                            lngTemp5 = BeginPoint
                        End If
                    
                        If lngTemp5 > BeginPoint And lngTemp5 < BeginPoint + lngBound Then
                            BeginPoint = lngTemp5
                        Else
                            lngTemp6_1 = InStr(BeginPoint, strContent, "<br>", 1)
                            lngTemp6_2 = InStr(BeginPoint, strContent, "<BR>", 1)
                            If lngTemp6_1 > 0 Then
                                lngTemp6 = lngTemp6_1
                            ElseIf lngTemp6_2 > 0 Then
                                lngTemp6 = lngTemp6_2
                            Else
                                lngTemp6 = 0
                            End If
                            If lngTemp6 > BeginPoint And lngTemp6 < BeginPoint + lngBound Then BeginPoint = lngTemp6 + 4
                        End If
                    End If
                End If
            End If
            If Mesky_currentPage = ResultPageNum Then
                EndPoint = ContentLen
            Else
                EndPoint = Mesky_MaxPerPage * Mesky_currentPage
                If EndPoint >= ContentLen Then
                    EndPoint = ContentLen
                Else
                    lngTemp1_1_1 = InStr(EndPoint, strContent, "</table>", 1)
                    lngTemp1_1_2 = InStr(EndPoint, strContent, "</TABLE>", 1)
                    lngTemp1_1_3 = InStr(EndPoint, strContent, "</Table>", 1)
                    If lngTemp1_1_1 > 0 Then
                        lngTemp1_1 = lngTemp1_1_1
                    ElseIf lngTemp1_1_2 > 0 Then
                        lngTemp1_1 = lngTemp1_1_2
                    ElseIf lngTemp1_1_3 > 0 Then
                        lngTemp1_1 = lngTemp1_1_3
                    Else
                        lngTemp1_1 = 0
                    End If
                            
                    lngTemp1_2_1 = InStr(EndPoint, strContent, "<table", 1)
                    lngTemp1_2_2 = InStr(EndPoint, strContent, "<TABLE", 1)
                    lngTemp1_2_3 = InStr(EndPoint, strContent, "<Table", 1)
                    If lngTemp1_2_1 > 0 Then
                        lngTemp1_2 = lngTemp1_2_1
                    ElseIf lngTemp1_2_2 > 0 Then
                        lngTemp1_2 = lngTemp1_2_2
                    ElseIf lngTemp1_2_3 > 0 Then
                        lngTemp1_2 = lngTemp1_2_3
                    Else
                        lngTemp1_2 = 0
                    End If
            
                    If lngTemp1_1 = 0 And lngTemp1_2 = 0 Then
                        lngTemp1 = EndPoint
                    Else
                        If lngTemp1_1 > lngTemp1_2 Then
                            lngTemp1 = lngTemp1_2 - 1
                        Else
                            lngTemp1 = lngTemp1_1 + 7
                        End If
                    End If

                    lngTemp2_1_1 = InStr(EndPoint, strContent, "</p>", 1)
                    lngTemp2_1_2 = InStr(EndPoint, strContent, "</P>", 1)
                    If lngTemp2_1_1 > 0 Then
                        lngTemp2_1 = lngTemp2_1_1
                    ElseIf lngTemp2_1_2 > 0 Then
                        lngTemp2_1 = lngTemp2_1_2
                    Else
                        lngTemp2_1 = 0
                    End If
                        
                    lngTemp2_2_1 = InStr(EndPoint, strContent, "<p", 1)
                    lngTemp2_2_2 = InStr(EndPoint, strContent, "<P", 1)
                    If lngTemp2_2_1 > 0 Then
                        lngTemp2_2 = lngTemp2_2_1
                    ElseIf lngTemp2_2_2 > 0 Then
                        lngTemp2_2 = lngTemp2_2_2
                    Else
                        lngTemp2_2 = 0
                    End If
            
                    If lngTemp2_1 = 0 And lngTemp2_2 = 0 Then
                        lngTemp2 = EndPoint
                    Else
                        If lngTemp2_1 > lngTemp2_2 Then
                            lngTemp2 = lngTemp2_2 - 1
                        Else
                            lngTemp2 = lngTemp2_1 + 3
                        End If
                    End If

                    lngTemp3_1_1 = InStr(EndPoint, strContent, "</ur>", 1)
                    lngTemp3_1_2 = InStr(EndPoint, strContent, "</UR>", 1)
                    If lngTemp3_1_1 > 0 Then
                        lngTemp3_1 = lngTemp3_1_1
                    ElseIf lngTemp3_1_2 > 0 Then
                        lngTemp3_1 = lngTemp3_1_2
                    Else
                        lngTemp3_1 = 0
                    End If
            
                    lngTemp3_2_1 = InStr(EndPoint, strContent, "<ur", 1)
                    lngTemp3_2_2 = InStr(EndPoint, strContent, "<UR", 1)
                    If lngTemp3_2_1 > 0 Then
                        lngTemp3_2 = lngTemp3_2_1
                    ElseIf lngTemp3_2_2 > 0 Then
                        lngTemp3_2 = lngTemp3_2_2
                    Else
                        lngTemp3_2 = 0
                    End If
                    
                    If lngTemp3_1 = 0 And lngTemp3_2 = 0 Then
                        lngTemp3 = EndPoint
                    Else
                        If lngTemp3_1 > lngTemp3_2 Then
                            lngTemp3 = lngTemp3_2 - 1
                        Else
                            lngTemp3 = lngTemp3_1 + 4
                        End If
                    End If
            
                    If lngTemp1 < lngTemp2 Then
                        lngTemp = lngTemp2
                    Else
                        lngTemp = lngTemp1
                    End If
                    If lngTemp < lngTemp3 Then lngTemp = lngTemp3

                    If lngTemp > EndPoint And lngTemp <= EndPoint + lngBound Then
                        EndPoint = lngTemp
                    Else
                        lngTemp4_1_1 = InStr(EndPoint, strContent, "</li>", 1)
                        lngTemp4_1_2 = InStr(EndPoint, strContent, "</LI>", 1)
                        If lngTemp4_1_1 > 0 Then
                            lngTemp4_1 = lngTemp4_1_1
                        ElseIf lngTemp4_1_2 > 0 Then
                            lngTemp4_1 = lngTemp4_1_2
                        Else
                            lngTemp4_1 = 0
                        End If
                
                        lngTemp4_2_1 = InStr(EndPoint, strContent, "<li", 1)
                        lngTemp4_2_1 = InStr(EndPoint, strContent, "<LI", 1)
                        If lngTemp4_2_1 > 0 Then
                            lngTemp4_2 = lngTemp4_2_1
                        ElseIf lngTemp4_2_2 > 0 Then
                            lngTemp4_2 = lngTemp4_2_2
                        Else
                            lngTemp4_2 = 0
                        End If
                
                        If lngTemp4_1 = 0 And lngTemp4_2 = 0 Then
                            lngTemp4 = EndPoint
                        Else
                            If lngTemp4_1 > lngTemp4_2 Then
                                lngTemp4 = lngTemp4_2 - 1
                            Else
                                lngTemp4 = lngTemp4_1 + 4
                            End If
                        End If
                
                        If lngTemp4 > EndPoint And lngTemp4 <= EndPoint + lngBound Then
                            EndPoint = lngTemp4
                        Else
                            lngTemp5_1 = InStr(EndPoint, strContent, "<img", 1)
                            lngTemp5_2 = InStr(EndPoint, strContent, "<IMG", 1)
                            If lngTemp5_1 > 0 Then
                                lngTemp5 = lngTemp5_1 - 1
                            ElseIf lngTemp5_2 > 0 Then
                                lngTemp5 = lngTemp5_2 - 1
                            Else
                                lngTemp5 = EndPoint
                            End If
                    
                            If lngTemp5 > EndPoint And lngTemp5 < EndPoint + lngBound Then
                                EndPoint = lngTemp5
                            Else
                                lngTemp6_1 = InStr(EndPoint, strContent, "<br>", 1)
                                lngTemp6_2 = InStr(EndPoint, strContent, "<BR>", 1)
                                If lngTemp6_1 > 0 Then
                                    lngTemp6 = lngTemp6_1 + 3
                                ElseIf lngTemp6_2 > 0 Then
                                    lngTemp6 = lngTemp6_2 + 3
                                Else
                                    lngTemp6 = EndPoint
                                End If
                    
                                If lngTemp6 > EndPoint And lngTemp6 < EndPoint + lngBound Then EndPoint = lngTemp6
                            End If
                        End If
                    End If
                End If
            End If
            ResultBody = Mid(strContent, BeginPoint, EndPoint - BeginPoint)
            ResultBody = ResultBody & "</p>"
        End If

        
        End If
        
    End Property
    '设置当前页
    Public Property Let Page(ByVal intPage)
        Mesky_currentPage = intPage
    End Property
    '分页类型
    Public Property Let PageType(ByVal intType)
        Mesky_PageType = intType
    End Property
    '分页字数
    Public Property Let MaxPerPage(ByVal intNum)
        Mesky_MaxPerPage = intNum
    End Property
    '文件名
    Public Property Let FileName(ByVal strFileName)
        Mesky_FileName = strFileName
    End Property
    
    
    Public Function showPage()
        Dim s, i
        s = s & "<table align=""center"">" & vbCrLf
        s = s & "  <tr><td>"
        If Mesky_currentPage > 1 Then
            s = s & "<a href=""" & Replace(Mesky_FileName, "{Page}", Mesky_currentPage - 1) & """>上一页</a>"
        Else
            s = s & "上一页"
        End If
        s = s & "</td><td>" & vbCrLf
        For i = 1 To ResultPageNum
            If i = Mesky_currentPage Then
                s = s & "<font color=""red"">[" & CStr(i) & "]</font> "
            Else
                s = s & "<a href=""" & Replace(Mesky_FileName, "{Page}", i) & """>[" & i & "]</a> "
            End If
            If i Mod 14 = 0 Then s = s & "<br>"
        Next
        s = s & "</td><td>"
        If Mesky_currentPage < ResultPageNum Then
            s = s & "<a href=""" & Replace(Mesky_FileName, "{Page}", Mesky_currentPage + 1) & """>下一页</a>"
        Else
            s = s & "下一页"
        End If
        s = s & "</td></tr>" & vbCrLf
        s = s & "</table>" & vbCrLf
        showPage = s
        s = Null
    End Function
End Class %>