You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by sn...@apache.org on 2005/10/21 23:46:28 UTC

svn commit: r327589 [61/72] - in /incubator/roller/branches/roller_1.x: ./ contrib/ contrib/lib/ contrib/plugins/ contrib/plugins/src/ contrib/plugins/src/org/ contrib/plugins/src/org/roller/ contrib/plugins/src/org/roller/presentation/ contrib/plugins...

Added: incubator/roller/branches/roller_1.x/web/WEB-INF/jspwiki.properties
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/WEB-INF/jspwiki.properties?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/web/WEB-INF/jspwiki.properties (added)
+++ incubator/roller/branches/roller_1.x/web/WEB-INF/jspwiki.properties Fri Oct 21 14:27:36 2005
@@ -0,0 +1,37 @@
+
+# set this to point to your JSPWiki instance
+jspwiki.baseURL=http://www.rollerweblogger.org/wiki/
+
+# these are needed to run JSPWiki embedded inside Roller, no need to change them!
+jspwiki.pageProvider =org.roller.presentation.velocity.plugins.jspwiki.RollerPageProvider
+jspwiki.basicAttachmentProvider.storageDir = .
+jspwiki.fileSystemProvider.pageDir = .
+
+# these are just preferences, set them as you wish
+jspwiki.translatorReader.inlinePattern.1 = *.gif
+jspwiki.translatorReader.inlinePattern.2 = *.jpg
+jspwiki.translatorReader.inlinePattern.3 = *.png
+jspwiki.translatorReader.matchEnglishPlurals = true
+jspwiki.translatorReader.camelCaseLinks = true
+jspwiki.interWikiRef.JSPWiki = http://www.ecyrd.com/JSPWiki/Wiki.jsp?page=%s
+jspwiki.interWikiRef.Edit = Edit.jsp?page=%s
+jspwiki.interWikiRef.WikiWikiWeb = http://c2.com/cgi/wiki?%s
+jspwiki.interWikiRef.TWiki = http://twiki.org/cgi-bin/view/TWiki/%s
+jspwiki.interWikiRef.MeatballWiki = http://usemod.com/cgi-bin/mb.pl?%s
+jspwiki.interWikiRef.Wikipedia = http://www.wikipedia.com/wiki/%s
+jspwiki.interWikiRef.Google = http://www.google.com/search?q=%s
+
+
+# which of these are needed or useful?
+#jspwiki.applicationName = wiki
+#jspwiki.usePageCache = false
+#jspwiki.attachmentProvider = BasicAttachmentProvider
+#jspwiki.translatorReader.allowHTML = false
+#jspwiki.breakTitleWithSpaces = false
+#jspwiki.templateDir = default
+#jspwiki.translatorReader.useOutlinkImage = true
+#jspwiki.lockExpiryTime = 60
+#jspwiki.specialPage.FindPage = Search.jsp
+#jspwiki.specialPage.UserPreferences = UserPreferences.jsp
+#jspwiki.plugin.searchPath =
+

Added: incubator/roller/branches/roller_1.x/web/WEB-INF/roller-config.xml
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/WEB-INF/roller-config.xml?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/web/WEB-INF/roller-config.xml (added)
+++ incubator/roller/branches/roller_1.x/web/WEB-INF/roller-config.xml Fri Oct 21 14:27:36 2005
@@ -0,0 +1,47 @@
+<!-- Initial values for the rollerconfig database table -->
+<RollerConfig>
+    <rssUsePort>false</rssUsePort>
+    <rssUseCache>true</rssUseCache>
+    <rssCacheTime>14400</rssCacheTime>  <!-- 4 hours (in seconds) -->
+    <newUserAllowed>true</newUserAllowed>
+    <adminUsers>
+        <adminUsers></adminUsers>
+    </adminUsers>
+    <indexDir>${user.home}/roller-index</indexDir>
+    <newUserData>/templates</newUserData>
+    <newUserThemes>/themes</newUserThemes>
+    <editorPages>
+        <editorPages>editor-ekit.jsp</editorPages>
+        <editorPages>editor-text.jsp</editorPages>
+        <editorPages>editor-dhtml.jsp</editorPages>
+        <editorPages>editor-text-js.jsp</editorPages>
+        <editorPages>editor-wiki-js.jsp</editorPages>
+        <editorPages>editor-rte.jsp</editorPages>
+    </editorPages>
+    <enableAggregator>true</enableAggregator>
+    <uploadEnabled>true</uploadEnabled>
+    <uploadMaxDirMB>4.00</uploadMaxDirMB>
+    <uploadMaxFileMB>1.00</uploadMaxFileMB>
+    <!-- forbid and allow are mutually exclusive,
+         only set one of the two -->
+    <uploadAllow>
+        <uploadAllow>jpg</uploadAllow>
+        <uploadAllow>jpeg</uploadAllow>
+        <uploadAllow>gif</uploadAllow>
+        <uploadAllow>png</uploadAllow>
+    </uploadAllow>
+    <uploadForbid>
+    </uploadForbid>
+    <!-- the location of the directory where files
+         will be stored, may end with a slash -->
+    <uploadDir></uploadDir>
+    <!-- the path where the webserver will serve from,
+         should not end with a slash -->
+    <uploadPath>/resources</uploadPath>
+    <memDebug>false</memDebug>
+    <autoformatComments>true</autoformatComments>
+    <escapeCommentHtml>false</escapeCommentHtml>
+    <emailComments>false</emailComments>
+    <encryptPasswords>true</encryptPasswords>
+    <algorithm>SHA</algorithm>
+</RollerConfig>

Added: incubator/roller/branches/roller_1.x/web/WEB-INF/toolbox.xml
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/WEB-INF/toolbox.xml?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/web/WEB-INF/toolbox.xml (added)
+++ incubator/roller/branches/roller_1.x/web/WEB-INF/toolbox.xml Fri Oct 21 14:27:36 2005
@@ -0,0 +1,70 @@
+<?xml version="1.0"?>
+<!--
+  Copyright 2003-2004 The Apache Software Foundation.
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+  $Id: toolbox.xml,v 1.1 2004/05/11 17:18:49 baudrate Exp $
+-->
+<toolbox>
+
+  <tool>
+     <key>math</key>
+     <scope>application</scope>
+     <class>org.apache.velocity.tools.generic.MathTool</class>
+  </tool>
+
+  <tool>
+     <key>link</key>
+     <class>org.apache.velocity.tools.struts.StrutsLinkTool</class>
+  </tool>
+
+  <!-- ordinarily the SecureLinkTool would simply replace the StrutsLinkTool
+  	if SSL Ext. is in use - in that case the key would be 'link' but it's
+        'slink' here to distinguish between the two. -->
+  <tool>
+     <key>slink</key>
+     <class>org.apache.velocity.tools.struts.SecureLinkTool</class>
+  </tool>
+
+  <tool>
+     <key>text</key>
+     <class>org.apache.velocity.tools.struts.MessageTool</class>
+  </tool>
+
+  <tool>
+     <key>errors</key>
+     <class>org.apache.velocity.tools.struts.ErrorsTool</class>
+  </tool>
+
+  <tool>
+     <key>messages</key>
+     <class>org.apache.velocity.tools.struts.ActionMessagesTool</class>
+  </tool>
+
+  <tool>
+     <key>form</key>
+     <class>org.apache.velocity.tools.struts.FormTool</class>
+  </tool>
+
+  <tool>
+     <key>tiles</key>
+     <class>org.apache.velocity.tools.struts.TilesTool</class>
+  </tool>
+
+  <tool>
+     <key>validator</key>
+     <class>org.apache.velocity.tools.struts.ValidatorTool</class>
+  </tool>
+
+</toolbox>

Added: incubator/roller/branches/roller_1.x/web/WEB-INF/velocity.properties
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/WEB-INF/velocity.properties?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/web/WEB-INF/velocity.properties (added)
+++ incubator/roller/branches/roller_1.x/web/WEB-INF/velocity.properties Fri Oct 21 14:27:36 2005
@@ -0,0 +1,55 @@
+# specify resource loaders to use
+resource.loader = webapp, theme, roller, class
+
+# theme resource loader
+theme.resource.loader.public.name=theme
+theme.resource.loader.description=Roller Theme Resource Loader
+theme.resource.loader.class=org.roller.presentation.velocity.ThemeResourceLoader
+theme.resource.loader.cache=false
+theme.resource.loader.modificationCheckInterval=2
+
+# for the loader we call 'roller', use the RollerResourceLoader
+roller.resource.loader.public.name=roller
+roller.resource.loader.description=Roller Main Resource Loader
+roller.resource.loader.class=org.roller.presentation.velocity.RollerResourceLoader
+roller.resource.loader.cache=false
+roller.resource.loader.modificationCheckInterval=2
+
+# for the loader we call 'class', use the ClasspathResourceLoader
+class.resource.loader.description = Velocity Classpath Resource Loader
+class.resource.loader.class = org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
+class.resource.loader.cache=true
+class.resource.loader.modificationCheckInterval=60
+
+# for the loader we call 'webapp', use the WebappResourceLoader
+webapp.resource.loader.description = Roller Webapp Resource Loader
+webapp.resource.loader.class = org.roller.presentation.velocity.WebappResourceLoader
+webapp.resource.loader.cache=true
+webapp.resource.loader.modificationCheckInterval=60
+
+# log invalid template references?
+# set this to false to have a quieter velocity.log
+runtime.log.invalid.reference=false
+
+# tell Velocity to use Log4J
+runtime.log.logsystem.class=org.apache.velocity.runtime.log.SimpleLog4JLogSystem
+runtime.log.logsystem.log4j.category=org.apache.velocity
+
+# Override the default global library, set to blank to load no default
+velocimacro.library = roller.vm,bookmark.vm,comments.vm,navbar.vm,newsfeed.vm,referer.vm,rssmacros.vm,user.vm,weblog.vm,website.vm
+
+# Change to false for deployment environments.
+# Caching for the 'class' & 'webapp' ResourceLoaders must be false for this to work
+velocimacro.library.autoreload=true
+
+# Allow Velocimacros to be defined in regular templates
+velocimacro.permissions.allow.inline=true
+
+# I *think* this will allow users to override macros
+# for themselves, but not everyone...
+velocimacro.permissions.allow.inline.local.scope=true
+
+# set encoding/charset to UTF-8
+input.encoding=UTF-8
+output.encoding=UTF-8
+default.contentType=text/html; charset=utf-8
\ No newline at end of file

Added: incubator/roller/branches/roller_1.x/web/bookmarks/BookmarkForm.jsp
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/bookmarks/BookmarkForm.jsp?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/web/bookmarks/BookmarkForm.jsp (added)
+++ incubator/roller/branches/roller_1.x/web/bookmarks/BookmarkForm.jsp Fri Oct 21 14:27:36 2005
@@ -0,0 +1,82 @@
+<%@ include file="/taglibs.jsp" %><%@ include file="/theme/header.jsp" %>
+
+<h3>
+<img src='<c:url value="/images/Bookmark24.png"/>' alt="bookmark" align="absmiddle" />
+<c:if test="${state == 'add'}">
+    <fmt:message key="bookmarkForm.addBookmark" />
+</c:if>
+<c:if test="${state == 'edit'}">
+    <fmt:message key="bookmarkForm.editBookmark" />
+</c:if>
+<c:if test="${state == 'correct'}">
+    <fmt:message key="bookmarkForm.correctBookmark" />
+</c:if>
+</h3>
+
+<p>
+<b><fmt:message key="bookmarksForm.path" /></b>:
+<c:if test="${!empty parentFolder.parent.path}">
+    <c:out value="${parentFolder.parent.path}" />
+</c:if>
+<c:if test="${empty parentFolder.parent.path}">
+    /
+</c:if>
+</p>
+
+<html:form action="/editor/bookmarkSave" method="post" focus="name">
+
+    <html:hidden property="method" value="update"/></input>
+    <html:hidden property="id" /></input>
+
+    <input type="hidden" name="<%= RollerRequest.FOLDERID_KEY %>" 
+        value="<%= request.getAttribute(RollerRequest.FOLDERID_KEY) %>" />
+						   
+    <table>
+    							 
+	<tr>
+	    <td><fmt:message key="bookmarkForm.name" /></td>
+	    <td><html:text property="name" maxlength="255" size="70" /></input></td>
+    </tr>
+
+	<tr>
+	    <td><fmt:message key="bookmarkForm.description" /></td>
+	    <td><html:textarea property="description" rows="5" cols="50" /></td>
+    </tr>
+
+	<tr>
+	    <td><fmt:message key="bookmarkForm.url" /></td>                
+	    <td><html:text property="url" maxlength="255" size="70" /></input></td>
+    </tr>
+						  
+	<tr>
+	    <td><fmt:message key="bookmarkForm.rssUrl" /></td>         
+	    <td><html:text property="feedUrl" maxlength="255" size="70" /></input></td>
+    </tr>
+							
+	<tr>
+	    <td><fmt:message key="bookmarkForm.image" /></td>          
+	    <td><html:text property="image" maxlength="255" size="70" /></input></td>
+    </tr>
+
+	<tr>
+	    <td><fmt:message key="bookmarkForm.priority" /></td>         
+	    <td><html:text property="priority" maxlength="255" size="5" /></input></td>
+    </tr>
+
+	<tr>
+        <td><fmt:message key="bookmarkForm.weight" /></td>          
+	    <td><html:text property="weight" maxlength="255" size="5" /></input></td>
+    </tr>
+							
+    </table>
+
+    <p>
+    <input type="submit" value="<fmt:message key='bookmarkForm.save'/>" />
+    <input type="button" value="<fmt:message key='bookmarkForm.cancel' />" 
+        onclick="window.location = 'bookmarks.do?method=selectFolder&amp;folderid=<%=
+        request.getAttribute(RollerRequest.FOLDERID_KEY) %>'" />
+    </p>
+
+</html:form>
+
+<%@ include file="/theme/footer.jsp" %>
\ No newline at end of file

Added: incubator/roller/branches/roller_1.x/web/bookmarks/BookmarksForm.jsp
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/bookmarks/BookmarksForm.jsp?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/web/bookmarks/BookmarksForm.jsp (added)
+++ incubator/roller/branches/roller_1.x/web/bookmarks/BookmarksForm.jsp Fri Oct 21 14:27:36 2005
@@ -0,0 +1,223 @@
+<%@ include file="/taglibs.jsp" %><%@ include file="/theme/header.jsp" %>
+
+<%-- JavaScript for bookmarks table --%> 
+<script type="text/javascript">
+<!-- 
+function setChecked(val) 
+{
+    len = document.bookmarksForm.elements.length;
+    var i=0;
+    for( i=0 ; i<len ; i++) 
+    {
+        document.bookmarksForm.elements[i].checked=val;
+    }
+}
+function onDelete() 
+{
+    if ( confirm("Delete selected bookmarks?") ) 
+    {
+        document.bookmarksForm.method.value = "deleteSelected";
+        document.bookmarksForm.submit();
+    }
+ }
+function onMove() 
+{
+    if ( confirm("Move selected bookmarks?") ) 
+    {
+        document.bookmarksForm.method.value = "moveSelected";
+        document.bookmarksForm.submit();
+    }
+}
+//-->
+</script>
+
+<h1>
+    <fmt:message key="bookmarksForm.folder" />:&nbsp;
+    <c:if test="${empty folder}">
+        <fmt:message key="bookmarksForm.root" />
+    </c:if>
+    <c:if test="${!(empty folder)}">
+        <c:out value="${folder.name}" />
+    </c:if>
+</h1>
+
+<%-- Folder path --%>
+
+<p>
+<b><fmt:message key="bookmarksForm.path" /></b>:
+
+<c:if test="${empty folderPath}">
+   /
+   <roller:link page="/editor/bookmarks.do">
+       <roller:linkparam id="method" value="selectFolder" />
+       <fmt:message key="bookmarksForm.root" />
+   </roller:link>
+</c:if>
+
+<c:if test="${!(empty folderPath)}">
+    <c:forEach var="folder" items="${folderPath}">
+        /
+        <roller:link page="/editor/bookmarks.do">
+            <roller:linkparam id="method" value="selectFolder" />
+            <roller:linkparam 
+                id="<%= RollerRequest.FOLDERID_KEY %>" 
+                name="folder" property="id" />
+            <c:out value="${folder.name}" />
+        </roller:link>
+    </c:forEach>
+    <br />
+</c:if>
+</p>
+
+<%-- Form is a table of folders followed by bookmarks, each with checkbox --%>
+
+<html:form action="/editor/bookmarks" method="post">
+<input type="hidden" name="method" /> 
+<html:hidden property="folderId" /> 
+
+<p>
+<%-- Add Bookmark link --%>
+<img src='<c:url value="/images/BookmarkNew16.png"/>' border="0"alt="icon" />
+<roller:link page="/editor/bookmarkEdit.do">
+    <roller:linkparam id="<%= RollerRequest.FOLDERID_KEY %>"
+        name="folder" property="id" />
+    <fmt:message key="bookmarksForm.addBookmark" />
+</roller:link>
+
+&nbsp;|&nbsp;
+
+<%-- Add Folder link --%>
+<img src='<c:url value="/images/FolderNew16.png"/>' border="0"alt="icon" />
+<roller:link page="/editor/folderEdit.do">
+    <roller:linkparam id="<%= RollerRequest.PARENTID_KEY %>"
+         name="folder" property="id" />
+    <fmt:message key="bookmarksForm.addFolder" />
+</roller:link>
+</p>
+
+<p>
+<%-- Select-all button --%>
+<input type="button" value="<fmt:message key='bookmarksForm.checkAll' />" 
+   onclick="setChecked(1)" /></input>
+
+<%-- Select-none button --%>
+<input type="button" value="<fmt:message key='bookmarksForm.checkNone' />" 
+   onclick="setChecked(0)" /></input>
+
+<%-- Delete-selected button --%>
+<input type="button" value="<fmt:message key='bookmarksForm.delete' />" 
+   onclick="onDelete()"/></input>
+</td>
+</p>
+
+<table class="rollertable">
+
+    <tr class="rHeaderTr">
+        <th class="rollertable" width="5%">&nbsp;</th>
+        <th class="rollertable" width="5%">&nbsp;</th>
+        <th class="rollertable" width="30%"><fmt:message key="bookmarksForm.name" /></th>
+        <th class="rollertable" width="50%"><fmt:message key="bookmarksForm.description" /></th>
+        <th class="rollertable" width="5%"><fmt:message key="bookmarksForm.edit" /></th>
+        <th class="rollertable" width="5%"><fmt:message key="bookmarksForm.visitLink" /></th>
+    </tr>
+
+    <%-- Folders --%>
+    <c:forEach var="folder" items="${folders}" >
+        <roller:row oddStyleClass="rollertable_odd" evenStyleClass="rollertable_even">
+
+            <td class="rollertable">
+                <html:multibox property="selectedFolders">
+                    <c:out value="${folder.id}" />
+                </html:multibox>
+            </td>
+
+
+            <td class="rollertable" align="center"><img src='<c:url value="/images/Folder16.png"/>' alt="icon" /></td>
+            
+            <td class="rollertable">
+               <roller:link page="/editor/bookmarks.do">
+                   <roller:linkparam id="method" value="selectFolder" />
+                   <roller:linkparam 
+                       id="<%= RollerRequest.FOLDERID_KEY %>" 
+                       name="folder" property="id" />
+                   <str:truncateNicely lower="15" upper="20" ><c:out value="${folder.name}" /></str:truncateNicely>
+               </roller:link>
+            </td>
+
+            <td class="rollertable">
+                <str:truncateNicely lower="30" upper="35" ><c:out value="${folder.description}" /></str:truncateNicely>
+            </td>
+
+            <td class="rollertable" align="center">
+               <roller:link page="/editor/folderEdit.do">
+                   <roller:linkparam 
+                       id="<%= RollerRequest.FOLDERID_KEY %>" 
+                       name="folder" property="id" />
+                   <img src='<c:url value="/images/Edit16.png"/>' border="0" alt="icon" />
+               </roller:link>
+            </td>
+
+            <td class="rollertable">&nbsp;</td>
+
+        </roller:row>
+    </c:forEach>
+
+    <%-- Bookmarks --%>
+    <c:forEach var="bookmark" items="${bookmarks}" >
+        <roller:row oddStyleClass="rollertable_odd" evenStyleClass="rollertable_even">
+
+            <td class="rollertable">
+                <html:multibox property="selectedBookmarks">
+                    <c:out value="${bookmark.id}" />
+                </html:multibox>
+            </td>
+
+            <td class="rollertable" align="center"><img src='<c:url value="/images/Bookmark16.png"/>' alt="icon" /></td>
+            
+            <td class="rollertable">
+                <str:truncateNicely lower="15" upper="20" ><c:out value="${bookmark.name}" /></str:truncateNicely>
+            </td>
+
+            <td class="rollertable">
+                <str:truncateNicely lower="30" upper="35" ><c:out value="${bookmark.description}" /></str:truncateNicely>
+            </td>
+
+            <td class="rollertable" align="center">
+               <roller:link page="/editor/bookmarkEdit.do">
+                   <roller:linkparam 
+                       id="<%= RollerRequest.BOOKMARKID_KEY %>" 
+                       name="bookmark" property="id" />                   
+                   <img src='<c:url value="/images/Edit16.png"/>' border="0" alt="icon" 
+                       title="<fmt:message key='bookmarksForm.edit.tip' />" />
+               </roller:link>
+            </td>
+
+            <td class="rollertable" align="center">
+                <c:if test="${!empty bookmark.url}" >
+                   <a href="<c:out value='${bookmark.url}'/>">
+                       <img src='<c:url value="/images/WebVisit16.png"/>' border="0" alt="icon" 
+                           title="<fmt:message key='bookmarksForm.visitLink.tip' />" />
+                   </a>
+                </c:if>
+            </td>
+
+        </roller:row>
+    </c:forEach>
+
+</table>
+
+<p>
+<%-- Move-selected button --%>
+<input type="button" value="<fmt:message key='bookmarksForm.move' />"   
+   onclick="onMove()"/></input>
+
+<%-- Move-to combo-box --%>
+<html:select property="moveToFolderId" size="1">
+    <html:options collection="allFolders" 
+        property="id" labelProperty="path"/>
+</html:select>
+</p>
+
+</html:form>
+
+<%@ include file="/theme/footer.jsp" %>
\ No newline at end of file

Added: incubator/roller/branches/roller_1.x/web/bookmarks/FolderForm.jsp
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/bookmarks/FolderForm.jsp?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/web/bookmarks/FolderForm.jsp (added)
+++ incubator/roller/branches/roller_1.x/web/bookmarks/FolderForm.jsp Fri Oct 21 14:27:36 2005
@@ -0,0 +1,56 @@
+<%@ include file="/taglibs.jsp" %><%@ include file="/theme/header.jsp" %>
+
+<h3>
+<img src='<c:url value="/images/Folder24.png" />' alt="folder" align="absmiddle" />
+<c:if test="${state == 'add'}">
+    <fmt:message key="folderForm.addFolder" /></h3>
+</c:if>
+<c:if test="${state == 'edit'}">
+    <fmt:message key="folderForm.editFolder" />
+</c:if>
+<c:if test="${state == 'correct'}">
+    <fmt:message key="folderForm.correctFolder" />
+</c:if>
+</h3>
+
+<p>
+<b><fmt:message key="bookmarksForm.path" /></b>:
+<c:if test="${!empty parentFolder.parent.path}">
+    <c:out value="${parentFolder.parent.path}" />
+</c:if>
+<c:if test="${empty parentFolder.parent.path}">
+    /
+</c:if>
+</p>
+
+<html:form action="/editor/folderSave" method="post" focus="name">
+
+    <html:hidden property="method" name="method" value="update"/>
+    <html:hidden property="id" />
+    
+    <input type="hidden" name="<%= RollerRequest.PARENTID_KEY %>" 
+    	value="<%= request.getAttribute(RollerRequest.PARENTID_KEY) %>" />
+
+    <table>
+
+    <tr>
+        <td><fmt:message key="folderForm.name" /></td>
+        <td><html:text property="name" size="70" maxlength="255" /></td>
+    </tr>
+
+    <tr>
+        <td><fmt:message key="folderForm.description" /></td>
+        <td><html:textarea property="description" rows="5" cols="50" /></td>
+    </tr>
+    </table>
+    
+    <p>
+    <input type="submit" value="<fmt:message key='folderForm.save' />" />
+    <input type="button" value="<fmt:message key='folderForm.cancel' />" 
+        onclick="window.location = 'bookmarks.do?method=selectFolder&amp;folderid=<%=
+        request.getAttribute(RollerRequest.PARENTID_KEY) %>'" />
+    </p>
+
+</html:form>
+
+<%@ include file="/theme/footer.jsp" %>
\ No newline at end of file

Added: incubator/roller/branches/roller_1.x/web/bookmarks/import.jsp
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/bookmarks/import.jsp?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/web/bookmarks/import.jsp (added)
+++ incubator/roller/branches/roller_1.x/web/bookmarks/import.jsp Fri Oct 21 14:27:36 2005
@@ -0,0 +1,23 @@
+<%@ include file="/taglibs.jsp" %><%@ include file="/theme/header.jsp" %>
+
+<h1><fmt:message key="bookmarksImport.title" /></h1>
+<p><fmt:message key="bookmarksImport.prompt" /></p>
+
+<html:form action="/editor/importBookmarks" method="post" enctype="multipart/form-data">
+    <html:file property="bookmarksFile" />
+    <br />
+    <br />
+    <html:submit/></input>
+</html:form>
+
+<%--
+Added by Matt Raible since the focus javascript generated by Struts uses 
+a name reference and IE seems to only focus on file inputs via elements[0]?
+--%>
+<script type="text/javascript">
+<!--
+    document.forms[0].elements[0].focus();
+// -->
+</script>
+
+<%@ include file="/theme/footer.jsp" %>

Added: incubator/roller/branches/roller_1.x/web/denied.jsp
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/denied.jsp?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/web/denied.jsp (added)
+++ incubator/roller/branches/roller_1.x/web/denied.jsp Fri Oct 21 14:27:36 2005
@@ -0,0 +1,41 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">    
+<%@ page import="org.roller.model.Roller" %>
+<%@ page import="org.roller.pojos.UserData" %>
+<%@ page import="org.roller.presentation.RollerRequest" %>
+<%@ include file="/taglibs.jsp" %>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>Roller :: Editor</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <script type="text/javascript" 
+        src="<%= request.getContextPath() %>/theme/scripts/roller.js"></script>
+    <link rel="stylesheet" type="text/css" title="The Original"
+        href="<%= request.getContextPath() %>/theme/roller.css" />
+    <link rel="stylesheet" type="text/css" title="The Original"
+        href="<%= request.getContextPath() %>/theme/layout.css" />
+    </head>
+<body>
+<div id="content">
+		
+<% try { %>
+   <roller:NavigationBar/>    	
+<% } 
+catch (Exception e) 
+{
+   System.err.println("ERROR: while displaying error page error page");
+   e.printStackTrace();
+} %>
+
+<%@ page import="java.io.*,org.roller.util.Utilities" isErrorPage="true" %>
+
+<h2><fmt:message key="error.permissionDenied.title" /></h2>
+<fmt:message key="error.permissionDenied.prompt" />
+<ul>
+<li><fmt:message key="error.permissionDenied.reason1" /></li>
+<li><fmt:message key="error.permissionDenied.reason2" /></li>
+<li><fmt:message key="error.permissionDenied.reason3" /></li>
+</ul>
+
+<%@ include file="/theme/footer.jsp" %>
+

Added: incubator/roller/branches/roller_1.x/web/dstest.jsp
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/dstest.jsp?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/web/dstest.jsp (added)
+++ incubator/roller/branches/roller_1.x/web/dstest.jsp Fri Oct 21 14:27:36 2005
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+    
+<%-- simple test page to test your Roller datasource setup --%>
+<%@ page import="javax.naming.InitialContext" %>
+<%@ page import="javax.sql.DataSource" %>
+<%@ page import="java.sql.Connection" %>
+<html>
+<head>
+<title>Roller DataSource test</title>
+</head>
+<body>
+<p>
+<%
+String msg = null; 
+Connection con = null;
+try
+{
+    InitialContext ic = new InitialContext();
+    DataSource ds = (DataSource)ic.lookup("java:comp/env/jdbc/rollerdb");
+    con = ds.getConnection();
+    msg = "SUCCESS: Got datasource and connection, class is "+ds.getClass().getName();
+}
+catch (Exception e)
+{
+    msg = "FAILURE: exception thrown "+e.getClass().getName();
+    e.printStackTrace( new java.io.PrintWriter(out) );
+}
+finally 
+{
+    if (con != null) con.close();
+}
+
+%>
+<%= msg %>
+</p>
+</body>
+</html>

Added: incubator/roller/branches/roller_1.x/web/editor/changelog.txt
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/editor/changelog.txt?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/web/editor/changelog.txt (added)
+++ incubator/roller/branches/roller_1.x/web/editor/changelog.txt Fri Oct 21 14:27:36 2005
@@ -0,0 +1,44 @@
+Cross-Browser Rich Text Editor change log
+
+11/12/2004 - Fixed palette position when rte is embedded within multiple divs.
+11/12/2004 - Fixed button events for non-IE browsers (now uses CSS)
+11/9/2004 - Fixed bug when using SSL saying page has unsecured items.
+11/9/2004 - Changed back default behaviour of IE to insert <p> tags when hitting return.  Previous fix broke list items and indenting functionality in IE
+11/2/2004 - Changed default behaviour of IE to insert <br> tags instead of <p> tags upon hitting return - thanks TotalJSNoob and archv1le!
+7/14/2004 - Changed rte.css to maintain td styles under parent objects
+5/18/2004 - Added CSS file for RTE button styles.  css is no longer printed every time a new rte is created.
+5/18/2004 - Made color palette smaller
+5/18/2004 - Fixed placement of color pallette for rtes embedded within divs - thanks Ernst!
+5/18/2004 - If a css is specified, the body tag is no longer overruled - thanks Ernst!
+5/18/2004 - Fixed headings dropdown, replacing < and > characters
+4/13/2004 - Fixed bug with standard textarea and updateRTE function
+4/12/2004 - Fixed bug with IE where toggle source would err if only content was horizontal rules
+4/12/2004 - Fixed bug  where nothing would be returned if the only content was horizontal rules and/or images
+4/9/2004 - Fixed bug for Konqueror browser
+4/9/2004 - Added multi.htm to demonstrate using multiple RTEs on one page.
+4/9/2004 - Fixed bug in IE where you could set style on document objects not in iframe.
+4/9/2004 - Updated buttons look and feel - thanks Ernst!
+3/31/2004 - Fixed bug in stripHTML function - thanks valli!
+3/19/2004 - Fixed bug with Gecko browsers where <br> is returned when empty content submitted.
+2/23/2004 - Fixed bug with Mac Safari 1.2
+1/16/2004 - Added Justify Full button
+1/9/2004 - Added updateRTEs function to update all rtes on page
+1/9/2004 - Fixed bug with updateRTE in readOnly mode
+1/8/2004 - Added parameter to writeRichText function, readOnly
+1/8/2004 - Fixed bug with Mozilla when adding blank url links
+1/8/2004 - Fixed init bug for Konqueror and Mac IE browsers.  Added parameters to init function for images path, includes path, and css file
+1/6/2004 - Added compressed richtext_compressed.js file to zip.  File size is 37% smaller
+1/5/2004 - Removed reference to style.css
+1/5/2004 - Fixed demo form submit code
+1/2/2004 - Fixed crashing with Mozilla 1.3
+1/2/2004 - Fixed bug with Mozilla 1.3
+1/2/2004 - Fixed problem with html view on submit
+12/26/2003 - Fixed color palette dropdowns for multiple RTEs.  Improved enableDesignMode function.
+12/23/2003 - Fixed several bugs with multiple RTEs on one page.
+12/22/2003 - Added support for IE5.
+12/22/2003 - Modified code to remove all timeout settings.  Fixed IE stylesheet support.  Blank.htm is no longer needed.
+12/17/2003 - Changed code for IE enableDesignMode function to load quicker and to eliminate use of timeout.
+12/8/2003 - Fixed bug with IE5.
+12/8/2003 - Added in keyboard shortcut support for Mozilla.  Code contributed by Anti Veeranna
+12/5/2003 - Removed dependence on browserdetect.js and removed js link.  Also updated initRTE function to speed up load.
+12/5/2003 - Created changelog.txt to keep track of version history from now on.
\ No newline at end of file

Added: incubator/roller/branches/roller_1.x/web/editor/ekitappletspell.jar
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/editor/ekitappletspell.jar?rev=327589&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/roller/branches/roller_1.x/web/editor/ekitappletspell.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/roller/branches/roller_1.x/web/editor/images/bgcolor.gif
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/editor/images/bgcolor.gif?rev=327589&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/roller/branches/roller_1.x/web/editor/images/bgcolor.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/roller/branches/roller_1.x/web/editor/images/blackdot.gif
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/editor/images/blackdot.gif?rev=327589&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/roller/branches/roller_1.x/web/editor/images/blackdot.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/roller/branches/roller_1.x/web/editor/images/bold.gif
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/editor/images/bold.gif?rev=327589&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/roller/branches/roller_1.x/web/editor/images/bold.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/roller/branches/roller_1.x/web/editor/images/centre.gif
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/editor/images/centre.gif?rev=327589&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/roller/branches/roller_1.x/web/editor/images/centre.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/roller/branches/roller_1.x/web/editor/images/copy.gif
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/editor/images/copy.gif?rev=327589&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/roller/branches/roller_1.x/web/editor/images/copy.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/roller/branches/roller_1.x/web/editor/images/cut.gif
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/editor/images/cut.gif?rev=327589&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/roller/branches/roller_1.x/web/editor/images/cut.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/roller/branches/roller_1.x/web/editor/images/email.gif
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/editor/images/email.gif?rev=327589&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/roller/branches/roller_1.x/web/editor/images/email.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/roller/branches/roller_1.x/web/editor/images/hr.gif
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/editor/images/hr.gif?rev=327589&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/roller/branches/roller_1.x/web/editor/images/hr.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/roller/branches/roller_1.x/web/editor/images/hyperlink.gif
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/editor/images/hyperlink.gif?rev=327589&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/roller/branches/roller_1.x/web/editor/images/hyperlink.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/roller/branches/roller_1.x/web/editor/images/image.gif
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/editor/images/image.gif?rev=327589&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/roller/branches/roller_1.x/web/editor/images/image.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/roller/branches/roller_1.x/web/editor/images/indent.gif
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/editor/images/indent.gif?rev=327589&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/roller/branches/roller_1.x/web/editor/images/indent.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/roller/branches/roller_1.x/web/editor/images/italic.gif
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/editor/images/italic.gif?rev=327589&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/roller/branches/roller_1.x/web/editor/images/italic.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/roller/branches/roller_1.x/web/editor/images/justifyfull.gif
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/editor/images/justifyfull.gif?rev=327589&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/roller/branches/roller_1.x/web/editor/images/justifyfull.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/roller/branches/roller_1.x/web/editor/images/left_just.gif
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/editor/images/left_just.gif?rev=327589&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/roller/branches/roller_1.x/web/editor/images/left_just.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/roller/branches/roller_1.x/web/editor/images/list.gif
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/editor/images/list.gif?rev=327589&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/roller/branches/roller_1.x/web/editor/images/list.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/roller/branches/roller_1.x/web/editor/images/numbered_list.gif
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/editor/images/numbered_list.gif?rev=327589&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/roller/branches/roller_1.x/web/editor/images/numbered_list.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/roller/branches/roller_1.x/web/editor/images/outdent.gif
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/editor/images/outdent.gif?rev=327589&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/roller/branches/roller_1.x/web/editor/images/outdent.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/roller/branches/roller_1.x/web/editor/images/paste.gif
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/editor/images/paste.gif?rev=327589&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/roller/branches/roller_1.x/web/editor/images/paste.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/roller/branches/roller_1.x/web/editor/images/redo.gif
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/editor/images/redo.gif?rev=327589&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/roller/branches/roller_1.x/web/editor/images/redo.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/roller/branches/roller_1.x/web/editor/images/right_just.gif
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/editor/images/right_just.gif?rev=327589&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/roller/branches/roller_1.x/web/editor/images/right_just.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/roller/branches/roller_1.x/web/editor/images/smiley.gif
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/editor/images/smiley.gif?rev=327589&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/roller/branches/roller_1.x/web/editor/images/smiley.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/roller/branches/roller_1.x/web/editor/images/spellcheck.gif
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/editor/images/spellcheck.gif?rev=327589&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/roller/branches/roller_1.x/web/editor/images/spellcheck.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/roller/branches/roller_1.x/web/editor/images/textcolor.gif
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/editor/images/textcolor.gif?rev=327589&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/roller/branches/roller_1.x/web/editor/images/textcolor.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/roller/branches/roller_1.x/web/editor/images/underline.gif
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/editor/images/underline.gif?rev=327589&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/roller/branches/roller_1.x/web/editor/images/underline.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/roller/branches/roller_1.x/web/editor/images/undo.gif
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/editor/images/undo.gif?rev=327589&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/roller/branches/roller_1.x/web/editor/images/undo.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/roller/branches/roller_1.x/web/editor/multi.htm
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/editor/multi.htm?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/web/editor/multi.htm (added)
+++ incubator/roller/branches/roller_1.x/web/editor/multi.htm Fri Oct 21 14:27:36 2005
@@ -0,0 +1,76 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<html>
+<head>
+	<title>Cross-Browser Rich Text Editor</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+	<meta name="PageURL" content="http://www.kevinroth.com/rte/demo.htm" />
+	<meta name="PageTitle" content="Cross-Browser Rich Text Editor" />
+	<!-- To decrease bandwidth, change the src to richtext_compressed.js //-->
+	<script language="JavaScript" type="text/javascript" src="richtext.js"></script>
+</head>
+<body>
+
+<h2>Cross-Browser Rich Text Editor</h2>
+<p><a href="http://www.planetsourcecode.com/vb/scripts/ShowCode.asp?txtCodeId=3508&amp;lngWId=2" target="_blank"><img src="/images/PscContestWinner.jpg" height="88" width="409" alt="PscContestWinner" border="0"></a></p>
+<p>The cross-browser rich-text editor implements the <a href="http://www.mozilla.org/editor/midas-spec.html" target="_blank">Mozilla Rich Text Editing API</a> included with Mozilla 1.3+.  There is <b>NO LICENSE</b>, so just take the code and use it for any purpose.  This code is 100% free.  Enjoy!</p>
+<p>For frequently asked question and support, please visit <a href="http://www.kevinroth.com/forums/index.php?c=2">http://www.kevinroth.com/forums/index.php?c=2</a></p>
+<p><b>Requires:</b> IE5+/<a href="http://www.mozilla.org/">Mozilla</a> 1.3+/<a href="http://www.mozilla.org/products/firefox/" target="_blank">Mozilla Firebird/Firefox</a> 0.6.1+ for all rich-text features to function properly.  If browser does not support rich-text, it should display a standard textarea box.</p>
+<p><b>Source:</b> <a href="rte.zip">rte.zip</a>, <a href="rte.tar.gz">rte.tar.gz</a><br>
+Included in the zip are <a href="demo.htm">HTML</a>, <a href="demo.asp">ASP</a>, and <a href="demo.php">PHP</a> demos.  Also, here is an <a href="multi.htm">html demo</a> showing multiple RTEs on one page.</p>
+<p><b>Change Log:</b> <a href="changelog.txt">changelog.txt</a></p>
+
+<p><b>If you feel that the work I've done has value to you,</b> I would greatly appreciate a paypal donation (click button below).  Another way you can help me out is to <a href="http://www.FreeFlatScreens.com/default.aspx?referer=11055453" target="_blank">sign up for a free flat screen</a>, to help me get mine.  Again, I am very grateful for any and all contributions.</p>
+<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
+<input type="hidden" name="cmd" value="_xclick">
+<input type="hidden" name="business" value="kevin@kevinroth.com">
+<input type="hidden" name="no_note" value="1">
+<input type="hidden" name="currency_code" value="USD">
+<input type="hidden" name="tax" value="0">
+<input type="hidden" name="lc" value="US">
+<input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but04.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!">
+</form>
+
+<form name="RTEDemo" action="demo.htm" method="post" onsubmit="return submitForm();">
+
+<script language="JavaScript" type="text/javascript">
+<!--
+function submitForm() {
+	//make sure hidden and iframe values are in sync before submitting form
+	//to sync only 1 rte, use updateRTE(rte)
+	//to sync all rtes, use updateRTEs
+	//updateRTE('rte1');
+	updateRTEs();
+	alert("rte1 = " + document.RTEDemo.rte1.value);
+	alert("rte2 = " + document.RTEDemo.rte2.value);
+	alert("rte3 = " + document.RTEDemo.rte3.value);
+	
+	//change the following line to true to submit form
+	return false;
+}
+
+//Usage: initRTE(imagesPath, includesPath, cssFile)
+initRTE("images/", "", "");
+//-->
+</script>
+<noscript><p><b>Javascript must be enabled to use this form.</b></p></noscript>
+
+<script language="JavaScript" type="text/javascript">
+<!--
+//Usage: writeRichText(fieldname, html, width, height, buttons, readOnly)
+writeRichText('rte1', 'here&#39;s the "<em>preloaded</em> <b>content</b>"', 520, 200, true, false);
+
+document.writeln('<br><br>');
+writeRichText('rte2', 'preloaded <b>text</b>', 560, 100, true, false);
+
+document.writeln('<br><br>');
+writeRichText('rte3', 'preloaded <b>text</b>', 450, 100, true, true);
+//-->
+</script>
+
+<p>Click submit to show the value of the text box.</p>
+<p><input type="submit" name="submit" value="Submit"></p>
+</form>
+
+</body>
+</html>
\ No newline at end of file

Added: incubator/roller/branches/roller_1.x/web/editor/palette.htm
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/editor/palette.htm?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/web/editor/palette.htm (added)
+++ incubator/roller/branches/roller_1.x/web/editor/palette.htm Fri Oct 21 14:27:36 2005
@@ -0,0 +1,126 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<html>
+<head>
+	<title>Text Color</title>
+	<script language="JavaScript" type="text/javascript">
+	<!--
+	function selectColor(color) {
+		self.parent.setColor(color);
+	}
+	
+	function InitColorPalette() {
+		if (document.getElementsByTagName)
+			var x = document.getElementsByTagName('TD');
+		else if (document.all)
+			var x = document.all.tags('TD');
+		for (var i=0;i<x.length;i++) {
+			x[i].onmouseover = over;
+			x[i].onmouseout = out;
+			x[i].onclick = click;
+		}
+	}
+	
+	function over() {
+		this.style.border='1px dotted white';
+	}
+	
+	function out() {
+		this.style.border='1px solid gray';
+	}
+	
+	function click() {
+		selectColor(this.id);
+	}
+	//-->
+	</script>
+</head>
+<body bgcolor="white" onLoad="InitColorPalette()" leftmargin="0" rightmargin="0" marginwidth="0" marginheight="0" topmargin="0" bottommargin="0">
+<table width="150" height="100" cellpadding="0" cellspacing="1" border="1" align="center">
+	<tr>
+		<td id="#FFFFFF" bgcolor="#FFFFFF" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#FFCCCC" bgcolor="#FFCCCC" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#FFCC99" bgcolor="#FFCC99" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#FFFF99" bgcolor="#FFFF99" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#FFFFCC" bgcolor="#FFFFCC" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#99FF99" bgcolor="#99FF99" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#99FFFF" bgcolor="#99FFFF" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#CCFFFF" bgcolor="#CCFFFF" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#CCCCFF" bgcolor="#CCCCFF" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#FFCCFF" bgcolor="#FFCCFF" width="10" height="10"><img width="1" height="1"></td>
+	</tr>
+	<tr>
+		<td id="#CCCCCC" bgcolor="#CCCCCC" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#FF6666" bgcolor="#FF6666" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#FF9966" bgcolor="#FF9966" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#FFFF66" bgcolor="#FFFF66" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#FFFF33" bgcolor="#FFFF33" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#66FF99" bgcolor="#66FF99" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#33FFFF" bgcolor="#33FFFF" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#66FFFF" bgcolor="#66FFFF" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#9999FF" bgcolor="#9999FF" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#FF99FF" bgcolor="#FF99FF" width="10" height="10"><img width="1" height="1"></td>
+	</tr>
+	<tr>
+		<td id="#C0C0C0" bgcolor="#C0C0C0" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#FF0000" bgcolor="#FF0000" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#FF9900" bgcolor="#FF9900" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#FFCC66" bgcolor="#FFCC66" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#FFFF00" bgcolor="#FFFF00" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#33FF33" bgcolor="#33FF33" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#66CCCC" bgcolor="#66CCCC" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#33CCFF" bgcolor="#33CCFF" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#6666CC" bgcolor="#6666CC" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#CC66CC" bgcolor="#CC66CC" width="10" height="10"><img width="1" height="1"></td>
+	</tr>
+	<tr>
+		<td id="#999999" bgcolor="#999999" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#CC0000" bgcolor="#CC0000" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#FF6600" bgcolor="#FF6600" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#FFCC33" bgcolor="#FFCC33" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#FFCC00" bgcolor="#FFCC00" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#33CC00" bgcolor="#33CC00" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#00CCCC" bgcolor="#00CCCC" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#3366FF" bgcolor="#3366FF" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#6633FF" bgcolor="#6633FF" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#CC33CC" bgcolor="#CC33CC" width="10" height="10"><img width="1" height="1"></td>
+	</tr>
+	<tr>
+		<td id="#666666" bgcolor="#666666" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#990000" bgcolor="#990000" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#CC6600" bgcolor="#CC6600" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#CC9933" bgcolor="#CC9933" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#999900" bgcolor="#999900" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#009900" bgcolor="#009900" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#339999" bgcolor="#339999" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#3333FF" bgcolor="#3333FF" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#6600CC" bgcolor="#6600CC" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#993399" bgcolor="#993399" width="10" height="10"><img width="1" height="1"></td>
+	</tr>
+	<tr>
+		<td id="#333333" bgcolor="#333333" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#660000" bgcolor="#660000" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#993300" bgcolor="#993300" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#996633" bgcolor="#996633" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#666600" bgcolor="#666600" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#006600" bgcolor="#006600" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#336666" bgcolor="#336666" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#000099" bgcolor="#000099" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#333399" bgcolor="#333399" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#663366" bgcolor="#663366" width="10" height="10"><img width="1" height="1"></td>
+	</tr>
+	<tr>
+		<td id="#000000" bgcolor="#000000" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#330000" bgcolor="#330000" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#663300" bgcolor="#663300" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#663333" bgcolor="#663333" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#333300" bgcolor="#333300" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#003300" bgcolor="#003300" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#003333" bgcolor="#003333" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#000066" bgcolor="#000066" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#330099" bgcolor="#330099" width="10" height="10"><img width="1" height="1"></td>
+		<td id="#330033" bgcolor="#330033" width="10" height="10"><img width="1" height="1"></td>
+	</tr>
+</table>
+</body>
+</html>

Added: incubator/roller/branches/roller_1.x/web/editor/richtext.js
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/editor/richtext.js?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/web/editor/richtext.js (added)
+++ incubator/roller/branches/roller_1.x/web/editor/richtext.js Fri Oct 21 14:27:36 2005
@@ -0,0 +1,594 @@
+// Cross-Browser Rich Text Editor
+// http://www.kevinroth.com/rte/demo.htm
+// Written by Kevin Roth (kevin@NOSPAMkevinroth.com - remove NOSPAM)
+// Visit the support forums at http://www.kevinroth.com/forums/index.php?c=2
+
+//init variables
+var isRichText = false;
+var rng;
+var currentRTE;
+var allRTEs = "";
+
+var isIE;
+var isGecko;
+var isSafari;
+var isKonqueror;
+
+var imagesPath;
+var includesPath;
+var cssFile;
+
+
+function initRTE(imgPath, incPath, css) {
+	//set browser vars
+	var ua = navigator.userAgent.toLowerCase();
+	isIE = ((ua.indexOf("msie") != -1) && (ua.indexOf("opera") == -1) && (ua.indexOf("webtv") == -1)); 
+	isGecko = (ua.indexOf("gecko") != -1);
+	isSafari = (ua.indexOf("safari") != -1);
+	isKonqueror = (ua.indexOf("konqueror") != -1);
+	
+	//check to see if designMode mode is available
+	if (document.getElementById && document.designMode && !isSafari && !isKonqueror) {
+		isRichText = true;
+	}
+	if (isIE) {
+		document.onmouseover = raiseButton;
+		document.onmouseout  = normalButton;
+		document.onmousedown = lowerButton;
+		document.onmouseup   = raiseButton;
+	}
+	
+	//set paths vars
+	imagesPath = imgPath;
+	includesPath = incPath;
+	cssFile = css;
+	
+	if (isRichText) document.writeln('<style type="text/css">@import "' + includesPath + 'rte.css";</style>');
+
+	//for testing standard textarea, uncomment the following line
+	//isRichText = false;
+}
+
+function writeRichText(rte, html, width, height, buttons, readOnly) {
+	if (isRichText) {
+		if (allRTEs.length > 0) allRTEs += ";";
+		allRTEs += rte;
+		writeRTE(rte, html, width, height, buttons, readOnly);
+	} else {
+		writeDefault(rte, html, width, height, buttons, readOnly);
+	}
+}
+
+function writeDefault(rte, html, width, height, buttons, readOnly) {
+	if (!readOnly) {
+		document.writeln('<textarea name="' + rte + '" id="' + rte + '" style="width: ' + width + 'px; height: ' + height + 'px;">' + html + '</textarea>');
+	} else {
+		document.writeln('<textarea name="' + rte + '" id="' + rte + '" style="width: ' + width + 'px; height: ' + height + 'px;" readonly>' + html + '</textarea>');
+	}
+}
+
+function raiseButton(e) {
+	//IE-Only Function
+	var el = window.event.srcElement;
+	
+	className = el.className;
+	if (className == 'rteImage' || className == 'rteImageLowered') {
+		el.className = 'rteImageRaised';
+	}
+}
+
+function normalButton(e) {
+	//IE-Only Function
+	var el = window.event.srcElement;
+	
+	className = el.className;
+	if (className == 'rteImageRaised' || className == 'rteImageLowered') {
+		el.className = 'rteImage';
+	}
+}
+
+function lowerButton(e) {
+	//IE-Only Function
+	var el = window.event.srcElement;
+	
+	className = el.className;
+	if (className == 'rteImage' || className == 'rteImageRaised') {
+		el.className = 'rteImageLowered';
+	}
+}
+
+function writeRTE(rte, html, width, height, buttons, readOnly) {
+	if (readOnly) buttons = false;
+	
+	//adjust minimum table widths
+	if (isIE) {
+		if (buttons && (width < 600)) width = 600;
+		var tablewidth = width;
+	} else {
+		if (buttons && (width < 500)) width = 500;
+		var tablewidth = width + 4;
+	}
+	
+	document.writeln('<div class="rteDiv">');
+	if (buttons == true) {
+		document.writeln('<table class="rteBack" cellpadding=2 cellspacing=0 id="Buttons1_' + rte + '" width="' + tablewidth + '">');
+		document.writeln('	<tr>');
+		document.writeln('		<td>');
+		document.writeln('			<select id="formatblock_' + rte + '" onchange="Select(\'' + rte + '\', this.id);">');
+		document.writeln('				<option value="">[Style]</option>');
+		document.writeln('				<option value="<p>">Paragraph</option>');
+		document.writeln('				<option value="<h1>">Heading 1 <h1></option>');
+		document.writeln('				<option value="<h2>">Heading 2 <h2></option>');
+		document.writeln('				<option value="<h3>">Heading 3 <h3></option>');
+		document.writeln('				<option value="<h4>">Heading 4 <h4></option>');
+		document.writeln('				<option value="<h5>">Heading 5 <h5></option>');
+		document.writeln('				<option value="<h6>">Heading 6 <h6></option>');
+		document.writeln('				<option value="<address>">Address <ADDR></option>');
+		document.writeln('				<option value="<pre>">Formatted <pre></option>');
+		document.writeln('			</select>');
+		document.writeln('		</td>');
+		document.writeln('		<td>');
+		document.writeln('			<select id="fontname_' + rte + '" onchange="Select(\'' + rte + '\', this.id)">');
+		document.writeln('				<option value="Font" selected>[Font]</option>');
+		document.writeln('				<option value="Arial, Helvetica, sans-serif">Arial</option>');
+		document.writeln('				<option value="Courier New, Courier, mono">Courier New</option>');
+		document.writeln('				<option value="Times New Roman, Times, serif">Times New Roman</option>');
+		document.writeln('				<option value="Verdana, Arial, Helvetica, sans-serif">Verdana</option>');
+		document.writeln('			</select>');
+		document.writeln('		</td>');
+		document.writeln('		<td>');
+		document.writeln('			<select unselectable="on" id="fontsize_' + rte + '" onchange="Select(\'' + rte + '\', this.id);">');
+		document.writeln('				<option value="Size">[Size]</option>');
+		document.writeln('				<option value="1">1</option>');
+		document.writeln('				<option value="2">2</option>');
+		document.writeln('				<option value="3">3</option>');
+		document.writeln('				<option value="4">4</option>');
+		document.writeln('				<option value="5">5</option>');
+		document.writeln('				<option value="6">6</option>');
+		document.writeln('				<option value="7">7</option>');
+		document.writeln('			</select>');
+		document.writeln('		</td>');
+		document.writeln('		<td width="100%">');
+		document.writeln('		</td>');
+		document.writeln('	</tr>');
+		document.writeln('</table>');
+		document.writeln('<table class="rteBack" cellpadding="0" cellspacing="0" id="Buttons2_' + rte + '" width="' + tablewidth + '">');
+		document.writeln('	<tr>');
+		document.writeln('		<td><img id="bold" class="rteImage" src="' + imagesPath + 'bold.gif" width="25" height="24" alt="Bold" title="Bold" onClick="FormatText(\'' + rte + '\', \'bold\', \'\')"></td>');
+		document.writeln('		<td><img class="rteImage" src="' + imagesPath + 'italic.gif" width="25" height="24" alt="Italic" title="Italic" onClick="FormatText(\'' + rte + '\', \'italic\', \'\')"></td>');
+		document.writeln('		<td><img class="rteImage" src="' + imagesPath + 'underline.gif" width="25" height="24" alt="Underline" title="Underline" onClick="FormatText(\'' + rte + '\', \'underline\', \'\')"></td>');
+		document.writeln('		<td><img class="rteVertSep" src="' + imagesPath + 'blackdot.gif" width="1" height="20" border="0" alt=""></td>');
+		document.writeln('		<td><img class="rteImage" src="' + imagesPath + 'left_just.gif" width="25" height="24" alt="Align Left" title="Align Left" onClick="FormatText(\'' + rte + '\', \'justifyleft\', \'\')"></td>');
+		document.writeln('		<td><img class="rteImage" src="' + imagesPath + 'centre.gif" width="25" height="24" alt="Center" title="Center" onClick="FormatText(\'' + rte + '\', \'justifycenter\', \'\')"></td>');
+		document.writeln('		<td><img class="rteImage" src="' + imagesPath + 'right_just.gif" width="25" height="24" alt="Align Right" title="Align Right" onClick="FormatText(\'' + rte + '\', \'justifyright\', \'\')"></td>');
+		document.writeln('		<td><img class="rteImage" src="' + imagesPath + 'justifyfull.gif" width="25" height="24" alt="Justify Full" title="Justify Full" onclick="FormatText(\'' + rte + '\', \'justifyfull\', \'\')"></td>');
+		document.writeln('		<td><img class="rteVertSep" src="' + imagesPath + 'blackdot.gif" width="1" height="20" border="0" alt=""></td>');
+		document.writeln('		<td><img class="rteImage" src="' + imagesPath + 'hr.gif" width="25" height="24" alt="Horizontal Rule" title="Horizontal Rule" onClick="FormatText(\'' + rte + '\', \'inserthorizontalrule\', \'\')"></td>');
+		document.writeln('		<td><img class="rteVertSep" src="' + imagesPath + 'blackdot.gif" width="1" height="20" border="0" alt=""></td>');
+		document.writeln('		<td><img class="rteImage" src="' + imagesPath + 'numbered_list.gif" width="25" height="24" alt="Ordered List" title="Ordered List" onClick="FormatText(\'' + rte + '\', \'insertorderedlist\', \'\')"></td>');
+		document.writeln('		<td><img class="rteImage" src="' + imagesPath + 'list.gif" width="25" height="24" alt="Unordered List" title="Unordered List" onClick="FormatText(\'' + rte + '\', \'insertunorderedlist\', \'\')"></td>');
+		document.writeln('		<td><img class="rteVertSep" src="' + imagesPath + 'blackdot.gif" width="1" height="20" border="0" alt=""></td>');
+		document.writeln('		<td><img class="rteImage" src="' + imagesPath + 'outdent.gif" width="25" height="24" alt="Outdent" title="Outdent" onClick="FormatText(\'' + rte + '\', \'outdent\', \'\')"></td>');
+		document.writeln('		<td><img class="rteImage" src="' + imagesPath + 'indent.gif" width="25" height="24" alt="Indent" title="Indent" onClick="FormatText(\'' + rte + '\', \'indent\', \'\')"></td>');
+		document.writeln('		<td><div id="forecolor_' + rte + '"><img class="rteImage" src="' + imagesPath + 'textcolor.gif" width="25" height="24" alt="Text Color" title="Text Color" onClick="FormatText(\'' + rte + '\', \'forecolor\', \'\')"></div></td>');
+		document.writeln('		<td><div id="hilitecolor_' + rte + '"><img class="rteImage" src="' + imagesPath + 'bgcolor.gif" width="25" height="24" alt="Background Color" title="Background Color" onClick="FormatText(\'' + rte + '\', \'hilitecolor\', \'\')"></div></td>');
+		document.writeln('		<td><img class="rteVertSep" src="' + imagesPath + 'blackdot.gif" width="1" height="20" border="0" alt=""></td>');
+		document.writeln('		<td><img class="rteImage" src="' + imagesPath + 'hyperlink.gif" width="25" height="24" alt="Insert Link" title="Insert Link" onClick="FormatText(\'' + rte + '\', \'createlink\')"></td>');
+		document.writeln('		<td><img class="rteImage" src="' + imagesPath + 'image.gif" width="25" height="24" alt="Add Image" title="Add Image" onClick="AddImage(\'' + rte + '\')"></td>');
+		if (isIE) {
+			document.writeln('		<td><img class="rteImage" src="' + imagesPath + 'spellcheck.gif" width="25" height="24" alt="Spell Check" title="Spell Check" onClick="checkspell()"></td>');
+		}
+//		document.writeln('		<td><img class="rteVertSep" src="' + imagesPath + 'blackdot.gif" width="1" height="20" border="0" alt=""></td>');
+//		document.writeln('		<td><img class="rteImage" src="' + imagesPath + 'cut.gif" width="25" height="24" alt="Cut" title="Cut" onClick="FormatText(\'' + rte + '\', \'cut\')"></td>');
+//		document.writeln('		<td><img class="rteImage" src="' + imagesPath + 'copy.gif" width="25" height="24" alt="Copy" title="Copy" onClick="FormatText(\'' + rte + '\', \'copy\')"></td>');
+//		document.writeln('		<td><img class="rteImage" src="' + imagesPath + 'paste.gif" width="25" height="24" alt="Paste" title="Paste" onClick="FormatText(\'' + rte + '\', \'paste\')"></td>');
+//		document.writeln('		<td><img class="rteVertSep" src="' + imagesPath + 'blackdot.gif" width="1" height="20" border="0" alt=""></td>');
+//		document.writeln('		<td><img class="rteImage" src="' + imagesPath + 'undo.gif" width="25" height="24" alt="Undo" title="Undo" onClick="FormatText(\'' + rte + '\', \'undo\')"></td>');
+//		document.writeln('		<td><img class="rteImage" src="' + imagesPath + 'redo.gif" width="25" height="24" alt="Redo" title="Redo" onClick="FormatText(\'' + rte + '\', \'redo\')"></td>');
+		document.writeln('		<td width="100%"></td>');
+		document.writeln('	</tr>');
+		document.writeln('</table>');
+	}
+	document.writeln('<iframe id="' + rte + '" name="' + rte + '" width="' + width + 'px" height="' + height + 'px" src="' + includesPath + 'blank.htm"></iframe>');
+	if (!readOnly) document.writeln('<br /><input type="checkbox" id="chkSrc' + rte + '" onclick="toggleHTMLSrc(\'' + rte + '\');" />&nbsp;View Source');
+	document.writeln('<iframe width="154" height="104" id="cp' + rte + '" src="' + includesPath + 'palette.htm" marginwidth="0" marginheight="0" scrolling="no" style="visibility:hidden; display: none; position: absolute;"></iframe>');
+	document.writeln('<input type="hidden" id="hdn' + rte + '" name="' + rte + '" value="">');
+	document.writeln('</div>');
+	
+	document.getElementById('hdn' + rte).value = html;
+	enableDesignMode(rte, html, readOnly);
+}
+
+function enableDesignMode(rte, html, readOnly) {
+	var frameHtml = "<html id=\"" + rte + "\">\n";
+	frameHtml += "<head>\n";
+	//to reference your stylesheet, set href property below to your stylesheet path and uncomment
+	if (cssFile.length > 0) {
+		frameHtml += "<link media=\"all\" type=\"text/css\" href=\"" + cssFile + "\" rel=\"stylesheet\">\n";
+	} else {
+		frameHtml += "<style>\n";
+		frameHtml += "body {\n";
+		frameHtml += "	background: #FFFFFF;\n";
+		frameHtml += "	margin: 0px;\n";
+		frameHtml += "	padding: 0px;\n";
+		frameHtml += "}\n";
+		frameHtml += "</style>\n";
+	}
+	frameHtml += "</head>\n";
+	frameHtml += "<body>\n";
+	frameHtml += html + "\n";
+	frameHtml += "</body>\n";
+	frameHtml += "</html>";
+	
+	if (document.all) {
+		var oRTE = frames[rte].document;
+		oRTE.open();
+		oRTE.write(frameHtml);
+		oRTE.close();
+		if (!readOnly) oRTE.designMode = "On";
+	} else {
+		try {
+			if (!readOnly) document.getElementById(rte).contentDocument.designMode = "on";
+			try {
+				var oRTE = document.getElementById(rte).contentWindow.document;
+				oRTE.open();
+				oRTE.write(frameHtml);
+				oRTE.close();
+				if (isGecko && !readOnly) {
+					//attach a keyboard handler for gecko browsers to make keyboard shortcuts work
+					oRTE.addEventListener("keypress", kb_handler, true);
+				}
+			} catch (e) {
+				alert("Error preloading content.");
+			}
+		} catch (e) {
+			//gecko may take some time to enable design mode.
+			//Keep looping until able to set.
+			if (isGecko) {
+				setTimeout("enableDesignMode('" + rte + "', '" + html + "', " + readOnly + ");", 10);
+			} else {
+				return false;
+			}
+		}
+	}
+}
+
+function updateRTEs() {
+	var vRTEs = allRTEs.split(";");
+	for (var i = 0; i < vRTEs.length; i++) {
+		updateRTE(vRTEs[i]);
+	}
+}
+
+function updateRTE(rte) {
+	if (!isRichText) return;
+	
+	//set message value
+	var oHdnMessage = document.getElementById('hdn' + rte);
+	var oRTE = document.getElementById(rte);
+	var readOnly = false;
+	
+	//check for readOnly mode
+	if (document.all) {
+		if (frames[rte].document.designMode != "On") readOnly = true;
+	} else {
+		if (document.getElementById(rte).contentDocument.designMode != "on") readOnly = true;
+	}
+	
+	if (isRichText && !readOnly) {
+		//if viewing source, switch back to design view
+		if (document.getElementById("chkSrc" + rte).checked) {
+			document.getElementById("chkSrc" + rte).checked = false;
+			toggleHTMLSrc(rte);
+		}
+		
+		if (oHdnMessage.value == null) oHdnMessage.value = "";
+		if (document.all) {
+			oHdnMessage.value = frames[rte].document.body.innerHTML;
+		} else {
+			oHdnMessage.value = oRTE.contentWindow.document.body.innerHTML;
+		}
+		
+		//if there is no content (other than formatting) set value to nothing
+		if (stripHTML(oHdnMessage.value.replace("&nbsp;", " ")) == "" 
+			&& oHdnMessage.value.toLowerCase().search("<hr") == -1
+			&& oHdnMessage.value.toLowerCase().search("<img") == -1) oHdnMessage.value = "";
+		//fix for gecko
+		if (escape(oHdnMessage.value) == "%3Cbr%3E%0D%0A%0D%0A%0D%0A") oHdnMessage.value = "";
+	}
+}
+
+function toggleHTMLSrc(rte) {
+	//contributed by Bob Hutzel (thanks Bob!)
+	var oRTE;
+	if (document.all) {
+		oRTE = frames[rte].document;
+	} else {
+		oRTE = document.getElementById(rte).contentWindow.document;
+	}
+	
+	if (document.getElementById("chkSrc" + rte).checked) {
+		document.getElementById("Buttons1_" + rte).style.visibility = "hidden";
+		document.getElementById("Buttons2_" + rte).style.visibility = "hidden";
+		if (document.all) {
+			oRTE.body.innerText = oRTE.body.innerHTML;
+		} else {
+			var htmlSrc = oRTE.createTextNode(oRTE.body.innerHTML);
+			oRTE.body.innerHTML = "";
+			oRTE.body.appendChild(htmlSrc);
+		}
+	} else {
+		document.getElementById("Buttons1_" + rte).style.visibility = "visible";
+		document.getElementById("Buttons2_" + rte).style.visibility = "visible";
+		if (document.all) {
+			//fix for IE
+			var output = escape(oRTE.body.innerText);
+			output = output.replace("%3CP%3E%0D%0A%3CHR%3E", "%3CHR%3E");
+			output = output.replace("%3CHR%3E%0D%0A%3C/P%3E", "%3CHR%3E");
+			
+			oRTE.body.innerHTML = unescape(output);
+		} else {
+			var htmlSrc = oRTE.body.ownerDocument.createRange();
+			htmlSrc.selectNodeContents(oRTE.body);
+			oRTE.body.innerHTML = htmlSrc.toString();
+		}
+	}
+}
+
+//Function to format text in the text box
+function FormatText(rte, command, option) {
+	var oRTE;
+	if (document.all) {
+		oRTE = frames[rte];
+		
+		//get current selected range
+		var selection = oRTE.document.selection; 
+		if (selection != null) {
+			rng = selection.createRange();
+		}
+	} else {
+		oRTE = document.getElementById(rte).contentWindow;
+		
+		//get currently selected range
+		var selection = oRTE.getSelection();
+		rng = selection.getRangeAt(selection.rangeCount - 1).cloneRange();
+	}
+	
+	try {
+		if ((command == "forecolor") || (command == "hilitecolor")) {
+			//save current values
+			parent.command = command;
+			currentRTE = rte;
+			
+			//position and show color palette
+			buttonElement = document.getElementById(command + '_' + rte);
+			var iLeftPos = getOffsetLeft(buttonElement);
+			var iTopPos = getOffsetTop(buttonElement) + (buttonElement.offsetHeight + 4);
+			document.getElementById('cp' + rte).style.left = (iLeftPos) + "px";
+			document.getElementById('cp' + rte).style.top = (iTopPos) + "px";
+			if (document.getElementById('cp' + rte).style.visibility == "hidden") {
+				document.getElementById('cp' + rte).style.visibility = "visible";
+				document.getElementById('cp' + rte).style.display = "inline";
+			} else {
+				document.getElementById('cp' + rte).style.visibility = "hidden";
+				document.getElementById('cp' + rte).style.display = "none";
+			}
+		} else if (command == "createlink") {
+			var szURL = prompt("Enter a URL:", "");
+			try {
+				//ignore error for blank urls
+				oRTE.document.execCommand("Unlink", false, null);
+				oRTE.document.execCommand("CreateLink", false, szURL);
+			} catch (e) {
+				//do nothing
+			}
+		} else {
+			oRTE.focus();
+		  	oRTE.document.execCommand(command, false, option);
+			oRTE.focus();
+		}
+	} catch (e) {
+		alert(e);
+	}
+}
+
+//Function to set color
+function setColor(color) {
+	var rte = currentRTE;
+	var oRTE;
+	if (document.all) {
+		oRTE = frames[rte];
+	} else {
+		oRTE = document.getElementById(rte).contentWindow;
+	}
+	
+	var parentCommand = parent.command;
+	if (document.all) {
+		//retrieve selected range
+		var sel = oRTE.document.selection; 
+		if (parentCommand == "hilitecolor") parentCommand = "backcolor";
+		if (sel != null) {
+			var newRng = sel.createRange();
+			newRng = rng;
+			newRng.select();
+		}
+	}
+	oRTE.focus();
+	oRTE.document.execCommand(parentCommand, false, color);
+	oRTE.focus();
+	document.getElementById('cp' + rte).style.visibility = "hidden";
+	document.getElementById('cp' + rte).style.display = "none";
+}
+
+//Function to add image
+function AddImage(rte) {
+	var oRTE;
+	if (document.all) {
+		oRTE = frames[rte];
+		
+		//get current selected range
+		var selection = oRTE.document.selection; 
+		if (selection != null) {
+			rng = selection.createRange();
+		}
+	} else {
+		oRTE = document.getElementById(rte).contentWindow;
+		
+		//get currently selected range
+		var selection = oRTE.getSelection();
+		rng = selection.getRangeAt(selection.rangeCount - 1).cloneRange();
+	}
+	
+	imagePath = prompt('Enter Image URL:', 'http://');				
+	if ((imagePath != null) && (imagePath != "")) {
+		oRTE.focus();
+		oRTE.document.execCommand('InsertImage', false, imagePath);
+		oRTE.focus();
+	}
+}
+
+//function to perform spell check
+function checkspell() {
+	try {
+		var tmpis = new ActiveXObject("ieSpell.ieSpellExtension");
+		tmpis.CheckAllLinkedDocuments(document);
+	}
+	catch(exception) {
+		if(exception.number==-2146827859) {
+			if (confirm("ieSpell not detected.  Click Ok to go to download page."))
+				window.open("http://www.iespell.com/download.php","DownLoad");
+		} else {
+			alert("Error Loading ieSpell: Exception " + exception.number);
+		}
+	}
+}
+
+// Ernst de Moor: Fix the amount of digging parents up, in case the RTE editor itself is displayed in a div.
+// KJR 11/12/2004 Changed to position palette based on parent div, so palette will always appear in proper location regardless of nested divs
+function getOffsetTop(elm) {
+	var mOffsetTop = elm.offsetTop;
+	var mOffsetParent = elm.offsetParent;
+	var parents_up = 2; //the positioning div is 2 elements up the tree
+	
+	while(parents_up > 0) {
+		mOffsetTop += mOffsetParent.offsetTop;
+		mOffsetParent = mOffsetParent.offsetParent;
+		parents_up--;
+	}
+	
+	return mOffsetTop;
+}
+
+// Ernst de Moor: Fix the amount of digging parents up, in case the RTE editor itself is displayed in a div.
+// KJR 11/12/2004 Changed to position palette based on parent div, so palette will always appear in proper location regardless of nested divs
+function getOffsetLeft(elm) {
+	var mOffsetLeft = elm.offsetLeft;
+	var mOffsetParent = elm.offsetParent;
+	var parents_up = 2;
+	
+	while(parents_up > 0) {
+		mOffsetLeft += mOffsetParent.offsetLeft;
+		mOffsetParent = mOffsetParent.offsetParent;
+		parents_up--;
+	}
+	
+	return mOffsetLeft;
+}
+
+function Select(rte, selectname) {
+	var oRTE;
+	if (document.all) {
+		oRTE = frames[rte];
+		
+		//get current selected range
+		var selection = oRTE.document.selection; 
+		if (selection != null) {
+			rng = selection.createRange();
+		}
+	} else {
+		oRTE = document.getElementById(rte).contentWindow;
+		
+		//get currently selected range
+		var selection = oRTE.getSelection();
+		rng = selection.getRangeAt(selection.rangeCount - 1).cloneRange();
+	}
+	
+	var idx = document.getElementById(selectname).selectedIndex;
+	// First one is always a label
+	if (idx != 0) {
+		var selected = document.getElementById(selectname).options[idx].value;
+		var cmd = selectname.replace('_' + rte, '');
+		oRTE.focus();
+		oRTE.document.execCommand(cmd, false, selected);
+		oRTE.focus();
+		document.getElementById(selectname).selectedIndex = 0;
+	}
+}
+
+function kb_handler(evt) {
+	var rte = evt.target.id;
+	
+	//contributed by Anti Veeranna (thanks Anti!)
+	if (evt.ctrlKey) {
+		var key = String.fromCharCode(evt.charCode).toLowerCase();
+		var cmd = '';
+		switch (key) {
+			case 'b': cmd = "bold"; break;
+			case 'i': cmd = "italic"; break;
+			case 'u': cmd = "underline"; break;
+		};
+
+		if (cmd) {
+			FormatText(rte, cmd, true);
+			//evt.target.ownerDocument.execCommand(cmd, false, true);
+			// stop the event bubble
+			evt.preventDefault();
+			evt.stopPropagation();
+		}
+ 	}
+}
+
+function docChanged (evt) {
+	alert('changed');
+}
+
+function stripHTML(oldString) {
+	var newString = oldString.replace(/(<([^>]+)>)/ig,"");
+	
+	//replace carriage returns and line feeds
+   newString = newString.replace(/\r\n/g," ");
+   newString = newString.replace(/\n/g," ");
+   newString = newString.replace(/\r/g," ");
+	
+	//trim string
+	newString = trim(newString);
+	
+	return newString;
+}
+
+function trim(inputString) {
+   // Removes leading and trailing spaces from the passed string. Also removes
+   // consecutive spaces and replaces it with one space. If something besides
+   // a string is passed in (null, custom object, etc.) then return the input.
+   if (typeof inputString != "string") return inputString;
+   var retValue = inputString;
+   var ch = retValue.substring(0, 1);
+	
+   while (ch == " ") { // Check for spaces at the beginning of the string
+      retValue = retValue.substring(1, retValue.length);
+      ch = retValue.substring(0, 1);
+   }
+   ch = retValue.substring(retValue.length - 1, retValue.length);
+	
+   while (ch == " ") { // Check for spaces at the end of the string
+      retValue = retValue.substring(0, retValue.length - 1);
+      ch = retValue.substring(retValue.length - 1, retValue.length);
+   }
+	
+	// Note that there are two spaces in the string - look for multiple spaces within the string
+   while (retValue.indexOf("  ") != -1) {
+		// Again, there are two spaces in each of the strings
+      retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ") + 1, retValue.length);
+   }
+   return retValue; // Return the trimmed string back to the user
+}