Index: default/.tplinfo
===================================================================
RCS file: default/.tplinfo
diff -N default/.tplinfo
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ default/.tplinfo    16 Dec 2001 21:30:23 -0000      1.1
@@ -0,0 +1,3 @@
+{
+    inheritance => '../common'
+}
Index: default/category_list.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/category_list.html,v
retrieving revision 1.19
retrieving revision 1.28
diff -b -u -r1.19 -r1.28
--- default/category_list.html  26 Oct 2001 00:03:41 -0000      1.19
+++ default/category_list.html  18 Dec 2001 01:47:04 -0000      1.28
@@ -9,7 +9,8 @@
 This is the main page that someone first sees when visiting
 a forum. It contains a list of all the categories, and
 (depending on settings and forum permissions) any or all of
-the forums contained within each category.
+the forums contained within each category (controlled by
+permissions and the cat_show_forums field).

 --%>
 <html>
@@ -23,11 +24,11 @@
 <%include include_header.html%>
 <%body_table%>
   <tr>
-    <td align=left valign=bottom>
-      <%title_font%><%site_title%><%/title_font%>
+    <td align=left valign=top>
+      <br><a href="gforum.cgi?<%hidden_query%>"><%title_font%><%site_title%><%/title_font%></a>
     </td>
     <td>
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
   <tr>
@@ -47,12 +48,11 @@
       <%/body_font%>
     </td>
   </tr>
-<%if num_cats%>
+<%if num_root_cats%>
   <tr>
     <td colspan=2>
       <%list_table%>
        <%top_row%>
-         <td style="border-right:1px solid <%dark_beige%>" width="1">&nbsp;</td>
          <td style="border-right:1px solid <%dark_beige%>"><%top_row_font%>Forum Name<%/top_row_font%></td>
           <td style="border-right:1px solid <%dark_beige%>" width="1"><%top_row_font%>Threads<%/top_row_font%></td>
          <td style="border-right:1px solid <%dark_beige%>" width="1"><%top_row_font%>Posts<%/top_row_font%></td>
@@ -62,38 +62,64 @@
          <td width="125"><%top_row_font%>Moderators<%/top_row_font%></td>
 --%>
        </tr>
-<%  loop cat_loop%>
+<%--
+'everything' loop:
+
+This loop variable has everything in it - categories AND forums. You can tell
+which the current element is by doing: <%if forum_id%> - forum_id will only be
+set for forums.
+
+--%>
+<%GForum::Utils::new_alternation(everything)%>
+<%  loop everything%>
+<%    ifnot forum_id%><%-- In other words, if this is a category --%>
        <%header_row%>
-         <td colspan=5><%-- make this 6 if showing the moderator column --%>
+        <td colspan=4<%-- make this 5 if showing the moderator column --%> style="border-bottom: <%dark_beige%> 1px solid<%unless previous_was_cat%>; border-top: <%dark_beige%> 1px solid<%endunless%>">
            <a name="<%cat_id%>"></a>
-           <%header_font%><a href="gforum.cgi?category=<%cat_id%>;<%hidden_query%>"><%cat_name%></a><%/header_font%>
+          <%header_font%>
+            <%if cat_depth%><img src="<%image_url%>/clear_shim.gif" height=1 width="<%cat_depth * 25%>"><%endif%><a href="gforum.cgi?category=<%cat_id%>;<%hidden_query%>"><%cat_name%></a>
+            <%if current_user_id and cat_show_forums%><a href="gforum.cgi?<%if cats_query%><%cats_query%>;<%endif%><%if cat_hidden%>un<%endif%>hide_cat=<%cat_id%>;<%hidden_query%>"><small><%if cat_hidden%>[+]<%else%>[-]<%endif%></small></a><%endif%>
+            <%if cat_desc%> - <%cat_desc%><%endif%>
+          <%/header_font%>
+         </td>
+       </tr>
+<%      if not num_forums and not num_subcats%>
+       <tr>
+         <td colspan=4 bgcolor="<%GForum::Utils::alternation(everything => $odd_color, $even_color)%>" style="border-bottom: <%dark_beige%> 1px solid"><%-- colspan=5 if showing moderators --%>
+           <%if cat_depth%><img src="<%image_url%>/clear_shim.gif" height=1 width="<%cat_depth * 25%>"><%endif%><%body_font%>Sorry, there are no forums or subcategories in this category.<%/body_font%>
          </td>
        </tr>
-<%    if cat_show_forums%>
-<%      loop forum_loop%>
-<%        if permission > 0%>
-       <tr bgcolor="<%if odd%><%odd_color%><%else%><%even_color%><%endif%>">
-         <td bgcolor="white" valign=top align=center style="border-right:1px solid <%dark_beige%>;">
-<%          if forum_new%>
+<%      endif%>
+<%    else%><%-- A forum --%>
+       <tr bgcolor="<%GForum::Utils::alternation(everything => $odd_color, $even_color)%>">
+         <td valign=top style="border-right:1px solid <%dark_beige%>;">
+            <table border=0 cellspacing=0 cellpadding=0 width="100%">
+              <tr>
+                <td width="0%">
+                  <%if cat_depth%><img src="<%image_url%>/clear_shim.gif" height=0 width="<%cat_depth * 25%>"><%endif%>
+                </td>
+                <td width="100%">
+                 <%body_font%>
+<%        if forum_permission >= 2%>
+<%          if forum_new > 0%>
            <img src="<%image_url%>/recent.gif" width="15" height="11" alt="New posts!">
 <%          else%>
            <img src="<%image_url%>/no_recent.gif" width="15" height="11" alt="No new posts">
 <%          endif%>
-         </td>
-         <td valign=top style="border-right:1px solid <%dark_beige%>;">
-           <%body_font%>
-<%          if permission >= 2%>
-             <%body_font%><b><a href="gforum.cgi?forum=<%forum_id%>;<%hidden_query%>"><%forum_name%></a></b><%/body_font%><br>
+                   <b><a href="gforum.cgi?forum=<%forum_id%>;<%hidden_query%>"><%forum_name%></a></b><br>
 <%          else%>
              <%forum_name%><br>
 <%          endif%>
              <%forum_desc%>
            <%/body_font%>
          </td>
+              </tr>
+            </table>
+         </td>
           <td valign=top style="border-right:1px solid <%dark_beige%>">
             <%body_font%>
               <%forum_total_threads%>
-              <%if forum_new_threads%>
+              <%if forum_new_threads > 0%>
               <font color="red"><small><br><b><%forum_new_threads%>&nbsp;NEW<br></b></small></font>
               <%endif%>
             <%/body_font%>
@@ -101,7 +127,7 @@
          <td valign=top style="border-right:1px solid <%dark_beige%>">
            <%body_font%>
              <%forum_total%>
-<%          if forum_new%>
+<%      if forum_new > 0%>
              <font color="red"><small><br><b><%forum_new%>&nbsp;NEW<br></b></small></font>
 <%          endif%>
            <%/body_font%>
@@ -113,7 +139,7 @@
 <%          else%>
              &nbsp;
 <%          endif%>
-           <%-- if you put the <small> tag, put the </small> here --%><%/body_font%>
+           <%-- if you put the <small> tag above, put the </small> here --%><%/body_font%>
          </td>
 <%-- The actual moderator cell - uncomment if you want to show the moderator list. Also, you might do well to add: style="border-right:1px solid <%dark_beige%>" to the "last post" columns
          <td valign=top>
@@ -132,26 +158,6 @@
        </tr>
 <%        endif%>
 <%      endloop%>
-<%    else%>
-       <tr bgcolor="<%odd_color%>">
-         <td bgcolor="white" valign=top align=center style="border-right:1px solid <%dark_beige%>;">
-           &nbsp;
-         </td>
-         <td valign=top colspan=4><%-- colspan=5 if showing moderators --%><%body_font%>
-           <a href="gforum.cgi?category=<%cat_id%>;<%hidden_query%>"><b>Click here to view this category's forums</b></a>
-         </td>
-       </tr>
-<%    endif%>
-<%    unless forums_permitted%>
-       <tr>
-         <td colspan=5><%-- colspan=6 if showing moderators --%>
-           <%body_font%>
-             Sorry, there are no forums available in this category.
-           <%/body_font%>
-         </td>
-       </tr>
-<%    endunless%>
-<%  endloop%>
       </table>
     </td>
   </tr>
@@ -159,7 +165,7 @@
     <td colspan=2>
       <%body_font%>
        &nbsp;<br><br>
-       <img src="<%image_url%>/recent.gif" border="0" width="15" height="11" alt="New posts!"> = Forum has new posts<br>
+       <img src="<%image_url%>/recent.gif" border="0" width="15" height="11" alt="New posts!"> = Forum has new posts - <a href="gforum.cgi?do=mark_all_read;redo=<%this_do%>;<%if cats_query%><%cats_query%>;<%endif%><%hidden_query%>">Mark all read</a><br>
        <img src="<%image_url%>/no_recent.gif" border="0" width="15" height="11" alt="No new posts"> = Forum has no new posts<br>
       <%/body_font%>
     </td>
Index: default/category_view.html
===================================================================
RCS file: default/category_view.html
diff -N default/category_view.html
--- default/category_view.html  26 Oct 2001 00:03:41 -0000      1.18
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,141 +0,0 @@
-<%--
-
-File
-====
-category_view.html
-
-Description
-===========
-This is the page shown when someone clicks on a category to
-view it. It contains a list of forums for the category. Any
-forums that the user is not authorized to view are not
-shown.
-
---%>
-<html>
-<head>
-<title><%site_title%>: <%cat_name%></title>
-<%include include_css.html%>
-</head>
-
-<%body_tag%>
-<center>
-<%include include_header.html%>
-<%body_table%>
-  <tr>
-    <td align=left valign=bottom>
-      <%title_font%>
-       <a href="gforum.cgi?<%hidden_query%>"><%title_font%><%site_title%>:<%/title_font%></a> <%cat_name%>
-      <%/title_font%>
-    </td>
-    <td>
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
-    </td>
-  </tr>
-  <tr>
-    <td colspan=2>
-      <br>
-      <%list_table%>
-       <%top_row%>
-         <td style="border-right:1px solid <%dark_beige%>;" width="1">&nbsp;</td>
-         <td style="border-right:1px solid <%dark_beige%>" width="100%"><%top_row_font%>Forum&nbsp;Name<%/top_row_font%></td>
-         <td style="border-right:1px solid <%dark_beige%>" width="1"><%top_row_font%>Threads<%/top_row_font%></td>
-         <td style="border-right:1px solid <%dark_beige%>" width="1"><%top_row_font%>Posts<%/top_row_font%></td>
-         <td width="1"><%top_row_font%>Last&nbsp;Post<%/top_row_font%></td>
-<%-- If you want the moderator column to show up, uncomment this.
-     You'll also need to go through and increment the colspan's by 1 where needed.
-         <td width="125"><img src="<%image_url%>/clear_shim.gif" height=1 width=125><br><%top_row_font%>Moderators<%/top_row_font%></td>
---%>
-       </tr>
-<%loop forum_loop%>
-<%  if permission > 0%>
-       <tr bgcolor="<%if odd%><%odd_color%><%else%><%even_color%><%endif%>">
-         <td bgcolor="white" valign=top align=center style="border-right:1px solid <%dark_beige%>;">
-<%    if forum_new%>
-           <img src="<%image_url%>/recent.gif" width="15" height="11" alt="New posts!">
-<%    else%>
-           <img src="<%image_url%>/no_recent.gif" width="15" height="11" alt="No new posts">
-<%    endif%>
-         </td>
-         <td valign=top style="border-right:1px solid <%dark_beige%>;">
-           <%body_font%>
-<%    if permission >= 2%>
-             <a href="gforum.cgi?forum=<%forum_id%>;<%hidden_query%>">
-               <b><%forum_name%></b>
-             </a><br>
-<%    else%>
-             <%forum_name%><br>
-<%    endif%>
-             <%forum_desc%>
-           <%/body_font%>
-         </td>
-          <td valign=top style="border-right:1px solid <%dark_beige%>">
-            <%body_font%>
-              <%forum_total_threads%>
-              <%if forum_new_threads%>
-              <font color="red"><small><br><b><%forum_new_threads%>&nbsp;NEW<br></b></small></font>
-              <%endif%>
-            <%/body_font%>
-          </td>
-         <td valign=top style="border-right:1px solid <%dark_beige%>">
-           <%body_font%>
-             <%forum_total%>
-<%          if forum_new%>
-             <font color="RED"><small><br><b><%forum_new%>&nbsp;NEW</b></small></font>
-<%          endif%>
-           <%/body_font%>
-         </td>
-         <td valign=top>
-           <%body_font%><%-- you might want to put a <small> tag here if showing moderators --%>
-<%    if forum_total%>
-             <%nbsp forum_last_date%><br><nobr>by&nbsp;<a href="gforum.cgi?username=<%GT::CGI::escape($forum_last_poster)%>;<%hidden_query%>"><%nbsp forum_last_poster%></a>&nbsp;<a href="gforum.cgi?post=<%forum_last_id%>;<%hidden_query%>#<%forum_last_id%>"><img src="<%image_url%>/jump_last.gif" width="14" height="11" border="0" alt="Jump to post"></a></nobr>
-<%    else%>
-             &nbsp;
-<%    endif%>
-           <%-- if you put the <small> tag, put the </small> here --%><%/body_font%>
-         </td>
-<%-- The actual moderator cell - uncomment if you want to show the moderator list. also, you might do well to add: style="border-right:1px solid <%dark_beige%>" to the "last post" columns
-         <td valign=top>
-           <%body_font%>
-<%GForum::Forum::moderators($forum_id)%>
-<%    if forum_num_moderators%>
-<%      loop forum_moderators%>
-             <a href="gforum.cgi?username=<%GT::CGI::escape($user_username)%>;<%hidden_query%>"><%nbsp user_username%></a><%unless last%>,<%endunless%>
-<%      endloop%>
-<%    else%>
-             No moderators
-<%    endif%>
-           <%/body_font%>
-         </td>
---%>
-       </tr>
-<%  endif%>
-
-<%endloop%>
-<%  unless forums_permitted%>       
-       <tr>
-         <td colspan=5>
-           <%body_font%>
-             Sorry, there are no forums available in this category.
-           <%/body_font%>
-         </td>
-       </tr>
-<%  endunless%>
-      </table>
-    </td>
-  </tr>
-  <tr>
-    <td colspan=2>
-      <%body_font%>
-       &nbsp;<br><br>
-       <img src="<%image_url%>/recent.gif" border="0" width="15" height="11" alt="New posts!"> = Forum has new posts.<br>
-       <img src="<%image_url%>/no_recent.gif" border="0" width="15" height"11" alt="No new posts"> = No new posts in this forum.<br>
-      <%/body_font%>
-    </td>
-  </tr>
-<%/body_table%>
-<br><br>
-<%include include_footer.html%>
-</center>
-</body>
-</html>
Index: default/disabled.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/disabled.html,v
retrieving revision 1.7
retrieving revision 1.8
diff -b -u -r1.7 -r1.8
--- default/disabled.html       21 Oct 2001 03:07:04 -0000      1.7
+++ default/disabled.html       19 Nov 2001 20:33:01 -0000      1.8
@@ -27,7 +27,7 @@
       <%/title_font%>
     </td>
     <td align=right>
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
   <tr>
Index: default/error.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/error.html,v
retrieving revision 1.10
retrieving revision 1.12
diff -b -u -r1.10 -r1.12
--- default/error.html  21 Oct 2001 03:07:04 -0000      1.10
+++ default/error.html  18 Dec 2001 01:47:04 -0000      1.12
@@ -22,13 +22,13 @@
     <td valign=bottom>
       <%title_font%>
        <b><i>
-         <a href="gforum.cgi?<%hidden_query%>"><%title_font%><%site_title%><%/title_font%></a>:  
+         <a href="gforum.cgi?<%hidden_query%>"><%title_font%><%site_home%><%/title_font%></a>:  
          An error occurred
        </i></b>
       <%/title_font%>
     </td>
     <td align=right>
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
   <tr>
Index: default/forum_ban.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/forum_ban.html,v
retrieving revision 1.5
retrieving revision 1.7
diff -b -u -r1.5 -r1.7
--- default/forum_ban.html      21 Oct 2001 03:07:04 -0000      1.5
+++ default/forum_ban.html      16 Dec 2001 00:17:46 -0000      1.7
@@ -10,7 +10,7 @@

 --%><%GForum::Forum::get($forum)%><html>
 <head>
-<title><%site_title%>: <%cat_name%>: <%forum_name%>: Ban</title>
+<title><%site_title%>: <%cat_full_name%>: <%forum_name%>: Ban</title>
 <%include include_css.html%>
 </head>
 <%body_tag%>
@@ -20,14 +20,12 @@
   <tr>
     <td valign=bottom>
       <%title_font%>
-       <a href="gforum.cgi?<%hidden_query%>"><%title_font%><%site_title%><%/title_font%></a>:
-       <a href="gforum.cgi?category=<%cat_id%>;<%hidden_query%>"><%title_font%><%cat_name%>:<%/title_font%></a>
-       <a href="gforum.cgi?forum=<%forum%>;<%hidden_query%>"><%title_font%><%forum_name%>:<%/title_font%></a>
+        <%include include_title_cat_forum.html%>
        Ban
       <%/title_font%>
     </td>
     <td align=right>
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
   <tr>
@@ -40,7 +38,7 @@
 <%ifnot ban_ip%>
        '<%ban_username%>'
 <%endif%>
-        has been banned from <%cat_name%>: <%forum_name%>
+        has been banned from <%cat_full_name%>: <%forum_name%>
       </font><%/body_font%>
     </td>
   </tr>
Index: default/forum_ban_list.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/forum_ban_list.html,v
retrieving revision 1.6
retrieving revision 1.8
diff -b -u -r1.6 -r1.8
--- default/forum_ban_list.html 21 Oct 2001 03:07:04 -0000      1.6
+++ default/forum_ban_list.html 16 Dec 2001 00:17:46 -0000      1.8
@@ -14,7 +14,7 @@
 <%GForum::Forum::get($forum)%>
 <html>
 <head>
-<title><%site_title%>: <%cat_name%>: <%forum_name%>: Ban</title>
+<title><%site_title%>: <%cat_full_name%>: <%forum_name%>: Ban</title>
 <%include include_css.html%>
 </head>
 <%body_tag%>
@@ -24,14 +24,12 @@
   <tr>
     <td valign=bottom>
       <%title_font%>
-       <a href="gforum.cgi?<%hidden_query%>"><%title_font%><%site_title%>:<%/title_font%></a>
-       <a href="gforum.cgi?category=<%cat_id%>;<%hidden_query%>"><%title_font%><%cat_name%>:<%/title_font%></a>
-       <a href="gforum.cgi?forum=<%forum%>;<%hidden_query%>"><%title_font%><%forum_name%>:<%/title_font%></a>
+        <%include include_title_cat_forum.html%>
        Bans
       <%/title_font%>
     </td>
     <td align=right>
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
 <form action="gforum.cgi" method="GET">
Index: default/forum_ban_write.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/forum_ban_write.html,v
retrieving revision 1.5
retrieving revision 1.7
diff -b -u -r1.5 -r1.7
--- default/forum_ban_write.html        21 Oct 2001 03:07:04 -0000      1.5
+++ default/forum_ban_write.html        16 Dec 2001 00:17:46 -0000      1.7
@@ -15,7 +15,7 @@
 <%GForum::Forum::get($forum)%>
 <html>
 <head>
-<title><%site_title%>: <%cat_name%>: <%forum_name%>: Ban</title>
+<title><%site_title%>: <%cat_full_name%>: <%forum_name%>: Ban</title>
 <%include include_css.html%>
 </head>
 <%body_tag%>
@@ -25,14 +25,12 @@
   <tr>
     <td valign=bottom>
       <%title_font%>
-       <a href="gforum.cgi?<%hidden_query%>"><%title_font%><%site_title%>:<%/title_font%></a>
-       <a href="gforum.cgi?category=<%cat_id%>;<%hidden_query%>"><%title_font%><%cat_name%>:<%/title_font%></a>
-       <a href="gforum.cgi?forum=<%forum%>;<%hidden_query%>"><%title_font%><%forum_name%>:<%/title_font%></a>
+        <%include include_title_cat_forum.html%>
        Ban
       <%/title_font%>
     </td>
     <td align=right>
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
 <form action="gforum.cgi" method="GET">
@@ -46,7 +44,7 @@
 <%else%>
        '<%ban_username%>'
 <%endif%>
-       from <%cat_name%>: <%forum_name%>.<br>
+       from <%cat_full_name%>: <%forum_name%>.<br>
        If desired, you may set a timeout (in days) for the ban, and also a ban reason.
        <table border=0 cellspacing=0 cellpadding=4>
          <tr>
Index: default/forum_view.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/forum_view.html,v
retrieving revision 1.32
retrieving revision 1.39
diff -b -u -r1.32 -r1.39
--- default/forum_view.html     1 Nov 2001 23:05:08 -0000       1.32
+++ default/forum_view.html     18 Dec 2001 01:47:04 -0000      1.39
@@ -13,28 +13,22 @@
 --%>
 <html>
 <head>
-<title><%site_title%>: <%cat_name%>: <%forum_name%><%if this_page > 1%>: Page <%this_page%><%endif%></title>
+<title><%site_title%>: <%cat_full_name%>: <%forum_name%><%if this_page > 1%>: Page <%this_page%><%endif%></title>
 <%include include_css.html%>
 </head>
 <%body_tag%>
 <center>
 <%include include_header.html%>
+<%body_table%>
 <form method="get" action="gforum.cgi">
 <%hidden_form%>
-<%body_table%>
   <tr>
     <td align="left" valign="bottom" colspan="2">
       <%title_font%>
-       <a href="gforum.cgi?<%hidden_query%>">
-         <%title_font%><%site_title%>:<%/title_font%>
-       </a>
-       <a href="gforum.cgi?category=<%cat_id%>;<%hidden_query%>">
-         <%title_font%><%cat_name%>:<%/title_font%>
-       </a>
+       <a href="gforum.cgi?<%hidden_query%>"><%title_font%><%site_home%><%/title_font%></a>:
+        <%GForum::Category::full_name_linked($cat_id, ': ', $title_font, $/title_font, 'gforum.cgi?', $hidden_query)%>:
        <%forum_name%>
-       <%if this_page > 1%>:
-         Page <%this_page%>
-       <%endif%>
+       <%if this_page > 1%>: Page <%this_page%><%endif%>
       <%/title_font%>
       <%body_font%>
        <br>(<%forum_total%> post<%unless forum_total == 1%>s<%endunless%> in <%forum_total_threads%> thread<%unless forum_total_threads == 1%>s<%endif%>)
@@ -48,7 +42,7 @@
       <%/body_font%>
     </td>
     <td>
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
 <%if forum_total%>
@@ -101,10 +95,10 @@
            <%/top_row_font%>
          </td>
          <td style="border-right:1px solid <%dark_beige%>" width="65">
-           <a href="gforum.cgi?do=<%this_do%>;forum=<%forum_id%>;sb=post_replies;so=<%if sb eq post_replies and so eq ASC%>DESC<%else%>ASC<%endif%>;page=<%this_page%>;mh=<%mh%>;<%hidden_query%>">
+           <a href="gforum.cgi?do=<%this_do%>;forum=<%forum_id%>;sb=post_replies;so=<%if sb eq post_replies and so eq DESC%>ASC<%else%>DESC<%endif%>;page=<%this_page%>;mh=<%mh%>;<%hidden_query%>">
              <%top_row_font%>
-               <%if sb eq post_replies%><img src="<%image_url%>/<%if so eq ASC%>down<%else%>up<%endif%>.gif" border="0" alt="Sort direction" width="14" height="11">&nbsp; <%endif
-               %><b>Replies</b>
+               <nobr><%if sb eq post_replies%><img src="<%image_url%>/<%if so eq ASC%>up<%else%>down<%endif%>.gif" border="0" alt="Sort direction" width="14" height="11">&nbsp;&nbsp;<%endif
+               %><b>Replies</b><nobr>
              <%/top_row_font%>
            </a>
          </td>
@@ -243,7 +237,7 @@
 <%  if this_do eq forum_view_expandable or this_do eq forum_view_collapsed%>
            <input type="submit" name="do=forum_view_expanded;forum=<%forum_id%>;sb=<%sb%>;so=<%so%>;mh=<%mh%>;page=<%this_page%>" value="Expand All Threads" class="button">
 <%  endif%>
-           <input type="submit"<%unless user_forum_permission >= 5%> disabled<%endif%> name="do=post_write;forum=<%forum_id%>" value="Post New" class="submit">
+           <input type="submit"<%unless user_forum_permission >= 5%> disabled<%endunless%> name="do=post_write;forum=<%forum_id%>" value="Post New" class="submit">
          </nobr></td>
        </tr>
       </table>
@@ -295,7 +289,7 @@
            <img src="<%image_url%>/new_no_replies.gif" width="13" height="15" alt="New post">
          </td>
          <td style="border-bottom:1px solid <%dark_beige%>">
-           <%body_font%>= New post<%/body_font%>
+           <%body_font%>= New post - <a href="gforum.cgi?do=forum_mark_all_read;redo=<%this_do%>;forum=<%forum_id%>;<%if sb%>sb=<%sb%>;<%endif%><%if so%>so=<%so%>;<%endif%><%if mh%>mh=<%mh%>;<%endif%><%if this_page%>page=<%this_page%>;<%endif%><%hidden_query%>">Mark all read</a><%/body_font%>
          </td>
        </tr>
 <%endif%>
@@ -505,8 +499,8 @@
     </td>
     <td>&nbsp;</td>
   </tr>
-<%/body_table%>
 </form>
+<%/body_table%>

 <%body_table%>
 <form method="GET" action="gforum.cgi">
Index: default/globals.txt
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/globals.txt,v
retrieving revision 1.18
retrieving revision 1.23
diff -b -u -r1.18 -r1.23
--- default/globals.txt 2 Nov 2001 08:52:40 -0000       1.18
+++ default/globals.txt 18 Dec 2001 01:47:04 -0000      1.23
@@ -1,33 +1,35 @@
 # This file is auto generated and contains a perl hash of
 # your template globals for 'default' template set.
-# Generated on: Tue Oct 23 16:10:57 2001
+# Generated on: Tue Dec 11 17:46:10 2001
+# vim: syn=perl

-my $dump = {
+{
     '/body_font' => '</font>',
-    'header_row' => '<tr bgcolor="#E6F5D7">',
-    'top_row_font' => '<font face="Verdana,Arial,Helvetica" size=2 color="white"><b>',
+       '/body_table' => '</table></td><td width=50><img src="<%image_url%>/clear_shim.gif" height=1 width=50></td></tr></table>',
+       '/header_font' => '</b></font>',
+       '/title_font' => '</b></font>',
+       '/top_row_font' => '</b></font>',
+       'body_font' => '<font face="Verdana,Arial,Helvetica" size=2 color="black">',
     'body_table' => '<table border=0 width="100%" cellpadding=0 cellspacing=0><tr><td width=50><img src="<%image_url%>/clear_shim.gif" height=1 width=50></td><td width="100%"><table border=0 width="100%" cellpadding=0 cellspacing=0>',
+       'body_tag' => '<body bgcolor="white" topmargin=0 bottommargin=0 leftmargin=0 rightmargin=0 marginheight=0 marginwidth=0>',
+       'dark_beige' => '#A1A576',
     'dark_green' => '#256A19',
-    'registered_users' => 'sub { $DB->table(\'User\')->count }',
-    'total_posts' => 'sub { $DB->table(\'Post\')->count }',
-    'total_threads' => 'sub { $DB->table(\'Post\')->count({ post_root_id => 0 })',
-    'medium_green' => '#93B371',
-    'list_table' => '<table style="border:1px solid #999966" width=100% cellpadding=4 cellspacing=0 bgcolor="#d9e4f2">',
     'even_color' => 'white',
-    '/title_font' => '</b></font>',
-    'dark_beige' => '#A1A576',
-    'top_row' => '<tr bgcolor="#256A19">',
-    'odd_color' => '#d9e4f2',
-    'body_tag' => '<body bgcolor="white" topmargin=0 bottommargin=0 leftmargin=0 rightmargin=0 marginheight=0 marginwidth=0>',
-    '/top_row_font' => '</b></font>',
-    'logo' => 'GForum_logo.gif',
-    'site_title' => 'Gossamer Forum',
     'header_font' => '<font face="Verdana,Arial,Helvetica" size=3 color="#003300"><b>',
-    'light_green' => '#E6F5D7',
-    'body_font' => '<font face="Verdana,Arial,Helvetica" size=2 color="black">',
-    '/header_font' => '</b></font>',
-    'title_font' => '<font face="Verdana,Arial,Helvetica" size=4 color="#7a9f54"><b>',
+       'header_row' => '<tr bgcolor="#E6F5D7">',
     'light_beige' => '#E8EAD0',
+       'light_green' => '#E6F5D7',
+       'list_table' => '<table style="border:1px solid #999966" width=100% cellpadding=4 cellspacing=0 bgcolor="#d9e4f2">',
+       'logo' => 'GForum_logo.gif',
     'medium_beige' => '#C9CCA7',
-    '/body_table' => '</table></td><td width=50><img src="<%image_url%>/clear_shim.gif" height=1 width=50></td></tr></table>'
+       'medium_green' => '#93B371',
+       'odd_color' => '#d9e4f2',
+       'registered_users' => 'sub { $DB->table(\'User\')->count }',
+        'site_home' => 'Home',
+       'site_title' => 'Gossamer Forum',
+       'title_font' => '<font face="Verdana,Arial,Helvetica" size=4 color="#7a9f54"><b>',
+       'top_row' => '<tr bgcolor="#256A19">',
+       'top_row_font' => '<font face="Verdana,Arial,Helvetica" size=2 color="white"><b>',
+       'total_posts' => 'sub { $DB->table(\'Post\')->count }',
+       'total_threads' => 'sub { $DB->table(\'Post\')->count({ post_root_id => 0 }) }'
 };
Index: default/include_logo.html
===================================================================
RCS file: default/include_logo.html
diff -N default/include_logo.html
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ default/include_logo.html   19 Nov 2001 20:33:01 -0000      1.1
@@ -0,0 +1 @@
+<a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
Index: default/include_post_common_write.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/include_post_common_write.html,v
retrieving revision 1.22
retrieving revision 1.24
diff -b -u -r1.22 -r1.24
--- default/include_post_common_write.html      22 Oct 2001 18:36:16 -0000      1.22
+++ default/include_post_common_write.html      16 Dec 2001 00:17:46 -0000      1.24
@@ -41,6 +41,7 @@
 <%endif%>

 <input type="hidden" name="temp_id" value="<%temp_id%>">
+<input type="hidden" name="basic_editor" value="1">
 <table border="0" cellspacing="0" cellpadding="4" width="100%" bgcolor="<%odd_color%>">
   <%top_row%>
     <td width="125" align="right">
@@ -190,7 +191,12 @@
        <input type="button" class="button" name="markup_tag_email" tabindex=30 value="email" onClick="javascript: addTag(this.value); this.value = (this.value == 'email' ? '/email' : 'email');">
        <input type="button" class="button" name="markup_tag_url"   tabindex=30 value="url"   onClick="javascript: addTag(this.value); this.value = (this.value == 'url'   ? '/url'   : 'url');">
        <br>
-<%if current_user_id and this_do ne post_edit%>
+        <%if forum_style >= 1%>
+        <br>
+        <input type="submit" class="button" name="do=<%this_do%>;advanced_editor=1;advanced_editor_switch=1" value="Switch to Advanced Editor">
+        <%endif%>
+<%if current_user_id%>
+        <br>
        <%body_font%>
          &nbsp;<input type="checkbox" name="post_append_signature" tabindex=7 value="1"<%if post_append_signature%> checked<%endif%>>
          &nbsp;Append signature to post<br>
Index: default/include_post_display.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/include_post_display.html,v
retrieving revision 1.29
retrieving revision 1.35
diff -b -u -r1.29 -r1.35
--- default/include_post_display.html   14 Nov 2001 18:16:49 -0000      1.29
+++ default/include_post_display.html   16 Dec 2001 07:08:58 -0000      1.35
@@ -10,6 +10,9 @@
 delete confirmation) this page will be used to format the
 post.

+If change this page, you'll probably also want to make the
+equivelant changes in the "default_top" template set.
+
 --%>
 <%if preview%><%body_font%><b><i>Preview:</i></b><%/body_font%><%endif%>
 <a name="<%post_id%>"></a>
@@ -68,10 +71,10 @@
           <a href="gforum.cgi?do=forum_ban_write;forum=<%forum_id%>;ban_type=ban_ip;ban_value=<%post_ip%>;<%hidden_query%>">IP</a>
 <%  if current_user_status = 3%><%-- An administrator --%>
           |
-          <a href="gforum.cgi?do=ban_ip;redo=<%this_do%>;ip=<%post_ip%>;<%hidden_query%>">Site IP</a>
+          <a href="gforum.cgi?do=ban_ip;redo=<%this_do%>;post=<%post_id%>;so=<%so%>;sb=<%sb%>;ip=<%post_ip%>;<%hidden_query%>">Site IP</a>
         <br>
         Disable:
-          <a href="gforum.cgi?do=disable_user;redo=<%this_do%>;user_id=<%user_id%>;<%hidden_query%>">User</a>
+          <a href="gforum.cgi?do=disable_user;redo=<%this_do%>;post=<%post_id%>;so=<%so%>;sb=<%sb%>;user_id=<%user_id%>;<%hidden_query%>">User</a>
 <%  endif%>
         <br>
         Thread:
@@ -145,6 +148,8 @@
 <%  else%>
        &nbsp;
 <%  endif%>
+<%elseif post_deleted and user_perm_moderator%><%-- Show moderators the delete link so they can delete it completely --%>
+        <a href="gforum.cgi?do=post_delete_confirm;post=<%post_id%>;<%hidden_query%>">Delete</a>
 <%endunless%>
       </b><%/body_font%>
          </td>
@@ -180,7 +185,7 @@
     </td>
     <td valign="top" style="border-top: 1px solid <%dark_beige%>">
       <%body_font%>
-       <a href="gforum.cgi/<%postatt_filename_escaped%>?do=post_attachment;postatt_id=<%postatt_id%>;<%hidden_query%>">
+       <a href="gforum.cgi<%unless is_iis%>/<%postatt_filename_escaped%><%endunless%>?do=post_attachment;postatt_id=<%postatt_id%>;<%hidden_query%>">
          <img src="<%GForum::Attachment::icon($postatt_content, $postatt_filename)%>" border=0>
          <%postatt_filename%>
        </a>
Index: default/include_post_html_common_write.html
===================================================================
RCS file: default/include_post_html_common_write.html
diff -N default/include_post_html_common_write.html
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ default/include_post_html_common_write.html 16 Dec 2001 00:17:46 -0000      1.6
@@ -0,0 +1,265 @@
+<%--
+
+File
+====
+include_post_html_common_write.html
+
+Description
+===========
+This is a common include file used in any situation where
+you have to write or edit a post. This differs from
+include_post_common_write in that it contains the WYSIWYG
+editor for writing markup posts.
+
+--%>
+<script language="Javascript">
+<!--
+
+var Faces = {
+    ':)'      : '<%image_url%>/smile.gif',
+    ';)'      : '<%image_url%>/wink.gif',
+    ':('      : '<%image_url%>/frown.gif',
+    ':P'      : '<%image_url%>/tongue.gif',
+    'cool'    : '<%image_url%>/cool.gif',
+    'blush'   : '<%image_url%>/blush.gif',
+    'angelic' : '<%image_url%>/angelic.gif',
+    'crazy'   : '<%image_url%>/crazy.gif',
+    'mad'     : '<%image_url%>/mad.gif',
+    'shocked' : '<%image_url%>/shocked.gif',
+    'laugh'   : '<%image_url%>/laugh.gif',
+    ':/'      : '<%image_url%>/unsure.gif',
+    ':|'      : '<%image_url%>/unimpressed.gif',
+    'sly'     : '<%image_url%>/sly.gif',
+    'pirate'  : '<%image_url%>/pirate.gif'
+};
+var Edit = false;
+var SInterval;
+function load_html () {
+    document.post.onsubmit = retrieve_html;
+    var url = window.location.protocol + '//' + window.location.hostname + window.location.pathname + '?<%hidden_query%>';
+    Edit = new iframe.Editor ({
+        debug      : 0,
+        base_url   : url,
+        image_url  : url + ';do=editor_image',
+        tb_hide    : ['Table'],
+        tb_delete  : ['Form', 'Positioning']
+    });
+    if ( document.post.post_message.value ) {
+        Edit.set_editor_html(document.post.post_message.value);
+    }
+    else {
+        Edit.set_editor_html('<HTML><body><\/body><\/html>');
+    }
+    Edit.init();
+    SInterval = setInterval("show_smilies()", 500);
+}
+function show_smilies () {
+    if ( Edit.initialized ) {
+        document.all.smilies.style.visibility = "visible";
+        clearInterval(SInterval)
+    }
+}
+function retrieve_html () {
+    document.post.post_message.value = Edit.get_editor_html();
+}
+
+function addTag (face) {
+    if ( !Edit.initialized || !Faces[face] ) return;
+    Edit.insert_html( '<img src="' + Faces[face] + '">' );
+    Edit.control.focus();
+}
+
+// This handles the tabing - if you change the post icon selection, the
+// tabIndex needs to be changed as well so that we don't have to tab through all
+// of the icons if going through the page with tab
+function updateTab (selected_val) {
+  var col = document.getElementsByName("post_icon");
+  for (i = 0; i < col.length; i++) {
+    if (selected_val == col[i].value)
+      col[i].tabIndex = 5;
+    else
+      col[i].tabIndex = 0;
+  }
+}
+
+// -->
+</script>
+
+<%if attachment_error%>
+<%body_font%><font color=red>Your attachment did not upload: <%attachment_error%></font><%/body_font%>
+<%endif%>
+
+<%if post_error_no_subject%>
+<%body_font%><font color="red">Unable to post: You must enter a subject</font><%/body_font%>
+<%endif%>
+
+<input type="hidden" name="temp_id" value="<%temp_id%>">
+<table border="0" cellspacing="0" cellpadding="4" width="100%" bgcolor="<%odd_color%>">
+  <%top_row%>
+    <td width="125" align="right">
+      <%top_row_font%>
+       Subject:
+      <%/top_row_font%>
+    </td>
+    <td>
+      <input class="button" type="text" name="post_subject" tabindex=1 size="50" value="<%post_subject%>">
+    </td>
+  </tr>
+<%ifnot current_user_id%>
+  <tr>
+    <td align="right">
+      <%body_font%>
+       Guest Username:
+      <%/body_font%>
+    </td>
+    <td>
+      <select name="anon_id" class="button" tabindex=2 size=1>
+<%  loop anonymous%>
+       <option value="<%user_id%>"<%if selected%> selected<%endif%>><%nbsp user_username%></option>
+<%  endloop%>
+      </select>
+    </td>
+  </tr>
+  <tr>
+    <td align="right">
+      <%body_font%>
+       E-mail address:
+      <%/body_font%>
+    </td>
+    <td>
+      <%body_font%>
+       <input type="text" class="button" name="post_anonymous_email" tabindex=3 size="50" value="<%if post_anonymous_email%><%post_anonymous_email%><%endif%>">
+      <%/body_font%>
+    </td>
+  </tr>
+<%endifnot%>
+  <tr>
+    <td align="right">
+      <%body_font%>
+       Post Style:
+      <%/body_font%>
+    </td>
+    <td>
+      <input type="hidden" name="post_style" value="1">
+      <input type="hidden" name="advanced_editor" value="1">
+      <%body_font%>
+        <%GForum::language(FORUM_STYLE_MARKUP)%>
+      <%/body_font%>
+    </td>
+  </tr>
+<%GForum::Post::icons('with blank')%>
+   <tr>
+    <td align="right" valign="top">
+      <%body_font%>
+       Icon:
+      <%/body_font%>
+    </td>
+    <td>
+      <table border="0" cellspacing="0" cellpadding="4">
+        <tr valign="middle" align="center">
+<%set icon_cols = 10%>
+<%loop icons%><% -- The first loop contains nothing - it is used for a "none" option -- %>
+         <td><table border=0 cellspacing=0 cellpadding=0><tr valign="middle">
+           <td align=right><input type="radio" name="post_icon" onActivate="updateTab(this.value)"<%if first%> tabindex=5<%endif%> value="<%unless first%><%icon_filename%><%endunless%>"<%if not first and post_icon eq $icon_filename%> checked<%elsif first and not post_icon%> checked<%endif%>></td>
+           <td align=left><%if first%><%body_font%><small>none</small><%/body_font%><%else%><img src="<%image_url%>/<%icon_filename%>"><br><%endif%></td>
+         </tr></table></td>
+<%  unless last or row_num % $icon_cols%>
+       </tr>
+       <tr valign="middle" align="center">
+<%  endunless%>
+<%  if last and row_num % $icon_cols%>
+         <td colspan="<%row_num ~ $icon_cols%>">
+           &nbsp;
+         </td>
+<%  endif%>
+<%endloop%>
+       </tr>
+      </table>
+    </td>
+  </tr>
+  <tr>
+    <td align="right" valign="top">
+      <%body_font%>
+       Post:<br>
+      <%/body_font%>
+<%if forum_style_selected % 2%><%-- Only show the smilies if something with markup is set --%>
+<div id=smilies style="visibility: hidden">
+<%include include_smilies_write.html%>
+</div>
+<%endif%>
+    </td>
+    <td>
+      <input type="hidden" name="post_message" value="<%post_message%>">
+      <iframe src="gforum.cgi?<%hidden_query%>;do=editor_iframe" id="iframe" width="100%" height="300"></iframe><br>
+       <br><br>
+        <input type="submit" class="button" name="do=<%this_do%>;basic_editor=1;basic_editor_switch=1" value="Switch to Basic Editor">
+<%if current_user_id%>
+        <br>
+       <%body_font%>
+         &nbsp;<input type="checkbox" name="post_append_signature" tabindex=7 value="1"<%if post_append_signature%> checked<%endif%>>
+         &nbsp;Append signature to post<br>
+         &nbsp;<input type="checkbox" name="post_reply_notify" tabindex=8 value="1"<%if post_reply_notify%> checked<%endif%>>
+         &nbsp;Send e-mail notification on reply<br>
+       <%/body_font%>
+<%endif%>
+       
+    </td>
+  </tr>
+
+<% --
+    The following loops through attachments that are either going to be added with the
+    post, or, when editting, the new ones to add AND the ones that already exist.
+    The following variables are available:
+       - att_id - the attachment ID of the post 
+         (in either post attachment or temp attachment directories)
+       - att_filename - the filename of the attachment
+       - att_size - the size of the attachment in bytes. Use          
+         <%GForum::Attachment::friendly_size($att_size)%> to get a "friendly" size such as "66.3 KB" instead of "67890". (66.3 KB is how the size is usually displayed for a 67890 byte file)
+       - att_content - the content type of the file (such as text/html for .html files). Use
+          <%GForum::Attachment::icon($att_content, $att_filename)%> to get the web path to the appropriate icon.
+       - att_type - usually 'temp', but will be 'post' for posts that already exist 
+         (when editting a post)
+-- %>
+<%loop attachments%>
+<%  if first%>
+  <tr>
+    <td colspan="2">
+      <%list_table%>
+<%  endif%>
+       <tr bgcolor="<%if odd%><%light_beige%><%else%><%even_color%><%endif%>">
+         <td style="border-right:1px solid <%dark_beige%>; border-top:1px solid <%darkbiege%>">
+           <img src="<%GForum::Attachment::icon($att_content, $att_filename)%>"> 
+         </td>
+         <td style="border-right:1px solid <%dark_beige%>; border-top:1px solid <%darkbiege%>">
+           <%body_font%>
+             <%att_filename%>
+           <%/body_font%>
+         </td>
+         <td style="border-right:1px solid <%dark_beige%>; border-top:1px solid <%darkbiege%>">
+           <%body_font%>
+             <%GForum::Attachment::friendly_size($att_size)%>
+           <%/body_font%>
+         </td>
+         <td style="border-top:1px solid <%darkbiege%>" align="right">
+           <input type="submit" class="button" tabindex=12 name="do=post_attachment_delete;att_type=<%att_type%>;att_id=<%att_id%>;redo=<%this_do%>" value="Delete attachment">
+         </td>
+       </tr>
+<%  if last%>
+      </table>
+    </td>
+  </tr>
+<%  endif%>
+<%endloop%>
+
+<%if can_attach%>
+  <tr bgcolor="<%medium_beige%>">
+    <td colspan=2 style="border-top:1px solid <%dark_beige%>">
+      <%body_font%>
+       &nbsp;Attachment:
+       <input class="button" type="file" tabindex=12 name="post_attachment">
+       <input class="button" type="submit" tabindex=12 name="do=post_attachment_upload;redo=<%this_do%>" value="Upload attachment">
+      <%/body_font%>
+    </td>
+  </tr>
+<%endif%>
+</table>
Index: default/include_search_form.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/include_search_form.html,v
retrieving revision 1.6
retrieving revision 1.7
diff -b -u -r1.6 -r1.7
--- default/include_search_form.html    13 Nov 2001 19:25:04 -0000      1.6
+++ default/include_search_form.html    16 Dec 2001 00:17:46 -0000      1.7
@@ -42,15 +42,17 @@
        <option value="all"<%if not search_forum_type or search_forum_type eq 'all'%> selected<%endif%>>
          All forums
        </option>
-<%loop categories%>
+<%set indent = '&nbsp;&nbsp;&nbsp;&nbsp;'%>
+<%loop everything%>
+<%unless forum_id%><%-- A category --%>
        <option value="cat_<%cat_id%>"<%if search_forum_type eq 'cat' and search_forum_id = $cat_id%> selected<%endif%>>
-         <%cat_name%> (All forums)
+         <%indent x $cat_depth%><%cat_name%> (All forums)
        </option>
-<%  loop forums%>
+<%else%>
        <option value="forum_<%forum_id%>"<%if search_forum_type eq 'forum' and search_forum_id = $forum_id%> selected<%endif%>>
-         &nbsp;&nbsp;&nbsp;&nbsp;<%forum_name%>
+         <%indent x $cat_depth%>&nbsp;&nbsp;&nbsp;&nbsp;<%forum_name%>
        </option>
-<%  endloop%>
+<%endunless%>
 <%endloop%>
       </select><br>
     </td>
Index: default/include_title_cat_forum.html
===================================================================
RCS file: default/include_title_cat_forum.html
diff -N default/include_title_cat_forum.html
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ default/include_title_cat_forum.html        18 Dec 2001 01:47:04 -0000      1.3
@@ -0,0 +1,3 @@
+<a href="gforum.cgi?<%hidden_query%>"><%title_font%><%site_home%><%/title_font%></a>:
+<%GForum::Category::full_name_linked($cat_id, ': ', $title_font, $/title_font, 'gforum.cgi?', $hidden_query)%>:
+<a href="gforum.cgi?forum=<%forum_id%>;<%if forum_view%>do=<%forum_view%>;<%endif%><%hidden_query%>"><%title_font%><%forum_name%><%/title_font%></a>:
Index: default/language.txt
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/language.txt,v
retrieving revision 1.26
retrieving revision 1.30
diff -b -u -r1.26 -r1.30
--- default/language.txt        13 Nov 2001 20:10:48 -0000      1.26
+++ default/language.txt        16 Dec 2001 21:29:58 -0000      1.30
@@ -1,9 +1,4 @@
-# This file is auto generated and contains a perl hash of
-# your language variables for 'default' template set.
-# Generated on: Wed Jun 13 16:11:41 2001
-# vim: syn=perl textwidth=9999
-
-my $dump = {
+{
     'ACTION_BAD' => 'No such action \'%s\'',
     'ACTION_MUST_LOGIN' => 'Guests are not authorized to access that page. Please login as a user',
     'ACTION_PERMISSION_DENIED' => 'You are not authorized to access that page',
@@ -17,41 +12,85 @@
     'ATTACHMENT_SYSTEM_ERROR' => 'A system error occured while attempting to save your attachment: %s',
     'ATTACHMENT_TOO_LARGE' => 'The attachment exceeds the maximum attachment size (%s)',
     'CATEGORY_DOES_NOT_EXIST' => 'The category you attempted to access does not exist',
+  'DATE_FORMAT' => '%mmm% %d%, %yyyy%, %h%:%MM% %tt%',
+  'DATE_MONTH_1' => 'January',
+  'DATE_MONTH_10' => 'October',
+  'DATE_MONTH_11' => 'November',
+  'DATE_MONTH_12' => 'December',
+  'DATE_MONTH_2' => 'February',
+  'DATE_MONTH_3' => 'March',
+  'DATE_MONTH_4' => 'April',
+  'DATE_MONTH_5' => 'May',
+  'DATE_MONTH_6' => 'June',
+  'DATE_MONTH_7' => 'July',
+  'DATE_MONTH_8' => 'August',
+  'DATE_MONTH_9' => 'September',
+  'DATE_MONTH_SHORT_1' => 'Jan',
+  'DATE_MONTH_SHORT_10' => 'Oct',
+  'DATE_MONTH_SHORT_11' => 'Nov',
+  'DATE_MONTH_SHORT_12' => 'Dec',
+  'DATE_MONTH_SHORT_2' => 'Feb',
+  'DATE_MONTH_SHORT_3' => 'Mar',
+  'DATE_MONTH_SHORT_4' => 'Apr',
+  'DATE_MONTH_SHORT_5' => 'May',
+  'DATE_MONTH_SHORT_6' => 'Jun',
+  'DATE_MONTH_SHORT_7' => 'Jul',
+  'DATE_MONTH_SHORT_8' => 'Aug',
+  'DATE_MONTH_SHORT_9' => 'Sep',
+  'DATE_DAY_1' => 'Sunday',
+  'DATE_DAY_2' => 'Monday',
+  'DATE_DAY_3' => 'Tuesday',
+  'DATE_DAY_4' => 'Wednesday',
+  'DATE_DAY_5' => 'Thursday',
+  'DATE_DAY_6' => 'Friday',
+  'DATE_DAY_7' => 'Saturday',
+  'DATE_DAY_SHORT_1' => 'Sun',
+  'DATE_DAY_SHORT_2' => 'Mon',
+  'DATE_DAY_SHORT_3' => 'Tue',
+  'DATE_DAY_SHORT_4' => 'Wed',
+  'DATE_DAY_SHORT_5' => 'Thu',
+  'DATE_DAY_SHORT_6' => 'Fri',
+  'DATE_DAY_SHORT_7' => 'Sat',
     'FILESIZE_BYTES' => 'B',
     'FILESIZE_KILOBYTES' => 'KB',
     'FILESIZE_MEGABYTES' => 'MB',
     'FORUM_DOES_NOT_EXIST' => 'The forum you attempted to access does not exist',
+  'FORUM_STYLE_BOTH' => 'Markup and HTML',
+  'FORUM_STYLE_HTML' => 'HTML',
+  'FORUM_STYLE_MARKUP' => 'Markup',
+  'FORUM_STYLE_PLAIN' => 'Plain Text Only',
     'LOGIN_DISABLED' => 'Your account is not enabled',
     'LOGIN_INVALID_USERNAME_PASSWORD' => 'Invalid username/password combination entered',
     'LOGIN_NOT_VALIDATED' => 'Your signup has not been validated',
     'MESSAGE_DOES_NOT_EXIST' => 'The message you attempted to access does not exist',
     'NO_SUBJECT' => '<no subject>',
-    'POST_ANONYMOUS_DISABLED' => 'Guest posting is not enabled',
-    'POST_BAD_FORUM' => 'Invalid forum ID entered',
-    'POST_BAD_POST' => 'Invalid post ID entered',
-    'POST_DELETED' => '<post deleted>',
-    'POST_DOES_NOT_EXIST' => 'The post you attempted to access does not exist',
-    'POST_IS_DELETED' => 'The post you attempted to access has been deleted',
-    'POST_EDIT_TIME_EXPIRED' => 'The edit/delete time for the post has expired',
-    'POST_LOCKED' => 'That thread has been locked',
-    'POST_REGARDING' => 'Re: ',
+  'POSTICON_hot_new_no_replies' => 'Hot thread - New post',
     'POSTICON_hot_new_with_new_replies' => 'Hot thread - New post, new replies',
     'POSTICON_hot_new_with_replies' => 'Hot thread - New post with replies',
-    'POSTICON_hot_new_no_replies' => 'Hot thread - New post',
+  'POSTICON_hot_no_replies' => 'Hot thread - Single post',
     'POSTICON_hot_with_new_replies' => 'Hot thread - New replies',
     'POSTICON_hot_with_replies' => 'Hot thread - Post has replies',
-    'POSTICON_hot_no_replies' => 'Hot thread - Single post',
+  'POSTICON_new_no_replies' => 'New post',
     'POSTICON_new_with_new_replies' => 'New post, new replies',
     'POSTICON_new_with_replies' => 'New post with replies',
-    'POSTICON_new_no_replies' => 'New post',
+  'POSTICON_no_replies' => 'Post',
     'POSTICON_with_new_replies' => 'New replies',
     'POSTICON_with_replies' => 'Post with replies',
-    'POSTICON_no_replies' => 'Post',
+  'POST_ANONYMOUS_DISABLED' => 'Guest posting is not enabled',
+  'POST_BAD_FORUM' => 'Invalid forum ID entered',
+  'POST_BAD_POST' => 'Invalid post ID entered',
+  'POST_DELETED' => '<post deleted>',
+  'POST_DOES_NOT_EXIST' => 'The post you attempted to access does not exist',
+  'POST_EDIT_TIME_EXPIRED' => 'The edit/delete time for the post has expired',
+  'POST_REMOVE_NOT_MODERATOR' => 'Only moderators are permitted to completely remove posts',
+  'POST_IS_DELETED' => 'The post you attempted to access has been deleted',
+  'POST_LOCKED' => 'That thread has been locked',
+  'POST_REGARDING' => 'Re: ',
     'PROFILE_INVALID_DATA' => 'Invalid data for the %s field',
     'PROFILE_PASSWORDS_DONT_MATCH' => 'The passwords you entered do not match',
     'SEARCH_NO_FORUMS' => 'You did not select any forums to search, or there are no forums available',
-    'SEARCH_NO_TERM' => 'No search term specified',
     'SEARCH_NO_RESULTS' => 'Your search did not return any results',
+  'SEARCH_NO_TERM' => 'No search term specified',
     'SIGNUP_EMAIL_VALIDATION_FAILED' => 'Unable to send validation email: %s',
     'SIGNUP_NO_EMAIL' => 'You did not enter a valid e-mail address',
     'SIGNUP_NO_PASSWORD' => 'You did not enter a password',
@@ -59,12 +98,6 @@
     'SIGNUP_PASSWORDS_DONT_MATCH' => 'The passwords you entered do not match',
     'SIGNUP_USERNAME_EXISTS' => 'The username \'%s\' already exists. Please choose another',
     'URL_INVALID' => 'You entered an invalid URL: \'%s\'',
-    'USER_BANNED' => 'You have been banned',
-    'USER_DELETED' => '<i>Deleted</i>',
-    'USER_DOES_NOT_EXIST' => 'The username you attempted to access does not exist',
-    'USER_INVALID_USERNAME' => '%s is not a valid username',
-    'USER_NEVER_LOGGED_IN' => 'User has never logged in',
-    'USER_NO_PRIVMSG' => '%s has chosen not to receive private messages',
     'USERNAME_CANT_CHANGE' => 'You are not permitted to change your username',
     'USERNAME_DOES_NOT_EXIST' => 'Username \'%s\' does not exist',
     'USERNAME_INVALID_CHARS' => 'Username contains invalid characters',
@@ -78,11 +111,13 @@
     'USERSTATUS_ANONYMOUS' => 'Guest',
     'USERSTATUS_NOT_VALIDATED' => 'Not Validated',
     'USERSTATUS_REGISTERED' => 'Registered User',
-    'VALIDATE_NO_CODE' => 'No validation code entered',
-    'VALIDATE_BAD_CODE' => 'Invalid validation code entered',
+  'USER_BANNED' => 'You have been banned',
+  'USER_DELETED' => '<i>Deleted</i>',
+  'USER_DOES_NOT_EXIST' => 'The username you attempted to access does not exist',
+  'USER_INVALID_USERNAME' => '%s is not a valid username',
+  'USER_NEVER_LOGGED_IN' => 'User has never logged in',
+  'USER_NO_PRIVMSG' => '%s has chosen not to receive private messages',
     'VALIDATE_ALREADY_VALIDATED' => 'You have already been validated',
-    'FORUM_STYLE_BOTH' => 'Markup and HTML',
-    'FORUM_STYLE_HTML' => 'HTML',
-    'FORUM_STYLE_MARKUP' => 'Markup',
-    'FORUM_STYLE_PLAIN' => 'Plain Text Only',
+  'VALIDATE_BAD_CODE' => 'Invalid validation code entered',
+  'VALIDATE_NO_CODE' => 'No validation code entered'
 };
Index: default/login.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/login.html,v
retrieving revision 1.18
retrieving revision 1.20
diff -b -u -r1.18 -r1.20
--- default/login.html  14 Nov 2001 18:47:30 -0000      1.18
+++ default/login.html  18 Dec 2001 01:47:04 -0000      1.20
@@ -20,15 +20,11 @@
 <%body_table%>
   <tr>
     <td valign="bottom">
-      <a href="gforum.cgi?<%hidden_query%>">
-       <%title_font%>
-         <%site_title%>:
-       <%/title_font%>
-      </a>
+      <a href="gforum.cgi?<%hidden_query%>"><%title_font%><%site_home%>:<%/title_font%></a>
       <%title_font%>Login:<%/title_font%>
     </td>
     <td align="right" valign="bottom">
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
   <tr>
Index: default/lost_password_enter_username.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/lost_password_enter_username.html,v
retrieving revision 1.9
retrieving revision 1.11
diff -b -u -r1.9 -r1.11
--- default/lost_password_enter_username.html   21 Oct 2001 03:07:04 -0000      1.9
+++ default/lost_password_enter_username.html   18 Dec 2001 01:47:04 -0000      1.11
@@ -22,12 +22,12 @@
   <tr>
     <td valign="bottom">
       <a href="gforum.cgi?<%hidden_query%>">
-       <%title_font%><%site_title%>: <%/title_font%>
+       <%title_font%><%site_home%>: <%/title_font%>
       </a>
       <%title_font%>Lost Password<%/title_font%>
     </td>
     <td align="right">
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
 <form method="post" action="gforum.cgi">
Index: default/lost_password_sent.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/lost_password_sent.html,v
retrieving revision 1.8
retrieving revision 1.10
diff -b -u -r1.8 -r1.10
--- default/lost_password_sent.html     21 Oct 2001 03:07:04 -0000      1.8
+++ default/lost_password_sent.html     18 Dec 2001 01:47:04 -0000      1.10
@@ -23,14 +23,14 @@
   <tr>
     <td valign="bottom">
       <a href="gforum.cgi?<%hidden_query%>">
-       <%title_font%><%site_title%>: <%/title_font%>
+       <%title_font%><%site_home%>: <%/title_font%>
       </a>
       <%title_font%>
        Password Sent
       <%/title_font%>
     </td>
     <td align="right">
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
   <tr>
Index: default/markup_help.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/markup_help.html,v
retrieving revision 1.8
retrieving revision 1.11
diff -b -u -r1.8 -r1.11
--- default/markup_help.html    21 Oct 2001 03:07:04 -0000      1.8
+++ default/markup_help.html    18 Dec 2001 02:23:14 -0000      1.11
@@ -26,17 +26,12 @@
 <%body_table%>
   <tr>
     <td valign="bottom">
-      <a href="gforum.cgi?<%hidden_query%>">
        <%title_font%>
-         <%site_title%>:
-       <%/title_font%>
-      </a>
-      <%title_font%>
-       Markup Tags:
-      <%/title_font%>
+      <a href="gforum.cgi?<%hidden_query%>"><%title_font%><%site_home%><%/title_font%></a>:
+      Markup Tags<%/title_font%>
     </td>
     <td align="right">
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
   <tr>
@@ -71,7 +66,7 @@
        </tr>
 <%endloop%>

-<%GForum::Config::tpl_get(markup_allow_custom_color, markup_allow_image, markup_allow_url)%>
+<%GForum::Config::tpl_get(markup_allow_custom_color, markup_allow_image, markup_allow_url, markup_allow_font, markup_allow_size)%>
 <%if markup_allow_custom_color%>
        <tr bgcolor="<%GForum::Utils::alternation(markup, $odd_color, $even_color)%>">
          <td style="border-right:1px solid <%dark_beige%>">
@@ -89,6 +84,37 @@
            <%/body_font%>
          </td>
        </tr>
+<%endif%>
+
+<%if markup_allow_font%>
+       <tr bgcolor="<%GForum::Utils::alternation(markup, $odd_color, $even_color)%>">
+         <td style="border-right:1px solid <%dark_beige%>">
+           <%body_font%>
+             [font "Times New Roman"] <%sample_text%> [/font]
+           <%/body_font%>
+         </td>
+         <td>
+           <%body_font%>
+             <font face="Times New Roman"> <%sample_text%> </font>
+           <%/body_font%>
+         </td>
+       </tr>
+<%endif%>
+
+<%if markup_allow_size%>
+       <tr bgcolor="<%GForum::Utils::alternation(markup, $odd_color, $even_color)%>">
+         <td style="border-right:1px solid <%dark_beige%>">
+           <%body_font%>
+             [size 6] <%sample_text%> [/size]
+           <%/body_font%>
+         </td>
+         <td>
+           <%body_font%>
+             <font size=6> <%sample_text%> </font>
+           <%/body_font%>
+         </td>
+       </tr>
+<%endif%>

 <%if markup_allow_image%>
        <tr bgcolor="<%GForum::Utils::alternation(markup, $odd_color, $even_color)%>">
Index: default/message.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/message.html,v
retrieving revision 1.13
retrieving revision 1.15
diff -b -u -r1.13 -r1.15
--- default/message.html        21 Oct 2001 03:07:04 -0000      1.13
+++ default/message.html        18 Dec 2001 01:47:04 -0000      1.15
@@ -24,7 +24,7 @@
   <tr>
     <td valign="bottom">
       <a href="gforum.cgi?<%hidden_query%>">
-       <%title_font%><%site_title%>: <%/title_font%>
+       <%title_font%><%site_home%>: <%/title_font%>
       </a>
 <%if ask_username%>
       <%title_font%>Send a Message<%/title_font%>
@@ -33,7 +33,7 @@
 <%endif%>
     </td>
     <td align="right">
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
   <tr>
Index: default/message_list.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/message_list.html,v
retrieving revision 1.24
retrieving revision 1.27
diff -b -u -r1.24 -r1.27
--- default/message_list.html   21 Oct 2001 03:07:04 -0000      1.24
+++ default/message_list.html   18 Dec 2001 01:47:04 -0000      1.27
@@ -70,14 +70,14 @@
       <input type=hidden name=sent_so value="<%so%>">
       <input type=hidden name=sent_sb value="<%so%>">
       <a href="gforum.cgi?<%hidden_query%>">
-       <%title_font%><%site_title%>:<%/title_font%>
+       <%title_font%><%site_home%>:<%/title_font%>
       </a>
       <%title_font%>
        Messages
       <%/title_font%>
     </td>
     <td align="right">
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
   <tr>
@@ -97,7 +97,7 @@
        You have <b><%num_messages%></b> message<%if num_messages != 1%>s<%endunless%>:
        <small><b>
          &nbsp;&#149;&nbsp; <%num_new%> NEW <img src="<%image_url%>/unread.gif" border=0>
-         &nbsp;&#149;&nbsp; <%num_read%> READ <img src="<%image_url%>/read.gif" border=0>
+         &nbsp;&#149;&nbsp; <%num_read + $num_replied%> READ <img src="<%image_url%>/read.gif" border=0>
          &nbsp;&#149;&nbsp; <%num_replied%> REPLIED <img src="<%image_url%>/replied.gif" border=0>
        </b></small>
                <br>&nbsp;
Index: default/message_reply_write.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/message_reply_write.html,v
retrieving revision 1.18
retrieving revision 1.20
diff -b -u -r1.18 -r1.20
--- default/message_reply_write.html    21 Oct 2001 03:07:04 -0000      1.18
+++ default/message_reply_write.html    18 Dec 2001 01:47:04 -0000      1.20
@@ -24,7 +24,7 @@
   <tr>
     <td valign="bottom">
       <a href="gforum.cgi?<%hidden_query%>">
-       <%title_font%><%site_title%>: <%/title_font%>
+       <%title_font%><%site_home%>: <%/title_font%>
       </a>
       <a href="gforum.cgi?do=message_list;<%hidden_query%>">
        <%title_font%>Messages: <%/title_font%>
@@ -32,7 +32,7 @@
       <%title_font%>Send a Reply to <%nbsp user_username%><%/title_font%>
     </td>
     <td align="right">
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
   <tr>
Index: default/message_send.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/message_send.html,v
retrieving revision 1.15
retrieving revision 1.17
diff -b -u -r1.15 -r1.17
--- default/message_send.html   21 Oct 2001 03:07:04 -0000      1.15
+++ default/message_send.html   18 Dec 2001 01:47:04 -0000      1.17
@@ -25,12 +25,12 @@
   <tr>
     <td valign="bottom">
       <a href="gforum.cgi?<%hidden_query%>">
-       <%title_font%><%site_title%>: <%/title_font%></a>
+       <%title_font%><%site_home%>: <%/title_font%></a>
        <%title_font%>Message to <%nbsp to_user_username%> Sent!<%/title_font%>
       </a>
     </td>
     <td align="right">
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
   <tr>
Index: default/message_sent_view.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/message_sent_view.html,v
retrieving revision 1.4
retrieving revision 1.6
diff -b -u -r1.4 -r1.6
--- default/message_sent_view.html      21 Oct 2001 03:07:04 -0000      1.4
+++ default/message_sent_view.html      18 Dec 2001 01:47:04 -0000      1.6
@@ -22,7 +22,7 @@
   <tr>
     <td valign="bottom">
       <a href="gforum.cgi?<%hidden_query%>">
-       <%title_font%><%site_title%>: <%/title_font%>
+       <%title_font%><%site_home%>: <%/title_font%>
       </a>
       <a href="gforum.cgi?do=message_list;<%hidden_query%>">
        <%title_font%>Messages: <%/title_font%>
@@ -30,7 +30,7 @@
       <%title_font%><%msg_subject%><%/title_font%>
     </td>
     <td align="right">
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
    </td>
   </tr>
 <form method="get" action="gforum.cgi">
Index: default/message_view.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/message_view.html,v
retrieving revision 1.12
retrieving revision 1.14
diff -b -u -r1.12 -r1.14
--- default/message_view.html   21 Oct 2001 03:07:04 -0000      1.12
+++ default/message_view.html   18 Dec 2001 01:47:04 -0000      1.14
@@ -22,7 +22,7 @@
   <tr>
     <td valign="bottom">
       <a href="gforum.cgi?<%hidden_query%>">
-       <%title_font%><%site_title%>: <%/title_font%>
+       <%title_font%><%site_home%>: <%/title_font%>
       </a>
       <a href="gforum.cgi?do=message_list;<%hidden_query%>">
        <%title_font%>Messages: <%/title_font%>
@@ -30,7 +30,7 @@
       <%title_font%><%msg_subject%><%/title_font%>
     </td>
     <td align="right">
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
    </td>
   </tr>
 <form method="get" action="gforum.cgi">
Index: default/permission_denied.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/permission_denied.html,v
retrieving revision 1.8
retrieving revision 1.10
diff -b -u -r1.8 -r1.10
--- default/permission_denied.html      21 Oct 2001 03:07:04 -0000      1.8
+++ default/permission_denied.html      18 Dec 2001 01:47:04 -0000      1.10
@@ -22,10 +22,10 @@
   <tr><td valign=bottom>
    <b><i><a href="gforum.cgi?<%hidden_query%>">
    <%title_font%>
-     <%site_title%>: </font></a> 
+     <%site_home%>: </font></a> 
    <%title_font%><b><i>Permission Denied</i></b></font>
   </td><td align=right>
-    <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+    <%include include_logo.html%>
   </td></tr>
   <tr><td colspan=2>
     <p><%body_font%>
Index: default/post_already_posted.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/post_already_posted.html,v
retrieving revision 1.2
retrieving revision 1.4
diff -b -u -r1.2 -r1.4
--- default/post_already_posted.html    21 Oct 2001 03:07:04 -0000      1.2
+++ default/post_already_posted.html    16 Dec 2001 00:17:46 -0000      1.4
@@ -12,7 +12,7 @@
 --%>
 <html>
 <head>
-<title><%site_title%>: <%cat_name%>: <%forum_name%>: Message already posted!</title>
+<title><%site_title%>: <%cat_full_name%>: <%forum_name%>: Message already posted!</title>
 <meta http-equiv="refresh" content="5;url=gforum.cgi?do=forum_view&forum=<%forum_id%>&<%hidden_query%>">
 <%include include_css.html%>
 </head>
@@ -22,25 +22,19 @@
 <%body_table%>
   <tr>
     <td>
-      <a href="gforum.cgi?<%hidden_query%>">
-       <%title_font%><%site_title%>:<%/title_font%>
-      </a>
-      <a href="gforum.cgi?category=<%cat_id%>;<%hidden_query%>">
-       <%title_font%><%cat_name%>:<%/title_font%>
-      </a>
-      <a href="gforum.cgi?forum=<%forum_id%>;<%hidden_query%>">
-       <%title_font%><%forum_name%>:<%/title_font%>
-      </a>
-      <%title_font%>Message already posted!<%/title_font%>
+      <%title_font%>
+        <%include include_title_cat_forum.html%>
+        Message already posted!
+      <%/title_font%>
     </td>
     <td align="right">
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
   <tr>
     <td colspan="2">
       <%body_font%>
-       You attempted to post a message more than once. Your post has already been posted in <%cat_name%>: <%forum_name%>. You will be automatically redirected to the forum shortly.
+       You attempted to post a message more than once. Your post has already been posted in <%cat_full_name%>: <%forum_name%>. You will be automatically redirected to the forum shortly.
        <a href="gforum.cgi?post=<%post_id%>;<%hidden_query%><%if not current_user_id or current_user_default_post_display%>#<%post_id%><%endif%>">
          Click here to view the post
        </a> or choose the forum you wish to visit:
Index: default/post_delete.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/post_delete.html,v
retrieving revision 1.9
retrieving revision 1.11
diff -b -u -r1.9 -r1.11
--- default/post_delete.html    21 Oct 2001 03:07:04 -0000      1.9
+++ default/post_delete.html    16 Dec 2001 00:17:46 -0000      1.11
@@ -12,7 +12,7 @@
 --%>
 <html>
 <head>
-<title><%site_title%>: <%cat_name%>: <%forum_name%>: Post deleted!</title>
+<title><%site_title%>: <%cat_full_name%>: <%forum_name%>: Post deleted!</title>
 <%include include_css.html%>
 </head>
 <%body_tag%>
@@ -21,13 +21,13 @@
 <%body_table%>
   <tr>
     <td valign="bottom">
-      <a href="gforum.cgi?<%hidden_query%>">
-       <%title_font%><%site_title%>: <%/title_font%>
-      </a> 
-      <%title_font%>Post Deleted From <%cat_name%>: <%forum_name%><%/title_font%>
+      <%title_font%>
+        <%include include_title_cat_forum.html%>
+        Post Deleted
+      <%/title_font%>
     </td>
     <td>
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
   <tr>
Index: default/post_delete_confirm.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/post_delete_confirm.html,v
retrieving revision 1.6
retrieving revision 1.11
diff -b -u -r1.6 -r1.11
--- default/post_delete_confirm.html    24 Oct 2001 22:57:46 -0000      1.6
+++ default/post_delete_confirm.html    18 Dec 2001 19:49:29 -0000      1.11
@@ -25,21 +25,20 @@
   <tr>
     <td valign=bottom>
       <%title_font%>
-        <a href="gforum.cgi?<%hidden_query%>"><%title_font%><%site_title%>:<%/title_font%></a>
-       <a href="gforum.cgi?category=<%cat_id%>;<%hidden_query%>"><%title_font%><%cat_name%>:<%/title_font%></a>
-       <a href="gforum.cgi?forum=<%forum_id%>;<%hidden_query%>"><%title_font%><%forum_name%>:<%/title_font%></a>
+        <%include include_title_cat_forum.html%>
        Confirm post deletion:<br>
        <a href="gforum.cgi?post=<%post_id%>;<%hidden_query%>#<%post_id%>"><%title_font%><%post_subject%><%/title_font%></a>
       <%/title_font%>
     </td>
     <td align=right>
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
 <form method="POST" action="gforum.cgi">
   <tr>
     <td colspan=2><br>
       <%hidden_form%>
+      <input type="hidden" name="post_id" value="<%post_id%>">
       <%body_font%>
        You have chosen to delete the following post:<br>
        <%include include_post_display.html%>
@@ -52,6 +51,9 @@
       <table border="0" width="100%" cellpadding="4" cellspacing="0" style="border-top:1px solid <%dark_beige%>; border-bottom:1px solid <%dark_beige%>;">
        <tr bgcolor="<%light_green%>">
          <td align=right>
+            <%if user_forum_permission >= 6 and forum_hard_delete != 1%>
+            <input type=submit name="do=post_remove;post=<%post_id%>" class=submit value="Remove Post<%if post_replies%> (and all <%post_replies%> replies)<%endif%>">
+            <%endif%>
             <input type=submit name="do=post_delete;post=<%post_id%>" class=submit value="Delete Post">
           </td>
         </tr>
Index: default/post_detach_select.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/post_detach_select.html,v
retrieving revision 1.1
retrieving revision 1.5
diff -b -u -r1.1 -r1.5
--- default/post_detach_select.html     9 Nov 2001 20:56:04 -0000       1.1
+++ default/post_detach_select.html     17 Dec 2001 00:38:48 -0000      1.5
@@ -14,7 +14,7 @@
 <%GForum::Post::View::get($post_id)%>
 <html>
 <head>
-<title><%site_title%>: <%cat_name%>: <%forum_name%>: <%post_subject%>: Detach &amp; Move Thread</title>
+<title><%site_title%>: <%cat_full_name%>: <%forum_name%>: <%post_subject%>: Detach &amp; Move Thread</title>
 <%include include_css.html%>
 </head>
 <%body_tag%>
@@ -24,14 +24,13 @@
   <tr>
     <td valign=bottom>
       <%title_font%>
-       <a href="gforum.cgi?category=<%cat_id%>;<%hidden_query%>"><%title_font%><%cat_name%>:<%/title_font%></a>
-       <a href="gforum.cgi?forum=<%forum_id%>;<%hidden_query%>"><%title_font%><%forum_name%>:<%/title_font%></a>
-       <a href="gforum.cgi?post=<%post_id%>;<%hidden_query%>#<%post_id%>"><%title_font%><%post_subject%>:<%/title_font%></a>
+        <%include include_title_cat_forum.html%>
+       <a href="gforum.cgi?post=<%post_id%>;<%hidden_query%>#<%post_id%>"><%title_font%><%post_subject%><%/title_font%></a>:
        Detach &amp; Move Thread
       <%/title_font%>
     </td>
     <td align=right>
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
 <form method="GET" action="gforum.cgi">
@@ -41,15 +40,11 @@
       <%body_font%>
        You have chosen to detach the post '<a href="gforum.cgi?post=<%post_id%>;<%hidden_query%>"><%post_subject%></a>' and its <%post_replies%> repl<%if post_replies == 1%>y<%else%>ies<%endif%>, started by <%if user_id%><a href="gforum.cgi?username=<%escape_url post_username%>;<%hidden_query%>"><%nbsp post_username%></a><%else%><%nbsp post_username%><%endif%> on <%post_date%>.<br><br>
         Detaching a post will turn that post into a new thread. You also have the option now to place the new thread into another forum.
-       If you wish to move it to a new forum, you must select the forum to move the post to below. You can only move the post to forums on which you are a moderator.<br><br>
-       <%GForum::Forum::moderator_tpl_list(without => $forum_id)%>
+       If you wish to move it to a new forum, you must select the forum to move the post to below.<br><br>
+       <%GForum::Forum::moderator_tpl_options(without => $forum_id)%>
        <select name="forum_id" size=1 class=button>
-          <option value="<%forum_id_fk%>">Detach only; don't move</option>
-<%if num_categories%>
-<%loop categories%><%loop forums%>
-         <option value="<%forum_id%>"><%cat_name%>: <%forum_name%></option>
-<%endloop%><%endloop%>
-<%endif%>
+          <option value="<%forum_id%>">Detach only; don't move</option>
+          <%moderator_tpl_options%>
        </select>
        <input type=hidden name=post_id value="<%post_id%>">
        <input type=hidden name=do value=post_detach>
Index: default/post_detached.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/post_detached.html,v
retrieving revision 1.1
retrieving revision 1.3
diff -b -u -r1.1 -r1.3
--- default/post_detached.html  9 Nov 2001 20:56:04 -0000       1.1
+++ default/post_detached.html  16 Dec 2001 00:17:46 -0000      1.3
@@ -12,7 +12,7 @@
 --%>
 <html>
 <head>
-<title><%site_title%>: <%cat_name%>: <%forum_name%>: Post detached<%if forum_id != $old_forum_id%> and moved<%endif%></title>
+<title><%site_title%>: <%cat_full_name%>: <%forum_name%>: Post detached<%if forum_id != $old_forum_id%> and moved<%endif%></title>
 <meta http-equiv="refresh" content="5;url=gforum.cgi?do=forum_view&forum=<%old_forum_id%>&<%hidden_query%>">
 <%include include_css.html%>
 </head>
@@ -22,19 +22,13 @@
 <%body_table%>
   <tr>
     <td>
-      <a href="gforum.cgi?<%hidden_query%>">
-       <%title_font%><%site_title%>:<%/title_font%>
-      </a>
-      <a href="gforum.cgi?category=<%cat_id%>;<%hidden_query%>">
-       <%title_font%><%cat_name%>:<%/title_font%>
-      </a>
-      <a href="gforum.cgi?forum=<%forum_id%>;<%hidden_query%>">
-       <%title_font%><%forum_name%>:<%/title_font%>
-      </a>
-      <%title_font%>Post detached<%if forum_id != $old_forum_id%> and moved<%endif%>!<%/title_font%>
+      <%title_font%>
+        <%include include_title_cat_forum.html%>
+        Post detached<%if forum_id != $old_forum_id%> and moved<%endif%>!
+      <%/title_font%>
     </td>
     <td align="right">
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
   <tr>
@@ -44,10 +38,10 @@
        <%if user_id_fk%><a href="gforum.cgi?username=<%post_username%>;<%hidden_query%>"><%nbsp post_username%></a><%else%><%nbsp post_username%><%endif%>
        has been detached from its thread and turned into a new seperate thread.
 <%if forum_id != $old_forum_id%>
-        The new thread was moved from the <a href="gforum.cgi?category=<%old_cat_id%>;<%hidden_query%>"><%old_cat_name%></a>: <a href="gforum.cgi?forum=<%old_forum_id%>;<%hidden_query%>"><%old_forum_name%></a> forum
-       to the <a href="gforum.cgi?category=<%cat_id%>;<%hidden_query%>"><%cat_name%></a>: <a href="gforum.cgi?forum=<%forum_id%>;<%hidden_query%>"><%forum_name%></a> forum.
+        The new thread was moved from the <a href="gforum.cgi?category=<%old_cat_id%>;<%hidden_query%>"><%old_cat_full_name%></a>: <a href="gforum.cgi?forum=<%old_forum_id%>;<%hidden_query%>"><%old_forum_name%></a> forum
+       to the <a href="gforum.cgi?category=<%cat_id%>;<%hidden_query%>"><%cat_full_name%></a>: <a href="gforum.cgi?forum=<%forum_id%>;<%hidden_query%>"><%forum_name%></a> forum.
 <%endif%>
-       You will be automatically redirected to <%old_cat_name%>: <%old_forum_name%> shortly.
+       You will be automatically redirected to <%old_cat_full_name%>: <%old_forum_name%> shortly.
        <a href="gforum.cgi?post=<%post_id%>;<%hidden_query%><%unless current_user_id and not current_user_default_post_display%>#<%post_id%><%endunless%>">Click here to view the new thread</a>
        or choose the forum you wish to visit:
       <%/body_font%>
Index: default/post_edit.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/post_edit.html,v
retrieving revision 1.12
retrieving revision 1.16
diff -b -u -r1.12 -r1.16
--- default/post_edit.html      24 Oct 2001 22:57:46 -0000      1.12
+++ default/post_edit.html      17 Dec 2001 04:40:30 -0000      1.16
@@ -11,7 +11,7 @@
 --%>
 <html>
 <head>
-<title><%site_title%>: <%cat_name%>: <%forum_name%>: Edit post</title>
+<title><%site_title%>: <%cat_full_name%>: <%forum_name%>: Edit post</title>
 <%if spellcheck%><%spellcheck_head%><%endif%>
 <%include include_css.html%>
 </head>
@@ -22,15 +22,13 @@
   <tr>
     <td>
       <%title_font%>
-        <a href="gforum.cgi?<%hidden_query%>"><%title_font%><%site_title%>:<%/title_font%></a>
-        <a href="gforum.cgi?category=<%cat_id%>;<%hidden_query%>"><%title_font%><%cat_name%>:<%/title_font%></a>
-       <a href="gforum.cgi?forum=<%forum_id%>;<%hidden_query%>"><%title_font%><%forum_name%>:<%/title_font%></a>
+        <%include include_title_cat_forum.html%>
         Edit Message:<br>
        <a href="gforum.cgi?post=<%post_id%>;<%hidden_query%>#<%post_id%>"><%title_font%><%post_subject%><%/title_font%></a>
       <%/title_font%>
     </td>
     <td align="right">
-      <a href="http://www.gossamer-threads.com/scripts/gforum"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
   <tr>
@@ -46,7 +44,13 @@
     <td colspan="2">
       <%hidden_form%>
       <input type="hidden" name="post" value="<%post_id%>">
+<%if advanced_editor and is_ie and ie_version >= 5%>
+<%include include_post_html_common_write.html%>
+<%elsif current_user_advanced_editor and not basic_editor and is_ie and ie_version >= 5%>
+<%include include_post_html_common_write.html%>
+<%else%>
 <%include include_post_common_write.html%>
+<%endif%>
     </td>
   </tr>
   <tr>
Index: default/post_edit_post.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/post_edit_post.html,v
retrieving revision 1.12
retrieving revision 1.15
diff -b -u -r1.12 -r1.15
--- default/post_edit_post.html 21 Oct 2001 03:07:04 -0000      1.12
+++ default/post_edit_post.html 17 Dec 2001 05:01:25 -0000      1.15
@@ -11,7 +11,7 @@
 --%>
 <html>
 <head>
-<title><%site_title%>: <%cat_name%>: <%forum_name%>: Post changes made!</title>
+<title><%site_title%>: <%cat_full_name%>: <%forum_name%>: Post changes made!</title>
 <meta http-equiv="refresh" content="5;url=gforum.cgi?do=forum_view&forum=<%forum_id%>&<%hidden_query%>">
 <%include include_css.html%>
 </head>
@@ -22,27 +22,19 @@
 <%body_table%>
   <tr>
     <td valign="bottom">
-      <a href="gforum.cgi?<%hidden_query%>">
-       <%title_font%><%site_title%>:<%/title_font%>
-      </a>
-      <a href="gforum.cgi?category=<%cat_id%>;<%hidden_query%>">
-       <%title_font%><%cat_name%>:<%/title_font%>
-      </a>
-      <a href="gforum.cgi?forum=<%forum_id%>;<%hidden_query%>">
-       <%title_font%><%forum_name%>:<%/title_font%>
-      </a>
-      <a href="gforum.cgi?post=<%post_id%>;<%hidden_query%>">
-       <%title_font%>Post Edited<%/title_font%>
-      </a>
+      <%title_font%>
+        <%include include_title_cat_forum.html%>
+        <a href="gforum.cgi?post=<%post_id%>;<%hidden_query%>"><%title_font%>Post Edited<%/title_font%></a>
+      <%/title_font%>
     </td>
     <td align="right">
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
   <tr>
     <td colspan="2">
       <%body_font%>
-       <br>Your changes to the message in <%cat_name%>: <%forum_name%> have been made. You will be automatically redirected to the forum shortly.
+       <br>Your changes to the message in <%cat_full_name%>: <%forum_name%> have been made. You will be automatically redirected to the forum shortly.
        <a href="gforum.cgi?post=<%post_id%>;<%hidden_query%><%unless current_user_id and not current_user_default_post_display%>#<%post_id%><%endunless%>"><b>Click here to view the post</b></a>
       <%/body_font%>
     </td>
Index: default/post_editlog.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/post_editlog.html,v
retrieving revision 1.10
retrieving revision 1.13
diff -b -u -r1.10 -r1.13
--- default/post_editlog.html   21 Oct 2001 03:07:04 -0000      1.10
+++ default/post_editlog.html   16 Dec 2001 00:17:46 -0000      1.13
@@ -12,7 +12,7 @@
 --%>
 <html>
 <head>
-<title><%site_title%>: <%cat_name%>: <%forum_name%>: <%post_subject%>: Edit Log</title>
+<title><%site_title%>: <%cat_full_name%>: <%forum_name%>: <%post_subject%>: Edit Log</title>
 <%include include_css.html%>
 </head>

@@ -22,19 +22,20 @@
 <%body_table%>
   <tr>
     <td valign="bottom">
-      <a href="gforum.cgi?<%hidden_query%>"><%title_font%><%site_title%><%/title_font%></a>
-      <a href="gforum.cgi?category=<%cat_id%>;<%hidden_query%>"><%title_font%><%cat_name%>:<%/title_font%></a>
-      <a href="gforum.cgi?forum=<%forum_id%>;<%hidden_query%>"><%title_font%><%forum_name%>:<%/title_font%></a>
-      <a href="gforum.cgi?post=<%post_id%>;<%hidden_query%><%unless current_user_id and not current_user_default_post_display%>#<%post_id%><%endunless%>"><%title_font%><%post_subject%>:<%/title_font%></a>
-      <%title_font%>Edit Log<%/title_font%>
+      <%title_font%>
+        <%include include_title_cat_forum.html%>
+        <a href="gforum.cgi?post=<%post_id%>;<%hidden_query%><%unless current_user_id and not current_user_default_post_display%>#<%post_id%><%endunless%>"><%title_font%><%post_subject%><%/title_font%></a>:
+        Edit Log
+      <%/title_font%>
     </td>
     <td align="right" valign="bottom">
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
   <tr>
     <td colspan="2">
       <br><br>
+      <%set hide_post_menu = 1%>
       <%include include_post_display.html%>
     </td>
   </tr>
Index: default/post_move_select.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/post_move_select.html,v
retrieving revision 1.7
retrieving revision 1.11
diff -b -u -r1.7 -r1.11
--- default/post_move_select.html       9 Nov 2001 20:56:04 -0000       1.7
+++ default/post_move_select.html       17 Dec 2001 00:38:48 -0000      1.11
@@ -14,7 +14,7 @@
 <%GForum::Post::View::get($root_id)%>
 <html>
 <head>
-<title><%site_title%>: <%cat_name%>: <%forum_name%>: <%post_subject%>: Move Thread</title>
+<title><%site_title%>: <%cat_full_name%>: <%forum_name%>: <%post_subject%>: Move Thread</title>
 <%include include_css.html%>
 </head>
 <%body_tag%>
@@ -24,14 +24,13 @@
   <tr>
     <td valign=bottom>
       <%title_font%>
-       <a href="gforum.cgi?category=<%cat_id%>;<%hidden_query%>"><%title_font%><%cat_name%>:<%/title_font%></a>
-       <a href="gforum.cgi?forum=<%forum_id%>;<%hidden_query%>"><%title_font%><%forum_name%>:<%/title_font%></a>
+        <%include include_title_cat_forum.html%>
        <a href="gforum.cgi?post=<%post_id%>;<%hidden_query%>#<%post_id%>"><%title_font%><%post_subject%>:<%/title_font%></a>
        Move Thread
       <%/title_font%>
     </td>
     <td align=right>
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
 <form method="GET" action="gforum.cgi">
@@ -40,20 +39,14 @@
       <%hidden_form%>
       <%body_font%>
        You have chosen to move the thread '<a href="gforum.cgi?post=<%if post_root_id%><%post_root_id%><%else%><%post_id%><%endif%>;<%hidden_query%>"><%post_subject%></a>' containing <%post_replies%> repl<%if post_replies == 1%>y<%else%>ies<%endif%>, started by <%if user_id%><a href="gforum.cgi?username=<%escape_url post_username%>;<%hidden_query%>"><%nbsp post_username%></a><%else%><%nbsp post_username%><%endif%> on <%post_date%>.<br><br>
-       You must select the forum to move the post to. You can only move the post to forums on which you are a moderator.<br><br>
-       <%GForum::Forum::moderator_tpl_list(without => $forum_id)%>
-<%if num_categories%>
+       You must select the forum to move the post to.<br><br>
+       <%GForum::Forum::moderator_tpl_options(without => $forum_id)%>
        <select name="forum_id" size=1 class=button>
-<%loop categories%><%loop forums%>
-         <option value="<%forum_id%>"><%cat_name%>: <%forum_name%></option>
-<%endloop%><%endloop%>
+          <%moderator_tpl_options%>
        </select>
        <input type=hidden name=root_id value="<%root_id%>">
        <input type=hidden name=do value=post_move>
        <input type=submit class=submit value="Move Thread">
-<%else%>
-       You are not a moderator of any other forum and so cannot move the thread
-<%endif%>
       <%/body_font%>
     </td>
   </tr>
Index: default/post_moved.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/post_moved.html,v
retrieving revision 1.6
retrieving revision 1.9
diff -b -u -r1.6 -r1.9
--- default/post_moved.html     21 Oct 2001 03:07:04 -0000      1.6
+++ default/post_moved.html     17 Dec 2001 00:38:48 -0000      1.9
@@ -11,7 +11,7 @@
 --%>
 <html>
 <head>
-<title><%site_title%>: <%cat_name%>: <%forum_name%>: Thread moved</title>
+<title><%site_title%>: <%cat_full_name%>: <%forum_name%>: Thread moved</title>
 <meta http-equiv="refresh" content="5;url=gforum.cgi?do=forum_view&forum=<%old_forum_id%>&<%hidden_query%>">
 <%include include_css.html%>
 </head>
@@ -21,19 +21,13 @@
 <%body_table%>
   <tr>
     <td>
-      <a href="gforum.cgi?<%hidden_query%>">
-       <%title_font%><%site_title%>:<%/title_font%>
-      </a>
-      <a href="gforum.cgi?category=<%cat_id%>;<%hidden_query%>">
-       <%title_font%><%cat_name%>:<%/title_font%>
-      </a>
-      <a href="gforum.cgi?forum=<%forum_id%>;<%hidden_query%>">
-       <%title_font%><%forum_name%>:<%/title_font%>
-      </a>
-      <%title_font%>Thread moved!<%/title_font%>
+      <%title_font%>
+        <%include include_title_cat_forum.html%>
+        Thread moved!
+      <%/title_font%>
     </td>
     <td align="right">
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
   <tr>
@@ -41,9 +35,9 @@
       <%body_font%>
        The thread '<a href="gforum.cgi?post=<%post_id%>;<%hidden_query%>"><%post_subject%></a>', written by
        <%if user_id_fk%><a href="gforum.cgi?username=<%post_username%>;<%hidden_query%>"><%nbsp post_username%></a><%else%><%nbsp post_username%><%endif%>
-       has been moved from the <a href="gforum.cgi?category=<%old_cat_id%>;<%hidden_query%>"><%old_cat_name%></a>: <a href="gforum.cgi?forum=<%old_forum_id%>;<%hidden_query%>"><%old_forum_name%></a> forum
-       to the <a href="gforum.cgi?category=<%cat_id%>;<%hidden_query%>"><%cat_name%></a>: <a href="gforum.cgi?forum=<%forum_id%>;<%hidden_query%>"><%forum_name%></a> forum.
-       You will be automatically redirected to <%old_cat_name%>: <%old_forum_name%> shortly.
+       has been moved from the <%GForum::Category::full_name_linked($old_cat_id, ': ', '', '', 'gforum.cgi?', $hidden_query)%>: <a href="gforum.cgi?forum=<%old_forum_id%>;<%hidden_query%>"><%old_forum_name%></a> forum
+       to the <%GForum::Category::full_name_linked($cat_id, ': ', '', '', 'gforum.cgi?', $hidden_query)%>: <a href="gforum.cgi?forum=<%forum_id%>;<%hidden_query%>"><%forum_name%></a> forum.
+       You will be automatically redirected to <%old_cat_full_name%>: <%old_forum_name%> shortly.
        <a href="gforum.cgi?post=<%post_id%>;<%hidden_query%><%unless current_user_id and not current_user_default_post_display%>#<%post_id%><%endunless%>">Click here to view the thread</a>
        or choose the forum you wish to visit:
       <%/body_font%>
Index: default/post_post.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/post_post.html,v
retrieving revision 1.14
retrieving revision 1.16
diff -b -u -r1.14 -r1.16
--- default/post_post.html      21 Oct 2001 03:07:04 -0000      1.14
+++ default/post_post.html      16 Dec 2001 00:17:46 -0000      1.16
@@ -12,7 +12,7 @@
 --%>
 <html>
 <head>
-<title><%site_title%>: <%cat_name%>: <%forum_name%>: Message posted!</title>
+<title><%site_title%>: <%cat_full_name%>: <%forum_name%>: Message posted!</title>
 <meta http-equiv="refresh" content="5;url=gforum.cgi?do=forum_view&forum=<%forum_id%>&<%hidden_query%>">
 <%include include_css.html%>
 </head>
@@ -22,19 +22,13 @@
 <%body_table%>
   <tr>
     <td>
-      <a href="gforum.cgi?<%hidden_query%>">
-       <%title_font%><%site_title%>:<%/title_font%>
-      </a>
-      <a href="gforum.cgi?category=<%cat_id%>;<%hidden_query%>">
-       <%title_font%><%cat_name%>:<%/title_font%>
-      </a>
-      <a href="gforum.cgi?forum=<%forum_id%>;<%hidden_query%>">
-       <%title_font%><%forum_name%>:<%/title_font%>
-      </a>
-      <%title_font%>Message posted!<%/title_font%>
+      <%title_font%>
+        <%include include_title_cat_forum.html%>
+        Message posted!
+      <%/title_font%>
     </td>
     <td align="right">
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
   <tr>
@@ -43,7 +37,7 @@
 <%if attachment_errors%>
        <%attachment_errors%>
 <%else%>
-       Your message was successfully posted to <%cat_name%>: <%forum_name%>. You will be automatically redirected to the forum shortly.
+       Your message was successfully posted to <%cat_full_name%>: <%forum_name%>. You will be automatically redirected to the forum shortly.
 <%endif%>
        <a href="gforum.cgi?post=<%post_id%>;<%hidden_query%><%unless current_user_id and not current_user_default_post_display%>#<%post_id%><%endunless%>">
          Click here to view your post
Index: default/post_reply_post.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/post_reply_post.html,v
retrieving revision 1.14
retrieving revision 1.16
diff -b -u -r1.14 -r1.16
--- default/post_reply_post.html        21 Oct 2001 03:07:04 -0000      1.14
+++ default/post_reply_post.html        16 Dec 2001 00:17:46 -0000      1.16
@@ -11,7 +11,7 @@
 --%>
 <html>
 <head>
-<title><%site_title%>: <%cat_name%>: <%forum_name%>: Message posted!</title>
+<title><%site_title%>: <%cat_full_name%>: <%forum_name%>: Message posted!</title>
 <meta http-equiv="refresh" content="5;url=gforum.cgi?do=forum_view&forum=<%forum_id%>&<%hidden_query%>">
 <%include include_css.html%>
 </head>
@@ -23,19 +23,13 @@
   <tr>
     <td valign="bottom">
       <%hidden_form%>
-      <a href="gforum.cgi?<%hidden_query%>">
-       <%title_font%><%site_title%><%/title_font%>
-      </a>:
-      <a href="gforum.cgi?category=<%cat_id%>;<%hidden_query%>">
-       <%title_font%><%cat_name%>:<%/title_font%>
-      </a>
-      <a href="gforum.cgi?forum=<%forum_id%>;<%hidden_query%>">
-       <%title_font%><%forum_name%>:<%/title_font%>
-      </a>
-      <%title_font%>Message posted!<%/title_font%>
+      <%title_font%>
+        <%include include_title_cat_forum.html%>
+        Message posted!
+      <%/title_font%>
     </td>
     <td align="right">
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
   <tr>
@@ -44,7 +38,7 @@
 <%if attachment_errors%>
        <%attachment_errors%>
 <%endif%>
-       <br><br>Your message has been posted to <%cat_name%>: <%forum_name%>. You will be automatically redirected to the forum shortly.
+       <br><br>Your message has been posted to <%cat_full_name%>: <%forum_name%>. You will be automatically redirected to the forum shortly.
        <a href="gforum.cgi?post=<%post_id%>;<%hidden_query%><%unless current_user_id and not current_user_default_post_display%>#<%post_id%><%endunless%>">
          Click here to view your post
        </a> or choose the forum you wish to visit:
Index: default/post_reply_write.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/post_reply_write.html,v
retrieving revision 1.19
retrieving revision 1.24
diff -b -u -r1.19 -r1.24
--- default/post_reply_write.html       23 Oct 2001 22:33:35 -0000      1.19
+++ default/post_reply_write.html       17 Dec 2001 04:40:30 -0000      1.24
@@ -11,7 +11,7 @@
 --%>
 <html>
 <head>
-<title><%site_title%>: <%cat_name%>: <%forum_name%>: Reply to post</title>
+<title><%site_title%>: <%cat_full_name%>: <%forum_name%>: Reply to post</title>
 <%if spellcheck%><%spellcheck_head%><%endif%>
 <%include include_css.html%>
 </head>
@@ -24,19 +24,13 @@
   <tr>
     <td valign="bottom">
       <%hidden_form%>
-      <a href="gforum.cgi?<%hidden_query%>">
-       <%title_font%><%site_title%></font>
-      </a>:
-      <a href="gforum.cgi?category=<%cat_id%>;<%hidden_query%>">
-       <%title_font%><%cat_name%>:<%/title_font%>
-      </a>
-      <a href="gforum.cgi?forum=<%forum_id%>;<%hidden_query%>">
-       <%title_font%><%forum_name%>:<%/title_font%>
-      </a>
-      <%title_font%>Reply to post<%/title_font%>
+      <%title_font%>
+        <%include include_title_cat_forum.html%>
+        Reply to post
+      <%/title_font%>
     </td>
     <td align="right">
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
   <tr>
@@ -58,12 +52,13 @@
   </tr>
   <tr bgcolor="<%odd_color%>">
     <td colspan="2">
+<%if advanced_editor and is_ie and ie_version >= 5%>
+<%include include_post_html_common_write.html%>
+<%elsif current_user_advanced_editor and not basic_editor and is_ie and ie_version >= 5%>
+<%include include_post_html_common_write.html%>
+<%else%>
 <%include include_post_common_write.html%>
-<script language="JavaScript">
-<!--
-document.post.post_message.focus();
-// -->
-</script>
+<%endif%>
     </td>
   </tr>
   <tr>
Index: default/post_view_flat.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/post_view_flat.html,v
retrieving revision 1.18
retrieving revision 1.21
diff -b -u -r1.18 -r1.21
--- default/post_view_flat.html 9 Nov 2001 20:56:04 -0000       1.18
+++ default/post_view_flat.html 16 Dec 2001 00:17:46 -0000      1.21
@@ -12,7 +12,7 @@
 --%>
 <html>
 <head>
-<title><%site_title%>: <%cat_name%>: <%forum_name%>: <%root_subject%><%if this_page > 1%>: Page <%this_page%><%endif%></title>
+<title><%site_title%>: <%cat_full_name%>: <%forum_name%>: <%if root_post_deleted%>Post deleted by <%root_post_deleted_by%><%if user_perm_moderator%>: <%root_post_subject%><%endif%><%else%><%root_post_subject%><%endif%><%if this_page > 1%>: Page <%this_page%><%endif%></title>
 <%include include_css.html%>
 <script language="JavaScript">
 <!--
@@ -35,19 +35,14 @@
   <tr>
     <td valign="bottom">
       <%hidden_form%>
-      <a href="gforum.cgi?<%hidden_query%>">
-       <%title_font%><%site_title%>:<%/title_font%>
-      </a>
-      <a href="gforum.cgi?category=<%cat_id%>;<%hidden_query%>">
-       <%title_font%><%cat_name%>:<%/title_font%>
-      </a>
-      <a href="gforum.cgi?forum=<%forum_id%>;<%if forum_view%>do=<%forum_view%>;<%endif%><%hidden_query%>">
-       <%title_font%><%forum_name%>:<%/title_font%>
-      </a><br>
-      <%title_font%><%root_subject%><%/title_font%>
+      <%title_font%>
+        <%include include_title_cat_forum.html%>
+        <br>
+        <%if root_post_deleted%>Post deleted by <%root_post_deleted_by%><%if user_perm_moderator%>: <%root_post_subject%><%endif%><%else%><%root_post_subject%><%endif%>
+      <%/title_font%>
     </td>
     <td align="right">
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
   <tr>
@@ -73,12 +68,12 @@
            <input type="submit" value="Next Thread" name="do=post_view_flat;sb=<%sb%>;so=<%so%>;post=<%next%>;" class="button">
 <%endif%>
 <script><!--
-  document.write('<input type="button" value="Print Thread" onClick="openWindow(\'gforum.cgi?do=post_view_printable;post=<%root_id%>;<%hidden_query%>\')" class="submit">');
+  document.write('<input type="button" value="Print Thread" onClick="openWindow(\'gforum.cgi?do=post_view_printable;post=<%root_post_id%>;<%hidden_query%>\')" class="submit">');
 //--></script>
 <noscript>
-  <a href="gforum.cgi?do=post_view_printable;post=<%root_id%>;<%hidden_query%>" target="_blank"><%title_font%>Print Thread<%/title_font%></a>
+  <a href="gforum.cgi?do=post_view_printable;post=<%root_post_id%>;<%hidden_query%>" target="_blank"><%title_font%>Print Thread<%/title_font%></a>
 </noscript>
-           <input type="submit" value="View Threaded" name="do=post_view_threaded;<%sb%>;so=<%so%>;post=<%root_id%>" class="submit">
+           <input type="submit" value="View Threaded" name="do=post_view_threaded;<%sb%>;so=<%so%>;post=<%root_post_id%>" class="submit">
          </td>
        </tr>
       </table>
@@ -118,8 +113,8 @@
 <%if next%>
            <input type="submit" value="Next Thread" name="do=post_view_flat;sb=<%sb%>;so=<%so%>;post=<%next%>;" class="button">
 <%endif%>
-           <input type="submit" value="Print Thread" name="do=post_view_printable;post=<%root_id%>" class="submit" >
-           <input type="submit" value="View Threaded" name="do=post_view_threaded;<%sb%>;so=<%so%>;post=<%root_id%>" class="submit">
+           <input type="submit" value="Print Thread" name="do=post_view_printable;post=<%root_post_id%>" class="submit" >
+           <input type="submit" value="View Threaded" name="do=post_view_threaded;<%sb%>;so=<%so%>;post=<%root_post_id%>" class="submit">
          </td>
        </tr>
       </table>
Index: default/post_view_printable.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/post_view_printable.html,v
retrieving revision 1.3
retrieving revision 1.6
diff -b -u -r1.3 -r1.6
--- default/post_view_printable.html    9 Nov 2001 20:56:04 -0000       1.3
+++ default/post_view_printable.html    16 Dec 2001 00:17:46 -0000      1.6
@@ -13,7 +13,7 @@
 --%>
 <html>
 <head>
-<title><%site_title%>: <%cat_name%>: <%forum_name%>: <%root_subject%><%endif%></title>
+<title><%site_title%>: <%cat_full_name%>: <%forum_name%>: <%if root_post_deleted%>Post deleted by <%root_post_deleted_by%><%if user_perm_moderator%>: <%root_post_subject%><%endif%><%else%><%root_post_subject%><%endif%><%endif%></title>
 <%include include_css.html%>
 <script language="JavaScript">
 <!--
@@ -27,12 +27,12 @@

 <body>
 <p>
-<a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
-<a href="gforum.cgi?<%hidden_query%>"><%title_font%><%site_title%>:<%/title_font%></a>
-<a href="gforum.cgi?category=<%cat_id%>;<%hidden_query%>"><%title_font%><%cat_name%>:<%/title_font%></a>
-<a href="gforum.cgi?forum=<%forum_id%>;<%if forum_view%>do=<%forum_view%>;<%endif%><%hidden_query%>"><%title_font%><%forum_name%>:<%/title_font%></a>
-<br>
-<%title_font%><%root_subject%><%/title_font%>
+<%include include_logo.html%>
+<%title_font%>
+  <%include include_title_cat_forum.html%>
+  <br>
+  <%if root_post_deleted%>Post deleted by <%root_post_deleted_by%><%if user_perm_moderator%>: <%root_post_subject%><%endif%><%else%><%root_post_subject%><%endif%>
+<%/title_font%>
 </p>
 <form>
 <script>
Index: default/post_view_threaded.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/post_view_threaded.html,v
retrieving revision 1.20
retrieving revision 1.22
diff -b -u -r1.20 -r1.22
--- default/post_view_threaded.html     9 Nov 2001 20:56:04 -0000       1.20
+++ default/post_view_threaded.html     16 Dec 2001 00:17:46 -0000      1.22
@@ -12,7 +12,7 @@
 --%>
 <html>
 <head>
-<title><%site_title%>: <%cat_name%>: <%forum_name%>: <%post_subject%> (<%post_username%>)</title>
+<title><%site_title%>: <%cat_full_name%>: <%forum_name%>: <%post_subject%> (<%post_username%>)</title>
 <%include include_css.html%>
 <script language="JavaScript">
 <!--
@@ -34,20 +34,14 @@
   <tr>
     <td valign="bottom">
       <%hidden_form%>
-      <a href="gforum.cgi?<%hidden_query%>">
-       <%title_font%><%site_title%>:<%/title_font%>
-      </a>
-      <a href="gforum.cgi?category=<%cat_id%>;<%hidden_query%>">
-       <%title_font%><%cat_name%>:<%/title_font%>
-      </a>
-      <a href="gforum.cgi?forum=<%forum_id%>;<%if forum_view%>do=<%forum_view%>;<%endif%><%hidden_query%>">
-       <%title_font%><%forum_name%><%/title_font%>
-      </a>
+      <%title_font%>
+        <%include include_title_cat_forum.html%>
       <br>
-      <%title_font%><%post_subject%><%/title_font%>
+        <%post_subject%>
+      <%/title_font%>
     </td>
     <td align="right">
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
   <tr>
Index: default/post_write.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/post_write.html,v
retrieving revision 1.16
retrieving revision 1.19
diff -b -u -r1.16 -r1.19
--- default/post_write.html     21 Oct 2001 03:07:04 -0000      1.16
+++ default/post_write.html     16 Dec 2001 00:17:46 -0000      1.19
@@ -12,7 +12,7 @@
 --%>
 <html>
 <head>
-<title><%site_title%>: <%cat_name%>: <%forum_name%> - Post a new message</title>
+<title><%site_title%>: <%cat_full_name%>: <%forum_name%> - Post a new message</title>
 <%if spellcheck%><%spellcheck_head%><%endif%>
 <%include include_css.html%>
 </head>
@@ -22,19 +22,14 @@
 <%body_table%>
   <tr>
     <td valign="bottom">
-      <a href="gforum.cgi?<%hidden_query%>">
-       <%title_font%><%site_title%>:<%/title_font%>
-      </a>
-      <a href="gforum.cgi?category=<%cat_id%>;<%hidden_query%>">
-       <%title_font%><%cat_name%>:<%/title_font%>
-      </a>
-      <a href="gforum.cgi?forum=<%forum_id%>;<%if forum_view%>do=<%forum_view%>;<%endif%><%hidden_query%>">
-       <%title_font%><%forum_name%>:<%/title_font%>
-      </a>
-      <%title_font%>Post New Message<%/title_font%>
+      <%title_font%>
+        <%include include_title_cat_forum.html%>
+        <br>
+        Post New Message
+      <%/title_font%>
     </td>
     <td align="right">
-     <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+     <%include include_logo.html%>
     </td>
   </tr>
   <tr>
@@ -45,14 +40,21 @@
 <%endif%>
     </td>
   </tr>
-<form action="gforum.cgi" method="post" enctype="multipart/form-data" name="post">
+<form action="gforum.cgi<%if current_user_do_after_post eq post_view%>#last<%endif%>" method="post" enctype="multipart/form-data" name="post">
   <tr>
     <td colspan="2">
       <%hidden_form%>
       <input type="hidden" name="forum" value="<%forum_id%>">
       <br>
       <%body_font%>
+<%if advanced_editor and is_ie and ie_version >= 5%>
+<%include include_post_html_common_write.html%>
+<%elsif current_user_advanced_editor and not basic_editor and is_ie and ie_version >= 5%>
+<%include include_post_html_common_write.html%>
+<%else%>
 <%include include_post_common_write.html%>
+<%endif%>
+
       <%/body_font%>
 <script language="JavaScript">
 <!--
@@ -66,8 +68,8 @@
       <table border="0" width="100%" bgcolor="<%light_green%>" cellpadding="4" cellspacing="0">
        <tr>
          <td align="right">
-           <input type="submit" name="do=spellcheck;spellcheck_col=post_message;redo=post_write" value="Check Spelling" class="button" tabindex=15>
            <input type="submit" name="do=post_preview;redo=post_write" value="Preview Post" class="button" tabindex=15>
+           <input type="submit" name="do=spellcheck;spellcheck_col=post_message;redo=post_write" value="Check Spelling" class="button" tabindex=15>
            <input type="submit" name="do=post_post" value="Post Message" class="submit" tabindex=15>
          </td>
        </tr>
Index: default/reply.eml
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/reply.eml,v
retrieving revision 1.2
retrieving revision 1.3
diff -b -u -r1.2 -r1.3
--- default/reply.eml   8 Oct 2001 02:03:30 -0000       1.2
+++ default/reply.eml   16 Dec 2001 00:17:46 -0000      1.3
@@ -4,7 +4,7 @@

 <%site_title%>

-<%post_username%> has replied to your post in the <%cat_name%>: <%forum_name%> forum.
+<%post_username%> has replied to your post in the <%cat_full_name%>: <%forum_name%> forum.

 Subject: <%post_subject%>

Index: default/search.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/search.html,v
retrieving revision 1.9
retrieving revision 1.11
diff -b -u -r1.9 -r1.11
--- default/search.html 21 Oct 2001 03:07:04 -0000      1.9
+++ default/search.html 18 Dec 2001 01:47:04 -0000      1.11
@@ -21,12 +21,12 @@
   <tr>
     <td valign="bottom">
       <a href="gforum.cgi?<%hidden_query%>">
-       <%title_font%><%site_title%><%/title_font%>
+       <%title_font%><%site_home%><%/title_font%>
       </a>:
       <%title_font%>Search<%/title_font%>
     </td>
     <td align="right" valign="bottom">
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
   <tr>
Index: default/search_results.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/search_results.html,v
retrieving revision 1.21
retrieving revision 1.25
diff -b -u -r1.21 -r1.25
--- default/search_results.html 31 Oct 2001 06:22:43 -0000      1.21
+++ default/search_results.html 18 Dec 2001 01:47:04 -0000      1.25
@@ -23,14 +23,12 @@
   <tr>
     <td valign="bottom">
       <%title_font%>
-       <a href="gforum.cgi?<%hidden_query%>">
-         <%title_font%><%site_title%><%/title_font%>
-       </a>:
+       <a href="gforum.cgi?<%hidden_query%>"><%title_font%><%site_home%><%/title_font%></a>:
        Search Results
       <%/title_font%>
     </td>
     <td align="right">
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
   <tr>
@@ -83,12 +81,8 @@
          </td>
          <td valign="top" style="border-right:1px solid <%dark_beige%>">
            <%body_font%>
-             <a href="gforum.cgi?category=<%cat_id%>;<%hidden_query%>">
-               <%cat_name%>:
-             </a>
-             <a href="gforum.cgi?forum=<%forum_id%>;<%hidden_query%>">
-               <%forum_name%>
-             </a>
+              <%GForum::Category::full_name_linked($cat_id, ': ', '', '', 'gforum.cgi?', $hidden_query)%>:
+             <a href="gforum.cgi?forum=<%forum_id%>;<%hidden_query%>"><%forum_name%></a>
            <%/body_font%>
          </td>
          <td align="left" valign="top">
Index: default/subscribe.eml
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/subscribe.eml,v
retrieving revision 1.2
retrieving revision 1.3
diff -b -u -r1.2 -r1.3
--- default/subscribe.eml       8 Oct 2001 02:03:30 -0000       1.2
+++ default/subscribe.eml       16 Dec 2001 00:17:46 -0000      1.3
@@ -1,8 +1,8 @@
 To: <%user_email%>
-Subject: <%site_title%> - Daily archive of <%cat_name%>: <%forum_name%>
+Subject: <%site_title%> - Daily archive of <%cat_full_name%>: <%forum_name%>
 From: <%site_title%> <<%admin_email%>>

-<%site_title%> forum archive for <%cat_name%>: <%forum_name%>
+<%site_title%> forum archive for <%cat_full_name%>: <%forum_name%>

 This forum is located at <%cgi_root_url%>/gforum.cgi?forum=<%forum_id%>
 The main site is located at <%cgi_root_url%>/gforum.cgi
Index: default/user_profile.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/user_profile.html,v
retrieving revision 1.10
retrieving revision 1.12
diff -b -u -r1.10 -r1.12
--- default/user_profile.html   21 Oct 2001 03:07:04 -0000      1.10
+++ default/user_profile.html   18 Dec 2001 01:47:04 -0000      1.12
@@ -24,12 +24,12 @@
   <tr>
     <td valign=bottom>
        <a href="gforum.cgi?<%hidden_query%>">
-         <%title_font%><%site_title%>:<%/title_font%>
+         <%title_font%><%site_home%>:<%/title_font%>
        </a>
        <%title_font%>Edit Profile<%/title_font%>
     </td>
     <td align=right>
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
   <tr>
Index: default/user_profile_basic.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/user_profile_basic.html,v
retrieving revision 1.26
retrieving revision 1.31
diff -b -u -r1.26 -r1.31
--- default/user_profile_basic.html     13 Nov 2001 20:16:40 -0000      1.26
+++ default/user_profile_basic.html     18 Dec 2001 01:47:04 -0000      1.31
@@ -22,7 +22,7 @@
     <td valign="bottom">
       <%title_font%>
        <a href="gforum.cgi?<%hidden_query%>">
-         <%title_font%><%site_title%><%/title_font%>
+         <%title_font%><%site_home%><%/title_font%>
        </a>:
        <a href="gforum.cgi?do=user_profile;<%hidden_query%>" class="menu">
          <%title_font%>Edit Profile:<%/title_font%>
@@ -31,7 +31,7 @@
       <%/title_font%>
     </td>
     <td align="right">
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
 <form action="gforum.cgi" method=post>
@@ -125,29 +125,6 @@
        </tr>
        <tr>
          <td align=right valign=top>
-           <%body_font%>Authentication:<%/body_font%>
-         </td>
-         <td>
-           <select class="button" name=user_cookies size=1>
-             <option value=1<%if user_cookies%> selected<%endif%>>Use cookies</option>
-             <option value=0<%ifnot user_cookies%> selected<%endifnot%>>Don't use cookies</option>
-           </select>
-         </td>
-       </tr>
-        <tr>
-          <td align=right valign=top>
-            <%body_font%>After posting:<%/body_font%>
-          </td>
-          <td>
-            <select name="user_do_after_post" size="1" class="button">
-              <option value="post_confirm"<%if user_do_after_post eq post_confirm%> selected<%endif%>>Display confirmation page, refresh to forum view</option>
-              <option value="post_confirm_post"<%if user_do_after_post eq post_confirm_post%> selected<%endif%>>Display confirmation page, refresh to post</option>
-              <option value="forum_view"<%if user_do_after_post eq forum_view%> selected<%endif%>>Return directly to forum view</option>
-              <option value="post_view"<%if user_do_after_post eq post_view%> selected<%endif%>>Return directly to post</option>
-            </select>
-          </td>
-       <tr>
-         <td align=right valign=top>
            <%body_font%>Visible in "Who's Online":<%/body_font%>
          </td>
          <td>
@@ -233,6 +210,14 @@
          </td>
        </tr>
 --%>
+       <tr>
+         <td align=right>
+           <%body_font%>Real Name:<%/body_font%>
+         </td>
+         <td>
+           <input class="button" type=text name=user_real_name size=50 maxlength=255 value="<%user_real_name%>">
+         </td>
+       </tr>
        <tr>
          <td align=right>
            <%body_font%>Homepage:<%/body_font%>
Index: default/user_profile_display.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/user_profile_display.html,v
retrieving revision 1.14
retrieving revision 1.19
diff -b -u -r1.14 -r1.19
--- default/user_profile_display.html   21 Oct 2001 03:07:04 -0000      1.14
+++ default/user_profile_display.html   18 Dec 2001 01:47:04 -0000      1.19
@@ -22,7 +22,7 @@
     <td valign=bottom>
       <%title_font%>
        <a href="gforum.cgi?<%hidden_query%>">
-         <%title_font%><%site_title%>:<%/title_font%>
+         <%title_font%><%site_home%>:<%/title_font%>
        </a>
        <a href="gforum.cgi?do=user_profile;<%hidden_query%>">
          <%title_font%>Edit Profile:<%/title_font%>
@@ -31,7 +31,7 @@
       <%/title_font%>
     </td>
     <td align=right>
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
 <%if errors%>
@@ -64,11 +64,11 @@
   The following option is disabled by default since Gossamer Forum only ships
   with one template set.

-  If you uncomment this, you can specify alternate template sets that a user
-  may choose. If a user has an alternate template set specified, whenever they
-  use the forum they will see the template set of their choice. This makes using
-  an interface with multiple languages very easy - one template set for English
-  users, one for French users, one for German users, etc.
+  You can use this to specify alternate template sets that users may choose.
+  If a user has an alternate template set specified, whenever they use the forum
+  they will see the template set they have chosen. This makes using an interface
+  with multiple languages very easy - one template set for English users, one
+  for French users, one for German users, etc.

   To use, replace the 3 occurances of "new_template_set" in the HTML <option>
   tag with the appropriate value. For example, if you were to add two new
@@ -78,20 +78,19 @@
              <option value="francais"<%if user_template eq new_template_set%> selected<%endif%>>Fran&ccedil;ais</option>
              <option value="deutsche"<%if user_template eq deutsche%> selected<%endif%>>Deutsche</option>

-  --%>
-<%--
+  Also be sure to change the same thing in the signup page.
+--%>
        <tr>
          <td width="30%" align=right>
            <%body_font%>Default Template Set:<%/body_font%>
          </td>
          <td>
            <select class="button" name="user_template" size="1">
-             <option value="default"<%if user_template eq default%> selected<%endif%>>Default</option>
-             <option value="new_template_set"<%if user_template eq new_template_set%> selected<%endif%>>new_template_set</option>
+             <option value="default"<%if user_template eq default%> selected<%endif%>>Default; post information on left</option>
+             <option value="default_top"<%if user_template eq default_top%> selected<%endif%>>Default; post information on top</option>
            </select>
          </td>
        </tr>
-  --%>
        <tr>
          <td width="30%" align=right>
            <%body_font%>Default Post Style:<%/body_font%>
@@ -129,6 +128,31 @@
            </select>
          </td>
        </tr>
+        <tr>
+          <td align=right valign=top>
+            <%body_font%>Post writer/editor:<%/body_font%>
+          </td>
+          <td>
+            <select name="user_advanced_editor" size="1" class="button">
+              <option value=0<%if user_advanced_editor = 0%> selected<%endif%>>Basic Editor</option>
+              <option value=1<%if user_advanced_editor = 1%> selected<%endif%>>Advanced Editor</option>
+            </select><br>
+            <%body_font%><small><i><u>Note</u>: The advanced editor required Internet Explorer version 5.0 or greater</i></small><%/body_font%>
+          </td>
+        </tr>
+        <tr>
+          <td align=right valign=top>
+            <%body_font%>After posting:<%/body_font%>
+          </td>
+          <td>
+            <select name="user_do_after_post" size="1" class="button">
+              <option value="post_confirm"<%if user_do_after_post eq post_confirm%> selected<%endif%>>Display confirmation page, refresh to forum view</option>
+              <option value="post_confirm_post"<%if user_do_after_post eq post_confirm_post%> selected<%endif%>>Display confirmation page, refresh to post</option>
+              <option value="forum_view"<%if user_do_after_post eq forum_view%> selected<%endif%>>Return directly to forum view</option>
+              <option value="post_view"<%if user_do_after_post eq post_view%> selected<%endif%>>Return directly to post</option>
+            </select>
+          </td>
+        </tr>
        <tr>
          <td align=right>
            <%body_font%>Default Forum View:<%/body_font%>
Index: default/user_profile_email.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/user_profile_email.html,v
retrieving revision 1.9
retrieving revision 1.12
diff -b -u -r1.9 -r1.12
--- default/user_profile_email.html     21 Oct 2001 03:07:04 -0000      1.9
+++ default/user_profile_email.html     18 Dec 2001 01:47:04 -0000      1.12
@@ -21,17 +21,13 @@
   <tr>
     <td valign=bottom>
       <%title_font%>
-       <a href="gforum.cgi?<%hidden_query%>">
-         <%title_font%><%site_title%>:<%/title_font%>
-       </a>
-       <a class="menu" href="gforum.cgi?do=user_profile;<%hidden_query%>">
-         <%title_font%>Edit Profile:<%/title_font%>
-       </a>
+       <a href="gforum.cgi?<%hidden_query%>"><%title_font%><%site_home%><%/title_font%></a>:
+       <a href="gforum.cgi?do=user_profile;<%hidden_query%>"><%title_font%>Edit Profile<%/title_font%></a>:
        Email Subscriptions
       <%/title_font%>
     </td>
     <td align=right>
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
 <form action="gforum.cgi" method="get">
@@ -39,52 +35,38 @@
     <td colspan=2 valign=bottom>
       <%hidden_form%>
       <%body_font%>
-       Welcome, <%nbsp user_username%>, you can subscribe and unsubscribe to the following forums:
-<%if num_cats%>
+       Welcome, <%nbsp user_username%>, you can subscribe/unsubscribe to the following forums:
        <%list_table%>
          <%top_row%>
            <td colspan=3>
              <img src="<%image_url%>/clear_shim.gif" width=100 height=1><br>
            </td>
          </tr>
-<%  loop cat_loop%>
+<%set indent = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'%>
+<%GForum::Utils::new_alternation(everything)%>
+<%loop everything%>
+<%  unless forum_id%><%-- A category --%>
          <%header_row%>
-           <td colspan=3>
-             <%header_font%><%cat_name%><%/header_font%>
+            <td width="2%">&nbsp;</td>
+           <td width="98%">
+             <%header_font%><%if cat_depth%><img src="<%image_url%>/clear_shim.gif" height=1 width="<%cat_depth * 25%>"><%endif%><%cat_name%><%/header_font%>
            </td>
          </tr>
-<%    loop forum_loop%>
-<%      if permission%>
-         <tr bgcolor="<%if odd%><%odd_color%><%else%><%even_color%><%endif%>">
-           <td bgcolor="<%even_color%>" width=15 style="border-right:1px solid <%dark_beige%>">
-             &nbsp;&nbsp;<br>
-           </td>
-           <td<%if permission < 2%> colspan=2<%endif%>>
-             <%body_font%><%forum_name%><%/body_font%>
-           </td>
-<%        if permission >= 2%>
-           <td>
+<%  else%><%-- A forum --%>
+         <tr bgcolor="<%GForum::Utils::alternation(everything, $odd_color, $even_color)%>">
+           <td align=center valign=center>
+<%    if forum_permission >= 2%>
              <input type=checkbox name=subscribe value=<%forum_id%><%if forum_subscribed%> checked<%endif%>>
-           </td>
+<%    else%>
+              &nbsp;
 <%        endif%>
-         </tr>
-<%      endif%>
-<%    endloop%>
-
-<%    unless forums_permitted%>
-         <tr>
-           <td width=15 bgcolor="<%even_color%>" style="border-right:1px solid <%dark_beige%>">
-             &nbsp;<br>
            </td>
            <td>
-             <%body_font%>
-               No forums available in this category
-             <%/body_font%>
+              <%body_font%><%if cat_depth%><img src="<%image_url%>/clear_shim.gif" height=1 width="<%cat_depth * 25%>"><%endif%><%forum_name%><%/body_font%>
            </td>
          </tr>
-<%    endunless%>
-
-<%  endloop%>
+<%  endif%>
+<%endloop%>
          <tr>
            <td colspan=3 bgcolor="<%light_green%>" align=right style="border-top:1px solid <%dark_beige%>">
              <input type=hidden name=do value=user_profile_email_change>
@@ -93,10 +75,7 @@
            </td>
          </tr>
        </table>
-<%else%>
-       There are no forums available for subscription.
       <%/body_font%>
-<%endif%>
     </td>
   </tr>
 </form>
Index: default/user_signup.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/user_signup.html,v
retrieving revision 1.12
retrieving revision 1.15
diff -b -u -r1.12 -r1.15
--- default/user_signup.html    15 Nov 2001 00:58:25 -0000      1.12
+++ default/user_signup.html    18 Dec 2001 01:47:04 -0000      1.15
@@ -22,13 +22,13 @@
     <td valign=bottom>
       <%title_font%>
        <a href="gforum.cgi?<%hidden_query%>">
-         <%title_font%><%site_title%>:<%/title_font%>
+         <%title_font%><%site_home%>:<%/title_font%>
        </a>
        Sign Up:
       <%/title_font%>
     </td>
     <td align=right>
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
 <form action="gforum.cgi" method="POST">
@@ -92,46 +92,36 @@
            <input class="button" type=text name=user_email value="<%user_email%>">
          </td>
        </tr>
-       <tr>
-         <td align=right>
-           <%body_font%>Use cookies<%/body_font%>
-         </td>
-         <td>
-           <input type=checkbox name=user_cookies value=1<%if not errors or user_cookies%> checked<%endif%>>
-         </td>
-       </tr>
 <%--
-  The following option is disabled by default since Gossamer Forum only ships
-  with one template set.
+  The following option is used to allow users to choose a different template set
+  when they sign up.

-  If you uncomment this, you can specify alternate template sets that a user
-  may choose. If a user has an alternate template set specified, whenever they
-  use the forum they will see the template set of their choice. This makes using
-  an interface with multiple languages very easy - one template set for English
-  users, one for French users, one for German users, etc.
+  You can specify alternate template sets that a user may choose by simply
+  cutting and pasting the HTML below. If a user has an alternate template set
+  specified, whenever they use the forum they will see the template set of their
+  choice. This makes using an interface with multiple languages very easy - one
+  template set for English users, one for French users, one for German users,
+  etc.

-  To use, replace the 3 occurances of "new_template_set" in the HTML <option>
-  tag with the appropriate value. For example, if you were to add two new
-  template sets called "french" and "german", in addition to "default", you
-  might do something like this:
+  For example, if you were to add two new template sets called "french" and
+  "german", in addition to "default", you might do something like this:
              <option value="default"<%if user_template eq default%> selected<%endif%>>English</option>
              <option value="francais"<%if user_template eq new_template_set%> selected<%endif%>>Fran&ccedil;ais</option>
              <option value="deutsche"<%if user_template eq deutsche%> selected<%endif%>>Deutsche</option>

+  Also remember to change the same select box in user_profile_display.html.
   --%>
-<%--
        <tr>
          <td align=right>
            <%body_font%>Default Template Set:<%/body_font%>
          </td>
          <td>
            <select class="button" name="user_template" size="1">
-             <option value="default"<%if user_template eq default%> selected<%endif%>>Default</option>
-             <option value="new_template_set"<%if user_template eq new_template_set%> selected<%endif%>>new_template_set</option>
+             <option value="default"<%if user_template eq default%> selected<%endif%>>Default; post information on left</option>
+             <option value="default_top"<%if user_template eq default_top%> selected<%endif%>>Default; post information on top</option>
            </select>
          </td>
        </tr>
-  --%>
        <tr bgcolor="<%light_green%>">
          <td colspan=2 align=right style="border-top:1px solid <%dark_beige%>">
            <input class="submit" type=submit value="Signup!">
Index: default/user_signup_success.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/user_signup_success.html,v
retrieving revision 1.8
retrieving revision 1.10
diff -b -u -r1.8 -r1.10
--- default/user_signup_success.html    21 Oct 2001 03:07:04 -0000      1.8
+++ default/user_signup_success.html    18 Dec 2001 01:47:04 -0000      1.10
@@ -23,13 +23,13 @@
     <td valign=bottom>
       <%title_font%>
        <a href="gforum.cgi?<%hidden_query%>">
-         <%title_font%><%site_title%>:<%/title_font%>
+         <%title_font%><%site_home%>:<%/title_font%>
        </a>
        Sign Up
       <%/title_font%>
     </td>
     <td align=right>
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
   <tr>
Index: default/user_validate_success.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/user_validate_success.html,v
retrieving revision 1.11
retrieving revision 1.13
diff -b -u -r1.11 -r1.13
--- default/user_validate_success.html  21 Oct 2001 03:07:04 -0000      1.11
+++ default/user_validate_success.html  18 Dec 2001 01:47:04 -0000      1.13
@@ -21,12 +21,12 @@
   <tr>
     <td valign=bottom>
       <a href="gforum.cgi?<%hidden_query%>">
-       <%title_font%><%site_title%>:<%/title_font%>
+       <%title_font%><%site_home%>:<%/title_font%>
       </a>
       <%title_font%>Validation successful<%/title_font%>
     </td>
     <td align=right>
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
   <tr>
Index: default/user_view.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/user_view.html,v
retrieving revision 1.23
retrieving revision 1.28
diff -b -u -r1.23 -r1.28
--- default/user_view.html      14 Nov 2001 19:01:39 -0000      1.23
+++ default/user_view.html      18 Dec 2001 01:47:04 -0000      1.28
@@ -26,13 +26,13 @@
     <td valign=bottom>
       <%title_font%>
        <a href="gforum.cgi?<%hidden_query%>">
-         <%title_font%><%site_title%>:</font>
+         <%title_font%><%site_home%>:</font>
        </a>
        User Profile: <%nbsp user_username%>
       <%/title_font%>
     </td>
     <td align=right>
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>
   <tr>
@@ -101,12 +101,20 @@
          <%/body_font%></td>
        </tr>

+       <tr>
+         <td width="20%" align=right valign=top bgcolor="<%light_beige%>" style="border-right:1px solid <%dark_beige%>; border-top:1px solid <%dark_beige%>">
+           <%body_font%><b>Real Name:</b><%/body_font%>
+         </td>
+         <td valign=top bgcolor="<%odd_color%>" style="border-top:1px solid <%dark_beige%>">
+           <%body_font%><%user_real_name%><%/body_font%>
+         </td>
+       </tr>

        <tr>
-         <td width="20%" align=right valign=top bgcolor="<%light_beige%>" style="border-right:1px solid <%dark_beige%>; border-top:1px solid <%dark_Beige%>">
+         <td width="20%" align=right valign=top bgcolor="<%light_beige%>" style="border-right:1px solid <%dark_beige%>">
            <%body_font%><b>Location:</b><%/body_font%>
          </td>
-         <td bgcolor="<%odd_color%>" valign=top style="border-top:1px solid <%dark_beige%>;">
+         <td bgcolor="<%odd_color%>" valign=top>
            <%body_font%><%if user_location%><%user_location%><%else%>No location entered.<%endif%>
          </td>
        </tr>
@@ -139,7 +147,7 @@
            <%body_font%><b>Homepage:</b><%/body_font%>
          </td>
          <td valign=top bgcolor="<%odd_color%>">
-           <%body_font%><a href="gforum.cgi?url=<%GT::CGI::escape($user_homepage)%>"><%user_homepage%></a><%/body_font%>
+           <%body_font%><a href="gforum.cgi?url=<%GT::CGI::escape($user_homepage)%>" target="_blank"><%user_homepage%></a><%/body_font%>
          </td>
        </tr>
 <%endif%>
Index: default/whos_online.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/default/whos_online.html,v
retrieving revision 1.13
retrieving revision 1.16
diff -b -u -r1.13 -r1.16
--- default/whos_online.html    21 Oct 2001 03:07:04 -0000      1.13
+++ default/whos_online.html    18 Dec 2001 01:47:04 -0000      1.16
@@ -22,12 +22,12 @@
   <tr>
     <td valign=bottom>
       <a href="gforum.cgi?<%hidden_query%>">
-       <%title_font%><%site_title%>:<%/title_font%>
+       <%title_font%><%site_home%>:<%/title_font%>
       </a>
-      <%title_font%>Who's Online:<%/title_font%>
+      <%title_font%>Who's Online<%/title_font%>
     </td>
     <td align=right>
-      <a href="http://www.gossamer-threads.com/scripts/gforum/"><img src="<%image_url%>/<%logo%>" border="0" align="right"></a>
+      <%include include_logo.html%>
     </td>
   </tr>

Index: default_top/.tplinfo
===================================================================
RCS file: default_top/.tplinfo
diff -N default_top/.tplinfo
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ default_top/.tplinfo        25 Nov 2001 07:32:40 -0000      1.1
@@ -0,0 +1,3 @@
+{
+    inheritance => '../default'
+}
Index: default_top/README
===================================================================
RCS file: default_top/README
diff -N default_top/README
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ default_top/README  16 Dec 2001 06:53:20 -0000      1.1
@@ -0,0 +1 @@
+Note! Do not edit these templates. You should use the template editor in the admin, which saves changes in the local directory. This allows you to recover old templates if you accidentally mess up a template, or compare your customized templates to the original template.
Index: default_top/include_post_display.html
===================================================================
RCS file: default_top/include_post_display.html
diff -N default_top/include_post_display.html
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ default_top/include_post_display.html       16 Dec 2001 07:08:58 -0000      1.6
@@ -0,0 +1,215 @@
+<%--
+
+File
+====
+include_post_display.html
+
+Description
+===========
+Every time a post is displayed (including a preview or
+delete confirmation) this page will be used to format the
+post.
+
+--%>
+<%if preview%><%body_font%><b><i>Preview:</i></b><%/body_font%><%endif%>
+<a name="<%post_id%>"></a>
+<table border="0" cellspacing="0" cellpadding="4" width="100%"<%unless printing%> bgcolor="<%odd_color%>"<%endif%> style="border: 1px solid <%if printing%>black<%else%><%dark_beige%><%endif%>">
+  <tr>
+    <td valign="top" align="left" colspan="2" width="33%"<%unless printing%> bgcolor="<%light_beige%>"<%endif%>>
+      <%body_font%><small>
+       <b>
+        <%if user_id%>
+         <a href="gforum.cgi?username=<%escape_url post_username%>;<%hidden_query%>">
+           <big><%nbsp post_username%></big>
+         </a>
+        <%else%>
+          <big><%nbsp post_username%></big>
+        <%endif%>
+        </b>
+       (<%user_title%><%if post_user_is_moderator%> / Moderator<%endif%>)
+<%if post_anonymous_email%>
+        <br>
+        <a href="mailto:<%post_anonymous_email%>"><%post_anonymous_email%></a>
+<%endif%>
+      </small><%/body_font%>
+    </td>
+    <td align="center" width="34%"<%unless printing%> bgcolor="<%light_beige%>"<%endif%>>
+<%if this_do eq post_view_flat%>
+      <%body_font%><small>
+       Post #<%post_num%> of <%num_posts%>
+        <%if post_views or post_views eq 0%>(<%post_views%> views)<%endif%>
+      </small><%/body_font%>
+<%elseif post_views or post_views eq 0%>
+      <%body_font%><small>
+        Views: <%post_views%>
+      </small><%/body_font%>
+<%else%>
+      &nbsp;
+<%endif%>
+    </td>
+    <td align="right" width="33%"<%unless printing%> bgcolor="<%light_beige%>"<%endif%>>
+      <%body_font%><small>
+        <%nbsp post_date%>
+      </small><%/body_font%>
+    </td>
+  </tr>
+<%-- Moderator/Administrator functionality --%>
+<%if user_perm_moderator and not preview and not deleteview and not hide_post_menu%>
+  <tr>
+    <td align="left" colspan="4"<%unless printing%> bgcolor="<%light_beige%>"<%endif%> style="border-top: 1px solid <%if printing%>black<%else%><%dark_beige%><%endif%>">
+      <%body_font%><small>
+
+
+       IP: <%post_ip%>
+
+
+        <big><b>|</b></big>
+
+
+        Ban:
+          <a href="gforum.cgi?do=forum_ban_write;forum=<%forum_id%>;ban_type=user_id_fk;ban_value=<%user_id%>;ban_username=<%escape_url post_username%>;<%hidden_query%>">User</a>
+            |
+          <a href="gforum.cgi?do=forum_ban_write;forum=<%forum_id%>;ban_type=ban_ip;ban_value=<%post_ip%>;<%hidden_query%>">IP</a>
+  <%if current_user_status = 3%><%-- An administrator --%>
+            |
+            <a href="gforum.cgi?do=ban_ip;redo=<%this_do%>;so=<%so%>;sb=<%sb%>;ip=<%post_ip%>;<%hidden_query%>">Site IP</a>
+
+
+        <big><b>|</b></big>
+
+
+        Disable: <a href="gforum.cgi?do=disable_user;redo=<%this_do%>;post=<%post_id%>;so=<%so%>;sb=<%sb%>;user_id=<%user_id%>;<%hidden_query%>">User</a>
+  <%endif%>
+
+
+        <big><b>|</b></big>
+
+
+        Thread:
+      <%if post_keep%>
+       <a href="gforum.cgi?do=post_unkeep;redo=<%this_do%>;so=<%so%>;sb=<%sb%>;root_id=<%if post_root_id%><%post_root_id%><%else%><%post_id%><%endif%>;post=<%post_id%>;<%hidden_query%>">Unkeep</a>
+          |
+      <%else%>
+       <a href="gforum.cgi?do=post_keep;redo=<%this_do%>;so=<%so%>;sb=<%sb%>;root_id=<%if post_root_id%><%post_root_id%><%else%><%post_id%><%endif%>;post=<%post_id%>;<%hidden_query%>">Keep</a>
+          |
+      <%endif%>
+      
+      <%if post_locked%>
+        <a href="gforum.cgi?do=post_unlock;redo=<%this_do%>;so=<%so%>;sb=<%sb%>;root_id=<%if post_root_id%><%post_root_id%><%else%><%post_id%><%endif%>;post=<%post_id%>;<%hidden_query%>">Unlock</a>
+          |
+      <%else%>
+       <a href="gforum.cgi?do=post_lock;redo=<%this_do%>;so=<%so%>;sb=<%sb%>;root_id=<%if post_root_id%><%post_root_id%><%else%><%post_id%><%endif%>;post=<%post_id%>;<%hidden_query%>">Lock</a>
+          |
+      <%endif%>
+
+      <a href="gforum.cgi?do=post_move_select;redo=<%this_do%>;so=<%so%>;sb=<%sb%>;root_id=<%if post_root_id%><%post_root_id%><%else%><%post_id%><%endif%>;post=<%post_id%>;<%hidden_query%>">Move</a>
+
+
+      <%if post_root_id%>
+        <big><b>|</b></big>
+
+
+        Post:
+        <a href="gforum.cgi?do=post_detach_select;redo=<%this_do%>;so=<%so%>;sb=<%sb%>;post_id=<%post_id%>;<%hidden_query%>">Detach & Move</a>
+      <%endif%>
+      </small><%/body_font%>
+    </td>
+  </tr>
+<%endif%>
+  <tr>
+    <td colspan="4" valign="top" width="100%" style="border-top: 1px solid <%if printing%>black<%else%><%dark_beige%><%endif%>">
+      <table border=0 width="100%">
+       <tr>
+         <td valign="top" align="left">
+           <%body_font%>
+<%if post_locked%>
+             &nbsp;&nbsp;<img src="<%image_url%>/locked.gif" border=0>&nbsp;&nbsp;
+<%endif%>
+             <b>
+<%if post_deleted and user_perm_moderator%>
+             Post deleted by <%post_deleted_by%>: <%if post_icon%><img src="<%image_url%>/<%post_icon%>" align=absmiddle><%endif%> <%post_subject%>
+<%elsif post_deleted%>
+             Post deleted by <%post_deleted_by%>
+<%else%>
+             <%if post_icon%><img src="<%image_url%>/<%post_icon%>" align=absmiddle><%endif%> <%post_subject%><%if post_new%><font color=red> - NEW</font><%endif%>
+<%endif%>
+              </b>
+<%if not preview and not deleteview and not hide_post_menu and post_father_id%>
+              [<small><a href="<%ifnot post_father_on_page%>gforum.cgi?do=<%this_do%>;post=<%post_father_id%>;so=<%so%>;sb=<%sb%>;<%hidden_query%><%endifnot%>#<%post_father_id%>">In reply to</a></small>]
+<%endif%>
+<%if post_keep and user_perm_moderator%>
+             <br><small>(This post will not be deleted when deleting old posts)<br></small>
+<%endif%>
+           <%/body_font%>
+         </td>
+         <td valign="top" align="right">
+           <%body_font%><b>
+<%unless preview or deleteview or hide_post_menu or post_deleted%>
+
+<%  if not post_locked or user_perm_moderator%>
+<%    if user_perm_edit or user_perm_moderator%>
+             <a href="gforum.cgi?do=post_edit;post=<%post_id%>;<%hidden_query%>">Edit</a> |
+<%    endif%>
+<%    if user_perm_delete or user_perm_moderator%>
+<%      unless post_deleted%>
+             <a href="gforum.cgi?do=post_delete_confirm;post=<%post_id%>;<%hidden_query%>">Delete</a> |
+<%      endunless%>
+<%    endif%>
+<%    if user_forum_permission < 4%>
+             Can't Post
+<%    else%>
+<%      if forum_style % 2%><%-- This is true if the forum allows markup --%>
+              <a href="gforum.cgi?do=post_reply_write;quote=1;parent_post_id=<%post_id%>;<%hidden_query%>">Quote</a> |
+<%      endif%>
+             <a href="gforum.cgi?do=post_reply_write;parent_post_id=<%post_id%>;<%hidden_query%>">Reply</a>
+<%    endif%>
+<%  else%>
+       &nbsp;
+<%  endif%>
+<%elseif post_deleted and user_perm_moderator%><%-- Show moderators the delete link so they can delete it completely --%>
+        <a href="gforum.cgi?do=post_delete_confirm;post=<%post_id%>;<%hidden_query%>">Delete</a>
+<%endunless%>
+      </b><%/body_font%>
+         </td>
+        </tr>
+       <tr><td colspan=2><hr size=1></td></tr>
+      </table>
+      <%body_font%>
+<%if post_deleted and not user_perm_moderator%>
+       &nbsp;
+<%elsif post_deleted%><%-- a moderator --%>
+       <small>(This post was deleted by <%post_deleted_by%><%if post_deleted_time%> on <%post_deleted_date%><%endif%>)<br></small>
+       <%post_message%>
+<%  if post_last_edit_username%>
+       <small>(This post was <a href="gforum.cgi?do=post_editlog;post=<%post_id%>;<%hidden_query%>">edited</a> by <%post_last_edit_username%> on <%post_last_edit_date%>)<br></small>
+<%  endif%>
+<%else%>
+       <%post_message%>
+<%  if post_last_edit_username%>
+       <small><br><br>(This post was <a href="gforum.cgi?do=post_editlog;post=<%post_id%>;<%hidden_query%>">edited</a> by <%post_last_edit_username%> on <%post_last_edit_date%>)<br></small>
+<%  endif%>
+<%endif%>
+      <%/body_font%>
+    </td>
+  </tr>
+<%loop post_attachments%>
+  <tr<%unless printing%> bgcolor="<%medium_beige%>"<%endif%>>
+    <td align="right" width="10%" style="border-top: 1px solid <%dark_beige%>">
+<%if first%>
+      <%body_font%>Attachments:<%/body_font%>
+<%else%>
+      &nbsp;
+<%endif%>
+    </td>
+    <td valign="top" width="90%" colspan="3" style="border-top: 1px solid <%dark_beige%>">
+      <%body_font%>
+      <a href="gforum.cgi<%unless is_iis%>/<%postatt_filename_escaped%><%endunless%>?do=post_attachment;postatt_id=<%postatt_id%>;<%hidden_query%>">
+         <img src="<%GForum::Attachment::icon($postatt_content, $postatt_filename)%>" border=0>
+         <%postatt_filename%>
+       </a>
+       (<%GForum::Attachment::friendly_size($postatt_size)%>)
+      <%/body_font%>
+    </td>
+  </tr>
+<%endloop%>
+</table>
Index: default_top/compiled/.cvsignore
===================================================================
RCS file: default_top/compiled/.cvsignore
diff -N default_top/compiled/.cvsignore
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ default_top/compiled/.cvsignore     24 Nov 2001 06:50:36 -0000      1.1
@@ -0,0 +1 @@
+*
Index: admin/cat_sort_order.html
===================================================================
RCS file: admin/cat_sort_order.html
diff -N admin/cat_sort_order.html
--- admin/cat_sort_order.html   26 Sep 2001 22:11:43 -0000      1.3
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,88 +0,0 @@
-<html>
-<head>
-<title>Category Sort Order</title>
-</head>
-
-<body>
-
-<%set header_title = "Category Sort Order"%>
-<%set header_description = "From this page you can simultaneously adjust the sort order of all categories"%>
-
-<%if set_sort_order%>
-<%GForum::Category::set_sort_order%>
-<%set success_message = "Your new sort order has been saved successfully"%>
-<%endif%>
-
-<%set font_tag = '<font face="Tahoma,Arial,Helvetica" size=2>'%>
-
-<%include admin_header.html%>
-
-<%GForum::Forum::tpl_list(admin)%>
-<form method=post action="admin.cgi">
-<input type=hidden name=do value=page>
-<input type=hidden name=page value="cat_sort_order.html">
-<input type=hidden name=set_sort_order value=1>
-<table border=1 cellpadding=0 cellspacing=0>
-  <tr>
-    <td>
-      <table bgcolor=white border=0 cellpadding=3 cellspacing=3 width=500 valign=top>
-<%if num_categories%>
-<%loop categories%>
-       <tr>
-         <td align=right width="10%">
-           <%font_tag%>
-             <input type=text name="cat<%cat_id%>" value="<%cat_sort_rank%>" size=4>
-           </font>
-         </td>
-         <td align=left colspan=2>
-           <%font_tag%>
-             <b><big><big><%cat_name%></big></big></b>
-           </font>
-         </td>
-       </tr>
-<%if forums%>
-<%loop forums%>
-       <tr>
-         <td colspan=2>&nbsp;</td>
-         <td align=left width="80%">
-           <%font_tag%>
-             <b><big><%forum_name%></big></b><br>
-             <%forum_desc%>
-           </font>
-         </td>
-       </tr>
-<%endloop%>
-<%else%>
-       <tr>
-         <td colspan=2>&nbsp;</td>
-         <td align=left width="80%">
-           <%font_tag%>
-             No forums in this category
-           </font>
-         </td>
-       </tr>
-<%endif%>
-<%endloop%>
-       <tr>
-         <td align=center bgcolor=white colspan=3>
-           <%font_tag%>
-             <input type=submit value="Save new sort order">
-           </font>
-         </td>
-       </tr>
-<%else%>
-       <tr>
-         <td align=center bgcolor=white colspan=3>
-           <%font_tag%>
-             There are no categories.
-           </font>
-         </td>
-       </tr>
-<%endif%>
-      </table>
-    </td>
-  </tr>
-</table>
-</form
-</body>
-</html>
Index: admin/forums_list.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/admin/forums_list.html,v
retrieving revision 1.2
retrieving revision 1.4
diff -b -u -r1.2 -r1.4
--- admin/forums_list.html      24 Oct 2001 17:43:28 -0000      1.2
+++ admin/forums_list.html      11 Dec 2001 02:12:25 -0000      1.4
@@ -1,61 +1,108 @@
 <html>
 <head>
-<title>Category/Forum List</title>
+<title>Category/Forum <%if sort_order%>Sort Order<%else%>List<%endif%></title>
 </head>

 <body>

+<%if sort_order%>
+<%set header_title = "Category/Forum Sort Order"%>
+<%set header_description = "From this page you can adjust the sort order of all categories and forums simultaneously. Categories are <u>underlined</u>."%>
+<%else%>
 <%set header_title = "Category/Forum List"%>
 <%set header_description = '
 From this page you can view all categories and forums.
 Each category and forum has links to take you to the modify and delete forms.
-To view an advanced list, click here: <a href="db.cgi?db=Forum;do=search_results;keyword=*">Forums</a>, <a href="db.cgi?db=Forum;do=search_results;keyword=*">Categories</a>.
+To view an advanced list, click here: <a href="db.cgi?db=Forum;do=search_results;keyword=*">Forums</a>, <a href="db.cgi?db=Category;do=search_results;keyword=*">Categories</a>.<br>
+<br>
+(Note: <u>Categories are underlined</u>)
 '%>
+<%endif%>
+
+<%if set_sort_order%>
+<%GForum::Forum::set_sort_order%>
+<%GForum::Category::set_sort_order%>
+<%set success_message = "The new sort order has been saved successfully"%>
+<%endif%>

 <%set font_tag = '<font face="Tahoma,Arial,Helvetica" size=2>'%>
+<%set indent = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'%>

 <%include admin_header.html%>
-<br><br>
+
 <%GForum::Forum::tpl_list(admin)%>
-<table border=1 cellpadding=0 cellspacing=0>
-  <tr>
-    <td>
+<%if sort_order%>
+<form method=post action="admin.cgi">
+<input type=hidden name=do value=page>
+<input type=hidden name=page value="forums_list.html">
+<input type=hidden name=set_sort_order value=1>
+<input type=hidden name=sort_order value=1>
+<%endif%>
+<table border=1 cellpadding=0 cellspacing=0><tr><td>
       <table bgcolor=white border=0 cellpadding=3 cellspacing=3 width=500 valign=top>
-<%if num_categories%>
-<%loop categories%>
+<%if num_root_cats%>
+<%  loop tpl_list%>
+<%    ifnot forum_id%><%-- This is a category --%>
        <tr>
-         <td align=left colspan=2>
+      <td align=left>
+        <table border=0 cellspacing=3 width="100%">
+          <tr>
+            <td width=1>
+              <nobr><%indent x $cat_depth%><%if sort_order%><input type=text name="cat<%cat_id%>" value="<%cat_sort_rank%>" size=4><%endif%></nobr>
+            </td>
+            <td>
            <%font_tag%>
-             <b><big><%cat_name%></big></b> - <a href="db.cgi?db=Category&do=search_results&cat_id=<%cat_id%>&cat_id-opt=%3D">Details</a> | <a href="db.cgi?db=Category&do=modify_search_results&cat_id=<%cat_id%>&cat_id-opt=%3D">Modify</a> | <a href="db.cgi?db=Category&do=delete_search_results&cat_id=<%cat_id%>&cat_id-opt=%3D">Delete</a>
+                <u><b><big><big><%cat_name%></big></big></b></u><%unless sort_order%> - <a href="db.cgi?db=Category&do=search_results&cat_id=<%cat_id%>&cat_id-opt=%3D">Details</a> | <a href="db.cgi?db=Category&do=modify_search_results&cat_id=<%cat_id%>&cat_id-opt=%3D">Modify</a> | <a href="db.cgi?db=Category&do=delete_search_results&cat_id=<%cat_id%>&cat_id-opt=%3D">Delete</a><%endunless%>
            </font>
          </td>
        </tr>
-<%if forums%>
-<%loop forums%>
+        </table>
+      </td>
+    </tr>
+<%      unless num_forums or num_subcats%>
+    <tr>
+      <td align=left>
+        <table border=0 cellspacing=3 width="100%">
+          <tr>
+            <td width=1>
+              <%indent x $cat_depth%><%indent%><%font_tag%><nobr>No forums or subcategories.</nobr></font>
+            </td>
+          </tr>
+        </table>
+      </td>
+    </tr>
+<%      endunless%>
+<%    else%><%-- A forum --%>
+    <tr>
+      <td align=left>
+        <table border=0 cellspacing=3 width="100%">
        <tr>
-         <td align=right valign=middle width="10%">&nbsp;</td>
-         <td align=left width="90%">
+            <td width=1>
+              <nobr><%indent x $cat_depth%><%indent%><%if sort_order%><input type=text name="forum<%forum_id%>" value="<%forum_sort_rank%>" size=4><%endif%></nobr>
+            </td>
+            <td>
            <%font_tag%>
-             <b><%forum_name%></b> - <a href="db.cgi?db=Forum&do=search_results&forum_id=<%forum_id%>&forum_id-opt=%3D">Details</a> | <a href="db.cgi?db=Forum&do=modify_search_results&forum_id=<%forum_id%>&forum_id-opt=%3D">Modify</a> | <a href="db.cgi?db=Forum&do=delete_search_results&forum_id=<%forum_id%>&forum_id-opt=%3D">Delete</a><br>
-              
+                <b><big><%forum_name%></big></b><%unless sort_order%> - <a href="db.cgi?db=Forum&do=search_results&forum_id=<%forum_id%>&forum_id-opt=%3D">Details</a> | <a href="db.cgi?db=Forum&do=modify_search_results&forum_id=<%forum_id%>&forum_id-opt=%3D">Modify</a> | <a href="db.cgi?db=Forum&do=delete_search_results&forum_id=<%forum_id%>&forum_id-opt=%3D">Delete</a><%endunless%>
            </font>
          </td>
        </tr>
-<%endloop%>
-<%else%>
+        </table>
+      </td>
+    </tr>
+<%    endif%>
+<%  endloop%>
+<%  if sort_order%>
        <tr>
-         <td>&nbsp;</td>
-         <td colspan=2 align=left width="80%">
+      <td align=center bgcolor=white>
            <%font_tag%>
-             No forums in this category
+         <input type=submit value="Save new sort order">
            </font>
          </td>
        </tr>
-<%endif%>
-<%endloop%>
+<%  endif%>
 <%else%>
        <tr>
-         <td align=center bgcolor=white colspan=3>
+      <td align=center bgcolor=white>
            <%font_tag%>
              <br><br>There are no forums.
            </font>
@@ -63,8 +110,7 @@
        </tr>
 <%endif%>
       </table>
-    </td>
-  </tr>
-</table>
+</td></tr></table>
+<%if sort_order%></form><%endif%>
 </body>
 </html>
Index: admin/forums_nav.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/admin/forums_nav.html,v
retrieving revision 1.6
retrieving revision 1.7
diff -b -u -r1.6 -r1.7
--- admin/forums_nav.html       24 Oct 2001 17:43:28 -0000      1.6
+++ admin/forums_nav.html       7 Dec 2001 23:42:27 -0000       1.7
@@ -14,7 +14,7 @@
       &nbsp; <a href="db.cgi?db=Forum;do=add_form">Add Forum</a><br>
       &nbsp; <a href="db.cgi?db=Category;do=add_form">Add Category</a><br>
       &nbsp; <a href="admin.cgi?do=page;page=forums_list.html">List All</a><br>
-      &nbsp; <a href="admin.cgi?do=page;page=forums_sort_order.html">Sort Order</a><br>
+      &nbsp; <a href="admin.cgi?do=page;page=forums_list.html;sort_order=1">Sort Order</a><br>
       &nbsp;
     </font></td>
   </tr>
Index: admin/forums_sort_order.html
===================================================================
RCS file: admin/forums_sort_order.html
diff -N admin/forums_sort_order.html
--- admin/forums_sort_order.html        19 Oct 2001 20:07:29 -0000      1.5
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,94 +0,0 @@
-<html>
-<head>
-<title>Category/Forum Sort Order</title>
-</head>
-
-<body>
-
-<%set header_title = "Category/Forum Sort Order"%>
-<%set header_description = "From this page you can adjust the sort order of all categories and forums simultaneously"%>
-
-<%if set_sort_order%>
-<%GForum::Forum::set_sort_order%>
-<%GForum::Category::set_sort_order%>
-<%set success_message = "The new sort order has been saved successfully"%>
-<%endif%>
-
-<%set font_tag = '<font face="Tahoma,Arial,Helvetica" size=2>'%>
-
-<%include admin_header.html%>
-
-<%GForum::Forum::tpl_list(admin)%>
-<form method=post action="admin.cgi">
-<input type=hidden name=do value=page>
-<input type=hidden name=page value="forums_sort_order.html">
-<input type=hidden name=set_sort_order value=1>
-<table border=1 cellpadding=0 cellspacing=0>
-  <tr>
-    <td>
-      <table bgcolor=white border=0 cellpadding=3 cellspacing=3 width=500 valign=top>
-<%if num_categories%>
-<%loop categories%>
-       <tr>
-          <td align=right width="10%">
-            <%font_tag%>
-              <input type=text name="cat<%cat_id%>" value="<%cat_sort_rank%>" size=4>
-            </font>
-          </td>
-         <td align=left colspan=2>
-           <%font_tag%>
-             <b><big><big><%cat_name%></big></big></b>
-           </font>
-         </td>
-       </tr>
-<%if forums%>
-<%loop forums%>
-       <tr>
-          <td>&nbsp;</td>
-         <td align=right valign=middle width="10%">
-           <%font_tag%>
-             <input type=text name="forum<%forum_id%>" value="<%forum_sort_rank%>" size=4>
-           </font>
-         </td>
-         <td align=left width="80%">
-           <%font_tag%>
-             <b><big><%forum_name%></big></b><br>
-             <%forum_desc%>
-           </font>
-         </td>
-       </tr>
-<%endloop%>
-<%else%>
-       <tr>
-         <td>&nbsp;</td>
-         <td colspan=2 align=left width="80%">
-           <%font_tag%>
-             No forums in this category
-           </font>
-         </td>
-       </tr>
-<%endif%>
-<%endloop%>
-       <tr>
-         <td align=center bgcolor=white colspan=3>
-           <%font_tag%>
-             <input type=submit value="Save new sort order">
-           </font>
-         </td>
-       </tr>
-<%else%>
-       <tr>
-         <td align=center bgcolor=white colspan=3>
-           <%font_tag%>
-             <br><br>There are no forums.
-           </font>
-         </td>
-       </tr>
-<%endif%>
-      </table>
-    </td>
-  </tr>
-</table>
-</form>
-</body>
-</html>
Index: admin/home_right.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/admin/home_right.html,v
retrieving revision 1.7
retrieving revision 1.8
diff -b -u -r1.7 -r1.8
--- admin/home_right.html       19 Oct 2001 20:07:29 -0000      1.7
+++ admin/home_right.html       24 Nov 2001 06:50:36 -0000      1.8
@@ -25,7 +25,11 @@
 <p><font face="Tahoma,Arial,Helvetica" size="2"><font color="red"><b>You are currently using a 30-day evaluation^M
 version of Gossamer Forum. </b></font> Your forum administration panel will expire in^M
 <%if gforum_expiry_days <= 5%><font color=red><%endif%>^M
-<%if gforum_expiry_days%><%gforum_expiry_days%> day<%unless gforum_expiry_days = 1%>s<%endunless%>.<%endif%>^M
+<%if gforum_expiry_days%><%gforum_expiry_days%> day<%unless gforum_expiry_days = 1%>s<%endunless%>^M
+<%elsif gforum_expiry_hours%><%gforum_expiry_hours%> hour<%unless gforum_expiry_hours = 1%>s<%endunless%>.^M
+<%elsif gforum_expiry_minutes%><%gforum_expiry_minutes%> minute<%unless gforum_expiry_minutes = 1%>s<%endunless%>.^M
+<%elsif gforum_expiry_seconds%><%gforum_expiry_seconds%> second<%unless gforum_expiry_seconds = 1%>s<%endunless%>.^M
+<%endif%>^M
 <%if gforum_expiry_days <= 5%></font><%endif%>^M
 If you have obtained a license, you can enter the number in Setup-&gt;Miscellaneous.</p>^M
 <%endunless%>^M
Index: admin/language.txt
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/admin/language.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -b -u -r1.1 -r1.2
--- admin/language.txt  1 Nov 2001 21:22:41 -0000       1.1
+++ admin/language.txt  28 Nov 2001 01:00:41 -0000      1.2
@@ -1,8 +1,43 @@
-# This file is auto generated and contains a perl hash of
-# your language variables for 'admin' template set.
-# vim: syn=perl textwidth=9999
-
-my $dump = {
+{
+  'DATE_DAY_1' => 'Sunday',
+  'DATE_DAY_2' => 'Monday',
+  'DATE_DAY_3' => 'Tuesday',
+  'DATE_DAY_4' => 'Wednesday',
+  'DATE_DAY_5' => 'Thursday',
+  'DATE_DAY_6' => 'Friday',
+  'DATE_DAY_7' => 'Saturday',
+  'DATE_DAY_SHORT_1' => 'Sun',
+  'DATE_DAY_SHORT_2' => 'Mon',
+  'DATE_DAY_SHORT_3' => 'Tue',
+  'DATE_DAY_SHORT_4' => 'Wed',
+  'DATE_DAY_SHORT_5' => 'Thu',
+  'DATE_DAY_SHORT_6' => 'Fri',
+  'DATE_DAY_SHORT_7' => 'Sat',
+  'DATE_FORMAT' => '%mmmm% %d%, %yyyy%, %h%:%MM% %tt%',
+  'DATE_MONTH_1' => 'January',
+  'DATE_MONTH_10' => 'October',
+  'DATE_MONTH_11' => 'November',
+  'DATE_MONTH_12' => 'December',
+  'DATE_MONTH_2' => 'February',
+  'DATE_MONTH_3' => 'March',
+  'DATE_MONTH_4' => 'April',
+  'DATE_MONTH_5' => 'May',
+  'DATE_MONTH_6' => 'June',
+  'DATE_MONTH_7' => 'July',
+  'DATE_MONTH_8' => 'August',
+  'DATE_MONTH_9' => 'September',
+  'DATE_MONTH_SHORT_1' => 'Jan',
+  'DATE_MONTH_SHORT_10' => 'Oct',
+  'DATE_MONTH_SHORT_11' => 'Nov',
+  'DATE_MONTH_SHORT_12' => 'Dec',
+  'DATE_MONTH_SHORT_2' => 'Feb',
+  'DATE_MONTH_SHORT_3' => 'Mar',
+  'DATE_MONTH_SHORT_4' => 'Apr',
+  'DATE_MONTH_SHORT_5' => 'May',
+  'DATE_MONTH_SHORT_6' => 'Jun',
+  'DATE_MONTH_SHORT_7' => 'Jul',
+  'DATE_MONTH_SHORT_8' => 'Aug',
+  'DATE_MONTH_SHORT_9' => 'Sep',
     'SIGNUP_USERNAME_EXISTS' => 'The username \'%s\' already exists. Please choose another',
     'USERNAME_INVALID_CHARS' => 'Username contains invalid characters',
     'USERNAME_LEADING_SPACES' => 'A username may not contain leading spaces',
@@ -10,5 +45,5 @@
     'USERNAME_RESERVED' => 'Username is reserved for future use',
     'USERNAME_TOO_LONG' => 'Username too long. The maximum length of a username is %d characters',
     'USERNAME_TOO_SHORT' => 'Username too short. A username must be at least %d characters long',
-    'USERNAME_TRAILING_SPACES' => 'A username may not contain trailing spaces',
+  'USERNAME_TRAILING_SPACES' => 'A username may not contain trailing spaces'
 };
Index: admin/markup_tags_list.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/admin/markup_tags_list.html,v
retrieving revision 1.5
retrieving revision 1.7
diff -b -u -r1.5 -r1.7
--- admin/markup_tags_list.html 26 Sep 2001 22:11:43 -0000      1.5
+++ admin/markup_tags_list.html 18 Dec 2001 21:27:58 -0000      1.7
@@ -43,7 +43,7 @@
 </table>
 <%endloop%>

-<%GForum::Config::tpl_get(markup_allow_custom_color, markup_allow_image, markup_allow_url)%>
+<%GForum::Config::tpl_get(markup_allow_custom_color, markup_allow_image, markup_allow_url, markup_allow_font, markup_allow_size)%>

 <%if markup_allow_custom_color or markup_allow_image or markup_allow_url%>

@@ -122,6 +122,56 @@
 <li>[url "http://www.gossamer-threads.com]Gossamer Threads, Inc.[/url] - <a href="http://www.gossamer-threads.com">Gossamer Threads, Inc.</a></li>
 <li>[email]jason@gossamer-threads.com[/email] - <a href="mailto:jason@gossamer-threads.com">jason@gossamer-threads.com</a></li>
          </ol></font></td>
+       </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<%endif%>
+
+<%if markup_allow_font%>
+<br>
+
+<table border=1 cellpadding=0 cellspacing=0>
+  <tr>
+    <td>
+      <table bgcolor=white border=0 cellpadding=3 cellspacing=3 width=500 valign=top>
+       <tr>
+         <td valign=top width="15%"><%font_tag%><b>Tag</b>:</font></td>
+         <td valign=top width="85%"><%font_tag%>[font "FontFace"] ... [/font]</font></td>
+       </tr>
+       <tr>
+         <td valign=top><%font_tag%>HTML:</td>
+         <td valign=top><%font_tag%>&lt;font face="FontFace"&gt; ... &lt;/font&gt;</font></td>
+       </tr>
+       <tr>
+         <td valign=top valign=top><%font_tag%>Sample:</font></td>
+         <td valign=top><%font_tag%>[font "Times New Roman"]This is Times New Roman[/font] - <font face="Times New Roman">This is Times New Roman</font></font></td>
+       </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<%endif%>
+
+<%if markup_allow_size%>
+<br>
+
+<table border=1 cellpadding=0 cellspacing=0>
+  <tr>
+    <td>
+      <table bgcolor=white border=0 cellpadding=3 cellspacing=3 width=500 valign=top>
+       <tr>
+         <td valign=top width="15%"><%font_tag%><b>Tag</b>:</font></td>
+         <td valign=top width="85%"><%font_tag%>[size 6] ... [/size]</font></td>
+       </tr>
+       <tr>
+         <td valign=top><%font_tag%>HTML:</td>
+         <td valign=top><%font_tag%>&lt;font size="6"&gt; ... &lt;/font&gt;</font></td>
+       </tr>
+       <tr>
+         <td valign=top valign=top><%font_tag%>Sample:</font></td>
+         <td valign=top><%font_tag%>[size 6]Size 6 font[/size] - <font size="6">Size 6 font</font></font></td>
        </tr>
       </table>
     </td>
Index: admin/markup_tags_modify_2.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/admin/markup_tags_modify_2.html,v
retrieving revision 1.6
retrieving revision 1.7
diff -b -u -r1.6 -r1.7
--- admin/markup_tags_modify_2.html     9 Nov 2001 20:56:04 -0000       1.6
+++ admin/markup_tags_modify_2.html     7 Dec 2001 23:42:27 -0000       1.7
@@ -1,4 +1,4 @@
-<%ifnot markup_tag%><%set error_message = "No markup tag selected"%><%include markup_tags_modify.html%><%lastloop%><%endifnot%>
+<%ifnot markup_tag%><%set error_message = "No markup tag selected"%><%include markup_tags_modify.html%><%endparse%><%endifnot%>
 <% -- The line above takes us back to the tag selection page with an error if no tag was selected -- %>
 <%if markup_tag and modify_tag%>
   <%GForum::Markup::modify_tag(tag => $markup_tag, html => $markup_html, closing => $closing_markup_html, markup_type => $markup_type)%>
@@ -24,7 +24,7 @@
     <%endif%>
   <%endif%>
   <%include markup_tags_modify.html%>
-  <%lastloop%><% -- exits the parse -- %>
+  <%endparse%><% -- exits the parse -- %>
 <%endif%>

 <html>
Index: admin/markup_text_modify.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/admin/markup_text_modify.html,v
retrieving revision 1.2
retrieving revision 1.3
diff -b -u -r1.2 -r1.3
--- admin/markup_text_modify.html       26 Sep 2001 22:11:43 -0000      1.2
+++ admin/markup_text_modify.html       16 Dec 2001 06:42:18 -0000      1.3
@@ -4,7 +4,7 @@
 </head>

 <body>
-<%set header_title = "Modify Test Replacement"%>
+<%set header_title = "Modify Text Replacement"%>
 <%set header_description = "From this page you can modify the available markup replacements"%>
 <%include admin_header.html%>

Index: admin/markup_text_modify_2.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/admin/markup_text_modify_2.html,v
retrieving revision 1.3
retrieving revision 1.4
diff -b -u -r1.3 -r1.4
--- admin/markup_text_modify_2.html     9 Nov 2001 20:56:04 -0000       1.3
+++ admin/markup_text_modify_2.html     7 Dec 2001 23:42:27 -0000       1.4
@@ -1,4 +1,4 @@
-<%ifnot markup_text%><%set error_message = "No markup text selected"%><%include markup_text_modify.html%><%lastloop%><%endifnot%>
+<%ifnot markup_text%><%set error_message = "No markup text selected"%><%include markup_text_modify.html%><%endparse%><%endifnot%>
 <% -- The line above takes us back to the text selection page with an error if no text was selected -- %>
 <%if markup_text and modify_text%>
   <%GForum::Markup::modify_text(text => $markup_text, html => $markup_html)%>
@@ -6,7 +6,7 @@
   <%set success_message_2 = $markup_text%>
   <%set success_message_3 = "' saved successfully."%>
   <%include markup_text_modify.html%>
-  <%lastloop%><% -- exits the parse -- %>
+  <%endparse%><% -- exits the parse -- %>
 <%endif%>

 <html>
Index: admin/setup_action_add.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/admin/setup_action_add.html,v
retrieving revision 1.4
retrieving revision 1.5
diff -b -u -r1.4 -r1.5
--- admin/setup_action_add.html 9 Nov 2001 20:56:04 -0000       1.4
+++ admin/setup_action_add.html 7 Dec 2001 23:42:27 -0000       1.5
@@ -3,7 +3,7 @@
   <%if add_success%>
     <%set add_success = 1%>
     <%include setup_action.html%>
-    <%lastloop%>
+    <%endparse%>
   <%else%>
     <%set error_message = $do_equals%>
     <%set error_message_2 = " was not added successfully: "%>
@@ -17,8 +17,8 @@

 <body>

-<%set header_title = "Actions"%>
-<%set header_description = "From this page you can edit, add, and delete the various user actions"%>
+<%set header_title = "Add action"%>
+<%set header_description = "From this page you can add a custom user action to Gossamer Forum"%>
 <%include admin_header.html%>

 <form method=POST action="admin.cgi">
@@ -31,7 +31,7 @@
       <table bgcolor=white border=0 cellpadding=3 cellspacing=3 width=500 valign=top>
        <tr>
          <td align=left bgcolor=white>
-           <font size=2 face="Tahoma,Arial,Helvetica"><b>Edit action</b></font>
+           <font size=2 face="Tahoma,Arial,Helvetica"><b>Add action</b></font>
          </td>
        </tr>
        <tr>
@@ -41,6 +41,7 @@
 Description: <input type=text name=description value="<%if description%><%description%><%endif%>"><br>
 Enabled: <input type=radio name=disabled value=0<%unless disabled%> checked<%endunless%>>Yes <input type=radio name=disabled value=1<%if disabled%> checked<%endif%>> No<br>
 Action Type: Display page<input type=hidden name=action value=page><br>
+Shown on "Who's Online": <input type=radio name=hidden value=0<%unless hidden%> checked<%endunless%>>Shown <input type=radio name=hidden value=1<%if hidden%> checked<%endif%>> Hidden<br>
 Page: <input type=text name=action_page value="<%if action_page%><%action_page%><%endif%>"><br>

 Groups: <input type=checkbox name=use_user_groups value=1<%if use_user_groups%> checked<%endunless%>> Restrict this action to users of the following groups<br>
Index: admin/setup_action_edit.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/admin/setup_action_edit.html,v
retrieving revision 1.3
retrieving revision 1.4
diff -b -u -r1.3 -r1.4
--- admin/setup_action_edit.html        9 Nov 2001 20:56:04 -0000       1.3
+++ admin/setup_action_edit.html        7 Dec 2001 23:42:27 -0000       1.4
@@ -1,9 +1,9 @@
 <%unless do_equals%>
 <%-- If the user did not enter a do_equals, then load the original page.
-<%lastloop%>, when not in a loop will end the parsing.--%>
+<%endparse%> will end the parsing.--%>
 <%set error_message = "No action selected to edit"%>
 <%include setup_action.html%>
-<%lastloop%>
+<%endparse%>
 <%endunless%>
 <%GForum::Do::tpl_get($do_equals)%>
 <html>
@@ -57,6 +57,21 @@
            <%font_tag%><%if action eq "function"%>Run function<%else%>Display page<%endif%></font>
          </td>
        </tr>
+       <tr valign=top align=left>
+         <td>
+           <%font_tag%>Shown on "Who's Online":</font>
+         </td>
+         <td>
+           <%font_tag%>
+              <%if customizable_hidden%>
+                <input type=radio name=hidden value=0<%unless hidden%> checked<%endunless%>>Shown <input type=radio name=hidden value=1<%if hidden%> checked<%endif%>> Hidden
+              <%else%>
+                <%if hidden%>Hidden<%else%>Shown<%endif%>
+              <%endif%>
+            </font>
+         </td>
+       </tr>
+<br>
 <%if action eq "page"%>
        <tr valign=top align=left>
          <td>
Index: admin/setup_dates.html
===================================================================
RCS file: admin/setup_dates.html
diff -N admin/setup_dates.html
--- admin/setup_dates.html      26 Sep 2001 22:11:43 -0000      1.2
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,86 +0,0 @@
-<%GForum::Config::load_vars%>
-<html>
-
-<head>
-<title>Gossamer Forum - Setup - Date Settings</title>
-</head>
-
-<body bgcolor=white>
-
-<%set header_title = "Setup: Date Settings"%>
-<%set header_description = "From this page you can adjust the various items having to do with the display of dates."%>
-
-<%include admin_header.html%>
-
-<form method=post action="setup.cgi">
-<input type=hidden name="do" value="setup_dates">
-  <table border="1" cellpadding="0" cellspacing="0" width="500">
-    <tr>
-      <td width="100%">
-  <table border="0" cellpadding="2" cellspacing="3" width="100%">
-    <tr>
-      <td width="100%" colspan="2" bgcolor="#DDDDDD"><b><font size="2" face="Verdana,Arial,Helvetica">Date
-       Settings</font></b></td>
-    </tr>
-    <tr>
-      <td width="100%" colspan="2"><font face="Tahoma,Arial,Helvetica" size="2">You can use this variable to adjust the time that is displayed. This is useful if you want to display times in one time zone when using a server in another time zone. Value is in hours.</font></td>
-    </tr>
-    <tr>
-      <td width="16%"><b><font size="2" face="Tahoma,Arial,Helvetica">date_offset</font></b></td>
-      <td width="84%"><font face="Tahoma,Arial,Helvetica" size="2"><input type="text" name="date_offset" value="<%cfg_date_offset%>" size="40"></font></td>
-    </tr>
-    <tr>
-      <td width="100%" colspan="2"><font face="Tahoma,Arial,Helvetica" size="2">When using '%dddd%' in date formats, the value will be pulled from this list. This affects both admin and user dates.</font></td>
-    </tr>
-    <tr>
-      <td width="16%"><b><font size="2" face="Tahoma,Arial,Helvetica">date_days_long</font></b></td>
-      <td width="84%"><font face="Tahoma,Arial,Helvetica" size="2"><input type="text" name="date_days_long" value="<%cfg_date_days_long%>" size="40"></font></td>
-    </tr>
-    <tr>
-      <td width="100%" colspan="2"><font face="Tahoma,Arial,Helvetica" size="2">When using '%ddd%' in date formats, the value will be pulled from this list. This affects both admin and user dates.</font></td>
-    </tr>
-    <tr>
-      <td width="16%"><b><font size="2" face="Tahoma,Arial,Helvetica">date_days_short</font></b></td>
-      <td width="84%"><font face="Tahoma,Arial,Helvetica" size="2"><input type="text" name="date_days_short" value="<%cfg_date_days_short%>" size="40"></font></td>
-    </tr>
-    <tr>
-      <td width="100%" colspan="2"><font face="Tahoma,Arial,Helvetica" size="2">When using '%mmmm%' in date formats the full name of the month will be pulled from this list.</font></td>
-    </tr>
-    <tr>
-      <td width="16%"><b><font size="2" face="Tahoma,Arial,Helvetica">date_month_long</font></b></td>
-      <td width="84%"><font face="Tahoma,Arial,Helvetica" size="2"><input type="text" name="date_month_long" value="<%cfg_date_month_long%>" size="40"></font></td>
-    </tr>
-    <tr>
-      <td width="100%" colspan="2"><font face="Tahoma,Arial,Helvetica" size="2">When using '%mmm%' in date formats, the abbreviated version of the month will be taken from this list.</font></td>
-    </tr>
-    <tr>
-      <td width="16%"><b><font size="2" face="Tahoma,Arial,Helvetica">date_month_short</font></b></td>
-      <td width="84%"><font face="Tahoma,Arial,Helvetica" size="2"><input type="text" name="date_month_short" value="<%cfg_date_month_short%>" size="40"></font></td>
-    </tr>
-    <tr>
-      <td width="100%" colspan="2"><font face="Tahoma,Arial,Helvetica" size="2">Whenever a date is displayed in the admin, it will use this date format. Click here for help on customizing date formats.</font></td>
-    </tr>
-    <tr>
-      <td width="16%"><b><font size="2" face="Tahoma,Arial,Helvetica">date_admin_format</font></b></td>
-      <td width="84%"><font face="Tahoma,Arial,Helvetica" size="2"><input type="text" name="date_admin_format" value="<%cfg_date_admin_format%>" size="40"></font></td>
-    </tr>
-    <tr>
-      <td width="100%" colspan="2"><font face="Tahoma,Arial,Helvetica" size="2">The date format that will be used when displaying dates on user pages.</font></td>
-    </tr>
-    <tr>
-      <td width="16%"><b><font size="2" face="Tahoma,Arial,Helvetica">date_user_format</font></b></td>
-      <td width="84%"><font face="Tahoma,Arial,Helvetica" size="2"><input type="text" name="date_user_format" value="<%cfg_date_user_format%>" size="40"></font></td>
-    </tr>
-  </table>      
-      </td>
-    </tr>
-  </table>
-  &nbsp;
-
-<table border=1 cellpadding=0 cellspacing=0><tr><td align=center>
-       <table border=0 width=500><tr><td align=center><font size="2" face="Tahoma,Arial,Helvetica"> <input type="submit" value="Submit Changes">
-  <input type="submit" name="reset_defaults" value="Restore System Defaults"> </font></td></tr></table>
-</td></tr></table>
-</form>
-</body>
-</html>
Index: admin/setup_markup.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/admin/setup_markup.html,v
retrieving revision 1.4
retrieving revision 1.6
diff -b -u -r1.4 -r1.6
--- admin/setup_markup.html     19 Oct 2001 20:07:29 -0000      1.4
+++ admin/setup_markup.html     17 Dec 2001 04:15:07 -0000      1.6
@@ -40,6 +40,23 @@
       </font></td>
     </tr>
     <tr>
+      <td width="100%" colspan="2"><font face="Tahoma,Arial,Helvetica" size="2">If enabled, users will be able to specify custom fonts using font tags (such as [font "Times New Roman"]...[/font]) wherever markup is enabled.</font></td>
+    </tr>
+    <tr>
+      <td width="16%"><b><font size="2" face="Tahoma,Arial,Helvetica">markup_allow_font</font></b></td>
+      <td width="84%"><font face="Tahoma,Arial,Helvetica" size="2">
+       <input type="radio" name="markup_allow_font" value=1<%if    cfg_markup_allow_font%> checked<%endif%>> Yes
+       <input type="radio" name="markup_allow_font" value=0<%ifnot cfg_markup_allow_font%> checked<%endif%>> No
+      </font></td>
+    </tr>
+    <tr>
+      <td width="16%"><b><font size="2" face="Tahoma,Arial,Helvetica">markup_allow_size</font></b></td>
+      <td width="84%"><font face="Tahoma,Arial,Helvetica" size="2">
+       <input type="radio" name="markup_allow_size" value=1<%if    cfg_markup_allow_size%> checked<%endif%>> Yes
+       <input type="radio" name="markup_allow_size" value=0<%ifnot cfg_markup_allow_size%> checked<%endif%>> No
+      </font></td>
+    </tr>
+    <tr>
       <td width="100%" colspan="2"><font face="Tahoma,Arial,Helvetica" size="2">If enabled, users will be able to use image tags (such as [image]...[/image]) wherever markup is enabled.</font></td>
     </tr>
     <tr>
Index: admin/setup_misc.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/admin/setup_misc.html,v
retrieving revision 1.5
retrieving revision 1.6
diff -b -u -r1.5 -r1.6
--- admin/setup_misc.html       19 Oct 2001 20:07:29 -0000      1.5
+++ admin/setup_misc.html       28 Nov 2001 01:00:03 -0000      1.6
@@ -54,6 +54,13 @@
       <td><b><font size="2" face="Tahoma,Arial,Helvetica">compress</font></b></td>
       <td><select name=compress size=1><option value="1"<%if cfg_compress%> selected<%endif%>>Compress output</option><option value="0"<%ifnot cfg_compress%> selected<%endifnot%>>Do not compress ouput</option></select></td>
     </tr>
+    <tr>
+      <td width="100%" colspan="2"><font face="Tahoma,Arial,Helvetica" size="2">You can use this variable to adjust the time that is displayed. This is useful if you want to display times in one time zone when using a server in another time zone. Value is in hours.</font></td>
+    </tr>
+    <tr>
+      <td width="16%"><b><font size="2" face="Tahoma,Arial,Helvetica">date_offset</font></b></td>
+      <td width="84%"><font face="Tahoma,Arial,Helvetica" size="2"><input type="text" name="date_offset" value="<%cfg_date_offset%>" size="40"></font></td>
+    </tr>
   </table>
       </td>
     </tr>
Index: admin/setup_nav.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/admin/setup_nav.html,v
retrieving revision 1.7
retrieving revision 1.8
diff -b -u -r1.7 -r1.8
--- admin/setup_nav.html        19 Sep 2001 04:17:31 -0000      1.7
+++ admin/setup_nav.html        28 Nov 2001 01:00:03 -0000      1.8
@@ -25,7 +25,6 @@
       &nbsp; <a href="admin.cgi?do=page;page=setup_messages.html">Priv. Messages</a><br>^M
       &nbsp; <a href="admin.cgi?do=page;page=setup_spellcheck.html">SpellCheck</a><br>^M
       &nbsp; <a href="admin.cgi?do=page;page=setup_email.html">Email</a><br>^M
-      &nbsp; <a href="admin.cgi?do=page;page=setup_dates.html">Dates</a><br>^M
       &nbsp; <a href="admin.cgi?do=page;page=setup_action.html">Actions</a><br>^M
       &nbsp; <a href="admin.cgi?do=page;page=setup_security.html">Security</a><br>^M
       &nbsp; <a href="admin.cgi?do=page;page=setup_misc.html">Miscellaneous</a><br>^M
Index: admin/setup_posts.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/admin/setup_posts.html,v
retrieving revision 1.4
retrieving revision 1.5
diff -b -u -r1.4 -r1.5
--- admin/setup_posts.html      3 Nov 2001 20:37:01 -0000       1.4
+++ admin/setup_posts.html      7 Dec 2001 23:42:27 -0000       1.5
@@ -53,9 +53,9 @@
          <td width="16%"><font face="Tahoma,Arial,Helvetica" size="2"><b>post_reply_subject_username</b></font></td>
          <td width="84%"><font face="Tahoma,Arial,Helvetica" size="2">
            <select name="post_reply_subject_username" size=1>
-             <option value="beginning"<%if post_reply_subject_username eq beginning%> selected<%set prsu_selected = 1%><%endif%>>Beginning</option>
-             <option value="after_re"<% if post_reply_subject_username eq after_re %> selected<%set prsu_selected = 1%><%endif%>>After Re:</option>
-             <option value="end"<%      if post_reply_subject_username eq end      %> selected<%set prsu_selected = 1%><%endif%>>End</option>
+             <option value="beginning"<%if cfg_post_reply_subject_username eq beginning%> selected<%set prsu_selected = 1%><%endif%>>Beginning</option>
+             <option value="after_re"<% if cfg_post_reply_subject_username eq after_re %> selected<%set prsu_selected = 1%><%endif%>>After Re:</option>
+             <option value="end"<%      if cfg_post_reply_subject_username eq end      %> selected<%set prsu_selected = 1%><%endif%>>End</option>
              <option value=""<%ifnot prsu_selected%> selected<%endif%>>None</option>
            </select>
          </td>
@@ -68,8 +68,8 @@
          <td width="16%"><font face="Tahoma,Arial,Helvetica" size="2"><b>post_require_subject</b></font></td>
          <td width="84%"><font face="Tahoma,Arial,Helvetica" size="2">
            <select name="post_require_subject" size=1>
-             <option value="1"<%if post_require_subject%> selected<%endif%>>Yes</option>
-             <option value="0"<%if post_require_subject%> selected<%endif%>>No</option>
+             <option value="1"<%if cfg_post_require_subject%> selected<%endif%>>Yes</option>
+             <option value="0"<%unless cfg_post_require_subject%> selected<%endunless%>>No</option>
            </select>
          </td>
        </tr>
Index: admin/templates_email.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/admin/templates_email.html,v
retrieving revision 1.5
retrieving revision 1.6
diff -b -u -r1.5 -r1.6
--- admin/templates_email.html  9 Nov 2001 20:56:04 -0000       1.5
+++ admin/templates_email.html  17 Dec 2001 19:30:19 -0000      1.6
@@ -82,10 +82,10 @@
       <tr><td>^M
 ^M
        <p><font size=2 face="Tahoma,Arial,Helvetica">Currently working on template set:^M
-         <%GForum::Tools::template_dir_select%>^M
+         <%GForum::Tools::template_dir_select($tpl_dir)%>^M
           <select name="tpl_dir" size=1>^M
           <%loop dir_select%>^M
-            <option value="<%directory%>"<%if tpl_dir eq $directory%> selected<%endif%>><%directory%></option>^M
+            <option value="<%directory%>"<%if dir_selected%> selected<%endif%>><%directory%></option>^M
           <%endloop%>^M
           <input type=submit value=Change name=load_template>^M
         </font></p>^M
Index: admin/templates_globals.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/admin/templates_globals.html,v
retrieving revision 1.4
retrieving revision 1.5
diff -b -u -r1.4 -r1.5
--- admin/templates_globals.html        19 Oct 2001 20:07:29 -0000      1.4
+++ admin/templates_globals.html        18 Dec 2001 02:23:14 -0000      1.5
@@ -42,7 +42,7 @@
        <p><font size="2" face="Tahoma,Arial,Helvetica">Currently working on template set:^M
         <select name="tpl_dir" size=1>^M
         <%loop dir_select%>^M
-          <option value="<%directory%>"<%if directory eq $tpl_dir%> selected<%endif%>><%directory%></option>^M
+          <option value="<%directory%>"<%if dir_selected%> selected<%endif%>><%directory%></option>^M
         <%endloop%>^M
         <input type="submit" value="Change" name="change"></font></p>^M
 ^M
Index: admin/templates_language.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/admin/templates_language.html,v
retrieving revision 1.5
retrieving revision 1.6
diff -b -u -r1.5 -r1.6
--- admin/templates_language.html       19 Oct 2001 20:07:29 -0000      1.5
+++ admin/templates_language.html       18 Dec 2001 02:23:14 -0000      1.6
@@ -24,7 +24,7 @@
                <p><font size="2" face="Tahoma,Arial,Helvetica">Currently working on template set:^M
                 <select name="tpl_dir" size=1>^M
                 <%loop dir_select%>^M
-                  <option value="<%directory%>"<%if directory eq $tpl_dir%> selected<%endif%>><%directory%></option>^M
+                  <option value="<%directory%>"<%if dir_selected%> selected<%endif%>><%directory%></option>^M
                 <%endloop%>^M
                 </select>^M
                 <input type="submit" value="Change" name="change">^M
Index: admin/templates_tpl.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/admin/templates_tpl.html,v
retrieving revision 1.8
retrieving revision 1.9
diff -b -u -r1.8 -r1.9
--- admin/templates_tpl.html    9 Nov 2001 20:56:04 -0000       1.8
+++ admin/templates_tpl.html    17 Dec 2001 19:30:19 -0000      1.9
@@ -77,9 +77,9 @@
           <td>^M
             <%font_tag%>^M
               Currently working on template set:^M
-              <%GForum::Tools::template_dir_select%>^M
+              <%GForum::Tools::template_dir_select($tpl_dir)%>^M
               <select name="tpl_dir" size=1>^M
-              <%loop dir_select%>  <option value="<%directory%>"<%if directory eq $tpl_dir%> selected<%endif%>><%directory%></option>^M
+              <%loop dir_select%>  <option value="<%directory%>"<%if dir_selected%> selected<%endif%>><%directory%></option>^M
               <%endloop%></select>^M
               <input type=submit value=Change name=change><br><br>^M
 ^M
Index: admin/users_admin_validate.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/admin/users_admin_validate.html,v
retrieving revision 1.3
retrieving revision 1.5
diff -b -u -r1.3 -r1.5
--- admin/users_admin_validate.html     9 Nov 2001 20:56:04 -0000       1.3
+++ admin/users_admin_validate.html     18 Dec 2001 21:38:22 -0000      1.5
@@ -1,11 +1,5 @@
-<%if validate_delete%>
+<%if validate_delete or email_validate_delete%>
   <%GForum::User::admin_validate_submit%>
-  <%if delete_count or validate_count%>
-    <%set success_message = $validate_count%>
-    <%set success_message_2 = " user(s) were validated and "%>
-    <%set success_message_3 = $delete_count%>
-    <%set success_message_4 = " user(s) were deleted."%>
-  <%endif%>
 <%endif%>

 <html>
@@ -14,13 +8,28 @@
 </head>

 <body>
-<%set header_title = "Validate Users"%>
-<%set header_description = "From this page you can validate users which require Admin Validation. This is only required if require_signup_admin_validation is on."%>
-<%include admin_header.html%>

 <%set font_tag = '<font face="Tahoma,Arial,Helvetica" size=2>'%>
 <%GForum::Config::tpl_get(image_url, require_signup_email_validation)%>

+<%GForum::User::admin_validate%>
+
+<%if num_users%>
+
+<%set header_title = "Validate Users"%>
+<%set header_description = "From this page you can validate new users when admin validation is required. This is only required if the require_signup_admin_validation is in use (the option is in the <nobr>'Setup -&gt; Users'</nobr> section).<br><br>Note that a user who has not yet gone through e-mail validation will still have to go through the e-mail validation before being valid users."%>
+
+<%if validate_delete%>
+  <%if delete_count or validate_count%>
+    <%set success_message = $validate_count%>
+    <%set success_message_2 = " user(s) were validated and "%>
+    <%set success_message_3 = $delete_count%>
+    <%set success_message_4 = " user(s) were deleted."%>
+  <%endif%>
+<%endifnot%>
+
+<%include admin_header.html%>
+<br><br>
 <table border=1 cellpadding=0 cellspacing=0>
   <tr>
     <td>
@@ -32,7 +41,6 @@
        </tr>
        <tr>
          <td align=left bgcolor=white colspan=2><%font_tag%>
-<%GForum::User::admin_validate%>
            <form method=post action="admin.cgi">
            <input type=hidden name=do value=page>
            <input type=hidden name=page value="users_admin_validate.html">
@@ -69,7 +77,7 @@
              <tr>
                <td>
                  <%font_tag%>
-                   <a href="db.cgi?db=User;do=search_results;user_id=<%user_id%>"><%user_username%></a>
+                   <a href="db.cgi?db=User;do=search_results;user_id=<%user_id%>;user_id-opt=%3D;display=details"><%user_username%></a>
                  </font>
                </td>
                 <td>
@@ -108,5 +116,112 @@
     </td>
   </tr>
 </table>
+
+<br><br><br><br>
+
+<%endif%>
+
+<%if num_awaiting_email_users%>
+<%set header_title = "Users awaiting e-mail validation"%>
+<%set header_description = "This list contains users who have not yet had their e-mail addresses validated. Users who have not been admin validated are NOT included in this list. This only occurs when the 'require_signup_email_validation' option is enabled (see <nobr>Setup -&gt; Users</nobr>)"%>
+
+<%if email_validate_delete%>
+  <%if delete_count or validate_count%>
+    <%set success_message = $validate_count%>
+    <%set success_message_2 = " user(s) were validated and "%>
+    <%set success_message_3 = $delete_count%>
+    <%set success_message_4 = " user(s) were deleted."%>
+  <%endif%>
+<%endifnot%>
+
+<%include admin_header.html%>
+<br><br>
+<table border=1 cellpadding=0 cellspacing=0>
+  <tr>
+    <td>
+      <table bgcolor=white border=0 cellpadding=3 cellspacing=3 width=500 valign=top>
+       <tr>
+         <td align=left bgcolor=white colspan=2>
+           <%font_tag%><b>Non-Validated Users</b></font>
+         </font></td>
+       </tr>
+       <tr>
+         <td align=left bgcolor=white colspan=2><%font_tag%>
+           <form method=post action="admin.cgi">
+           <input type=hidden name=do value=page>
+           <input type=hidden name=page value="users_admin_validate.html">
+           <input type=hidden name=email_validate_delete value=1>
+           <table border=0 cellspacing=2 cellpadding=2 width="100%">
+             <tr>
+               <td>
+                 <%font_tag%>
+                   <b>Username</b>
+                 </font>
+               </td>
+               <td>
+                 <%font_tag%>
+                   <b>Real E-Mail</b>
+                 </font>
+               </td>
+               <td width=50 align=center>
+                 <%font_tag%>
+                   <b>No&nbsp;Action</b>
+                 </font>
+               </td>
+               <td width=50 align=center>
+                 <%font_tag%>
+                   <b>Validate</b>
+                 </font>
+               </td>
+               <td width=50 align=center>
+                 <%font_tag%>
+                   <b>Delete</b>
+                 </font>
+               </td>
+             </tr>
+<%loop awaiting_email_users%>
+             <tr>
+               <td>
+                 <%font_tag%>
+                   <a href="db.cgi?db=User;do=search_results;user_id=<%user_id%>;user_id-opt=%3D;display=details"><%user_username%></a>
+                 </font>
+               </td>
+                <td>
+                  <%font_tag%><a href="mailto:<%user_email%>"><nobr><%user_email%></nobr></a></font>
+                </td>
+               <td align=center>
+                 <input type=radio name=<%user_id%> value=nothing checked><br>
+               </td>
+               <td align=center>
+                 <input type=radio name=<%user_id%> value=validate_email><br>
+               </td>
+               <td align=center>
+                 <input type=radio name=<%user_id%> value=delete><br>
+               </td>
+             </tr>
+<%endloop%>
+             <tr>
+               <td colspan=4>
+                 <center>
+                   <input type=submit value="Validate/Delete"><br>
+                 </center>
+               </td>
+             </tr>
+           </table>
+           </form>
+         </td>
+       </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<%endif%>
+
+<%if not num_users and not num_awaiting_email_users%>
+<%set header_title = "Validate Users"%>
+<%set header_description = "From this page you can validate or delete users who are not validated.<br><br>There are currently no users awaiting validation."%>
+<%include admin_header.html%>
+<%endif%>
+
 </body>
 </html>
Index: admin/users_nav.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/admin/users_nav.html,v
retrieving revision 1.7
retrieving revision 1.8
diff -b -u -r1.7 -r1.8
--- admin/users_nav.html        8 Oct 2001 02:03:30 -0000       1.7
+++ admin/users_nav.html        7 Dec 2001 23:42:27 -0000       1.8
@@ -1,6 +1,6 @@
 <html>
 <head>
-<title>Gossamer Forum - Users</title>
+<title>Gossamer Forum - Users &amp; Groups</title>
 <base target="content">
 </head>
 <body bgcolor="#FFFFFF">
@@ -13,11 +13,9 @@
   <tr>
     <td><font face="Tahoma,Arial,Helvetica" size=2><br>
       &nbsp; <a href="db.cgi?db=User;do=add_form">Add</a><br>
-      &nbsp; <a href="db.cgi?db=User;do=modify_search_form">Modify</a><br>
-      &nbsp; <a href="db.cgi?db=User;do=delete_search_form">Delete</a><br>
       &nbsp; <a href="admin.cgi?do=page;page=users_admin_validate.html">Validate</a><br>
       &nbsp; <a href="db.cgi?db=User;do=search_form">Search</a><br>
-      &nbsp; <a href="db.cgi?db=User;do=search_results;keyword=*">List</a><br>
+      &nbsp; <a href="db.cgi?db=User;do=search_results;keyword=*">List All</a><br>
       &nbsp;
     </font></td>
   </tr>
Index: admin/help/help_guide_enhance.html
===================================================================
RCS file: /usr/local/gossamer/gforum/cgi/admin/templates/admin/help/help_guide_enhance.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -b -u -r1.1 -r1.2
--- admin/help/help_guide_enhance.html  11 Oct 2001 22:28:01 -0000      1.1
+++ admin/help/help_guide_enhance.html  16 Dec 2001 21:22:55 -0000      1.2
@@ -46,8 +46,8 @@
           <td>^M
             <pre>sub {^M
        my $tags = shift;^M
-       my $post_db = $DB-&gt;table ('Posts');^M
-       $link_db-&gt;select_options ('ORDER BY post_replies DESC', 'LIMIT 5');^M
+       my $post_db = $DB-&gt;table ('Post');^M
+       $post_db-&gt;select_options ('ORDER BY post_replies DESC', 'LIMIT 5');^M
        my $sth    = $post_db-&gt;select;^M
        my @output;^M
        while (my $post = $sth-&gt;fetchrow_hashref) {^M
Index: common/editor.js
===================================================================
RCS file: common/editor.js
diff -N common/editor.js
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ common/editor.js    18 Dec 2001 18:21:43 -0000      1.3
@@ -0,0 +1,1190 @@
+/*  
+ * =================================================================
+ * HTML Editor - A wysiwyg web based editor for IE5+
+ *    Website  : http://gossamer-threads.com/
+ *    Author   : Scott Beck sbeck@gossamer-threads.com
+ *    Revision : $Id: editor.js,v 1.3 2001/12/18 18:21:43 sbeck Exp $
+ *
+ * Copyright (c) 2000 Gossamer Threads Inc. All Rights Reserved.
+ * Redistribution in part or in whole strictly prohibited. Please
+ * see About file for full details.
+ * =================================================================
+ *
+ * Description: Public interface for creating an HTML editor.
+ */
+
+// Keep track of number of images loaded.
+IMAGES_LEN = 0;
+
+// All the files. Used to set the url to them.
+FILES = {
+    image  : "image.html",
+    about  : "about.html"
+};
+
+// Have to store "this" in a global for events that are fired.
+// This gives a limitation that only one instance of the 
+// Editor can occur. This seems quite lame to me. If JScript
+// had support for closures there would not be a problem.
+This = false;
+
+
+/***********************************************************/
+/***********************************************************/
+/************ Public Fucntions                  ************/
+/***********************************************************/
+/***********************************************************/
+
+function Editor (opts) {
+/* ---------------------------------------------------------
+ * Constructor for Editor. Pass in an Object or options
+ * for this instance of the editor.
+ * Example:
+ *    var editor = new Editor (
+ *        { 
+ *            debug      : 1, 
+ *            base_url   : "http://www.gossamer-threads.com/tmp/editor"
+ *        }
+ *    );
+ * 
+ */
+    this.debug ("Got to constructor Editor");
+    if (!opts) return this;
+    var initialize = false;
+    this.initialized = false;
+    this.tb_hide = {};
+    this.tb_delete = {};
+    this.control = DHTMLSafe;
+    for (var opt in opts) {
+        switch (opt) {
+            case "tb_hide":
+                for (var i = 0; i < opts[opt].length; i++) {
+                    this.tb_hide[opts[opt][i]] = 1;
+                }
+                break;
+            case "tb_delete":
+                for (var i = 0; i < opts[opt].length; i++) {
+                    this.tb_delete[opts[opt][i]] = 1;
+                }
+                break;
+            case "base_url":
+                this.base_url = opts[opt];
+                break;
+            case "image_url":
+                this.image_url = opts[opt];
+                break;
+            case "images_url":
+                this.images_url = opts[opt];
+                break;
+            case "debug":
+                this.set_debug_level (opts[opt]);
+                break;
+            case "init":
+                initialize = true;
+                break;
+            default:
+                return this.error ("In constructure for Editor wrong argument");
+                break;
+        }
+    }
+
+// go through and set all the urls
+    for (var file in FILES) {
+        if (this[file + "_url"]) continue;
+        if (this.base_url) {
+            this[file + "_url"] = this.base_url + FILES[file];
+        }
+        else {
+            this[file + "_url"] = FILES[file];
+        }
+    }
+// Set some defaults
+
+// State we are in.
+    this.text_mode    = false;
+
+// Initial html.
+    this.editor_content = '';
+
+// The editor is initialized
+    this.editor_init  = false;
+
+// The toolbar is initialized
+    this.toolbar_init = false;
+
+// Images initialized
+    this.images_init  = false;
+
+// Array of toolbars
+    this.toolbars     = [];
+
+    This = this;
+    if (initialize) this.init();
+    return this;
+}
+
+function get_editor_html () {
+/* ---------------------------------------------------------
+ * Gets the html when the user is done editing it. Html 
+ * returned should be sutible for a web page.
+ */
+    var ret;
+    ret = DHTMLSafe.DocumentHTML;
+    return ret;
+}
+Editor.prototype.get_editor_html = get_editor_html;
+
+function set_editor_html (content) {
+/* ---------------------------------------------------------
+ * Set the html for the document. String passed in must be
+ * somewhat valid html.
+ */
+// Set the content
+    this.editor_content = content;
+    return true;
+}
+Editor.prototype.set_editor_html = set_editor_html;
+
+function set_debug_level (debug) {
+/* ---------------------------------------------------------
+ * Gets the html when the user is done editing it. Html 
+ * returned should be sutible for a web page.
+ */
+    if (debug || debug == 0) this._debug = debug;
+    if (this._debug > 0) this.debug_init();
+
+    return this._debug;
+}
+Editor.prototype.set_debug_level = set_debug_level;
+
+/***********************************************************/
+/***********************************************************/
+/************ Error handling and Debugging      ************/
+/***********************************************************/
+/***********************************************************/
+
+function error () {
+/* ---------------------------------------------------------
+ * Called for errors. Alerts the error and returns false.
+ * Nice for syntax like return this.error ("Some is wrong");
+ */
+    var msg = '';
+    for (var i = 0; i < arguments.length; i++) msg += ' ' + arguments[i];
+    if (this._debug > 0) this.debug (msg);
+    alert ("Editor: " + msg);
+    return false;
+}
+Editor.prototype.error = error;
+
+function debug () {
+/* ---------------------------------------------------------
+ * Debuggin routine. FIXME: Escape html character.
+ */
+    var msg = '';
+    for (var i = 0; i < arguments.length; i++) msg += ' ' + arguments[i];
+    if (this._debug > 0 && this.dh) this.dh.writeln ("Editor: " + msg);
+    return true;
+}
+Editor.prototype.debug = debug;
+
+
+/***********************************************************/
+/***********************************************************/
+/************ Init functions                    ************/
+/***********************************************************/
+/***********************************************************/
+
+function init_start () {
+/* ---------------------------------------------------------
+ * Initializes the toolbar and images. Public function
+ * to start everything after options are passed in.
+ */
+
+    // Display everything at once.
+    this.debug ("Init start called");
+    this.debug ("Setting interval");
+    this.time_out = window.setInterval ("This.window_init()", 1000, 'JScript');
+
+// Initialize images and toolbar
+    this.debug ("Calling init_images");
+    this.init_images ();
+    this.debug ("Calling init_toolbar");
+    this.init_toolbar ();
+    this.debug ("Done with init_start");
+    this.initialized = true;
+
+}
+Editor.prototype.init = init_start;
+
+function debug_init () {
+/* ---------------------------------------------------------
+ * Initializes the debugging window and sets up an event
+ * handler to close it.
+ */
+    if (this._debug) {
+        var win = window.open ("", "debug_win", "");
+        this.dh = win.document;
+        this.debug_win = win;
+        this.dh.write ("<html><pre>");
+        window.onunload = function () { This.debug_win.close() };
+    }
+}
+Editor.prototype.debug_init = debug_init;
+
+function window_init () {
+/* ---------------------------------------------------------
+ * Sets the display on all toolbars to visible. Returns
+ * if anything has not been initalized
+ */
+// Toolbar and images have been initialized
+    if (!this.toolbar_init || !this.images_init) return;
+
+// All images are loaded
+    if (IMAGES_LEN < document.images.length) return;
+
+    this.debug ("Initializing Window display");
+
+// Clear the timeout
+    this.debug ("Clearing interval");
+    window.clearInterval (this.time_out);
+
+    this.debug ("Going through images array");
+    for (var i = 0; i < document.images.length; i++) {
+        var image = document.images[i];
+
+
+// Do not show images that have been deleted in the toolbar
+        var tb = image.parentElement.parentElement.title;
+        if (this.tb_delete[tb]) continue;
+
+        document.images[i].style.visibility = 'visible';
+    }
+
+// Display toolbar
+    this.debug ("Going through toobar array");
+    for (var i = 0; i < this.toolbars.length; i++) {
+        this.debug ("Setting toolbar", this.toolbars[i].title, "to visible");
+        if (this.toolbars[i].className == 'toolbar_hidden') continue;
+        this.toolbars[i].style.visibility = 'visible';
+    }
+    this.debug ("Setting dhtml content");
+    if ( this.editor_content ) DHTMLSafe.DocumentHTML = this.editor_content;
+
+    this.debug ("Finished windows init");
+    return true;
+}
+Editor.prototype.window_init = window_init;
+
+
+/***********************************************************/
+/***********************************************************/
+/************ Execute DHTML Commands            ************/
+/***********************************************************/
+/***********************************************************/
+
+function exec (what, prompt, opt) {
+/* ---------------------------------------------------------
+ * General method to Execute a command to edit.
+ * Options are "Command", "Prompt user", 
+ * "options for command" . The first two are constants 
+ * defined at the top. The last is any options the command
+ * needs. This function validates against text mode and 
+ * runs a Query to see if the command can happen. If the
+ * can't be ran, returns false.
+ */
+       if (DHTMLSafe.Busy) return this.cancel_event();
+
+    if (!opt)     opt = '';
+    if (!prompt)  prompt = OLECMDEXECOPT_DODEFAULT;
+
+// Do whatever it is we are doing
+    var ret = this.query (what);
+    switch (ret) {
+        case 0:
+            //alert ("Command not supported");
+            this.debug ("Command", what, "not supported");
+            break;
+        case 1:
+            //alert ("Command disabled (" + what + ")");
+            this.debug ("Command", what, "disabled");
+            break;
+        default:
+            this.debug ("Calling ExecCommand with arguments", what, prompt, opt);
+            DHTMLSafe.ExecCommand(what, prompt, opt);
+            DHTMLSafe.focus();
+            return true;
+    }
+    DHTMLSafe.focus();
+    return false;
+}
+Editor.prototype.exec = exec;
+
+function query (what) {
+    return DHTMLSafe.QueryStatus (what)
+}
+Editor.prototype.query = query;
+
+/***********************************************************/
+/***********************************************************/
+/************ Utility Function                  ************/
+/***********************************************************/
+/***********************************************************/
+
+function update_toggle (element, image) {
+/* ---------------------------------------------------------
+ * Updates a toggle button given the parent element and
+ * the image object.
+ */
+
+// Turn it off
+    if (element.tb_state == 'on') {
+        element.tb_state  = 'off';
+        element.className = "tb_menu_item";
+        image.className   = "tb_icon";
+    }
+
+// Turn it off
+    else if (element.tb_state == 'off') {
+        element.tb_state = 'on';
+        element.className = "menu_item_mouseoverdown";
+        image.className   = "icon_down";
+    }
+}
+Editor.prototype.update_toggle = update_toggle;
+
+function cancel_event (evnt) {
+/* ---------------------------------------------------------
+ * General function to cancel an event.
+ */
+    if (!evnt) evnt = event;
+    if (!evnt) return false;
+    evnt.returnValue  = false;
+    evnt.cancelBubble = true;
+    return false;
+}
+Editor.prototype.cancel_event = cancel_event;
+
+/* 
+ * =================================================================
+ * HTML Editor - A wysiwyg web based editor for IE5+
+ *    Website  : http://gossamer-threads.com/
+ *    Author   : Scott Beck sbeck@gossamer-threads.com
+ *    Revision : $Id: editor.js,v 1.3 2001/12/18 18:21:43 sbeck Exp $
+ *
+ * Copyright (c) 2000 Gossamer Threads Inc. All Rights Reserved.
+ * Redistribution in part or in whole strictly prohibited. Please
+ * see About file for full details.
+ * =================================================================
+ *
+ * Description: DHTML Editing Component Constants for JavaScript
+ * Constants (c) Microsoft Corporation.
+ */
+
+//
+// Command IDs
+//
+DECMD_BOLD =                      5000
+DECMD_COPY =                      5002
+DECMD_CUT =                       5003
+DECMD_DELETE =                    5004
+DECMD_DELETECELLS =               5005
+DECMD_DELETECOLS =                5006
+DECMD_DELETEROWS =                5007
+DECMD_FINDTEXT =                  5008
+DECMD_FONT =                      5009
+DECMD_GETBACKCOLOR =              5010
+DECMD_GETBLOCKFMT =               5011
+DECMD_GETBLOCKFMTNAMES =          5012
+DECMD_GETFONTNAME =               5013
+DECMD_GETFONTSIZE =               5014
+DECMD_GETFORECOLOR =              5015
+DECMD_HYPERLINK =                 5016
+DECMD_IMAGE =                     5017
+DECMD_INDENT =                    5018
+DECMD_INSERTCELL =                5019
+DECMD_INSERTCOL =                 5020
+DECMD_INSERTROW =                 5021
+DECMD_INSERTTABLE =               5022
+DECMD_ITALIC =                    5023
+DECMD_JUSTIFYCENTER =             5024
+DECMD_JUSTIFYLEFT =               5025
+DECMD_JUSTIFYRIGHT =              5026
+DECMD_LOCK_ELEMENT =              5027
+DECMD_MAKE_ABSOLUTE =             5028
+DECMD_MERGECELLS =                5029
+DECMD_ORDERLIST =                 5030
+DECMD_OUTDENT =                   5031
+DECMD_PASTE =                     5032
+DECMD_REDO =                      5033
+DECMD_REMOVEFORMAT =              5034
+DECMD_SELECTALL =                 5035
+DECMD_SEND_BACKWARD =             5036
+DECMD_BRING_FORWARD =             5037
+DECMD_SEND_BELOW_TEXT =           5038
+DECMD_BRING_ABOVE_TEXT =          5039
+DECMD_SEND_TO_BACK =              5040
+DECMD_BRING_TO_FRONT =            5041
+DECMD_SETBACKCOLOR =              5042
+DECMD_SETBLOCKFMT =               5043
+DECMD_SETFONTNAME =               5044
+DECMD_SETFONTSIZE =               5045
+DECMD_SETFORECOLOR =              5046
+DECMD_SPLITCELL =                 5047
+DECMD_UNDERLINE =                 5048
+DECMD_UNDO =                      5049
+DECMD_UNLINK =                    5050
+DECMD_UNORDERLIST =               5051
+DECMD_PROPERTIES =                5052
+
+//
+// Enums
+//
+
+// OLECMDEXECOPT  
+OLECMDEXECOPT_DODEFAULT =         0 
+OLECMDEXECOPT_PROMPTUSER =        1
+OLECMDEXECOPT_DONTPROMPTUSER =    2
+
+// DHTMLEDITCMDF
+DECMDF_NOTSUPPORTED =             0 
+DECMDF_DISABLED =                 1 
+DECMDF_ENABLED =                  3
+DECMDF_LATCHED =                  7
+DECMDF_NINCHED =                  11
+
+// DHTMLEDITAPPEARANCE
+DEAPPEARANCE_FLAT =               0
+DEAPPEARANCE_3D =                 1 
+
+// OLE_TRISTATE
+OLE_TRISTATE_UNCHECKED =          0
+OLE_TRISTATE_CHECKED =            1
+OLE_TRISTATE_GRAY =               2
+
+/*  
+ * =================================================================
+ * HTML Editor - A wysiwyg web based editor for IE5+
+ *    Website  : http://gossamer-threads.com/
+ *    Author   : Scott Beck sbeck@gossamer-threads.com
+ *    Revision : $Id: editor.js,v 1.3 2001/12/18 18:21:43 sbeck Exp $
+ *
+ * Copyright (c) 2000 Gossamer Threads Inc. All Rights Reserved.
+ * Redistribution in part or in whole strictly prohibited. Please
+ * see About file for full details.
+ * =================================================================
+ *
+ * Description: Editing and format functions.
+ */
+
+/***********************************************************/
+/***********************************************************/
+/************ HTML Insertion Functions          ************/
+/***********************************************************/
+/***********************************************************/
+
+function insert_html (start, stop) {
+/* ---------------------------------------------------------
+ * If called with "start" and "stop" gets the text that
+ * is selected in the edit field and pastes "start" on the
+ * left of it an "stop" on the right of it. 
+ * Like: <textarea> and </textarea>
+ * If called is only "start" replaces the selected text with
+ * "start".
+ */
+       if (DHTMLSafe.Busy) return this.cancel_event();
+       var selection = DHTMLSafe.DOM.selection.createRange();
+       if (!start) return;
+       if (selection.htmlText == null) {
+               this.debug ("Can't insert html (", start, stop, "). Selection is null");
+               DHTMLSafe.focus();
+               return;
+       }
+       var html = '';
+       if (stop) {
+               this.debug ("Inserting html (", start, stop, ") around (", selection.text, ")");
+               html = start + selection.text + stop;
+       }
+       else {
+               this.debug ("Inserting html (", html, ")");
+               html = start;
+       }
+       if (this.text_mode) html = escape_html (html);
+       selection.pasteHTML (html);
+       DHTMLSafe.focus();
+}
+Editor.prototype.insert_html = insert_html;
+
+function insert_image () {
+/* ---------------------------------------------------------
+ * Calles a pop-up diaglog "IMAGE_URL" to prompt the user to
+ * select a URL to an image. After that inserts the image 
+ * into the document by calling insert_html.
+ */
+       if (DHTMLSafe.Busy) return this.cancel_event();
+       if (DHTMLSafe.DOM.selection.type == 'Control') {
+               this.debug ("Type of selection is Control. Deselection");
+               DHTMLSafe.DOM.selection.empty();
+       }
+       this.debug ("Bringging up dialogue for URL: (", this.image_url, ")");
+    var src = showModalDialog( this.image_url, this, "dialogHeight:170px;dialogWidth:435px" );
+    if ( src ) this.insert_html( '<img src="' + src + '">' );
+}
+Editor.prototype.insert_image = insert_image;
+
+function insert_hr () {
+/* ---------------------------------------------------------
+ * Inserts the html needed for an hr
+ */
+       if (DHTMLSafe.Busy) return this.cancel_event();
+    <%GForum::Markup::get_tags('hr')%>
+    this.insert_html( '<%escape_js hr%><br>' )
+}
+Editor.prototype.insert_hr = insert_hr;
+
+function insert_quote () {
+/* ---------------------------------------------------------
+ * Inserts the html needed for a quote
+ */
+       if (DHTMLSafe.Busy) return this.cancel_event();
+    <%GForum::Markup::get_tags('quote', '/quote')%>
+    var start = '<%escape_js quote%><br>';
+    var end   = '<%escape_js /quote%>';
+    this.insert_html( start, end );
+}
+Editor.prototype.insert_quote = insert_quote;
+
+function insert_reply () {
+/* ---------------------------------------------------------
+ * Inserts the html needed for a reply
+ */
+       if (DHTMLSafe.Busy) return this.cancel_event();
+    <%GForum::Markup::get_tags('reply', '/reply')%>
+    var start = '<%escape_js reply%><br>';
+    var end   = '<%escape_js /reply%>';
+    this.insert_html( start, end );
+}
+Editor.prototype.insert_reply = insert_reply;
+
+function insert_code () {
+/* ---------------------------------------------------------
+ * Inserts the html needed for a code
+ */
+       if (DHTMLSafe.Busy) return this.cancel_event();
+    <%GForum::Markup::get_tags('code', '/code')%>
+    var start = '<%escape_js code%><br>';
+    var end   = '<%escape_js /code%>';
+    this.insert_html( start, end );
+}
+Editor.prototype.insert_code = insert_code;
+
+
+/* 
+ * =================================================================
+ * HTML Editor - A wysiwyg web based editor for IE5+
+ *    Website  : http://gossamer-threads.com/
+ *    Author   : Scott Beck sbeck@gossamer-threads.com
+ *    Revision : $Id: editor.js,v 1.3 2001/12/18 18:21:43 sbeck Exp $
+ *
+ * Copyright (c) 2000 Gossamer Threads Inc. All Rights Reserved.
+ * Redistribution in part or in whole strictly prohibited. Please
+ * see About file for full details.
+ * =================================================================
+ *
+ * Description: Event handlers for DHTMLSafe.
+ */
+
+
+
+/***********************************************************/
+/***********************************************************/
+/************ Event handlers for DHTMLSafe      ************/
+/***********************************************************/
+/***********************************************************/
+
+function DocumentComplete () {
+/* ---------------------------------------------------------
+ * Initializes the content of the edit window when the
+ * edit window is finished loading the first time.
+ */
+       if (this.editor_init) return true;
+       this.editor_init = true;
+       this.debug ("Initializing DHTMLSafe and setting content");
+       if ( this.editor_content ) DHTMLSafe.DocumentHTML = this.editor_content;
+}
+Editor.prototype.DocumentComplete = DocumentComplete;
+
+function onkeydown () {
+/* ---------------------------------------------------------
+ * Function called onKeyPress for the Edit object. Used to 
+ * disable certain short cuts during "text mode". Also used 
+ * to enable CTRL-D to bring op the Font dialog. 
+ */
+
+ // What a strang place to stick an event object
+       var evnt = DHTMLSafe.DOM.parentWindow.event;
+       if (evnt.ctrlKey) {
+
+               switch (evnt.keyCode) {
+                       case 90: // ctrl-z   undo 
+                       case 89: // ctrl-y   redo 
+                       case 67: // ctrl-c   copy 
+                       case 37: // ctrl-left     
+                       case 39: // ctrl-right    
+                               return true;
+            case 68:
+                exec (DECMD_FONT, OLECMDEXECOPT_PROMPTUSER);
+                return this.cancel_event (evnt);
+                       default:
+                               break;
+               }
+       }
+       return true;
+}
+Editor.prototype.onkeydown = onkeydown;
+
+function DisplayChanged () {
+/* ---------------------------------------------------------
+ * Time critical event handler. Called every time anything
+ * changes on the Edit object field. Used to update the 
+ * "toggle" menu items and disabled items for "text mode".
+ */
+// No debugging in here. This event is ran every second or so.
+
+ // Loop through all the toolbars
+       var tb_len = this.toolbars.length
+       for (var i = 0; i < tb_len; i++) {
+               if (this.toolbars[i].className == 'toolbar_hidden') continue;
+
+// Get the toolbars children and loop through them.
+               var elements = this.toolbars[i].children;
+               if (!elements) continue;
+               var ele_len = elements.length;
+               for (var e = 0; e < ele_len; e++) {
+                       var current = elements[e];
+                       var image = current.children (0);
+                       if (!current || !image) continue;
+
+                       if (current.enabled) {
+                               var ret = 0;
+                               eval ("ret = " + current.enabled);
+                               if (ret == DECMDF_DISABLED || ret == DECMDF_NOTSUPPORTED) {
+                                       current.style.filter = "alpha(opacity=25)";
+                                       current.state        = 'disabled';
+                                       if (current.id == 'fmt_select') current.disabled = true;
+
+                                       // Disabled, no need to toggle check.
+                                       continue;
+                               }
+                               else {
+                                       current.style.filter = "";
+                                       current.state        = 'enabled';
+                                       if (current.id == 'fmt_select') {
+                                               current.disabled = false;
+                                       }
+                               }
+                       }
+                       else {
+                               current.state = 'enabled';
+                               current.style.filter = "";
+                               current.className = "tb_menu_item";
+                               image.className   = "tb_icon";
+                               continue;
+                       }
+
+
+// Not a toggle button, make sure the button is in the mouse
+// out position.
+                       if (current.TB_TYPE != 'toggle') continue;
+
+// Eval the string
+                       eval("var code = " + current.enabled);
+
+// If we are in that edit mode turn the button on
+                       if (code == DECMDF_LATCHED) {
+                               current.tb_state  = 'on';
+                               current.className = "menu_item_mouseoverdown";
+                               image.className   = "icon_down";
+                       }
+
+// else turn the button off
+                       else {
+                               current.tb_state  = 'off';
+                               current.className = "tb_menu_item";
+                               image.className   = "tb_icon";
+                       }
+               }
+       }
+       return true;
+}
+Editor.prototype.DisplayChanged = DisplayChanged;
+
+/*
+ * =================================================================
+ * HTML Editor - A wysiwyg web based editor for IE5+
+ *    Website  : http://gossamer-threads.com/
+ *    Author   : Scott Beck sbeck@gossamer-threads.com
+ *    Revision : $Id: editor.js,v 1.3 2001/12/18 18:21:43 sbeck Exp $
+ *
+ * Copyright (c) 2000 Gossamer Threads Inc. All Rights Reserved.
+ * Redistribution in part or in whole strictly prohibited. Please
+ * see About file for full details.
+ * =================================================================
+ *
+ * Description: Functions for the editor toolbars.
+ */
+
+function init_images () {
+/* ---------------------------------------------------------
+ * Preloads images and sets the URL for all the images on 
+ * the page. If you add other images be sure they are in
+ * the directory you set above.
+ * This sets the onload event for the images to be displayed.
+ */
+
+ // If we are initialized return
+       if (this.images_init) return true;
+       this.debug ("Initializing Images");
+       for (var i = 0; i < document.images.length; i++) {
+               image = document.images[i];
+
+// Images are hidden untill the toolbar is loaded
+               image.style.visibility = 'hidden';
+
+// Do not load images of toolbars that are deleted
+               var pb = image.parentElement.title;
+               var tb = image.parentElement.parentElement.title;
+               if (this.tb_delete[tb] || this.tb_delete[pb]) {
+                       IMAGES_LEN++;
+                       continue;
+               }
+
+// Set the image source
+               var old_src = image.src;
+               image.src = old_src;
+       }
+       this.images_init = true;
+       return true;
+}
+Editor.prototype.init_images = init_images;
+
+function init_toolbar () {
+/* ---------------------------------------------------------
+ * Should be called after the document has loaded. 
+ * Initializes the Toolbar for display.
+ */
+// Toolbar handler
+
+       if (this.toolbar_init) return true;
+       this.debug ("Initializing toolbar");
+       var i, s, element;
+       this.tb = {};
+       var tbs = document.body.all.tags ("DIV");
+       var tbs_len = tbs.length;
+
+// Go therough the document and get the toolbar classes
+       for (i=0; i < tbs_len; i++) {
+               element = tbs[i];
+
+// Store all the toolbar elements
+               this.tb[element.title] = element;
+
+// The toolbars are hidden till the images are loaded
+               element.TB_INDEX  = this.toolbars.length;
+
+// Skip deleted toolbars
+               if (this.tb_delete[element.title]) {
+                       element.className = 'toolbar_hidden';
+                       continue;
+               }
+
+// Initialize each toolbar
+               if (!this.tb_init (element)) {
+                       this.error ("Could not initialize toolbar:", element.title);
+               }
+
+// Set progmaticaly hidden toolbars to hidden
+               if (this.tb_hide[element.title]) {
+                       element.className = 'toolbar_hidden';
+               }
+
+// Keep all the toolbars for resizing and hidding
+               this.debug ("Adding toolbar", element.title);
+               this.toolbars[this.toolbars.length] = element;
+       }
+
+       this.tb_layout();
+
+// If the window is resized we need to re-layout the 
+// toolbar.
+       window.onresize = function () { This.tb_layout() };
+       this.toolbar_init = true;
+}
+Editor.prototype.init_toolbar = init_toolbar;
+
+
+function tb_init_button (element) {
+/* ---------------------------------------------------------
+ * Sets op all the defaults for a button DIV. Saves any 
+ * onclick and detaches the event. OnClick events are called
+ * onMouseDown.
+ */
+       if (element.className == "tb_general") return true;
+
+// Set events
+       element.onmouseover   = function () { This.tb_mouseover () }
+       element.onmouseout    = function () { This.tb_mouseout  () }
+       element.onmousedown   = function () { This.tb_mousedown () }
+       element.onmouseup     = function () { This.tb_mouseup   () }
+
+// Disable events
+       element.ondragstart   = function () { This.cancel_event () };
+       element.onselectstart = function () { This.cancel_event () };
+       element.onselect      = function () { This.cancel_event () };
+
+// Save onClick event for onMouseDown
+       element.YUSERONCLICK  = element.onclick;
+       element.onclick       = function () { This.cancel_event () };
+
+// Initial state is enabled
+       element.state = 'enabled';
+
+// If it is a toggle set the initial state.
+       if (element.TB_TYPE == 'toggle') element.tb_state = 'off';
+
+// So we don't re-initialize
+       element.INITIALIZED  = true;
+
+       return true;
+}
+Editor.prototype.tb_init_button = tb_init_button;
+
+function tb_init (element) {
+/* ---------------------------------------------------------
+ * Called for each toolbar DIV. Populates the toolbar and 
+ * sets the width.
+ */
+       element.TBWidth = 0;
+       if (! this.tb_populate (element)) return false;
+       element.style.posWidth = element.TBWidth;
+       return true;
+}
+Editor.prototype.tb_init = tb_init;
+
+function tb_show (menu) {
+/* ---------------------------------------------------------
+ * Shows or hiddes a toolbar. The element passed in is the 
+ * toolbar object to toggle.
+ */
+       var title = menu.title;
+       if (!this.tb[title]) return;
+       if (menu.className == 'toolbar_hidden') {
+               menu.className        = 'toolbar';
+               menu.style.visibility = 'visible';
+       }
+       else {
+               menu.className        = 'toolbar_hidden';
+               menu.style.visibility = 'hidden';
+       }
+       this.tb_layout();
+       return this.cancel_event();
+}
+Editor.prototype.tb_show = tb_show;
+
+function tb_populate (y) {
+/* ---------------------------------------------------------
+ * Moves all a toolbar "y"'s icons to the proper location on
+ * the screen and sets the correct size for the toolbars.
+ */
+       var i, elements, element;
+
+       this.debug ("tb_populate called for", y.title);
+
+       elements = y.children;
+       if (!elements) return;
+
+// Loop through all the toolbars children.
+       for (i=0; i < elements.length; i++) {
+               element = elements[i];
+               if (element.tagName == "SCRIPT" || element.tagName == "!") continue;
+
+// Switch to see what element we are workin with.
+               switch (element.className) {
+
+// Menu Item then initialize it if it is not initialized.
+                       case "tb_menu_item":
+                               if (element.INITIALIZED == null) {
+                                       if (! this.tb_init_button (element)) return this.error ("Problem initializing:", element.title);
+                               }
+                               element.style.posLeft = y.TBWidth;
+                               y.TBWidth += element.offsetWidth + 1;
+                               break;
+
+// Toolbar element that is not a button
+// most likly a form field.
+                       case "tb_general":
+                       case "tb_menu_text":
+                               element.style.posLeft = y.TBWidth;
+                               y.TBWidth += element.offsetWidth + 5;
+                               break;
+
+// Seperator
+                       case "tb_sep":
+                               element.style.posLeft = y.TBWidth + 2;
+                               y.TBWidth += 5;
+                               break;
+
+// Handle for the toolbar, would be cool if people 
+// could move the toolbar. Next version :)
+                       case "tb_handle":
+                               element.style.posLeft = 2;
+                               y.TBWidth += element.offsetWidth + 7;
+                               break;
+
+// Should never get here unless the html is messed
+                       default:
+                               return this.error ("Invalid class:", element.className,"on Element:", element.id, "<", element.tagName, "> title: <", element.title, ">");
+               }
+       }
+
+// Plus one in case the width is zero
+       y.TBWidth += 1;
+       this.debug ("Toolbar width set to", y.TBWidth);
+       return true;
+}
+Editor.prototype.tb_populate = tb_populate;
+
+function tb_layout () {
+/* ---------------------------------------------------------
+ * Layouts the toolbar on the screen based on the screen
+ * width and the widths built in tb_populate().
+ */
+       this.debug ("Layout called.");
+
+       var num_tb = this.toolbars.length;
+
+// No toolbars
+       if (num_tb == 0) { this.debug ("Ack, no toolbars"); return }
+       var i;
+
+// Get the screen width minus the width of the scrollbar
+       var sbar = document.body.offsetWidth - document.body.clientWidth;
+       var ScrWid = (document.body.offsetWidth  - sbar);
+       var ScrHit = (document.body.offsetHeight - sbar);
+
+// Go through the toolbars and find the width of the widest
+// one.
+       var TotalLen = ScrWid;
+       var tb = [];
+       var e = 0;
+       for (i = 0; i < num_tb; i++) {
+               if (this.toolbars[i].className == 'toolbar_hidden') continue;
+               tb[e] = this.toolbars[i];
+               if (tb[e].TBWidth > TotalLen) TotalLen = tb[e].TBWidth;
+               e++;
+       }
+       e--;
+       if (!tb.length) { return; }
+       var PrevTB;
+       var LastStart = 0;
+       var RelTop = 0;
+       var LastWid, CurrWid;
+
+// Position the top toolbar to the top of the screen
+       var TB           = tb[0];
+       TB.style.posTop  = 0;
+       TB.style.posLeft = 0;
+       var rows         = 1;
+
+// Go through the toolbars and update there width
+// and position.
+       var Start = TB.TBWidth;
+       for (i = 1; i < tb.length; i++) {
+               PrevTB = TB;
+               TB = tb[i];
+               CurrWid = TB.TBWidth;
+
+// Reached the end of the screen, reset to the start
+               if ((Start + CurrWid) > ScrWid) { 
+                       Start = 0;
+                       rows++;
+                       LastWid = TotalLen - LastStart;
+               }
+               else {
+                       LastWid = PrevTB.TBWidth;
+                       RelTop -= TB.offsetHeight;
+               }
+         
+               TB.style.posTop = RelTop;
+               TB.style.posLeft = Start;
+               PrevTB.style.width = LastWid;
+
+               LastStart = Start;
+               Start    += CurrWid;
+
+       }
+       DHTMLSafe.style.posTop     = (rows * 25);
+       DHTMLSafe.style.posHeight  = ScrHit - (rows * 25) - 5;
+       DHTMLSafe.style.posWidth   = ScrWid - 5;
+       DHTMLSafe.style.visibility = 'visible';
+
+// Set the total width
+       TB.style.width = TotalLen - LastStart;
+
+// Move the rest of the toolbars down
+       i--;
+       TB = tb[i];
+       var TBInd = TB.sourceIndex;
+       var A = TB.document.all;
+       for (var i in A) {
+               var item = A.item(i);
+               if (! item)                    continue;
+               if (! item.style)              continue;
+               if (item.sourceIndex <= TBInd) continue;
+               if (! this.tb[item.title])     continue;
+               if (item.className == 'toolbar_hidden')  continue;
+               item.style.posTop = RelTop;
+       }
+}
+Editor.prototype.tb_layout = tb_layout;
+
+function tb_mouseover () {
+/* ---------------------------------------------------------
+ * OnMouseOver event handler function for toolbar buttons.
+ */
+ // Source must be an image
+       if (event.srcElement.tagName != "IMG")  return this.cancel_event();
+       var image   = event.srcElement;
+       var element = image.parentElement;
+
+// If we are in text mode and the button is disables for 
+// text mode. cancel the mouseover.
+       if (element.state == 'disabled') return this.cancel_event();
+
+// If the image in normal state put it in mouseover state
+       if (image.className == "tb_icon") { 
+               element.className = "menu_item_mouseoverup";
+       }
+
+// else if it is in down state put it in mouseover
+// for down states.
+       else if (image.className == "icon_down") {
+               element.className = "menu_item_mouseoverdown";
+       }
+
+       return this.cancel_event();
+}
+Editor.prototype.tb_mouseover = tb_mouseover;
+
+function tb_mouseout () {
+/* ---------------------------------------------------------
+ * MouseOut event handler function for toolbar buttons
+ */
+ // The source tag must be an image.
+//     this.debug ("MouseOut event caught for", event.srcElement.title);
+       if (event.srcElement.tagName != "IMG") {
+//             this.debug ("Source is not an image");
+               return this.cancel_event();
+       }
+       var image   = event.srcElement;
+       var element = image.parentElement;
+
+// IF we are in "text mode" disable mouseout and return
+       if (element.state == 'disabled') {
+//             this.debug ("Source is disabled");
+               return this.cancel_event();
+       }
+
+// If the button is a toggle update it's state.
+       if (element.TB_TYPE == 'toggle' && element.tb_state != 'off') {
+               element.className = "menu_item_mouseoverdown"
+               image.className   = 'icon_down';
+       }
+
+// else put the image back to it's normal state.
+       else {
+               element.className  = "tb_menu_item";
+               image.className    = "tb_icon";
+       }
+
+       return this.cancel_event();
+}
+Editor.prototype.tb_mouseout = tb_mouseout;
+
+function tb_mousedown () {
+/* ---------------------------------------------------------
+ * MouseDown event handler for toolbar buttons.
+ */
+
+       this.debug ("MouseDown event caught for", event.srcElement.title);
+ // The source tag must be an image.
+       if (event.srcElement.tagName != "IMG") { 
+               this.debug ("Source was not an image"); 
+               return this.cancel_event();
+       }
+       var image   = event.srcElement;
+       var element = image.parentElement;
+
+// If we are in "text mode" and the button is not supported in
+// "text mode" cancel the event and return false.
+       if (element.state == 'disabled') { 
+               this.debug (element.title, "disabled"); 
+               return this.cancel_event();
+       }
+
+// If the button is a toggle update it's state.
+
+       if (element.TB_TYPE == 'toggle') {
+               this.debug (element.title, "is toggle. Updating toggle");
+               this.update_toggle (element, image);
+       }
+       else {
+
+// Else set the button to the mosedown state.
+               element.className = "menu_item_mouseoverdown";
+               image.className   = "icon_down";
+       }
+
+// We disabled the click function and saved it in this.
+// Eval it here and run it.
+       this.debug ("Calling code", element.YUSERONCLICK);
+       if (element.YUSERONCLICK) eval(element.YUSERONCLICK + "anonymous()");
+       return this.cancel_event();
+}
+Editor.prototype.tb_mousedown = tb_mousedown;
+
+function tb_mouseup () {
+/* ---------------------------------------------------------
+ * MouseUp event handler function for toolbar buttons.
+ */
+ // The source element must be an image type.
+//     this.debug ("Caught mouseup event for", event.srcElement.title);
+       if (event.srcElement.tagName != "IMG") {
+//             this.debug ("Source is not an image");
+               return this.cancel_event();
+       }
+       var image   = event.srcElement;
+       var element = image.parentElement;
+
+// If we are in "text mode" and the field is disabled in that
+// mode return and cancel the event.
+       if (element.state == 'disabled') {
+//             this.debug ("State is disabled");
+               return this.cancel_event();
+       }
+
+// It the icons to the mouseUp state.
+       element.className = "menu_item_mouseoverup";
+       image.className   = "tb_icon";
+
+// Refocus the compose window here.
+       DHTMLSafe.focus();
+
+       return this.cancel_event();
+
+}
+Editor.prototype.tb_mouseup = tb_mouseup;
+
+/* Help VIM out
+vim:ts=4:shiftwidth=4:syntax=javascript
+*/
+
Index: common/editor_about.html
===================================================================
RCS file: common/editor_about.html
diff -N common/editor_about.html
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ common/editor_about.html    16 Dec 2001 21:30:23 -0000      1.1
@@ -0,0 +1,18 @@
+<html>
+<head><title>About</title>
+<style><%include editor_dialog.css%></style>
+<body>
+<p align=center><font face="Verdana" size="3"><b>IE 5 HTML Editor</b><br>
+Author: Scott Beck<br>&lt;<a href="mailto:sbeck@gossamer-threads.com">sbeck@gossamer-threads.com</a>&gt;</font></p>
+
+<blockquote>
+<p><font face="Verdana" size="2">
+Copyright (c) 2000 Gossamer Threads Inc. Redistribution of the code
+without express written consent is forbidden. To receive the right
+to license this code for use on your site, the original code must be
+copied from gossamer-threads.com. License is granted if and only if
+all copyright notices remain unaltered, and you link from the page on 
+which the code is used to Gossamer Threads at <a href="http://www.gossamer-threads.com/">http://www.gossamer-threads.com/</a>.
+</font></p></blockquote>
+</body>
+</html>
Index: common/editor_constants.js
===================================================================
RCS file: common/editor_constants.js
diff -N common/editor_constants.js
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ common/editor_constants.js  16 Dec 2001 21:30:23 -0000      1.1
@@ -0,0 +1,97 @@
+/* 
+ * =================================================================
+ * HTML Editor - A wysiwyg web based editor for IE5+
+ *    Website  : http://gossamer-threads.com/
+ *    Author   : Scott Beck sbeck@gossamer-threads.com
+ *    Revision : $Id: editor_constants.js,v 1.1 2001/12/16 21:30:23 jagerman Exp $
+ *
+ * Copyright (c) 2000 Gossamer Threads Inc. All Rights Reserved.
+ * Redistribution in part or in whole strictly prohibited. Please
+ * see About file for full details.
+ * =================================================================
+ *
+ * Description: DHTML Editing Component Constants for JavaScript
+ * Constants (c) Microsoft Corporation.
+ */
+
+//
+// Command IDs
+//
+DECMD_BOLD =                      5000
+DECMD_COPY =                      5002
+DECMD_CUT =                       5003
+DECMD_DELETE =                    5004
+DECMD_DELETECELLS =               5005
+DECMD_DELETECOLS =                5006
+DECMD_DELETEROWS =                5007
+DECMD_FINDTEXT =                  5008
+DECMD_FONT =                      5009
+DECMD_GETBACKCOLOR =              5010
+DECMD_GETBLOCKFMT =               5011
+DECMD_GETBLOCKFMTNAMES =          5012
+DECMD_GETFONTNAME =               5013
+DECMD_GETFONTSIZE =               5014
+DECMD_GETFORECOLOR =              5015
+DECMD_HYPERLINK =                 5016
+DECMD_IMAGE =                     5017
+DECMD_INDENT =                    5018
+DECMD_INSERTCELL =                5019
+DECMD_INSERTCOL =                 5020
+DECMD_INSERTROW =                 5021
+DECMD_INSERTTABLE =               5022
+DECMD_ITALIC =                    5023
+DECMD_JUSTIFYCENTER =             5024
+DECMD_JUSTIFYLEFT =               5025
+DECMD_JUSTIFYRIGHT =              5026
+DECMD_LOCK_ELEMENT =              5027
+DECMD_MAKE_ABSOLUTE =             5028
+DECMD_MERGECELLS =                5029
+DECMD_ORDERLIST =                 5030
+DECMD_OUTDENT =                   5031
+DECMD_PASTE =                     5032
+DECMD_REDO =                      5033
+DECMD_REMOVEFORMAT =              5034
+DECMD_SELECTALL =                 5035
+DECMD_SEND_BACKWARD =             5036
+DECMD_BRING_FORWARD =             5037
+DECMD_SEND_BELOW_TEXT =           5038
+DECMD_BRING_ABOVE_TEXT =          5039
+DECMD_SEND_TO_BACK =              5040
+DECMD_BRING_TO_FRONT =            5041
+DECMD_SETBACKCOLOR =              5042
+DECMD_SETBLOCKFMT =               5043
+DECMD_SETFONTNAME =               5044
+DECMD_SETFONTSIZE =               5045
+DECMD_SETFORECOLOR =              5046
+DECMD_SPLITCELL =                 5047
+DECMD_UNDERLINE =                 5048
+DECMD_UNDO =                      5049
+DECMD_UNLINK =                    5050
+DECMD_UNORDERLIST =               5051
+DECMD_PROPERTIES =                5052
+
+//
+// Enums
+//
+
+// OLECMDEXECOPT  
+OLECMDEXECOPT_DODEFAULT =         0 
+OLECMDEXECOPT_PROMPTUSER =        1
+OLECMDEXECOPT_DONTPROMPTUSER =    2
+
+// DHTMLEDITCMDF
+DECMDF_NOTSUPPORTED =             0 
+DECMDF_DISABLED =                 1 
+DECMDF_ENABLED =                  3
+DECMDF_LATCHED =                  7
+DECMDF_NINCHED =                  11
+
+// DHTMLEDITAPPEARANCE
+DEAPPEARANCE_FLAT =               0
+DEAPPEARANCE_3D =                 1 
+
+// OLE_TRISTATE
+OLE_TRISTATE_UNCHECKED =          0
+OLE_TRISTATE_CHECKED =            1
+OLE_TRISTATE_GRAY =               2
+
Index: common/editor_dialog.css
===================================================================
RCS file: common/editor_dialog.css
diff -N common/editor_dialog.css
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ common/editor_dialog.css    16 Dec 2001 21:30:23 -0000      1.1
@@ -0,0 +1,92 @@
+/* ==================================================================
+ * Gossamer Threads Module Library - http://gossamer-threads.com/
+ *
+ *     dialog
+ *     Author  : Scott Beck
+ *     $Id: editor_dialog.css,v 1.1 2001/12/16 21:30:23 jagerman Exp $
+ *
+ * Copyright (c) 2000 Gossamer Threads Inc.  All Rights Reserved.
+ * ==================================================================
+ *
+ * Description: Style sheet for dialog pop-ups.
+ */
+
+BODY {
+       font-family      : "MS Sans Serif";
+       font-size        : 8pt;
+       background-color : buttonface;
+       margin           : 0;
+}
+
+TD {
+       font-family      : "MS Sans Serif";
+       font-size        : 8pt;
+}
+
+.button {
+       font-family      : "MS Sans Serif";
+       background-color : buttonface;
+       font-size        : 8pt;
+       width            : 80px;
+}
+
+.select_list {
+       font-family      : "MS Sans Serif";
+       font-size        : 8pt;
+       background-color : window;
+       border-bottom    : buttonhighlight solid 2px; 
+       border-left      : buttonshadow solid 2px; 
+       border-right     : buttonhighlight solid 2px; 
+       border-top       : buttonshadow solid 2px;
+       width            : 350px;
+       height           : 153px;
+       overflow         : hidden;
+       cursor           : default;
+}
+
+.select_list_inner {
+       font-family      : "MS Sans Serif";
+       font-size        : 8pt;
+       background-color : window;
+       border-bottom    : buttonhighlight solid 2px; 
+       border-left      : buttonshadow solid 2px; 
+       border-right     : buttonhighlight solid 2px; 
+       border-top       : buttonshadow solid 2px;
+       width            : 361px;
+       height           : 153px;
+       overflow         : scroll;
+       cursor           : default;
+}
+
+.select_title {
+       font-family      : "MS Sans Serif";
+       font-size        : 8pt;
+       background-color : buttonface;
+       border-bottom    : buttonshadow solid 1px; 
+       border-top       : buttonhighlight solid 1px;
+       border-left      : buttonhighlight solid 1px; 
+       border-right     : buttonshadow solid 1px; 
+       padding          : 2px;
+       margin           : 0px;
+       cursor           : default;
+}
+
+.select_option {
+       font-family      : "Fixedsys";
+       font-size        : 8px;
+       cursor           : default;
+}
+
+.select_title_outer {
+       font-family      : "MS Sans Serif";
+       font-size        : 8pt;
+       cursor           : default;
+}
+
+.select_option_selected {
+       font-family      : "Fixedsys";
+       font-size        : 8px;
+       background-Color : highlight;
+       color            : white;
+       cursor           : default;
+}
Index: common/editor_edit.js
===================================================================
RCS file: common/editor_edit.js
diff -N common/editor_edit.js
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ common/editor_edit.js       16 Dec 2001 21:30:23 -0000      1.1
@@ -0,0 +1,121 @@
+/*  
+ * =================================================================
+ * HTML Editor - A wysiwyg web based editor for IE5+
+ *    Website  : http://gossamer-threads.com/
+ *    Author   : Scott Beck sbeck@gossamer-threads.com
+ *    Revision : $Id: editor_edit.js,v 1.1 2001/12/16 21:30:23 jagerman Exp $
+ *
+ * Copyright (c) 2000 Gossamer Threads Inc. All Rights Reserved.
+ * Redistribution in part or in whole strictly prohibited. Please
+ * see About file for full details.
+ * =================================================================
+ *
+ * Description: Editing and format functions.
+ */
+
+/***********************************************************/
+/***********************************************************/
+/************ HTML Insertion Functions          ************/
+/***********************************************************/
+/***********************************************************/
+
+function insert_html (start, stop) {
+/* ---------------------------------------------------------
+ * If called with "start" and "stop" gets the text that
+ * is selected in the edit field and pastes "start" on the
+ * left of it an "stop" on the right of it. 
+ * Like: <textarea> and </textarea>
+ * If called is only "start" replaces the selected text with
+ * "start".
+ */
+       if (DHTMLSafe.Busy) return this.cancel_event();
+       var selection = DHTMLSafe.DOM.selection.createRange();
+       if (!start) return;
+       if (selection.htmlText == null) {
+               this.debug ("Can't insert html (", start, stop, "). Selection is null");
+               DHTMLSafe.focus();
+               return;
+       }
+       var html = '';
+       if (stop) {
+               this.debug ("Inserting html (", start, stop, ") around (", selection.text, ")");
+               html = start + selection.text + stop;
+       }
+       else {
+               this.debug ("Inserting html (", html, ")");
+               html = start;
+       }
+       if (this.text_mode) html = escape_html (html);
+       selection.pasteHTML (html);
+       DHTMLSafe.focus();
+}
+Editor.prototype.insert_html = insert_html;
+
+function insert_image () {
+/* ---------------------------------------------------------
+ * Calles a pop-up diaglog "IMAGE_URL" to prompt the user to
+ * select a URL to an image. After that inserts the image 
+ * into the document by calling insert_html.
+ */
+       if (DHTMLSafe.Busy) return this.cancel_event();
+       if (DHTMLSafe.DOM.selection.type == 'Control') {
+               this.debug ("Type of selection is Control. Deselection");
+               DHTMLSafe.DOM.selection.empty();
+       }
+       this.debug ("Bringging up dialogue for URL: (", this.image_url, ")");
+    var src = showModalDialog( this.image_url, this, "dialogHeight:170px;dialogWidth:435px" );
+    if ( src ) this.insert_html( '<img src="' + src + '">' );
+}
+Editor.prototype.insert_image = insert_image;
+
+function insert_hr () {
+/* ---------------------------------------------------------
+ * Inserts the html needed for an hr
+ */
+       if (DHTMLSafe.Busy) return this.cancel_event();
+    <%GForum::Markup::get_tags('hr')%>
+    this.insert_html( '<%escape_js hr%><br>' )
+}
+Editor.prototype.insert_hr = insert_hr;
+
+function insert_quote () {
+/* ---------------------------------------------------------
+ * Inserts the html needed for a quote
+ */
+       if (DHTMLSafe.Busy) return this.cancel_event();
+    <%GForum::Markup::get_tags('quote', '/quote')%>
+    var start = '<%escape_js quote%><br>';
+    var end   = '<%escape_js /quote%>';
+    this.insert_html( start, end );
+}
+Editor.prototype.insert_quote = insert_quote;
+
+function insert_reply () {
+/* ---------------------------------------------------------
+ * Inserts the html needed for a reply
+ */
+       if (DHTMLSafe.Busy) return this.cancel_event();
+    <%GForum::Markup::get_tags('reply', '/reply')%>
+    var start = '<%escape_js reply%><br>';
+    var end   = '<%escape_js /reply%>';
+    this.insert_html( start, end );
+}
+Editor.prototype.insert_reply = insert_reply;
+
+function insert_code () {
+/* ---------------------------------------------------------
+ * Inserts the html needed for a code
+ */
+       if (DHTMLSafe.Busy) return this.cancel_event();
+    <%GForum::Markup::get_tags('code', '/code')%>
+    var start = '<%escape_js code%><br>';
+    var end   = '<%escape_js /code%>';
+    this.insert_html( start, end );
+}
+Editor.prototype.insert_code = insert_code;
+
+
+/* Help VIM out
+vim:ts=4:shiftwidth=4:syntax=javascript
+*/
+
Index: common/editor_events.js
===================================================================
RCS file: common/editor_events.js
diff -N common/editor_events.js
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ common/editor_events.js     16 Dec 2001 21:30:23 -0000      1.1
@@ -0,0 +1,143 @@
+/* 
+ * =================================================================
+ * HTML Editor - A wysiwyg web based editor for IE5+
+ *    Website  : http://gossamer-threads.com/
+ *    Author   : Scott Beck sbeck@gossamer-threads.com
+ *    Revision : $Id: editor_events.js,v 1.1 2001/12/16 21:30:23 jagerman Exp $
+ *
+ * Copyright (c) 2000 Gossamer Threads Inc. All Rights Reserved.
+ * Redistribution in part or in whole strictly prohibited. Please
+ * see About file for full details.
+ * =================================================================
+ *
+ * Description: Event handlers for DHTMLSafe.
+ */
+
+
+
+/***********************************************************/
+/***********************************************************/
+/************ Event handlers for DHTMLSafe      ************/
+/***********************************************************/
+/***********************************************************/
+
+function DocumentComplete () {
+/* ---------------------------------------------------------
+ * Initializes the content of the edit window when the
+ * edit window is finished loading the first time.
+ */
+       if (this.editor_init) return true;
+       this.editor_init = true;
+       this.debug ("Initializing DHTMLSafe and setting content");
+       if ( this.editor_content ) DHTMLSafe.DocumentHTML = this.editor_content;
+}
+Editor.prototype.DocumentComplete = DocumentComplete;
+
+function onkeydown () {
+/* ---------------------------------------------------------
+ * Function called onKeyPress for the Edit object. Used to 
+ * disable certain short cuts during "text mode". Also used 
+ * to enable CTRL-D to bring op the Font dialog. 
+ */
+
+ // What a strang place to stick an event object
+       var evnt = DHTMLSafe.DOM.parentWindow.event;
+       if (evnt.ctrlKey) {
+
+               switch (evnt.keyCode) {
+                       case 90: // ctrl-z   undo 
+                       case 89: // ctrl-y   redo 
+                       case 67: // ctrl-c   copy 
+                       case 37: // ctrl-left     
+                       case 39: // ctrl-right    
+                               return true;
+            case 68:
+                exec (DECMD_FONT, OLECMDEXECOPT_PROMPTUSER);
+                return this.cancel_event (evnt);
+                       default:
+                               break;
+               }
+       }
+       return true;
+}
+Editor.prototype.onkeydown = onkeydown;
+
+function DisplayChanged () {
+/* ---------------------------------------------------------
+ * Time critical event handler. Called every time anything
+ * changes on the Edit object field. Used to update the 
+ * "toggle" menu items and disabled items for "text mode".
+ */
+// No debugging in here. This event is ran every second or so.
+
+ // Loop through all the toolbars
+       var tb_len = this.toolbars.length
+       for (var i = 0; i < tb_len; i++) {
+               if (this.toolbars[i].className == 'toolbar_hidden') continue;
+
+// Get the toolbars children and loop through them.
+               var elements = this.toolbars[i].children;
+               if (!elements) continue;
+               var ele_len = elements.length;
+               for (var e = 0; e < ele_len; e++) {
+                       var current = elements[e];
+                       var image = current.children (0);
+                       if (!current || !image) continue;
+
+                       if (current.enabled) {
+                               var ret = 0;
+                               eval ("ret = " + current.enabled);
+                               if (ret == DECMDF_DISABLED || ret == DECMDF_NOTSUPPORTED) {
+                                       current.style.filter = "alpha(opacity=25)";
+                                       current.state        = 'disabled';
+                                       if (current.id == 'fmt_select') current.disabled = true;
+
+                                       // Disabled, no need to toggle check.
+                                       continue;
+                               }
+                               else {
+                                       current.style.filter = "";
+                                       current.state        = 'enabled';
+                                       if (current.id == 'fmt_select') {
+                                               current.disabled = false;
+                                       }
+                               }
+                       }
+                       else {
+                               current.state = 'enabled';
+                               current.style.filter = "";
+                               current.className = "tb_menu_item";
+                               image.className   = "tb_icon";
+                               continue;
+                       }
+
+
+// Not a toggle button, make sure the button is in the mouse
+// out position.
+                       if (current.TB_TYPE != 'toggle') continue;
+
+// Eval the string
+                       eval("var code = " + current.enabled);
+
+// If we are in that edit mode turn the button on
+                       if (code == DECMDF_LATCHED) {
+                               current.tb_state  = 'on';
+                               current.className = "menu_item_mouseoverdown";
+                               image.className   = "icon_down";
+                       }
+
+// else turn the button off
+                       else {
+                               current.tb_state  = 'off';
+                               current.className = "tb_menu_item";
+                               image.className   = "tb_icon";
+                       }
+               }
+       }
+       return true;
+}
+Editor.prototype.DisplayChanged = DisplayChanged;
+
+/* Help VIM out
+vim:ts=4:shiftwidth=4:syntax=javascript
+*/
Index: common/editor_iframe.html
===================================================================
RCS file: common/editor_iframe.html
diff -N common/editor_iframe.html
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ common/editor_iframe.html   18 Dec 2001 21:42:59 -0000      1.7
@@ -0,0 +1,150 @@
+<html>
+<head><title>HTML Editor</title>
+
+<!-- Public editor interface -->
+<script language="JScript" src="gforum.cgi?do=editor_js"></script>
+
+<!-- Style sheet for toolbar -->
+<link rel="stylesheet" type="text/css" href="gforum.cgi?do=editor_css">
+
+</head>
+<body bgcolor="<%editor_base_color%>" marginheight="0" marginwidth="0" leftmargin="0" topmargin="0" rightmargin="0" onLoad="parent.load_html()">
+
+<div class="toolbar" id="File" title="File" onselectstart="return This.cancel_event ();">
+       <!--====================================-->
+       <span title="Handle" class=tb_handle></span>
+       <span title="Cut Div" enabled="This.query (DECMD_CUT);" TB_TYPE="button" onclick="This.exec(DECMD_CUT);" class="tb_menu_item">
+               <img title="Cut" onload="IMAGES_LEN++;" class="tb_icon" src="<%image_url%>/toolbar/cut.gif" alt="Bold"></img>
+       </span>
+       <span title="Copy Div" enabled="This.query (DECMD_COPY);" TB_TYPE="button" onclick="This.exec(DECMD_COPY);" class="tb_menu_item">
+               <img title="Copy" onload="IMAGES_LEN++;" class="tb_icon" src="<%image_url%>/toolbar/copy.gif" alt="Copy"></img>
+       </span>
+       <span title="Paste Div" enabled="This.query (DECMD_PASTE);" TB_TYPE="button" onclick="This.exec(DECMD_PASTE);" class="tb_menu_item">
+               <img title="Paste" onload="IMAGES_LEN++;" class="tb_icon" src="<%image_url%>/toolbar/paste.gif" alt="Paste"></img>
+       </span>
+       <!----------------------------------------->
+       <span title="Seperator" class="tb_sep"></span>
+       <span title="Undo Div" enabled="This.query (DECMD_UNDO);" TB_TYPE="button" onclick="This.exec(DECMD_UNDO)" class="tb_menu_item">
+               <img title="Undo" onload="IMAGES_LEN++;" class="tb_icon" src="<%image_url%>/toolbar/undo.gif" alt="Undo"></img>
+       </span>
+       <span title="Redo Div" enabled="This.query (DECMD_REDO);" TB_TYPE="button" onclick="This.exec(DECMD_REDO)" class="tb_menu_item">
+               <img title="Redo" onload="IMAGES_LEN++;" class="tb_icon" src="<%image_url%>/toolbar/redo.gif" alt="Redo"></img>
+       </span>
+       <span title="Seperator" class="tb_sep"></span>
+       <span title="Find Div" enabled="This.query (DECMD_FINDTEXT);" TB_TYPE="button" onclick="This.exec(DECMD_FINDTEXT, OLECMDEXECOPT_DODEFAULT, '', 1)" class="tb_menu_item">
+               <img title="Find" onload="IMAGES_LEN++;" class="tb_icon" src="<%image_url%>/toolbar/find.gif" alt="Find"></img>
+       </span>
+</div>
+
+<div class="toolbar" id="Format" title="Format" onselectstart="return This.cancel_event ();">
+       <!--=====================================-->
+       <span title="Handle" class=tb_handle></span>
+       <span title="Bold Item" enabled="This.query (DECMD_BOLD);" TB_TYPE="toggle" onclick="This.exec(DECMD_BOLD);" class="tb_menu_item">
+               <img title="Bold" onload="IMAGES_LEN++;" class="tb_icon" src="<%image_url%>/toolbar/bold.gif" alt="Bold"></img>
+       </span>
+       <span title="Italic Item" enabled="This.query (DECMD_ITALIC);" TB_TYPE="toggle" onclick="This.exec(DECMD_ITALIC)" class="tb_menu_item">
+               <img title="Italic" onload="IMAGES_LEN++;" class="tb_icon" src="<%image_url%>/toolbar/italic.gif" alt="Italic"></img>
+       </span>
+       <span title="Underline Item" enabled="This.query (DECMD_UNDERLINE);" TB_TYPE="toggle" onclick="This.exec(DECMD_UNDERLINE)" class="tb_menu_item">
+               <img title="Underline" onload="IMAGES_LEN++;" class="tb_icon" src="<%image_url%>/toolbar/under.gif" alt="Underline"></img>
+       </span>
+       <!----------------------------------------->
+       <span title="Seperator" class="tb_sep"></span>
+  <span title="Quote" TB_TYPE="button" onclick="This.insert_quote()" class="tb_menu_item">
+    <img title="Quote" onload="IMAGES_LEN++;" class="tb_icon" src="<%image_url%>/toolbar/quote.gif" alt="Quote"></img>
+       </span>
+  <span title="Reply" TB_TYPE="button" onclick="This.insert_reply()" class="tb_menu_item">
+    <img title="Reply" onload="IMAGES_LEN++;" class="tb_icon" src="<%image_url%>/toolbar/reply.gif" alt="Reply"></img>
+       </span>
+  <span title="Code" TB_TYPE="button" onclick="This.insert_code()" class="tb_menu_item">
+    <img title="Code" onload="IMAGES_LEN++;" class="tb_icon" src="<%image_url%>/toolbar/code.gif" alt="Code"></img>
+       </span>
+       <!----------------------------------------->
+       <span title="Seperator" class="tb_sep"></span>
+       <span title="Left Div" enabled="This.query (DECMD_JUSTIFYLEFT);" TEXT_MODE='no' TB_TYPE="toggle" onclick="This.exec(DECMD_JUSTIFYLEFT)" class="tb_menu_item">
+               <img title="Left" onload="IMAGES_LEN++;" class="tb_icon" src="<%image_url%>/toolbar/left.gif" alt="Justify Left"></img>
+       </span>
+       <span title="Center Div" enabled="This.query (DECMD_JUSTIFYCENTER);" TEXT_MODE='no' TB_TYPE="toggle" onclick="This.exec(DECMD_JUSTIFYCENTER)" class="tb_menu_item">
+               <img title="Center" onload="IMAGES_LEN++;" class="tb_icon" src="<%image_url%>/toolbar/center.gif" alt="Justify Center"></img>
+       </span>
+       <span title="Right Div" enabled="This.query (DECMD_JUSTIFYRIGHT);" TEXT_MODE='no' TB_TYPE="toggle" onclick="This.exec(DECMD_JUSTIFYRIGHT)" class="tb_menu_item">
+               <img title="Rigth" onload="IMAGES_LEN++;" class="tb_icon" src="<%image_url%>/toolbar/right.gif" alt="Justify Right"></img>
+       </span>
+       <!----------------------------------------->
+       <span title="Seperator" class="tb_sep"></span>
+       <span title="OL Div" enabled="This.query (DECMD_ORDERLIST);" TEXT_MODE='no' TB_TYPE="toggle" onclick="This.exec(DECMD_ORDERLIST)" class="tb_menu_item">
+               <img title="OL" onload="IMAGES_LEN++;" class="tb_icon" src="<%image_url%>/toolbar/numlist.gif" alt="Ordered List"></img>
+       </span>
+       <span title="UL Div" enabled="This.query (DECMD_UNORDERLIST);" TEXT_MODE='no' TB_TYPE="toggle" onclick="This.exec(DECMD_UNORDERLIST)" class="tb_menu_item">
+               <img title="UL" onload="IMAGES_LEN++;" class="tb_icon" src="<%image_url%>/toolbar/bullist.gif" alt="Un-Ordered List"></img>
+       </span>
+       <span title="Outdent Div" enabled="This.query (DECMD_OUTDENT);" TB_TYPE="button" onclick="This.exec(DECMD_OUTDENT)" TEXT_MODE='no' class="tb_menu_item">
+               <img title="Outdent" onload="IMAGES_LEN++;" class="tb_icon" src="<%image_url%>/toolbar/deindent.gif" alt="Outdent"></img>
+       </span>
+       <span title="Indent Div" enabled="This.query (DECMD_INDENT);" TB_TYPE="button" onclick="This.exec(DECMD_INDENT)" TEXT_MODE='no' class="tb_menu_item">
+               <img title="Indent" onload="IMAGES_LEN++;" class="tb_icon" src="<%image_url%>/toolbar/inindent.gif" alt="Indent"></img>
+       </span>
+       <!----------------------------------------->
+       <span title="Sperator" class="tb_sep"></span>
+       <span title="Font Div" enabled="This.query (DECMD_FONT);" TEXT_MODE='no' TB_TYPE="button" onclick="This.exec (DECMD_FONT, OLECMDEXECOPT_PROMPTUSER)" class="tb_menu_item">
+               <img title="Font" onload="IMAGES_LEN++;" class="tb_icon" src="<%image_url%>/toolbar/font.gif" alt="Font"></img>
+       </span>
+</div>
+<div class="toolbar" id="Misc" title="Misc" onselectstart="return This.cancel_event ();">
+       <!--=====================================-->
+       <span title="Handle" class=tb_handle></span>
+       <span title="Horizontal Rule Div" TB_TYPE="button" onclick="This.insert_hr();" class="tb_menu_item">
+               <img title="Horizontal Rule" onload="IMAGES_LEN++;" class="tb_icon" src="<%image_url%>/toolbar/hr.gif" alt="Horizontal Rule"></img>
+       </span>
+       <!----------------------------------------->
+       <span title="Seperator" class="tb_sep"></span>
+       <span title="Image Div" TB_TYPE="button" onclick="This.insert_image()" class="tb_menu_item">
+               <img title="Image" onload="IMAGES_LEN++;" class="tb_icon" src="<%image_url%>/toolbar/image.gif" alt="Insert Image"></img>
+       </span>
+       <span title="Link Div" enabled="This.query (DECMD_HYPERLINK);" TB_TYPE="button" onclick="This.exec(DECMD_HYPERLINK, OLECMDEXECOPT_PROMPTUSER)" class="tb_menu_item">
+               <img title="Link" onload="IMAGES_LEN++;" class="tb_icon" src="<%image_url%>/toolbar/link.gif" alt="Create Link"></img>
+       </span>
+</div>
+
+<!-- The DHTML Edit object. -->
+<object id="DHTMLSafe" title="Main Edit Window" style="position:absolute" classid="clsid:2D360201-FFF5-11D1-8D03-00A0C959BC0A" tabindex="6">
+       <param name="ShowDetails" value="0">
+       <param name="ShowBorders" value="0">
+       <param name="Appearance" value="1">
+       <param name="Scrollbars" value="-1">
+       <param name="ScrollbarAppearance" value="1">
+       <param name="AbsoluteDropMode" value="-1">
+       <param name="SourceCodePreservation" value="0">
+       <param name="UseDivOnCarriageReturn" value="0">
+       <param name="ActivateDTCs" value="0">
+       <param name="BrowseMode" value="1">
+</object>
+<%-- Event handlers for DHTMLSafe --%>
+
+<script for="DHTMLSafe" event="DocumentComplete">
+<!--
+// Editor Object loaded
+    if (!This) return false;
+    return This.DocumentComplete ();
+// -->
+</script>
+
+<script for=DHTMLSafe event=DisplayChanged>
+<!--
+// Editor Object changed
+    if (!This) return false;
+    return This.DisplayChanged ();
+// -->
+</script>
+
+<script for=DHTMLSafe event=onkeydown>
+<!--
+// Key press event for short cut keys
+    if (!This) return false;
+    return This.onkeydown ();
+// -->
+</script>
+
+</body>
+</html>
+
Index: common/editor_image.html
===================================================================
RCS file: common/editor_image.html
diff -N common/editor_image.html
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ common/editor_image.html    16 Dec 2001 21:30:23 -0000      1.1
@@ -0,0 +1,27 @@
+<html>
+<head><title>Insert Image</title>
+  <style>
+    <%include editor_dialog.css%>
+  </style>
+<script language=JScript>
+
+function done () {
+       window.returnValue = document.all.source.value;
+       window.close();
+}
+
+</script>
+</head>
+<body>
+<table border=0 cellpadding=3 align=center>
+       <tr>
+               <td><font size=1>Picture Source</font></td><td><input size="40" id=source value="http://"></input></td>
+       </tr>
+</table>
+<hr>
+<div align=right>
+       <button class=button onclick="done();">OK</button> &nbsp;
+       <button class=button onclick="window.close();">Cancel</button>
+</div>
+</body>
+</html>
Index: common/editor_style.css
===================================================================
RCS file: common/editor_style.css
diff -N common/editor_style.css
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ common/editor_style.css     16 Dec 2001 21:30:23 -0000      1.1
@@ -0,0 +1,190 @@
+/* 
+ * =================================================================
+ * HTML Editor - A wysiwyg web based editor for IE5+
+ *    Website  : http://gossamer-threads.com/
+ *    Author   : Scott Beck sbeck@gossamer-threads.com
+ *    Revision : $Id: editor_style.css,v 1.1 2001/12/16 21:30:23 jagerman Exp $
+ *
+ * Copyright (c) 2000 Gossamer Threads Inc. All Rights Reserved.
+ * Redistribution in part or in whole strictly prohibited. Please
+ * see About file for full details.
+ * =================================================================
+ *
+ * Description: Style sheet for the main editor window.
+ */
+
+body {
+        scrollbar-base-color: #404040;
+        scrollbar-arrow-color: #00ff33;
+}
+
+.compose {
+       position      : absolute;
+       border-bottom : buttonface solid 1px;
+       border-left   : buttonface solid 1px; 
+       border-right  : buttonface solid 1px; 
+       border-top    : buttonface solid 1px;
+       visibility    : hidden;
+       left          : 0;
+       top           : 0;
+}
+
+.tb_icon {
+       position : absolute;
+       width    : 22;
+       height   : 22;
+       left     : -1;
+       top      : -1;
+}
+
+.icon_down {
+       position : absolute;
+       left     : 0px;
+       top      : 0px;
+       height   : 23px; 
+       width    : 24px;
+}
+
+.icon_downpressed {
+       position : absolute;
+       left     : 1px;
+       top      : 1px;
+}
+
+.tb_menu_item {
+       position      : absolute;
+       border-bottom : <%editor_base_color%> solid 1px; 
+       border-left   : <%editor_base_color%> solid 1px; 
+       border-right  : <%editor_base_color%> solid 1px; 
+       border-top    : <%editor_base_color%> solid 1px; 
+       top           : 1px;
+       height        : 22; 
+       width         : 23;
+}
+
+.menu_item_mouseoverup {
+       position      : absolute;
+       border-bottom : buttonshadow solid 1px; 
+       border-left   : buttonhighlight solid 1px; 
+       border-right  : buttonshadow solid 1px; 
+       border-top    : buttonhighlight solid 1px; 
+       top           : 1px;
+       height        : 22px; 
+       width         : 23px;
+}
+
+.menu_item_mouseoverdown {
+       position      : absolute;
+       border-bottom : buttonhighlight solid 1px; 
+       border-left   : buttonshadow solid 1px; 
+       border-right  : buttonhighlight solid 1px; 
+       border-top    : buttonshadow solid 1px; 
+       top           : 1px;
+       height        : 22px; 
+       width         : 23px;
+}
+
+.menu_item_down {
+       position         : absolute;
+       background-color : gainsboro; 
+       border-bottom    : buttonhighlight solid 1px; 
+       border-left      : buttonshadow solid 1px; 
+       border-right     : buttonhighlight solid 1px; 
+       border-top       : buttonshadow solid 1px; 
+       top              : 1px;
+       height           : 22px; 
+       width            : 23px;
+}
+
+.tb_sep {
+       position     : absolute; 
+       border-left  : buttonshadow solid 1px; 
+       border-right : buttonhighlight solid 1px; 
+       font-size    : 0px; 
+       top          : 1px;
+       height       : 22px; 
+       width        : 1px; 
+}
+
+.tb_general {
+       position         : absolute;
+       background-color : #C0C0C0;
+       height           : 22px; 
+       top              : 2;
+       font             : 8pt verdana,arial,sans-serif
+       border           : none;
+}
+
+.tb_text_mouseover {
+       background-color : #C0C0C0;
+       height           : 20px; 
+       top              : 2;
+       font-family      : "MS Sans Serif";
+       font-size        : 6pt;
+       border-bottom    : buttonhighlight solid 1px; 
+       border-left      : buttonshadow solid 1px; 
+       border-right     : buttonhighlight solid 1px; 
+       border-top       : buttonshadow solid 1px; 
+       height           : 17;
+}
+
+.tb_handle {
+       position         : absolute;
+       background-color : <%editor_base_color%>; 
+       border-left      : buttonhighlight solid 1px; 
+       border-right     : buttonshadow solid 1px;
+       border-top       : buttonhighlight solid 1px; 
+       font-size        : 1px;
+       top              : 1px; 
+       height           : 22px;
+       width            : 3px;
+}
+
+.toolbar {
+       position         : relative;
+       background-color : <%editor_base_color%>; 
+       border-bottom    : buttonshadow solid 1px; 
+       border-left      : buttonhighlight solid 1px; 
+       border-right     : buttonshadow solid 1px; 
+       border-top       : buttonhighlight solid 1px; 
+       visibility       : hidden;
+       height           : 25px;
+       top              : 0;
+       left             : 0;
+}
+
+.toolbar_hidden {
+       position   : absolute;
+       display    : none;
+       height     : 1px;
+       top        : 0;
+       left       : 0;
+}
+
+.context_menu {
+       position         : absolute;
+       display          : none;
+       visibility       : visible;
+       width            : 100;
+       background-Color : menu;
+       z-index          : 10
+       border           : outset 3px gray;
+}
+
+.menuItem {
+       font-family      : sans-serif;
+       background-Color : menu;
+       font-size        : 10pt;
+       width            : 100;
+       padding-left     : 20;
+       color            : black;
+}
+
+.highlightItem {
+       font-family      : sans-serif;
+       font-size        : 10pt;
+       width            : 100;
+       padding-left     : 20;
+       background-Color : highlight;
+       color            : white;
+}
Index: common/editor_toolbar.js
===================================================================
RCS file: common/editor_toolbar.js
diff -N common/editor_toolbar.js
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ common/editor_toolbar.js    17 Dec 2001 03:20:25 -0000      1.2
@@ -0,0 +1,470 @@
+/*
+ * =================================================================
+ * HTML Editor - A wysiwyg web based editor for IE5+
+ *    Website  : http://gossamer-threads.com/
+ *    Author   : Scott Beck sbeck@gossamer-threads.com
+ *    Revision : $Id: editor_toolbar.js,v 1.2 2001/12/17 03:20:25 sbeck Exp $
+ *
+ * Copyright (c) 2000 Gossamer Threads Inc. All Rights Reserved.
+ * Redistribution in part or in whole strictly prohibited. Please
+ * see About file for full details.
+ * =================================================================
+ *
+ * Description: Functions for the editor toolbars.
+ */
+
+function init_images () {
+/* ---------------------------------------------------------
+ * Preloads images and sets the URL for all the images on 
+ * the page. If you add other images be sure they are in
+ * the directory you set above.
+ * This sets the onload event for the images to be displayed.
+ */
+
+ // If we are initialized return
+       if (this.images_init) return true;
+       this.debug ("Initializing Images");
+       for (var i = 0; i < document.images.length; i++) {
+               image = document.images[i];
+
+// Images are hidden untill the toolbar is loaded
+               image.style.visibility = 'hidden';
+
+// Do not load images of toolbars that are deleted
+               var pb = image.parentElement.title;
+               var tb = image.parentElement.parentElement.title;
+               if (this.tb_delete[tb] || this.tb_delete[pb]) {
+                       IMAGES_LEN++;
+                       continue;
+               }
+
+// Set the image source
+               var old_src = image.src;
+               image.src = old_src;
+       }
+       this.images_init = true;
+       return true;
+}
+Editor.prototype.init_images = init_images;
+
+function init_toolbar () {
+/* ---------------------------------------------------------
+ * Should be called after the document has loaded. 
+ * Initializes the Toolbar for display.
+ */
+// Toolbar handler
+
+       if (this.toolbar_init) return true;
+       this.debug ("Initializing toolbar");
+       var i, s, element;
+       this.tb = {};
+       var tbs = document.body.all.tags ("DIV");
+       var tbs_len = tbs.length;
+
+// Go therough the document and get the toolbar classes
+       for (i=0; i < tbs_len; i++) {
+               element = tbs[i];
+
+// Store all the toolbar elements
+               this.tb[element.title] = element;
+
+// The toolbars are hidden till the images are loaded
+               element.TB_INDEX  = this.toolbars.length;
+
+// Skip deleted toolbars
+               if (this.tb_delete[element.title]) {
+                       element.className = 'toolbar_hidden';
+                       continue;
+               }
+
+// Initialize each toolbar
+               if (!this.tb_init (element)) {
+                       this.error ("Could not initialize toolbar:", element.title);
+               }
+
+// Set progmaticaly hidden toolbars to hidden
+               if (this.tb_hide[element.title]) {
+                       element.className = 'toolbar_hidden';
+               }
+
+// Keep all the toolbars for resizing and hidding
+               this.debug ("Adding toolbar", element.title);
+               this.toolbars[this.toolbars.length] = element;
+       }
+
+       this.tb_layout();
+
+// If the window is resized we need to re-layout the 
+// toolbar.
+       window.onresize = function () { This.tb_layout() };
+       this.toolbar_init = true;
+}
+Editor.prototype.init_toolbar = init_toolbar;
+
+
+function tb_init_button (element) {
+/* ---------------------------------------------------------
+ * Sets op all the defaults for a button DIV. Saves any 
+ * onclick and detaches the event. OnClick events are called
+ * onMouseDown.
+ */
+       if (element.className == "tb_general") return true;
+
+// Set events
+       element.onmouseover   = function () { This.tb_mouseover () }
+       element.onmouseout    = function () { This.tb_mouseout  () }
+       element.onmousedown   = function () { This.tb_mousedown () }
+       element.onmouseup     = function () { This.tb_mouseup   () }
+
+// Disable events
+       element.ondragstart   = function () { This.cancel_event () };
+       element.onselectstart = function () { This.cancel_event () };
+       element.onselect      = function () { This.cancel_event () };
+
+// Save onClick event for onMouseDown
+       element.YUSERONCLICK  = element.onclick;
+       element.onclick       = function () { This.cancel_event () };
+
+// Initial state is enabled
+       element.state = 'enabled';
+
+// If it is a toggle set the initial state.
+       if (element.TB_TYPE == 'toggle') element.tb_state = 'off';
+
+// So we don't re-initialize
+       element.INITIALIZED  = true;
+
+       return true;
+}
+Editor.prototype.tb_init_button = tb_init_button;
+
+function tb_init (element) {
+/* ---------------------------------------------------------
+ * Called for each toolbar DIV. Populates the toolbar and 
+ * sets the width.
+ */
+       element.TBWidth = 0;
+       if (! this.tb_populate (element)) return false;
+       element.style.posWidth = element.TBWidth;
+       return true;
+}
+Editor.prototype.tb_init = tb_init;
+
+function tb_show (menu) {
+/* ---------------------------------------------------------
+ * Shows or hiddes a toolbar. The element passed in is the 
+ * toolbar object to toggle.
+ */
+       var title = menu.title;
+       if (!this.tb[title]) return;
+       if (menu.className == 'toolbar_hidden') {
+               menu.className        = 'toolbar';
+               menu.style.visibility = 'visible';
+       }
+       else {
+               menu.className        = 'toolbar_hidden';
+               menu.style.visibility = 'hidden';
+       }
+       this.tb_layout();
+       return this.cancel_event();
+}
+Editor.prototype.tb_show = tb_show;
+
+function tb_populate (y) {
+/* ---------------------------------------------------------
+ * Moves all a toolbar "y"'s icons to the proper location on
+ * the screen and sets the correct size for the toolbars.
+ */
+       var i, elements, element;
+
+       this.debug ("tb_populate called for", y.title);
+
+       elements = y.children;
+       if (!elements) return;
+
+// Loop through all the toolbars children.
+       for (i=0; i < elements.length; i++) {
+               element = elements[i];
+               if (element.tagName == "SCRIPT" || element.tagName == "!") continue;
+
+// Switch to see what element we are workin with.
+               switch (element.className) {
+
+// Menu Item then initialize it if it is not initialized.
+                       case "tb_menu_item":
+                               if (element.INITIALIZED == null) {
+                                       if (! this.tb_init_button (element)) return this.error ("Problem initializing:", element.title);
+                               }
+                               element.style.posLeft = y.TBWidth;
+                               y.TBWidth += element.offsetWidth + 1;
+                               break;
+
+// Toolbar element that is not a button
+// most likly a form field.
+                       case "tb_general":
+                       case "tb_menu_text":
+                               element.style.posLeft = y.TBWidth;
+                               y.TBWidth += element.offsetWidth + 5;
+                               break;
+
+// Seperator
+                       case "tb_sep":
+                               element.style.posLeft = y.TBWidth + 2;
+                               y.TBWidth += 5;
+                               break;
+
+// Handle for the toolbar, would be cool if people 
+// could move the toolbar. Next version :)
+                       case "tb_handle":
+                               element.style.posLeft = 2;
+                               y.TBWidth += element.offsetWidth + 7;
+                               break;
+
+// Should never get here unless the html is messed
+                       default:
+                               return this.error ("Invalid class:", element.className,"on Element:", element.id, "<", element.tagName, "> title: <", element.title, ">");
+               }
+       }
+
+// Plus one in case the width is zero
+       y.TBWidth += 1;
+       this.debug ("Toolbar width set to", y.TBWidth);
+       return true;
+}
+Editor.prototype.tb_populate = tb_populate;
+
+function tb_layout () {
+/* ---------------------------------------------------------
+ * Layouts the toolbar on the screen based on the screen
+ * width and the widths built in tb_populate().
+ */
+       this.debug ("Layout called.");
+
+       var num_tb = this.toolbars.length;
+
+// No toolbars
+       if (num_tb == 0) { this.debug ("Ack, no toolbars"); return }
+       var i;
+
+// Get the screen width minus the width of the scrollbar
+       var sbar = document.body.offsetWidth - document.body.clientWidth;
+       var ScrWid = (document.body.offsetWidth  - sbar);
+       var ScrHit = (document.body.offsetHeight - sbar);
+
+// Go through the toolbars and find the width of the widest
+// one.
+       var TotalLen = ScrWid;
+       var tb = [];
+       var e = 0;
+       for (i = 0; i < num_tb; i++) {
+               if (this.toolbars[i].className == 'toolbar_hidden') continue;
+               tb[e] = this.toolbars[i];
+               if (tb[e].TBWidth > TotalLen) TotalLen = tb[e].TBWidth;
+               e++;
+       }
+       e--;
+       if (!tb.length) { return; }
+       var PrevTB;
+       var LastStart = 0;
+       var RelTop = 0;
+       var LastWid, CurrWid;
+
+// Position the top toolbar to the top of the screen
+       var TB           = tb[0];
+       TB.style.posTop  = 0;
+       TB.style.posLeft = 0;
+       var rows         = 1;
+
+// Go through the toolbars and update there width
+// and position.
+       var Start = TB.TBWidth;
+       for (i = 1; i < tb.length; i++) {
+               PrevTB = TB;
+               TB = tb[i];
+               CurrWid = TB.TBWidth;
+
+// Reached the end of the screen, reset to the start
+               if ((Start + CurrWid) > ScrWid) { 
+                       Start = 0;
+                       rows++;
+                       LastWid = TotalLen - LastStart;
+               }
+               else {
+                       LastWid = PrevTB.TBWidth;
+                       RelTop -= TB.offsetHeight;
+               }
+         
+               TB.style.posTop = RelTop;
+               TB.style.posLeft = Start;
+               PrevTB.style.width = LastWid;
+
+               LastStart = Start;
+               Start    += CurrWid;
+
+       }
+       DHTMLSafe.style.posTop     = (rows * 25);
+       DHTMLSafe.style.posHeight  = ScrHit - (rows * 25) - 5;
+       DHTMLSafe.style.posWidth   = ScrWid - 5;
+       DHTMLSafe.style.visibility = 'visible';
+
+// Set the total width
+       TB.style.width = TotalLen - LastStart;
+
+// Move the rest of the toolbars down
+       i--;
+       TB = tb[i];
+       var TBInd = TB.sourceIndex;
+       var A = TB.document.all;
+       for (var i in A) {
+               var item = A.item(i);
+               if (! item)                    continue;
+               if (! item.style)              continue;
+               if (item.sourceIndex <= TBInd) continue;
+               if (! this.tb[item.title])     continue;
+               if (item.className == 'toolbar_hidden')  continue;
+               item.style.posTop = RelTop;
+       }
+}
+Editor.prototype.tb_layout = tb_layout;
+
+function tb_mouseover () {
+/* ---------------------------------------------------------
+ * OnMouseOver event handler function for toolbar buttons.
+ */
+ // Source must be an image
+       if (event.srcElement.tagName != "IMG")  return this.cancel_event();
+       var image   = event.srcElement;
+       var element = image.parentElement;
+
+// If we are in text mode and the button is disables for 
+// text mode. cancel the mouseover.
+       if (element.state == 'disabled') return this.cancel_event();
+
+// If the image in normal state put it in mouseover state
+       if (image.className == "tb_icon") { 
+               element.className = "menu_item_mouseoverup";
+       }
+
+// else if it is in down state put it in mouseover
+// for down states.
+       else if (image.className == "icon_down") {
+               element.className = "menu_item_mouseoverdown";
+       }
+
+       return this.cancel_event();
+}
+Editor.prototype.tb_mouseover = tb_mouseover;
+
+function tb_mouseout () {
+/* ---------------------------------------------------------
+ * MouseOut event handler function for toolbar buttons
+ */
+ // The source tag must be an image.
+//     this.debug ("MouseOut event caught for", event.srcElement.title);
+       if (event.srcElement.tagName != "IMG") {
+//             this.debug ("Source is not an image");
+               return this.cancel_event();
+       }
+       var image   = event.srcElement;
+       var element = image.parentElement;
+
+// IF we are in "text mode" disable mouseout and return
+       if (element.state == 'disabled') {
+//             this.debug ("Source is disabled");
+               return this.cancel_event();
+       }
+
+// If the button is a toggle update it's state.
+       if (element.TB_TYPE == 'toggle' && element.tb_state != 'off') {
+               element.className = "menu_item_mouseoverdown"
+               image.className   = 'icon_down';
+       }
+
+// else put the image back to it's normal state.
+       else {
+               element.className  = "tb_menu_item";
+               image.className    = "tb_icon";
+       }
+
+       return this.cancel_event();
+}
+Editor.prototype.tb_mouseout = tb_mouseout;
+
+function tb_mousedown () {
+/* ---------------------------------------------------------
+ * MouseDown event handler for toolbar buttons.
+ */
+
+       this.debug ("MouseDown event caught for", event.srcElement.title);
+ // The source tag must be an image.
+       if (event.srcElement.tagName != "IMG") { 
+               this.debug ("Source was not an image"); 
+               return this.cancel_event();
+       }
+       var image   = event.srcElement;
+       var element = image.parentElement;
+
+// If we are in "text mode" and the button is not supported in
+// "text mode" cancel the event and return false.
+       if (element.state == 'disabled') { 
+               this.debug (element.title, "disabled"); 
+               return this.cancel_event();
+       }
+
+// If the button is a toggle update it's state.
+
+       if (element.TB_TYPE == 'toggle') {
+               this.debug (element.title, "is toggle. Updating toggle");
+               this.update_toggle (element, image);
+       }
+       else {
+
+// Else set the button to the mosedown state.
+               element.className = "menu_item_mouseoverdown";
+               image.className   = "icon_down";
+       }
+
+// We disabled the click function and saved it in this.
+// Eval it here and run it.
+       this.debug ("Calling code", element.YUSERONCLICK);
+       if (element.YUSERONCLICK) eval(element.YUSERONCLICK + "anonymous()");
+       return this.cancel_event();
+}
+Editor.prototype.tb_mousedown = tb_mousedown;
+
+function tb_mouseup () {
+/* ---------------------------------------------------------
+ * MouseUp event handler function for toolbar buttons.
+ */
+ // The source element must be an image type.
+//     this.debug ("Caught mouseup event for", event.srcElement.title);
+       if (event.srcElement.tagName != "IMG") {
+//             this.debug ("Source is not an image");
+               return this.cancel_event();
+       }
+       var image   = event.srcElement;
+       var element = image.parentElement;
+
+// If we are in "text mode" and the field is disabled in that
+// mode return and cancel the event.
+       if (element.state == 'disabled') {
+//             this.debug ("State is disabled");
+               return this.cancel_event();
+       }
+
+// It the icons to the mouseUp state.
+       element.className = "menu_item_mouseoverup";
+       image.className   = "tb_icon";
+
+// Refocus the compose window here.
+       DHTMLSafe.focus();
+
+       return this.cancel_event();
+
+}
+Editor.prototype.tb_mouseup = tb_mouseup;
+
+/* Help VIM out
+vim:ts=4:shiftwidth=4:syntax=javascript
+*/
+
Index: common/globals.txt
===================================================================
RCS file: common/globals.txt
diff -N common/globals.txt
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ common/globals.txt  16 Dec 2001 21:30:23 -0000      1.1
@@ -0,0 +1,7 @@
+# This file is auto generated and contains a perl hash of
+# your template globals for 'default' template set.
+# Generated on: Sun Dec 16 13:25:10 2001
+# vim: syn=perl
+{
+       'editor_base_color' => '#E6F5D7'
+}