diff --git a/phpgwapi/js/htmlarea/plugins/ListType/lang/en.js b/phpgwapi/js/htmlarea/plugins/ListType/lang/en.js
new file mode 100755
index 0000000000..f042f61b37
--- /dev/null
+++ b/phpgwapi/js/htmlarea/plugins/ListType/lang/en.js
@@ -0,0 +1,23 @@
+// I18N constants
+
+// LANG: "en", ENCODING: UTF-8 | ISO-8859-1
+// Author: Mihai Bazon, http://dynarch.com/mishoo
+
+// FOR TRANSLATORS:
+//
+// 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE
+// (at least a valid email address)
+//
+// 2. PLEASE TRY TO USE UTF-8 FOR ENCODING;
+// (if this is not possible, please include a comment
+// that states what encoding is necessary.)
+
+ListType.I18N = {
+ "Decimal" : "Decimal numbers",
+ "Lower roman" : "Lower roman numbers",
+ "Upper roman" : "Upper roman numbers",
+ "Lower latin" : "Lower latin letters",
+ "Upper latin" : "Upper latin letters",
+ "Lower greek" : "Lower greek letters",
+ "ListStyleTooltip" : "Choose list style type (for ordered lists)"
+};
diff --git a/phpgwapi/js/htmlarea/plugins/ListType/list-type.js b/phpgwapi/js/htmlarea/plugins/ListType/list-type.js
new file mode 100755
index 0000000000..5ae4087556
--- /dev/null
+++ b/phpgwapi/js/htmlarea/plugins/ListType/list-type.js
@@ -0,0 +1,89 @@
+// ListType Plugin for HTMLArea-3.0
+// Sponsored by MEdTech Unit - Queen's University
+// Implementation by Mihai Bazon, http://dynarch.com/mishoo/
+//
+// (c) dynarch.com 2003.
+// Distributed under the same terms as HTMLArea itself.
+// This notice MUST stay intact for use (see license.txt).
+//
+// $Id$
+
+function ListType(editor) {
+ this.editor = editor;
+ var cfg = editor.config;
+ var toolbar = cfg.toolbar;
+ var self = this;
+ var i18n = ListType.I18N;
+ var options = {};
+ options[i18n["Decimal"]] = "decimal";
+ options[i18n["Lower roman"]] = "lower-roman";
+ options[i18n["Upper roman"]] = "upper-roman";
+ options[i18n["Lower latin"]] = "lower-alpha";
+ options[i18n["Upper latin"]] = "upper-alpha";
+ if (!HTMLArea.is_ie)
+ // IE doesn't support this property; even worse, it complains
+ // with a gross error message when we tried to select it,
+ // therefore let's hide it from the damn "browser".
+ options[i18n["Lower greek"]] = "lower-greek";
+ var obj = {
+ id : "ListType",
+ tooltip : i18n["ListStyleTooltip"],
+ options : options,
+ action : function(editor) { self.onSelect(editor, this); },
+ refresh : function(editor) { self.updateValue(editor, this); },
+ context : "ol"
+ };
+ cfg.registerDropdown(obj);
+ var a, i, j, found = false;
+ for (i = 0; !found && i < toolbar.length; ++i) {
+ a = toolbar[i];
+ for (j = 0; j < a.length; ++j) {
+ if (a[j] == "unorderedlist") {
+ found = true;
+ break;
+ }
+ }
+ }
+ if (found)
+ a.splice(j, 0, "space", "ListType", "space");
+};
+
+ListType._pluginInfo = {
+ name : "ListType",
+ version : "1.0",
+ developer : "Mihai Bazon",
+ developer_url : "http://dynarch.com/mishoo/",
+ c_owner : "dynarch.com",
+ sponsor : "MEdTech Unit - Queen's University",
+ sponsor_url : "http://www.queensu.ca/",
+ license : "htmlArea"
+};
+
+ListType.prototype.onSelect = function(editor, combo) {
+ var tbobj = editor._toolbarObjects[combo.id].element;
+ var parent = editor.getParentElement();
+ while (!/^ol$/i.test(parent.tagName)) {
+ parent = parent.parentNode;
+ }
+ parent.style.listStyleType = tbobj.value;
+};
+
+ListType.prototype.updateValue = function(editor, combo) {
+ var tbobj = editor._toolbarObjects[combo.id].element;
+ var parent = editor.getParentElement();
+ while (parent && !/^ol$/i.test(parent.tagName)) {
+ parent = parent.parentNode;
+ }
+ if (!parent) {
+ tbobj.selectedIndex = 0;
+ return;
+ }
+ var type = parent.style.listStyleType;
+ if (!type) {
+ tbobj.selectedIndex = 0;
+ } else {
+ for (var i = tbobj.firstChild; i; i = i.nextSibling) {
+ i.selected = (type.indexOf(i.value) != -1);
+ }
+ }
+};