Private objAPI
Private objCore
Private objXML
Private objUser
Private strHandle

Private Sub Class_Initialize()
    Set objAPI = New WAPmoAPI
    Set objCore = objAPI.Core
    Set objXML = objCore.XMLParser
    Set objUser = objCore.User
End Sub

Private Sub Class_Terminate()
    Set objUser = Nothing
    Set objXML = Nothing
    Set objCore = Nothing
    Set objAPI = Nothing
End Sub

Public Sub main()
    strHandle = Request.QueryString("Handle")
    objXML.Align = "center"
    objXML.Println MyKernel.Config("MarkerTitle")
    objXML.Align = "left"
    If MyKernel.Config("IsMarker") <> "1" Then
        objXML.Println "ùѱվر"
    ElseIf objUser.Item("Status") < USER_REGISTER Then
        Call RegisterHint
    ElseIf Request.ServerVariables("REQUEST_METHOD") = "POST" Then
        Call doPost
    Else
        Call doGet
    End If
    Call FastBack
End Sub

Private Sub RegisterHint()
    objCore.Query("Referer") = objCore.Referer
    objXML.Println "ֻעûʹǩ"
    objXML.Printf "ûע᣿"
    objXML.Println objCore.CreateA("register.asp", "ע", "")
    objXML.Printf "Ѿעˣ"
    objXML.Println objCore.CreateA("login.asp", "˵¼", "")
    objCore.Query("Referer") = Empty
End Sub

Private Sub doGet()
    Select Case LCase(strHandle)
    Case "add"
        Call doGetAdd
    Case "delete"
        Call doGetDelete
    Case Else
        Call doGetMain
    End Select
End Sub

Private Sub doGetMain()
    objXML.Println "[ǩб]"
    Dim objPage
    Dim rs
    Dim i
    Set objPage = Server.CreateObject("WMKernel.IPage")
    objPage.PageName = "Page"
    objPage.PageSize = 20
    objPage.DataType = WM_DataType
    objPage.Increment = "SeqId"
    objPage.Table = T_MARKER
    objPage.Where = "UserId=" & objUser.Item("UserId")
    objPage.Sort = "SeqId DESC"
    objPage.SortType = True
    Set rs = objPage.Exec()
    If objPage.TotalRow > 0 Then
        Dim objMarker
        Set objMarker = MyKernel.Table(T_MARKER)
        i = 0
        Do While rs.EOF = False And i < objPage.PageSize
            objMarker.Source = rs
            objXML.Printf objCore.CreateA(objMarker.Item("Content"), ((objPage.PageNum - 1) * objPage.PageSize + i + 1) & "." & objMarker.Item("Title"), "")
            objXML.Printf "["
            objXML.Printf objCore.CreateA("marker.asp?Handle=Delete&SeqId=" & objMarker.Item("SeqId"), "ɾ", "")
            objXML.Println "]"
            rs.MoveNext
            i = i + 1
        Loop
        Set objMarker = Nothing
        If objPage.PageNum < objPage.TotalPage Then
            objXML.Printf objCore.CreateA("marker.asp?Page=" & (objPage.PageNum + 1), "һҳ", "")
            objXML.Printf "|"
            objXML.Println objCore.CreateA("marker.asp?Page=" & (objPage.TotalPage), "ĩҳ", "")
        End If
        If objPage.PageNum > 1 Then
            objXML.Printf objCore.CreateA("marker.asp?Page=" & (objPage.PageNum - 1), "һҳ", "")
            objXML.Printf "|"
            objXML.Println objCore.CreateA("marker.asp?Page=" & (1), "һҳ", "")
        End If
        If objPage.TotalPage > 2 Then
            objXML.SetForm "marker.asp", "get", "", True
            Call objCore.setQuery
            objXML.SetInput "Page", "text", "", objPage.PageNum & "/" & objPage.TotalPage & "ҳ>>", "ҳ", False, 5, 5, "N*"
            objXML.SetInput "", "submit", "GO", "", "", True
        End If
    Else
        objXML.Println "δǩ"
    End If
    If TypeName(rs) <> "Nothing" Then rs.Close
    Set rs = Nothing
    Set objPage = Nothing
    objXML.Println objCore.CreateA("marker.asp?Handle=Add", "½ǩ", "")
End Sub

Private Sub doGetAdd()
    Dim strURL
    strURL = Request.QueryString("URL")
    objXML.Println "[ǩ]"
    objXML.SetForm objCore.FormatURL("marker.asp?Handle=Add&URL=" & Server.URLEncode(strURL)), "post", "", True
    objXML.SetInput "Title", "text", "", "ǩ⣺", " ӢĻ֣ܳ200ֽڣ100֣", True
    If strURL = "" Then
        objXML.SetInput "Content", "text", "", "ӵַ", "", True
    End If
    objXML.SetInput "", "submit", "ȷ", "", "", True
End Sub

Private Sub doGetDelete()
    Dim strAccept
    Dim objMarker
    Set objMarker = MyKernel.Table(T_MARKER)
    strAccept = Request.QueryString("Accept")
    If objMarker.Exec("*", "SeqId=" & atol(Request.QueryString("SeqId"))) = False Then
        objXML.Println "ҲҪɾǩ"
    ElseIf objMarker.Item("UserId") <> objUser.Item("UserId") Then
        objXML.Println "ҲҪɾǩ"
    ElseIf strAccept = "YES" Then
        objXML.Println "ǩ[" & objMarker.Item("Title") & "]ѳɹɾ"
        SafeExecute "DELETE FROM " & T_MARKER & " WHERE SeqId=" & objMarker.Item("SeqId")
        SafeExecute "UPDATE " & T_USER & " SET MarkerTotal=MarkerTotal-1 WHERE SeqId=" & objUser.Item("SeqId")
        MyKernel.Memory("MarkerTotal") = objUser.Item("MarkTotal") - 1
    Else
        objXML.Println "ȷҪɾǩ[" & objMarker.Item("Title") & "]ô"
        objXML.Println objCore.CreateA("marker.asp?Handle=Delete&SeqId=" & objMarker.Item("SeqId") & "&Accept=YES", "ȷ", "")
    End If
    Set objMarker = Nothing
    objXML.Println objCore.CreateA("marker.asp", "" & MyKernel.Config("MarkerTitle"), objCore.CreateImg("back.gif", ""))
End Sub

Private Sub doPost()
    Select Case LCase(strHandle)
    Case "add"
        Call doPostAdd
    Case Else
    End Select
End Sub

Private Sub doPostAdd()
    Dim MyIO
    Dim blnError
    Dim strError
    Dim objMarker
    Set MyIO = Server.CreateObject("WMCore.IIO")
    Set objMarker = MyKernel.Table(T_MARKER)
    If MyIO.Parse(KBYTE) <> 0 Then
        objXML.Println "󳤶ȣ" & KBYTE
    Else
        objMarker.Item("Title") = MyIO.Form("Title", 65001)
        objMarker.Item("Content") = MyIO.QueryString("URL")
        If objMarker.Item("Content") = "" Then
            objMarker.Item("Content") = MyIO.Form("Content", 65001)
        End If
        If objMarker.Item("Title") = "" Then
            blnError = True
            strError = "ǩ"
        ElseIf objMarker.Item("Content") = "" Then
            blnError = True
            strError = "ӵַ"
        ElseIf objMarker.Exec("SeqId", "UserId=" & objUser.Item("UserId") & " AND (Title='" & SafeString(objMarker.Item("Title")) & "' Or Content='" & SafeString(objMarker.Item("Content")) & "')") Then
            blnError = True
            strError = "ǩѾӹ"
        ElseIf objUser.Item("MarkerTotal") > atoi(MyKernel.Config("MarkerTotal")) Then
            blnError = True
            strError = "ֻ" & MyKernel.Config("MarkerTotal") & "ǩ" & vbCrLf & _
            "" & objUser.Item("MarkerTotal") & "ǩ"
        Else
            blnError = False
            strError = "ǩӳɹ"
            Dim strSQL
            strSQL = "INSERT INTO $(Table) (UserName,UserId,Title,Content,Intime,Outime) VALUES ('$(UserName)',$(UserId),'$(Title)','$(Content)',$(Timeval),$(Timeval))"
            strSQL = Replace(strSQL, "$(Table)", T_MARKER)
            strSQL = Replace(strSQL, "$(UserName)", SafeString(objUser.Item("Nick")))
            strSQL = Replace(strSQL, "$(UserId)", objUser.Item("UserId"))
            strSQL = Replace(strSQL, "$(Title)", SafeString(objMarker.Item("Title")))
            strSQL = Replace(strSQL, "$(Content)", SafeString(objMarker.Item("Content")))
            strSQL = Replace(strSQL, "$(Timeval)", getTime(Now()))
            SafeExecute strSQL
            strSQL = "UPDATE $(Table) SET MarkerTotal=MarkerTotal+1 WHERE SeqId=$(SeqId)"
            strSQL = Replace(strSQL, "$(Table)", T_USER)
            strSQL = Replace(strSQL, "$(SeqId)", objUser.Item("SeqId"))
            SafeExecute strSQL
            MyKernel.Memory("MarkerTotal") = objUser.Item("MarkTotal") + 1
        End If
        Set objMarker = Nothing
        objXML.Println strError
        If blnError Then
            Call doGetAdd
        End If
    End If
    Set MyIO = Nothing
End Sub

Private Sub FastBack()
    Dim strURL
    strURL = Request.QueryString("URL")
    If strURL <> "" Then
        objXML.Println objCore.CreateA(strURL, "ٷ", objCore.CreateImg("back.gif", ""))
    End If
    If strHandle <> "" And MyKernel.Config("IsMarker") = "1" Then
        objXML.Println objCore.CreateA("marker.asp", MyKernel.Config("MarkerTitle"), objCore.CreateImg("back.gif", ""))
    End If
    objXML.Println objCore.CreateA("console.asp", "ؿ̨", objCore.CreateImg("back.gif", ""))
    objCore.ExportBackHome "1", "ҳ"
    objXML.Println ""
End Sub
