<%--
  The contents of this file are subject to the Mozilla Public License Version 1.1
  (the "License"); you may not use this file except in compliance with the License.
  You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.

  Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
  WARRANTY OF ANY KIND, either express or implied. See the License for the specific
  language governing rights and limitations under the License.
  
  The Original Code is the Venice Web Communities System.
  
  The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
  for Silverwrist Design Studios.  Portions created by Eric J. Bowersox are
  Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios.  All Rights Reserved.

  Contributor(s): 
--%>
<%@ page import = "java.util.*" %>
<%@ page import = "com.silverwrist.util.StringUtil" %>
<%@ page import = "com.silverwrist.venice.core.*" %>
<%@ page import = "com.silverwrist.venice.servlets.Variables" %>
<%@ page import = "com.silverwrist.venice.servlets.format.*" %>
<%
  TopicPosts data = TopicPosts.retrieve(request);
  Variables.failIfNull(data);
  RenderData rdat = RenderConfig.createRenderData(application,request,response);
%>
<% if (rdat.useHTMLComments()) { %><!-- <%= data.getIdentifyingData() %> --><% } %>
<SPAN CLASS="chead1"><%= rdat.getStdFontTag(ColorSelectors.CONTENT_HEADER,5) %><B>
  <%= data.getTopicName() %>
</B></FONT></SPAN>
&nbsp;&nbsp;
<SPAN CLASS="chead2"><%= rdat.getStdFontTag(ColorSelectors.CONTENT_HEADER,3) %><B>
  <% if (data.isTopicArchived()) { %>(Archived)<% } else if (data.isTopicFrozen()) { %>(Frozen)<% } %>
  <%= data.getTotalMessages() %> Total; <%= data.getNewMessages() %> New;
  Last: <%= rdat.formatDateForDisplay(data.getLastUpdate()) %>
</B></FONT></SPAN>
<HR ALIGN=LEFT SIZE=2 WIDTH="90%" NOSHADE>

<TABLE BORDER=0 WIDTH="100%" CELLPADDING=0 CELLSPACING=0>
  <TR VALIGN=BOTTOM>
    <TD NOWRAP ALIGN=LEFT CLASS="content">
      <% if (rdat.useHTMLComments()) { %><!-- Topic user controls section --><% } %>
      <A HREF="<%= rdat.getEncodedServletPath("confdisp?" + data.getConfLocator()) %>"><IMG
         SRC="<%= rdat.getFullImagePath("bn_topic_list.gif") %>" ALT="Topic List" WIDTH=80 HEIGHT=24
         BORDER=0></A>
      &nbsp;
      <% if (data.isTopicHidden()) { %>
        <A HREF="<%= rdat.getEncodedServletPath("topicops?" + data.getLocator() + "&cmd=HN") %>"><IMG
         SRC="<%= rdat.getFullImagePath("bn_show_topic.gif") %>" ALT="Show Topic" WIDTH=80 HEIGHT=24
         BORDER=0></A>
      <% } else { %>
        <A HREF="<%= rdat.getEncodedServletPath("topicops?" + data.getLocator() + "&cmd=HY") %>"><IMG
         SRC="<%= rdat.getFullImagePath("bn_hide_topic.gif") %>" ALT="Hide Topic" WIDTH=80 HEIGHT=24
         BORDER=0></A>
      <% } // end if %>
      &nbsp;
      <% if (data.canDoNextTopic()) { %>
        <A HREF="<%= rdat.getEncodedServletPath("confdisp?" + data.getNextLocator() + "&rnm=1") %>"><IMG
         SRC="<%= rdat.getFullImagePath("bn_next_topic.gif") %>" ALT="Next Topic" WIDTH=80 HEIGHT=24
         BORDER=0></A>
        &nbsp;
        <% if (data.getNewMessages()>0) { %>
          <A HREF="<%= rdat.getEncodedServletPath("confdisp?" + data.getNextLocator() + "&"
                                                  + data.getRestoreLocator() + "&rnm=1") %>"><IMG
           SRC="<%= rdat.getFullImagePath("bn_next_keep_new.gif") %>" ALT="Next & Keep New" WIDTH=80 HEIGHT=24
           BORDER=0></A>
          &nbsp;
        <% } // end if %>
      <% } // end if %>
    </TD>
    <TD NOWRAP ALIGN=RIGHT CLASS="content">
      <% if (rdat.useHTMLComments()) { %><!-- Topic admin controls section --><% } %>
      <% if (data.canFreezeTopic()) { %>
        &nbsp;
        <% if (data.isTopicFrozen()) { %>
          <A HREF="<%= rdat.getEncodedServletPath("topicops?" + data.getLocator() + "&cmd=FN") %>"><IMG
           SRC="<%= rdat.getFullImagePath("bn_unfreeze_topic.gif") %>" ALT="Unfreeze Topic" WIDTH=80 HEIGHT=24
           BORDER=0></A>
        <% } else { %>
          <A HREF="<%= rdat.getEncodedServletPath("topicops?" + data.getLocator() + "&cmd=FY") %>"><IMG
           SRC="<%= rdat.getFullImagePath("bn_freeze_topic.gif") %>" ALT="Freeze Topic" WIDTH=80 HEIGHT=24
           BORDER=0></A>
        <% } // end if %>
      <% } // end if %>
      <% if (data.canArchiveTopic()) { %>
        &nbsp;
        <% if (data.isTopicArchived()) { %>
          <A HREF="<%= rdat.getEncodedServletPath("topicops?" + data.getLocator() + "&cmd=AN") %>"><IMG
           SRC="<%= rdat.getFullImagePath("bn_unarchive_topic.gif") %>" ALT="Unarchive Topic" WIDTH=80
           HEIGHT=24 BORDER=0></A>
        <% } else { %>
          <A HREF="<%= rdat.getEncodedServletPath("topicops?" + data.getLocator() + "&cmd=AY") %>"><IMG
           SRC="<%= rdat.getFullImagePath("bn_archive_topic.gif") %>" ALT="Archive Topic" WIDTH=80 HEIGHT=24
           BORDER=0></A>
        <% } // end if %>
      <% } // end if %>
      <% if (data.canDeleteTopic()) { %>
        &nbsp;
        <A HREF="<%= rdat.getEncodedServletPath("topicops?" + data.getLocator() + "&cmd=DEL") %>"><IMG
         SRC="<%= rdat.getFullImagePath("bn_delete_topic.gif") %>" ALT="Delete Topic" WIDTH=80 HEIGHT=24
         BORDER=0></A>
      <% } // end if %>
    </TD>
  </TR>
  <TR><TD COLSPAN=2>&nbsp;</TD></TR>
  <TR VALIGN=BOTTOM>
    <TD NOWRAP ALIGN=LEFT CLASS="content">
      <% if (rdat.useHTMLComments()) { %><!-- Go box --><% } %>
      <FORM METHOD="GET" ACTION="<%= rdat.getEncodedServletPath("confdisp") %>"><DIV CLASS="content">
        <INPUT TYPE="HIDDEN" NAME="sig" VALUE="<%= data.getSIGID() %>">
        <INPUT TYPE="HIDDEN" NAME="conf" VALUE="<%= data.getConfID() %>">
        <INPUT TYPE="HIDDEN" NAME="top" VALUE="<%= data.getTopicNumber() %>">
        <SPAN CLASS="cinput"><INPUT TYPE="TEXT" CLASS="cinput" NAME="pxg" VALUE="" SIZE=6
                                    MAXLENGTH=13></SPAN>&nbsp;
        <INPUT TYPE="IMAGE" SRC="<%= rdat.getFullImagePath("bn_go.gif") %>" NAME="Go" ALT="Go"
         ALIGN=BOTTOM WIDTH=80 HEIGHT=24 BORDER=0>
      </DIV></FORM>
    </TD>
    <TD NOWRAP ALIGN=RIGHT CLASS="content"><%= rdat.getStdFontTag(ColorSelectors.CONTENT_FOREGROUND,2) %>
      <% if (rdat.useHTMLComments()) { %><!-- Upper navigation linkset --><% } %>
      <A NAME="top">[</A>&nbsp;
      <A HREF="<%= rdat.getEncodedServletPath("confdisp?" + data.getLocator() + "&p1=0&p2=-1") %>">View All</A>
      <% if (data.canScrollUp()) { %>
        &nbsp;|&nbsp;
        <A HREF="<%= rdat.getEncodedServletPath("confdisp?" + data.getLocator() + "&"
                    + data.getScrollUpLocator()) %>">Scroll Up <%= data.getNumPostsPerPage() %></A>
      <% } // end if %>
      <% if (data.canScrollDown()) { %>
        &nbsp;|&nbsp;
        <A HREF="<%= rdat.getEncodedServletPath("confdisp?" + data.getLocator() + "&"
                 + data.getScrollDownLocator()) %>">Scroll Down <%= data.getNumPostsPerPage() %></A>
      <% } // end if %>
      <% if (data.canScrollDown()) { %>
        &nbsp;|&nbsp;
        <A HREF="<%= rdat.getEncodedServletPath("confdisp?" + data.getLocator() + "&"
                                                + data.getScrollToEndLocator()) %>">Scroll To End</A>
      <% } // end if %>
      &nbsp;|&nbsp;
      <A HREF="#bottom">Bottom</A>
      &nbsp;]
    </FONT></TD>
  </TR>
</TABLE>

<% if (rdat.useHTMLComments()) { %><!-- Begin Actual Messages --><% } %>
<%
  Iterator it = data.getMessageIterator();
  String last_post = rdat.getEncodedServletPath("confdisp?" + data.getLocator() + "&shac=1&p1="
                                                 + String.valueOf(data.getTotalMessages() - 1));
  boolean can_line = false;
%>
<% while (it.hasNext()) { %>
  <%
    TopicMessageContext msg = (TopicMessageContext)(it.next());
    String poster = data.getPosterName(msg);
  %>
  <% if (can_line && data.emitBreakLinePoint(msg.getPostNumber())) { %><HR WIDTH="70%"><% } %>
  <% if (data.showAdvanced()) { %>
    <BR>
<TABLE WIDTH="100%" BORDER=0 CELLPADDING=0 CELLSPACING=0><TR VALIGN=TOP><TD NOWRAP ALIGN=LEFT CLASS="content">
  <% } // end if %>
  <%= rdat.getStdFontTag(ColorSelectors.CONTENT_FOREGROUND,2) %>
    <A HREF="<%= rdat.getEncodedServletPath("confdisp?" + data.getLocator() + "&shac=1&p1="
                               + msg.getPostNumber()) %>"><%= msg.getPostNumber() %></A> of
    <A HREF="<%= last_post %>"><%= data.getTotalMessages() - 1 %></A>
    <%= rdat.getStdFontTag(ColorSelectors.CONTENT_FOREGROUND,1) %>&lt;<%= data.getMessageReference(msg) %>&gt;</FONT>
    <% if (data.showAdvanced() && msg.isHidden()) { %>
      <B><EM>(Hidden)</EM></B>
    <% } // end if %>
    <BR>
    <B><%= msg.getPseud() %></B>
    (<EM>
      <A HREF="<%= rdat.getEncodedServletPath("user/" + poster) %>" TARGET="_blank"><%= poster %></A>,
      <%= rdat.formatDateForDisplay(msg.getPostDate()) %>
    </EM>)
    <% if (msg.hasAttachment()) { %>
      <A HREF="<%= rdat.getEncodedServletPath("attachment?" + data.getConfLocator() + "&msg="
                                              + msg.getPostID()) %>"
       <% if (data.displayAttachmentInNewWindow(msg)) { %>TARGET="_blank"<% } %> ><IMG
       SRC="<%= rdat.getFullImagePath("attachment.gif") %>"
       ALT="(Attachment <%= msg.getAttachmentFilename() %> - <%= msg.getAttachmentLength() %> bytes)"
       WIDTH=16 HEIGHT=16 BORDER=0></A>
    <% } // end if %>
  </FONT><P><FONT COLOR="<%= rdat.getStdColor(ColorSelectors.CONTENT_FOREGROUND) %>">
    <% if (msg.isScribbled()) { %>
      <SPAN CLASS="post"><TT><EM><B>
        (Scribbled by <%= data.getMessageBodyText(msg) %> on
        <%= rdat.formatDateForDisplay(msg.getScribbleDate()) %>)
      </B></EM></TT></SPAN><P>
    <% } else if (msg.isHidden() && !(data.showAdvanced())) { %>
      <SPAN CLASS="post"><TT><EM><B>
        <A HREF="<%= rdat.getEncodedServletPath("confdisp?" + data.getLocator() + "&shac=1&p1="
                                                + msg.getPostNumber()) %>">(Hidden
        Message: <%= msg.getNumLines() %> <% if (msg.getNumLines()==1) { %>Line<% } else { %>Lines<% } %>)</A>
      </B></EM></TT></SPAN><P>
    <% } else { %>
      <PRE CLASS="post"><%= rdat.rewritePostData(data.getMessageBodyText(msg)) %></PRE>
    <% } // end if %>
  </FONT>
  <% if (data.showAdvanced()) { %>
    <% String po_loc = data.getLocator() + "&msg=" + msg.getPostNumber(); %>
    </TD><TD NOWRAP ALIGN=RIGHT CLASS="content">
      <% if (!(msg.isScribbled())) { %>
        <% if (msg.canHide()) { %>
          <% if (msg.isHidden()) { %>
            <A HREF="<%= rdat.getEncodedServletPath("postops?" + po_loc + "&cmd=HN") %>"><IMG
             SRC="<%= rdat.getFullImagePath("bn_show.gif") %>" ALT="Show" WIDTH=80 HEIGHT=24 BORDER=0></A><P>
          <% } else { %>
            <A HREF="<%= rdat.getEncodedServletPath("postops?" + po_loc + "&cmd=HY") %>"><IMG
             SRC="<%= rdat.getFullImagePath("bn_hide.gif") %>" ALT="Hide" WIDTH=80 HEIGHT=24 BORDER=0></A><P>
          <% } // end if %>
        <% } // end if (can hide) %> 
        <% if (msg.canScribble()) { %>
          <A HREF="<%= rdat.getEncodedServletPath("postops?" + po_loc + "&cmd=SCR") %>"><IMG
           SRC="<%= rdat.getFullImagePath("bn_scribble.gif") %>" ALT="Scribble" WIDTH=80 HEIGHT=24
           BORDER=0></A><P>
        <% } // end if (can scribble) %> 
      <% } // end if (not already scribbled) %> 
      <% if (msg.canNuke()) { %>
        <A HREF="<%= rdat.getEncodedServletPath("postops?" + po_loc + "&cmd=NUKE") %>"><IMG
         SRC="<%= rdat.getFullImagePath("bn_nuke.gif") %>" ALT="Nuke" WIDTH=80 HEIGHT=24
         BORDER=0></A><P>
      <% } // end if (can nuke) %> 
      <% if (msg.canPublish()) { %>
        <A HREF="<%= rdat.getEncodedServletPath("postops?" + po_loc + "&cmd=PU") %>"><IMG
         SRC="<%= rdat.getFullImagePath("bn_publish.gif") %>" ALT="Publish" WIDTH=80 HEIGHT=24
         BORDER=0></A><P>
      <% } // end if (can publish) %>
    </TD></TR></TABLE><BR>
  <% } // end if (showing advanced controls) %>
  <% can_line = true; %>
<% } // end while %>
<% if (rdat.useHTMLComments()) { %><!-- End Actual Messages --><% } %>

<TABLE BORDER=0 WIDTH="100%" CELLPADDING=0 CELLSPACING=0>
  <TR VALIGN=BOTTOM>
    <TD NOWRAP ALIGN=LEFT>&nbsp;</TD>
    <TD NOWRAP ALIGN=RIGHT CLASS="content"><%= rdat.getStdFontTag(ColorSelectors.CONTENT_FOREGROUND,2) %>
      <% if (rdat.useHTMLComments()) { %><!-- Lower navigation linkset --><% } %>
      <A NAME="bottom">[</A>&nbsp;
      <A HREF="<%= rdat.getEncodedServletPath("confdisp?" + data.getLocator() + "&p1=0&p2=-1") %>">View All</A>
      <% if (data.canScrollUp()) { %>
        &nbsp;|&nbsp;
        <A HREF="<%= rdat.getEncodedServletPath("confdisp?" + data.getLocator() + "&"
                   + data.getScrollUpLocator()) %>">Scroll Up <%= data.getNumPostsPerPage() %></A>
      <% } // end if %>
      <% if (data.canScrollDown()) { %>
        &nbsp;|&nbsp;
        <A HREF="<%= rdat.getEncodedServletPath("confdisp?" + data.getLocator() + "&"
               + data.getScrollDownLocator()) %>">Scroll Down <%= data.getNumPostsPerPage() %></A>
      <% } // end if %>
      <% if (data.canScrollDown()) { %>
        &nbsp;|&nbsp;
        <A HREF="<%= rdat.getEncodedServletPath("confdisp?" + data.getLocator() + "&"
                                                + data.getScrollToEndLocator()) %>">Scroll To End</A>
      <% } // end if %>
      &nbsp;|&nbsp;
      <A HREF="#top">Top</A>
      &nbsp;]
    </FONT></TD>
  </TR>
  <TR VALIGN=BOTTOM>
    <TD NOWRAP ALIGN=LEFT CLASS="content">
      <% if (rdat.useHTMLComments()) { %><!-- Topic user controls section --><% } %>
      <A HREF="<%= rdat.getEncodedServletPath("confdisp?" + data.getConfLocator()) %>"><IMG
         SRC="<%= rdat.getFullImagePath("bn_topic_list.gif") %>" ALT="Topic List" WIDTH=80 HEIGHT=24
         BORDER=0></A>
      &nbsp;
      <% if (data.isTopicHidden()) { %>
        <A HREF="<%= rdat.getEncodedServletPath("topicops?" + data.getLocator() + "&cmd=HN") %>"><IMG
         SRC="<%= rdat.getFullImagePath("bn_show_topic.gif") %>" ALT="Show Topic" WIDTH=80 HEIGHT=24
         BORDER=0></A>
      <% } else { %>
        <A HREF="<%= rdat.getEncodedServletPath("topicops?" + data.getLocator() + "&cmd=HY") %>"><IMG
         SRC="<%= rdat.getFullImagePath("bn_hide_topic.gif") %>" ALT="Hide Topic" WIDTH=80 HEIGHT=24
         BORDER=0></A>
      <% } // end if %>
      &nbsp;
      <% if (data.canDoNextTopic()) { %>
        <A HREF="<%= rdat.getEncodedServletPath("confdisp?" + data.getNextLocator() + "&rnm=1") %>"><IMG
         SRC="<%= rdat.getFullImagePath("bn_next_topic.gif") %>" ALT="Next Topic" WIDTH=80 HEIGHT=24
         BORDER=0></A>
        &nbsp;
        <% if (data.getNewMessages()>0) { %>
          <A HREF="<%= rdat.getEncodedServletPath("confdisp?" + data.getNextLocator() + "&"
                                                  + data.getRestoreLocator() + "&rnm=1") %>"><IMG
           SRC="<%= rdat.getFullImagePath("bn_next_keep_new.gif") %>" ALT="Next & Keep New" WIDTH=80 HEIGHT=24
           BORDER=0></A>
          &nbsp;
        <% } // end if %>
      <% } // end if %>
    </TD>
    <TD NOWRAP ALIGN=RIGHT>&nbsp;</TD>
  </TR>
</TABLE>

<% if (data.displayPostBox()) { %>
  <HR><SPAN STYLE="font-size: 14pt;"><%= rdat.getStdFontTag(ColorSelectors.CONTENT_FOREGROUND,3) %>
    <B>Post Message in &quot;<%= data.getTopicName() %>&quot;:</B>
  </FONT></SPAN>
  <BR>
  <FORM METHOD="POST" ACTION="<%= rdat.getEncodedServletPath("post") %>"><DIV CLASS="content">
    <INPUT TYPE="HIDDEN" NAME="sig" VALUE="<%= data.getSIGID() %>">
    <INPUT TYPE="HIDDEN" NAME="conf" VALUE="<%= data.getConfID() %>">
    <INPUT TYPE="HIDDEN" NAME="top" VALUE="<%= data.getTopicNumber() %>">
    <% if (data.canDoNextTopic()) { %>
      <INPUT TYPE="HIDDEN" NAME="next" VALUE="<%= data.getNextTopicNumber() %>">
    <% } // end if %>
    <INPUT TYPE="HIDDEN" NAME="sd" VALUE="<%= data.getTotalMessages() %>">
    <TABLE BORDER=0 CELLPADDING=0>
      <TR><TD ALIGN=LEFT COLSPAN=2 CLASS="content">
        <%= rdat.getStdFontTag(ColorSelectors.CONTENT_FOREGROUND,2) %>Your name/header:</FONT><BR>
        <SPAN CLASS="cinput"><INPUT TYPE="TEXT" CLASS="cinput" NAME="pseud" SIZE=37 MAXLENGTH=255
                                    VALUE="<%= data.getDefaultPseud() %>"></SPAN>
        <%= rdat.getStdFontTag(ColorSelectors.CONTENT_FOREGROUND,2) %><INPUT TYPE="CHECKBOX" NAME="attach" VALUE="Y"> Attach a file</FONT>
      </TD></TR>
      <TR>
        <TD ALIGN=LEFT CLASS="content">
          <%= rdat.getStdFontTag(ColorSelectors.CONTENT_FOREGROUND,2) %>Message:</FONT>
        </TD>
        <TD ALIGN=RIGHT CLASS="content"><%= rdat.getStdFontTag(ColorSelectors.CONTENT_FOREGROUND,2) %>
          <A HREF="<%= rdat.getStaticFilePath("html-reference.html") %>" TARGET="_blank">HTML Guide</A>
        </FONT></TD>
      </TR>
      <TR><TD ALIGN=LEFT COLSPAN=2 CLASS="cinput">
        <TEXTAREA NAME="pb" WRAP=SOFT ROWS=7 COLS=51></TEXTAREA>
      </TD></TR>
      <TR><TD ALIGN=CENTER COLSPAN=2 CLASS="content">
        <INPUT TYPE="IMAGE" SRC="<%= rdat.getFullImagePath("bn_preview.gif") %>" ALT="Preview" NAME="preview"
         WIDTH=80 HEIGHT=24 BORDER=0>
        &nbsp;
        <INPUT TYPE="IMAGE" SRC="<%= rdat.getFullImagePath("bn_post_reload.gif") %>" ALT="Post & Reload"
         NAME="post" WIDTH=80 HEIGHT=24 BORDER=0>
        <% if (data.canDoNextTopic()) { %>
          &nbsp;
          <INPUT TYPE="IMAGE" SRC="<%= rdat.getFullImagePath("bn_post_go_next.gif") %>" ALT="Post & Go Next"
           NAME="postnext" WIDTH=80 HEIGHT=24 BORDER=0>
        <% } // end if %>
        &nbsp;
        <INPUT TYPE="IMAGE" SRC="<%= rdat.getFullImagePath("bn_post_go_topics.gif") %>" ALT="Post & Go Topics"
         NAME="posttopics" WIDTH=80 HEIGHT=24 BORDER=0>
      </TD></TR>
    </TABLE>
  </DIV></FORM>
<% } else if (data.isTopicArchived()) { %>
  <DIV ALIGN=CENTER CLASS="content"><%= rdat.getStdFontTag(ColorSelectors.CONTENT_FOREGROUND,2) %><B>This is an
  <EM>Archived</EM> Topic</B></DIV>
<% } else if (data.isTopicFrozen()) { %>
  <DIV ALIGN=CENTER CLASS="content"><%= rdat.getStdFontTag(ColorSelectors.CONTENT_FOREGROUND,2) %><B>This is a
  <EM>Frozen</EM> Topic</B></DIV>
<% } // end if %>