Add new Xinha version
authorJamie Cameron <jcameron@webmin.com>
Thu, 8 Oct 2009 06:58:25 +0000 (23:58 -0700)
committerJamie Cameron <jcameron@webmin.com>
Thu, 8 Oct 2009 06:58:25 +0000 (23:58 -0700)
263 files changed:
mailboxes/reply_mail.cgi
mailboxes/xinha/Xinha.css [new file with mode: 0644]
mailboxes/xinha/XinhaCore.js [new file with mode: 0644]
mailboxes/xinha/contrib/php-xinha.php [new file with mode: 0644]
mailboxes/xinha/examples/ExtendedDemo.html [new file with mode: 0644]
mailboxes/xinha/examples/Newbie.html [new file with mode: 0644]
mailboxes/xinha/examples/XinhaConfig.js [new file with mode: 0644]
mailboxes/xinha/examples/files/Extended.html [new file with mode: 0644]
mailboxes/xinha/examples/files/custom.css [new file with mode: 0644]
mailboxes/xinha/examples/files/dynamic.css [new file with mode: 0644]
mailboxes/xinha/examples/files/ext_example-body.html [new file with mode: 0644]
mailboxes/xinha/examples/files/ext_example-dest.php [new file with mode: 0644]
mailboxes/xinha/examples/files/ext_example-menu.php [new file with mode: 0644]
mailboxes/xinha/examples/files/full_example.css [new file with mode: 0644]
mailboxes/xinha/examples/files/stylist.css [new file with mode: 0644]
mailboxes/xinha/examples/simple_example.html [new file with mode: 0644]
mailboxes/xinha/examples/testbed.html [new file with mode: 0644]
mailboxes/xinha/htmlarea.js [new file with mode: 0644]
mailboxes/xinha/iconsets/Classic/de/bold.gif [new file with mode: 0644]
mailboxes/xinha/iconsets/Classic/de/italic.gif [new file with mode: 0644]
mailboxes/xinha/iconsets/Classic/de/underline.gif [new file with mode: 0644]
mailboxes/xinha/iconsets/Classic/ed_buttons_main.gif [new file with mode: 0644]
mailboxes/xinha/iconsets/Classic/ed_charmap.gif [new file with mode: 0644]
mailboxes/xinha/iconsets/Classic/ed_selectall.gif [new file with mode: 0644]
mailboxes/xinha/iconsets/Classic/fr/bold.gif [new file with mode: 0644]
mailboxes/xinha/iconsets/Classic/fr/strikethrough.gif [new file with mode: 0644]
mailboxes/xinha/iconsets/Classic/fr/underline.gif [new file with mode: 0644]
mailboxes/xinha/iconsets/Classic/iconset.xml [new file with mode: 0644]
mailboxes/xinha/iconsets/Crystal/LICENSE [new file with mode: 0644]
mailboxes/xinha/iconsets/Crystal/README [new file with mode: 0644]
mailboxes/xinha/iconsets/Crystal/ed_buttons_main.png [new file with mode: 0644]
mailboxes/xinha/iconsets/Crystal/iconset.xml [new file with mode: 0644]
mailboxes/xinha/iconsets/Tango/LICENSE [new file with mode: 0644]
mailboxes/xinha/iconsets/Tango/README [new file with mode: 0644]
mailboxes/xinha/iconsets/Tango/ed_buttons_main.png [new file with mode: 0644]
mailboxes/xinha/iconsets/Tango/iconset.xml [new file with mode: 0644]
mailboxes/xinha/images/de/bold.gif [new file with mode: 0644]
mailboxes/xinha/images/de/italic.gif [new file with mode: 0644]
mailboxes/xinha/images/de/underline.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_about.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_align.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_align_center.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_align_justify.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_align_left.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_align_right.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_blank.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_buttons_main.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_buttons_main.png [new file with mode: 0644]
mailboxes/xinha/images/ed_charmap.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_clearfonts.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_color_bg.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_color_fg.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_copy.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_custom.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_cut.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_delete.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_format_bold.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_format_italic.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_format_strike.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_format_sub.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_format_sup.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_format_underline.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_help.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_hr.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_html.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_image.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_indent_less.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_indent_more.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_killword.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_left_to_right.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_link.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_list_bullet.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_list_num.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_overwrite.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_paste.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_print.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_redo.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_right_to_left.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_rmformat.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_save.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_save.png [new file with mode: 0644]
mailboxes/xinha/images/ed_saveas.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_selectall.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_show_border.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_splitblock.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_splitcel.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_undo.gif [new file with mode: 0644]
mailboxes/xinha/images/ed_word_cleaner.gif [new file with mode: 0644]
mailboxes/xinha/images/fr/bold.gif [new file with mode: 0644]
mailboxes/xinha/images/fr/strikethrough.gif [new file with mode: 0644]
mailboxes/xinha/images/fr/underline.gif [new file with mode: 0644]
mailboxes/xinha/images/fullscreen_maximize.gif [new file with mode: 0644]
mailboxes/xinha/images/fullscreen_minimize.gif [new file with mode: 0644]
mailboxes/xinha/images/insert_table.gif [new file with mode: 0644]
mailboxes/xinha/images/insertfilelink.gif [new file with mode: 0644]
mailboxes/xinha/images/insertmacro.png [new file with mode: 0644]
mailboxes/xinha/images/tango/16x16/actions/document-new.png [new file with mode: 0644]
mailboxes/xinha/images/tango/16x16/actions/document-open.png [new file with mode: 0644]
mailboxes/xinha/images/tango/16x16/actions/document-print.png [new file with mode: 0644]
mailboxes/xinha/images/tango/16x16/actions/document-save.png [new file with mode: 0644]
mailboxes/xinha/images/tango/16x16/actions/edit-copy.png [new file with mode: 0644]
mailboxes/xinha/images/tango/16x16/actions/edit-redo.png [new file with mode: 0644]
mailboxes/xinha/images/tango/16x16/actions/edit-select-all.png [new file with mode: 0644]
mailboxes/xinha/images/tango/16x16/actions/edit-undo.png [new file with mode: 0644]
mailboxes/xinha/images/tango/16x16/actions/folder-new.png [new file with mode: 0644]
mailboxes/xinha/images/tango/16x16/actions/format-direction-left-to-right.png [new file with mode: 0755]
mailboxes/xinha/images/tango/16x16/actions/format-direction-right-to-left.png [new file with mode: 0755]
mailboxes/xinha/images/tango/16x16/actions/format-indent-less.png [new file with mode: 0644]
mailboxes/xinha/images/tango/16x16/actions/format-indent-more.png [new file with mode: 0644]
mailboxes/xinha/images/tango/16x16/actions/format-justify-center.png [new file with mode: 0644]
mailboxes/xinha/images/tango/16x16/actions/format-justify-fill.png [new file with mode: 0644]
mailboxes/xinha/images/tango/16x16/actions/format-justify-left.png [new file with mode: 0644]
mailboxes/xinha/images/tango/16x16/actions/format-justify-right.png [new file with mode: 0644]
mailboxes/xinha/images/tango/16x16/actions/format-text-background-color.png [new file with mode: 0644]
mailboxes/xinha/images/tango/16x16/actions/format-text-bold.png [new file with mode: 0644]
mailboxes/xinha/images/tango/16x16/actions/format-text-color.png [new file with mode: 0644]
mailboxes/xinha/images/tango/16x16/actions/format-text-italic.png [new file with mode: 0644]
mailboxes/xinha/images/tango/16x16/actions/format-text-strikethrough.png [new file with mode: 0644]
mailboxes/xinha/images/tango/16x16/actions/format-text-subscript.png [new file with mode: 0644]
mailboxes/xinha/images/tango/16x16/actions/format-text-superscript.png [new file with mode: 0644]
mailboxes/xinha/images/tango/16x16/actions/format-text-underline.png [new file with mode: 0644]
mailboxes/xinha/images/tango/16x16/actions/go-up.png [new file with mode: 0644]
mailboxes/xinha/images/tango/16x16/actions/insert-link.png [new file with mode: 0755]
mailboxes/xinha/images/tango/16x16/actions/insert-table.png [new file with mode: 0755]
mailboxes/xinha/images/tango/16x16/actions/toggle-borders.png [new file with mode: 0755]
mailboxes/xinha/images/tango/16x16/actions/view-fullscreen.png [new file with mode: 0644]
mailboxes/xinha/images/tango/16x16/actions/view-restore.png [new file with mode: 0644]
mailboxes/xinha/images/tango/16x16/apps/accessories-character-map.png [new file with mode: 0644]
mailboxes/xinha/images/tango/16x16/apps/help-browser.png [new file with mode: 0644]
mailboxes/xinha/images/tango/16x16/mimetypes/image-x-generic.png [new file with mode: 0644]
mailboxes/xinha/images/tango/16x16/places/user-trash.png [new file with mode: 0644]
mailboxes/xinha/images/tango/32x32/apps/internet-web-browser.png [new file with mode: 0644]
mailboxes/xinha/images/tango/32x32/mimetypes/text-html.png [new file with mode: 0644]
mailboxes/xinha/images/tango/32x32/mimetypes/text-x-generic.png [new file with mode: 0644]
mailboxes/xinha/images/tango/32x32/mimetypes/x-office-document.png [new file with mode: 0644]
mailboxes/xinha/images/tango/32x32/places/folder.png [new file with mode: 0644]
mailboxes/xinha/images/tango/32x32/places/network-server.png [new file with mode: 0644]
mailboxes/xinha/images/tango/COPYING [new file with mode: 0644]
mailboxes/xinha/images/tidy.gif [new file with mode: 0644]
mailboxes/xinha/images/toggle_borders.gif [new file with mode: 0644]
mailboxes/xinha/images/xinha-small-icon.gif [new file with mode: 0644]
mailboxes/xinha/images/xinha_logo.gif [new file with mode: 0644]
mailboxes/xinha/lang/b5.js [new file with mode: 0644]
mailboxes/xinha/lang/ch.js [new file with mode: 0644]
mailboxes/xinha/lang/cz.js [new file with mode: 0644]
mailboxes/xinha/lang/da.js [new file with mode: 0644]
mailboxes/xinha/lang/de.js [new file with mode: 0644]
mailboxes/xinha/lang/ee.js [new file with mode: 0644]
mailboxes/xinha/lang/el.js [new file with mode: 0644]
mailboxes/xinha/lang/es.js [new file with mode: 0644]
mailboxes/xinha/lang/eu.js [new file with mode: 0644]
mailboxes/xinha/lang/fa.js [new file with mode: 0644]
mailboxes/xinha/lang/fi.js [new file with mode: 0644]
mailboxes/xinha/lang/fr.js [new file with mode: 0644]
mailboxes/xinha/lang/gb.js [new file with mode: 0644]
mailboxes/xinha/lang/he.js [new file with mode: 0644]
mailboxes/xinha/lang/hu.js [new file with mode: 0644]
mailboxes/xinha/lang/it.js [new file with mode: 0644]
mailboxes/xinha/lang/ja.js [new file with mode: 0644]
mailboxes/xinha/lang/lt.js [new file with mode: 0644]
mailboxes/xinha/lang/lv.js [new file with mode: 0644]
mailboxes/xinha/lang/nb.js [new file with mode: 0644]
mailboxes/xinha/lang/nl.js [new file with mode: 0644]
mailboxes/xinha/lang/pl.js [new file with mode: 0644]
mailboxes/xinha/lang/pt_br.js [new file with mode: 0644]
mailboxes/xinha/lang/ro.js [new file with mode: 0644]
mailboxes/xinha/lang/ru.js [new file with mode: 0644]
mailboxes/xinha/lang/sh.js [new file with mode: 0644]
mailboxes/xinha/lang/si.js [new file with mode: 0644]
mailboxes/xinha/lang/sr.js [new file with mode: 0644]
mailboxes/xinha/lang/sv.js [new file with mode: 0644]
mailboxes/xinha/lang/th.js [new file with mode: 0644]
mailboxes/xinha/lang/vn.js [new file with mode: 0644]
mailboxes/xinha/license.txt [new file with mode: 0644]
mailboxes/xinha/modules/AboutBox/AboutBox.js [new file with mode: 0644]
mailboxes/xinha/modules/AboutBox/about.css [new file with mode: 0644]
mailboxes/xinha/modules/AboutBox/dialog.html [new file with mode: 0644]
mailboxes/xinha/modules/ColorPicker/ColorPicker.js [new file with mode: 0644]
mailboxes/xinha/modules/ColorPicker/lang/pt_br.js [new file with mode: 0644]
mailboxes/xinha/modules/CreateLink/dialog.html [new file with mode: 0644]
mailboxes/xinha/modules/CreateLink/lang/pt_br.js [new file with mode: 0644]
mailboxes/xinha/modules/CreateLink/link.html [new file with mode: 0644]
mailboxes/xinha/modules/CreateLink/link.js [new file with mode: 0644]
mailboxes/xinha/modules/CreateLink/pluginMethods.js [new file with mode: 0644]
mailboxes/xinha/modules/Dialogs/XinhaDialog.js [new file with mode: 0644]
mailboxes/xinha/modules/Dialogs/dialog.js [new file with mode: 0644]
mailboxes/xinha/modules/Dialogs/panel-dialog.js [new file with mode: 0644]
mailboxes/xinha/modules/Dialogs/popupwin.js [new file with mode: 0644]
mailboxes/xinha/modules/FullScreen/full-screen.js [new file with mode: 0644]
mailboxes/xinha/modules/FullScreen/lang/de.js [new file with mode: 0644]
mailboxes/xinha/modules/FullScreen/lang/es.js [new file with mode: 0644]
mailboxes/xinha/modules/FullScreen/lang/fr.js [new file with mode: 0644]
mailboxes/xinha/modules/FullScreen/lang/ja.js [new file with mode: 0644]
mailboxes/xinha/modules/FullScreen/lang/nb.js [new file with mode: 0644]
mailboxes/xinha/modules/FullScreen/lang/nl.js [new file with mode: 0644]
mailboxes/xinha/modules/FullScreen/lang/pl.js [new file with mode: 0644]
mailboxes/xinha/modules/FullScreen/lang/pt_br.js [new file with mode: 0644]
mailboxes/xinha/modules/FullScreen/lang/ru.js [new file with mode: 0644]
mailboxes/xinha/modules/FullScreen/lang/sv.js [new file with mode: 0755]
mailboxes/xinha/modules/Gecko/Gecko.js [new file with mode: 0644]
mailboxes/xinha/modules/Gecko/paraHandlerBest.js [new file with mode: 0644]
mailboxes/xinha/modules/GetHtml/DOMwalk.js [new file with mode: 0644]
mailboxes/xinha/modules/GetHtml/TransformInnerHTML.js [new file with mode: 0644]
mailboxes/xinha/modules/GetHtml/lang/pt_br.js [new file with mode: 0644]
mailboxes/xinha/modules/InlineStyler/InlineStyler.js [new file with mode: 0644]
mailboxes/xinha/modules/InsertImage/dialog.html [new file with mode: 0644]
mailboxes/xinha/modules/InsertImage/insert_image.html [new file with mode: 0644]
mailboxes/xinha/modules/InsertImage/insert_image.js [new file with mode: 0644]
mailboxes/xinha/modules/InsertImage/pluginMethods.js [new file with mode: 0644]
mailboxes/xinha/modules/InsertTable/dialog.html [new file with mode: 0644]
mailboxes/xinha/modules/InsertTable/insert_table.html [new file with mode: 0644]
mailboxes/xinha/modules/InsertTable/insert_table.js [new file with mode: 0644]
mailboxes/xinha/modules/InsertTable/pluginMethods.js [new file with mode: 0644]
mailboxes/xinha/modules/InternetExplorer/InternetExplorer.js [new file with mode: 0644]
mailboxes/xinha/modules/Opera/Opera.js [new file with mode: 0644]
mailboxes/xinha/modules/WebKit/WebKit.js [new file with mode: 0644]
mailboxes/xinha/popups/blank.html [new file with mode: 0644]
mailboxes/xinha/popups/editor_help.html [new file with mode: 0644]
mailboxes/xinha/popups/popup.css [new file with mode: 0644]
mailboxes/xinha/popups/popup.js [new file with mode: 0644]
mailboxes/xinha/popups/select_color.html [new file with mode: 0644]
mailboxes/xinha/release-notes.txt [new file with mode: 0644]
mailboxes/xinha/skins/blue-look/button-background.png [new file with mode: 0644]
mailboxes/xinha/skins/blue-look/separator.gif [new file with mode: 0644]
mailboxes/xinha/skins/blue-look/skin.css [new file with mode: 0644]
mailboxes/xinha/skins/blue-metallic/button-background.png [new file with mode: 0644]
mailboxes/xinha/skins/blue-metallic/separator.gif [new file with mode: 0644]
mailboxes/xinha/skins/blue-metallic/skin.css [new file with mode: 0644]
mailboxes/xinha/skins/green-look/button-background.gif [new file with mode: 0644]
mailboxes/xinha/skins/green-look/separator.gif [new file with mode: 0644]
mailboxes/xinha/skins/green-look/skin.css [new file with mode: 0644]
mailboxes/xinha/skins/inditreuse/README [new file with mode: 0644]
mailboxes/xinha/skins/inditreuse/back.png [new file with mode: 0644]
mailboxes/xinha/skins/inditreuse/button-background.png [new file with mode: 0644]
mailboxes/xinha/skins/inditreuse/hover.png [new file with mode: 0644]
mailboxes/xinha/skins/inditreuse/selected.png [new file with mode: 0644]
mailboxes/xinha/skins/inditreuse/separator.png [new file with mode: 0644]
mailboxes/xinha/skins/inditreuse/skin.css [new file with mode: 0644]
mailboxes/xinha/skins/silva/dialog.jpg [new file with mode: 0644]
mailboxes/xinha/skins/silva/html.gif [new file with mode: 0644]
mailboxes/xinha/skins/silva/skin.css [new file with mode: 0644]
mailboxes/xinha/skins/silva/skin.xml [new file with mode: 0644]
mailboxes/xinha/skins/silva/statusbar.png [new file with mode: 0644]
mailboxes/xinha/skins/silva/toolbar.png [new file with mode: 0644]
mailboxes/xinha/skins/titan/README [new file with mode: 0644]
mailboxes/xinha/skins/titan/back.png [new file with mode: 0644]
mailboxes/xinha/skins/titan/button-background.png [new file with mode: 0644]
mailboxes/xinha/skins/titan/hover.png [new file with mode: 0644]
mailboxes/xinha/skins/titan/selected.png [new file with mode: 0644]
mailboxes/xinha/skins/titan/separator.png [new file with mode: 0644]
mailboxes/xinha/skins/titan/skin.css [new file with mode: 0644]
mailboxes/xinha/skins/xp-blue/back.png [new file with mode: 0644]
mailboxes/xinha/skins/xp-blue/button-background.png [new file with mode: 0644]
mailboxes/xinha/skins/xp-blue/hover.png [new file with mode: 0644]
mailboxes/xinha/skins/xp-blue/selected.png [new file with mode: 0644]
mailboxes/xinha/skins/xp-blue/separator.png [new file with mode: 0644]
mailboxes/xinha/skins/xp-blue/skin.css [new file with mode: 0644]
mailboxes/xinha/skins/xp-green/back.png [new file with mode: 0644]
mailboxes/xinha/skins/xp-green/button-background.png [new file with mode: 0644]
mailboxes/xinha/skins/xp-green/hover.png [new file with mode: 0644]
mailboxes/xinha/skins/xp-green/selected.png [new file with mode: 0644]
mailboxes/xinha/skins/xp-green/separator.png [new file with mode: 0644]
mailboxes/xinha/skins/xp-green/skin.css [new file with mode: 0644]

index 0ebe46e..e47d248 100755 (executable)
@@ -28,7 +28,7 @@ if ($in{'new'}) {
                }
        $to = $in{'to'};
        &mail_page_header($text{'compose_title'}, undef,
-                         $html_edit ? "onload='initEditor()'" : "",
+                         $html_edit ? "onload='xinha_init()'" : "",
                          &folder_link($in{'user'}, $folder));
        }
 else {
@@ -447,14 +447,16 @@ if ($html_edit) {
   _editor_url = "$gconfig{'webprefix'}/$module_name/xinha/";
   _editor_lang = "en";
 </script>
-<script type="text/javascript" src="xinha/htmlarea.js"></script>
+<script type="text/javascript" src="xinha/XinhaCore.js"></script>
 
 <script type="text/javascript">
-var editor = null;
-function initEditor() {
-  editor = new HTMLArea("body");
-  editor.generate();
-  return false;
+xinha_init = function()
+{
+xinha_editors = [ "body" ];
+xinha_plugins = [ ];
+xinha_config = new Xinha.Config();
+xinha_editors = Xinha.makeEditors(xinha_editors, xinha_config, xinha_plugins);
+Xinha.startEditors(xinha_editors);
 }
 </script>
 EOF
diff --git a/mailboxes/xinha/Xinha.css b/mailboxes/xinha/Xinha.css
new file mode 100644 (file)
index 0000000..b7a7b96
--- /dev/null
@@ -0,0 +1,3 @@
+/* This compressed file is part of Xinha. For uncompressed sources, forum, and bug reports, go to xinha.org */
+/* This file is part of version 0.96beta2 released Fri, 20 Mar 2009 11:01:14 +0100 */
+.htmlarea{background:#fff;}.htmlarea td{margin:0;padding:0;}.htmlarea .toolbarRow{width:1px;}.htmlarea .toolbar{cursor:default;background:ButtonFace;padding:3px;border:1px solid;border-color:ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;}.htmlarea .toolbar table{margin:0;font-family:Tahoma,Verdana,sans-serif;font-size:11px;}.htmlarea .toolbar img{border:none;vertical-align:top;}.htmlarea .toolbar .label{padding:0 3px;}.htmlarea .toolbar .button{background:ButtonFace;color:ButtonText;border:1px solid ButtonFace;padding:1px;margin:0;width:18px;height:18px;}.htmlarea .toolbar a.button:hover{border:1px solid;border-color:ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;}.htmlarea .toolbar a.buttonDisabled:hover{border-color:ButtonFace;}.htmlarea .toolbar .buttonActive,.htmlarea .toolbar .buttonPressed{padding:2px 0 0 2px;border:1px solid;border-color:ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;}.htmlarea .toolbar .buttonPressed{background:ButtonHighlight;}.htmlarea .toolbar .indicator{padding:0 3px;overflow:hidden;width:20px;text-align:center;cursor:default;border:1px solid ButtonShadow;}.htmlarea .toolbar .buttonDisabled img{filter:gray() alpha(opacity = 25);-moz-opacity:.25;opacity:.25;}.htmlarea .toolbar .separator{margin:0 3px;border-left:1px solid ButtonShadow;border-right:1px solid ButtonHighlight;width:0;height:18px;padding:0;}.htmlarea .toolbar .space{width:5px;}.htmlarea .toolbar select,.htmlarea .toolbar option{font:11px Tahoma,Verdana,sans-serif;}.htmlarea .toolbar select,.htmlarea .toolbar select:hover,.htmlarea .toolbar select:active{position:relative;top:-2px;margin-bottom:-2px;color:ButtonText;}.htmlarea iframe.xinha_iframe,.htmlarea textarea.xinha_textarea{border:none;}.htmlarea .statusBar{border:1px solid;border-color:ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;padding:2px 4px;background-color:ButtonFace;color:ButtonText;font:11px Tahoma,Verdana,sans-serif;height:16px;overflow:hidden;}.htmlarea .statusBar .statusBarTree a{padding:2px 5px;color:#00f;}.htmlarea .statusBar .statusBarTree a:visited{color:#00f;}.htmlarea .statusBar .statusBarTree a:hover{background-color:Highlight;color:HighlightText;padding:1px 4px;border:1px solid HighlightText;}.statusBarWidgetContainer{background-color:ButtonFace;}.dialog{color:ButtonText;background:ButtonFace;border:1px outset;border-color:WindowFrame;}div.dialog{padding-bottom:10px;border-radius:8px 8px 0 0;-moz-border-radius:8px 8px 0 0;-webkit-border-top-left-radius:8px;-webkit-border-top-right-radius:8px;box-shadow:9px 9px 10px #444;-moz-box-shadow:9px 9px 10px #444;-webkit-box-shadow:9px 9px 10px #444;}div.dialog.modeless{box-shadow:4px 4px 5px #888;-moz-box-shadow:4px 4px 5px #888;-webkit-box-shadow:4px 4px 5px #888;}div.dialog.chrome{-webkit-box-shadow:none!IMPORTANT;}.panels div.dialog.panel{border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;box-shadow:none;-moz-box-shadow:none;-webkit-box-shadow:none;}.xinha_dialog_background{filter:alpha(opacity=0);-moz-opacity:0;opacity:0;border:none;}.xinha_dialog_background_modal_greyout{background-color:#666;filter:alpha(opacity=70)!IMPORTANT;-moz-opacity:.7;opacity:.7;}.xinha_dialog_background_modal{filter:alpha(opacity=0)!IMPORTANT;-moz-opacity:0;opacity:0;border:none;}body.xinha_dialog_background_modal_greyout{filter:alpha(opacity=100)!IMPORTANT;}body.xinha_dialog_background_modal{filter:alpha(opacity=0);}.dialog .content{padding:2px;}.dialog,.dialog button,.dialog input,.dialog select,.dialog textarea,.dialog table{font:11px Tahoma,Verdana,sans-serif;}.dialog table{border-collapse:collapse;}.dialog .title,.dialog h1{background:ActiveCaption;color:CaptionText;border-bottom:1px solid #000;padding:1px 0 2px 5px;font-size:12px;font-weight:bold;cursor:default;letter-spacing:.01em;}.dialog h1{margin:0;border-radius:8px 8px 0 0;-moz-border-radius:8px 8px 0 0;-webkit-border-top-left-radius:8px;-webkit-border-top-right-radius:8px;}.panels .dialog.panel h1{-moz-border-radius:0;-webkit-border-radius:0;}.dialog .title .button{float:right;border:1px solid #66a;padding:0 1px 0 2px;margin-right:1px;color:#fff;text-align:center;}.dialog .title .button-hilite{border-color:#88f;background:#44c;}.dialog button{width:5.5em;padding:0;}.dialog .closeButton{padding:0;cursor:default;border:1px solid;border-color:ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;height:11px;width:11px;vertical-align:top;position:absolute;top:3px;right:2px;background-color:ButtonFace;color:ButtonText;font-size:13px;font-family:Tahoma,Verdana,sans-serif;text-align:center;letter-spacing:0;overflow:hidden;}.dialog .buttonColor{width:1em;padding:1px;cursor:default;border:1px solid;border-color:ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;}.dialog .buttonColor .chooser,.dialog .buttonColor .nocolor{height:.6em;border:1px solid;padding:0 1em;border-color:ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;}.dialog .buttonClick{border-color:ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;}.dialog .buttonColor-hilite{border-color:ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;}.dialog .buttonColor .nocolor{padding:0;}.dialog .buttonColor .nocolor-hilite{background-color:#fff;color:#f00;}.dialog .label{text-align:right;width:6em;}.dialog .value input{width:100%;}.dialog legend{font-weight:bold;}.dialog fieldset table{margin:2px 0;}.dialog .buttons{padding:1em;text-align:center;}.dialog .resizeHandle{-moz-appearance:resizer;width:12px;height:12px;border-bottom:2px solid #000;border-right:2px solid #000;cursor:se-resize;}.popupwin{padding:0;margin:0;}.popupwin .title{background:#fff;color:#000;font-weight:bold;font-size:120%;padding:3px 10px;margin-bottom:10px;border-bottom:1px solid black;letter-spacing:2px;}form{margin:0;border:none;}.htmlarea .panels_top{border-bottom:1px solid;border-color:ButtonShadow;}.htmlarea .panels_right{border-left:1px solid;border-color:ButtonShadow;}.htmlarea .panels_left{border-right:1px solid;border-color:ButtonShadow;}.htmlarea .panels_bottom{border-top:1px solid;border-color:ButtonShadow;}.htmlarea .panel h1{clear:left;font-size:.9em;}.htmlarea .panel{overflow:hidden;background-color:white;padding-bottom:0!IMPORTANT;border:none!IMPORTANT;}.htmlarea .panels_left .panel{border-right:none;border-left:none;}.htmlarea .panels_left h1{border-right:none;}.htmlarea .panels_right .panel{border-right:none;border-left:none;}.htmlarea .panels_left h1{border-left:none;}.htmlarea{border:1px solid black;}.loading{font-family:sans-serif;position:absolute;z-index:998;text-align:center;width:212px;padding:55px 0 5px 0;border:2px solid #ccc;background:url(images/xinha_logo.gif) no-repeat #fff center 5px;}.loading_main{font-size:11px;color:#000;}.loading_sub{font-size:9px;color:#666;text-align:center;}.dialog a img{border:0 none transparent;}.dialog fieldset.collapsed{border:0 none transparent;}.dialog fieldset.collapsed form{display:none;}.hidden{display:none;}.placesmanager{width:95%;overflow:auto;}.filemanager{width:95%;height:200px;overflow:auto;background-color:#fff;}.filemanager div.file{min-width:80px;height:100px;position:relative;float:left;border:1px outset #666;margin:4px;}.placesmanager div.file{min-width:60px;height:70px;position:relative;float:left;border:1px outset #666;margin:4px;}.filemanager div.file:hover,.placesmanager div.file:hover{border:1px solid #333;background:#fffff3;}.filemanager div.selected,.filemanager div.selected:hover,.placesmanager div.selected,.placesmanager div.selected:hover{background:#ffffda;border:1px solid #000;}.filemanager .filename{margin:.5em;color:#222;}.filemanager div.selected .filename{color:#000;}.filemanager img.thumb{width:50px;height:50px;position:absolute;top:50%;left:50%;margin:-25px 0 0 -25px;border:1px solid black;}.filemanager img.icon{width:32px;height:32px;position:absolute;top:50%;left:50%;margin:-16px 0 0 -16px;}.filemanager img.action{width:15px;height:15px;position:absolute;}.filemanager img.delete{bottom:3px;left:20px;}.filemanager img.copy{bottom:3px;left:3px;}
\ No newline at end of file
diff --git a/mailboxes/xinha/XinhaCore.js b/mailboxes/xinha/XinhaCore.js
new file mode 100644 (file)
index 0000000..06305af
--- /dev/null
@@ -0,0 +1,18 @@
+/* This compressed file is part of Xinha. For uncompressed sources, forum, and bug reports, go to xinha.org */
+/* This file is part of version 0.96beta2 released Fri, 20 Mar 2009 11:01:14 +0100 */
+/* The URL of the most recent uncompressed version of this file is http://svn.xinha.org/trunk/XinhaCore.js */
+  /*--------------------------------------------------------------------------
+    --  Xinha (is not htmlArea) - http://xinha.org
+    --
+    --  Use of Xinha is granted by the terms of the htmlArea License (based on
+    --  BSD license)  please read license.txt in this package for details.
+    --
+    --  Copyright (c) 2005-2009 Xinha Developer Team and contributors
+    --  
+    --  Xinha was originally based on work by Mihai Bazon which is:
+    --      Copyright (c) 2003-2004 dynarch.com.
+    --      Copyright (c) 2002-2003 interactivetools.com, inc.
+    --      This copyright notice MUST stay intact for use.
+    -------------------------------------------------------------------------*/
+
+Xinha.version={Release:"0.96beta2",Head:"$HeadURL: http://svn.xinha.org/trunk/XinhaCore.js $".replace(/^[^:]*:\s*(.*)\s*\$$/,"$1"),Date:"$LastChangedDate: 2009-03-19 22:40:09 +0100 (Do, 19. Mär 2009) $".replace(/^[^:]*:\s*([0-9\-]*) ([0-9:]*) ([+0-9]*) \((.*)\)\s*\$/,"$4 $2 $3"),Revision:"$LastChangedRevision: 1170 $".replace(/^[^:]*:\s*(.*)\s*\$$/,"$1"),RevisionBy:"$LastChangedBy: ray $".replace(/^[^:]*:\s*(.*)\s*\$$/,"$1")};Xinha._resolveRelativeUrl=function(d,c){if(c.match(/^([^:]+\:)?\/\//)){return c}else{var a=d.split("/");if(a[a.length-1]===""){a.pop()}var e=c.split("/");if(e[0]=="."){e.shift()}while(e[0]==".."){a.pop();e.shift()}return a.join("/")+"/"+e.join("/")}};if(typeof _editor_url=="string"){_editor_url=_editor_url.replace(/\x2f*$/,"/");if(!_editor_url.match(/^([^:]+\:)?\//)){(function(){var a=window.location.toString().replace(/\?.*$/,"").split("/");a.pop();_editor_url=Xinha._resolveRelativeUrl(a.join("/"),_editor_url)})()}}else{alert("WARNING: _editor_url is not set!  You should set this variable to the editor files path; it should preferably be an absolute path, like in '/xinha/', but it can be relative if you prefer.  Further we will try to load the editor files correctly but we'll probably fail.");_editor_url=""}if(typeof _editor_lang=="string"){_editor_lang=_editor_lang.toLowerCase()}else{_editor_lang="en"}if(typeof _editor_skin!=="string"){_editor_skin=""}if(typeof _editor_icons!=="string"){_editor_icons=""}var __xinhas=[];Xinha.agt=navigator.userAgent.toLowerCase();Xinha.is_ie=((Xinha.agt.indexOf("msie")!=-1)&&(Xinha.agt.indexOf("opera")==-1));Xinha.ie_version=parseFloat(Xinha.agt.substring(Xinha.agt.indexOf("msie")+5));Xinha.is_opera=(Xinha.agt.indexOf("opera")!=-1);if(Xinha.is_opera&&Xinha.agt.match(/opera[\/ ]([0-9.]+)/)){Xinha.opera_version=parseFloat(RegExp.$1)}else{Xinha.opera_version=0}Xinha.is_khtml=(Xinha.agt.indexOf("khtml")!=-1);Xinha.is_webkit=(Xinha.agt.indexOf("applewebkit")!=-1);Xinha.webkit_version=parseInt(navigator.appVersion.replace(/.*?AppleWebKit\/([\d]).*?/,"$1"),10);Xinha.is_safari=(Xinha.agt.indexOf("safari")!=-1);Xinha.is_chrome=(Xinha.agt.indexOf("chrome")!=-1);Xinha.is_mac=(Xinha.agt.indexOf("mac")!=-1);Xinha.is_mac_ie=(Xinha.is_ie&&Xinha.is_mac);Xinha.is_win_ie=(Xinha.is_ie&&!Xinha.is_mac);Xinha.is_gecko=(navigator.product=="Gecko")||Xinha.is_opera;Xinha.is_real_gecko=(navigator.product=="Gecko"&&!Xinha.is_webkit);Xinha.is_ff3=Xinha.is_real_gecko&&parseInt(navigator.productSub,10)>=2007121016;Xinha.is_ff2=Xinha.is_real_gecko&&parseInt(navigator.productSub,10)<2007121016;Xinha.isRunLocally=document.URL.toLowerCase().search(/^file:/)!=-1;Xinha.is_designMode=(typeof document.designMode!="undefined"&&!Xinha.is_ie);Xinha.checkSupportedBrowser=function(){return Xinha.is_real_gecko||(Xinha.is_opera&&Xinha.opera_version>=9.2)||Xinha.ie_version>=5.5||Xinha.webkit_version>=522};Xinha.isSupportedBrowser=Xinha.checkSupportedBrowser();if(Xinha.isRunLocally&&Xinha.isSupportedBrowser){alert('Xinha *must* be installed on a web server. Locally opened files (those that use the "file://" protocol) cannot properly function. Xinha will try to initialize but may not be correctly loaded.')}function Xinha(a,c){if(!Xinha.isSupportedBrowser){return}if(!a){throw new Error("Tried to create Xinha without textarea specified.")}if(typeof c=="undefined"){this.config=new Xinha.Config()}else{this.config=c}if(typeof a!="object"){a=Xinha.getElementById("textarea",a)}this._textArea=a;this._textArea.spellcheck=false;Xinha.freeLater(this,"_textArea");this._initial_ta_size={w:a.style.width?a.style.width:(a.offsetWidth?(a.offsetWidth+"px"):(a.cols+"em")),h:a.style.height?a.style.height:(a.offsetHeight?(a.offsetHeight+"px"):(a.rows+"em"))};if(document.getElementById("loading_"+a.id)||this.config.showLoading){if(!document.getElementById("loading_"+a.id)){Xinha.createLoadingMessage(a)}this.setLoadingMessage(Xinha._lc("Constructing object"))}this._editMode="wysiwyg";this.plugins={};this._timerToolbar=null;this._timerUndo=null;this._undoQueue=[this.config.undoSteps];this._undoPos=-1;this._customUndo=true;this._mdoc=document;this.doctype="";this.__htmlarea_id_num=__xinhas.length;__xinhas[this.__htmlarea_id_num]=this;this._notifyListeners={};var b={right:{on:true,container:document.createElement("td"),panels:[]},left:{on:true,container:document.createElement("td"),panels:[]},top:{on:true,container:document.createElement("td"),panels:[]},bottom:{on:true,container:document.createElement("td"),panels:[]}};for(var d in b){if(!b[d].container){continue}b[d].div=b[d].container;b[d].container.className="panels panels_"+d;Xinha.freeLater(b[d],"container");Xinha.freeLater(b[d],"div")}this._panels=b;this._statusBar=null;this._statusBarTree=null;this._statusBarTextMode=null;this._statusBarItems=[];this._framework={};this._htmlArea=null;this._iframe=null;this._doc=null;this._toolBar=this._toolbar=null;this._toolbarObjects={};this.plugins.Events={name:"Events",developer:"The Xinha Core Developer Team",instance:c.Events}}Xinha.onload=function(){};Xinha.init=function(){Xinha.onload()};Xinha.RE_tagName=/(<\/|<)\s*([^ \t\n>]+)/ig;Xinha.RE_doctype=/(<!doctype((.|\n)*?)>)\n?/i;Xinha.RE_head=/<head>((.|\n)*?)<\/head>/i;Xinha.RE_body=/<body[^>]*>((.|\n|\r|\t)*?)<\/body>/i;Xinha.RE_Specials=/([\/\^$*+?.()|{}\[\]])/g;Xinha.escapeStringForRegExp=function(a){return a.replace(Xinha.RE_Specials,"\\$1")};Xinha.RE_email=/^[_a-z\d\-\.]{3,}@[_a-z\d\-]{2,}(\.[_a-z\d\-]{2,})+$/i;Xinha.RE_url=/(https?:\/\/)?(([a-z0-9_]+:[a-z0-9_]+@)?[a-z0-9_\-]{2,}(\.[a-z0-9_\-]{2,}){2,}(:[0-9]+)?(\/\S+)*)/i;Xinha.Config=function(){this.version=Xinha.version.Revision;this.width="auto";this.height="auto";this.sizeIncludesBars=true;this.sizeIncludesPanels=true;this.panel_dimensions={left:"200px",right:"200px",top:"100px",bottom:"100px"};this.iframeWidth=null;this.statusBar=true;this.htmlareaPaste=false;this.mozParaHandler="best";this.getHtmlMethod="DOMwalk";this.undoSteps=20;this.undoTimeout=500;this.changeJustifyWithDirection=false;this.fullPage=false;this.pageStyle="";this.pageStyleSheets=[];this.baseHref=null;this.expandRelativeUrl=true;this.stripBaseHref=true;this.stripSelfNamedAnchors=true;this.only7BitPrintablesInURLs=true;this.sevenBitClean=false;this.specialReplacements={};this.inwardHtml=function(c){return c};this.outwardHtml=function(c){return c};this.autofocus=false;this.killWordOnPaste=true;this.makeLinkShowsTarget=true;this.charSet=(typeof document.characterSet!="undefined")?document.characterSet:document.charset;this.browserQuirksMode=null;this.imgURL="images/";this.popupURL="popups/";this.htmlRemoveTags=null;this.flowToolbars=true;this.toolbarAlign="left";this.showLoading=false;this.stripScripts=true;this.convertUrlsToLinks=true;this.colorPickerCellSize="6px";this.colorPickerGranularity=18;this.colorPickerPosition="bottom,right";this.colorPickerWebSafe=false;this.colorPickerSaveColors=20;this.fullScreen=false;this.fullScreenMargins=[0,0,0,0];this.toolbar=[["popupeditor"],["separator","formatblock","fontname","fontsize","bold","italic","underline","strikethrough"],["separator","forecolor","hilitecolor","textindicator"],["separator","subscript","superscript"],["linebreak","separator","justifyleft","justifycenter","justifyright","justifyfull"],["separator","insertorderedlist","insertunorderedlist","outdent","indent"],["separator","inserthorizontalrule","createlink","insertimage","inserttable"],["linebreak","separator","undo","redo","selectall","print"],(Xinha.is_gecko?[]:["cut","copy","paste","overwrite","saveas"]),["separator","killword","clearfonts","removeformat","toggleborders","splitblock","lefttoright","righttoleft"],["separator","htmlmode","showhelp","about"]];this.fontname={"&mdash; font &mdash;":"",Arial:"arial,helvetica,sans-serif","Courier New":"courier new,courier,monospace",Georgia:"georgia,times new roman,times,serif",Tahoma:"tahoma,arial,helvetica,sans-serif","Times New Roman":"times new roman,times,serif",Verdana:"verdana,arial,helvetica,sans-serif",impact:"impact",WingDings:"wingdings"};this.fontsize={"&mdash; size &mdash;":"","1 (8 pt)":"1","2 (10 pt)":"2","3 (12 pt)":"3","4 (14 pt)":"4","5 (18 pt)":"5","6 (24 pt)":"6","7 (36 pt)":"7"};this.formatblock={"&mdash; format &mdash;":"","Heading 1":"h1","Heading 2":"h2","Heading 3":"h3","Heading 4":"h4","Heading 5":"h5","Heading 6":"h6",Normal:"p",Address:"address",Formatted:"pre"};this.dialogOptions={centered:true,greyout:true,closeOnEscape:true};this.Events={};this.customSelects={};this.debug=false;this.URIs={blank:_editor_url+"popups/blank.html",link:_editor_url+"modules/CreateLink/link.html",insert_image:_editor_url+"modules/InsertImage/insert_image.html",insert_table:_editor_url+"modules/InsertTable/insert_table.html",select_color:_editor_url+"popups/select_color.html",help:_editor_url+"popups/editor_help.html"};this.btnList={bold:["Bold",Xinha._lc({key:"button_bold",string:["ed_buttons_main.png",3,2]},"Xinha"),false,function(c){c.execCommand("bold")}],italic:["Italic",Xinha._lc({key:"button_italic",string:["ed_buttons_main.png",2,2]},"Xinha"),false,function(c){c.execCommand("italic")}],underline:["Underline",Xinha._lc({key:"button_underline",string:["ed_buttons_main.png",2,0]},"Xinha"),false,function(c){c.execCommand("underline")}],strikethrough:["Strikethrough",Xinha._lc({key:"button_strikethrough",string:["ed_buttons_main.png",3,0]},"Xinha"),false,function(c){c.execCommand("strikethrough")}],subscript:["Subscript",Xinha._lc({key:"button_subscript",string:["ed_buttons_main.png",3,1]},"Xinha"),false,function(c){c.execCommand("subscript")}],superscript:["Superscript",Xinha._lc({key:"button_superscript",string:["ed_buttons_main.png",2,1]},"Xinha"),false,function(c){c.execCommand("superscript")}],justifyleft:["Justify Left",["ed_buttons_main.png",0,0],false,function(c){c.execCommand("justifyleft")}],justifycenter:["Justify Center",["ed_buttons_main.png",1,1],false,function(c){c.execCommand("justifycenter")}],justifyright:["Justify Right",["ed_buttons_main.png",1,0],false,function(c){c.execCommand("justifyright")}],justifyfull:["Justify Full",["ed_buttons_main.png",0,1],false,function(c){c.execCommand("justifyfull")}],orderedlist:["Ordered List",["ed_buttons_main.png",0,3],false,function(c){c.execCommand("insertorderedlist")}],unorderedlist:["Bulleted List",["ed_buttons_main.png",1,3],false,function(c){c.execCommand("insertunorderedlist")}],insertorderedlist:["Ordered List",["ed_buttons_main.png",0,3],false,function(c){c.execCommand("insertorderedlist")}],insertunorderedlist:["Bulleted List",["ed_buttons_main.png",1,3],false,function(c){c.execCommand("insertunorderedlist")}],outdent:["Decrease Indent",["ed_buttons_main.png",1,2],false,function(c){c.execCommand("outdent")}],indent:["Increase Indent",["ed_buttons_main.png",0,2],false,function(c){c.execCommand("indent")}],forecolor:["Font Color",["ed_buttons_main.png",3,3],false,function(c){c.execCommand("forecolor")}],hilitecolor:["Background Color",["ed_buttons_main.png",2,3],false,function(c){c.execCommand("hilitecolor")}],undo:["Undoes your last action",["ed_buttons_main.png",4,2],false,function(c){c.execCommand("undo")}],redo:["Redoes your last action",["ed_buttons_main.png",5,2],false,function(c){c.execCommand("redo")}],cut:["Cut selection",["ed_buttons_main.png",5,0],false,function(d,c){d.execCommand(c)}],copy:["Copy selection",["ed_buttons_main.png",4,0],false,function(d,c){d.execCommand(c)}],paste:["Paste from clipboard",["ed_buttons_main.png",4,1],false,function(d,c){d.execCommand(c)}],selectall:["Select all",["ed_buttons_main.png",3,5],false,function(c){c.execCommand("selectall")}],inserthorizontalrule:["Horizontal Rule",["ed_buttons_main.png",6,0],false,function(c){c.execCommand("inserthorizontalrule")}],createlink:["Insert Web Link",["ed_buttons_main.png",6,1],false,function(c){c._createLink()}],insertimage:["Insert/Modify Image",["ed_buttons_main.png",6,3],false,function(c){c.execCommand("insertimage")}],inserttable:["Insert Table",["ed_buttons_main.png",6,2],false,function(c){c.execCommand("inserttable")}],htmlmode:["Toggle HTML Source",["ed_buttons_main.png",7,0],true,function(c){c.execCommand("htmlmode")}],toggleborders:["Toggle Borders",["ed_buttons_main.png",7,2],false,function(c){c._toggleBorders()}],print:["Print document",["ed_buttons_main.png",8,1],false,function(c){if(Xinha.is_gecko){c._iframe.contentWindow.print()}else{c.focusEditor();print()}}],saveas:["Save as","ed_saveas.png",false,function(c){c.execCommand("saveas",false,"noname.htm")}],about:["About this editor",["ed_buttons_main.png",8,2],true,function(c){c.getPluginInstance("AboutBox").show()}],showhelp:["Help using editor",["ed_buttons_main.png",9,2],true,function(c){c.execCommand("showhelp")}],splitblock:["Split Block","ed_splitblock.gif",false,function(c){c._splitBlock()}],lefttoright:["Direction left to right",["ed_buttons_main.png",0,2],false,function(c){c.execCommand("lefttoright")}],righttoleft:["Direction right to left",["ed_buttons_main.png",1,2],false,function(c){c.execCommand("righttoleft")}],overwrite:["Insert/Overwrite","ed_overwrite.gif",false,function(c){c.execCommand("overwrite")}],wordclean:["MS Word Cleaner",["ed_buttons_main.png",5,3],false,function(c){c._wordClean()}],clearfonts:["Clear Inline Font Specifications",["ed_buttons_main.png",5,4],true,function(c){c._clearFonts()}],removeformat:["Remove formatting",["ed_buttons_main.png",4,4],false,function(c){c.execCommand("removeformat")}],killword:["Clear MSOffice tags",["ed_buttons_main.png",4,3],false,function(c){c.execCommand("killword")}]};this.iconList={dialogCaption:_editor_url+"images/xinha-small-icon.gif",wysiwygmode:[_editor_url+"images/ed_buttons_main.png",7,1]};for(var b in this.btnList){var a=this.btnList[b];if(typeof a!="object"){continue}if(typeof a[1]!="string"){a[1][0]=_editor_url+this.imgURL+a[1][0]}else{a[1]=_editor_url+this.imgURL+a[1]}a[0]=Xinha._lc(a[0])}};Xinha.Config.prototype.registerIcon=function(b,a){this.iconList[b]=a};Xinha.Config.prototype.registerButton=function(f,d,e,a,c,b){if(typeof f=="string"){this.btnList[f]=[d,e,a,c,b]}else{if(typeof f=="object"){this.btnList[f.id]=[f.tooltip,f.image,f.textMode,f.action,f.context]}else{alert("ERROR [Xinha.Config::registerButton]:\ninvalid arguments");return false}}};Xinha.prototype.registerPanel=function(c,b){if(!c){c="right"}this.setLoadingMessage("Register "+c+" panel ");var a=this.addPanel(c);if(b){b.drawPanelIn(a)}};Xinha.Config.prototype.registerDropdown=function(a){this.customSelects[a.id]=a};Xinha.Config.prototype.hideSomeButtons=function(b){var f=this.toolbar;for(var e=f.length;--e>=0;){var c=f[e];for(var d=c.length;--d>=0;){if(b.indexOf(" "+c[d]+" ")>=0){var a=1;if(/separator|space/.test(c[d+1])){a=2}c.splice(d,a)}}}};Xinha.Config.prototype.addToolbarElement=function(d,h,k){var p=this.toolbar;var q,g,f,e,c;var n=false;var b=false;var t=0;var l=0;var m=0;var r=false;var s=false;if((d&&typeof d=="object")&&(d.constructor==Array)){n=true}if((h&&typeof h=="object")&&(h.constructor==Array)){b=true;t=h.length}if(n){for(g=0;g<d.length;++g){if((d[g]!="separator")&&(d[g].indexOf("T[")!==0)){c=d[g]}}}else{c=d}for(g=0;g<p.length;++g){q=p[g];for(f=0;f<q.length;++f){if(q[f]==c){return}}}for(g=0;!s&&g<p.length;++g){q=p[g];for(f=0;!s&&f<q.length;++f){if(b){for(e=0;e<t;++e){if(q[f]==h[e]){if(e===0){s=true;f--;break}else{m=g;l=f;t=e}}}}else{if(q[f]==h){s=true;break}}}}if(!s&&b){if(h.length!=t){f=l;q=p[m];s=true}}if(s){if(k===0){if(n){q[f]=d[d.length-1];for(g=d.length-1;--g>=0;){q.splice(f,0,d[g])}}else{q[f]=d}}else{if(k<0){f=f+k+1}else{if(k>0){f=f+k}}if(n){for(g=d.length;--g>=0;){q.splice(f,0,d[g])}}else{q.splice(f,0,d)}}}else{p[0].splice(0,0,"separator");if(n){for(g=d.length;--g>=0;){p[0].splice(0,0,d[g])}}else{p[0].splice(0,0,d)}}};Xinha.Config.prototype.removeToolbarElement=Xinha.Config.prototype.hideSomeButtons;Xinha.replaceAll=function(a){var c=document.getElementsByTagName("textarea");for(var b=c.length;b>0;new Xinha(c[--b],a).generate()){}};Xinha.replace=function(c,b){var a=Xinha.getElementById("textarea",c);return a?new Xinha(a,b).generate():null};Xinha.prototype._createToolbar=function(){this.setLoadingMessage(Xinha._lc("Create Toolbar"));var b=this;var c=document.createElement("div");this._toolBar=this._toolbar=c;c.className="toolbar";c.unselectable="1";c.align=this.config.toolbarAlign;Xinha.freeLater(this,"_toolBar");Xinha.freeLater(this,"_toolbar");var a=null;var d={};this._toolbarObjects=d;this._createToolbar1(b,c,d);this._htmlArea.appendChild(c);return c};Xinha.prototype._setConfig=function(a){this.config=a};Xinha.prototype._rebuildToolbar=function(){this._createToolbar1(this,this._toolbar,this._toolbarObjects);if(Xinha._currentlyActiveEditor){if(Xinha._currentlyActiveEditor==this){this.activateEditor()}}else{this.disableToolbar()}};Xinha._createToolbarBreakingElement=function(){var a=document.createElement("div");a.style.height="1px";a.style.width="1px";a.style.lineHeight="1px";a.style.fontSize="1px";a.style.clear="both";return a};Xinha.prototype._createToolbar1=function(m,p,s){while(p.lastChild){p.removeChild(p.lastChild)}var d;if(m.config.flowToolbars){p.appendChild(Xinha._createToolbarBreakingElement())}function l(){if(typeof d!="undefined"&&d.childNodes.length===0){return}var i=document.createElement("table");i.border="0px";i.cellSpacing="0px";i.cellPadding="0px";if(m.config.flowToolbars){if(Xinha.is_ie){i.style.styleFloat="left"}else{i.style.cssFloat="left"}}p.appendChild(i);var j=document.createElement("tbody");i.appendChild(j);d=document.createElement("tr");j.appendChild(d);i.className="toolbarRow"}l();function c(u,t){var j=this[u];var i=this.element;if(j!=t){switch(u){case"enabled":if(t){Xinha._removeClass(i,"buttonDisabled");i.disabled=false}else{Xinha._addClass(i,"buttonDisabled");i.disabled=true}break;case"active":if(t){Xinha._addClass(i,"buttonPressed")}else{Xinha._removeClass(i,"buttonPressed")}break}this[u]=t}}function b(x){var C=null;var t=null;var u=null;var z=m.config.customSelects;var j=null;var B="";switch(x){case"fontsize":case"fontname":case"formatblock":C=m.config[x];u=x;break;default:u=x;var A=z[u];if(typeof A!="undefined"){C=A.options;j=A.context;if(typeof A.tooltip!="undefined"){B=A.tooltip}}else{alert("ERROR [createSelect]:\nCan't find the requested dropdown definition")}break}if(C){t=document.createElement("select");t.title=B;t.style.width="auto";t.name=x;var w={name:x,element:t,enabled:true,text:false,cmd:u,state:c,context:j};Xinha.freeLater(w);s[x]=w;for(var v in C){if(typeof C[v]!="string"){continue}var y=document.createElement("option");y.innerHTML=Xinha._lc(v);y.value=C[v];t.appendChild(y)}Xinha._addEvent(t,"change",function(){m._comboSelected(t,x)})}return t}function q(i){var u,t,v=null;switch(i){case"separator":if(m.config.flowToolbars){l()}u=document.createElement("div");u.className="separator";break;case"space":u=document.createElement("div");u.className="space";break;case"linebreak":l();return false;case"textindicator":u=document.createElement("div");u.appendChild(document.createTextNode("A"));u.className="indicator";u.title=Xinha._lc("Current style");v={name:i,element:u,enabled:true,active:false,text:false,cmd:"textindicator",state:c};Xinha.freeLater(v);s[i]=v;break;default:t=m.config.btnList[i]}if(!u&&t){u=document.createElement("a");u.style.display="block";u.href="javascript:void(0)";u.style.textDecoration="none";u.title=t[0];u.className="button";u.style.direction="ltr";v={name:i,element:u,enabled:true,active:false,text:t[2],cmd:t[3],state:c,context:t[4]||null};Xinha.freeLater(u);Xinha.freeLater(v);s[i]=v;u.ondrag=function(){return false};Xinha._addEvent(u,"mouseout",function(x){if(v.enabled){Xinha._removeClass(u,"buttonActive");if(v.active){Xinha._addClass(u,"buttonPressed")}}});Xinha._addEvent(u,"mousedown",function(x){if(v.enabled){Xinha._addClass(u,"buttonActive");Xinha._removeClass(u,"buttonPressed");Xinha._stopEvent(Xinha.is_ie?window.event:x)}});Xinha._addEvent(u,"click",function(x){x=x||window.event;m.btnClickEvent={clientX:x.clientX,clientY:x.clientY};if(v.enabled){Xinha._removeClass(u,"buttonActive");if(Xinha.is_gecko){m.activateEditor()}v.cmd(m,v.name,v,x);Xinha._stopEvent(x)}});var w=Xinha.makeBtnImg(t[1]);var j=w.firstChild;Xinha.freeLater(w);Xinha.freeLater(j);u.appendChild(w);v.imgel=j;v.swapImage=function(x){if(typeof x!="string"){j.src=x[0];j.style.position="relative";j.style.top=x[2]?("-"+(18*(x[2]+1))+"px"):"-18px";j.style.left=x[1]?("-"+(18*(x[1]+1))+"px"):"-18px"}else{v.imgel.src=x;j.style.top="0px";j.style.left="0px"}}}else{if(!u){u=b(i)}}return u}var k=true;for(var h=0;h<this.config.toolbar.length;++h){if(!k){}else{k=false}if(this.config.toolbar[h]===null){this.config.toolbar[h]=["separator"]}var r=this.config.toolbar[h];for(var f=0;f<r.length;++f){var a=r[f];var n;if(/^([IT])\[(.*?)\]/.test(a)){var e=RegExp.$1=="I";var o=RegExp.$2;if(e){o=Xinha._lc(o)}n=document.createElement("td");d.appendChild(n);n.className="label";n.innerHTML=o}else{if(typeof a!="function"){var g=q(a);if(g){n=document.createElement("td");n.className="toolbarElement";d.appendChild(n);n.appendChild(g)}else{if(g===null){alert("FIXME: Unknown toolbar item: "+a)}}}}}}if(m.config.flowToolbars){p.appendChild(Xinha._createToolbarBreakingElement())}return p};Xinha.makeBtnImg=function(b,c){if(!c){c=document}if(!c._xinhaImgCache){c._xinhaImgCache={};Xinha.freeLater(c._xinhaImgCache)}var d=null;if(Xinha.is_ie&&((!c.compatMode)||(c.compatMode&&c.compatMode=="BackCompat"))){d=c.createElement("span")}else{d=c.createElement("div");d.style.position="relative"}d.style.overflow="hidden";d.style.width="18px";d.style.height="18px";d.className="buttonImageContainer";var a=null;if(typeof b=="string"){if(c._xinhaImgCache[b]){a=c._xinhaImgCache[b].cloneNode()}else{if(Xinha.ie_version<7&&/\.png$/.test(b[0])){a=c.createElement("span");a.style.display="block";a.style.width="18px";a.style.height="18px";a.style.filter='progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+b+'")';a.unselectable="on"}else{a=c.createElement("img");a.src=b}}}else{if(c._xinhaImgCache[b[0]]){a=c._xinhaImgCache[b[0]].cloneNode()}else{if(Xinha.ie_version<7&&/\.png$/.test(b[0])){a=c.createElement("span");a.style.display="block";a.style.width="18px";a.style.height="18px";a.style.filter='progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+b[0]+'")';a.unselectable="on"}else{a=c.createElement("img");a.src=b[0]}a.style.position="relative"}a.style.top=b[2]?("-"+(18*(b[2]+1))+"px"):"-18px";a.style.left=b[1]?("-"+(18*(b[1]+1))+"px"):"-18px"}d.appendChild(a);return d};Xinha.prototype._createStatusBar=function(){this.setLoadingMessage(Xinha._lc("Create Statusbar"));var b=document.createElement("div");b.style.position="relative";b.className="statusBar";b.style.width="100%";Xinha.freeLater(this,"_statusBar");var d=document.createElement("div");d.className="statusBarWidgetContainer";d.style.position="absolute";d.style.right="0";d.style.top="0";d.style.padding="3px 3px 3px 10px";b.appendChild(d);var e=document.createElement("span");e.className="statusBarTree";e.innerHTML=Xinha._lc("Path")+": ";this._statusBarTree=e;Xinha.freeLater(this,"_statusBarTree");b.appendChild(e);var c=document.createElement("span");c.innerHTML=Xinha._lc("You are in TEXT MODE.  Use the [<>] button to switch back to WYSIWYG.");c.style.display="none";this._statusBarTextMode=c;Xinha.freeLater(this,"_statusBarTextMode");b.appendChild(c);b.style.whiteSpace="nowrap";var a=this;this.notifyOn("before_resize",function(f,g){a._statusBar.style.width=null});this.notifyOn("resize",function(f,g){if(Xinha.is_ie&&Xinha.ie_version==6){a._statusBar.style.width="100%"}else{var h=g.width;a._statusBar.style.width=h+"px"}});this.notifyOn("modechange",function(f,l){for(var h in a._statusWidgets){var k=a._statusWidgets[h];for(var g=0;g<k.modes.length;g++){if(k.modes[g]==l.mode){var j=true}}if(typeof j=="undefined"){k.block.style.display="none"}else{k.block.style.display=""}}});if(!this.config.statusBar){b.style.display="none"}return b};Xinha.prototype.registerStatusWidget=function(e,c){c=c||["wysiwyg"];if(!this._statusWidgets){this._statusWidgets={}}var d=document.createElement("div");d.className="statusBarWidget";d=this._statusBar.firstChild.appendChild(d);var b=false;for(var a=0;a<c.length;a++){if(c[a]==this._editMode){b=true}}d.style.display=b==true?"":"none";this._statusWidgets[e]={block:d,modes:c};return d};Xinha.prototype.generate=function(){if(!Xinha.isSupportedBrowser){return}var w;var d=this;var e;var n=false;var a=document.getElementsByTagName("link");if(!document.getElementById("XinhaCoreDesign")){_editor_css=(typeof _editor_css=="string")?_editor_css:"Xinha.css";for(w=0;w<a.length;w++){if((a[w].rel=="stylesheet")&&(a[w].href==_editor_url+_editor_css)){n=true}}if(!n){Xinha.loadStyle(_editor_css,null,"XinhaCoreDesign",true)}}if(_editor_skin!==""&&!document.getElementById("XinhaSkin")){n=false;for(w=0;w<a.length;w++){if((a[w].rel=="stylesheet")&&(a[w].href==_editor_url+"skins/"+_editor_skin+"/skin.css")){n=true}}if(!n){Xinha.loadStyle("skins/"+_editor_skin+"/skin.css",null,"XinhaSkin")}}var f=function(){d.generate()};if(Xinha.is_ie){e=_editor_url+"modules/InternetExplorer/InternetExplorer.js";if(!Xinha.loadPlugins([{plugin:"InternetExplorer",url:e}],f)){return false}if(!this.plugins.InternetExplorer){d._browserSpecificPlugin=d.registerPlugin("InternetExplorer")}}else{if(Xinha.is_webkit){e=_editor_url+"modules/WebKit/WebKit.js";if(!Xinha.loadPlugins([{plugin:"WebKit",url:e}],f)){return false}if(!this.plugins.Webkit){d._browserSpecificPlugin=d.registerPlugin("WebKit")}}else{if(Xinha.is_opera){e=_editor_url+"modules/Opera/Opera.js";if(!Xinha.loadPlugins([{plugin:"Opera",url:e}],f)){return false}if(!this.plugins.Opera){d._browserSpecificPlugin=d.registerPlugin("Opera")}}else{if(Xinha.is_gecko){e=_editor_url+"modules/Gecko/Gecko.js";if(!Xinha.loadPlugins([{plugin:"Gecko",url:e}],f)){return false}if(!this.plugins.Gecko){d._browserSpecificPlugin=d.registerPlugin("Gecko")}}}}}if(typeof Dialog=="undefined"&&!Xinha._loadback(_editor_url+"modules/Dialogs/dialog.js",f,this)){return false}if(typeof Xinha.Dialog=="undefined"&&!Xinha._loadback(_editor_url+"modules/Dialogs/XinhaDialog.js",f,this)){return false}e=_editor_url+"modules/FullScreen/full-screen.js";if(!Xinha.loadPlugins([{plugin:"FullScreen",url:e}],f)){return false}e=_editor_url+"modules/ColorPicker/ColorPicker.js";if(!Xinha.loadPlugins([{plugin:"ColorPicker",url:e}],f)){return false}else{if(typeof Xinha.getPluginConstructor("ColorPicker")!="undefined"&&!this.plugins.colorPicker){d.registerPlugin("ColorPicker")}}var o=d.config.toolbar;for(w=o.length;--w>=0;){for(var v=o[w].length;--v>=0;){switch(o[w][v]){case"popupeditor":if(!this.plugins.FullScreen){d.registerPlugin("FullScreen")}break;case"insertimage":e=_editor_url+"modules/InsertImage/insert_image.js";if(typeof Xinha.prototype._insertImage=="undefined"&&!Xinha.loadPlugins([{plugin:"InsertImage",url:e}],f)){return false}else{if(typeof Xinha.getPluginConstructor("InsertImage")!="undefined"&&!this.plugins.InsertImage){d.registerPlugin("InsertImage")}}break;case"createlink":e=_editor_url+"modules/CreateLink/link.js";if(typeof Xinha.getPluginConstructor("Linker")=="undefined"&&!Xinha.loadPlugins([{plugin:"CreateLink",url:e}],f)){return false}else{if(typeof Xinha.getPluginConstructor("CreateLink")!="undefined"&&!this.plugins.CreateLink){d.registerPlugin("CreateLink")}}break;case"inserttable":e=_editor_url+"modules/InsertTable/insert_table.js";if(!Xinha.loadPlugins([{plugin:"InsertTable",url:e}],f)){return false}else{if(typeof Xinha.getPluginConstructor("InsertTable")!="undefined"&&!this.plugins.InsertTable){d.registerPlugin("InsertTable")}}break;case"about":e=_editor_url+"modules/AboutBox/AboutBox.js";if(!Xinha.loadPlugins([{plugin:"AboutBox",url:e}],f)){return false}else{if(typeof Xinha.getPluginConstructor("AboutBox")!="undefined"&&!this.plugins.AboutBox){d.registerPlugin("AboutBox")}}break}}}if(Xinha.is_gecko&&d.config.mozParaHandler!="built-in"){if(!Xinha.loadPlugins([{plugin:"EnterParagraphs",url:_editor_url+"modules/Gecko/paraHandlerBest.js"}],f)){return false}if(!this.plugins.EnterParagraphs){d.registerPlugin("EnterParagraphs")}}var E=this.config.getHtmlMethod=="TransformInnerHTML"?_editor_url+"modules/GetHtml/TransformInnerHTML.js":_editor_url+"modules/GetHtml/DOMwalk.js";if(!Xinha.loadPlugins([{plugin:"GetHtmlImplementation",url:E}],f)){return false}else{if(!this.plugins.GetHtmlImplementation){d.registerPlugin("GetHtmlImplementation")}}function s(i){return i.textContent||i.text}if(_editor_skin){this.skinInfo={};var u=Xinha._geturlcontent(_editor_url+"skins/"+_editor_skin+"/skin.xml",true);if(u){var p=u.getElementsByTagName("meta");for(w=0;w<p.length;w++){this.skinInfo[p[w].getAttribute("name")]=p[w].getAttribute("value")}var B=u.getElementsByTagName("recommendedIcons");if(!_editor_icons&&B.length&&s(B[0])){_editor_icons=s(B[0])}}}if(_editor_icons){var m=Xinha._geturlcontent(_editor_url+"iconsets/"+_editor_icons+"/iconset.xml",true);if(m){var F=m.getElementsByTagName("icon");var C,t,r,c,l,k;for(w=0;w<F.length;w++){C=F[w];t=C.getAttribute("id");if(C.getElementsByTagName(_editor_lang).length){C=C.getElementsByTagName(_editor_lang)[0]}else{C=C.getElementsByTagName("default")[0]}r=s(C.getElementsByTagName("path")[0]);r=(!/^\//.test(r)?_editor_url:"")+r;c=C.getAttribute("type");if(c=="map"){l=parseInt(s(C.getElementsByTagName("x")[0]),10);k=parseInt(s(C.getElementsByTagName("y")[0]),10);if(this.config.btnList[t]){this.config.btnList[t][1]=[r,l,k]}if(this.config.iconList[t]){this.config.iconList[t]=[r,l,k]}}else{if(this.config.btnList[t]){this.config.btnList[t][1]=r}if(this.config.iconList[t]){this.config.iconList[t]=r}}}}}this.setLoadingMessage(Xinha._lc("Generate Xinha framework"));this._framework={table:document.createElement("table"),tbody:document.createElement("tbody"),tb_row:document.createElement("tr"),tb_cell:document.createElement("td"),tp_row:document.createElement("tr"),tp_cell:this._panels.top.container,ler_row:document.createElement("tr"),lp_cell:this._panels.left.container,ed_cell:document.createElement("td"),rp_cell:this._panels.right.container,bp_row:document.createElement("tr"),bp_cell:this._panels.bottom.container,sb_row:document.createElement("tr"),sb_cell:document.createElement("td")};Xinha.freeLater(this._framework);var b=this._framework;b.table.border="0";b.table.cellPadding="0";b.table.cellSpacing="0";b.tb_row.style.verticalAlign="top";b.tp_row.style.verticalAlign="top";b.ler_row.style.verticalAlign="top";b.bp_row.style.verticalAlign="top";b.sb_row.style.verticalAlign="top";b.ed_cell.style.position="relative";b.tb_row.appendChild(b.tb_cell);b.tb_cell.colSpan=3;b.tp_row.appendChild(b.tp_cell);b.tp_cell.colSpan=3;b.ler_row.appendChild(b.lp_cell);b.ler_row.appendChild(b.ed_cell);b.ler_row.appendChild(b.rp_cell);b.bp_row.appendChild(b.bp_cell);b.bp_cell.colSpan=3;b.sb_row.appendChild(b.sb_cell);b.sb_cell.colSpan=3;b.tbody.appendChild(b.tb_row);b.tbody.appendChild(b.tp_row);b.tbody.appendChild(b.ler_row);b.tbody.appendChild(b.bp_row);b.tbody.appendChild(b.sb_row);b.table.appendChild(b.tbody);var D=b.table;this._htmlArea=D;Xinha.freeLater(this,"_htmlArea");D.className="htmlarea";b.tb_cell.appendChild(this._createToolbar());var g=document.createElement("iframe");g.src=this.popupURL(d.config.URIs.blank);g.id="XinhaIFrame_"+this._textArea.id;b.ed_cell.appendChild(g);this._iframe=g;this._iframe.className="xinha_iframe";Xinha.freeLater(this,"_iframe");var A=this._createStatusBar();this._statusBar=b.sb_cell.appendChild(A);var q=this._textArea;q.parentNode.insertBefore(D,q);q.className="xinha_textarea";Xinha.removeFromParent(q);b.ed_cell.appendChild(q);Xinha.addDom0Event(this._textArea,"click",function(){if(Xinha._currentlyActiveEditor!=this){d.updateToolbar()}return true});if(q.form){Xinha.prependDom0Event(this._textArea.form,"submit",function(){d.firePluginEvent("onBeforeSubmit");d._textArea.value=d.outwardHtml(d.getHTML());return true});var h=q.value;Xinha.prependDom0Event(this._textArea.form,"reset",function(){d.setHTML(d.inwardHtml(h));d.updateToolbar();return true});if(!q.form.xinha_submit){try{q.form.xinha_submit=q.form.submit;q.form.submit=function(){this.onsubmit();this.xinha_submit()}}catch(z){}}}Xinha.prependDom0Event(window,"unload",function(){d.firePluginEvent("onBeforeUnload");q.value=d.outwardHtml(d.getHTML());if(!Xinha.is_ie){D.parentNode.replaceChild(q,D)}return true});q.style.display="none";d.initSize();this.setLoadingMessage(Xinha._lc("Finishing"));d._iframeLoadDone=false;if(Xinha.is_opera){d.initIframe()}else{Xinha._addEvent(this._iframe,"load",function(i){if(!d._iframeLoadDone){d._iframeLoadDone=true;d.initIframe()}return true})}};Xinha.prototype.initSize=function(){this.setLoadingMessage(Xinha._lc("Init editor size"));var c=this;var b=null;var a=null;switch(this.config.width){case"auto":b=this._initial_ta_size.w;break;case"toolbar":b=this._toolBar.offsetWidth+"px";break;default:b=/[^0-9]/.test(this.config.width)?this.config.width:this.config.width+"px";break}a=this.config.height=="auto"?this._initial_ta_size.h:/[^0-9]/.test(this.config.height)?this.config.height:this.config.height+"px";this.sizeEditor(b,a,this.config.sizeIncludesBars,this.config.sizeIncludesPanels);this.notifyOn("panel_change",function(){c.sizeEditor()})};Xinha.prototype.sizeEditor=function(d,o,a,c){if(this._risizing){return}this._risizing=true;var l=this._framework;this.notifyOf("before_resize",{width:d,height:o});this.firePluginEvent("onBeforeResize",d,o);this._iframe.style.height="100%";this._textArea.style.height="1px";this._iframe.style.width="";this._textArea.style.width="";if(a!==null){this._htmlArea.sizeIncludesToolbars=a}if(c!==null){this._htmlArea.sizeIncludesPanels=c}if(d){this._htmlArea.style.width=d;if(!this._htmlArea.sizeIncludesPanels){var k=this._panels.right;if(k.on&&k.panels.length&&Xinha.hasDisplayedChildren(k.div)){this._htmlArea.style.width=(this._htmlArea.offsetWidth+parseInt(this.config.panel_dimensions.right,10))+"px"}var p=this._panels.left;if(p.on&&p.panels.length&&Xinha.hasDisplayedChildren(p.div)){this._htmlArea.style.width=(this._htmlArea.offsetWidth+parseInt(this.config.panel_dimensions.left,10))+"px"}}}if(o){this._htmlArea.style.height=o;if(!this._htmlArea.sizeIncludesToolbars){this._htmlArea.style.height=(this._htmlArea.offsetHeight+this._toolbar.offsetHeight+this._statusBar.offsetHeight)+"px"}if(!this._htmlArea.sizeIncludesPanels){var f=this._panels.top;if(f.on&&f.panels.length&&Xinha.hasDisplayedChildren(f.div)){this._htmlArea.style.height=(this._htmlArea.offsetHeight+parseInt(this.config.panel_dimensions.top,10))+"px"}var n=this._panels.bottom;if(n.on&&n.panels.length&&Xinha.hasDisplayedChildren(n.div)){this._htmlArea.style.height=(this._htmlArea.offsetHeight+parseInt(this.config.panel_dimensions.bottom,10))+"px"}}}d=this._htmlArea.offsetWidth;o=this._htmlArea.offsetHeight;var j=this._panels;var i=this;var b=1;function h(q){if(j[q].on&&j[q].panels.length&&Xinha.hasDisplayedChildren(j[q].container)){j[q].container.style.display="";return true}else{j[q].container.style.display="none";return false}}if(h("left")){b+=1}if(h("right")){b+=1}l.tb_cell.colSpan=b;l.tp_cell.colSpan=b;l.bp_cell.colSpan=b;l.sb_cell.colSpan=b;if(!l.tp_row.childNodes.length){Xinha.removeFromParent(l.tp_row)}else{if(!Xinha.hasParentNode(l.tp_row)){l.tbody.insertBefore(l.tp_row,l.ler_row)}}if(!l.bp_row.childNodes.length){Xinha.removeFromParent(l.bp_row)}else{if(!Xinha.hasParentNode(l.bp_row)){l.tbody.insertBefore(l.bp_row,l.ler_row.nextSibling)}}if(!this.config.statusBar){Xinha.removeFromParent(l.sb_row)}else{if(!Xinha.hasParentNode(l.sb_row)){l.table.appendChild(l.sb_row)}}l.lp_cell.style.width=this.config.panel_dimensions.left;l.rp_cell.style.width=this.config.panel_dimensions.right;l.tp_cell.style.height=this.config.panel_dimensions.top;l.bp_cell.style.height=this.config.panel_dimensions.bottom;l.tb_cell.style.height=this._toolBar.offsetHeight+"px";l.sb_cell.style.height=this._statusBar.offsetHeight+"px";var m=o-this._toolBar.offsetHeight-this._statusBar.offsetHeight;if(h("top")){m-=parseInt(this.config.panel_dimensions.top,10)}if(h("bottom")){m-=parseInt(this.config.panel_dimensions.bottom,10)}this._iframe.style.height=m+"px";var e=d;if(h("left")){e-=parseInt(this.config.panel_dimensions.left,10)}if(h("right")){e-=parseInt(this.config.panel_dimensions.right,10)}var g=this.config.iframeWidth?parseInt(this.config.iframeWidth,10):null;this._iframe.style.width=(g&&g<e)?g+"px":e+"px";this._textArea.style.height=this._iframe.style.height;this._textArea.style.width=this._iframe.style.width;this.notifyOf("resize",{width:this._htmlArea.offsetWidth,height:this._htmlArea.offsetHeight});this.firePluginEvent("onResize",this._htmlArea.offsetWidth,this._htmlArea.offsetWidth);this._risizing=false};Xinha.prototype.registerPanel=function(c,b){if(!c){c="right"}this.setLoadingMessage("Register "+c+" panel ");var a=this.addPanel(c);if(b){b.drawPanelIn(a)}};Xinha.prototype.addPanel=function(a){var b=document.createElement("div");b.side=a;if(a=="left"||a=="right"){b.style.width=this.config.panel_dimensions[a];if(this._iframe){b.style.height=this._iframe.style.height}}Xinha.addClasses(b,"panel");this._panels[a].panels.push(b);this._panels[a].div.appendChild(b);this.notifyOf("panel_change",{action:"add",panel:b});this.firePluginEvent("onPanelChange","add",b);return b};Xinha.prototype.removePanel=function(a){this._panels[a.side].div.removeChild(a);var c=[];for(var b=0;b<this._panels[a.side].panels.length;b++){if(this._panels[a.side].panels[b]!=a){c.push(this._panels[a.side].panels[b])}}this._panels[a.side].panels=c;this.notifyOf("panel_change",{action:"remove",panel:a});this.firePluginEvent("onPanelChange","remove",a)};Xinha.prototype.hidePanel=function(a){if(a&&a.style.display!="none"){try{var c=this.scrollPos(this._iframe.contentWindow)}catch(b){}a.style.display="none";this.notifyOf("panel_change",{action:"hide",panel:a});this.firePluginEvent("onPanelChange","hide",a);try{this._iframe.contentWindow.scrollTo(c.x,c.y)}catch(b){}}};Xinha.prototype.showPanel=function(a){if(a&&a.style.display=="none"){try{var c=this.scrollPos(this._iframe.contentWindow)}catch(b){}a.style.display="";this.notifyOf("panel_change",{action:"show",panel:a});this.firePluginEvent("onPanelChange","show",a);try{this._iframe.contentWindow.scrollTo(c.x,c.y)}catch(b){}}};Xinha.prototype.hidePanels=function(b){if(typeof b=="undefined"){b=["left","right","top","bottom"]}var c=[];for(var a=0;a<b.length;a++){if(this._panels[b[a]].on){c.push(b[a]);this._panels[b[a]].on=false}}this.notifyOf("panel_change",{action:"multi_hide",sides:b});this.firePluginEvent("onPanelChange","multi_hide",b)};Xinha.prototype.showPanels=function(c){if(typeof c=="undefined"){c=["left","right","top","bottom"]}var a=[];for(var b=0;b<c.length;b++){if(!this._panels[c[b]].on){a.push(c[b]);this._panels[c[b]].on=true}}this.notifyOf("panel_change",{action:"multi_show",sides:c});this.firePluginEvent("onPanelChange","multi_show",c)};Xinha.objectProperties=function(c){var b=[];for(var a in c){b[b.length]=a}return b};Xinha.prototype.editorIsActivated=function(){try{return Xinha.is_designMode?this._doc.designMode=="on":this._doc.body.contentEditable}catch(a){return false}};Xinha._someEditorHasBeenActivated=false;Xinha._currentlyActiveEditor=null;Xinha.prototype.activateEditor=function(){if(this.currentModal){return}if(Xinha._currentlyActiveEditor){if(Xinha._currentlyActiveEditor==this){return true}Xinha._currentlyActiveEditor.deactivateEditor()}if(Xinha.is_designMode&&this._doc.designMode!="on"){try{if(this._iframe.style.display=="none"){this._iframe.style.display="";this._doc.designMode="on";this._iframe.style.display="none"}else{this._doc.designMode="on"}}catch(a){}}else{if(Xinha.is_ie&&this._doc.body.contentEditable!==true){this._doc.body.contentEditable=true}}Xinha._someEditorHasBeenActivated=true;Xinha._currentlyActiveEditor=this;var b=this;this.enableToolbar()};Xinha.prototype.deactivateEditor=function(){this.disableToolbar();if(Xinha.is_designMode&&this._doc.designMode!="off"){try{this._doc.designMode="off"}catch(a){}}else{if(!Xinha.is_designMode&&this._doc.body.contentEditable!==false){this._doc.body.contentEditable=false}}if(Xinha._currentlyActiveEditor!=this){return}Xinha._currentlyActiveEditor=false};Xinha.prototype.initIframe=function(){this.disableToolbar();var g=null;var f=this;try{if(f._iframe.contentDocument){this._doc=f._iframe.contentDocument}else{this._doc=f._iframe.contentWindow.document}g=this._doc;if(!g){if(Xinha.is_gecko){setTimeout(function(){f.initIframe()},50);return false}else{alert("ERROR: IFRAME can't be initialized.")}}}catch(e){setTimeout(function(){f.initIframe()},50)}Xinha.freeLater(this,"_doc");g.open("text/html","replace");var d="",a;if(f.config.browserQuirksMode===false){a='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">'}else{if(f.config.browserQuirksMode===true){a=""}else{a=Xinha.getDoctype(document)}}if(!f.config.fullPage){d+=a+"\n";d+="<html>\n";d+="<head>\n";d+='<meta http-equiv="Content-Type" content="text/html; charset='+f.config.charSet+'">\n';if(typeof f.config.baseHref!="undefined"&&f.config.baseHref!==null){d+='<base href="'+f.config.baseHref+'"/>\n'}d+=Xinha.addCoreCSS();if(typeof f.config.pageStyleSheets!=="undefined"){for(var c=0;c<f.config.pageStyleSheets.length;c++){if(f.config.pageStyleSheets[c].length>0){d+='<link rel="stylesheet" type="text/css" href="'+f.config.pageStyleSheets[c]+'">'}}}if(f.config.pageStyle){d+='<style type="text/css">\n'+f.config.pageStyle+"\n</style>"}d+="</head>\n";d+="<body"+(f.config.bodyID?(' id="'+f.config.bodyID+'"'):"")+(f.config.bodyClass?(' class="'+f.config.bodyClass+'"'):"")+">\n";d+=f.inwardHtml(f._textArea.value);d+="</body>\n";d+="</html>"}else{d=f.inwardHtml(f._textArea.value);if(d.match(Xinha.RE_doctype)){f.setDoctype(RegExp.$1)}var b=d.match(/<link\s+[\s\S]*?["']\s*\/?>/gi);d=d.replace(/<link\s+[\s\S]*?["']\s*\/?>\s*/gi,"");if(b){d=d.replace(/<\/head>/i,b.join("\n")+"\n</head>")}}g.write(d);g.close();if(this.config.fullScreen){this._fullScreen()}this.setEditorEvents();if((typeof f.config.autofocus!="undefined")&&((f.config.autofocus==f._textArea.id)||f.config.autofocus==true)){f.activateEditor();f.focusEditor()}};Xinha.prototype.whenDocReady=function(a){var b=this;if(this._doc&&this._doc.body){a()}else{setTimeout(function(){b.whenDocReady(a)},50)}};Xinha.prototype.setMode=function(b){var a;if(typeof b=="undefined"){b=this._editMode=="textmode"?"wysiwyg":"textmode"}switch(b){case"textmode":this.firePluginEvent("onBeforeMode","textmode");this._toolbarObjects.htmlmode.swapImage(this.config.iconList.wysiwygmode);this.setCC("iframe");a=this.outwardHtml(this.getHTML());this.setHTML(a);this.deactivateEditor();this._iframe.style.display="none";this._textArea.style.display="";if(this.config.statusBar){this._statusBarTree.style.display="none";this._statusBarTextMode.style.display=""}this.findCC("textarea");this.notifyOf("modechange",{mode:"text"});this.firePluginEvent("onMode","textmode");break;case"wysiwyg":this.firePluginEvent("onBeforeMode","wysiwyg");this._toolbarObjects.htmlmode.swapImage([this.imgURL("images/ed_buttons_main.png"),7,0]);this.setCC("textarea");a=this.inwardHtml(this.getHTML());this.deactivateEditor();this.setHTML(a);this._iframe.style.display="";this._textArea.style.display="none";this.activateEditor();if(this.config.statusBar){this._statusBarTree.style.display="";this._statusBarTextMode.style.display="none"}this.findCC("iframe");this.notifyOf("modechange",{mode:"wysiwyg"});this.firePluginEvent("onMode","wysiwyg");break;default:alert("Mode <"+b+"> not defined!");return false}this._editMode=b};Xinha.prototype.setFullHTML=function(c){var a=RegExp.multiline;RegExp.multiline=true;if(c.match(Xinha.RE_doctype)){this.setDoctype(RegExp.$1)}RegExp.multiline=a;if(0){if(c.match(Xinha.RE_head)){this._doc.getElementsByTagName("head")[0].innerHTML=RegExp.$1}if(c.match(Xinha.RE_body)){this._doc.getElementsByTagName("body")[0].innerHTML=RegExp.$1}}else{var d=this.editorIsActivated();if(d){this.deactivateEditor()}var b=/<html>((.|\n)*?)<\/html>/i;c=c.replace(b,"$1");this._doc.open("text/html","replace");this._doc.write(c);this._doc.close();if(d){this.activateEditor()}this.setEditorEvents();return true}};Xinha.prototype.setEditorEvents=function(){var a=this;var b=this._doc;a.whenDocReady(function(){Xinha._addEvents(b,["mousedown"],function(){a.activateEditor();return true});if(Xinha.is_ie){Xinha._addEvent(a._doc.getElementsByTagName("html")[0],"click",function(){if(a._iframe.contentWindow.event.srcElement.tagName.toLowerCase()=="html"){var e=a._doc.body.createTextRange();e.collapse();e.select()}return true})}Xinha._addEvents(b,["keydown","keypress","mousedown","mouseup","drag"],function(e){return a._editorEvent(Xinha.is_ie?a._iframe.contentWindow.event:e)});for(var c in a.plugins){var d=a.plugins[c].instance;Xinha.refreshPlugin(d)}if(typeof a._onGenerate=="function"){a._onGenerate()}Xinha.addDom0Event(window,"resize",function(f){if(Xinha.ie_version>7&&!window.parent){if(a.execResize){a.sizeEditor();a.execResize=false}else{a.execResize=true}}else{a.sizeEditor()}});a.removeLoadingMessage()})};Xinha.getPluginConstructor=function(a){return Xinha.plugins[a]||window[a]};Xinha.prototype.registerPlugin=function(){if(!Xinha.isSupportedBrowser){return}var c=arguments[0];if(c===null||typeof c=="undefined"||(typeof c=="string"&&Xinha.getPluginConstructor(c)=="undefined")){return false}var a=[];for(var b=1;b<arguments.length;++b){a.push(arguments[b])}return this.registerPlugin2(c,a)};Xinha.prototype.registerPlugin2=function(c,a){if(typeof c=="string"&&typeof Xinha.getPluginConstructor(c)=="function"){var d=c;c=Xinha.getPluginConstructor(c)}if(typeof c=="undefined"){return false}if(!c._pluginInfo){c._pluginInfo={name:d}}var f=new c(this,a);if(f){var g={};var e=c._pluginInfo;for(var b in e){g[b]=e[b]}g.instance=f;g.args=a;this.plugins[c._pluginInfo.name]=g;return f}else{Xinha.debugMsg("Can't register plugin "+c.toString()+".","warn")}};Xinha.getPluginDir=function(b,a){if(Xinha.externalPlugins[b]){return Xinha.externalPlugins[b][0]}if(a||(Xinha.getPluginConstructor(b)&&(typeof Xinha.getPluginConstructor(b).supported!="undefined")&&!Xinha.getPluginConstructor(b).supported)){return _editor_url+"unsupported_plugins/"+b}return _editor_url+"plugins/"+b};Xinha.loadPlugin=function(d,e,a){if(!Xinha.isSupportedBrowser){return}Xinha.setLoadingMessage(Xinha._lc("Loading plugin $plugin="+d+"$"));if(typeof Xinha.getPluginConstructor(d)!="undefined"){if(e){e(d)}return true}Xinha._pluginLoadStatus[d]="loading";function c(j,m){var l,i,k,h;switch(j){case"start":l="old_naming";i=Xinha.getPluginDir(m);k=m+".js";break;case"old_naming":l="unsupported";i=Xinha.getPluginDir(m);k=m.replace(/([a-z])([A-Z])([a-z])/g,function(p,o,n,q){return o+"-"+n.toLowerCase()+q}).toLowerCase()+".js";h="You are using an obsolete naming scheme for the Xinha plugin "+m+". Please rename "+k+" to "+m+".js";break;case"unsupported":l="unsupported_old_name";i=Xinha.getPluginDir(m,true);k=m+".js";h="You are using the unsupported Xinha plugin "+m+". If you wish continued support, please see http://trac.xinha.org/ticket/1297";break;case"unsupported_old_name":l="";i=Xinha.getPluginDir(m,true);k=m.replace(/([a-z])([A-Z])([a-z])/g,function(p,o,n,q){return o+"-"+n.toLowerCase()+q}).toLowerCase()+".js";h="You are using the unsupported Xinha plugin "+m+". If you wish continued support, please see http://trac.xinha.org/ticket/1297";break;default:Xinha._pluginLoadStatus[m]="failed";Xinha.debugMsg("Xinha was not able to find the plugin "+m+". Please make sure the plugin exists.","warn");return}var g=i+"/"+k;function f(n){Xinha.getPluginConstructor(n).supported=j.indexOf("unsupported")!==0;e(n)}Xinha._loadback(g,f,this,m);Xinha.ping(g,function(){if(h){Xinha.debugMsg(h)}},function(){Xinha.removeFromParent(document.getElementById(g));c(l,m)})}if(!a){if(Xinha.externalPlugins[d]){Xinha._loadback(Xinha.externalPlugins[d][0]+Xinha.externalPlugins[d][1],e,this,d)}else{var b=this;c("start",d)}}else{Xinha._loadback(a,e,this,d)}return false};Xinha._pluginLoadStatus={};Xinha.externalPlugins={};Xinha.plugins={};Xinha.loadPlugins=function(c,f,d){if(!Xinha.isSupportedBrowser){return}var b,e;for(e=0;e<c.length;e++){if(typeof c[e]=="object"){b=c[e].url.match(/(.*)(\/[^\/]*)$/);Xinha.externalPlugins[c[e].plugin]=[b[1],b[2]];c[e]=c[e].plugin}}var h=true;var a=Xinha.cloneObject(c);for(e=0;e<a.length;e++){var g=a[e];if(g=="FullScreen"&&!Xinha.externalPlugins.FullScreen){continue}if(typeof Xinha._pluginLoadStatus[g]=="undefined"){Xinha.loadPlugin(g,function(i){Xinha.setLoadingMessage(Xinha._lc("Finishing"));if(typeof Xinha.getPluginConstructor(i)!="undefined"){Xinha._pluginLoadStatus[i]="ready"}else{Xinha._pluginLoadStatus[i]="failed"}},d);h=false}else{if(Xinha._pluginLoadStatus[g]=="loading"){h=false}}}if(h){return true}if(f){setTimeout(function(){if(Xinha.loadPlugins(c,f)){f()}},50)}return h};Xinha.refreshPlugin=function(a){if(a&&typeof a.onGenerate=="function"){a.onGenerate()}if(a&&typeof a.onGenerateOnce=="function"){a._ongenerateOnce=a.onGenerateOnce;delete (a.onGenerateOnce);a._ongenerateOnce();delete (a._ongenerateOnce)}};Xinha.prototype.firePluginEvent=function(b){var e=[];for(var c=1;c<arguments.length;c++){e[c-1]=arguments[c]}for(c in this.plugins){var d=this.plugins[c].instance;if(d==this._browserSpecificPlugin){continue}if(d&&typeof d[b]=="function"){var a=(c=="Events")?this:d;if(d[b].apply(a,e)){return true}}}d=this._browserSpecificPlugin;if(d&&typeof d[b]=="function"){if(d[b].apply(d,e)){return true}}return false};Xinha.loadStyle=function(d,f,g,a){var b=_editor_url||"";if(f){b=Xinha.getPluginDir(f)+"/"}b+=d;if(/^\//.test(d)){b=d}var c=document.getElementsByTagName("head")[0];var e=document.createElement("link");e.rel="stylesheet";e.href=b;e.type="text/css";if(g){e.id=g}if(a&&c.getElementsByTagName("link")[0]){c.insertBefore(e,c.getElementsByTagName("link")[0])}else{c.appendChild(e)}};Xinha.prototype.debugTree=function(){var c=document.createElement("textarea");c.style.width="100%";c.style.height="20em";c.value="";function b(d,e){for(;--d>=0;){c.value+=" "}c.value+=e+"\n"}function a(e,h){var d=e.tagName.toLowerCase(),f;var g=Xinha.is_ie?e.scopeName:e.prefix;b(h,"- "+d+" ["+g+"]");for(f=e.firstChild;f;f=f.nextSibling){if(f.nodeType==1){a(f,h+2)}}}a(this._doc.body,0);document.body.appendChild(c)};Xinha.getInnerText=function(c){var a="",b;for(b=c.firstChild;b;b=b.nextSibling){if(b.nodeType==3){a+=b.data}else{if(b.nodeType==1){a+=Xinha.getInnerText(b)}}}return a};Xinha.prototype._wordClean=function(){var e=this;var c={empty_tags:0,cond_comm:0,mso_elmts:0,mso_class:0,mso_style:0,mso_xmlel:0,orig_len:this._doc.body.innerHTML.length,T:new Date().getTime()};var h={empty_tags:"Empty tags removed: ",cond_comm:"Conditional comments removed",mso_elmts:"MSO invalid elements removed",mso_class:"MSO class names removed: ",mso_style:"MSO inline style removed: ",mso_xmlel:"MSO XML elements stripped: "};function a(){var j="Xinha word cleaner stats: \n\n";for(var k in c){if(h[k]){j+=h[k]+c[k]+"\n"}}j+="\nInitial document length: "+c.orig_len+"\n";j+="Final document length: "+e._doc.body.innerHTML.length+"\n";j+="Clean-up took "+((new Date().getTime()-c.T)/1000)+" seconds";alert(j)}function i(j){var k=j.className.replace(/(^|\s)mso.*?(\s|$)/ig," ");if(k!=j.className){j.className=k;if(!/\S/.test(j.className)){j.removeAttribute("className");++c.mso_class}}}function f(k){var l=k.style.cssText.split(/\s*;\s*/);for(var j=l.length;--j>=0;){if(/^mso|^tab-stops/i.test(l[j])||/^margin\s*:\s*0..\s+0..\s+0../i.test(l[j])){++c.mso_style;l.splice(j,1)}}k.style.cssText=l.join("; ")}function d(j){if(("link"==j.tagName.toLowerCase()&&(j.attributes&&/File-List|Edit-Time-Data|themeData|colorSchemeMapping/.test(j.attributes.rel.nodeValue)))||/^(style|meta)$/i.test(j.tagName)){Xinha.removeFromParent(j);++c.mso_elmts;return true}return false}function b(j){if(/^(a|span|b|strong|i|em|font|div|p)$/i.test(j.tagName)&&!j.firstChild){Xinha.removeFromParent(j);++c.empty_tags;return true}return false}function g(j){i(j);f(j);var m;for(var l=j.firstChild;l;l=m){m=l.nextSibling;if(l.nodeType==1&&g(l)){if((Xinha.is_ie&&j.scopeName!="HTML")||(!Xinha.is_ie&&/:/.test(l.tagName))){for(var k=l.childNodes&&l.childNodes.length-1;l.childNodes&&l.childNodes.length&&l.childNodes[k];--k){if(l.nextSibling){l.parentNode.insertBefore(l.childNodes[k],l.nextSibling)}else{l.parentNode.appendChild(l.childNodes[k])}}Xinha.removeFromParent(l);continue}if(b(l)){continue}if(d(l)){continue}}else{if(l.nodeType==8){if(/(\s*\[\s*if\s*(([gl]te?|!)\s*)?(IE|mso)\s*(\d+(\.\d+)?\s*)?\]>)/.test(l.nodeValue)){Xinha.removeFromParent(l);++c.cond_comm}}}}return true}g(this._doc.body);this.updateToolbar()};Xinha.prototype._clearFonts=function(){var a=this.getInnerHTML();if(confirm(Xinha._lc("Would you like to clear font typefaces?"))){a=a.replace(/face="[^"]*"/gi,"");a=a.replace(/font-family:[^;}"']+;?/gi,"")}if(confirm(Xinha._lc("Would you like to clear font sizes?"))){a=a.replace(/size="[^"]*"/gi,"");a=a.replace(/font-size:[^;}"']+;?/gi,"")}if(confirm(Xinha._lc("Would you like to clear font colours?"))){a=a.replace(/color="[^"]*"/gi,"");a=a.replace(/([^\-])color:[^;}"']+;?/gi,"$1")}a=a.replace(/(style|class)="\s*"/gi,"");a=a.replace(/<(font|span)\s*>/gi,"");this.setHTML(a);this.updateToolbar()};Xinha.prototype._splitBlock=function(){this._doc.execCommand("formatblock",false,"div")};Xinha.prototype.forceRedraw=function(){this._doc.body.style.visibility="hidden";this._doc.body.style.visibility=""};Xinha.prototype.focusEditor=function(){switch(this._editMode){case"wysiwyg":try{if(Xinha._someEditorHasBeenActivated){this.activateEditor();this._iframe.contentWindow.focus()}}catch(a){}break;case"textmode":try{this._textArea.focus()}catch(b){}break;default:alert("ERROR: mode "+this._editMode+" is not defined")}return this._doc};Xinha.prototype._undoTakeSnapshot=function(){++this._undoPos;if(this._undoPos>=this.config.undoSteps){this._undoQueue.shift();--this._undoPos}var b=true;var a=this.getInnerHTML();if(this._undoPos>0){b=(this._undoQueue[this._undoPos-1]!=a)}if(b){this._undoQueue[this._undoPos]=a}else{this._undoPos--}};Xinha.prototype.undo=function(){if(this._undoPos>0){var a=this._undoQueue[--this._undoPos];if(a){this.setHTML(a)}else{++this._undoPos}}};Xinha.prototype.redo=function(){if(this._undoPos<this._undoQueue.length-1){var a=this._undoQueue[++this._undoPos];if(a){this.setHTML(a)}else{--this._undoPos}}};Xinha.prototype.disableToolbar=function(c){if(this._timerToolbar){clearTimeout(this._timerToolbar)}if(typeof c=="undefined"){c=[]}else{if(typeof c!="object"){c=[c]}}for(var b in this._toolbarObjects){var a=this._toolbarObjects[b];if(c.contains(b)){continue}if(typeof a.state!="function"){continue}a.state("enabled",false)}};Xinha.prototype.enableToolbar=function(){this.updateToolbar()};Xinha.prototype.updateToolbar=function(noStatus){if(this.suspendUpdateToolbar){return}var doc=this._doc;var text=(this._editMode=="textmode");var ancestors=null;if(!text){ancestors=this.getAllAncestors();if(this.config.statusBar&&!noStatus){while(this._statusBarItems.length){var item=this._statusBarItems.pop();item.el=null;item.editor=null;item.onclick=null;item.oncontextmenu=null;item._xinha_dom0Events.click=null;item._xinha_dom0Events.contextmenu=null;item=null}this._statusBarTree.innerHTML=Xinha._lc("Path")+": ";for(var i=ancestors.length;--i>=0;){var el=ancestors[i];if(!el){continue}var a=document.createElement("a");a.href="javascript:void(0);";a.el=el;a.editor=this;this._statusBarItems.push(a);Xinha.addDom0Event(a,"click",function(){this.blur();this.editor.selectNodeContents(this.el);this.editor.updateToolbar(true);return false});Xinha.addDom0Event(a,"contextmenu",function(){this.blur();var info="Inline style:\n\n";info+=this.el.style.cssText.split(/;\s*/).join(";\n");alert(info);return false});var txt=el.tagName.toLowerCase();switch(txt){case"b":txt="strong";break;case"i":txt="em";break;case"strike":txt="del";break}if(typeof el.style!="undefined"){a.title=el.style.cssText}if(el.id){txt+="#"+el.id}if(el.className){txt+="."+el.className}a.appendChild(document.createTextNode(txt));this._statusBarTree.appendChild(a);if(i!==0){this._statusBarTree.appendChild(document.createTextNode(String.fromCharCode(187)))}Xinha.freeLater(a)}}}for(var cmd in this._toolbarObjects){var btn=this._toolbarObjects[cmd];var inContext=true;if(typeof btn.state!="function"){continue}if(btn.context&&!text){inContext=false;var context=btn.context;var attrs=[];if(/(.*)\[(.*?)\]/.test(context)){context=RegExp.$1;attrs=RegExp.$2.split(",")}context=context.toLowerCase();var match=(context=="*");for(var k=0;k<ancestors.length;++k){if(!ancestors[k]){continue}if(match||(ancestors[k].tagName.toLowerCase()==context)){inContext=true;var contextSplit=null;var att=null;var comp=null;var attVal=null;for(var ka=0;ka<attrs.length;++ka){contextSplit=attrs[ka].match(/(.*)(==|!=|===|!==|>|>=|<|<=)(.*)/);att=contextSplit[1];comp=contextSplit[2];attVal=contextSplit[3];if(!eval(ancestors[k][att]+comp+attVal)){inContext=false;break}}if(inContext){break}}}}btn.state("enabled",(!text||btn.text)&&inContext);if(typeof cmd=="function"){continue}var dropdown=this.config.customSelects[cmd];if((!text||btn.text)&&(typeof dropdown!="undefined")){dropdown.refresh(this);continue}switch(cmd){case"fontname":case"fontsize":if(!text){try{var value=(""+doc.queryCommandValue(cmd)).toLowerCase();if(!value){btn.element.selectedIndex=0;break}var options=this.config[cmd];var sIndex=0;for(var j in options){if((j.toLowerCase()==value)||(options[j].substr(0,value.length).toLowerCase()==value)){btn.element.selectedIndex=sIndex;throw"ok"}++sIndex}btn.element.selectedIndex=0}catch(ex){}}break;case"formatblock":var blocks=[];for(var indexBlock in this.config.formatblock){if(typeof this.config.formatblock[indexBlock]=="string"){blocks[blocks.length]=this.config.formatblock[indexBlock]}}var deepestAncestor=this._getFirstAncestor(this.getSelection(),blocks);if(deepestAncestor){for(var x=0;x<blocks.length;x++){if(blocks[x].toLowerCase()==deepestAncestor.tagName.toLowerCase()){btn.element.selectedIndex=x}}}else{btn.element.selectedIndex=0}break;case"textindicator":if(!text){try{var style=btn.element.style;style.backgroundColor=Xinha._makeColor(doc.queryCommandValue(Xinha.is_ie?"backcolor":"hilitecolor"));if(/transparent/i.test(style.backgroundColor)){style.backgroundColor=Xinha._makeColor(doc.queryCommandValue("backcolor"))}style.color=Xinha._makeColor(doc.queryCommandValue("forecolor"));style.fontFamily=doc.queryCommandValue("fontname");style.fontWeight=doc.queryCommandState("bold")?"bold":"normal";style.fontStyle=doc.queryCommandState("italic")?"italic":"normal"}catch(ex){}}break;case"htmlmode":btn.state("active",text);break;case"lefttoright":case"righttoleft":var eltBlock=this.getParentElement();while(eltBlock&&!Xinha.isBlockElement(eltBlock)){eltBlock=eltBlock.parentNode}if(eltBlock){btn.state("active",(eltBlock.style.direction==((cmd=="righttoleft")?"rtl":"ltr")))}break;default:cmd=cmd.replace(/(un)?orderedlist/i,"insert$1orderedlist");try{btn.state("active",(!text&&doc.queryCommandState(cmd)))}catch(ex){}break}}if(this._customUndo&&!this._timerUndo){this._undoTakeSnapshot();var editor=this;this._timerUndo=setTimeout(function(){editor._timerUndo=null},this.config.undoTimeout)}this.firePluginEvent("onUpdateToolbar")};Xinha.getEditor=function(c){for(var a=__xinhas.length;a--;){var b=__xinhas[a];if(b&&(b._textArea.id==c||b._textArea.name==c||b._textArea==c)){return b}}return null};Xinha.prototype.getPluginInstance=function(a){if(this.plugins[a]){return this.plugins[a].instance}else{return null}};Xinha.prototype.getAllAncestors=function(){var c=this.getParentElement();var b=[];while(c&&(c.nodeType==1)&&(c.tagName.toLowerCase()!="body")){b.push(c);c=c.parentNode}b.push(this._doc.body);return b};Xinha.prototype._getFirstAncestor=function(e,d){var c=this.activeElement(e);if(c===null){try{c=(Xinha.is_ie?this.createRange(e).parentElement():this.createRange(e).commonAncestorContainer)}catch(b){return null}}if(typeof d=="string"){d=[d]}while(c){if(c.nodeType==1){if(d===null){return c}for(var a=0;a<d.length;++a){if(typeof d[a]=="string"&&d[a]==c.tagName.toLowerCase()){return c}else{if(typeof d[a]=="function"&&d[a](this,c)){return c}}}if(c.tagName.toLowerCase()=="body"){break}if(c.tagName.toLowerCase()=="table"){break}}c=c.parentNode}return null};Xinha.prototype._getAncestorBlock=function(b){var a=(Xinha.is_ie?this.createRange(b).parentElement:this.createRange(b).commonAncestorContainer);while(a&&(a.nodeType==1)){switch(a.tagName.toLowerCase()){case"div":case"p":case"address":case"blockquote":case"center":case"del":case"ins":case"pre":case"h1":case"h2":case"h3":case"h4":case"h5":case"h6":case"h7":return a;case"body":case"noframes":case"dd":case"li":case"th":case"td":case"noscript":return null;default:break}}return null};Xinha.prototype._createImplicitBlock=function(b){var c=this.getSelection();if(Xinha.is_ie){c.empty()}else{c.collapseToStart()}var a=this.createRange(c)};Xinha.prototype.surroundHTML=function(c,b){var a=this.getSelectedHTML();this.insertHTML(c+a+b)};Xinha.prototype.hasSelectedText=function(){return this.getSelectedHTML()!==""};Xinha.prototype._comboSelected=function(b,a){this.focusEditor();var c=b.options[b.selectedIndex].value;switch(a){case"fontname":case"fontsize":this.execCommand(a,false,c);break;case"formatblock":if(!c){this.updateToolbar();break}if(!Xinha.is_gecko||c!=="blockquote"){c="<"+c+">"}this.execCommand(a,false,c);break;default:var d=this.config.customSelects[a];if(typeof d!="undefined"){d.action(this)}else{alert("FIXME: combo box "+a+" not implemented")}break}};Xinha.prototype._colorSelector=function(h){var g=this;if(Xinha.is_gecko){try{g._doc.execCommand("useCSS",false,false);g._doc.execCommand("styleWithCSS",false,true)}catch(e){}}var d=g._toolbarObjects[h].element;var f;if(h=="hilitecolor"){if(Xinha.is_ie){h="backcolor";f=Xinha._colorToRgb(g._doc.queryCommandValue("backcolor"))}else{f=Xinha._colorToRgb(g._doc.queryCommandValue("hilitecolor"))}}else{f=Xinha._colorToRgb(g._doc.queryCommandValue("forecolor"))}var b=function(i){g._doc.execCommand(h,false,i)};if(Xinha.is_ie){var a=g.createRange(g.getSelection());b=function(i){a.select();g._doc.execCommand(h,false,i)}}var c=new Xinha.colorPicker({cellsize:g.config.colorPickerCellSize,callback:b,granularity:g.config.colorPickerGranularity,websafe:g.config.colorPickerWebSafe,savecolors:g.config.colorPickerSaveColors});c.open(g.config.colorPickerPosition,d,f)};Xinha.prototype.execCommand=function(h,f,g){var e=this;this.focusEditor();h=h.toLowerCase();if(this.firePluginEvent("onExecCommand",h,f,g)){this.updateToolbar();return false}switch(h){case"htmlmode":this.setMode();break;case"hilitecolor":case"forecolor":this._colorSelector(h);break;case"createlink":this._createLink();break;case"undo":case"redo":if(this._customUndo){this[h]()}else{this._doc.execCommand(h,f,g)}break;case"inserttable":this._insertTable();break;case"insertimage":this._insertImage();break;case"showhelp":this._popupDialog(e.config.URIs.help,null,this);break;case"killword":this._wordClean();break;case"cut":case"copy":case"paste":this._doc.execCommand(h,f,g);if(this.config.killWordOnPaste){this._wordClean()}break;case"lefttoright":case"righttoleft":if(this.config.changeJustifyWithDirection){this._doc.execCommand((h=="righttoleft")?"justifyright":"justifyleft",f,g)}var a=(h=="righttoleft")?"rtl":"ltr";var d=this.getParentElement();while(d&&!Xinha.isBlockElement(d)){d=d.parentNode}if(d){if(d.style.direction==a){d.style.direction=""}else{d.style.direction=a}}break;case"justifyleft":case"justifyright":h.match(/^justify(.*)$/);var c=this.activeElement(this.getSelection());if(c&&c.tagName.toLowerCase()=="img"){c.align=c.align==RegExp.$1?"":RegExp.$1}else{this._doc.execCommand(h,f,g)}break;default:try{this._doc.execCommand(h,f,g)}catch(b){if(this.config.debug){alert(b+"\n\nby execCommand("+h+");")}}break}this.updateToolbar();return false};Xinha.prototype._editorEvent=function(b){var a=this;if(typeof a._textArea["on"+b.type]=="function"){a._textArea["on"+b.type](b)}if(this.isKeyEvent(b)){if(a.firePluginEvent("onKeyPress",b)){return false}if(this.isShortCut(b)){this._shortCuts(b)}}if(b.type=="mousedown"){if(a.firePluginEvent("onMouseDown",b)){return false}}if(a._timerToolbar){clearTimeout(a._timerToolbar)}if(!this.suspendUpdateToolbar){a._timerToolbar=setTimeout(function(){a.updateToolbar();a._timerToolbar=null},250)}};Xinha.prototype._shortCuts=function(b){var a=this.getKey(b).toLowerCase();var d=null;var c=null;switch(a){case"b":d="bold";break;case"i":d="italic";break;case"u":d="underline";break;case"s":d="strikethrough";break;case"l":d="justifyleft";break;case"e":d="justifycenter";break;case"r":d="justifyright";break;case"j":d="justifyfull";break;case"z":d="undo";break;case"y":d="redo";break;case"v":d="paste";break;case"n":d="formatblock";c="p";break;case"0":d="killword";break;case"1":case"2":case"3":case"4":case"5":case"6":d="formatblock";c="h"+a;break}if(d){this.execCommand(d,false,c);Xinha._stopEvent(b)}};Xinha.prototype.convertNode=function(a,c){var b=this._doc.createElement(c);while(a.firstChild){b.appendChild(a.firstChild)}return b};Xinha.prototype.scrollToElement=function(b){if(!b){b=this.getParentElement();if(!b){return}}var a=Xinha.getElementTopLeft(b);this._iframe.contentWindow.scrollTo(a.left,a.top)};Xinha.prototype.getEditorContent=function(){return this.outwardHtml(this.getHTML())};Xinha.prototype.setEditorContent=function(a){this.setHTML(this.inwardHtml(a))};Xinha.updateTextareas=function(){var b;for(var a=0;a<__xinhas.length;a++){b=__xinhas[a];b._textArea.value=b.getEditorContent()}};Xinha.prototype.getHTML=function(){var a="";switch(this._editMode){case"wysiwyg":if(!this.config.fullPage){a=Xinha.getHTML(this._doc.body,false,this).trim()}else{a=this.doctype+"\n"+Xinha.getHTML(this._doc.documentElement,true,this)}break;case"textmode":a=this._textArea.value;break;default:alert("Mode <"+this._editMode+"> not defined!");return false}return a};Xinha.prototype.outwardHtml=function(c){for(var b in this.plugins){var d=this.plugins[b].instance;if(d&&typeof d.outwardHtml=="function"){c=d.outwardHtml(c)}}c=c.replace(/<(\/?)b(\s|>|\/)/ig,"<$1strong$2");c=c.replace(/<(\/?)i(\s|>|\/)/ig,"<$1em$2");c=c.replace(/<(\/?)strike(\s|>|\/)/ig,"<$1del$2");c=c.replace(/(<[^>]*on(click|mouse(over|out|up|down))=['"])if\(window\.parent &amp;&amp; window\.parent\.Xinha\)\{return false\}/gi,"$1");var a=location.href.replace(/(https?:\/\/[^\/]*)\/.*/,"$1")+"/";c=c.replace(/https?:\/\/null\//g,a);c=c.replace(/((href|src|background)=[\'\"])\/+/ig,"$1"+a);c=this.outwardSpecialReplacements(c);c=this.fixRelativeLinks(c);if(this.config.sevenBitClean){c=c.replace(/[^ -~\r\n\t]/g,function(e){return(e!=Xinha.cc)?"&#"+e.charCodeAt(0)+";":e})}c=c.replace(/(<script[^>]*((type=[\"\']text\/)|(language=[\"\'])))(freezescript)/gi,"$1javascript");if(this.config.fullPage){c=Xinha.stripCoreCSS(c)}if(typeof this.config.outwardHtml=="function"){c=this.config.outwardHtml(c)}return c};Xinha.prototype.inwardHtml=function(b){for(var a in this.plugins){var c=this.plugins[a].instance;if(c&&typeof c.inwardHtml=="function"){b=c.inwardHtml(b)}}b=b.replace(/<(\/?)del(\s|>|\/)/ig,"<$1strike$2");b=b.replace(/(<[^>]*on(click|mouse(over|out|up|down))=["'])/gi,"$1if(window.parent &amp;&amp; window.parent.Xinha){return false}");b=this.inwardSpecialReplacements(b);b=b.replace(/(<script[^>]*((type=[\"\']text\/)|(language=[\"\'])))(javascript)/gi,"$1freezescript");var d=new RegExp("((href|src|background)=['\"])/+","gi");b=b.replace(d,"$1"+location.href.replace(/(https?:\/\/[^\/]*)\/.*/,"$1")+"/");b=this.fixRelativeLinks(b);if(this.config.fullPage){b=Xinha.addCoreCSS(b)}if(typeof this.config.inwardHtml=="function"){b=this.config.inwardHtml(b)}return b};Xinha.prototype.outwardSpecialReplacements=function(b){for(var a in this.config.specialReplacements){var e=this.config.specialReplacements[a];var d=a;if(typeof e.replace!="function"||typeof d.replace!="function"){continue}var c=new RegExp(Xinha.escapeStringForRegExp(e),"g");b=b.replace(c,d.replace(/\$/g,"$$$$"))}return b};Xinha.prototype.inwardSpecialReplacements=function(b){for(var a in this.config.specialReplacements){var e=a;var d=this.config.specialReplacements[a];if(typeof e.replace!="function"||typeof d.replace!="function"){continue}var c=new RegExp(Xinha.escapeStringForRegExp(e),"g");b=b.replace(c,d.replace(/\$/g,"$$$$"))}return b};Xinha.prototype.fixRelativeLinks=function(g){if(typeof this.config.expandRelativeUrl!="undefined"&&this.config.expandRelativeUrl){if(g==null){return""}var a=g.match(/(src|href)="([^"]*)"/gi);var j=document.location.href;if(a){var d,k,l,m,c;for(var f=0;f<a.length;++f){d=a[f].match(/(src|href)="([^"]*)"/i);k=d[2].match(/\.\.\//g);if(k){l=new RegExp("(.*?)(([^/]*/){"+k.length+"})[^/]*$");m=j.match(l);c=d[2].replace(/(\.\.\/)*/,m[1]);g=g.replace(new RegExp(Xinha.escapeStringForRegExp(d[2])),c)}}}}if(typeof this.config.stripSelfNamedAnchors!="undefined"&&this.config.stripSelfNamedAnchors){var e=new RegExp('((href|src|background)=")('+Xinha.escapeStringForRegExp(window.unescape(document.location.href.replace(/&/g,"&amp;")))+")([#?][^'\" ]*)","g");g=g.replace(e,"$1$4")}if(typeof this.config.stripBaseHref!="undefined"&&this.config.stripBaseHref){var h=null;if(typeof this.config.baseHref!="undefined"&&this.config.baseHref!==null){h=new RegExp('((href|src|background|action)=")('+Xinha.escapeStringForRegExp(this.config.baseHref.replace(/([^\/]\/)(?=.+\.)[^\/]*$/,"$1"))+")","g");g=g.replace(h,"$1")}h=new RegExp('((href|src|background|action)=")('+Xinha.escapeStringForRegExp(document.location.href.replace(/^(https?:\/\/[^\/]*)(.*)/,"$1"))+")","g");g=g.replace(h,"$1")}return g};Xinha.prototype.getInnerHTML=function(){if(!this._doc.body){return""}var a="";switch(this._editMode){case"wysiwyg":if(!this.config.fullPage){a=this._doc.body.innerHTML}else{a=this.doctype+"\n"+this._doc.documentElement.innerHTML}break;case"textmode":a=this._textArea.value;break;default:alert("Mode <"+this._editMode+"> not defined!");return false}return a};Xinha.prototype.setHTML=function(a){if(!this.config.fullPage){this._doc.body.innerHTML=a}else{this.setFullHTML(a)}this._textArea.value=a};Xinha.prototype.setDoctype=function(a){this.doctype=a};Xinha._object=null;Array.prototype.isArray=true;RegExp.prototype.isRegExp=true;Xinha.cloneObject=function(obj){if(!obj){return null}var newObj=obj.isArray?[]:{};if(obj.constructor.toString().match(/\s*function Function\(/)||typeof obj=="function"){newObj=obj}else{if(obj.isRegExp){newObj=eval(obj.toString())}else{for(var n in obj){var node=obj[n];if(typeof node=="object"){newObj[n]=Xinha.cloneObject(node)}else{newObj[n]=node}}}}return newObj};Xinha.flushEvents=function(){var a=0;var c=Xinha._eventFlushers.pop();while(c){try{if(c.length==3){Xinha._removeEvent(c[0],c[1],c[2]);a++}else{if(c.length==2){c[0]["on"+c[1]]=null;c[0]._xinha_dom0Events[c[1]]=null;a++}}}catch(b){}c=Xinha._eventFlushers.pop()}};Xinha._eventFlushers=[];if(document.addEventListener){Xinha._addEvent=function(a,c,b){a.addEventListener(c,b,false);Xinha._eventFlushers.push([a,c,b])};Xinha._removeEvent=function(a,c,b){a.removeEventListener(c,b,false)};Xinha._stopEvent=function(a){a.preventDefault();a.stopPropagation()}}else{if(document.attachEvent){Xinha._addEvent=function(a,c,b){a.attachEvent("on"+c,b);Xinha._eventFlushers.push([a,c,b])};Xinha._removeEvent=function(a,c,b){a.detachEvent("on"+c,b)};Xinha._stopEvent=function(b){try{b.cancelBubble=true;b.returnValue=false}catch(a){}}}else{Xinha._addEvent=function(a,c,b){alert("_addEvent is not supported")};Xinha._removeEvent=function(a,c,b){alert("_removeEvent is not supported")};Xinha._stopEvent=function(a){alert("_stopEvent is not supported")}}}Xinha._addEvents=function(c,a,d){for(var b=a.length;--b>=0;){Xinha._addEvent(c,a[b],d)}};Xinha._removeEvents=function(c,a,d){for(var b=a.length;--b>=0;){Xinha._removeEvent(c,a[b],d)}};Xinha.addOnloadHandler=function(b,a){a=a?a:window;var c=function(){if(arguments.callee.done){return}arguments.callee.done=true;if(Xinha.onloadTimer){clearInterval(Xinha.onloadTimer)}b()};if(Xinha.is_ie){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);c()}});if(document.documentElement.doScroll&&typeof window.frameElement==="undefined"){(function(){if(arguments.callee.done){return}try{document.documentElement.doScroll("left")}catch(d){setTimeout(arguments.callee,0);return}c()})()}}else{if(/applewebkit|KHTML/i.test(navigator.userAgent)){Xinha.onloadTimer=a.setInterval(function(){if(/loaded|complete/.test(a.document.readyState)){c()}},10)}else{a.document.addEventListener("DOMContentLoaded",c,false)}}Xinha._addEvent(a,"load",c)};Xinha.addDom0Event=function(b,c,a){Xinha._prepareForDom0Events(b,c);b._xinha_dom0Events[c].unshift(a)};Xinha.prependDom0Event=function(b,c,a){Xinha._prepareForDom0Events(b,c);b._xinha_dom0Events[c].push(a)};Xinha.getEvent=function(a){return a||window.event};Xinha._prepareForDom0Events=function(a,b){if(typeof a._xinha_dom0Events=="undefined"){a._xinha_dom0Events={};Xinha.freeLater(a,"_xinha_dom0Events")}if(typeof a._xinha_dom0Events[b]=="undefined"){a._xinha_dom0Events[b]=[];if(typeof a["on"+b]=="function"){a._xinha_dom0Events[b].push(a["on"+b])}a["on"+b]=function(e){var c=a._xinha_dom0Events[b];var f=true;for(var d=c.length;--d>=0;){a._xinha_tempEventHandler=c[d];if(a._xinha_tempEventHandler(e)===false){a._xinha_tempEventHandler=null;f=false;break}a._xinha_tempEventHandler=null}return f};Xinha._eventFlushers.push([a,b])}};Xinha.prototype.notifyOn=function(b,a){if(typeof this._notifyListeners[b]=="undefined"){this._notifyListeners[b]=[];Xinha.freeLater(this,"_notifyListeners")}this._notifyListeners[b].push(a)};Xinha.prototype.notifyOf=function(c,a){if(this._notifyListeners[c]){for(var b=0;b<this._notifyListeners[c].length;b++){this._notifyListeners[c][b](c,a)}}};Xinha._blockTags=" body form textarea fieldset ul ol dl li div p h1 h2 h3 h4 h5 h6 quote pre table thead tbody tfoot tr td th iframe address blockquote title meta link style head ";Xinha.isBlockElement=function(a){return a&&a.nodeType==1&&(Xinha._blockTags.indexOf(" "+a.tagName.toLowerCase()+" ")!=-1)};Xinha._paraContainerTags=" body td th caption fieldset div ";Xinha.isParaContainer=function(a){return a&&a.nodeType==1&&(Xinha._paraContainerTags.indexOf(" "+a.tagName.toLowerCase()+" ")!=-1)};Xinha._closingTags=" a abbr acronym address applet b bdo big blockquote button caption center cite code del dfn dir div dl em fieldset font form frameset h1 h2 h3 h4 h5 h6 i iframe ins kbd label legend map menu noframes noscript object ol optgroup pre q s samp script select small span strike strong style sub sup table textarea title tt u ul var ";Xinha.needsClosingTag=function(a){return a&&a.nodeType==1&&(Xinha._closingTags.indexOf(" "+a.tagName.toLowerCase()+" ")!=-1)};Xinha.htmlEncode=function(a){if(!a){return""}if(typeof a.replace=="undefined"){a=a.toString()}a=a.replace(/&/ig,"&amp;");a=a.replace(/</ig,"&lt;");a=a.replace(/>/ig,"&gt;");a=a.replace(/\xA0/g,"&nbsp;");a=a.replace(/\x22/g,"&quot;");return a};Xinha.prototype.stripBaseURL=function(a){if(this.config.baseHref===null||!this.config.stripBaseHref){return a}var c=this.config.baseHref.replace(/^(https?:\/\/[^\/]+)(.*)$/,"$1");var b=new RegExp(c);return a.replace(b,"")};if(typeof String.prototype.trim!="function"){String.prototype.trim=function(){return this.replace(/^\s+/,"").replace(/\s+$/,"")}}Xinha._makeColor=function(c){if(typeof c!="number"){return c}var e=c&255;var d=(c>>8)&255;var a=(c>>16)&255;return"rgb("+e+","+d+","+a+")"};Xinha._colorToRgb=function(c){if(!c){return""}var h,f,a;function e(b){return(b<16)?("0"+b.toString(16)):b.toString(16)}if(typeof c=="number"){h=c&255;f=(c>>8)&255;a=(c>>16)&255;return"#"+e(h)+e(f)+e(a)}if(c.substr(0,3)=="rgb"){var d=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/;if(c.match(d)){h=parseInt(RegExp.$1,10);f=parseInt(RegExp.$2,10);a=parseInt(RegExp.$3,10);return"#"+e(h)+e(f)+e(a)}return null}if(c.substr(0,1)=="#"){return c}return null};Xinha.prototype._popupDialog=function(a,b,c){Dialog(this.popupURL(a),b,c)};Xinha.prototype.imgURL=function(a,b){if(typeof b=="undefined"){return _editor_url+a}else{return Xinha.getPluginDir(b)+"/img/"+a}};Xinha.prototype.popupURL=function(c){var b="";if(c.match(/^plugin:\/\/(.*?)\/(.*)/)){var d=RegExp.$1;var a=RegExp.$2;if(!/\.(html?|php)$/.test(a)){a+=".html"}b=Xinha.getPluginDir(d)+"/popups/"+a}else{if(c.match(/^\/.*?/)||c.match(/^https?:\/\//)){b=c}else{b=_editor_url+this.config.popupURL+c}}return b};Xinha.getElementById=function(a,e){var c,b,d=document.getElementsByTagName(a);for(b=d.length;--b>=0&&(c=d[b]);){if(c.id==e){return c}}return null};Xinha.prototype._toggleBorders=function(){var b=this._doc.getElementsByTagName("TABLE");if(b.length!==0){if(!this.borders){this.borders=true}else{this.borders=false}for(var a=0;a<b.length;a++){if(this.borders){Xinha._addClass(b[a],"htmtableborders")}else{Xinha._removeClass(b[a],"htmtableborders")}}}return true};Xinha.addCoreCSS=function(b){var a='<style title="XinhaInternalCSS" type="text/css">.htmtableborders, .htmtableborders td, .htmtableborders th {border : 1px dashed lightgrey ! important;}\nhtml, body { border: 0px; } \nbody { background-color: #ffffff; } \nimg, hr { cursor: default } \n</style>\n';if(b&&/<head>/i.test(b)){return b.replace(/<head>/i,"<head>"+a)}else{if(b){return a+b}else{return a}}};Xinha.prototype.addEditorStylesheet=function(a){var b=this._doc.createElement("link");b.rel="stylesheet";b.type="text/css";b.title="XinhaInternalCSS";b.href=a;this._doc.getElementsByTagName("HEAD")[0].appendChild(b)};Xinha.stripCoreCSS=function(a){return a.replace(/<style[^>]+title="XinhaInternalCSS"(.|\n)*?<\/style>/ig,"").replace(/<link[^>]+title="XinhaInternalCSS"(.|\n)*?>/ig,"")};Xinha._removeClass=function(e,d){if(!(e&&e.className)){return}var a=e.className.split(" ");var b=[];for(var c=a.length;c>0;){if(a[--c]!=d){b[b.length]=a[c]}}e.className=b.join(" ")};Xinha._addClass=function(b,a){Xinha._removeClass(b,a);b.className+=" "+a};Xinha.addClasses=function(f,e){if(f!==null){var b=f.className.trim().split(" ");var d=e.split(" ");for(var a=0;a<d.length;a++){var g=false;for(var c=0;g===false&&c<b.length;c++){if(b[c]==d[a]){g=true}}if(g===false){b[b.length]=d[a]}}f.className=b.join(" ").trim()}};Xinha.removeClasses=function(e,d){var g=e.className.trim().split();var f=[];var b=d.trim().split();for(var c=0;c<g.length;c++){var h=false;for(var a=0;a<b.length&&!h;a++){if(g[c]==b[a]){h=true}}if(!h){f[f.length]=g[c]}}return f.join(" ")};Xinha.addClass=Xinha._addClass;Xinha.removeClass=Xinha._removeClass;Xinha._addClasses=Xinha.addClasses;Xinha._removeClasses=Xinha.removeClasses;Xinha._hasClass=function(d,c){if(!(d&&d.className)){return false}var a=d.className.split(" ");for(var b=a.length;b>0;){if(a[--b]==c){return true}}return false};Xinha._postback_send_charset=true;Xinha._postback=function(b,g,h,a){var e=null;e=Xinha.getXMLHTTPRequestObject();var d="";if(typeof g=="string"){d=g}else{if(typeof g=="object"){for(var c in g){d+=(d.length?"&":"")+c+"="+encodeURIComponent(g[c])}}}function f(){if(e.readyState==4){if(((e.status/100)==2)||Xinha.isRunLocally&&e.status===0){if(typeof h=="function"){h(e.responseText,e)}}else{if(Xinha._postback_send_charset){Xinha._postback_send_charset=false;Xinha._postback(b,g,h,a)}else{if(typeof a=="function"){a(e)}else{alert("An error has occurred: "+e.statusText+"\nURL: "+b)}}}}}e.onreadystatechange=f;e.open("POST",b,true);e.setRequestHeader("Content-Type","application/x-www-form-urlencoded"+(Xinha._postback_send_charset?"; charset=UTF-8":""));e.send(d)};Xinha._getback=function(b,e,a){var c=null;c=Xinha.getXMLHTTPRequestObject();function d(){if(c.readyState==4){if(((c.status/100)==2)||Xinha.isRunLocally&&c.status===0){e(c.responseText,c)}else{if(typeof a=="function"){a(c)}else{alert("An error has occurred: "+c.statusText+"\nURL: "+b)}}}}c.onreadystatechange=d;c.open("GET",b,true);c.send(null)};Xinha.ping=function(c,b,a){var d=null;d=Xinha.getXMLHTTPRequestObject();function e(){if(d.readyState==4){if(((d.status/100)==2)||Xinha.isRunLocally&&d.status===0){if(b){b(d)}}else{if(a){a(d)}}}}var f=Xinha.is_opera?"GET":"HEAD";d.onreadystatechange=e;d.open(f,c,true);d.send(null)};Xinha._geturlcontent=function(b,a){var c=null;c=Xinha.getXMLHTTPRequestObject();c.open("GET",b,false);c.send(null);if(((c.status/100)==2)||Xinha.isRunLocally&&c.status===0){return(a)?c.responseXML:c.responseText}else{return""}};if(typeof dumpValues=="undefined"){dumpValues=function(c){var b="";for(var d in c){if(window.console&&typeof window.console.log=="function"){if(typeof console.firebug!="undefined"){console.log(c)}else{console.log(d+" = "+c[d]+"\n")}}else{b+=d+" = "+c[d]+"\n"}}if(b){if(document.getElementById("errors")){document.getElementById("errors").value+=b}else{var a=window.open("","debugger");a.document.write("<pre>"+b+"</pre>")}}}}if(!Array.prototype.contains){Array.prototype.contains=function(c){var b=this;for(var a=0;a<b.length;a++){if(c==b[a]){return true}}return false}}if(!Array.prototype.indexOf){Array.prototype.indexOf=function(c){var b=this;for(var a=0;a<b.length;a++){if(c==b[a]){return a}}return null}}if(!Array.prototype.append){Array.prototype.append=function(b){for(var c=0;c<b.length;c++){this.push(b[c])}return this}}if(!Array.prototype.forEach){Array.prototype.forEach=function(d){var a=this.length;if(typeof d!="function"){throw new TypeError()}var b=arguments[1];for(var c=0;c<a;c++){if(c in this){d.call(b,this[c],c,this)}}}}Xinha.getElementsByClassName=function(e,d){if(e.getElementsByClassName){return Array.prototype.slice.call(e.getElementsByClassName(d))}else{var c=e.getElementsByTagName("*");var a=[];var f;for(var b=0;b<c.length;b++){f=c[b].className.split(" ");if(f.contains(d)){a.push(c[b])}}return a}};Xinha.arrayContainsArray=function(d,b){var c=true;for(var a=0;a<b.length;a++){var f=false;for(var e=0;e<d.length;e++){if(d[e]==b[a]){f=true;break}}if(!f){c=false;break}}return c};Xinha.arrayFilter=function(b,d){var c=[];for(var a=0;a<b.length;a++){if(d(b[a])){c[c.length]=b[a]}}return c};Xinha.collectionToArray=function(c){try{return c.length?Array.prototype.slice.call(c):[]}catch(b){}var d=[];for(var a=0;a<c.length;a++){d.push(c.item(a))}return d};Xinha.uniq_count=0;Xinha.uniq=function(a){return a+Xinha.uniq_count++};Xinha._loadlang=function(context,url){var lang;if(typeof _editor_lcbackend=="string"){url=_editor_lcbackend;url=url.replace(/%lang%/,_editor_lang);url=url.replace(/%context%/,context)}else{if(!url){if(context!="Xinha"){url=Xinha.getPluginDir(context)+"/lang/"+_editor_lang+".js"}else{Xinha.setLoadingMessage("Loading language");url=_editor_url+"lang/"+_editor_lang+".js"}}}var langData=Xinha._geturlcontent(url);if(langData!==""){try{eval("lang = "+langData)}catch(ex){alert("Error reading Language-File ("+url+"):\n"+Error.toString());lang={}}}else{lang={}}return lang};Xinha._lc=function(g,b,c){var a,h;if(typeof b=="object"&&b.url&&b.context){a=b.url+_editor_lang+".js";b=b.context}var e=null;if(typeof g=="string"){e=g.match(/\$(.*?)=(.*?)\$/g)}if(e){if(!c){c={}}for(var f=0;f<e.length;f++){var d=e[f].match(/\$(.*?)=(.*?)\$/);c[d[1]]=d[2];g=g.replace(d[0],"$"+d[1])}}if(_editor_lang=="en"){if(typeof g=="object"&&g.string){h=g.string}else{h=g}}else{if(typeof Xinha._lc_catalog=="undefined"){Xinha._lc_catalog=[]}if(typeof b=="undefined"){b="Xinha"}if(typeof Xinha._lc_catalog[b]=="undefined"){Xinha._lc_catalog[b]=Xinha._loadlang(b,a)}var j;if(typeof g=="object"&&g.key){j=g.key}else{if(typeof g=="object"&&g.string){j=g.string}else{j=g}}if(typeof Xinha._lc_catalog[b][j]=="undefined"){if(b=="Xinha"){if(typeof g=="object"&&g.string){h=g.string}else{h=g}}else{return Xinha._lc(g,"Xinha",c)}}else{h=Xinha._lc_catalog[b][j]}}if(typeof g=="object"&&g.replace){c=g.replace}if(typeof c!="undefined"){for(f in c){h=h.replace("$"+f,c[f])}}return h};Xinha.hasDisplayedChildren=function(c){var b=c.childNodes;for(var a=0;a<b.length;a++){if(b[a].tagName){if(b[a].style.display!="none"){return true}}}return false};Xinha._loadback=function(a,f,d,e){if(document.getElementById(a)){return true}var b=!Xinha.is_ie?"onload":"onreadystatechange";var c=document.createElement("script");c.type="text/javascript";c.src=a;c.id=a;if(f){c[b]=function(){if(Xinha.is_ie&&(!/loaded|complete/.test(window.event.srcElement.readyState))){return}f.call(d?d:this,e);c[b]=null}}document.getElementsByTagName("head")[0].appendChild(c);return false};Xinha.makeEditors=function(c,f,g){if(!Xinha.isSupportedBrowser){return}if(typeof f=="function"){f=f()}var e={};var b;for(var a=0;a<c.length;a++){if(typeof c[a]=="string"){b=Xinha.getElementById("textarea",c[a]);if(!b){c[a]=null;continue}}else{if(typeof c[a]=="object"&&c[a].tagName&&c[a].tagName.toLowerCase()=="textarea"){b=c[a];if(!b.id){b.id="xinha_id_"+a}}}var d=new Xinha(b,Xinha.cloneObject(f));d.registerPlugins(g);e[b.id]=d}return e};Xinha.startEditors=function(b){if(!Xinha.isSupportedBrowser){return}for(var a in b){if(b[a].generate){b[a].generate()}}};Xinha.prototype.registerPlugins=function(b){if(!Xinha.isSupportedBrowser){return}if(b){for(var a=0;a<b.length;a++){this.setLoadingMessage(Xinha._lc("Register plugin $plugin","Xinha",{plugin:b[a]}));this.registerPlugin(b[a])}}};Xinha.base64_encode=function(d){var b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var a="";var l,j,g;var k,h,f,e;var c=0;do{l=d.charCodeAt(c++);j=d.charCodeAt(c++);g=d.charCodeAt(c++);k=l>>2;h=((l&3)<<4)|(j>>4);f=((j&15)<<2)|(g>>6);e=g&63;if(isNaN(j)){f=e=64}else{if(isNaN(g)){e=64}}a=a+b.charAt(k)+b.charAt(h)+b.charAt(f)+b.charAt(e)}while(c<d.length);return a};Xinha.base64_decode=function(d){var b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var a="";var l,j,g;var k,h,f,e;var c=0;d=d.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{k=b.indexOf(d.charAt(c++));h=b.indexOf(d.charAt(c++));f=b.indexOf(d.charAt(c++));e=b.indexOf(d.charAt(c++));l=(k<<2)|(h>>4);j=((h&15)<<4)|(f>>2);g=((f&3)<<6)|e;a=a+String.fromCharCode(l);if(f!=64){a=a+String.fromCharCode(j)}if(e!=64){a=a+String.fromCharCode(g)}}while(c<d.length);return a};Xinha.removeFromParent=function(b){if(!b.parentNode){return}var a=b.parentNode;return a.removeChild(b)};Xinha.hasParentNode=function(a){if(a.parentNode){if(a.parentNode.nodeType==11){return false}return true}return false};Xinha.viewportSize=function(b){b=(b)?b:window;var a,c;if(b.innerHeight){a=b.innerWidth;c=b.innerHeight}else{if(b.document.documentElement&&b.document.documentElement.clientHeight){a=b.document.documentElement.clientWidth;c=b.document.documentElement.clientHeight}else{if(b.document.body){a=b.document.body.clientWidth;c=b.document.body.clientHeight}}}return{x:a,y:c}};Xinha.pageSize=function(d){d=(d)?d:window;var a,e;var c=d.document.body.scrollHeight;var b=d.document.documentElement.scrollHeight;if(c>b){a=d.document.body.scrollWidth;e=d.document.body.scrollHeight}else{a=d.document.documentElement.scrollWidth;e=d.document.documentElement.scrollHeight}return{x:a,y:e}};Xinha.prototype.scrollPos=function(b){b=(b)?b:window;var a,c;if(typeof b.pageYOffset!="undefined"){a=b.pageXOffset;c=b.pageYOffset}else{if(b.document.documentElement&&typeof document.documentElement.scrollTop!="undefined"){a=b.document.documentElement.scrollLeft;c=b.document.documentElement.scrollTop}else{if(b.document.body){a=b.document.body.scrollLeft;c=b.document.body.scrollTop}}}return{x:a,y:c}};Xinha.getElementTopLeft=function(a){var c=0;var b=0;if(a.offsetParent){c=a.offsetLeft;b=a.offsetTop;while(a=a.offsetParent){c+=a.offsetLeft;b+=a.offsetTop}}return{top:b,left:c}};Xinha.findPosX=function(a){var b=0;if(a.offsetParent){return Xinha.getElementTopLeft(a).left}else{if(a.x){b+=a.x}}return b};Xinha.findPosY=function(b){var a=0;if(b.offsetParent){return Xinha.getElementTopLeft(b).top}else{if(b.y){a+=b.y}}return a};Xinha.createLoadingMessages=function(b){if(Xinha.loadingMessages||!Xinha.isSupportedBrowser){return}Xinha.loadingMessages=[];for(var a=0;a<b.length;a++){if(!document.getElementById(b[a])){continue}Xinha.loadingMessages.push(Xinha.createLoadingMessage(Xinha.getElementById("textarea",b[a])))}};Xinha.createLoadingMessage=function(a,e){if(document.getElementById("loading_"+a.id)||!Xinha.isSupportedBrowser){return}var d=document.createElement("div");d.id="loading_"+a.id;d.className="loading";d.style.left=(Xinha.findPosX(a)+a.offsetWidth/2)-106+"px";d.style.top=(Xinha.findPosY(a)+a.offsetHeight/2)-50+"px";var c=document.createElement("div");c.className="loading_main";c.id="loading_main_"+a.id;c.appendChild(document.createTextNode(Xinha._lc("Loading in progress. Please wait!")));var b=document.createElement("div");b.className="loading_sub";b.id="loading_sub_"+a.id;e=e?e:Xinha._lc("Loading Core");b.appendChild(document.createTextNode(e));d.appendChild(c);d.appendChild(b);document.body.appendChild(d);Xinha.freeLater(d);Xinha.freeLater(c);Xinha.freeLater(b);return b};Xinha.prototype.setLoadingMessage=function(a,b){if(!document.getElementById("loading_sub_"+this._textArea.id)){return}document.getElementById("loading_main_"+this._textArea.id).innerHTML=b?b:Xinha._lc("Loading in progress. Please wait!");document.getElementById("loading_sub_"+this._textArea.id).innerHTML=a};Xinha.setLoadingMessage=function(a){if(!Xinha.loadingMessages){return}for(var b=0;b<Xinha.loadingMessages.length;b++){Xinha.loadingMessages[b].innerHTML=a}};Xinha.prototype.removeLoadingMessage=function(){if(document.getElementById("loading_"+this._textArea.id)){document.body.removeChild(document.getElementById("loading_"+this._textArea.id))}};Xinha.removeLoadingMessages=function(c){for(var b=0;b<c.length;b++){if(!document.getElementById(c[b])){continue}var a=document.getElementById("loading_"+document.getElementById(c[b]).id);a.parentNode.removeChild(a)}Xinha.loadingMessages=null};Xinha.toFree=[];Xinha.freeLater=function(a,b){Xinha.toFree.push({o:a,p:b})};Xinha.free=function(c,d){if(c&&!d){for(var b in c){Xinha.free(c,b)}}else{if(c){if(d.indexOf("src")==-1){try{c[d]=null}catch(a){}}}}};Xinha.collectGarbageForIE=function(){Xinha.flushEvents();for(var a=0;a<Xinha.toFree.length;a++){Xinha.free(Xinha.toFree[a].o,Xinha.toFree[a].p);Xinha.toFree[a].o=null}};Xinha.prototype.insertNodeAtSelection=function(a){Xinha.notImplemented("insertNodeAtSelection")};Xinha.prototype.getParentElement=function(a){Xinha.notImplemented("getParentElement")};Xinha.prototype.activeElement=function(a){Xinha.notImplemented("activeElement")};Xinha.prototype.selectionEmpty=function(a){Xinha.notImplemented("selectionEmpty")};Xinha.prototype.saveSelection=function(){Xinha.notImplemented("saveSelection")};Xinha.prototype.restoreSelection=function(a){Xinha.notImplemented("restoreSelection")};Xinha.prototype.selectNodeContents=function(a,b){Xinha.notImplemented("selectNodeContents")};Xinha.prototype.insertHTML=function(a){Xinha.notImplemented("insertHTML")};Xinha.prototype.getSelectedHTML=function(){Xinha.notImplemented("getSelectedHTML")};Xinha.prototype.getSelection=function(){Xinha.notImplemented("getSelection")};Xinha.prototype.createRange=function(a){Xinha.notImplemented("createRange")};Xinha.prototype.isKeyEvent=function(a){Xinha.notImplemented("isKeyEvent")};Xinha.prototype.isShortCut=function(a){if(a.ctrlKey&&!a.altKey){return true}return false};Xinha.prototype.getKey=function(a){Xinha.notImplemented("getKey")};Xinha.getOuterHTML=function(a){Xinha.notImplemented("getOuterHTML")};Xinha.getXMLHTTPRequestObject=function(){try{if(typeof XMLHttpRequest!="undefined"&&typeof XMLHttpRequest.constructor=="function"){return new XMLHttpRequest()}else{if(typeof ActiveXObject=="function"){return new ActiveXObject("Microsoft.XMLHTTP")}}}catch(a){Xinha.notImplemented("getXMLHTTPRequestObject")}};Xinha.prototype._activeElement=function(a){return this.activeElement(a)};Xinha.prototype._selectionEmpty=function(a){return this.selectionEmpty(a)};Xinha.prototype._getSelection=function(){return this.getSelection()};Xinha.prototype._createRange=function(a){return this.createRange(a)};HTMLArea=Xinha;Xinha.init();if(Xinha.ie_version<8){Xinha.addDom0Event(window,"unload",Xinha.collectGarbageForIE)}Xinha.debugMsg=function(a,b){if(typeof console!="undefined"&&typeof console.log=="function"){if(b&&b=="warn"&&typeof console.warn=="function"){console.warn(a)}else{if(b&&b=="info"&&typeof console.info=="function"){console.info(a)}else{console.log(a)}}}else{if(typeof opera!="undefined"&&typeof opera.postError=="function"){opera.postError(a)}}};Xinha.notImplemented=function(a){throw new Error("Method Not Implemented","Part of Xinha has tried to call the "+a+" method which has not been implemented.")};
\ No newline at end of file
diff --git a/mailboxes/xinha/contrib/php-xinha.php b/mailboxes/xinha/contrib/php-xinha.php
new file mode 100644 (file)
index 0000000..392131b
--- /dev/null
@@ -0,0 +1,208 @@
+<?php
+  /** Write the appropriate xinha_config directives to pass data to a PHP (Plugin) backend file.
+   *
+   *  ImageManager Example:
+   *  The following would be placed in step 3 of your configuration (see the NewbieGuide 
+   *  (http://xinha.python-hosting.com/wiki/NewbieGuide)
+   *
+   * <script language="javascript">
+   *  with (xinha_config.ImageManager)
+   *  { 
+   *    <?php 
+   *      xinha_pass_to_php_backend
+   *      (       
+   *        array
+   *        (
+   *         'images_dir' => '/home/your/directory',
+   *         'images_url' => '/directory'
+   *        )
+   *      )
+   *    ?>
+   *  }
+   *  </script>
+   * 
+   */
+      
+  function xinha_pass_to_php_backend($Data, $KeyLocation = 'Xinha:BackendKey', $ReturnPHP = FALSE)
+  {
+   
+    $bk = array();
+    $bk['data']       = serialize($Data);
+    
+    @session_start();
+    if(!isset($_SESSION[$KeyLocation]))
+    {
+      $_SESSION[$KeyLocation] = uniqid('Key_');
+    }
+    
+    $bk['session_name'] = session_name();      
+    $bk['key_location'] = $KeyLocation;      
+    $bk['hash']         = 
+      function_exists('sha1') ? 
+        sha1($_SESSION[$KeyLocation] . $bk['data']) 
+      : md5($_SESSION[$KeyLocation] . $bk['data']);
+      
+      
+    // The data will be passed via a postback to the 
+    // backend, we want to make sure these are going to come
+    // out from the PHP as an array like $bk above, so 
+    // we need to adjust the keys.
+    $backend_data = array();
+    foreach($bk as $k => $v)
+    {
+      $backend_data["backend_data[$k]"] = $v; 
+    }
+    
+    // The session_start() above may have been after data was sent, so cookies
+    // wouldn't have worked.
+    $backend_data[session_name()] = session_id();
+    
+    if($ReturnPHP)
+    {      
+      return array('backend_data' => $backend_data);      
+    }
+    else
+    {      
+      echo 'backend_data = ' . xinha_to_js($backend_data) . "; \n";  
+    }                
+  }  
+   
+  /** Convert PHP data structure to Javascript */
+  
+  function xinha_to_js($var, $tabs = 0)
+  {
+    if(is_numeric($var))
+    {
+      return $var;
+    }
+  
+    if(is_string($var))
+    {
+      return "'" . xinha_js_encode($var) . "'";
+    }
+  
+    if(is_array($var))
+    {
+      $useObject = false;
+      foreach(array_keys($var) as $k) {
+          if(!is_numeric($k)) $useObject = true;
+      }
+      $js = array();
+      foreach($var as $k => $v)
+      {
+        $i = "";
+        if($useObject) {
+          if(preg_match('#^[a-zA-Z]+[a-zA-Z0-9]*$#', $k)) {
+            $i .= "$k: ";
+          } else {
+            $i .= "'$k': ";
+          }
+        }
+        $i .= xinha_to_js($v, $tabs + 1);
+        $js[] = $i;
+      }
+      if($useObject) {
+          $ret = "{\n" . xinha_tabify(implode(",\n", $js), $tabs) . "\n}";
+      } else {
+          $ret = "[\n" . xinha_tabify(implode(",\n", $js), $tabs) . "\n]";
+      }
+      return $ret;
+    }
+  
+    return 'null';
+  }
+    
+  /** Like htmlspecialchars() except for javascript strings. */
+  
+  function xinha_js_encode($string)
+  {
+    static $strings = "\\,\",',%,&,<,>,{,},@,\n,\r";
+  
+    if(!is_array($strings))
+    {
+      $tr = array();
+      foreach(explode(',', $strings) as $chr)
+      {
+        $tr[$chr] = sprintf('\x%02X', ord($chr));
+      }
+      $strings = $tr;
+    }
+  
+    return strtr($string, $strings);
+  }
+        
+   
+  /** Used by plugins to get the config passed via 
+  *   xinha_pass_to_backend()
+  *  returns either the structure given, or NULL
+  *  if none was passed or a security error was encountered.
+  */
+  
+  function xinha_read_passed_data()
+  {
+   if(isset($_REQUEST['backend_data']) && is_array($_REQUEST['backend_data']))
+   {
+     $bk = $_REQUEST['backend_data'];
+     session_name($bk['session_name']);
+     @session_start();
+     if(!isset($_SESSION[$bk['key_location']])) return NULL;
+     
+     if($bk['hash']         === 
+        function_exists('sha1') ? 
+          sha1($_SESSION[$bk['key_location']] . $bk['data']) 
+        : md5($_SESSION[$bk['key_location']] . $bk['data']))
+     {
+       return unserialize(ini_get('magic_quotes_gpc') ? stripslashes($bk['data']) : $bk['data']);
+     }
+   }
+   
+   return NULL;
+  }
+   
+  /** Used by plugins to get a query string that can be sent to the backend 
+  * (or another part of the backend) to send the same data.
+  */
+  
+  function xinha_passed_data_querystring()
+  {
+   $qs = array();
+   if(isset($_REQUEST['backend_data']) && is_array($_REQUEST['backend_data']))
+   {
+     foreach($_REQUEST['backend_data'] as $k => $v)
+     {
+       $v =  ini_get('magic_quotes_gpc') ? stripslashes($v) : $v;
+       $qs[] = "backend_data[" . rawurlencode($k) . "]=" . rawurlencode($v);
+     }       
+   }
+   
+   $qs[] = session_name() . '=' . session_id();
+   return implode('&', $qs);
+  }
+   
+    
+  /** Just space-tab indent some text */
+  function xinha_tabify($text, $tabs)
+  {
+    if($text)
+    {
+      return str_repeat("  ", $tabs) . preg_replace('/\n(.)/', "\n" . str_repeat("  ", $tabs) . "\$1", $text);
+    }
+  }       
+
+  /** Return upload_max_filesize value from php.ini in kilobytes (function adapted from php.net)**/
+  function upload_max_filesize_kb() 
+  {
+    $val = ini_get('upload_max_filesize');
+    $val = trim($val);
+    $last = strtolower($val{strlen($val)-1});
+    switch($last) 
+    {
+      // The 'G' modifier is available since PHP 5.1.0
+      case 'g':
+        $val *= 1024;
+      case 'm':
+        $val *= 1024;
+   }
+   return $val;
+}
+?>
diff --git a/mailboxes/xinha/examples/ExtendedDemo.html b/mailboxes/xinha/examples/ExtendedDemo.html
new file mode 100644 (file)
index 0000000..c4e9dbe
--- /dev/null
@@ -0,0 +1,16 @@
+<html>\r
+<head><title>Xinha Extended Example</title></head>\r
+  <!--------------------------------------:noTabs=true:tabSize=2:indentSize=2:--\r
+    --  Xinha example frameset.\r
+    --\r
+    --  $HeadURL: http://svn.xinha.org/trunk/examples/ExtendedDemo.html $\r
+    --  $LastChangedDate: 2008-10-12 19:42:42 +0200 (So, 12. Okt 2008) $\r
+    --  $LastChangedRevision: 1084 $\r
+    --  $LastChangedBy: ray $\r
+    --------------------------------------------------------------------------->\r
+\r
+  <frameset cols="240,*">\r
+    <frame src="files/ext_example-menu.php" name="menu" id="menu">\r
+    <frame src="about:blank" name="body" id="body">\r
+  </frameset>\r
+</html>\r
diff --git a/mailboxes/xinha/examples/Newbie.html b/mailboxes/xinha/examples/Newbie.html
new file mode 100644 (file)
index 0000000..e6dc461
--- /dev/null
@@ -0,0 +1,22 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Xinha Newbie Guide</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+  
+  <script type="text/javascript" src="../XinhaLoader.js?lang=en&skin=silva"></script>
+  <script type="text/javascript">
+    _editor_icons = "Tango" // You can pass arguments via the script URL or embed them here.
+  </script>
+  <script type="text/javascript" src="XinhaConfig.js"></script>
+</head>
+<body>
+
+<form action="">
+<div>
+<textarea id="myTextArea" name="myTextArea" rows="25" cols="50" style="width: 100%"></textarea>
+</div>
+</form>
+</body>
+</html>
diff --git a/mailboxes/xinha/examples/XinhaConfig.js b/mailboxes/xinha/examples/XinhaConfig.js
new file mode 100644 (file)
index 0000000..ca651e3
--- /dev/null
@@ -0,0 +1,3 @@
+/* This compressed file is part of Xinha. For uncompressed sources, forum, and bug reports, go to xinha.org */
+/* This file is part of version 0.96beta2 released Fri, 20 Mar 2009 11:01:14 +0100 */
+xinha_editors=null;xinha_init=null;xinha_config=null;xinha_plugins=null;xinha_init=xinha_init?xinha_init:function(){xinha_editors=xinha_editors?xinha_editors:["myTextArea","anotherOne"];xinha_plugins=xinha_plugins?xinha_plugins:["CharacterMap","ContextMenu","SmartReplace","Stylist","PersistentStorage","PSLocal","Linker","SuperClean","TableOperations"];if(!Xinha.loadPlugins(xinha_plugins,xinha_init)){return}xinha_config=xinha_config?xinha_config():new Xinha.Config();xinha_config.pageStyleSheets=[_editor_url+"examples/files/full_example.css"];xinha_config.stylistLoadStylesheet(_editor_url+"examples/files/stylist.css");xinha_editors=Xinha.makeEditors(xinha_editors,xinha_config,xinha_plugins);Xinha.startEditors(xinha_editors)};Xinha.addOnloadHandler(xinha_init);
\ No newline at end of file
diff --git a/mailboxes/xinha/examples/files/Extended.html b/mailboxes/xinha/examples/files/Extended.html
new file mode 100644 (file)
index 0000000..a838c29
--- /dev/null
@@ -0,0 +1,317 @@
+<html>\r
+\r
+<head>\r
+  <title>Settings</title>\r
+  <link rel="stylesheet" type="text/css" href="../../popups/popup.css" />\r
+  <script type="text/javascript">\r
+\r
+function getAbsolutePos(el) {\r
+  var r = { x: el.offsetLeft, y: el.offsetTop };\r
+  if (el.offsetParent) {\r
+    var tmp = getAbsolutePos(el.offsetParent);\r
+    r.x += tmp.x;\r
+    r.y += tmp.y;\r
+  }\r
+  return r;\r
+};\r
+\r
+function getSelectedValue(el) {\r
+  if(!el)\r
+    return "";\r
+  return el[el.selectedIndex].value;\r
+}\r
+\r
+function setSelectedValue(el, val) {\r
+  if(!el)\r
+    return "";\r
+  var ops = el.getElementsByTagName("option");\r
+  for (var i = ops.length; --i >= 0;) {\r
+    var op = ops[i];\r
+    op.selected = (op.value == val);\r
+  }\r
+  el.value = val;\r
+}\r
+\r
+function getCheckedValue(el) {\r
+  if(!el)\r
+    return "";\r
+  var radioLength = el.length;\r
+  if(radioLength == undefined)\r
+    if(el.checked)\r
+      return el.value;\r
+    else\r
+      return "false";\r
+  for(var i = 0; i < radioLength; i++) {\r
+    if(el[i].checked) {\r
+      return el[i].value;\r
+    }\r
+  }\r
+  return "";\r
+}\r
+\r
+function setCheckedValue(el, val) {\r
+  if(!el)\r
+    return;\r
+  var radioLength = el.length;\r
+  if(radioLength == undefined) {\r
+    el.checked = (el.value == val.toString());\r
+    return;\r
+  }\r
+  for(var i = 0; i < radioLength; i++) {\r
+    el[i].checked = false;\r
+    if(el[i].value == val.toString()) {\r
+      el[i].checked = true;\r
+    }\r
+  }\r
+}\r
+\r
+function __dlg_onclose() {\r
+  opener.Dialog._return(null);\r
+};\r
+\r
+// closes the dialog and passes the return info upper.\r
+function __dlg_close(val) {\r
+  opener.Dialog._return(val);\r
+  window.close();\r
+};\r
+\r
+function __dlg_close_on_esc(ev) {\r
+  ev || (ev = window.event);\r
+  if (ev.keyCode == 27) {\r
+    window.close();\r
+    return false;\r
+  }\r
+  return true;\r
+};\r
+\r
+function __dlg_init(bottom) {\r
+  var body = document.body;\r
+  var body_height = 0;\r
+  if (typeof bottom == "undefined") {\r
+    var div = document.createElement("div");\r
+    body.appendChild(div);\r
+    var pos = getAbsolutePos(div);\r
+    body_height = pos.y;\r
+  } else {\r
+    var pos = getAbsolutePos(bottom);\r
+    body_height = pos.y + bottom.offsetHeight;\r
+  }\r
+  if (!window.dialogArguments && opener.Dialog._arguments)\r
+  {\r
+    window.dialogArguments = opener.Dialog._arguments;\r
+  }\r
+  if (!document.all) {\r
+    window.sizeToContent();\r
+    window.sizeToContent();  // for reasons beyond understanding,\r
+          // only if we call it twice we get the\r
+          // correct size.\r
+    window.addEventListener("unload", __dlg_onclose, true);\r
+    window.innerWidth = body.offsetWidth + 5;\r
+    window.innerHeight = body_height + 2;\r
+    // center on parent\r
+    var x = opener.screenX + (opener.outerWidth - window.outerWidth) / 2;\r
+    var y = opener.screenY + (opener.outerHeight - window.outerHeight) / 2;\r
+    window.moveTo(x, y);\r
+  } else {\r
+    // window.dialogHeight = body.offsetHeight + 50 + "px";\r
+    // window.dialogWidth = body.offsetWidth + "px";\r
+    window.resizeTo(body.offsetWidth, body_height);\r
+    var ch = body.clientHeight;\r
+    var cw = body.clientWidth;\r
+    window.resizeBy(body.offsetWidth - cw, body_height - ch);\r
+    var W = body.offsetWidth;\r
+    var H = 2 * body_height - ch;\r
+    var x = (screen.availWidth - W) / 2;\r
+    var y = (screen.availHeight - H) / 2;\r
+    window.moveTo(x, y);\r
+  }\r
+  document.body.onkeypress = __dlg_close_on_esc;\r
+};\r
+\r
+function placeFocus() {\r
+var bFound = false;\r
+  // for each form\r
+  for (f=0; f < document.forms.length; f++) {\r
+    // for each element in each form\r
+    for(i=0; i < document.forms[f].length; i++) {\r
+      // if it's not a hidden element\r
+      if (document.forms[f][i].type != "hidden") {\r
+        // and it's not disabled\r
+        if (document.forms[f][i].disabled != true) {\r
+            // set the focus to it\r
+            document.forms[f][i].focus();\r
+            var bFound = true;\r
+        }\r
+      }\r
+      // if found in this element, stop looking\r
+      if (bFound == true)\r
+        break;\r
+    }\r
+    // if found in this form, stop looking\r
+    if (bFound == true)\r
+      break;\r
+  }\r
+}\r
+\r
+function Init() {\r
+  __dlg_init();\r
+  var param = window.dialogArguments;\r
+  if(param) {\r
+    var el;\r
+    for (var field in param) {\r
+      //alert(field + '="' + param[field] + '"');\r
+      el = document.getElementById(field);\r
+      if (el.tagName.toLowerCase()=="input"){\r
+        if ((el.type.toLowerCase()=="radio") || (el.type.toLowerCase()=="checkbox")){\r
+          setCheckedValue(el, param[field]);\r
+        } else {\r
+          el.value = param[field];\r
+        }\r
+      } else if (el.tagName.toLowerCase()=="select"){\r
+        setSelectedValue(el, param[field]);\r
+      } else if (el.tagName.toLowerCase()=="textarea"){\r
+        el.value = param[field];\r
+      }\r
+    }\r
+  }\r
+  placeFocus();\r
+};\r
+\r
+// pass data back to the calling window\r
+function onOK() {\r
+  var param = new Object();\r
+  var el = document.getElementsByTagName('input');\r
+  for (var i=0; i<el.length;i++){\r
+    if ((el[i].type.toLowerCase()=="radio") || (el[i].type.toLowerCase()=="checkbox")){\r
+      if (getCheckedValue(el[i])!=''){\r
+        param[el[i].id] = getCheckedValue(el[i]);\r
+      }\r
+    } else {\r
+      param[el[i].id] = el[i].value;\r
+    }\r
+  }\r
+  el = document.getElementsByTagName('select');\r
+  for (var i=0; i<el.length;i++){\r
+    param[el[i].id] = getSelectedValue(el[i]);\r
+  }\r
+  el = document.getElementsByTagName('textarea');\r
+  for (var i=0; i<el.length;i++){\r
+    param[el[i].id] = el[i].value;\r
+  }\r
+  __dlg_close(param);\r
+  return false;\r
+};\r
+\r
+function onCancel() {\r
+  __dlg_close(null);\r
+  return false;\r
+};\r
+\r
+</script>\r
+\r
+<style type="text/css">\r
+  label { width: 16em; float: left; padding: 2px 5px; text-align: right; }\r
+  br { clear: both; }\r
+</style>\r
+\r
+</head>\r
+\r
+<body class="dialog" onload="Init(); window.resizeTo(420, 820);">\r
+<div class="title">Settings</div>\r
+  <form action="" method="get">\r
+  <fieldset>\r
+    <legend>Xinha options</legend>\r
+    <label for="width">Editor width:</label>\r
+    <input type="text" name="width" id="width" title="Allowed values are 'auto', 'toolbar' or a numeric value followed by 'px'." /><br />\r
+    <label for="height">Editor height:</label>\r
+    <input type="text" name="height" id="height" title="Allowed values are 'auto' or a numeric value followed by 'px'." /><br />\r
+    <label for="sizeIncludesBars">Size includes bars</label>\r
+    <input type="checkbox" name="sizeIncludesBars" id="sizeIncludesBars" value="true" title="Specifies whether the toolbar should be included in the size, or are extra to it." /><br />\r
+    <label for="sizeIncludesPanels">Size includes panels</label>\r
+    <input type="checkbox" name="sizeIncludesPanels" id="sizeIncludesPanels" value="true" title="Specifies whether the panels should be included in the size, or are extra to it." /><br />\r
+    <label for="statusBar">Status Bar</label>\r
+    <input type="checkbox" name="statusBar" id="statusBar" value="true" title="Enable creation of the status bar?" /><br />\r
+    <label for="htmlareaPaste">Htmlarea Paste</label>\r
+    <input type="checkbox" name="htmlareaPaste" id="htmlareaPaste" value="true" title="Intercept ^V and use the Xinha paste command" /><br />\r
+    <label for="mozParaHandler">Mozilla Parameter Handler:</label>\r
+    <select name="mozParaHandler" id="mozParaHandler" title="Gecko only: Let the built-in routine for handling the return key decide if to enter br or p tags or use a custom implementation.">\r
+    <option value="built-in">built-in</option>\r
+    <option value="dirty">dirty</option>\r
+    <option value="best">best</option>\r
+    </select><br />\r
+    <label for="getHtmlMethod">GetHtml Method:</label>\r
+    <select name="getHtmlMethod" id="getHtmlMethod" title="This determines the method how the HTML output is generated.">\r
+    <option value="DOMwalk">DOMwalk</option>\r
+    <option value="TransformInnerHTML">TransformInnerHTML</option>\r
+    </select><br />\r
+    <label for="undoSteps">Undo steps:</label>\r
+    <input type="text" name="undoSteps" id="undoSteps" title="Maximum size of the undo queue."  /><br />\r
+    <label for="undoTimeout">Undo Timeout:</label>\r
+    <input type="text" name="undoTimeout" id="undoTimeout" title="The time interval at which undo samples are taken, default: 500 (1/2 sec)."  /><br />\r
+    <label for="changeJustifyWithDirection">change justify with direction</label>\r
+    <input type="checkbox" name="changeJustifyWithDirection" id="changeJustifyWithDirection" value="true" title="Set this to true if you want to explicitly right-justify when setting the text direction to right-to-left" /><br />\r
+    <label for="fullPage">full Page</label>\r
+    <input type="checkbox" name="fullPage" id="fullPage" value="true" title="If true then Xinha will retrieve the full HTML, starting with the HTML-tag." /><br />\r
+    <label for="pageStyle">Page style:</label>\r
+    <textarea name="pageStyle" id="pageStyle" title="Raw style definitions included in the edited document"></textarea>\r
+<!--    pageStyleSheets -->\r
+    <label for="baseHref">Base href:</label>\r
+    <input type="text" name="baseHref" id="baseHref" title="specify a base href for relative links" /><br />\r
+    <label for="expandRelativeUrl">expand relative Url</label>\r
+    <input type="checkbox" name="expandRelativeUrl" id="expandRelativeUrl" value="true" title="If true, relative URLs (../) will be made absolute"/><br />\r
+    <label for="stripBaseHref">Strip base href</label>\r
+    <input type="checkbox" name="stripBaseHref" id="stripBaseHref" value="true" title="We can strip the server part out of URL to make/leave them semi-absolute" /><br />\r
+    <label for="stripSelfNamedAnchors">Strip self named anchors</label>\r
+    <input type="checkbox" name="stripSelfNamedAnchors" id="stripSelfNamedAnchors" value="true" title="We can strip the url of the editor page from named links" /><br />\r
+    <label for="only7BitPrintablesInURLs">only 7bit printables in URLs</label>\r
+    <input type="checkbox" name="only7BitPrintablesInURLs" id="only7BitPrintablesInURLs" value="true" title="In URLs all characters above ASCII value 127 have to be encoded using % codes" /><br />\r
+    <label for="sevenBitClean">7bit Clean</label>\r
+    <input type="checkbox" name="sevenBitClean" id="sevenBitClean" value="true" title="If you are putting the HTML written in Xinha into an email you might want it to be 7-bit characters only." /><br />\r
+    <label for="killWordOnPaste">kill Word on paste</label>\r
+    <input type="checkbox" name="killWordOnPaste" id="killWordOnPaste" value="true" title="Set to true if you want Word code to be cleaned upon Paste." /><br />\r
+    <label for="makeLinkShowsTarget">make Link Shows Target</label>\r
+    <input type="checkbox" name="makeLinkShowsTarget" id="makeLinkShowsTarget" value="true" title="Enable the 'Target' field in the Make Link dialog." /><br />\r
+    <label for="flowToolbars">flow toolbars</label>\r
+    <input type="checkbox" name="flowToolbars" id="flowToolbars" value="true" /><br />\r
+    <label for="stripScripts">strip Scripts</label>\r
+    <input type="checkbox" name="stripScripts" id="stripScripts" value="true" title="Set to false if you want to allow JavaScript in the content" /><br />\r
+    <label for="showLoading">show loading</label>\r
+    <input type="checkbox" name="showLoading" id="showLoading" value="true" /><br />\r
+  </fieldset>\r
+\r
+  <fieldset id="CharacterMapOptions" class="options">\r
+    <legend>CharacterMap options</legend>\r
+    <label for="CharacterMapMode">Mode :</label>\r
+    <select id="CharacterMapMode" name="CharacterMapMode">\r
+    <option value="popup">popup</option>\r
+    <option value="panel">panel</option>\r
+    </select>\r
+  </fieldset>\r
+\r
+  <fieldset id="ListTypeOptions" class="options">\r
+    <legend>ListType options</legend>\r
+    <label class="ListTypeMode">Mode :</label>\r
+    <select id="ListTypeMode" name="ListTypeMode">\r
+    <option value="toolbar">toolbar</option>\r
+    <option value="panel">panel</option>\r
+    </select>\r
+  </fieldset>\r
+\r
+  <fieldset id="CharCounterOptions" class="options">\r
+    <legend>CharCounter options</legend>\r
+    <label for="showChar">show Char :</label>\r
+    <input type="checkbox" name="showChar" id="showChar" value="true" /><br />\r
+    <label for="showWord">show Word :</label>\r
+    <input type="checkbox" name="showWord" id="showWord" value="true" /><br />\r
+    <label for="showHtml">show Html :</label>\r
+    <input type="checkbox" name="showHtml" id="showHtml" value="true" /><br />\r
+  </fieldset>\r
+  <br />\r
+\r
+  <div id="buttons">\r
+    <button type="submit" name="ok" onclick="return onOK();">OK</button>\r
+    <button type="button" name="cancel" onclick="return onCancel();">Cancel</button>\r
+  </div>\r
+</form>\r
+</body>\r
+</html>\r
diff --git a/mailboxes/xinha/examples/files/custom.css b/mailboxes/xinha/examples/files/custom.css
new file mode 100644 (file)
index 0000000..48cbfe7
--- /dev/null
@@ -0,0 +1,40 @@
+  /*--------------------------------------:noTabs=true:tabSize=2:indentSize=2:--
+    --  CSS plugin example CSS file.  This file is used by full_example.js
+    --  when the CSS plugin is included in an auto-generated example.
+    --  @TODO Make this CSS more useful.
+    --
+    --  $HeadURL:http://svn.xinha.webfactional.com/trunk/examples/files/custom.css $
+    --  $LastChangedDate:2008-02-04 01:43:21 +0100 (Mo, 04 Feb 2008) $
+    --  $LastChangedRevision:962 $
+    --  $LastChangedBy:ray $
+    --------------------------------------------------------------------------*/
+
+body { background-color: #234; color: #dd8; font-family: tahoma; font-size: 12px; }
+
+a:link, a:visited { color: #8cf; }
+a:hover { color: #ff8; }
+
+h1 { background-color: #456; color: #ff8; padding: 2px 5px; border: 1px solid; border-color: #678 #012 #012 #678; }
+
+/* syntax highlighting (used by the first combo defined for the CSS plugin) */
+
+pre { margin: 0px 1em; padding: 5px 1em; background-color: #000; border: 1px dotted #02d; border-left: 2px solid #04f; }
+.code { color: #f5deb3; }
+.string { color: #00ffff; }
+.comment { color: #8fbc8f; }
+.variable-name { color: #fa8072; }
+.type { color: #90ee90; font-weight: bold; }
+.reference { color: #ee82ee; }
+.preprocessor { color: #faf; }
+.keyword { color: #ffffff; font-weight: bold; }
+.function-name { color: #ace; }
+.html-tag { font-weight: bold; }
+.html-helper-italic { font-style: italic; }
+.warning { color: #ffa500; font-weight: bold; }
+.html-helper-bold { font-weight: bold; }
+
+/* info combo */
+
+.quote { font-style: italic; color: #ee9; }
+.highlight { background-color: yellow; color: #000; }
+.deprecated { text-decoration: line-through; color: #aaa; }
diff --git a/mailboxes/xinha/examples/files/dynamic.css b/mailboxes/xinha/examples/files/dynamic.css
new file mode 100644 (file)
index 0000000..497de62
--- /dev/null
@@ -0,0 +1,56 @@
+  /*--------------------------------------:noTabs=true:tabSize=2:indentSize=2:--
+    --  DynamicCSS plugin example CSS file.  Used by full_example.js
+    --  when the DynamicCSS plugin is included in an auto-generated example.
+    --  @TODO Make this CSS more useful.
+    --
+    --  $HeadURL:http://svn.xinha.webfactional.com/trunk/examples/files/dynamic.css $
+    --  $LastChangedDate:2008-02-04 01:43:21 +0100 (Mo, 04 Feb 2008) $
+    --  $LastChangedRevision:962 $
+    --  $LastChangedBy:ray $
+    --------------------------------------------------------------------------*/
+
+p {
+  FONT-FAMILY: Arial, Helvetica;
+  FONT-SIZE: 9pt;
+  FONT-WEIGHT: normal;
+  COLOR: #000000;
+}
+
+p.p1 {
+  FONT-FAMILY: Arial, Helvetica;
+  FONT-SIZE: 11pt;
+  FONT-WEIGHT: normal;
+  COLOR: #000000;
+}
+
+p.p2 {
+  FONT-FAMILY: Arial, Helvetica;
+  FONT-SIZE: 13pt;
+  FONT-WEIGHT: normal;
+  COLOR: #000000;
+}
+
+div {
+  FONT-FAMILY: Arial, Helvetica;
+  FONT-SIZE: 9pt;
+  FONT-WEIGHT: bold;
+  COLOR: #000000;
+}
+
+div.div1 {
+  FONT-FAMILY: Arial, Helvetica;
+  FONT-SIZE: 11pt;
+  FONT-WEIGHT: bold;
+  COLOR: #000000;
+}
+
+div.div2 {
+  FONT-FAMILY: Arial, Helvetica;
+  FONT-SIZE: 13pt;
+  FONT-WEIGHT: bold;
+  COLOR: #000000;
+}
+
+.quote { font-style: italic; color: #ee9; }
+.highlight { background-color: yellow; color: #000; }
+.deprecated { text-decoration: line-through; color: #aaa; }
diff --git a/mailboxes/xinha/examples/files/ext_example-body.html b/mailboxes/xinha/examples/files/ext_example-body.html
new file mode 100644 (file)
index 0000000..2bf4261
--- /dev/null
@@ -0,0 +1,206 @@
+<!DOCTYPE BHTML PUBLIC "-//BC//DTD BHTML 3.2 Final//EN">\r
+<html>\r
+<head>\r
+\r
+  <!-- ---------------------------------------------------------------------\r
+    --  $HeadURL: http://svn.xinha.org/trunk/examples/files/ext_example-body.html $\r
+    --  $LastChangedDate: 2008-10-12 19:42:42 +0200 (So, 12. Okt 2008) $\r
+    --  $LastChangedRevision: 1084 $\r
+    --  $LastChangedBy: ray $\r
+    ------------------------------------------------------------------------ -->\r
+\r
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />\r
+  <title>Example of Xinha</title>\r
+  <link rel="stylesheet" type="text/css" href="full_example.css" />\r
+\r
+  <script type="text/javascript">\r
+    function showError( sMsg, sUrl, sLine){\r
+      document.getElementById('errors').value += 'Error: ' + sMsg + '\n' +\r
+                                                 'Source File: ' + sUrl + '\n' +\r
+                                                 'Line: ' + sLine + '\n';\r
+      return false;\r
+    }\r
+    // You must set _editor_url to the URL (including trailing slash) where\r
+    // where xinha is installed, it's highly recommended to use an absolute URL\r
+    //  eg: _editor_url = "/path/to/xinha/";\r
+    // You may try a relative URL if you wish]\r
+    //  eg: _editor_url = "../";\r
+    // in this example we do a little regular expression to find the absolute path.\r
+    _editor_url  = document.location.href.replace(/examples\/files\/ext_example-body\.html.*/, '')\r
+    //moved _editor_lang & _editor_skin to init function because of error thrown when frame document not ready\r
+  </script>\r
+\r
+  <!-- Load up the actual editor core -->\r
+  <script type="text/javascript" src="../../XinhaCore.js"></script>\r
+\r
+  <script type="text/javascript">\r
+    xinha_editors = null;\r
+    xinha_init    = null;\r
+    xinha_config  = null;\r
+    xinha_plugins = null;\r
+\r
+    xinha_init = xinha_init ? xinha_init : function() {\r
+      window.onerror = showError;\r
+      document.onerror = showError;\r
+\r
+      var f = top.frames["menu"].document.forms["fsettings"];\r
+      _editor_lang = f.lang[f.lang.selectedIndex].value; // the language we need to use in the editor.\r
+      _editor_skin = f.skin[f.skin.selectedIndex].value; // the skin we use in the editor\r
+// What are the plugins you will be using in the editors on this page.\r
+// List all the plugins you will need, even if not all the editors will use all the plugins.\r
+      xinha_plugins = [ ];\r
+      for(var x = 0; x < f.plugins.length; x++) {\r
+        if(f.plugins[x].checked) xinha_plugins.push(f.plugins[x].value);\r
+      }\r
+\r
+      // THIS BIT OF JAVASCRIPT LOADS THE PLUGINS, NO TOUCHING  :)\r
+      if(!Xinha.loadPlugins(xinha_plugins, xinha_init)) return;\r
+\r
+// What are the names of the textareas you will be turning into editors?\r
+      var num = 1;\r
+      num = parseInt(f.num.value);\r
+      if(isNaN(num)) {\r
+        num = 1;\r
+        f.num.value = 1;\r
+      }\r
+      var dest = document.getElementById("editors_here");\r
+      var lipsum = window.parent.menu.document.getElementById('myTextarea0').value;\r
+\r
+      xinha_editors = [ ]\r
+      for(var x = 0; x < num; x++) {\r
+        var ta = 'myTextarea' + x;\r
+        xinha_editors.push(ta);\r
+\r
+        var div = document.createElement('div');\r
+        div.className = 'area_holder';\r
+\r
+        var txta = document.createElement('textarea');\r
+        txta.id   = ta;\r
+        txta.name = ta;\r
+        txta.value = lipsum;\r
+        txta.style.width="100%";\r
+        txta.style.height="420px";\r
+\r
+        div.appendChild(txta);\r
+        dest.appendChild(div);\r
+      }\r
+\r
+// Create a default configuration to be used by all the editors.\r
+      settings = top.frames["menu"].settings;\r
+      xinha_config = new Xinha.Config();\r
+      xinha_config.width = settings.width;\r
+      xinha_config.height = settings.height;\r
+      xinha_config.sizeIncludesBars = settings.sizeIncludesBars;\r
+      xinha_config.sizeIncludesPanels = settings.sizeIncludesPanels;\r
+      xinha_config.statusBar = settings.statusBar;\r
+      xinha_config.htmlareaPaste = settings.htmlareaPaste;\r
+      xinha_config.mozParaHandler = settings.mozParaHandler;\r
+      xinha_config.getHtmlMethod = settings.getHtmlMethod;\r
+      xinha_config.undoSteps = settings.undoSteps;\r
+      xinha_config.undoTimeout = settings.undoTimeout;\r
+      xinha_config.changeJustifyWithDirection = settings.changeJustifyWithDirection;\r
+      xinha_config.fullPage = settings.fullPage;\r
+      xinha_config.pageStyle = settings.pageStyle;\r
+      xinha_config.baseHref = settings.baseHref;\r
+      xinha_config.expandRelativeUrl = settings.expandRelativeUrl;\r
+      xinha_config.stripBaseHref = settings.stripBaseHref;\r
+      xinha_config.stripSelfNamedAnchors = settings.stripSelfNamedAnchors;\r
+      xinha_config.only7BitPrintablesInURLs = settings.only7BitPrintablesInURLs;\r
+      xinha_config.sevenBitClean = settings.sevenBitClean;\r
+      xinha_config.killWordOnPaste = settings.killWordOnPaste;\r
+      xinha_config.makeLinkShowsTarget = settings.makeLinkShowsTarget;\r
+      xinha_config.flowToolbars = settings.flowToolbars;\r
+      xinha_config.stripScripts = settings.stripScripts;\r
+      xinha_config.flowToolbars = settings.flowToolbars;\r
+      xinha_config.showLoading = settings.showLoading;\r
+      xinha_config.pageStyleSheets = ["full_example.css"];\r
+\r
+// Create a default configuration for the plugins\r
+      if (typeof CharCounter != 'undefined') {\r
+        xinha_config.CharCounter.showChar = settings.showChar;\r
+        xinha_config.CharCounter.showWord = settings.showWord;\r
+        xinha_config.CharCounter.showHtml = settings.showHtml;\r
+      }\r
+\r
+      if(typeof CharacterMap != 'undefined') xinha_config.CharacterMap.mode = settings.CharacterMapMode;\r
+      if(typeof ListType != 'undefined') xinha_config.ListType.mode = settings.ListTypeMode;\r
+      if(typeof CSS != 'undefined') xinha_config.pageStyle = xinha_config.pageStyle + "\n" + "@import url(custom.css);";\r
+      if(typeof DynamicCSS != 'undefined') xinha_config.pageStyle = "@import url(dynamic.css);";\r
+      if(typeof Filter != 'undefined') xinha_config.Filters = ["Word", "Paragraph"];\r
+\r
+      if(typeof Stylist != 'undefined') {\r
+        // We can load an external stylesheet like this - NOTE : YOU MUST GIVE AN ABSOLUTE URL\r
+        //  otherwise it won't work!\r
+        xinha_config.stylistLoadStylesheet(document.location.href.replace(/[^\/]*\.html/, 'stylist.css'));\r
+\r
+        // Or we can load styles directly\r
+        xinha_config.stylistLoadStyles('p.red_text { color:red }');\r
+\r
+        // If you want to provide "friendly" names you can do so like\r
+        // (you can do this for stylistLoadStylesheet as well)\r
+        xinha_config.stylistLoadStyles('p.pink_text { color:pink }', {'p.pink_text' : 'Pretty Pink'});\r
+      }\r
+\r
+      if(typeof InsertWords != 'undefined') {\r
+        // Register the keyword/replacement list\r
+        var keywrds1 = new Object();\r
+        var keywrds2 = new Object();\r
+\r
+        keywrds1['-- Dropdown Label --'] = '';\r
+        keywrds1['onekey'] = 'onevalue';\r
+        keywrds1['twokey'] = 'twovalue';\r
+        keywrds1['threekey'] = 'threevalue';\r
+\r
+        keywrds2['-- Insert Keyword --'] = '';\r
+        keywrds2['Username'] = '%user%';\r
+        keywrds2['Last login date'] = '%last_login%';\r
+        xinha_config.InsertWords = {\r
+          combos : [ { options: keywrds1, context: "body" },\r
+                     { options: keywrds2, context: "li" } ]\r
+        }\r
+      }\r
+\r
+// First create editors for the textareas.\r
+// You can do this in two ways, either\r
+//   xinha_editors   = Xinha.makeEditors(xinha_editors, xinha_config, xinha_plugins);\r
+// if you want all the editor objects to use the same set of plugins, OR;\r
+//   xinha_editors = Xinha.makeEditors(xinha_editors, xinha_config);\r
+//   xinha_editors['myTextarea0'].registerPlugins(['Stylist']);\r
+//   xinha_editors['myTextarea1'].registerPlugins(['CSS','SuperClean']);\r
+// if you want to use a different set of plugins for one or more of the editors.\r
+      xinha_editors = Xinha.makeEditors(xinha_editors, xinha_config, xinha_plugins);\r
+\r
+// If you want to change the configuration variables of any of the editors,\r
+// this is the place to do that, for example you might want to\r
+// change the width and height of one of the editors, like this...\r
+//   xinha_editors['myTextarea0'].config.width  = '640px';\r
+//   xinha_editors['myTextarea0'].config.height = '480px';\r
+\r
+// Finally we "start" the editors, this turns the textareas into Xinha editors.\r
+      Xinha.startEditors(xinha_editors);\r
+    }\r
+\r
+// javascript submit handler\r
+// this shows how to create a javascript submit button that works with the htmleditor.\r
+    submitHandler = function(formname) {\r
+      var form = document.getElementById(formname);\r
+      // in order for the submit to work both of these methods have to be called.\r
+      form.onsubmit();\r
+      window.parent.menu.document.getElementById('myTextarea0').value = document.getElementById('myTextarea0').value;\r
+      form.submit();\r
+      return true;\r
+    }\r
+\r
+    window.onload = xinha_init;\r
+//    window.onunload = Xinha.collectGarbageForIE;\r
+  </script>\r
+</head>\r
+\r
+<body>\r
+  <form id="to_submit" name="to_submit" method="post" action="ext_example-dest.php">\r
+  <div id="editors_here"></div>\r
+  <button type="button" onclick="submitHandler('to_submit');">Submit</button>\r
+  <textarea id="errors" name="errors" style="width:100%; height:100px; background:silver;"></textarea><!-- style="display:none;" -->\r
+  </form>\r
+</body>\r
+</html>\r
diff --git a/mailboxes/xinha/examples/files/ext_example-dest.php b/mailboxes/xinha/examples/files/ext_example-dest.php
new file mode 100644 (file)
index 0000000..cbc1eed
--- /dev/null
@@ -0,0 +1,23 @@
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+  <title>Example of Xinha</title>
+  <link rel="stylesheet" href="full_example.css" />
+</head>
+<body>
+<?php
+if (get_magic_quotes_gpc()) {
+  $_REQUEST = array_map('stripslashes',$_REQUEST);
+}
+// or in php.ini
+//; Magic quotes for incoming GET/POST/Cookie data.
+//magic_quotes_gpc = Off
+  foreach($_REQUEST as $key=>$value){
+    if(substr($key,0,10) == 'myTextarea') {
+      echo '<h3 style="border-bottom:1px solid black;">'.$key.'(source):</h3><xmp style="border:1px solid black; width: 100%; height: 200px; overflow: auto;">'.$value.'</xmp><br/>';
+      echo '<h3 style="border-bottom:1px solid black;">'.$key.'(preview):</h3>'.$value;
+    }
+  }
+?>
+</body>
+</html>
diff --git a/mailboxes/xinha/examples/files/ext_example-menu.php b/mailboxes/xinha/examples/files/ext_example-menu.php
new file mode 100644 (file)
index 0000000..5270d7f
--- /dev/null
@@ -0,0 +1,357 @@
+<?php
+  $LocalPluginPath = dirname(dirname(dirname(__FILE__))).DIRECTORY_SEPARATOR.'plugins';
+  $LocalSkinPath = dirname(dirname(dirname(__File__))).DIRECTORY_SEPARATOR.'skins';
+?>
+<html>
+<head>
+
+  <!--------------------------------------:noTabs=true:tabSize=2:indentSize=2:--
+    --  Xinha example menu.  This file is used by full_example.html within a
+    --  frame to provide a menu for generating example editors using
+    --  full_example-body.html, and full_example.js.
+    --
+    --  $HeadURL: http://svn.xinha.org/trunk/examples/files/ext_example-menu.php $
+    --  $LastChangedDate: 2008-10-12 19:42:42 +0200 (So, 12. Okt 2008) $
+    --  $LastChangedRevision: 1084 $
+    --  $LastChangedBy: ray $
+    --------------------------------------------------------------------------->
+
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+  <title>Example of Xinha</title>
+  <link rel="stylesheet" href="full_example.css" />
+  <style type="text/css">
+    h1 {font: bold 22px "Staccato222 BT", cursive;}
+    form, p {margin: 0px; padding: 0px;}
+    label { display:block;}
+  </style>
+  <script language="JavaScript" type="text/javascript">
+  var settings = null;
+  settings = {
+    width: "auto",
+    height: "auto",
+    sizeIncludesBars: true,
+    sizeIncludesPanels: true,
+    statusBar: true,
+    htmlareaPaste: false,
+    mozParaHandler: "best",
+    getHtmlMethod: "DOMwalk",
+    undoSteps: 20,
+    undoTimeout: 500,
+    changeJustifyWithDirection: false,
+    fullPage: false,
+    pageStyle: "",
+    baseHref: null,
+    expandRelativeUrl: true,
+    stripBaseHref: true,
+    stripSelfNamedAnchors: true,
+    only7BitPrintablesInURLs: true,
+    sevenBitClean: false,
+    killWordOnPaste: true,
+    makeLinkShowsTarget: true,
+    flowToolbars: true,
+    stripScripts: false,
+    CharacterMapMode: "popup",
+    ListTypeMode: "toolbar",
+    showLoading: false,
+    showChar: true,
+    showWord: true,
+    showHtml: true
+  };
+
+
+    function getCookieVal (offset) {
+      var endstr = document.cookie.indexOf (";", offset);
+      if (endstr == -1)
+        endstr = document.cookie.length;
+      return unescape(document.cookie.substring(offset, endstr));
+    }
+
+    function getCookie (name) {
+      var arg = name + "=";
+      var alen = arg.length;
+      var clen = document.cookie.length;
+      var i = 0;
+      while (i < clen) {
+        var j = i + alen;
+        if (document.cookie.substring(i, j) == arg)
+          return getCookieVal (j);
+        i = document.cookie.indexOf(" ", i) + 1;
+        if (i == 0) break;
+      }
+      return null;
+    }
+
+    function setCookie (name, value) {
+      var argv = setCookie.arguments;
+      var argc = setCookie.arguments.length;
+      var expires = (argc > 2) ? argv[2] : null;
+      var path = (argc > 3) ? argv[3] : null;
+      var domain = (argc > 4) ? argv[4] : null;
+      var secure = (argc > 5) ? argv[5] : false;
+      document.cookie = name + "=" + escape (value) +
+        ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
+        ((path == null) ? "" : ("; path=" + path)) +
+        ((domain == null) ? "" : ("; domain=" + domain)) +
+        ((secure == true) ? "; secure" : "");
+    }
+
+  function _onResize() {
+    var sHeight;
+    if (window.innerHeight) sHeight = window.innerHeight;
+    else if (document.body && document.body.offsetHeight) sHeight = document.body.offsetHeight;
+    else return;
+    if (sHeight>270) {
+      sHeight = sHeight - 245;
+    } else {
+      sHeight = 30
+    }
+    var div = document.getElementById("div_plugins");
+    div.style.height = sHeight + "px";
+  }
+
+function Dialog(url, action, init) {
+       if (typeof init == "undefined") {
+               init = window;  // pass this window object by default
+       }
+       if (typeof window.showModalDialog == 'function')
+       {
+               Dialog._return = action;
+               var r = window.showModalDialog(url, init, "dialogheight=10;dialogheight=10;scroll=yes;resizable=yes");
+       }
+       else
+       {
+               Dialog._geckoOpenModal(url, action, init);
+       }
+};
+
+Dialog._parentEvent = function(ev) {
+  setTimeout( function() { if (Dialog._modal && !Dialog._modal.closed) { Dialog._modal.focus() } }, 50);
+  if (Dialog._modal && !Dialog._modal.closed) {
+    agt = navigator.userAgent.toLowerCase();
+    is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
+    if (is_ie) {
+      ev.cancelBubble = true;
+      ev.returnValue = false;
+    } else {
+      ev.preventDefault();
+      ev.stopPropagation();
+    }
+  }
+};
+
+
+// should be a function, the return handler of the currently opened dialog.
+Dialog._return = null;
+
+// constant, the currently opened dialog
+Dialog._modal = null;
+
+// the dialog will read it's args from this variable
+Dialog._arguments = null;
+
+Dialog._geckoOpenModal = function(url, action, init) {
+  var dlg = window.open(url, "hadialog",
+            "toolbar=no,menubar=no,personalbar=no,width=10,height=10," +
+            "scrollbars=no,resizable=yes,modal=yes,dependable=yes");
+  Dialog._modal = dlg;
+  Dialog._arguments = init;
+
+  // capture some window's events
+  function capwin(w) {
+//             Xinha._addEvent(w, "click", Dialog._parentEvent);
+//             Xinha._addEvent(w, "mousedown", Dialog._parentEvent);
+//             Xinha._addEvent(w, "focus", Dialog._parentEvent);
+  };
+  // release the captured events
+  function relwin(w) {
+//             Xinha._removeEvent(w, "click", Dialog._parentEvent);
+//             Xinha._removeEvent(w, "mousedown", Dialog._parentEvent);
+//             Xinha._removeEvent(w, "focus", Dialog._parentEvent);
+  };
+  capwin(window);
+  // capture other frames
+  for (var i = 0; i < window.frames.length; capwin(window.frames[i++]));
+  // make up a function to be called when the Dialog ends.
+  Dialog._return = function (val) {
+    if (val && action) {
+      action(val);
+    }
+    relwin(window);
+    // capture other frames
+    for (var i = 0; i < window.frames.length; relwin(window.frames[i++]));
+    Dialog._modal = null;
+  };
+};
+
+  function fExtended () {
+    Dialog("Extended.html", function(param) {
+      if(param) {
+        settings.width = param["width"];
+        settings.height = param["height"];
+        settings.sizeIncludesBars = (param["sizeIncludesBars"]=="true");
+        settings.sizeIncludesPanels = (param["sizeIncludesPanels"]=="true");
+        settings.statusBar = (param["statusBar"]=="true");
+        settings.htmlareaPaste = (param["htmlareaPaste"]=="true");
+        settings.mozParaHandler = param["mozParaHandler"];
+        settings.getHtmlMethod = param["getHtmlMethod"];
+        settings.undoSteps = param["undoSteps"];
+        settings.undoTimeout = param["undoTimeout"];
+        settings.changeJustifyWithDirection = (param["changeJustifyWithDirection"]=="true");
+        settings.fullPage = (param["fullPage"]=="true");
+        settings.pageStyle = param["pageStyle"];
+        settings.baseHref = param["baseHref"];
+        settings.expandRelativeUrl = (param["expandRelativeUrl"]=="true");
+        settings.stripBaseHref = (param["stripBaseHref"]=="true");
+        settings.stripSelfNamedAnchors = (param["stripSelfNamedAnchors"]=="true");
+        settings.only7BitPrintablesInURLs = (param["only7BitPrintablesInURLs"]=="true");
+        settings.sevenBitClean = (param["sevenBitClean"]=="true");
+        settings.killWordOnPaste = (param["killWordOnPaste"]=="true");
+        settings.makeLinkShowsTarget = (param["makeLinkShowsTarget"]=="true");
+        settings.flowToolbars = (param["flowToolbars"]=="true");
+        settings.stripScripts = (param["stripScripts"]=="true");
+        settings.CharacterMapMode = param["CharacterMapMode"];
+        settings.ListTypeMode = param["ListTypeMode"];
+        settings.showLoading = (param["showLoading"]=="true");
+        settings.showChar = (param["showChar"]=="true");
+        settings.showWord = (param["showWord"]=="true");
+        settings.showHtml = (param["showHtml"]=="true");
+      }
+    }, settings );
+  }
+
+  function init(){
+    var co = getCookie('co_ext_Xinha');
+    if(co!=null){
+      var co_values;
+      var co_entries = co.split('###');
+      for (var i in co_entries) {
+        co_values = co_entries[i].split('=');
+        if(co_values[0]=='plugins') {
+          for(var x = 0; x < document.forms[0].plugins.length; x++) {
+            if(co_values[1].indexOf(document.forms[0].plugins[x].value)!=-1) {
+              document.forms[0].plugins[x].checked = true;
+            }
+          }
+        } else if(co_values[0]!='') {
+          document.getElementById(co_values[0]).value = co_values[1];
+        }
+      }
+    }
+    _onResize();
+  };
+
+  window.onresize = _onResize;
+  window.onload = init;
+  </script>
+</head>
+
+<body>
+  <form action="ext_example-body.html" target="body" name="fsettings" id="fsettings">
+  <h1>Xinha Example</h1>
+    <fieldset>
+      <legend>Settings</legend>
+        <label>
+          Number of Editors: <input type="text" name="num" id="num" value="1" style="width:25;" maxlength="2"/>
+        </label>
+        <label>
+          Language:
+          <select name="lang" id="lang">
+          <option value="en">English</option>
+          <option value="de">German</option>
+          <option value="fr">French</option>
+          <option value="it">Italian</option>
+          <option value="no">Norwegian</option>
+          <option value="pl">Polish</option>
+          <option value="ja">Japanese</option>
+          </select>
+        </label>
+        <label>
+          Skin:
+          <select name="skin" id="skin">
+          <option value="">-- no skin --</option>
+<?php
+  $d = @dir($LocalSkinPath);
+  while (false !== ($entry = $d->read()))  //not a dot file or directory
+  { if(substr($entry,0,1) != '.')
+    { echo '<option value="' . $entry . '"> ' . $entry . '</option>'."\n";
+    }
+  }
+  $d->close();
+?>
+          </select>
+        </label>
+        <center><input type="button" value="extended Settings" onClick="fExtended();" /></center>
+
+    </fieldset>
+    <fieldset>
+      <legend>Plugins</legend>
+      <div id="div_plugins" style="width:100%; overflow:auto">
+<?php
+  $d = @dir($LocalPluginPath);
+  $dir_array = array();
+  while (false !== ($entry = $d->read()))  //not a dot file or directory
+  { if(substr($entry,0,1) != '.')
+    { $dir_array[] = $entry;
+    }
+  }
+  $d->close();
+  sort($dir_array);
+  foreach ($dir_array as $entry)
+  { echo '<label><input type="checkbox" name="plugins" id="plugins" value="' . $entry . '"> ' . $entry . '</label>'."\n";
+  }
+
+?>
+      </div>
+    </fieldset>
+    <center><button type="submit">reload editor</button></center>
+
+        <textarea id="myTextarea0" style="display:none">
+          <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+          Aliquam et tellus vitae justo varius placerat. Suspendisse iaculis
+          velit semper dolor. Donec gravida tincidunt mi. Curabitur tristique
+          ante elementum turpis. Aliquam nisl. Nulla posuere neque non
+          tellus. Morbi vel nibh. Cum sociis natoque penatibus et magnis dis
+          parturient montes, nascetur ridiculus mus. Nam nec wisi. In wisi.
+          Curabitur pharetra bibendum lectus.</p>
+
+          <ul>
+            <li> Phasellus et massa sed diam viverra semper.  </li>
+            <li> Mauris tincidunt felis in odio.              </li>
+            <li> Nulla placerat nunc ut pede.                 </li>
+            <li> Vivamus ultrices mi sit amet urna.           </li>
+            <li> Quisque sed augue quis nunc laoreet volutpat.</li>
+            <li> Nunc sit amet metus in tortor semper mattis. </li>
+          </ul>
+        </textarea>
+
+  </form>
+  <script type="text/javascript">
+    top.frames["body"].location.href = document.location.href.replace(/ext_example-menu\.php.*/, 'ext_example-body.html')
+    var _oldSubmitHandler = null;
+    if (document.forms[0].onsubmit != null) {
+      _oldSubmitHandler = document.forms[0].onsubmit;
+    }
+    function frame_onSubmit(){
+      var thenewdate = new Date ();
+      thenewdate.setTime(thenewdate.getTime() + (5*24*60*60*1000));
+      var co_value = 'skin=' + document.getElementById('skin').options[document.getElementById('skin').selectedIndex].value + '###' +
+                     'lang=' + document.getElementById('lang').options[document.getElementById('lang').selectedIndex].value + '###' +
+                     'num=' + document.getElementById('num').value + '###';
+      var s_value='';
+      for(var x = 0; x < document.forms[0].plugins.length; x++) {
+        if(document.forms[0].plugins[x].checked)
+          s_value += document.forms[0].plugins[x].value + '/';
+      }
+      if(s_value!='') {
+        co_value += 'plugins=' + s_value + '###'
+      }
+      setCookie('co_ext_Xinha', co_value, thenewdate);
+      if (_oldSubmitHandler != null) {
+        _oldSubmitHandler();
+      }
+    }
+    document.forms[0].onsubmit = frame_onSubmit;
+  </script>
+
+</body>
+</html>
diff --git a/mailboxes/xinha/examples/files/full_example.css b/mailboxes/xinha/examples/files/full_example.css
new file mode 100644 (file)
index 0000000..2bd258e
--- /dev/null
@@ -0,0 +1,78 @@
+   /*--------------------------------------:noTabs=true:tabSize=2:indentSize=2:--
+    --  Xinha example CSS file.  This is ripped from Trac ;)
+    --
+    --  $HeadURL:http://svn.xinha.webfactional.com/trunk/examples/files/full_example.css $
+    --  $LastChangedDate:2008-02-04 01:43:21 +0100 (Mo, 04 Feb 2008) $
+    --  $LastChangedRevision:962 $
+    --  $LastChangedBy:ray $
+    --------------------------------------------------------------------------*/
+
+ body {
+   background: #fff;
+   color: #000;
+   margin: 10px;
+  }
+  body, th, td {
+   font: normal 13px verdana,arial,'Bitstream Vera Sans',helvetica,sans-serif;
+  }
+  h1, h2, h3, h4 {
+   font-family: arial,verdana,'Bitstream Vera Sans',helvetica,sans-serif;
+   font-weight: bold;
+   letter-spacing: -0.018em;
+  }
+  h1 { font-size: 21px; margin: .15em 1em 0 0 }
+  h2 { font-size: 16px; margin: 2em 0 .5em; }
+  h3 { font-size: 14px; margin: 1.5em 0 .5em; }
+  hr { border: none;  border-top: 1px solid #ccb; margin: 2em 0; }
+  address { font-style: normal }
+  img { border: none }
+
+  :link, :visited {
+   text-decoration: none;
+   color: #b00;
+   border-bottom: 1px dotted #bbb;
+  }
+  :link:hover, :visited:hover {
+   background-color: #eee;
+   color: #555;
+  }
+  h1 :link, h1 :visited ,h2 :link, h2 :visited, h3 :link, h3 :visited,
+  h4 :link, h4 :visited, h5 :link, h5 :visited, h6 :link, h6 :visited {
+   color: inherit;
+  }
+
+  .area_holder
+  {
+    margin:10px;
+  }
+  label {font-size: 11px;}
+  .navi_links {
+       width: 177px;
+       margin: 0;
+       padding: 0px;
+       list-style:none;
+       border: none;
+}
+
+.navi_links li {
+       margin:0 0 3px 0;
+}
+
+.navi_links li a {
+       font-size: 13px;
+       line-height: 16px;
+       height: 16px;
+       display:block;
+       color:#000;
+       text-decoration: none;
+       font-weight: bold;
+       background-color: #fff;
+       cursor: pointer;
+       border: 2px solid white;
+       
+}
+
+.Link1 {
+background-color: #DF1D1F !important;
+
+}
diff --git a/mailboxes/xinha/examples/files/stylist.css b/mailboxes/xinha/examples/files/stylist.css
new file mode 100644 (file)
index 0000000..d1a98bc
--- /dev/null
@@ -0,0 +1,31 @@
+  /*--------------------------------------:noTabs=true:tabSize=2:indentSize=2:--
+    --  Stylist plugin example CSS file.  Used by full_example.js
+    --  when the Stylist plugin is included in an auto-generated example.
+    --
+    --  $HeadURL:http://svn.xinha.webfactional.com/trunk/examples/files/stylist.css $
+    --  $LastChangedDate:2008-02-04 01:43:21 +0100 (Mo, 04 Feb 2008) $
+    --  $LastChangedRevision:962 $
+    --  $LastChangedBy:ray $
+    --------------------------------------------------------------------------*/
+
+.bluetext
+{
+  color:blue;
+}
+
+p.blue_paragraph
+{
+  color:darkblue;
+}
+
+li.green_list_item
+{
+  color:green;
+}
+
+h1.webdings_lvl_1
+{
+  font-family:webdings;
+}
+
+img.polaroid { border:1px solid black; background-color:white; padding:10px; padding-bottom:30px; }
\ No newline at end of file
diff --git a/mailboxes/xinha/examples/simple_example.html b/mailboxes/xinha/examples/simple_example.html
new file mode 100644 (file)
index 0000000..7c7ec7e
--- /dev/null
@@ -0,0 +1,54 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Simple example of Xinha</title>
+<script type="text/javascript">
+var _editor_url  = document.location.href.replace(/examples\/simple_example\.html.*/, '')
+
+var _editor_lang = "en";
+</script>
+<!-- Load up the actual editor core -->
+<script type="text/javascript" src="../XinhaCore.js"></script>
+<script type="text/javascript">
+
+var xinha_plugins =
+[
+ 'Linker'
+];
+var xinha_editors =
+[
+  'myTextArea',
+  'anotherOne'
+];
+
+function xinha_init()
+{
+  if(!Xinha.loadPlugins(xinha_plugins, xinha_init)) return;
+
+  var xinha_config = new Xinha.Config();
+
+  xinha_editors = Xinha.makeEditors(xinha_editors, xinha_config, xinha_plugins);
+
+  Xinha.startEditors(xinha_editors);
+}
+Xinha.addOnloadHandler(xinha_init);
+</script>
+
+</head>
+
+<body>
+
+<form onsubmit="alert(this.myTextArea.value); return false;">
+<textarea id="myTextArea" name="myTextArea" rows="25" cols="80">
+&lt;p&gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+Aliquam et tellus vitae justo varius placerat. Suspendisse iaculis
+velit semper dolor. Donec gravida tincidunt mi. Curabitur tristique
+ante elementum turpis. Aliquam nisl. Nulla posuere neque non
+tellus. Morbi vel nibh. Cum sociis natoque penatibus et magnis dis
+parturient montes, nascetur ridiculus mus. Nam nec wisi. In wisi.
+Curabitur pharetra bibendum lectus.&lt;/p&gt;
+</textarea>
+</form>
+</body>
+</html>
\ No newline at end of file
diff --git a/mailboxes/xinha/examples/testbed.html b/mailboxes/xinha/examples/testbed.html
new file mode 100644 (file)
index 0000000..1a159ad
--- /dev/null
@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+
+  <!--------------------------------------:noTabs=true:tabSize=2:indentSize=2:--
+    --  Xinha example usage.  This file shows how a developer might make use of
+    --  Xinha, it forms the primary example file for the entire Xinha project.
+    --  This file can be copied and used as a template for development by the
+    --  end developer who should simply removed the area indicated at the bottom
+    --  of the file to remove the auto-example-generating code and allow for the
+    --  use of the file as a boilerplate.
+    --
+    --  $HeadURL: http://svn.xinha.org/trunk/examples/testbed.html $
+    --  $LastChangedDate: 2008-10-12 19:42:42 +0200 (So, 12. Okt 2008) $
+    --  $LastChangedRevision: 1084 $
+    --  $LastChangedBy: ray $
+    --------------------------------------------------------------------------->
+
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+  <title>Example of Xinha</title>
+  <link rel="stylesheet" href="files/full_example.css" />
+
+  <script type="text/javascript">
+    // You must set _editor_url to the URL (including trailing slash) where
+    // where xinha is installed, it's highly recommended to use an absolute URL
+    //  eg: _editor_url = "/path/to/xinha/";
+    // You may try a relative URL if you wish]
+    //  eg: _editor_url = "../";
+    // in this example we do a little regular expression to find the absolute path.
+    _editor_url  = document.location.href.replace(/examples\/.*/, '')
+    _editor_lang = "en";      // And the language we need to use in the editor.
+  </script>
+
+  <!-- Load up the actual editor core -->
+  <script type="text/javascript" src="../XinhaCore.js"></script>
+
+  <script type="text/javascript">
+    xinha_editors = null;
+    xinha_init    = null;
+    xinha_config  = null;
+    xinha_plugins = null;
+
+    // This contains the names of textareas we will make into Xinha editors
+    xinha_init = xinha_init ? xinha_init : function()
+    {
+      /** STEP 1 ***************************************************************
+       * First, what are the plugins you will be using in the editors on this
+       * page.  List all the plugins you will need, even if not all the editors
+       * will use all the plugins.
+       ************************************************************************/
+
+      xinha_plugins = xinha_plugins ? xinha_plugins :
+      [
+        'CharacterMap', 'SpellChecker', 'Linker'
+      ];
+             // THIS BIT OF JAVASCRIPT LOADS THE PLUGINS, NO TOUCHING  :)
+             if(!Xinha.loadPlugins(xinha_plugins, xinha_init)) return;
+
+      /** STEP 2 ***************************************************************
+       * Now, what are the names of the textareas you will be turning into
+       * editors?
+       ************************************************************************/
+
+      xinha_editors = xinha_editors ? xinha_editors :
+      [
+        'myTextArea'
+      ];
+
+      /** STEP 3 ***************************************************************
+       * We create a default configuration to be used by all the editors.
+       * If you wish to configure some of the editors differently this will be
+       * done in step 4.
+       *
+       * If you want to modify the default config you might do something like this.
+       *
+       *   xinha_config = new Xinha.Config();
+       *   xinha_config.width  = 640;
+       *   xinha_config.height = 420;
+       *
+       *************************************************************************/
+
+       xinha_config = xinha_config ? xinha_config : new Xinha.Config();
+       xinha_config.fullPage = true;
+       xinha_config.CharacterMap.mode = 'panel';
+/*
+       // We can load an external stylesheet like this - NOTE : YOU MUST GIVE AN ABSOLUTE URL
+      //  otherwise it won't work!
+      xinha_config.stylistLoadStylesheet(document.location.href.replace(/[^\/]*\.html/, 'files/stylist.css'));
+
+      // Or we can load styles directly
+      xinha_config.stylistLoadStyles('p.red_text { color:red }');
+
+      // If you want to provide "friendly" names you can do so like
+      // (you can do this for stylistLoadStylesheet as well)
+      xinha_config.stylistLoadStyles('p.pink_text { color:pink }', {'p.pink_text' : 'Pretty Pink'});
+*/
+      /** STEP 3 ***************************************************************
+       * We first create editors for the textareas.
+       *
+       * You can do this in two ways, either
+       *
+       *   xinha_editors   = Xinha.makeEditors(xinha_editors, xinha_config, xinha_plugins);
+       *
+       * if you want all the editor objects to use the same set of plugins, OR;
+       *
+       *   xinha_editors = Xinha.makeEditors(xinha_editors, xinha_config);
+       *   xinha_editors['myTextArea'].registerPlugins(['Stylist']);
+       *   xinha_editors['anotherOne'].registerPlugins(['CSS','SuperClean']);
+       *
+       * if you want to use a different set of plugins for one or more of the
+       * editors.
+       ************************************************************************/
+
+      xinha_editors   = Xinha.makeEditors(xinha_editors, xinha_config, xinha_plugins);
+
+      /** STEP 4 ***************************************************************
+       * If you want to change the configuration variables of any of the
+       * editors,  this is the place to do that, for example you might want to
+       * change the width and height of one of the editors, like this...
+       *
+       *   xinha_editors.myTextArea.config.width  = 640;
+       *   xinha_editors.myTextArea.config.height = 480;
+       *
+       ************************************************************************/
+
+
+      /** STEP 5 ***************************************************************
+       * Finally we "start" the editors, this turns the textareas into
+       * Xinha editors.
+       ************************************************************************/
+
+      Xinha.startEditors(xinha_editors);
+      window.onload = null;
+    }
+
+    window.onload   = xinha_init;
+  </script>
+</head>
+
+<body>
+
+  <form action="javascript:void(0);" id="editors_here" onsubmit="alert(this.myTextArea.value);">
+ <div>
+     <textarea id="myTextArea" name="myTextArea" style="width:100%;height:320px;">
+      &lt;html&gt;
+      &lt;head&gt;
+        &lt;title&gt;Hello&lt;/title&gt;
+        &lt;style type="text/css"&gt;
+          li { color:red; }
+        &lt;/style&gt;
+      &lt;/head&gt;
+      &lt;body&gt;&lt;span style="color:purple"&gt;
+      &lt;img src="../images/xinha_logo.gif" usemap="#m1"&gt;
+      &lt;map name="m1"&gt;
+      &lt;area shape="rect" coords="137,101,255,124" href="http://www.mydomain.com"&gt;
+      &lt;/map&gt;
+
+      &lt;p&gt;
+        Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+        Aliquam et tellus vitae justo varius placerat. Suspendisse iaculis
+        velit semper dolor. Donec gravida tincidunt mi. Curabitur tristique
+        ante elementum turpis.  &lt;span style="color:green"&gt;Aliquam &lt;/span&gt; nisl. Nulla posuere neque non
+        tellus. Morbi vel nibh. &lt;font face="Arial"&gt;&lt;font color="#009933"&gt;Cum  sociis natoque&lt;/font&gt;&lt;/font&gt; penatibus et magnis dis
+        parturient montes, nascetur ridiculus mus. Nam nec wisi. In wisi.
+        Curabitur pharetra bibendum lectus.
+      &lt;/p&gt;
+
+      &lt;ul&gt;
+        &lt;li style="color:green"&gt; Phasellus et massa sed diam viverra semper.  &lt;/li&gt;
+        &lt;li&gt; Mauris tincidunt felis in odio.              &lt;/li&gt;
+        &lt;li&gt; Nulla placerat nunc ut pede.                 &lt;/li&gt;
+        &lt;li&gt; Vivamus ultrices mi sit amet urna.           &lt;/li&gt;
+        &lt;li&gt; Quisque sed augue quis nunc laoreet volutpat.&lt;/li&gt;
+        &lt;li&gt; Nunc sit amet metus in tortor semper mattis. &lt;/li&gt;
+      &lt;/ul&gt;
+      &lt;/span&gt;&lt;/body&gt;
+      &lt;/html&gt;
+    </textarea>
+
+    <input type="submit" /> <input type="reset" />
+</div>
+  </form>
+  <script type="text/javascript">
+    document.write(document.compatMode);
+  </script>
+<div>
+  <a href="#" onclick="xinha_editors.myTextArea.hidePanels();">Hide</a>
+  <a href="#" onclick="xinha_editors.myTextArea.showPanels();">Show</a>
+</div>
+
+</body>
+</html>
diff --git a/mailboxes/xinha/htmlarea.js b/mailboxes/xinha/htmlarea.js
new file mode 100644 (file)
index 0000000..f1f7de8
--- /dev/null
@@ -0,0 +1,23 @@
+  /*--------------------------------------:noTabs=true:tabSize=2:indentSize=2:--
+    --  COMPATABILITY FILE
+    --  htmlarea.js is now XinhaCore.js  
+    --
+    --  $HeadURL:http://svn.xinha.webfactional.com/trunk/htmlarea.js $
+    --  $LastChangedDate:2007-01-15 15:28:57 +0100 (Mo, 15 Jan 2007) $
+    --  $LastChangedRevision:659 $
+    --  $LastChangedBy:gogo $
+    --------------------------------------------------------------------------*/
+    
+if ( typeof _editor_url == "string" )
+{
+  // Leave exactly one backslash at the end of _editor_url
+  _editor_url = _editor_url.replace(/\x2f*$/, '/');
+}
+else
+{
+  alert("WARNING: _editor_url is not set!  You should set this variable to the editor files path; it should preferably be an absolute path, like in '/htmlarea/', but it can be relative if you prefer.  Further we will try to load the editor files correctly but we'll probably fail.");
+  _editor_url = '';
+}
+
+document.write('<script type="text/javascript" src="'+_editor_url+'XinhaCore.js"></script>');
\ No newline at end of file
diff --git a/mailboxes/xinha/iconsets/Classic/de/bold.gif b/mailboxes/xinha/iconsets/Classic/de/bold.gif
new file mode 100644 (file)
index 0000000..21d286f
Binary files /dev/null and b/mailboxes/xinha/iconsets/Classic/de/bold.gif differ
diff --git a/mailboxes/xinha/iconsets/Classic/de/italic.gif b/mailboxes/xinha/iconsets/Classic/de/italic.gif
new file mode 100644 (file)
index 0000000..0bf7947
Binary files /dev/null and b/mailboxes/xinha/iconsets/Classic/de/italic.gif differ
diff --git a/mailboxes/xinha/iconsets/Classic/de/underline.gif b/mailboxes/xinha/iconsets/Classic/de/underline.gif
new file mode 100644 (file)
index 0000000..0545489
Binary files /dev/null and b/mailboxes/xinha/iconsets/Classic/de/underline.gif differ
diff --git a/mailboxes/xinha/iconsets/Classic/ed_buttons_main.gif b/mailboxes/xinha/iconsets/Classic/ed_buttons_main.gif
new file mode 100644 (file)
index 0000000..bc1962b
Binary files /dev/null and b/mailboxes/xinha/iconsets/Classic/ed_buttons_main.gif differ
diff --git a/mailboxes/xinha/iconsets/Classic/ed_charmap.gif b/mailboxes/xinha/iconsets/Classic/ed_charmap.gif
new file mode 100644 (file)
index 0000000..289aa7c
Binary files /dev/null and b/mailboxes/xinha/iconsets/Classic/ed_charmap.gif differ
diff --git a/mailboxes/xinha/iconsets/Classic/ed_selectall.gif b/mailboxes/xinha/iconsets/Classic/ed_selectall.gif
new file mode 100644 (file)
index 0000000..9acf0a0
Binary files /dev/null and b/mailboxes/xinha/iconsets/Classic/ed_selectall.gif differ
diff --git a/mailboxes/xinha/iconsets/Classic/fr/bold.gif b/mailboxes/xinha/iconsets/Classic/fr/bold.gif
new file mode 100644 (file)
index 0000000..8a0f657
Binary files /dev/null and b/mailboxes/xinha/iconsets/Classic/fr/bold.gif differ
diff --git a/mailboxes/xinha/iconsets/Classic/fr/strikethrough.gif b/mailboxes/xinha/iconsets/Classic/fr/strikethrough.gif
new file mode 100644 (file)
index 0000000..5707aef
Binary files /dev/null and b/mailboxes/xinha/iconsets/Classic/fr/strikethrough.gif differ
diff --git a/mailboxes/xinha/iconsets/Classic/fr/underline.gif b/mailboxes/xinha/iconsets/Classic/fr/underline.gif
new file mode 100644 (file)
index 0000000..4ecaf22
Binary files /dev/null and b/mailboxes/xinha/iconsets/Classic/fr/underline.gif differ
diff --git a/mailboxes/xinha/iconsets/Classic/iconset.xml b/mailboxes/xinha/iconsets/Classic/iconset.xml
new file mode 100644 (file)
index 0000000..10b9b8c
--- /dev/null
@@ -0,0 +1,263 @@
+<?xml version="1.0" encoding="utf-8"?>
+<iconset>
+<!--TODO: Add metas -->
+  <icons>
+    <icon id="bold">
+      <default type="map">
+        <path>iconsets/Classic/ed_buttons_main.gif</path>
+        <x>3</x>
+        <y>2</y>
+      </default>
+      <de type="string">
+        <path>iconsets/Classic/de/bold.gif</path>
+      </de>
+      <fr type="string">
+        <path>iconsets/Classic/fr/bold.gif</path>
+      </fr>
+    </icon>
+    <icon id="italic">
+      <default type="map">
+        <path>iconsets/Classic/ed_buttons_main.gif</path>
+        <x>2</x>
+        <y>2</y>
+      </default>
+      <de type="string">
+        <path>iconsets/Classic/de/italic.gif</path>
+      </de>
+    </icon>
+    <icon id="underline">
+      <default type="map">
+        <path>iconsets/Classic/ed_buttons_main.gif</path>
+        <x>2</x>
+        <y>0</y>
+      </default>
+      <fr type="string">
+        <path>iconsets/Classic/fr/underline.gif</path>
+      </fr>
+      <de type="string">
+        <path>iconsets/Classic/de/underline.gif</path>
+      </de>
+    </icon>
+    <icon id="strikethrough">
+      <default type="map">
+        <path>iconsets/Classic/ed_buttons_main.gif</path>
+        <x>3</x>
+        <y>0</y>
+      </default>
+      <fr type="string">
+        <path>iconsets/Classic/fr/strikethrough.gif</path>
+      </fr>
+    </icon>
+    <icon id="subscript">
+      <default type="map">
+        <path>iconsets/Classic/ed_buttons_main.gif</path>
+        <x>3</x>
+        <y>1</y>
+      </default>
+    </icon>
+    <icon id="superscript">
+      <default type="map">
+        <path>iconsets/Classic/ed_buttons_main.gif</path>
+        <x>2</x>
+        <y>1</y>
+      </default>
+    </icon>
+    <icon id="undo">
+      <default type="map">
+        <path>iconsets/Classic/ed_buttons_main.gif</path>
+        <x>4</x>
+        <y>2</y>
+      </default>
+    </icon>
+    <icon id="redo">
+      <default type="map">
+        <path>iconsets/Classic/ed_buttons_main.gif</path>
+        <x>5</x>
+        <y>2</y>
+      </default>
+    </icon>
+    <icon id="cut">
+      <default type="map">
+        <path>iconsets/Classic/ed_buttons_main.gif</path>
+        <x>5</x>
+        <y>0</y>
+      </default>
+    </icon>
+    <icon id="copy">
+      <default type="map">
+        <path>iconsets/Classic/ed_buttons_main.gif</path>
+        <x>4</x>
+        <y>0</y>
+      </default>
+    </icon>
+    <icon id="paste">
+      <default type="map">
+        <path>iconsets/Classic/ed_buttons_main.gif</path>
+        <x>4</x>
+        <y>1</y>
+      </default>
+    </icon>
+    <icon id="forecolor">
+      <default type="map">
+        <path>iconsets/Classic/ed_buttons_main.gif</path>
+        <x>3</x>
+        <y>3</y>
+      </default>
+    </icon>
+    <icon id="hilitecolor">
+      <default type="map">
+        <path>iconsets/Classic/ed_buttons_main.gif</path>
+        <x>2</x>
+        <y>3</y>
+      </default>
+    </icon>
+    <icon id="indent">
+      <default type="map">
+        <path>iconsets/Classic/ed_buttons_main.gif</path>
+        <x>0</x>
+        <y>2</y>
+      </default>
+    </icon>
+    <icon id="outdent">
+      <default type="map">
+        <path>iconsets/Classic/ed_buttons_main.gif</path>
+        <x>1</x>
+        <y>2</y>
+      </default>
+    </icon>
+    <icon id="insertimage">
+      <default type="map">
+        <path>iconsets/Classic/ed_buttons_main.gif</path>
+        <x>6</x>
+        <y>3</y>
+      </default>
+    </icon>
+    <icon id="insertorderedlist">
+      <default type="map">
+        <path>iconsets/Classic/ed_buttons_main.gif</path>
+        <x>0</x>
+        <y>3</y>
+      </default>
+    </icon>
+    <icon id="insertunorderedlist">
+      <default type="map">
+        <path>iconsets/Classic/ed_buttons_main.gif</path>
+        <x>1</x>
+        <y>3</y>
+      </default>
+    </icon>
+    <icon id="justifyleft">
+      <default type="map">
+        <path>iconsets/Classic/ed_buttons_main.gif</path>
+        <x>0</x>
+        <y>0</y>
+      </default>
+    </icon>
+    <icon id="justifyfull">
+      <default type="map">
+        <path>iconsets/Classic/ed_buttons_main.gif</path>
+        <x>0</x>
+        <y>1</y>
+      </default>
+    </icon>
+    <icon id="justifycenter">
+      <default type="map">
+        <path>iconsets/Classic/ed_buttons_main.gif</path>
+        <x>1</x>
+        <y>1</y>
+      </default>
+    </icon>
+    <icon id="justifyright">
+      <default type="map">
+        <path>iconsets/Classic/ed_buttons_main.gif</path>
+        <x>1</x>
+        <y>0</y>
+      </default>
+    </icon>
+    <icon id="createlink">
+      <default type="map">
+        <path>iconsets/Classic/ed_buttons_main.gif</path>
+        <x>6</x>
+        <y>1</y>
+      </default>
+    </icon>
+    <icon id="lefttoright">
+      <default type="map">
+        <path>iconsets/Classic/ed_buttons_main.gif</path>
+        <x>0</x>
+        <y>4</y>
+      </default>
+    </icon>
+    <icon id="righttoleft">
+      <default type="map">
+        <path>iconsets/Classic/ed_buttons_main.gif</path>
+        <x>1</x>
+        <y>4</y>
+      </default>
+    </icon>
+    <icon id="print">
+      <default type="map">
+        <path>iconsets/Classic/ed_buttons_main.gif</path>
+        <x>8</x>
+        <y>1</y>
+      </default>
+    </icon>
+    <icon id="saveas">
+      <default type="map">
+        <path>iconsets/Classic/ed_buttons_main.gif</path>
+        <x>9</x>
+        <y>1</y>
+      </default>
+    </icon>
+    <icon id="removeformat">
+      <default type="map">
+        <path>iconsets/Classic/ed_buttons_main.gif</path>
+        <x>4</x>
+        <y>4</y>
+      </default>
+    </icon>
+    <icon id="about">
+      <default type="map">
+        <path>iconsets/Classic/ed_buttons_main.gif</path>
+        <x>8</x>
+        <y>2</y>
+      </default>
+    </icon>
+    <icon id="showhelp">
+      <default type="map">
+        <path>iconsets/Classic/ed_buttons_main.gif</path>
+        <x>9</x>
+        <y>2</y>
+      </default>
+    </icon>
+    <icon id="fullscreen">
+      <default type="map">
+        <path>iconsets/Classic/ed_buttons_main.gif</path>
+        <x>8</x>
+        <y>0</y>
+      </default>
+    </icon>
+    <icon id="fullscreenrestore">
+      <default type="map">
+        <path>iconsets/Classic/ed_buttons_main.gif</path>
+        <x>9</x>
+        <y>0</y>
+      </default>
+    </icon>
+    <icon id="selectall">
+      <default type="simple">
+        <path>iconsets/Classic/ed_selectall.gif</path>
+      </default>
+    </icon>
+    <icon id="insertcharacter">
+      <default type="simple">
+        <path>iconsets/Classic/ed_charmap.gif</path>
+      </default>
+    </icon>
+    <icon id="smartreplace">
+      <default type="simple">
+        <path>plugins/SmartReplace/img.gif</path>
+      </default>
+    </icon>
+  </icons>
+</iconset>
\ No newline at end of file
diff --git a/mailboxes/xinha/iconsets/Crystal/LICENSE b/mailboxes/xinha/iconsets/Crystal/LICENSE
new file mode 100644 (file)
index 0000000..ca2dca4
--- /dev/null
@@ -0,0 +1,121 @@
+License
+
+The Crystal Project are released under LGPL.
+
+GNU General Public License.
+
+   0.
+
+      This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you".
+
+      A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables.
+
+      The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".)
+
+      "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library.
+
+      Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does.
+   1.
+
+      You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library.
+
+      You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
+   2.
+
+      You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
+         1. The modified work must itself be a software library.
+         2. You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change.
+         3. You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License.
+         4. If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful.
+
+      (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.)
+
+      These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
+
+      Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library.
+
+      In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
+   3.
+
+      You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices.
+
+      Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy.
+
+      This option is useful when you wish to copy part of the code of the Library into a program that is not a library.
+   4.
+
+      You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange.
+
+      If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code.
+   5.
+
+      A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License.
+      However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables.
+
+      When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law.
+
+      If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.)
+
+      Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself.
+   6.
+
+      As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications.
+
+      You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things:
+         1. Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) .
+         2. Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with.
+         3. Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution.
+         4. If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place.
+         5. Verify that the user has already received a copy of these materials or that you have already sent this user a copy.
+
+      For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
+
+      It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute.
+   7.
+
+      You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things:
+         1.
+
+            Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above.
+         2.
+
+            Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work.
+   8.
+
+      You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
+   9.
+
+      You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it.
+  10.
+
+      Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License.
+  11.
+
+      If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library.
+
+      If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances.
+
+      It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
+
+      This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
+  12.
+
+      If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
+  13.
+
+      The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
+
+      Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation.
+  14.
+
+      If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
+
+No Warranty
+
+  15.
+
+      Because the library is licensed free of charge, there is no warranty for the library, to the extent permitted by applicable law. Except when otherwise stated in writing the copyright holders and/or other parties provide the library "as is" without warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. The entire risk as to the quality and performance of the library is with you. Should the library prove defective, you assume the cost of all necessary servicing, repair or correction.
+  16.
+
+      In no event unless required by applicable law or agreed to in writing will any copyright holder, or any other party who may modify and/or redistribute the library as permitted above, be liable to you for damages, including any general, special, incidental or consequential damages arising out of the use or inability to use the library (including but not limited to loss of data or data being rendered inaccurate or losses sustained by you or third parties or a failure of the library to operate with any other software), even if such holder or other party has been advised of the possibility of such damages.
+
diff --git a/mailboxes/xinha/iconsets/Crystal/README b/mailboxes/xinha/iconsets/Crystal/README
new file mode 100644 (file)
index 0000000..a55ebed
--- /dev/null
@@ -0,0 +1,3 @@
+These icons are from everaldo.com, in particular from the Open Office Crystal Icons set
+
+The Crystal Project are released under LGPL.
\ No newline at end of file
diff --git a/mailboxes/xinha/iconsets/Crystal/ed_buttons_main.png b/mailboxes/xinha/iconsets/Crystal/ed_buttons_main.png
new file mode 100644 (file)
index 0000000..40bd054
Binary files /dev/null and b/mailboxes/xinha/iconsets/Crystal/ed_buttons_main.png differ
diff --git a/mailboxes/xinha/iconsets/Crystal/iconset.xml b/mailboxes/xinha/iconsets/Crystal/iconset.xml
new file mode 100644 (file)
index 0000000..6833d32
--- /dev/null
@@ -0,0 +1,234 @@
+<?xml version="1.0" encoding="utf-8"?>
+<iconset>
+<!--TODO: Add metas -->
+  <icons>
+    <icon id="bold">
+      <default type="map">
+        <path>iconsets/Crystal/ed_buttons_main.png</path>
+        <x>3</x>
+        <y>2</y>
+      </default>
+      <!--<de type="string">
+        <path>iconsets/Crystal/de/bold_de.gif</path>
+      </de>-->
+    </icon>
+    <icon id="italic">
+      <default type="map">
+        <path>iconsets/Crystal/ed_buttons_main.png</path>
+        <x>2</x>
+        <y>2</y>
+      </default>
+    </icon>
+    <icon id="underline">
+      <default type="map">
+        <path>iconsets/Crystal/ed_buttons_main.png</path>
+        <x>2</x>
+        <y>0</y>
+      </default>
+    </icon>
+    <icon id="strikethrough">
+      <default type="map">
+        <path>iconsets/Crystal/ed_buttons_main.png</path>
+        <x>3</x>
+        <y>0</y>
+      </default>
+    </icon>
+    <icon id="subscript">
+      <default type="map">
+        <path>iconsets/Crystal/ed_buttons_main.png</path>
+        <x>3</x>
+        <y>1</y>
+      </default>
+    </icon>
+    <icon id="superscript">
+      <default type="map">
+        <path>iconsets/Crystal/ed_buttons_main.png</path>
+        <x>2</x>
+        <y>1</y>
+      </default>
+    </icon>
+    <icon id="undo">
+      <default type="map">
+        <path>iconsets/Crystal/ed_buttons_main.png</path>
+        <x>4</x>
+        <y>2</y>
+      </default>
+    </icon>
+    <icon id="redo">
+      <default type="map">
+        <path>iconsets/Crystal/ed_buttons_main.png</path>
+        <x>5</x>
+        <y>2</y>
+      </default>
+    </icon>
+    <icon id="cut">
+      <default type="map">
+        <path>iconsets/Crystal/ed_buttons_main.png</path>
+        <x>5</x>
+        <y>0</y>
+      </default>
+    </icon>
+    <icon id="copy">
+      <default type="map">
+        <path>iconsets/Crystal/ed_buttons_main.png</path>
+        <x>4</x>
+        <y>0</y>
+      </default>
+    </icon>
+    <icon id="paste">
+      <default type="map">
+        <path>iconsets/Crystal/ed_buttons_main.png</path>
+        <x>4</x>
+        <y>1</y>
+      </default>
+    </icon>
+    <icon id="forecolor">
+      <default type="map">
+        <path>iconsets/Crystal/ed_buttons_main.png</path>
+        <x>3</x>
+        <y>3</y>
+      </default>
+    </icon>
+    <icon id="hilitecolor">
+      <default type="map">
+        <path>iconsets/Crystal/ed_buttons_main.png</path>
+        <x>2</x>
+        <y>3</y>
+      </default>
+    </icon>
+    <icon id="indent">
+      <default type="map">
+        <path>iconsets/Crystal/ed_buttons_main.png</path>
+        <x>0</x>
+        <y>2</y>
+      </default>
+    </icon>
+    <icon id="outdent">
+      <default type="map">
+        <path>iconsets/Crystal/ed_buttons_main.png</path>
+        <x>1</x>
+        <y>2</y>
+      </default>
+    </icon>
+    <icon id="insertimage">
+      <default type="map">
+        <path>iconsets/Crystal/ed_buttons_main.png</path>
+        <x>6</x>
+        <y>3</y>
+      </default>
+    </icon>
+    <icon id="insertorderedlist">
+      <default type="map">
+        <path>iconsets/Crystal/ed_buttons_main.png</path>
+        <x>0</x>
+        <y>3</y>
+      </default>
+    </icon>
+    <icon id="insertunorderedlist">
+      <default type="map">
+        <path>iconsets/Crystal/ed_buttons_main.png</path>
+        <x>1</x>
+        <y>3</y>
+      </default>
+    </icon>
+    <icon id="justifyleft">
+      <default type="map">
+        <path>iconsets/Crystal/ed_buttons_main.png</path>
+        <x>0</x>
+        <y>0</y>
+      </default>
+    </icon>
+    <icon id="justifyfull">
+      <default type="map">
+        <path>iconsets/Crystal/ed_buttons_main.png</path>
+        <x>0</x>
+        <y>1</y>
+      </default>
+    </icon>
+    <icon id="justifycenter">
+      <default type="map">
+        <path>iconsets/Crystal/ed_buttons_main.png</path>
+        <x>1</x>
+        <y>1</y>
+      </default>
+    </icon>
+    <icon id="justifyright">
+      <default type="map">
+        <path>iconsets/Crystal/ed_buttons_main.png</path>
+        <x>1</x>
+        <y>0</y>
+      </default>
+    </icon>
+    <icon id="createlink">
+      <default type="map">
+        <path>iconsets/Crystal/ed_buttons_main.png</path>
+        <x>6</x>
+        <y>1</y>
+      </default>
+    </icon>
+    <icon id="lefttoright">
+      <default type="map">
+        <path>iconsets/Crystal/ed_buttons_main.png</path>
+        <x>0</x>
+        <y>4</y>
+      </default>
+    </icon>
+    <icon id="righttoleft">
+      <default type="map">
+        <path>iconsets/Crystal/ed_buttons_main.png</path>
+        <x>1</x>
+        <y>4</y>
+      </default>
+    </icon>
+    <icon id="print">
+      <default type="map">
+        <path>iconsets/Crystal/ed_buttons_main.png</path>
+        <x>8</x>
+        <y>1</y>
+      </default>
+    </icon>
+    <icon id="saveas">
+      <default type="map">
+        <path>iconsets/Crystal/ed_buttons_main.png</path>
+        <x>9</x>
+        <y>1</y>
+      </default>
+    </icon>
+    <icon id="removeformat">
+      <default type="map">
+        <path>iconsets/Crystal/ed_buttons_main.png</path>
+        <x>4</x>
+        <y>4</y>
+      </default>
+    </icon>
+    <icon id="about">
+      <default type="map">
+        <path>iconsets/Crystal/ed_buttons_main.png</path>
+        <x>8</x>
+        <y>2</y>
+      </default>
+    </icon>
+    <icon id="showhelp">
+      <default type="map">
+        <path>iconsets/Crystal/ed_buttons_main.png</path>
+        <x>9</x>
+        <y>2</y>
+      </default>
+    </icon>
+    <icon id="fullscreen">
+      <default type="map">
+        <path>iconsets/Crystal/ed_buttons_main.png</path>
+        <x>8</x>
+        <y>0</y>
+      </default>
+    </icon>
+    <icon id="fullscreenrestore">
+      <default type="map">
+        <path>iconsets/Crystal/ed_buttons_main.png</path>
+        <x>9</x>
+        <y>0</y>
+      </default>
+    </icon>
+
+  </icons>
+</iconset>
\ No newline at end of file
diff --git a/mailboxes/xinha/iconsets/Tango/LICENSE b/mailboxes/xinha/iconsets/Tango/LICENSE
new file mode 100644 (file)
index 0000000..e709d0c
--- /dev/null
@@ -0,0 +1,67 @@
+Creative Commons Attribution-ShareAlike 2.5 License Agreement
+
+CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE.
+
+License
+
+THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
+
+BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
+
+1. Definitions
+
+   1. "Collective Work" means a work, such as a periodical issue, anthology or encyclopedia, in which the Work in its entirety in unmodified form, along with a number of other contributions, constituting separate and independent works in themselves, are assembled into a collective whole. A work that constitutes a Collective Work will not be considered a Derivative Work (as defined below) for the purposes of this License.
+   2. "Derivative Work" means a work based upon the Work or upon the Work and other pre-existing works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which the Work may be recast, transformed, or adapted, except that a work that constitutes a Collective Work will not be considered a Derivative Work for the purpose of this License. For the avoidance of doubt, where the Work is a musical composition or sound recording, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered a Derivative Work for the purpose of this License.
+   3. "Licensor" means the individual or entity that offers the Work under the terms of this License.
+   4. "Original Author" means the individual or entity who created the Work.
+   5. "Work" means the copyrightable work of authorship offered under the terms of this License.
+   6. "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation.
+   7. "License Elements" means the following high-level license attributes as selected by Licensor and indicated in the title of this License: Attribution, ShareAlike.
+
+2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws.
+
+3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below:
+
+   1. to reproduce the Work, to incorporate the Work into one or more Collective Works, and to reproduce the Work as incorporated in the Collective Works;
+   2. to create and reproduce Derivative Works;
+   3. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission the Work including as incorporated in Collective Works;
+   4. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission Derivative Works.
+   5.
+
+      For the avoidance of doubt, where the work is a musical composition:
+         1. Performance Royalties Under Blanket Licenses. Licensor waives the exclusive right to collect, whether individually or via a performance rights society (e.g. ASCAP, BMI, SESAC), royalties for the public performance or public digital performance (e.g. webcast) of the Work.
+         2. Mechanical Rights and Statutory Royalties. Licensor waives the exclusive right to collect, whether individually or via a music rights society or designated agent (e.g. Harry Fox Agency), royalties for any phonorecord You create from the Work ("cover version") and distribute, subject to the compulsory license created by 17 USC Section 115 of the US Copyright Act (or the equivalent in other jurisdictions).
+   6. Webcasting Rights and Statutory Royalties. For the avoidance of doubt, where the Work is a sound recording, Licensor waives the exclusive right to collect, whether individually or via a performance-rights society (e.g. SoundExchange), royalties for the public digital performance (e.g. webcast) of the Work, subject to the compulsory license created by 17 USC Section 114 of the US Copyright Act (or the equivalent in other jurisdictions).
+
+The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. All rights not expressly granted by Licensor are hereby reserved.
+
+4. Restrictions.The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:
+
+   1. You may distribute, publicly display, publicly perform, or publicly digitally perform the Work only under the terms of this License, and You must include a copy of, or the Uniform Resource Identifier for, this License with every copy or phonorecord of the Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Work that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Work itself to be made subject to the terms of this License. If You create a Collective Work, upon notice from any Licensor You must, to the extent practicable, remove from the Collective Work any credit as required by clause 4(c), as requested. If You create a Derivative Work, upon notice from any Licensor You must, to the extent practicable, remove from the Derivative Work any credit as required by clause 4(c), as requested.
+   2. You may distribute, publicly display, publicly perform, or publicly digitally perform a Derivative Work only under the terms of this License, a later version of this License with the same License Elements as this License, or a Creative Commons iCommons license that contains the same License Elements as this License (e.g. Attribution-ShareAlike 2.5 Japan). You must include a copy of, or the Uniform Resource Identifier for, this License or other license specified in the previous sentence with every copy or phonorecord of each Derivative Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Derivative Works that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder, and You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Derivative Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Derivative Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Derivative Work itself to be made subject to the terms of this License.
+   3. If you distribute, publicly display, publicly perform, or publicly digitally perform the Work or any Derivative Works or Collective Works, You must keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or (ii) if the Original Author and/or Licensor designate another party or parties (e.g. a sponsor institute, publishing entity, journal) for attribution in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; the title of the Work if supplied; to the extent reasonably practicable, the Uniform Resource Identifier, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and in the case of a Derivative Work, a credit identifying the use of the Work in the Derivative Work (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). Such credit may be implemented in any reasonable manner; provided, however, that in the case of a Derivative Work or Collective Work, at a minimum such credit will appear where any other comparable authorship credit appears and in a manner at least as prominent as such other comparable authorship credit.
+
+5. Representations, Warranties and Disclaimer
+
+UNLESS OTHERWISE AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE MATERIALS, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
+
+6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. Termination
+
+   1. This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Derivative Works or Collective Works from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License.
+   2. Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above.
+
+8. Miscellaneous
+
+   1. Each time You distribute or publicly digitally perform the Work or a Collective Work, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License.
+   2. Each time You distribute or publicly digitally perform a Derivative Work, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License.
+   3. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+   4. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent.
+   5. This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You.
+
+Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor.
+
+Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, neither party will use the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time.
+
+Creative Commons may be contacted at http://creativecommons.org/.
diff --git a/mailboxes/xinha/iconsets/Tango/README b/mailboxes/xinha/iconsets/Tango/README
new file mode 100644 (file)
index 0000000..32de9a1
--- /dev/null
@@ -0,0 +1,3 @@
+These icons are from the Tango Desktop Project.  The icons are realease under the Creative Commons Share-Alike license. From http://tango.freedesktop.org:
+
+The Tango Desktop Project exists to help create a consistent graphical user interface experience for free and Open Source software.
diff --git a/mailboxes/xinha/iconsets/Tango/ed_buttons_main.png b/mailboxes/xinha/iconsets/Tango/ed_buttons_main.png
new file mode 100644 (file)
index 0000000..7f73f65
Binary files /dev/null and b/mailboxes/xinha/iconsets/Tango/ed_buttons_main.png differ
diff --git a/mailboxes/xinha/iconsets/Tango/iconset.xml b/mailboxes/xinha/iconsets/Tango/iconset.xml
new file mode 100644 (file)
index 0000000..cc4ee75
--- /dev/null
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="utf-8"?>
+<iconset>
+<!--TODO: Add metas -->
+  <icons>
+    <icon id="bold">
+      <default type="map">
+        <path>iconsets/Tango/ed_buttons_main.png</path>
+        <x>3</x>
+        <y>2</y>
+      </default>
+      <!--<de type="string">
+        <path>iconsets/Tango/de/bold_de.gif</path>
+      </de>-->
+    </icon>
+    <icon id="italic">
+      <default type="map">
+        <path>iconsets/Tango/ed_buttons_main.png</path>
+        <x>2</x>
+        <y>2</y>
+      </default>
+    </icon>
+    <icon id="underline">
+      <default type="map">
+        <path>iconsets/Tango/ed_buttons_main.png</path>
+        <x>2</x>
+        <y>0</y>
+      </default>
+    </icon>
+    <icon id="strikethrough">
+      <default type="map">
+        <path>iconsets/Tango/ed_buttons_main.png</path>
+        <x>3</x>
+        <y>0</y>
+      </default>
+    </icon>
+    <icon id="subscript">
+      <default type="map">
+        <path>iconsets/Tango/ed_buttons_main.png</path>
+        <x>3</x>
+        <y>1</y>
+      </default>
+    </icon>
+    <icon id="superscript">
+      <default type="map">
+        <path>iconsets/Tango/ed_buttons_main.png</path>
+        <x>2</x>
+        <y>1</y>
+      </default>
+    </icon>
+    <icon id="undo">
+      <default type="map">
+        <path>iconsets/Tango/ed_buttons_main.png</path>
+        <x>4</x>
+        <y>2</y>
+      </default>
+    </icon>
+    <icon id="redo">
+      <default type="map">
+        <path>iconsets/Tango/ed_buttons_main.png</path>
+        <x>5</x>
+        <y>2</y>
+      </default>
+    </icon>
+    <icon id="cut">
+      <default type="map">
+        <path>iconsets/Tango/ed_buttons_main.png</path>
+        <x>5</x>
+        <y>0</y>
+      </default>
+    </icon>
+    <icon id="copy">
+      <default type="map">
+        <path>iconsets/Tango/ed_buttons_main.png</path>
+        <x>4</x>
+        <y>0</y>
+      </default>
+    </icon>
+    <icon id="paste">
+      <default type="map">
+        <path>iconsets/Tango/ed_buttons_main.png</path>
+        <x>4</x>
+        <y>1</y>
+      </default>
+    </icon>
+    <icon id="forecolor">
+      <default type="map">
+        <path>iconsets/Tango/ed_buttons_main.png</path>
+        <x>3</x>
+        <y>3</y>
+      </default>
+    </icon>
+    <icon id="hilitecolor">
+      <default type="map">
+        <path>iconsets/Tango/ed_buttons_main.png</path>
+        <x>2</x>
+        <y>3</y>
+      </default>
+    </icon>
+    <icon id="indent">
+      <default type="map">
+        <path>iconsets/Tango/ed_buttons_main.png</path>
+        <x>0</x>
+        <y>2</y>
+      </default>
+    </icon>
+    <icon id="outdent">
+      <default type="map">
+        <path>iconsets/Tango/ed_buttons_main.png</path>
+        <x>1</x>
+        <y>2</y>
+      </default>
+    </icon>
+    <icon id="insertimage">
+      <default type="map">
+        <path>iconsets/Tango/ed_buttons_main.png</path>
+        <x>6</x>
+        <y>3</y>
+      </default>
+    </icon>
+    <icon id="insertorderedlist">
+      <default type="map">
+        <path>iconsets/Tango/ed_buttons_main.png</path>
+        <x>0</x>
+        <y>3</y>
+      </default>
+    </icon>
+    <icon id="insertunorderedlist">
+      <default type="map">
+        <path>iconsets/Tango/ed_buttons_main.png</path>
+        <x>1</x>
+        <y>3</y>
+      </default>
+    </icon>
+    <icon id="justifyleft">
+      <default type="map">
+        <path>iconsets/Tango/ed_buttons_main.png</path>
+        <x>0</x>
+        <y>0</y>
+      </default>
+    </icon>
+    <icon id="justifyfull">
+      <default type="map">
+        <path>iconsets/Tango/ed_buttons_main.png</path>
+        <x>0</x>
+        <y>1</y>
+      </default>
+    </icon>
+    <icon id="justifycenter">
+      <default type="map">
+        <path>iconsets/Tango/ed_buttons_main.png</path>
+        <x>1</x>
+        <y>1</y>
+      </default>
+    </icon>
+    <icon id="justifyright">
+      <default type="map">
+        <path>iconsets/Tango/ed_buttons_main.png</path>
+        <x>1</x>
+        <y>0</y>
+      </default>
+    </icon>
+    <icon id="createlink">
+      <default type="map">
+        <path>iconsets/Tango/ed_buttons_main.png</path>
+        <x>6</x>
+        <y>1</y>
+      </default>
+    </icon>
+    <icon id="lefttoright">
+      <default type="map">
+        <path>iconsets/Tango/ed_buttons_main.png</path>
+        <x>0</x>
+        <y>4</y>
+      </default>
+    </icon>
+    <icon id="righttoleft">
+      <default type="map">
+        <path>iconsets/Tango/ed_buttons_main.png</path>
+        <x>1</x>
+        <y>4</y>
+      </default>
+    </icon>
+    <icon id="print">
+      <default type="map">
+        <path>iconsets/Tango/ed_buttons_main.png</path>
+        <x>8</x>
+        <y>1</y>
+      </default>
+    </icon>
+    <icon id="saveas">
+      <default type="map">
+        <path>iconsets/Tango/ed_buttons_main.png</path>
+        <x>9</x>
+        <y>1</y>
+      </default>
+    </icon>
+    <icon id="removeformat">
+      <default type="map">
+        <path>iconsets/Tango/ed_buttons_main.png</path>
+        <x>4</x>
+        <y>4</y>
+      </default>
+    </icon>
+    <icon id="about">
+      <default type="map">
+        <path>iconsets/Tango/ed_buttons_main.png</path>
+        <x>8</x>
+        <y>2</y>
+      </default>
+    </icon>
+    <icon id="showhelp">
+      <default type="map">
+        <path>iconsets/Tango/ed_buttons_main.png</path>
+        <x>9</x>
+        <y>2</y>
+      </default>
+    </icon>
+    <icon id="fullscreen">
+      <default type="map">
+        <path>iconsets/Tango/ed_buttons_main.png</path>
+        <x>8</x>
+        <y>0</y>
+      </default>
+    </icon>
+    <icon id="fullscreenrestore">
+      <default type="map">
+        <path>iconsets/Tango/ed_buttons_main.png</path>
+        <x>9</x>
+        <y>0</y>
+      </default>
+    </icon>
+  </icons>
+</iconset>
diff --git a/mailboxes/xinha/images/de/bold.gif b/mailboxes/xinha/images/de/bold.gif
new file mode 100644 (file)
index 0000000..21d286f
Binary files /dev/null and b/mailboxes/xinha/images/de/bold.gif differ
diff --git a/mailboxes/xinha/images/de/italic.gif b/mailboxes/xinha/images/de/italic.gif
new file mode 100644 (file)
index 0000000..0bf7947
Binary files /dev/null and b/mailboxes/xinha/images/de/italic.gif differ
diff --git a/mailboxes/xinha/images/de/underline.gif b/mailboxes/xinha/images/de/underline.gif
new file mode 100644 (file)
index 0000000..0545489
Binary files /dev/null and b/mailboxes/xinha/images/de/underline.gif differ
diff --git a/mailboxes/xinha/images/ed_about.gif b/mailboxes/xinha/images/ed_about.gif
new file mode 100644 (file)
index 0000000..0f28d40
Binary files /dev/null and b/mailboxes/xinha/images/ed_about.gif differ
diff --git a/mailboxes/xinha/images/ed_align.gif b/mailboxes/xinha/images/ed_align.gif
new file mode 100644 (file)
index 0000000..6c60d50
Binary files /dev/null and b/mailboxes/xinha/images/ed_align.gif differ
diff --git a/mailboxes/xinha/images/ed_align_center.gif b/mailboxes/xinha/images/ed_align_center.gif
new file mode 100644 (file)
index 0000000..75845b7
Binary files /dev/null and b/mailboxes/xinha/images/ed_align_center.gif differ
diff --git a/mailboxes/xinha/images/ed_align_justify.gif b/mailboxes/xinha/images/ed_align_justify.gif
new file mode 100644 (file)
index 0000000..568c595
Binary files /dev/null and b/mailboxes/xinha/images/ed_align_justify.gif differ
diff --git a/mailboxes/xinha/images/ed_align_left.gif b/mailboxes/xinha/images/ed_align_left.gif
new file mode 100644 (file)
index 0000000..8320a2a
Binary files /dev/null and b/mailboxes/xinha/images/ed_align_left.gif differ
diff --git a/mailboxes/xinha/images/ed_align_right.gif b/mailboxes/xinha/images/ed_align_right.gif
new file mode 100644 (file)
index 0000000..bc6f651
Binary files /dev/null and b/mailboxes/xinha/images/ed_align_right.gif differ
diff --git a/mailboxes/xinha/images/ed_blank.gif b/mailboxes/xinha/images/ed_blank.gif
new file mode 100644 (file)
index 0000000..1ea396b
Binary files /dev/null and b/mailboxes/xinha/images/ed_blank.gif differ
diff --git a/mailboxes/xinha/images/ed_buttons_main.gif b/mailboxes/xinha/images/ed_buttons_main.gif
new file mode 100644 (file)
index 0000000..bc1962b
Binary files /dev/null and b/mailboxes/xinha/images/ed_buttons_main.gif differ
diff --git a/mailboxes/xinha/images/ed_buttons_main.png b/mailboxes/xinha/images/ed_buttons_main.png
new file mode 100644 (file)
index 0000000..7f73f65
Binary files /dev/null and b/mailboxes/xinha/images/ed_buttons_main.png differ
diff --git a/mailboxes/xinha/images/ed_charmap.gif b/mailboxes/xinha/images/ed_charmap.gif
new file mode 100644 (file)
index 0000000..289aa7c
Binary files /dev/null and b/mailboxes/xinha/images/ed_charmap.gif differ
diff --git a/mailboxes/xinha/images/ed_clearfonts.gif b/mailboxes/xinha/images/ed_clearfonts.gif
new file mode 100644 (file)
index 0000000..38c52a8
Binary files /dev/null and b/mailboxes/xinha/images/ed_clearfonts.gif differ
diff --git a/mailboxes/xinha/images/ed_color_bg.gif b/mailboxes/xinha/images/ed_color_bg.gif
new file mode 100644 (file)
index 0000000..899f133
Binary files /dev/null and b/mailboxes/xinha/images/ed_color_bg.gif differ
diff --git a/mailboxes/xinha/images/ed_color_fg.gif b/mailboxes/xinha/images/ed_color_fg.gif
new file mode 100644 (file)
index 0000000..292ab87
Binary files /dev/null and b/mailboxes/xinha/images/ed_color_fg.gif differ
diff --git a/mailboxes/xinha/images/ed_copy.gif b/mailboxes/xinha/images/ed_copy.gif
new file mode 100644 (file)
index 0000000..0e440eb
Binary files /dev/null and b/mailboxes/xinha/images/ed_copy.gif differ
diff --git a/mailboxes/xinha/images/ed_custom.gif b/mailboxes/xinha/images/ed_custom.gif
new file mode 100644 (file)
index 0000000..1444030
Binary files /dev/null and b/mailboxes/xinha/images/ed_custom.gif differ
diff --git a/mailboxes/xinha/images/ed_cut.gif b/mailboxes/xinha/images/ed_cut.gif
new file mode 100644 (file)
index 0000000..23fbf80
Binary files /dev/null and b/mailboxes/xinha/images/ed_cut.gif differ
diff --git a/mailboxes/xinha/images/ed_delete.gif b/mailboxes/xinha/images/ed_delete.gif
new file mode 100644 (file)
index 0000000..aff568e
Binary files /dev/null and b/mailboxes/xinha/images/ed_delete.gif differ
diff --git a/mailboxes/xinha/images/ed_format_bold.gif b/mailboxes/xinha/images/ed_format_bold.gif
new file mode 100644 (file)
index 0000000..78686d1
Binary files /dev/null and b/mailboxes/xinha/images/ed_format_bold.gif differ
diff --git a/mailboxes/xinha/images/ed_format_italic.gif b/mailboxes/xinha/images/ed_format_italic.gif
new file mode 100644 (file)
index 0000000..2d3baf2
Binary files /dev/null and b/mailboxes/xinha/images/ed_format_italic.gif differ
diff --git a/mailboxes/xinha/images/ed_format_strike.gif b/mailboxes/xinha/images/ed_format_strike.gif
new file mode 100644 (file)
index 0000000..a5b1429
Binary files /dev/null and b/mailboxes/xinha/images/ed_format_strike.gif differ
diff --git a/mailboxes/xinha/images/ed_format_sub.gif b/mailboxes/xinha/images/ed_format_sub.gif
new file mode 100644 (file)
index 0000000..6c77d74
Binary files /dev/null and b/mailboxes/xinha/images/ed_format_sub.gif differ
diff --git a/mailboxes/xinha/images/ed_format_sup.gif b/mailboxes/xinha/images/ed_format_sup.gif
new file mode 100644 (file)
index 0000000..4ecb9a1
Binary files /dev/null and b/mailboxes/xinha/images/ed_format_sup.gif differ
diff --git a/mailboxes/xinha/images/ed_format_underline.gif b/mailboxes/xinha/images/ed_format_underline.gif
new file mode 100644 (file)
index 0000000..4bc47a1
Binary files /dev/null and b/mailboxes/xinha/images/ed_format_underline.gif differ
diff --git a/mailboxes/xinha/images/ed_help.gif b/mailboxes/xinha/images/ed_help.gif
new file mode 100644 (file)
index 0000000..d5f7d63
Binary files /dev/null and b/mailboxes/xinha/images/ed_help.gif differ
diff --git a/mailboxes/xinha/images/ed_hr.gif b/mailboxes/xinha/images/ed_hr.gif
new file mode 100644 (file)
index 0000000..ec5c778
Binary files /dev/null and b/mailboxes/xinha/images/ed_hr.gif differ
diff --git a/mailboxes/xinha/images/ed_html.gif b/mailboxes/xinha/images/ed_html.gif
new file mode 100644 (file)
index 0000000..026da4e
Binary files /dev/null and b/mailboxes/xinha/images/ed_html.gif differ
diff --git a/mailboxes/xinha/images/ed_image.gif b/mailboxes/xinha/images/ed_image.gif
new file mode 100644 (file)
index 0000000..1af79c3
Binary files /dev/null and b/mailboxes/xinha/images/ed_image.gif differ
diff --git a/mailboxes/xinha/images/ed_indent_less.gif b/mailboxes/xinha/images/ed_indent_less.gif
new file mode 100644 (file)
index 0000000..7dda02a
Binary files /dev/null and b/mailboxes/xinha/images/ed_indent_less.gif differ
diff --git a/mailboxes/xinha/images/ed_indent_more.gif b/mailboxes/xinha/images/ed_indent_more.gif
new file mode 100644 (file)
index 0000000..c34b47e
Binary files /dev/null and b/mailboxes/xinha/images/ed_indent_more.gif differ
diff --git a/mailboxes/xinha/images/ed_killword.gif b/mailboxes/xinha/images/ed_killword.gif
new file mode 100644 (file)
index 0000000..fd934a7
Binary files /dev/null and b/mailboxes/xinha/images/ed_killword.gif differ
diff --git a/mailboxes/xinha/images/ed_left_to_right.gif b/mailboxes/xinha/images/ed_left_to_right.gif
new file mode 100644 (file)
index 0000000..5e95ea5
Binary files /dev/null and b/mailboxes/xinha/images/ed_left_to_right.gif differ
diff --git a/mailboxes/xinha/images/ed_link.gif b/mailboxes/xinha/images/ed_link.gif
new file mode 100644 (file)
index 0000000..76fd537
Binary files /dev/null and b/mailboxes/xinha/images/ed_link.gif differ
diff --git a/mailboxes/xinha/images/ed_list_bullet.gif b/mailboxes/xinha/images/ed_list_bullet.gif
new file mode 100644 (file)
index 0000000..e37e84b
Binary files /dev/null and b/mailboxes/xinha/images/ed_list_bullet.gif differ
diff --git a/mailboxes/xinha/images/ed_list_num.gif b/mailboxes/xinha/images/ed_list_num.gif
new file mode 100644 (file)
index 0000000..630cbfd
Binary files /dev/null and b/mailboxes/xinha/images/ed_list_num.gif differ
diff --git a/mailboxes/xinha/images/ed_overwrite.gif b/mailboxes/xinha/images/ed_overwrite.gif
new file mode 100644 (file)
index 0000000..e7a8914
Binary files /dev/null and b/mailboxes/xinha/images/ed_overwrite.gif differ
diff --git a/mailboxes/xinha/images/ed_paste.gif b/mailboxes/xinha/images/ed_paste.gif
new file mode 100644 (file)
index 0000000..81b53a0
Binary files /dev/null and b/mailboxes/xinha/images/ed_paste.gif differ
diff --git a/mailboxes/xinha/images/ed_print.gif b/mailboxes/xinha/images/ed_print.gif
new file mode 100644 (file)
index 0000000..fb2bf80
Binary files /dev/null and b/mailboxes/xinha/images/ed_print.gif differ
diff --git a/mailboxes/xinha/images/ed_redo.gif b/mailboxes/xinha/images/ed_redo.gif
new file mode 100644 (file)
index 0000000..3d73dfc
Binary files /dev/null and b/mailboxes/xinha/images/ed_redo.gif differ
diff --git a/mailboxes/xinha/images/ed_right_to_left.gif b/mailboxes/xinha/images/ed_right_to_left.gif
new file mode 100644 (file)
index 0000000..9b255bd
Binary files /dev/null and b/mailboxes/xinha/images/ed_right_to_left.gif differ
diff --git a/mailboxes/xinha/images/ed_rmformat.gif b/mailboxes/xinha/images/ed_rmformat.gif
new file mode 100644 (file)
index 0000000..09f102a
Binary files /dev/null and b/mailboxes/xinha/images/ed_rmformat.gif differ
diff --git a/mailboxes/xinha/images/ed_save.gif b/mailboxes/xinha/images/ed_save.gif
new file mode 100644 (file)
index 0000000..82262d0
Binary files /dev/null and b/mailboxes/xinha/images/ed_save.gif differ
diff --git a/mailboxes/xinha/images/ed_save.png b/mailboxes/xinha/images/ed_save.png
new file mode 100644 (file)
index 0000000..881fe5d
Binary files /dev/null and b/mailboxes/xinha/images/ed_save.png differ
diff --git a/mailboxes/xinha/images/ed_saveas.gif b/mailboxes/xinha/images/ed_saveas.gif
new file mode 100644 (file)
index 0000000..4edd988
Binary files /dev/null and b/mailboxes/xinha/images/ed_saveas.gif differ
diff --git a/mailboxes/xinha/images/ed_selectall.gif b/mailboxes/xinha/images/ed_selectall.gif
new file mode 100644 (file)
index 0000000..9acf0a0
Binary files /dev/null and b/mailboxes/xinha/images/ed_selectall.gif differ
diff --git a/mailboxes/xinha/images/ed_show_border.gif b/mailboxes/xinha/images/ed_show_border.gif
new file mode 100644 (file)
index 0000000..42849b7
Binary files /dev/null and b/mailboxes/xinha/images/ed_show_border.gif differ
diff --git a/mailboxes/xinha/images/ed_splitblock.gif b/mailboxes/xinha/images/ed_splitblock.gif
new file mode 100644 (file)
index 0000000..1f1582b
Binary files /dev/null and b/mailboxes/xinha/images/ed_splitblock.gif differ
diff --git a/mailboxes/xinha/images/ed_splitcel.gif b/mailboxes/xinha/images/ed_splitcel.gif
new file mode 100644 (file)
index 0000000..a6e5ab5
Binary files /dev/null and b/mailboxes/xinha/images/ed_splitcel.gif differ
diff --git a/mailboxes/xinha/images/ed_undo.gif b/mailboxes/xinha/images/ed_undo.gif
new file mode 100644 (file)
index 0000000..319242f
Binary files /dev/null and b/mailboxes/xinha/images/ed_undo.gif differ
diff --git a/mailboxes/xinha/images/ed_word_cleaner.gif b/mailboxes/xinha/images/ed_word_cleaner.gif
new file mode 100644 (file)
index 0000000..d9b0759
Binary files /dev/null and b/mailboxes/xinha/images/ed_word_cleaner.gif differ
diff --git a/mailboxes/xinha/images/fr/bold.gif b/mailboxes/xinha/images/fr/bold.gif
new file mode 100644 (file)
index 0000000..8a0f657
Binary files /dev/null and b/mailboxes/xinha/images/fr/bold.gif differ
diff --git a/mailboxes/xinha/images/fr/strikethrough.gif b/mailboxes/xinha/images/fr/strikethrough.gif
new file mode 100644 (file)
index 0000000..5707aef
Binary files /dev/null and b/mailboxes/xinha/images/fr/strikethrough.gif differ
diff --git a/mailboxes/xinha/images/fr/underline.gif b/mailboxes/xinha/images/fr/underline.gif
new file mode 100644 (file)
index 0000000..4ecaf22
Binary files /dev/null and b/mailboxes/xinha/images/fr/underline.gif differ
diff --git a/mailboxes/xinha/images/fullscreen_maximize.gif b/mailboxes/xinha/images/fullscreen_maximize.gif
new file mode 100644 (file)
index 0000000..211c1c5
Binary files /dev/null and b/mailboxes/xinha/images/fullscreen_maximize.gif differ
diff --git a/mailboxes/xinha/images/fullscreen_minimize.gif b/mailboxes/xinha/images/fullscreen_minimize.gif
new file mode 100644 (file)
index 0000000..f679e5a
Binary files /dev/null and b/mailboxes/xinha/images/fullscreen_minimize.gif differ
diff --git a/mailboxes/xinha/images/insert_table.gif b/mailboxes/xinha/images/insert_table.gif
new file mode 100644 (file)
index 0000000..a8f4253
Binary files /dev/null and b/mailboxes/xinha/images/insert_table.gif differ
diff --git a/mailboxes/xinha/images/insertfilelink.gif b/mailboxes/xinha/images/insertfilelink.gif
new file mode 100644 (file)
index 0000000..099f04d
Binary files /dev/null and b/mailboxes/xinha/images/insertfilelink.gif differ
diff --git a/mailboxes/xinha/images/insertmacro.png b/mailboxes/xinha/images/insertmacro.png
new file mode 100644 (file)
index 0000000..3c874be
Binary files /dev/null and b/mailboxes/xinha/images/insertmacro.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/actions/document-new.png b/mailboxes/xinha/images/tango/16x16/actions/document-new.png
new file mode 100644 (file)
index 0000000..4c3efdd
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/actions/document-new.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/actions/document-open.png b/mailboxes/xinha/images/tango/16x16/actions/document-open.png
new file mode 100644 (file)
index 0000000..69dd8d4
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/actions/document-open.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/actions/document-print.png b/mailboxes/xinha/images/tango/16x16/actions/document-print.png
new file mode 100644 (file)
index 0000000..35c37bd
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/actions/document-print.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/actions/document-save.png b/mailboxes/xinha/images/tango/16x16/actions/document-save.png
new file mode 100644 (file)
index 0000000..22ff495
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/actions/document-save.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/actions/edit-copy.png b/mailboxes/xinha/images/tango/16x16/actions/edit-copy.png
new file mode 100644 (file)
index 0000000..8dd48c4
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/actions/edit-copy.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/actions/edit-redo.png b/mailboxes/xinha/images/tango/16x16/actions/edit-redo.png
new file mode 100644 (file)
index 0000000..c3b0df0
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/actions/edit-redo.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/actions/edit-select-all.png b/mailboxes/xinha/images/tango/16x16/actions/edit-select-all.png
new file mode 100644 (file)
index 0000000..f4b0b19
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/actions/edit-select-all.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/actions/edit-undo.png b/mailboxes/xinha/images/tango/16x16/actions/edit-undo.png
new file mode 100644 (file)
index 0000000..8b0fef9
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/actions/edit-undo.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/actions/folder-new.png b/mailboxes/xinha/images/tango/16x16/actions/folder-new.png
new file mode 100644 (file)
index 0000000..628f4d5
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/actions/folder-new.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/actions/format-direction-left-to-right.png b/mailboxes/xinha/images/tango/16x16/actions/format-direction-left-to-right.png
new file mode 100755 (executable)
index 0000000..a880812
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/actions/format-direction-left-to-right.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/actions/format-direction-right-to-left.png b/mailboxes/xinha/images/tango/16x16/actions/format-direction-right-to-left.png
new file mode 100755 (executable)
index 0000000..9a2b7b4
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/actions/format-direction-right-to-left.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/actions/format-indent-less.png b/mailboxes/xinha/images/tango/16x16/actions/format-indent-less.png
new file mode 100644 (file)
index 0000000..1787a7f
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/actions/format-indent-less.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/actions/format-indent-more.png b/mailboxes/xinha/images/tango/16x16/actions/format-indent-more.png
new file mode 100644 (file)
index 0000000..6bad6bb
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/actions/format-indent-more.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/actions/format-justify-center.png b/mailboxes/xinha/images/tango/16x16/actions/format-justify-center.png
new file mode 100644 (file)
index 0000000..207dc4c
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/actions/format-justify-center.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/actions/format-justify-fill.png b/mailboxes/xinha/images/tango/16x16/actions/format-justify-fill.png
new file mode 100644 (file)
index 0000000..663cbad
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/actions/format-justify-fill.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/actions/format-justify-left.png b/mailboxes/xinha/images/tango/16x16/actions/format-justify-left.png
new file mode 100644 (file)
index 0000000..d9b40a7
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/actions/format-justify-left.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/actions/format-justify-right.png b/mailboxes/xinha/images/tango/16x16/actions/format-justify-right.png
new file mode 100644 (file)
index 0000000..c301307
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/actions/format-justify-right.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/actions/format-text-background-color.png b/mailboxes/xinha/images/tango/16x16/actions/format-text-background-color.png
new file mode 100644 (file)
index 0000000..857b047
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/actions/format-text-background-color.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/actions/format-text-bold.png b/mailboxes/xinha/images/tango/16x16/actions/format-text-bold.png
new file mode 100644 (file)
index 0000000..c9cb630
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/actions/format-text-bold.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/actions/format-text-color.png b/mailboxes/xinha/images/tango/16x16/actions/format-text-color.png
new file mode 100644 (file)
index 0000000..7362e3e
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/actions/format-text-color.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/actions/format-text-italic.png b/mailboxes/xinha/images/tango/16x16/actions/format-text-italic.png
new file mode 100644 (file)
index 0000000..977ea82
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/actions/format-text-italic.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/actions/format-text-strikethrough.png b/mailboxes/xinha/images/tango/16x16/actions/format-text-strikethrough.png
new file mode 100644 (file)
index 0000000..ccee76e
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/actions/format-text-strikethrough.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/actions/format-text-subscript.png b/mailboxes/xinha/images/tango/16x16/actions/format-text-subscript.png
new file mode 100644 (file)
index 0000000..da1d9e1
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/actions/format-text-subscript.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/actions/format-text-superscript.png b/mailboxes/xinha/images/tango/16x16/actions/format-text-superscript.png
new file mode 100644 (file)
index 0000000..ea87557
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/actions/format-text-superscript.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/actions/format-text-underline.png b/mailboxes/xinha/images/tango/16x16/actions/format-text-underline.png
new file mode 100644 (file)
index 0000000..0c48721
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/actions/format-text-underline.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/actions/go-up.png b/mailboxes/xinha/images/tango/16x16/actions/go-up.png
new file mode 100644 (file)
index 0000000..fa9a7d7
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/actions/go-up.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/actions/insert-link.png b/mailboxes/xinha/images/tango/16x16/actions/insert-link.png
new file mode 100755 (executable)
index 0000000..d6b2ab8
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/actions/insert-link.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/actions/insert-table.png b/mailboxes/xinha/images/tango/16x16/actions/insert-table.png
new file mode 100755 (executable)
index 0000000..80d24eb
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/actions/insert-table.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/actions/toggle-borders.png b/mailboxes/xinha/images/tango/16x16/actions/toggle-borders.png
new file mode 100755 (executable)
index 0000000..a86679f
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/actions/toggle-borders.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/actions/view-fullscreen.png b/mailboxes/xinha/images/tango/16x16/actions/view-fullscreen.png
new file mode 100644 (file)
index 0000000..ffdabd4
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/actions/view-fullscreen.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/actions/view-restore.png b/mailboxes/xinha/images/tango/16x16/actions/view-restore.png
new file mode 100644 (file)
index 0000000..1997ce2
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/actions/view-restore.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/apps/accessories-character-map.png b/mailboxes/xinha/images/tango/16x16/apps/accessories-character-map.png
new file mode 100644 (file)
index 0000000..5dd1124
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/apps/accessories-character-map.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/apps/help-browser.png b/mailboxes/xinha/images/tango/16x16/apps/help-browser.png
new file mode 100644 (file)
index 0000000..f25fc3f
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/apps/help-browser.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/mimetypes/image-x-generic.png b/mailboxes/xinha/images/tango/16x16/mimetypes/image-x-generic.png
new file mode 100644 (file)
index 0000000..68da502
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/mimetypes/image-x-generic.png differ
diff --git a/mailboxes/xinha/images/tango/16x16/places/user-trash.png b/mailboxes/xinha/images/tango/16x16/places/user-trash.png
new file mode 100644 (file)
index 0000000..0e0953c
Binary files /dev/null and b/mailboxes/xinha/images/tango/16x16/places/user-trash.png differ
diff --git a/mailboxes/xinha/images/tango/32x32/apps/internet-web-browser.png b/mailboxes/xinha/images/tango/32x32/apps/internet-web-browser.png
new file mode 100644 (file)
index 0000000..10d2ed4
Binary files /dev/null and b/mailboxes/xinha/images/tango/32x32/apps/internet-web-browser.png differ
diff --git a/mailboxes/xinha/images/tango/32x32/mimetypes/text-html.png b/mailboxes/xinha/images/tango/32x32/mimetypes/text-html.png
new file mode 100644 (file)
index 0000000..a896697
Binary files /dev/null and b/mailboxes/xinha/images/tango/32x32/mimetypes/text-html.png differ
diff --git a/mailboxes/xinha/images/tango/32x32/mimetypes/text-x-generic.png b/mailboxes/xinha/images/tango/32x32/mimetypes/text-x-generic.png
new file mode 100644 (file)
index 0000000..928a679
Binary files /dev/null and b/mailboxes/xinha/images/tango/32x32/mimetypes/text-x-generic.png differ
diff --git a/mailboxes/xinha/images/tango/32x32/mimetypes/x-office-document.png b/mailboxes/xinha/images/tango/32x32/mimetypes/x-office-document.png
new file mode 100644 (file)
index 0000000..daf84b2
Binary files /dev/null and b/mailboxes/xinha/images/tango/32x32/mimetypes/x-office-document.png differ
diff --git a/mailboxes/xinha/images/tango/32x32/places/folder.png b/mailboxes/xinha/images/tango/32x32/places/folder.png
new file mode 100644 (file)
index 0000000..0171b09
Binary files /dev/null and b/mailboxes/xinha/images/tango/32x32/places/folder.png differ
diff --git a/mailboxes/xinha/images/tango/32x32/places/network-server.png b/mailboxes/xinha/images/tango/32x32/places/network-server.png
new file mode 100644 (file)
index 0000000..1d38e4f
Binary files /dev/null and b/mailboxes/xinha/images/tango/32x32/places/network-server.png differ
diff --git a/mailboxes/xinha/images/tango/COPYING b/mailboxes/xinha/images/tango/COPYING
new file mode 100644 (file)
index 0000000..e709d0c
--- /dev/null
@@ -0,0 +1,67 @@
+Creative Commons Attribution-ShareAlike 2.5 License Agreement
+
+CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE.
+
+License
+
+THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
+
+BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
+
+1. Definitions
+
+   1. "Collective Work" means a work, such as a periodical issue, anthology or encyclopedia, in which the Work in its entirety in unmodified form, along with a number of other contributions, constituting separate and independent works in themselves, are assembled into a collective whole. A work that constitutes a Collective Work will not be considered a Derivative Work (as defined below) for the purposes of this License.
+   2. "Derivative Work" means a work based upon the Work or upon the Work and other pre-existing works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which the Work may be recast, transformed, or adapted, except that a work that constitutes a Collective Work will not be considered a Derivative Work for the purpose of this License. For the avoidance of doubt, where the Work is a musical composition or sound recording, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered a Derivative Work for the purpose of this License.
+   3. "Licensor" means the individual or entity that offers the Work under the terms of this License.
+   4. "Original Author" means the individual or entity who created the Work.
+   5. "Work" means the copyrightable work of authorship offered under the terms of this License.
+   6. "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation.
+   7. "License Elements" means the following high-level license attributes as selected by Licensor and indicated in the title of this License: Attribution, ShareAlike.
+
+2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws.
+
+3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below:
+
+   1. to reproduce the Work, to incorporate the Work into one or more Collective Works, and to reproduce the Work as incorporated in the Collective Works;
+   2. to create and reproduce Derivative Works;
+   3. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission the Work including as incorporated in Collective Works;
+   4. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission Derivative Works.
+   5.
+
+      For the avoidance of doubt, where the work is a musical composition:
+         1. Performance Royalties Under Blanket Licenses. Licensor waives the exclusive right to collect, whether individually or via a performance rights society (e.g. ASCAP, BMI, SESAC), royalties for the public performance or public digital performance (e.g. webcast) of the Work.
+         2. Mechanical Rights and Statutory Royalties. Licensor waives the exclusive right to collect, whether individually or via a music rights society or designated agent (e.g. Harry Fox Agency), royalties for any phonorecord You create from the Work ("cover version") and distribute, subject to the compulsory license created by 17 USC Section 115 of the US Copyright Act (or the equivalent in other jurisdictions).
+   6. Webcasting Rights and Statutory Royalties. For the avoidance of doubt, where the Work is a sound recording, Licensor waives the exclusive right to collect, whether individually or via a performance-rights society (e.g. SoundExchange), royalties for the public digital performance (e.g. webcast) of the Work, subject to the compulsory license created by 17 USC Section 114 of the US Copyright Act (or the equivalent in other jurisdictions).
+
+The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. All rights not expressly granted by Licensor are hereby reserved.
+
+4. Restrictions.The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:
+
+   1. You may distribute, publicly display, publicly perform, or publicly digitally perform the Work only under the terms of this License, and You must include a copy of, or the Uniform Resource Identifier for, this License with every copy or phonorecord of the Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Work that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Work itself to be made subject to the terms of this License. If You create a Collective Work, upon notice from any Licensor You must, to the extent practicable, remove from the Collective Work any credit as required by clause 4(c), as requested. If You create a Derivative Work, upon notice from any Licensor You must, to the extent practicable, remove from the Derivative Work any credit as required by clause 4(c), as requested.
+   2. You may distribute, publicly display, publicly perform, or publicly digitally perform a Derivative Work only under the terms of this License, a later version of this License with the same License Elements as this License, or a Creative Commons iCommons license that contains the same License Elements as this License (e.g. Attribution-ShareAlike 2.5 Japan). You must include a copy of, or the Uniform Resource Identifier for, this License or other license specified in the previous sentence with every copy or phonorecord of each Derivative Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Derivative Works that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder, and You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Derivative Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Derivative Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Derivative Work itself to be made subject to the terms of this License.
+   3. If you distribute, publicly display, publicly perform, or publicly digitally perform the Work or any Derivative Works or Collective Works, You must keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or (ii) if the Original Author and/or Licensor designate another party or parties (e.g. a sponsor institute, publishing entity, journal) for attribution in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; the title of the Work if supplied; to the extent reasonably practicable, the Uniform Resource Identifier, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and in the case of a Derivative Work, a credit identifying the use of the Work in the Derivative Work (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). Such credit may be implemented in any reasonable manner; provided, however, that in the case of a Derivative Work or Collective Work, at a minimum such credit will appear where any other comparable authorship credit appears and in a manner at least as prominent as such other comparable authorship credit.
+
+5. Representations, Warranties and Disclaimer
+
+UNLESS OTHERWISE AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE MATERIALS, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
+
+6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. Termination
+
+   1. This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Derivative Works or Collective Works from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License.
+   2. Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above.
+
+8. Miscellaneous
+
+   1. Each time You distribute or publicly digitally perform the Work or a Collective Work, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License.
+   2. Each time You distribute or publicly digitally perform a Derivative Work, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License.
+   3. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+   4. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent.
+   5. This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You.
+
+Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor.
+
+Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, neither party will use the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time.
+
+Creative Commons may be contacted at http://creativecommons.org/.
diff --git a/mailboxes/xinha/images/tidy.gif b/mailboxes/xinha/images/tidy.gif
new file mode 100644 (file)
index 0000000..a881c64
Binary files /dev/null and b/mailboxes/xinha/images/tidy.gif differ
diff --git a/mailboxes/xinha/images/toggle_borders.gif b/mailboxes/xinha/images/toggle_borders.gif
new file mode 100644 (file)
index 0000000..95bc5be
Binary files /dev/null and b/mailboxes/xinha/images/toggle_borders.gif differ
diff --git a/mailboxes/xinha/images/xinha-small-icon.gif b/mailboxes/xinha/images/xinha-small-icon.gif
new file mode 100644 (file)
index 0000000..76a4970
Binary files /dev/null and b/mailboxes/xinha/images/xinha-small-icon.gif differ
diff --git a/mailboxes/xinha/images/xinha_logo.gif b/mailboxes/xinha/images/xinha_logo.gif
new file mode 100644 (file)
index 0000000..346e313
Binary files /dev/null and b/mailboxes/xinha/images/xinha_logo.gif differ
diff --git a/mailboxes/xinha/lang/b5.js b/mailboxes/xinha/lang/b5.js
new file mode 100644 (file)
index 0000000..3550f6e
--- /dev/null
@@ -0,0 +1,29 @@
+// I18N constants -- UTF-8
+// by Dave Lo -- dlo@interactivetools.com
+{
+  "Bold": "粗體",
+  "Italic": "斜體",
+  "Underline": "底線",
+  "Strikethrough": "刪除線",
+  "Subscript": "下標",
+  "Superscript": "上標",
+  "Justify Left": "位置靠左",
+  "Justify Center": "位置居中",
+  "Justify Right": "位置靠右",
+  "Justify Full": "位置左右平等",
+  "Ordered List": "順序清單",
+  "Bulleted List": "無序清單",
+  "Decrease Indent": "減小行前空白",
+  "Increase Indent": "加寬行前空白",
+  "Font Color": "文字顏色",
+  "Background Color": "背景顏色",
+  "Horizontal Rule": "水平線",
+  "Insert Web Link": "插入連結",
+  "Insert/Modify Image": "插入圖形",
+  "Insert Table": "插入表格",
+  "Toggle HTML Source": "切換HTML原始碼",
+  "Enlarge Editor": "放大",
+  "About this editor": "關於 Xinha",
+  "Help using editor": "說明",
+  "Current style": "字體例子"
+}
diff --git a/mailboxes/xinha/lang/ch.js b/mailboxes/xinha/lang/ch.js
new file mode 100644 (file)
index 0000000..25ac840
--- /dev/null
@@ -0,0 +1,56 @@
+// I18N constants
+
+// LANG: "ch", ENCODING: UTF-8
+// Samuel Stone, http://stonemicro.com/
+
+{
+  "Bold": "粗體",
+  "Italic": "斜體",
+  "Underline": "底線",
+  "Strikethrough": "刪線",
+  "Subscript": "下標",
+  "Superscript": "上標",
+  "Justify Left": "靠左",
+  "Justify Center": "居中",
+  "Justify Right": "靠右",
+  "Justify Full": "整齊",
+  "Ordered List": "順序清單",
+  "Bulleted List": "無序清單",
+  "Decrease Indent": "伸排",
+  "Increase Indent": "縮排",
+  "Font Color": "文字顏色",
+  "Background Color": "背景顏色",
+  "Horizontal Rule": "水平線",
+  "Insert Web Link": "插入連結",
+  "Insert/Modify Image": "插入圖像",
+  "Insert Table": "插入表格",
+  "Toggle HTML Source": "切換HTML原始碼",
+  "Enlarge Editor": "伸出編輯系統",
+  "About this editor": "關於 Xinha",
+  "Help using editor": "說明",
+  "Current style": "字體例子",
+  "Undoes your last action": "回原",
+  "Redoes your last action": "重来",
+  "Cut selection": "剪制选项",
+  "Copy selection": "复制选项",
+  "Paste from clipboard": "贴上",
+  "Direction left to right": "从左到右",
+  "Direction right to left": "从右到左",
+  "OK": "好",
+  "Cancel": "取消",
+  "Path": "途徑",
+  "You are in TEXT MODE.  Use the [<>] button to switch back to WYSIWYG.": "你在用純字編輯方式.  用 [<>] 按鈕轉回 所見即所得 編輯方式.",
+  "The full screen mode is known to cause problems with Internet Explorer, due to browser bugs that we weren": "整頁式在Internet Explorer 上常出問題, 因為這是 Internet Explorer 的無名問題,我們無法解決。你可能看見一些垃圾,或遇到其他問題。我們已警告了你. 如果要轉到 正頁式 請按 好.",
+  "The Paste button does not work in Mozilla based web browsers (technical security reasons). Press CTRL-V on your keyboard to paste directly.": "The Paste button does not work in Mozilla based web browsers (technical security reasons). Press CTRL-V on your keyboard to paste directly.",
+  "Cancel": "取消",
+  "Insert/Modify Link": "插入/改寫連結",
+  "New window (_blank)": "新窗户(_blank)",
+  "None (use implicit)": "無(use implicit)",
+  "Other": "其他",
+  "Same frame (_self)": "本匡 (_self)",
+  "Target:": "目標匡:",
+  "Title (tooltip):": "主題 (tooltip):",
+  "Top frame (_top)": "上匡 (_top)",
+  "URL:": "網址:",
+  "You must enter the URL where this link points to": "你必須輸入你要连结的網址"
+}
diff --git a/mailboxes/xinha/lang/cz.js b/mailboxes/xinha/lang/cz.js
new file mode 100644 (file)
index 0000000..8cc7424
--- /dev/null
@@ -0,0 +1,50 @@
+// I18N constants
+
+// LANG: "cz", ENCODING: UTF-8
+// Author: Jiri Löw, <jirilow@jirilow.com>
+
+// 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.)
+
+{
+  "Bold": "Tučně",
+  "Italic": "Kurzíva",
+  "Underline": "Podtržení",
+  "Strikethrough": "Přeškrtnutí",
+  "Subscript": "Dolní index",
+  "Superscript": "Horní index",
+  "Justify Left": "Zarovnat doleva",
+  "Justify Center": "Na střed",
+  "Justify Right": "Zarovnat doprava",
+  "Justify Full": "Zarovnat do stran",
+  "Ordered List": "Seznam",
+  "Bulleted List": "Odrážky",
+  "Decrease Indent": "Předsadit",
+  "Increase Indent": "Odsadit",
+  "Font Color": "Barva písma",
+  "Background Color": "Barva pozadí",
+  "Horizontal Rule": "Vodorovná čára",
+  "Insert Web Link": "Vložit odkaz",
+  "Insert/Modify Image": "Vložit obrázek",
+  "Insert Table": "Vložit tabulku",
+  "Toggle HTML Source": "Přepnout HTML",
+  "Enlarge Editor": "Nové okno editoru",
+  "About this editor": "O této aplikaci",
+  "Help using editor": "Nápověda aplikace",
+  "Current style": "Zvolený styl",
+  "Undoes your last action": "Vrátí poslední akci",
+  "Redoes your last action": "Opakuje poslední akci",
+  "Cut selection": "Vyjmout",
+  "Copy selection": "Kopírovat",
+  "Paste from clipboard": "Vložit",
+  "OK": "OK",
+  "Cancel": "Zrušit",
+  "Path": "Cesta",
+  "You are in TEXT MODE.  Use the [<>] button to switch back to WYSIWYG.": "Jste v TEXTOVÉM REŽIMU.  Použijte tlačítko [<>] pro přepnutí do WYSIWIG."
+}
diff --git a/mailboxes/xinha/lang/da.js b/mailboxes/xinha/lang/da.js
new file mode 100644 (file)
index 0000000..7d3d2fc
--- /dev/null
@@ -0,0 +1,30 @@
+// LANG: "da", ENCODING: UTF-8
+// Author: rene, <rene@laerke.net>
+
+{
+  "Bold": "Fed",
+  "Italic": "Kursiv",
+  "Underline": "Understregning",
+  "Strikethrough": "Overstregning ",
+  "Subscript": "Sænket skrift",
+  "Superscript": "Hævet skrift",
+  "Justify Left": "Venstrejuster",
+  "Justify Center": "Centrer",
+  "Justify Right": "Højrejuster",
+  "Justify Full": "Lige margener",
+  "Ordered List": "Opstilling med tal",
+  "Bulleted List": "Opstilling med punkttegn",
+  "Decrease Indent": "Formindsk indrykning",
+  "Increase Indent": "Forøg indrykning",
+  "Font Color": "Skriftfarve",
+  "Background Color": "Baggrundsfarve",
+  "Horizontal Rule": "Horisontal linie",
+  "Insert Web Link": "Indsæt hyperlink",
+  "Insert/Modify Image": "Indsæt billede",
+  "Insert Table": "Indsæt tabel",
+  "Toggle HTML Source": "HTML visning",
+  "Enlarge Editor": "Vis editor i popup",
+  "About this editor": "Om htmlarea",
+  "Help using editor": "Hjælp",
+  "Current style": "Anvendt stil"
+}
diff --git a/mailboxes/xinha/lang/de.js b/mailboxes/xinha/lang/de.js
new file mode 100644 (file)
index 0000000..f03c664
--- /dev/null
@@ -0,0 +1,171 @@
+// I18N constants
+// LANG: "de", ENCODING: UTF-8
+{
+  "Bold": "Fett",
+  "Italic": "Kursiv",
+  "Underline": "Unterstrichen",
+  "Strikethrough": "Durchgestrichen",
+  "Subscript": "Tiefgestellt",
+  "Superscript": "Hochgestellt",
+  "Justify Left": "Linksbündig",
+  "Justify Center": "Zentriert",
+  "Justify Right": "Rechtsbündig",
+  "Justify Full": "Blocksatz",
+  "Ordered List": "Nummerierte Liste",
+  "Bulleted List": "Aufzählungsliste",
+  "Decrease Indent": "Einzug verkleinern",
+  "Increase Indent": "Einzug vergrößern",
+  "Font Color": "Schriftfarbe",
+  "Background Color": "Hindergrundfarbe",
+  "Horizontal Rule": "Horizontale Linie",
+  "Insert Web Link": "Hyperlink einfügen",
+  "Insert/Modify Image": "Bild einfügen/verändern",
+  "Insert Table": "Tabelle einfügen",
+  "Toggle HTML Source": "HTML Quelltext ein/ausschalten",
+  "Enlarge Editor": "Editor vergrößern",
+  "About this editor": "Über diesen Editor",
+  "Help using editor": "Hilfe",
+  "Current style": "Derzeitiger Stil",
+  "Undoes your last action": "Rückgängig",
+  "Redoes your last action": "Wiederholen",
+  "Cut selection": "Ausschneiden",
+  "Copy selection": "Kopieren",
+  "Paste from clipboard": "Einfügen aus der Zwischenablage",
+  "Direction left to right": "Textrichtung von Links nach Rechts",
+  "Direction right to left": "Textrichtung von Rechts nach Links",
+  "Remove formatting": "Formatierung entfernen",
+  "Select all": "Alles markieren",
+  "Print document": "Dokument ausdrucken",
+  "Clear MSOffice tags": "MSOffice filter",
+  "Clear Inline Font Specifications": "Zeichensatz Formatierungen entfernen",
+  "Would you like to clear font typefaces?": "Wollen Sie Zeichensatztypen entfernen",
+  "Would you like to clear font sizes?": "Wollen Sie Zeichensatzgrößen entfernen",
+  "Would you like to clear font colours?": "Wollen sie Zeichensatzfarben entfernen",
+  "Split Block": "Block teilen",
+  "Toggle Borders": "Tabellenränder ein/ausblenden",
+  "Save as": "speichern unter",
+  "Insert/Overwrite": "Einfügen/Überschreiben",
+  "&mdash; format &mdash;": "&mdash; Format &mdash;",
+  "Heading 1": "Überschrift 1",
+  "Heading 2": "Überschrift 2",
+  "Heading 3": "Überschrift 3",
+  "Heading 4": "Überschrift 4",
+  "Heading 5": "Überschrift 5",
+  "Heading 6": "Überschrift 6",
+  "Normal": "Normal (Absatz)",
+  "Address": "Adresse",
+  "Formatted": "Formatiert",
+
+  //dialogs
+  "OK": "OK",
+  "Cancel": "Abbrechen",
+  "Path": "Pfad",
+  "You are in TEXT MODE.  Use the [<>] button to switch back to WYSIWYG.": "Sie sind im Text-Modus. Benutzen Sie den [<>] Button, um in den visuellen Modus (WYSIWIG) zu gelangen.",
+   "The Paste button does not work in Mozilla based web browsers (technical security reasons). Press CTRL-V on your keyboard to paste directly.": "Aus Sicherheitsgründen dürfen Skripte normalerweise nicht auf Ausschneiden/Kopieren/Einfügen zugreifen. Benutzen Sie bitte die entsprechenden Tastatur-Kommandos (Strg + x/c/v).",
+
+  "You need to select some text before create a link": "Sie müssen einen Text markieren, um einen Link zu erstellen",
+  "Your Document is not well formed. Check JavaScript console for details.": "Ihr Dokument ist in keinem sauberen Format. Benutzen Sie die Javascript Console für weitere Informationen.",
+
+  "Alignment:": "Ausrichtung:",
+  "Not set": "nicht eingestellt",
+  "Left": "links",
+  "Right": "rechts",
+  "Texttop": "oben bündig",
+  "Absmiddle": "mittig",
+  "Baseline": "Grundlinie",
+  "Absbottom": "unten bündig",
+  "Bottom": "unten",
+  "Middle": "zentriert",
+  "Top": "oben",
+
+  "Layout": "Layout",
+  "Spacing": "Abstand",
+  "Horizontal:": "horizontal:",
+  "Horizontal padding": "horizontaler Inhaltsabstand",
+  "Vertical:": "vertikal:",
+  "Vertical padding": "vertikaler Inhaltsabstand",
+  "Border thickness:": "Randstärke:",
+  "Leave empty for no border": "leer lassen für keinen Rand",
+
+  //Insert Link
+  "Insert/Modify Link": "Verknüpfung hinzufügen/ändern",
+  "None (use implicit)": "k.A. (implizit)",
+  "New window (_blank)": "Neues Fenster (_blank)",
+  "Same frame (_self)": "Selber Rahmen (_self)",
+  "Top frame (_top)": "Oberster Rahmen (_top)",
+  "Other": "Anderes",
+  "Target:": "Ziel:",
+  "Title (tooltip):": "Titel (Tooltip):",
+  "URL:": "URL:",
+  "You must enter the URL where this link points to": "Sie müssen eine Ziel-URL angeben für die Verknüpfung angeben",
+
+  // Insert Table
+  "Insert Table": "Tabelle einfügen",
+  "Rows:": "Zeilen:",
+  "Number of rows": "Zeilenanzahl",
+  "Cols:": "Spalten:",
+  "Number of columns": "Spaltenanzahl",
+  "Width:": "Breite:",
+  "Width of the table": "Tabellenbreite",
+  "Percent": "Prozent",
+  "Pixels": "Pixel",
+  "Em": "Geviert",
+  "Width unit": "Größeneinheit",
+  "Fixed width columns": "Spalten mit fester Breite",
+  "Positioning of this table": "Positionierung der Tabelle",
+  "Cell spacing:": "Zellenabstand:",
+  "Space between adjacent cells": "Raum zwischen angrenzenden Zellen",
+  "Cell padding:": "Innenabstand:",
+  "Space between content and border in cell": "Raum zwischen Inhalt und Rand der Zelle",
+  "You must enter a number of rows": "Bitte geben Sie die Anzahl der Zeilen an",
+  "You must enter a number of columns": "Bitte geben Sie die Anzahl der Spalten an",
+
+  // Insert Image
+  "Insert Image": "Bild einfügen",
+  "Image URL:": "Bild URL:",
+  "Enter the image URL here": "Bitte geben sie hier die Bild URL ein",
+  "Preview": "Voransicht",
+  "Preview the image in a new window": "Voransicht des Bildes in einem neuen Fenster",
+  "Alternate text:": "Alternativer Text:",
+  "For browsers that don't support images": "für Browser, die keine Bilder unterstützen",
+  "Positioning of this image": "Positionierung dieses Bildes",
+  "Image Preview:": "Bild Voransicht:",
+  "You must enter the URL": "Bitte geben Sie die URL ein",
+
+/*
+  "button_bold": "de/bold.gif",
+  "button_italic": "de/italic.gif",
+  "button_underline": "de/underline.gif",
+*/
+
+  // Editor Help
+  "Keyboard shortcuts": "Tastaturkürzel",
+  "The editor provides the following key combinations:": "Der Editor unterstützt die folgenden kombinationen:",
+  "new paragraph": "Neuer Absatz(Paragraph)",
+  "insert linebreak": "Harter Umbruch einfügen",
+  "Set format to paragraph": "Setze Formatierung auf Absatz",
+  "Clean content pasted from Word": "Von Word eingefügter Text bereinigen",
+  "Headings": "Überschrift Typ 1 bis 6",
+  "Close": "Schließen",
+
+  // Loading messages
+  "Loading in progress. Please wait!": "Editor wird geladen. Bitte warten !",
+  "Loading plugin $plugin" : "Plugin $plugin wird geladen",
+  "Register plugin $plugin" : "Plugin $plugin wird registriert", 
+  "Constructing object": "Objekt wird generiert",
+  "Generate Xinha framework": "Xinha Framework wird generiert",
+  "Init editor size":"Größe wird berechnet", 
+  "Create Toolbar": "Werkzeugleiste wird generiert",
+  "Create Statusbar" : "Statusleiste wird generiert",
+  "Register right panel" : "Rechtes Panel wird generiert", 
+  "Register left panel" : "Linkes Panel wird generiert", 
+  "Register bottom panel" : "Unteres Panel wird generiert", 
+  "Register top panel" : "Oberes Panel wird generiert", 
+  "Finishing" : "Laden wird abgeschlossen", 
+  
+  // ColorPicker
+  "Click a color..." : "Farbe wählen",
+  "Sample" : "Beispiel",
+  "Web Safe: " : "Web Safe: ",
+  "Color: " : "Farbe: "
+};
\ No newline at end of file
diff --git a/mailboxes/xinha/lang/ee.js b/mailboxes/xinha/lang/ee.js
new file mode 100644 (file)
index 0000000..2534271
--- /dev/null
@@ -0,0 +1,50 @@
+// I18N constants
+
+// LANG: "ee", ENCODING: UTF-8
+// Author: Martin Raie, <albertvill@hot.ee>
+
+// 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.)
+
+{
+  "Bold": "Paks",
+  "Italic": "Kursiiv",
+  "Underline": "Allakriipsutatud",
+  "Strikethrough": "Läbikriipsutatud",
+  "Subscript": "Allindeks",
+  "Superscript": "Ülaindeks",
+  "Justify Left": "Joonda vasakule",
+  "Justify Center": "Joonda keskele",
+  "Justify Right": "Joonda paremale",
+  "Justify Full": "Rööpjoonda",
+  "Ordered List": "Nummerdus",
+  "Bulleted List": "Täpploend",
+  "Decrease Indent": "Vähenda taanet",
+  "Increase Indent": "Suurenda taanet",
+  "Font Color": "Fondi värv",
+  "Background Color": "Tausta värv",
+  "Horizontal Rule": "Horisontaaljoon",
+  "Insert Web Link": "Lisa viit",
+  "Insert/Modify Image": "Lisa pilt",
+  "Insert Table": "Lisa tabel",
+  "Toggle HTML Source": "HTML/tavaline vaade",
+  "Enlarge Editor": "Suurenda toimeti aken",
+  "About this editor": "Teave toimeti kohta",
+  "Help using editor": "Spikker",
+  "Current style": "Kirjastiil",
+  "Undoes your last action": "Võta tagasi",
+  "Redoes your last action": "Tee uuesti",
+  "Cut selection": "Lõika",
+  "Copy selection": "Kopeeri",
+  "Paste from clipboard": "Kleebi",
+  "OK": "OK",
+  "Cancel": "Loobu",
+  "Path": "Path",
+  "You are in TEXT MODE.  Use the [<>] button to switch back to WYSIWYG.": "Sa oled tekstireziimis.  Kasuta nuppu [<>] lülitamaks tagasi WYSIWIG reziimi."
+}
diff --git a/mailboxes/xinha/lang/el.js b/mailboxes/xinha/lang/el.js
new file mode 100644 (file)
index 0000000..bc3df96
--- /dev/null
@@ -0,0 +1,55 @@
+// I18N constants
+
+// LANG: "el", ENCODING: UTF-8
+// Author: Dimitris Glezos, dimitris@glezos.com
+
+{
+  "Bold": "Ξ\88Ξ½Ο\84ΞΏΞ½Ξ±",
+  "Italic": "Πλάγια",
+  "Underline": "Ξ�Ο\80ΞΏΞ³Ο\81Ξ±ΞΌΞΌΞΉΟ\83ΞΌΞ­Ξ½Ξ±",
+  "Strikethrough": "Ξ\94ΞΉΞ±Ξ³Ο\81Ξ±ΞΌΞΌΞ­Ξ½Ξ±",
+  "Subscript": "Ξ\94ΡίκΟ\84Ξ·Ο\82",
+  "Superscript": "Ξ\94ΡίκΟ\84Ξ·Ο\82",
+  "Justify Left": "Ξ£Ο\84ΞΏΞ―Ο\87ΞΉΟ\83Ξ· Ξ\91Ο\81ΞΉΟ\83Ο\84Ξ΅Ο\81Ξ¬",
+  "Justify Center": "Ξ£Ο\84ΞΏΞ―Ο\87ΞΉΟ\83Ξ· Ξ\9aΞ­Ξ½Ο\84Ο\81ΞΏ",
+  "Justify Right": "Ξ£Ο\84ΞΏΞ―Ο\87ΞΉΟ\83Ξ· Ξ\94Ρξιά",
+  "Justify Full": "Ξ Ξ»Ξ�Ο\81Ξ·Ο\82 Ξ£Ο\84ΞΏΞ―Ο\87ΞΉΟ\83Ξ·",
+  "Ordered List": "Ξ\91Ο\81Ξ―ΞΈΞΌΞ·Ο\83Ξ·",
+  "Bulleted List": "Ξ\9aΞΏΟ\85κκίδΡΟ\82",
+  "Decrease Indent": "Ξ\9cΡίΟ\89Ο\83Ξ· Ξ\95Ο\83ΞΏΟ\87Ξ�Ο\82",
+  "Increase Indent": "Ξ\91Ο\8dΞΎΞ·Ο\83Ξ· Ξ\95Ο\83ΞΏΟ\87Ξ�Ο\82",
+  "Font Color": "Ξ§Ο\81Ο\8eΞΌΞ± Ξ\93Ο\81Ξ±ΞΌΞΌΞ±Ο\84ΞΏΟ\83ΡιΟ\81Ξ¬Ο\82",
+  "Background Color": "Ξ§Ο\81Ο\8eΞΌΞ± Ξ¦Ο\8cΞ½Ο\84ΞΏΟ\85",
+  "Horizontal Rule": "Ξ\9fΟ\81ΞΉΞΆΟ\8cΞ½Ο\84ΞΉΞ± Ξ\93Ο\81Ξ±ΞΌΞΌΞ�",
+  "Insert Web Link": "Ξ\95ΞΉΟ\83Ξ±Ξ³Ο\89Ξ³Ξ� Ξ£Ο\85νδέΟ\83ΞΌΞΏΟ\85",
+  "Insert/Modify Image": "Ξ\95ΞΉΟ\83Ξ±Ξ³Ο\89Ξ³Ξ�/Ξ�Ο\81ΞΏΟ\80ΞΏΟ\80ΞΏΞ―Ξ·Ο\83Ξ· Ξ\95ΞΉΞΊΟ\8cΞ½Ξ±Ο\82",
+  "Insert Table": "Ξ\95ΞΉΟ\83Ξ±Ξ³Ο\89Ξ³Ξ� Ξ Ξ―Ξ½Ξ±ΞΊΞ±",
+  "Toggle HTML Source": "Ξ\95ναλλαγΞ� Ο\83Ξ΅/Ξ±Ο\80Ο\8c HTML",
+  "Enlarge Editor": "Ξ\9cΡγένθΟ\85Ξ½Ο\83Ξ· Ξ΅Ο\80ΡξΡΟ\81Ξ³Ξ±Ο\83Ο\84Ξ�",
+  "About this editor": "ΠληΟ\81ΞΏΟ\86ΞΏΟ\81Ξ―Ξ΅Ο\82",
+  "Help using editor": "Ξ\92ΞΏΞ�θΡια",
+  "Current style": "Ξ Ξ±Ο\81Ο\8eΞ½ Ο\83Ο\84Ο\85Ξ»",
+  "Undoes your last action": "Ξ\91Ξ½Ξ±Ξ―Ο\81Ξ΅Ο\83Ξ· Ο\84ΡλΡΟ\85Ο\84Ξ±Ξ―Ξ±Ο\82 Ξ΅Ξ½Ξ­Ο\81γΡιαΟ\82",
+  "Redoes your last action": "Ξ\95Ο\80Ξ±Ξ½Ξ±Ο\86ΞΏΟ\81Ξ¬ Ξ±Ο\80Ο\8c Ξ±Ξ½Ξ±Ξ―Ο\81Ξ΅Ο\83Ξ·",
+  "Cut selection": "Ξ\91Ο\80ΞΏΞΊΞΏΟ\80Ξ�",
+  "Copy selection": "Ξ\91Ξ½Ο\84ΞΉΞ³Ο\81Ξ±Ο\86Ξ�",
+  "Paste from clipboard": "Ξ\95Ο\80ΞΉΞΊΟ\8cλληΟ\83Ξ·",
+  "Direction left to right": "Ξ\9aΞ±Ο\84Ξ΅Ο\8dΞΈΟ\85Ξ½Ο\83Ξ· Ξ±Ο\81ΞΉΟ\83Ο\84Ξ΅Ο\81Ξ¬ Ο\80Ο\81ΞΏΟ\82 Ξ΄Ξ΅ΞΎΞΉΞ¬",
+  "Direction right to left": "Ξ\9aΞ±Ο\84Ξ΅Ο\8dΞΈΟ\85Ξ½Ο\83Ξ· Ξ±Ο\80Ο\8c Ξ΄Ξ΅ΞΎΞΉΞ¬ Ο\80Ο\81ΞΏΟ\82 Ο\84Ξ± Ξ±Ο\81ΞΉΟ\83Ο\84Ξ΅Ο\81Ξ¬",
+  "OK": "OK",
+  "Cancel": "Ξ\91ΞΊΟ\8dΟ\81Ο\89Ο\83Ξ·",
+  "Path": "Ξ\94ΞΉΞ±Ξ΄Ο\81ΞΏΞΌΞ�",
+  "You are in TEXT MODE.  Use the [<>] button to switch back to WYSIWYG.": "Ξ\95Ξ―Ο\83Ο\84Ξ΅ Ο\83Ξ΅ TEXT MODE.  Ξ§Ο\81Ξ·Ο\83ΞΉΞΌΞΏΟ\80ΞΏΞΉΞ�Ο\83Ο\84Ξ΅ Ο\84ΞΏ ΞΊΞΏΟ\85ΞΌΟ\80Ξ― [<>] Ξ³ΞΉΞ± Ξ½Ξ± Ξ΅Ο\80Ξ±Ξ½Ξ­Ο\81ΞΈΞ΅Ο\84Ξ΅ Ο\83Ο\84ΞΏ WYSIWIG.",
+  "The full screen mode is known to cause problems with Internet Explorer, due to browser bugs that we weren": "Ξ\97 ΞΊΞ±Ο\84Ξ¬Ο\83Ο\84Ξ±Ο\83Ξ· Ο\80Ξ»Ξ�Ο\81Ξ·Ο\82 ΞΏΞΈΟ\8cΞ½Ξ·Ο\82 Ξ­Ο\87Ρι Ο\80Ο\81ΞΏΞ²Ξ»Ξ�ΞΌΞ±Ο\84Ξ± ΞΌΞ΅ Ο\84ΞΏΞ½ Internet Explorer, Ξ»Ο\8cΞ³Ο\89 Ο\83Ο\86αλμάΟ\84Ο\89Ξ½ Ο\83Ο\84ΞΏΞ½ Ξ―διο Ο\84ΞΏΞ½ browser.  Ξ\91Ξ½ Ο\84ΞΏ Ο\83Ο\8dΟ\83Ο\84Ξ·ΞΌΞ± Ο\83Ξ±Ο\82 Ξ΅Ξ―Ξ½Ξ±ΞΉ Windows 9x ΞΌΟ\80ΞΏΟ\81Ρί ΞΊΞ±ΞΉ Ξ½Ξ± Ο\87Ο\81ΡιαΟ\83Ο\84ΡίΟ\84Ξ΅ reboot. Ξ\91Ξ½ Ξ΅Ξ―Ο\83Ο\84Ξ΅ Ο\83Ξ―Ξ³ΞΏΟ\85Ο\81ΞΏΞΉ, Ο\80Ξ±Ο\84Ξ�Ο\83Ο\84Ξ΅ Ξ\9fΞ\9a.",
+  "Cancel": "Ξ\91ΞΊΟ\8dΟ\81Ο\89Ο\83Ξ·",
+  "Insert/Modify Link": "Ξ\95ΞΉΟ\83Ξ±Ξ³Ο\89Ξ³Ξ�/Ξ�Ο\81ΞΏΟ\80ΞΏΟ\80ΞΏΞ―Ξ·Ο\83Ξ· Ο\83Ο\8dνδΡΟ\83ΞΌΞΏΟ\85",
+  "New window (_blank)": "Ξ\9dΞ­ΞΏ Ο\80Ξ±Ο\81άθΟ\85Ο\81ΞΏ (_blank)",
+  "None (use implicit)": "Ξ\9aΞ±Ξ½Ξ­Ξ½Ξ± (Ο\87Ο\81Ξ�Ο\83Ξ· Ξ±Ο\80Ο\8cΞ»Ο\85Ο\84ΞΏΟ\85)",
+  "Other": "Ξ\91λλο",
+  "Same frame (_self)": "Ξ\8aδιο frame (_self)",
+  "Target:": "Target:",
+  "Title (tooltip):": "Ξ�Ξ―Ο\84λοΟ\82 (tooltip):",
+  "Top frame (_top)": "ΠάνΟ\89 frame (_top)",
+  "URL:": "URL:",
+  "You must enter the URL where this link points to": "Ξ Ο\81Ξ­Ο\80Ρι Ξ½Ξ± Ξ΅ΞΉΟ\83άγΡΟ\84Ξ΅ Ο\84ΞΏ URL Ο\80ΞΏΟ\85 ΞΏΞ΄Ξ·Ξ³Ξ΅Ξ― Ξ±Ο\85Ο\84Ο\8cΟ\82 ΞΏ Ο\83Ο\8dνδΡΟ\83ΞΌΞΏΟ\82"
+}
diff --git a/mailboxes/xinha/lang/es.js b/mailboxes/xinha/lang/es.js
new file mode 100644 (file)
index 0000000..52486dd
--- /dev/null
@@ -0,0 +1,167 @@
+// I18N constants
+// LANG: "de", ENCODING: UTF-8
+{
+  "Bold": "Negrita",
+  "Italic": "Cursiva",
+  "Underline": "Subrayado",
+  "Strikethrough": "Tachado",
+  "Subscript": "Subíndice",
+  "Superscript": "Superíndice",
+  "Justify Left": "Alinear a la izquierda",
+  "Justify Center": "Alinear al centro",
+  "Justify Right": "Alinear a la derecha",
+  "Justify Full": "Justificar",
+  "Ordered List": "Lista numerada",
+  "Bulleted List": "Lista no numerada",
+  "Decrease Indent": "Reducir sangría",
+  "Increase Indent": "Aumentar sangría",
+  "Font Color": "Color de la fuente",
+  "Background Color": "Color de fondo",
+  "Horizontal Rule": "Regla horizontal",
+  "Insert Web Link": "Insertar enlace web",
+  "Insert/Modify Image": "Insertar/modificar imagen",
+  "Insert Table": "Insertar una tabla",
+  "Toggle HTML Source": "Ver HTML",
+  "Enlarge Editor": "Editor a pantalla completa",
+  "About this editor": "Sobre este Editor",
+  "Help using editor": "Ayuda",
+  "Current style": "Estilo actual",
+  "Undoes your last action": "Deshacer",
+  "Redoes your last action": "Rehacer",
+  "Cut selection": "Cortar",
+  "Copy selection": "Copiar",
+  "Paste from clipboard": "Pegar desde el portapapeles",
+  "Direction left to right": "Dirección de izquierda a derecha",
+  "Direction right to left": "Dirección de derecha a izquierda",
+  "Remove formatting": "Borrar formato",
+  "Select all": "Seleccionar todo",
+  "Print document": "Imprimir documento",
+  "Clear MSOffice tags": "Borrar etiquetas de MSOffice",
+  "Clear Inline Font Specifications": "Borrar las etiquetas de fuente",
+  "Would you like to clear font typefaces?": "¿Desea eliminar las definiciaones de tipo de fuente?",
+  "Would you like to clear font sizes?": "¿Desea eliminar las definiciones de tamaño de fuente?",
+  "Would you like to clear font colours?": "¿Desea eliminar las definiciones de color de fuente?",
+  "Split Block": "Dividir el bloque",
+  "Toggle Borders": "Añadir/Quitar bordes",
+  "Save as": "Guardar como",
+  "Insert/Overwrite": "Insertar/Sobreescribir",
+  "&mdash; format &mdash;": "&mdash; formato &mdash;",
+  "&mdash; font &mdash;": "&mdash; fuente &mdash;",
+  "&mdash; size &mdash;": "&mdash; tamaño &mdash;",
+  "Heading 1": "Cabecera 1",
+  "Heading 2": "Cabecera 2",
+  "Heading 3": "Cabecera 3",
+  "Heading 4": "Cabecera 4",
+  "Heading 5": "Cabecera 5",
+  "Heading 6": "Cabecera 6",
+  "Normal": "Normal",
+  "Address": "Dirección",
+  "Formatted": "Formateado",
+
+  //dialogs
+  "OK": "Aceptar",
+  "Cancel": "Cancelar",
+  "Path": "Ruta",
+  "You are in TEXT MODE.  Use the [<>] button to switch back to WYSIWYG.": "Se encuentra en MODO TEXTO. Use el botón [<>] para cambiar de nuevo al modo WYSIWYG",
+   "The Paste button does not work in Mozilla based web browsers (technical security reasons). Press CTRL-V on your keyboard to paste directly.": "El botón de pegar no funciona en los navegadores de Mozilla por motivos de seguridad. Presione CTRL-V en su teclado para pegarlo directamente",
+
+  "You need to select some text before create a link": "Necesita seleccionar algún texto antes de crear un link",
+  "Your Document is not well formed. Check JavaScript console for details.": "Su documento no está bien formado. Compruebe la consola de JavaScript para obtener más detalles",
+
+  "Alignment:": "Alineación:",
+  "Not set": "No definido",
+  "Left": "Izquierda",
+  "Right": "Derecha",
+  "Texttop": "Texto Superior",
+  "Absmiddle": "Medio Absoluto",
+  "Baseline": "Línea base",
+  "Absbottom": "Inferior absoluto",
+  "Bottom": "Inferior",
+  "Middle": "Medio",
+  "Top": "Superior",
+
+  "Layout": "Distribución",
+  "Spacing": "Espaciado",
+  "Horizontal:": "horizontal:",
+  "Horizontal padding": "Relleno horizontal",
+  "Vertical:": "Vertical:",
+  "Vertical padding": "Relleno Vertical",
+  "Border thickness:": "Tamaño del borde:",
+  "Leave empty for no border": "Vacío si no desea ningún borde",
+
+  //Insert Link
+  "Insert/Modify Link": "Insertar/Modificar un enlace",
+  "None (use implicit)": "Vacío ( usar implícito )",
+  "New window (_blank)": "Nueva ventana (_blank)",
+  "Same frame (_self)": "Mismo marco (_self)",
+  "Top frame (_top)": "Marco superior (_top)",
+  "Other": "Otro",
+  "Target:": "Destino:",
+  "Title (tooltip):": "Título (Tooltip):",
+  "URL:": "URL:",
+  "You must enter the URL where this link points to": "Debe introducir la URL a donde apunta este enlace",
+
+  // Insert Table
+  "Insert Table": "Añadir una tabla",
+  "Rows:": "Filas:",
+  "Number of rows": "Número de filas",
+  "Cols:": "Columnas:",
+  "Number of columns": "Número de columnas",
+  "Width:": "Ancho:",
+  "Width of the table": "Ancho de la tabla",
+  "Percent": "Porcentaje",
+  "Pixels": "Pixels",
+  "Em": "Em",
+  "Width unit": "Unidad de anchura",
+  "Fixed width columns": "Columnas de ancho fijo",
+  "Positioning of this table": "Posición de esta tabla",
+  "Cell spacing:": "Espaciado entre celdas:",
+  "Space between adjacent cells": "Espaciado entre celdas adyacentes",
+  "Cell padding:": "Relleno de celdas:",
+  "Space between content and border in cell": "Escapcio entre el contenido y el borde de la celda",
+  "You must enter a number of rows": "Debe introducir un número de filas",
+  "You must enter a number of columns": "Debe introducir un número de columnas",
+
+  // Insert Image
+  "Insert Image": "Insertar una imagen",
+  "Image URL:": "Imagen URL:",
+  "Enter the image URL here": "",
+  "Preview": "Previsualizar",
+  "Preview the image in a new window": "Previsualizar en una nueva ventana",
+  "Alternate text:": "Texto alternativo:",
+  "For browsers that don't support images": "Para navegadores que no soportan imágenes",
+  "Positioning of this image": "Posición de la imagen",
+  "Image Preview:": "Previsualización de la imagen:",
+  "You must enter the URL": "Debe introducir la URL",
+
+  // Editor Help
+  "Keyboard shortcuts": "Atajos de teclado",
+  "The editor provides the following key combinations:": "El editor proporciona las siguientes combinaciones:",
+  "new paragraph": "Nuevo parrafo",
+  "insert linebreak": "Insertar salto de línea",
+  "Set format to paragraph": "EStablecer el formato a parrafo",
+  "Clean content pasted from Word": "Limpiar el contenido pegado desde Word",
+  "Headings": "Cabeceras",
+  "Close": "Cerrar",
+
+  // Loading messages
+  "Loading in progress. Please wait!": "Carga en proceso. Por favor espere.",
+  "Loading plugin $plugin" : "Cargando el plugin $plugin",
+  "Register plugin $plugin" : "Registro de plugin $plugin", 
+  "Constructing object": "Construyendo objeto",
+  "Generate Xinha framework": "Generar Xinha framework",
+  "Init editor size":"Iniciar el tamaño del editor", 
+  "Create Toolbar": "Crear barra de herramientas",
+  "Create Statusbar" : "Crear barra de estado",
+  "Register right panel" : "Registrar panel derecho", 
+  "Register left panel" : "Registrar panel izquierdo", 
+  "Register bottom panel" : "Registar panel inferior", 
+  "Register top panel" : "Registar panel superior", 
+  "Finishing" : "Finalizando",
+  
+  // ColorPicker
+  "Click a color..." : "Seleccione un color...",
+  "Sample" : "Muestra",
+  "Web Safe: " : "Color web: ",
+  "Color: " : "Color: "
+}
\ No newline at end of file
diff --git a/mailboxes/xinha/lang/eu.js b/mailboxes/xinha/lang/eu.js
new file mode 100644 (file)
index 0000000..ec06ed5
--- /dev/null
@@ -0,0 +1,169 @@
+// I18N constants
+// LANG: "eu", ENCODING: UTF-8
+{
+  "Bold": "Lodia",
+  "Italic": "Etzana",
+  "Underline": "Azpimarratua",
+  "Strikethrough": "Marratua",
+  "Subscript": "Azpindizea",
+  "Superscript": "Goi-indizea",
+  "Justify Left": "Ezkerretara lerrokatu",
+  "Justify Center": "Zentratu",
+  "Justify Right": "Eskuinetara lerrokatu",
+  "Justify Full": "Justifikatu",
+  "Ordered List": "Zerrenda ordenatua",
+  "Bulleted List": "Zerrenda ez ordenatua",
+  "Decrease Indent": "Koska handitu",
+  "Increase Indent": "Koska txikitu",
+  "Font Color": "Testu-kolorea",
+  "Background Color": "Atzeko kolorea",
+  "Horizontal Rule": "Marra horizontala",
+  "Insert Web Link": "Lotura txertatu",
+  "Insert/Modify Image": "Irudia txertatu",
+  "Insert Table": "Taula txertatu",
+  "Toggle HTML Source": "Ikusi dokumentua HTML-n",
+  "Enlarge Editor": "Editorea handitu",
+  "About this editor": "Editoreari buruz...",
+  "Help using editor": "Laguntza",
+  "Current style": "Uneko estiloa",
+  "Undoes your last action": "Desegin",
+  "Redoes your last action": "Berregin",
+  "Cut selection": "Ebaki hautaketa",
+  "Copy selection": "Kopiatu hautaketa",
+  "Paste from clipboard": "Itsatsi arbelean dagoena",
+  "Direction left to right": "Ezkerretik eskuinetarako norabidea",
+  "Direction right to left": "Eskuinetik ezkerretarako norabidea",
+  "Remove formatting": "Formatoa kendu",
+  "Select all": "Dena aukeratu",
+  "Print document": "Dokumentua inprimatu",
+  "Clear MSOffice tags": "MSOffice etiketak ezabatu",
+  "Clear Inline Font Specifications": "Ezabatu testuaren ezaugarriak",
+  "Would you like to clear font typefaces?": "Letra-tipoak ezabatu nahi al dituzu?",
+  "Would you like to clear font sizes?": "Letra-tipoen neurriak ezabatu nahi al dituzu?",
+  "Would you like to clear font colours?": "Letra-tipoen koloreak ezabatu nahi al dituzu?",
+  "Split Block": "Blokea zatitu",
+  "Toggle Borders": "Ertzak trukatu",
+  "Save as": "Gorde honela:",
+  "Insert/Overwrite": "Txertatu/Gainidatzi",
+  "&mdash; format &mdash;": "&mdash; Formatua &mdash;",
+  "Heading 1": "Goiburua 1",
+  "Heading 2": "Goiburua 2",
+  "Heading 3": "Goiburua 3",
+  "Heading 4": "Goiburua 4",
+  "Heading 5": "Goiburua 5",
+  "Heading 6": "Goiburua 6",
+  "Normal": "Normala",
+  "Address": "Helbidea",
+  "Formatted": "Formateatua",
+
+  //dialogs
+  "OK": "Ados",
+  "Cancel": "Utzi",
+  "Path": "Bidea",
+  "You are in TEXT MODE.  Use the [<>] button to switch back to WYSIWYG.": "TESTU eran ari zara. Erabil ezazu [<>] botoia WYSIWIG erara itzultzeko.",
+   "The Paste button does not work in Mozilla based web browsers (technical security reasons). Press CTRL-V on your keyboard to paste directly.": "Itsatsi botoia ez dabil Mozillan oinarritutako nabigatzaileetan (arrazoi teknikoengatik). Sacatu CTRL-V zure teklatuan, zuzenean itsasteko.",
+
+  "You need to select some text before create a link": "Testu-atal bat aukeratu behar duzu lehendabizi, lotura bat sortzeko",
+  "Your Document is not well formed. Check JavaScript console for details.": "Zure dokumentuak ez du formatu zuzena. Begira ezazu JavaScript kontsola xehetasunetarako.",
+
+  "Alignment:": "Lerrokatzea:",
+  "Not set": "Ez gaitua",
+  "Left": "Ezkerretara",
+  "Right": "Eskuinetara",
+  "Texttop": "Irudiaren goialdean",
+  "Absmiddle": "Irudiaren erdian",
+  "Baseline": "Irudiaren oinean",
+  "Absbottom": "Irudiaren behekaldean",
+  "Bottom": "Behean",
+  "Middle": "Erdian",
+  "Top": "Goian",
+
+  "Layout": "Diseinua",
+  "Spacing": "Tartea",
+  "Horizontal:": "Horizontala:",
+  "Horizontal padding": "Betegarri horizontala",
+  "Vertical:": "Bertikala:",
+  "Vertical padding": "Betegarri bertikala",
+  "Border thickness:": "Ertzaren lodiera:",
+  "Leave empty for no border": "Uztazu hutsik ertzik ez sortzeko",
+
+  //Insert Link
+  "Insert/Modify Link": "Lotura txertatu/aldatu",
+  "None (use implicit)": "Bat ere ez (implizituki erabili)",
+  "New window (_blank)": "Lehio berrian (_blank)",
+  "Same frame (_self)": "Frame berean (_self)",
+  "Top frame (_top)": "Goiko frame-an (_top)",
+  "Other": "Beste bat",
+  "Target:": "Helburua:",
+  "Title (tooltip):": "Izenburua (argibidea):",
+  "URL:": "URL-a:",
+  "You must enter the URL where this link points to": "Loturaren helburu den URL-a idatzi behar duzu",
+
+  // Insert Table
+  "Insert Table": "Taula txertatu",
+  "Rows:": "Lerroak:",
+  "Number of rows": "Lerro-kopurua",
+  "Cols:": "Zutabeak:",
+  "Number of columns": "Zutabe-kopurua",
+  "Width:": "Zabalera:",
+  "Width of the table": "Taularen zabalera",
+  "Percent": "Portzentaia",
+  "Pixels": "Pixelak",
+  "Em": "Em",
+  "Width unit": "Zabalera-unitatea",
+  "Fixed width columns": "Zabalera finkodun zutabeak",
+  "Positioning of this table": "Taula honen kokapena",
+  "Cell spacing:": "Gelaxka-tartea:",
+  "Space between adjacent cells": "Gelaxka auzokideen arteko tartea",
+  "Cell padding:": "Gelaxkaren betegarria:",
+  "Space between content and border in cell": "Gelaxkaren edukia eta ertzaren arteko tartea",
+  "You must enter a number of rows": "Lerro-kopurua idatzi behar duzu",
+  "You must enter a number of columns": "Zutabe-kopurua idatzi behar duzu",
+
+  // Insert Image
+  "Insert Image": "Irudia txertatu",
+  "Image URL:": "Irudiaren URL-a:",
+  "Enter the image URL here": "Idatz ezazu irudiaren URL-a hemen",
+  "Preview": "Aurrebista",
+  "Preview the image in a new window": "Aurreikusi irudia beste lehio batean",
+  "Alternate text:": "Testu alternatiboa:",
+  "For browsers that don't support images": "Irudirik onartzen ez duten nabigatzaileentzat",
+  "Positioning of this image": "Irudiaren kokapena",
+  "Image Preview:": "Irudiaren aurrebista:",
+  "You must enter the URL": "URL-a idatzi behar duzu",
+
+  "button_bold": "de/bold.gif",
+  "button_italic": "de/italic.gif",
+  "button_underline": "de/underline.gif",
+
+  // Editor Help
+  "Keyboard shortcuts": "Laster-teklak",
+  "The editor provides the following key combinations:": "Editoreak ondorengo tekla-konbinazioak eskaintzen ditu:",
+  "new paragraph": "Paragrafo berria",
+  "insert linebreak": "Lerro-jauzia txertatu",
+  "Set format to paragraph": "Formatua ezarri paragrafoari",
+  "Clean content pasted from Word": "Word-etik itsatsitako edukia ezabatu",
+  "Headings": "Goiburuak",
+  "Close": "Itxi",
+
+  // Loading messages
+  "Loading in progress. Please wait!": "Kargatzen. Itxaron mesedez",
+  "Loading plugin $plugin" : "$plugin plugina kargatzen",
+  "Register plugin $plugin" : "$plugin plugina erregistratu", 
+  "Constructing object": "Objektua eraikitzen",
+  "Generate Xinha framework": "Xinha Framework sortzen",
+  "Init editor size":"Editorearen hasierako neurria", 
+  "Create Toolbar": "Tresna-barra sortu",
+  "Create Statusbar" : "Egoera-barra sortu",
+  "Register right panel" : "Eskuin-panela erregistratu", 
+  "Register left panel" : "Ezker-panela erregistratu", 
+  "Register bottom panel" : "Beheko panela erregistratu", 
+  "Register top panel" : "Goiko panela erregistratu", 
+  "Finishing" : "Bukatzen", 
+  
+  // ColorPicker
+  "Click a color..." : "Kolore bat aukeratu...",
+  "Sample" : "Lagina",
+  "Web Safe: " : "Web Safe: ",
+  "Color: " : "Kolorea: "
+};
\ No newline at end of file
diff --git a/mailboxes/xinha/lang/fa.js b/mailboxes/xinha/lang/fa.js
new file mode 100644 (file)
index 0000000..5e8e127
--- /dev/null
@@ -0,0 +1,169 @@
+// I18N constants\r
+// LANG: "fa", ENCODING: UTF-8\r
+{\r
+  "Bold": "ضخیم",\r
+  "Italic": "مورب",\r
+  "Underline": "زیر خط",\r
+  "Strikethrough": "رو خط",\r
+  "Subscript": "زیروند",\r
+  "Superscript": "بالاوند",\r
+  "Justify Left": "تراز از چپ",\r
+  "Justify Center": "تراز در وسط",\r
+  "Justify Right": "تراز در راست",\r
+  "Justify Full": "تراز از چپ و راست",\r
+  "Ordered List": "فهرست مرتب",\r
+  "Bulleted List": "فهرست گلوله ای",\r
+  "Decrease Indent": "کاهش سر خط",\r
+  "Increase Indent": "افزایش سر خط",\r
+  "Font Color": "رنگ فلم",\r
+  "Background Color": "رنگ پس زمینه",\r
+  "Horizontal Rule": "خط افقی",\r
+  "Insert Web Link": "افزودن لینک وب",\r
+  "Insert/Modify Image": "افزودن یا ویرایش تصویر",\r
+  "Insert Table": "افزودن جدول",\r
+  "Toggle HTML Source": "مشاهده یا عدم مشاهده متن در قالب HTML",\r
+  "Enlarge Editor": "بزرگ کردن ویرایش گر",\r
+  "About this editor": "درباره این ویرایش گر",\r
+  "Help using editor": "راهنمای استفاده ویرایش گر",\r
+  "Current style": "شیوه کنونی",\r
+  "Undoes your last action": "برگرداندن آخرین عمل",\r
+  "Redoes your last action": "انجام مجدد آخرین عمل",\r
+  "Cut selection": "بریدن انتخاب شده",\r
+  "Copy selection": "کپی انتخاب شده",\r
+  "Paste from clipboard": "چسباندن از تخته کار",\r
+  "Direction left to right": "جهت از چپ به راست",\r
+  "Direction right to left": "جهت از راست به چپ",\r
+  "Remove formatting": "حذف فرمت بندی",\r
+  "Select all": "انتخاب همه",\r
+  "Print document": "چاپ سند",\r
+  "Clear MSOffice tags": "پاک کردن متن از برچسب های MSOffice",\r
+  "Clear Inline Font Specifications": "پاک کردن متن از مشخصات فونت",\r
+  "Would you like to clear font typefaces?": "آیا تمایل دارید ظاهر فلم را پاک کنید؟",\r
+  "Would you like to clear font sizes?": "آیا تمایل دارید اندازه قلم را پاک کنید",\r
+  "Would you like to clear font colours?": "آیا تمایل دارید رنگ قلم را پاک کنید؟",\r
+  "Split Block": "بلاک جداسازی",\r
+  "Toggle Borders": "فعال/غیر فعال کردن لبه ها",\r
+  "Save as": "ذخیره مانند...",\r
+  "Insert/Overwrite": "افزودن/جانویسی",\r
+  "&mdash; format &mdash;": "&mdash; قالب &mdash;",\r
+  "Heading 1": "تیتر 1",\r
+  "Heading 2": "تیتر 2",\r
+  "Heading 3": "تیتر 3",\r
+  "Heading 4": "تیتر 4",\r
+  "Heading 5": "تیتر 5",\r
+  "Heading 6": "تیتر 6",\r
+  "Normal": "معمولی",\r
+  "Address": "آدرس",\r
+  "Formatted": "قالب بندی شده",\r
+\r
+  //dialogs\r
+  "OK": "بله",\r
+  "Cancel": "انصراف",\r
+  "Path": "مسیر",\r
+  "You are in TEXT MODE.  Use the [<>] button to switch back to WYSIWYG.": "در مد متنی هستید.  از دکمه [<>] استفاده نمایید تا به مد WYSIWYG برگردید.",\r
+  "The Paste button does not work in Mozilla based web browsers (technical security reasons). Press CTRL-V on your keyboard to paste directly.": "دکمه چسباندن در مرورگرهای سری Mozilla کار نمی کند (به دلایل فنی امنیتی).برای چسباندن مستقیم ، دکمه CTRL-V را در صفحه کلید بزنید.",\r
+  "Your Document is not well formed. Check JavaScript console for details.": "سند شما بدرستی قالب بندی نشده است. برای اطلاعات بیشتر پایانه نمایش جاوااسکریپت را بررسی کنید.",\r
+\r
+  "Alignment:": "تراز بندی",\r
+  "Not set": "تنظیم نشده",\r
+  "Left": "چپ",\r
+  "Right": "راست",\r
+  "Texttop": "بالای متن",\r
+  "Absmiddle": "دقیقا وسط",\r
+  "Baseline": "ابتدای خط",\r
+  "Absbottom": "دقیقا پایین",\r
+  "Bottom": "پایین",\r
+  "Middle": "وسط",\r
+  "Top": "بالا",\r
+\r
+  "Layout": "لایه",\r
+  "Spacing": "فاصله گذاری",\r
+  "Horizontal:": "افقی",\r
+  "Horizontal padding": "پرکننده افقی",\r
+  "Vertical:": "عمودی",\r
+  "Vertical padding": "پرکننده عمودی",\r
+  "Border thickness:": "ضخامت لبه",\r
+  "Leave empty for no border": "برای بدون لبه خالی رها کن",\r
+\r
+  //Insert Link\r
+  "Insert/Modify Link": "افزودن / ویرایش لینک",\r
+  "None (use implicit)": "هیچکدام (استفاده از بدون شرط)",\r
+  "New window (_blank)": "پنجره جدید (_blank)",\r
+  "Same frame (_self)": "فریم یکسان (_self)",\r
+  "Top frame (_top)": "فریم بالایی (_top)",\r
+  "Other": "سایر",\r
+  "Target:": "هدف",\r
+  "Title (tooltip):": "عنوان (راهنمای یک خطی)",\r
+  "URL:": "URL:",\r
+  "You must enter the URL where this link points to": "باید URLی که این لینک به آن اشاره دارد را وارد کنید",\r
+  "You need to select some text before creating a link": "باید قبل از ساخت لینک ، متنی را انتخاب نمایید",\r
+\r
+  // Insert Table\r
+  "Insert Table": "افزودن جدول",\r
+  "Rows:": "ردیف ها",\r
+  "Number of rows": "تعداد ردیف ها",\r
+  "Cols:": "ستون ها",\r
+  "Number of columns": "تعداد ستون ها",\r
+  "Width:": "طول",\r
+  "Width of the table": "طول جدول",\r
+  "Percent": "درصد",\r
+  "Pixels": "پیکسل ها",\r
+  "Em": "Em",\r
+  "Width unit": "واحد طول",\r
+  "Fixed width columns": "ستون های طول ثابت",\r
+  "Positioning of this table": "موقعیت یابی این جدول",\r
+  "Cell spacing:": "فاصله سلول ها",\r
+  "Space between adjacent cells": "فاصله بین سلول های همجوار",\r
+  "Cell padding:": "پر کننده سلول",\r
+  "Space between content and border in cell": "فاصله بین محتوا و لبه در سلول",\r
+  "You must enter a number of rows": "باید تعداد ردیف ها را وارد کنید",\r
+  "You must enter a number of columns": "باید تعداد ستون ها را وارد کنید",\r
+\r
+  // Insert Image\r
+  "Insert Image": "افزودن تصویر",\r
+  "Image URL:": "URL تصویر",\r
+  "Enter the image URL here": "URL تصویر را اینجا وارد کنید",\r
+  "Preview": "پیش نمایش",\r
+  "Preview the image in a new window": "پیش نمایش تصویر در پنجره ای جدید",\r
+  "Alternate text:": "متن جایگزین",\r
+  "For browsers that don't support images": "برای مرورگرهایی که از تصاویر پشتیبانی نمی کنند",\r
+  "Positioning of this image": "موقعیت یابی تصویر",\r
+  "Image Preview:": "پیش نمایش تصویر",\r
+  "You must enter the URL": "شما باید URL را وارد کنید",\r
+\r
+  // toolbar\r
+  /*\r
+  "button_bold": "fr/bold.gif",\r
+  "button_underline": "fr/underline.gif",\r
+  "button_strikethrough": "fr/strikethrough.gif",\r
+  */\r
+\r
+  // Editor Help\r
+  "Xinha Help": "راهنمای Xinha",\r
+  "Editor Help": "راهنمای ویرایشگر",\r
+  "Keyboard shortcuts": "میانبرهای صفحه کلید",\r
+  "The editor provides the following key combinations:": "ویرایشگر استفاده از کلید های گروهی زیر را مسیر می سازد :",\r
+  "ENTER": "ENTREE",\r
+  "new paragraph": "پاراگراف جدید",\r
+  "SHIFT-ENTER": "SHIFT+ENTREE",\r
+  "insert linebreak": "افزودن جدا کننده خط",\r
+  "Set format to paragraph": "تغییر قالب به پاراگراف",\r
+  "Clean content pasted from Word": "تمیز کردن محتوای چسبانده شده از Word",\r
+  "Headings": "عنوان گذاری",\r
+  "Close": "بستن",\r
+\r
+  // Loading messages\r
+  "Loading in progress. Please wait !": "بارگذاری در حال انجام است. لطفا صبر کنید !",\r
+  "Constructing main object": "ساختن شیء اصلی",\r
+  "Constructing object": "ساختن شیء",\r
+  "Register panel right": "ثبت قاب راست",\r
+  "Register panel left": "ثبت قاب چپ",\r
+  "Register panel top": "ثبت قاب بالا",\r
+  "Register panel bottom": "ثبت قاب پایین",\r
+  "Create Toolbar": "ساخت نوار ابزار",\r
+  "Create StatusBar": "ساخت نوار وضعیت",\r
+  "Generate Xinha object": "تولید شیء Xinha",\r
+  "Init editor size": "مقدار دهی اندازه ویرایشگر",\r
+  "Init IFrame": "مقدار دهی IFrame",\r
+  "Register plugin $plugin": "ثبت پلاگین $plugin"\r
+};
\ No newline at end of file
diff --git a/mailboxes/xinha/lang/fi.js b/mailboxes/xinha/lang/fi.js
new file mode 100644 (file)
index 0000000..e057b9a
--- /dev/null
@@ -0,0 +1,38 @@
+// I18N constants
+
+// LANG: "en", ENCODING: UTF-8
+
+{
+  "Bold": "Lihavoitu",
+  "Italic": "Kursivoitu",
+  "Underline": "Alleviivattu",
+  "Strikethrough": "Yliviivattu",
+  "Subscript": "Alaindeksi",
+  "Superscript": "Yläindeksi",
+  "Justify Left": "Tasaa vasemmat reunat",
+  "Justify Center": "Keskitä",
+  "Justify Right": "Tasaa oikeat reunat",
+  "Justify Full": "Tasaa molemmat reunat",
+  "Ordered List": "Numerointi",
+  "Bulleted List": "Luettelomerkit",
+  "Decrease Indent": "Pienennä sisennystä",
+  "Increase Indent": "Lisää sisennystä",
+  "Font Color": "Fontin väri",
+  "Background Color": "Taustaväri",
+  "Horizontal Rule": "Vaakaviiva",
+  "Insert Web Link": "Lisää linkki",
+  "Insert/Modify Image": "Lisää kuva",
+  "Insert Table": "Lisää taulukko",
+  "Toggle HTML Source": "HTML-lähdekoodi vs WYSIWYG",
+  "Enlarge Editor": "Suurenna editori",
+  "About this editor": "Tietoja editorista",
+  "Help using editor": "Näytä ohje",
+  "Current style": "Nykyinen tyyli",
+  "Undoes your last action": "Peruuta viimeinen toiminto",
+  "Redoes your last action": "Palauta viimeinen toiminto",
+  "Cut selection": "Leikkaa maalattu",
+  "Copy selection": "Kopioi maalattu",
+  "Paste from clipboard": "Liitä leikepyödältä",
+  "OK": "Hyväksy",
+  "Cancel": "Peruuta"
+}
diff --git a/mailboxes/xinha/lang/fr.js b/mailboxes/xinha/lang/fr.js
new file mode 100644 (file)
index 0000000..91d7eba
--- /dev/null
@@ -0,0 +1,171 @@
+// I18N constants
+// LANG: "fr", ENCODING: UTF-8
+{
+  "Bold": "Gras",
+  "Italic": "Italique",
+  "Underline": "Souligné",
+  "Strikethrough": "Barré",
+  "Subscript": "Indice",
+  "Superscript": "Exposant",
+  "Justify Left": "Aligner à gauche",
+  "Justify Center": "Centrer",
+  "Justify Right": "Aligner à droite",
+  "Justify Full": "Justifier",
+  "Ordered List": "Liste numérotée",
+  "Bulleted List": "Liste à puces",
+  "Decrease Indent": "Diminuer le retrait",
+  "Increase Indent": "Augmenter le retrait",
+  "Font Color": "Couleur de police",
+  "Background Color": "Surlignage",
+  "Horizontal Rule": "Ligne horizontale",
+  "Insert Web Link": "Insérer un lien",
+  "Insert/Modify Image": "Insérer / Modifier une image",
+  "Insert Table": "Insérer un tableau",
+  "Toggle HTML Source": "Afficher / Masquer code source",
+  "Enlarge Editor": "Agrandir l'éditeur",
+  "About this editor": "A propos",
+  "Help using editor": "Aide",
+  "Current style": "Style courant",
+  "Undoes your last action": "Annuler la dernière action",
+  "Redoes your last action": "Répéter la dernière action",
+  "Cut selection": "Couper la sélection",
+  "Copy selection": "Copier la sélection",
+  "Paste from clipboard": "Coller depuis le presse-papier",
+  "Direction left to right": "Direction de gauche à droite",
+  "Direction right to left": "Direction de droite à gauche",
+  "Remove formatting": "Supprimer mise en forme",
+  "Select all": "Tout sélectionner",
+  "Print document": "Imprimer document",
+  "Clear MSOffice tags": "Supprimer tags MSOffice",
+  "Clear Inline Font Specifications": "Supprimer paramètres inline de la police",
+  "Would you like to clear font typefaces?": "Voulez-vous supprimer les types ?",
+  "Would you like to clear font sizes?": "Voulez-vous supprimer les tailles ?",
+  "Would you like to clear font colours?": "Voulez-vous supprimer les couleurs ?",
+  "Split Block": "Séparer les blocs",
+  "Toggle Borders": "Afficher / Masquer les bordures",
+  "Save as": "Enregistrer sous",
+  "Insert/Overwrite": "Insertion / Remplacement",
+  "&mdash; format &mdash;": "&mdash; Format &mdash;",
+  "Heading 1": "Titre 1",
+  "Heading 2": "Titre 2",
+  "Heading 3": "Titre 3",
+  "Heading 4": "Titre 4",
+  "Heading 5": "Titre 5",
+  "Heading 6": "Titre 6",
+  "Normal": "Normal",
+  "Address": "Adresse",
+  "Formatted": "Formaté",
+
+  //dialogs
+  "OK": "OK",
+  "Cancel": "Annuler",
+  "Path": "Chemin",
+  "You are in TEXT MODE.  Use the [<>] button to switch back to WYSIWYG.": "Vous êtes en MODE TEXTE.  Appuyez sur le bouton [<>] pour retourner au mode WYSIWYG.",
+  "The Paste button does not work in Mozilla based web browsers (technical security reasons). Press CTRL-V on your keyboard to paste directly.": "Le bouton Coller ne fonctionne pas sur les navigateurs basés sur Mozilla (pour des raisons de sécurité). Pressez CTRL-V au clavier pour coller directement.",
+  "Your Document is not well formed. Check JavaScript console for details.": "Le document est mal formé. Vérifiez la console JavaScript pour plus de détails.",
+
+  "Alignment:": "Alignement",
+  "Not set": "Indéfini",
+  "Left": "Gauche",
+  "Right": "Droite",
+  "Texttop": "Texttop",
+  "Absmiddle": "Absmiddle",
+  "Baseline": "Baseline",
+  "Absbottom": "Absbottom",
+  "Bottom": "Bas",
+  "Middle": "Milieu",
+  "Top": "Haut",
+
+  "Layout": "Mise en page",
+  "Spacing": "Espacement",
+  "Horizontal:": "Horizontal",
+  "Horizontal padding": "Marge horizontale interne",
+  "Vertical:": "Vertical",
+  "Vertical padding": "Marge verticale interne",
+  "Border thickness:": "Epaisseur de bordure",
+  "Leave empty for no border": "Laisser vide pour pas de bordure",
+
+  //Insert Link
+  "Insert/Modify Link": "Insérer / Modifier un lien",
+  "None (use implicit)": "Aucune (implicite)",
+  "New window (_blank)": "Nouvelle fenêtre (_blank)",
+  "Same frame (_self)": "Même frame (_self)",
+  "Top frame (_top)": "Frame principale (_top)",
+  "Other": "Autre",
+  "Target:": "Cible",
+  "Title (tooltip):": "Texte alternatif",
+  "URL:": "URL:",
+  "You must enter the URL where this link points to": "Vous devez entrer l'URL de ce lien",
+  "You need to select some text before creating a link": "Vous devez sélectionner du texte avant de créer un lien",
+
+  // Insert Table
+  "Insert Table": "Insérer un tableau",
+  "Rows:": "Lignes",
+  "Number of rows": "Nombre de lignes",
+  "Cols:": "Colonnes",
+  "Number of columns": "Nombre de colonnes",
+  "Width:": "Largeur",
+  "Width of the table": "Largeur du tableau",
+  "Percent": "Pourcent",
+  "Pixels": "Pixels",
+  "Em": "Em",
+  "Width unit": "Unités de largeur",
+  "Fixed width columns": "Colonnes à taille fixe",
+  "Positioning of this table": "Position du tableau",
+  "Cell spacing:": "Espacement",
+  "Space between adjacent cells": "Espace entre les cellules adjacentes",
+  "Cell padding:": "Marge interne",
+  "Space between content and border in cell": "Espace entre le contenu et la bordure d'une cellule",
+  "You must enter a number of rows": "Vous devez entrer le nombre de lignes",
+  "You must enter a number of columns": "Vous devez entrer le nombre de colonnes",
+
+  // Insert Image
+  "Insert Image": "Insérer une image",
+  "Image URL:": "URL image",
+  "Enter the image URL here": "Entrer l'URL de l'image ici",
+  "Preview": "Prévisualiser",
+  "Preview the image in a new window": "Prévisualiser l'image dans une nouvelle fenêtre",
+  "Alternate text:": "Texte alternatif",
+  "For browsers that don't support images": "Pour les navigateurs qui ne supportent pas les images",
+  "Positioning of this image": "Position de l'image",
+  "Image Preview:": "Prévisualisation",
+  "You must enter the URL": "Vous devez entrer l'URL",
+
+  // toolbar
+/*
+  "button_bold": "fr/bold.gif",
+  "button_underline": "fr/underline.gif",
+  "button_strikethrough": "fr/strikethrough.gif",
+*/
+
+  // Editor Help
+  "Xinha Help": "Aide Xinha",
+  "Editor Help": "Aide de l'éditeur",
+  "Keyboard shortcuts": "Raccourcis clavier",
+  "The editor provides the following key combinations:": "L'éditeur fournit les combinaisons de touches suivantes :",
+  "ENTER": "ENTREE",
+  "new paragraph": "Nouveau paragraphe",
+  "SHIFT-ENTER": "SHIFT+ENTREE",
+  "insert linebreak": "Insère un saut de ligne",
+  "Set format to paragraph": "Applique le format paragraphe",
+  "Clean content pasted from Word": "Nettoyage du contenu copié depuis Word",
+  "Headings": "Titres",
+  "Close": "Fermer",
+
+  // Loading messages
+  "Loading in progress. Please wait!": "Chargement en cours. Veuillez patienter!",
+  "Finishing" : "Chargement bientôt terminé", 
+  "Constructing object": "Construction de l'objet",
+  "Create Toolbar": "Construction de la barre d'icones",
+  "Create Statusbar": "Construction de la barre de status",
+  "Register right panel" : "Enregistrement du panneau droit", 
+  "Register left panel" : "Enregistrement du panneau gauche", 
+  "Register bottom panel" : "Enregistrement du panneau supérieur", 
+  "Register top panel" : "Enregistrement du panneau inférieur", 
+  "Generate Xinha framework": "Génération de Xinha",
+  "Init editor size": "Initialisation de la taille d'édition",
+  "Init IFrame": "Initialisation de l'iframe",
+  "Register plugin $plugin": "Enregistrement du plugin $plugin",
+  "Loading plugin $plugin" : "Chargement du plugin $plugin"
+
+};
\ No newline at end of file
diff --git a/mailboxes/xinha/lang/gb.js b/mailboxes/xinha/lang/gb.js
new file mode 100644 (file)
index 0000000..b4fb5b6
--- /dev/null
@@ -0,0 +1,29 @@
+// I18N constants -- Chinese GB
+// by Dave Lo -- dlo@interactivetools.com
+{
+  "Bold": "粗体",
+  "Italic": "斜体",
+  "Underline": "底线",
+  "Strikethrough": "删除线",
+  "Subscript": "下标",
+  "Superscript": "上标",
+  "Justify Left": "位置靠左",
+  "Justify Center": "位置居中",
+  "Justify Right": "位置靠右",
+  "Justify Full": "位置左右平等",
+  "Ordered List": "顺序清单",
+  "Bulleted List": "无序清单",
+  "Decrease Indent": "减小行前空白",
+  "Increase Indent": "加宽行前空白",
+  "Font Color": "文字颜色",
+  "Background Color": "背景颜色",
+  "Horizontal Rule": "水平线",
+  "Insert Web Link": "插入连结",
+  "Insert/Modify Image": "插入图形",
+  "Insert Table": "插入表格",
+  "Toggle HTML Source": "切换HTML原始码",
+  "Enlarge Editor": "放大",
+  "About this editor": "关於 Xinha",
+  "Help using editor": "说明",
+  "Current style": "字体例子"
+}
diff --git a/mailboxes/xinha/lang/he.js b/mailboxes/xinha/lang/he.js
new file mode 100644 (file)
index 0000000..e39d3fc
--- /dev/null
@@ -0,0 +1,64 @@
+// I18N constants
+
+// LANG: "he", ENCODING: UTF-8
+// Author: Liron Newman, http://www.eesh.net, <plastish at ultinet dot org>
+
+// 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.)
+
+{
+  "Bold": "מודגש",
+  "Italic": "נטוי",
+  "Underline": "קו תחתי",
+  "Strikethrough": "קו אמצע",
+  "Subscript": "כתב עילי",
+  "Superscript": "כתב תחתי",
+  "Justify Left": " ישור לשמאל",
+  "Justify Center": "ישור למרכז",
+  "Justify Right": "ישור לימין",
+  "Justify Full": "ישור לשורה מלאה",
+  "Ordered List": "רשימה ממוספרת",
+  "Bulleted List": "רשימה לא ממוספרת",
+  "Decrease Indent": "הקטן כניסה",
+  "Increase Indent": "הגדל כניסה",
+  "Font Color": "צבע גופן",
+  "Background Color": "צבע רקע",
+  "Horizontal Rule": "קו אנכי",
+  "Insert Web Link": "הכנס היפר-קישור",
+  "Insert/Modify Image": "הכנס/שנה תמונה",
+  "Insert Table": "הכנס טבלה",
+  "Toggle HTML Source": "שנה מצב קוד HTML",
+  "Enlarge Editor": "הגדל את העורך",
+  "About this editor": "אודות עורך זה",
+  "Help using editor": "עזרה לשימוש בעורך",
+  "Current style": "סגנון נוכחי",
+  "Undoes your last action": "מבטל את פעולתך האחרונה",
+  "Redoes your last action": "מבצע מחדש את הפעולה האחרונה שביטלת",
+  "Cut selection": "גזור בחירה",
+  "Copy selection": "העתק בחירה",
+  "Paste from clipboard": "הדבק מהלוח",
+  "Direction left to right": "כיוון משמאל לימין",
+  "Direction right to left": "כיוון מימין לשמאל",
+  "OK": "אישור",
+  "Cancel": "ביטול",
+  "Path": "נתיב עיצוב",
+  "You are in TEXT MODE.  Use the [<>] button to switch back to WYSIWYG.": "אתה במצב טקסט נקי (קוד). השתמש בכפתור [<>] כדי לחזור למצב WYSIWYG (תצוגת עיצוב).",
+  "The full screen mode is known to cause problems with Internet Explorer, due to browser bugs that we weren": "מצב מסך מלא יוצר בעיות בדפדפן Internet Explorer, עקב באגים בדפדפן לא יכולנו לפתור את זה.  את/ה עלול/ה לחוות תצוגת זבל,  בעיות בתפקוד העורך ו/או קריסה של הדפדפן.  אם המערכת שלך היא Windows 9x סביר להניח שתקבל/י ",
+  "Cancel": "ביטול",
+  "Insert/Modify Link": "הוסף/שנה קישור",
+  "New window (_blank)": "חלון חדש (_blank)",
+  "None (use implicit)": "ללא (השתמש ב-frame הקיים)",
+  "Other": "אחר",
+  "Same frame (_self)": "אותו frame (_self)",
+  "Target:": "יעד:",
+  "Title (tooltip):": "כותרת (tooltip):",
+  "Top frame (_top)": "Frame עליון (_top)",
+  "URL:": "URL:",
+  "You must enter the URL where this link points to": "חובה לכתוב URL שאליו קישור זה מצביע"
+}
diff --git a/mailboxes/xinha/lang/hu.js b/mailboxes/xinha/lang/hu.js
new file mode 100644 (file)
index 0000000..a4b1fa4
--- /dev/null
@@ -0,0 +1,64 @@
+// I18N constants
+
+// LANG: "hu", ENCODING: UTF-8
+// Author: Miklós Somogyi, <somogyine@vnet.hu>
+
+// 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.)
+
+{
+  "Bold": "Félkövér",
+  "Italic": "Dőlt",
+  "Underline": "Aláhúzott",
+  "Strikethrough": "Áthúzott",
+  "Subscript": "Alsó index",
+  "Superscript": "Felső index",
+  "Justify Left": "Balra zárt",
+  "Justify Center": "Középre zárt",
+  "Justify Right": "Jobbra zárt",
+  "Justify Full": "Sorkizárt",
+  "Ordered List": "Számozott lista",
+  "Bulleted List": "Számozatlan lista",
+  "Decrease Indent": "Behúzás csökkentése",
+  "Increase Indent": "Behúzás növelése",
+  "Font Color": "Karakterszín",
+  "Background Color": "Háttérszín",
+  "Horizontal Rule": "Elválasztó vonal",
+  "Insert Web Link": "Hiperhivatkozás beszúrása",
+  "Insert/Modify Image": "Kép beszúrása",
+  "Insert Table": "Táblázat beszúrása",
+  "Toggle HTML Source": "HTML forrás be/ki",
+  "Enlarge Editor": "Szerkesztő külön ablakban",
+  "About this editor": "Névjegy",
+  "Help using editor": "Súgó",
+  "Current style": "Aktuális stílus",
+  "Undoes your last action": "Visszavonás",
+  "Redoes your last action": "Újra végrehajtás",
+  "Cut selection": "Kivágás",
+  "Copy selection": "Másolás",
+  "Paste from clipboard": "Beillesztés",
+  "Direction left to right": "Irány balról jobbra",
+  "Direction right to left": "Irány jobbról balra",
+  "OK": "Rendben",
+  "Cancel": "Mégsem",
+  "Path": "Hierarchia",
+  "You are in TEXT MODE.  Use the [<>] button to switch back to WYSIWYG.": "Forrás mód. Visszaváltás [<>] gomb",
+  "The full screen mode is known to cause problems with Internet Explorer, due to browser bugs that we weren": "A teljesképrenyős szerkesztés hibát okozhat Internet Explorer használata esetén, ez a böngésző a hibája, amit nem tudunk kikerülni. Szemetet észlelhet a képrenyőn, illetve néhány funkció hiányozhat és/vagy véletlenszerűen lefagyhat a böngésző. Windows 9x operaciós futtatása esetén elég valószínű, hogy ",
+  "Cancel": "Mégsem",
+  "Insert/Modify Link": "Hivatkozás Beszúrása/Módosítása",
+  "New window (_blank)": "Új ablak (_blank)",
+  "None (use implicit)": "Nincs (use implicit)",
+  "Other": "Más",
+  "Same frame (_self)": "Ugyanabba a keretbe (_self)",
+  "Target:": "Cél:",
+  "Title (tooltip):": "Cím (tooltip):",
+  "Top frame (_top)": "Felső keret (_top)",
+  "URL:": "URL:",
+  "You must enter the URL where this link points to": "Be kell írnia az URL-t, ahova a hivatkozás mutasson"
+}
diff --git a/mailboxes/xinha/lang/it.js b/mailboxes/xinha/lang/it.js
new file mode 100644 (file)
index 0000000..1c92f23
--- /dev/null
@@ -0,0 +1,55 @@
+// I18N constants
+
+// LANG: "it", ENCODING: UTF-8
+// Author: Mattia Landoni, http://www.webpresident.org/
+
+{
+  "Bold": "Grassetto",
+  "Italic": "Corsivo",
+  "Underline": "Sottolineato",
+  "Strikethrough": "Barrato",
+  "Subscript": "Pedice",
+  "Superscript": "Apice",
+  "Justify Left": "Sinistra",
+  "Justify Center": "Centrato",
+  "Justify Right": "Destra",
+  "Justify Full": "Giustificato",
+  "Ordered List": "Lista numerata",
+  "Bulleted List": "Lista non numerata",
+  "Decrease Indent": "Diminuisci indentazione",
+  "Increase Indent": "Aumenta indentazione",
+  "Font Color": "Colore font",
+  "Background Color": "Colore sfondo",
+  "Horizontal Rule": "Righello orizzontale",
+  "Insert Web Link": "Inserisci link",
+  "Insert/Modify Image": "Inserisci/modifica Immagine",
+  "Insert Table": "Inserisci tabella",
+  "Toggle HTML Source": "Visualizza/nascondi sorgente HTML",
+  "Enlarge Editor": "Allarga editor",
+  "About this editor": "Informazioni su Xinha",
+  "Help using editor": "Aiuto",
+  "Current style": "Stile corrente",
+  "Undoes your last action": "Annulla ultima azione",
+  "Redoes your last action": "Ripeti ultima azione",
+  "Cut selection": "Taglia",
+  "Copy selection": "Copia",
+  "Paste from clipboard": "Incolla",
+  "Direction left to right": "Testo da sx a dx",
+  "Direction right to left": "Testo da dx a sx",
+  "OK": "OK",
+  "Cancel": "Annulla",
+  "Path": "Percorso",
+  "You are in TEXT MODE.  Use the [<>] button to switch back to WYSIWYG.": "Sei in MODALITA",
+  "The full screen mode is known to cause problems with Internet Explorer, due to browser bugs that we weren": "E",
+  "Cancel": "Annulla",
+  "Insert/Modify Link": "Inserisci/modifica link",
+  "New window (_blank)": "Nuova finestra (_blank)",
+  "None (use implicit)": "Niente (usa implicito)",
+  "Other": "Altro",
+  "Same frame (_self)": "Stessa frame (_self)",
+  "Target:": "Target:",
+  "Title (tooltip):": "Title (suggerimento):",
+  "Top frame (_top)": "Pagina intera (_top)",
+  "URL:": "URL:",
+  "You must enter the URL where this link points to": "Devi inserire l'indirizzo a cui punta il link"
+}
diff --git a/mailboxes/xinha/lang/ja.js b/mailboxes/xinha/lang/ja.js
new file mode 100644 (file)
index 0000000..dd8adf0
--- /dev/null
@@ -0,0 +1,175 @@
+// I18N constants
+// LANG: "ja", ENCODING: UTF-8N
+
+{
+  "Bold": "太字",
+  "Italic": "斜体",
+  "Underline": "下線",
+  "Strikethrough": "打ち消し線",
+  "Subscript": "下付き添え字",
+  "Superscript": "上付き添え字",
+  "Justify Left": "左寄せ",
+  "Justify Center": "中央寄せ",
+  "Justify Right": "右寄せ",
+  "Justify Full": "均等割付",
+  "Ordered List": "番号付き箇条書き",
+  "Bulleted List": "記号付き箇条書き",
+  "Decrease Indent": "インデント解除",
+  "Increase Indent": "インデント設定",
+  "Font Color": "文字色",
+  "Background Color": "背景色",
+  "Horizontal Rule": "水平線",
+  "Insert Web Link": "リンクの挿入",
+  "Insert/Modify Image": "画像の挿入/修正",
+  "Insert Table": "テーブルを挿入",
+  "Toggle HTML Source": "HTML編集モードを切替",
+  "Enlarge Editor": "エディタを最大化",
+  "About this editor": "バージョン情報",
+  "Help using editor": "ヘルプ",
+  "Current style": "現在のスタイル",
+  "Undoes your last action": "元に戻す",
+  "Redoes your last action": "やり直し",
+  "Cut selection": "切り取り",
+  "Copy selection": "コピー",
+  "Paste from clipboard": "貼り付け",
+  "Direction left to right": "左から右へ",
+  "Direction right to left": "右から左へ",
+  "Remove formatting": "書式削除",
+  "Select all": "すべて選択",
+  "Print document": "印刷",
+  "Clear MSOffice tags": "MSOfficeタグをクリア",
+  "Clear Inline Font Specifications": "インラインフォント指定をクリア",
+  "Would you like to clear font typefaces?": "フォント名をクリアしますか?",
+  "Would you like to clear font sizes?": "サイズをクリアしますか?",
+  "Would you like to clear font colours?": "色をクリアしますか?",
+  "Split Block": "領域分割",
+  "Toggle Borders": "境界線の切替",
+  "Save as": "名前をつけて保存",
+  "Insert/Overwrite": "挿入/上書き",
+  "&mdash; format &mdash;": "&mdash; 書式 &mdash;",
+  "Heading 1": "見出し1",
+  "Heading 2": "見出し2",
+  "Heading 3": "見出し3",
+  "Heading 4": "見出し4",
+  "Heading 5": "見出し5",
+  "Heading 6": "見出し6",
+  "Normal": "標準",
+  "Address": "アドレス",
+  "Formatted": "整形済み",
+  "&mdash; font &mdash;": "&mdash; フォント &mdash;",
+  "&mdash; size &mdash;": "&mdash; サイズ &mdash;",
+  
+  //dialogs
+  "OK": "OK",
+  "Cancel": "中止",
+  "Path": "パス",
+  "You are in TEXT MODE.  Use the [<>] button to switch back to WYSIWYG.": "テキストモードで操作しています。WYSIWYG編集に戻るには[<>]ボタンを使ってください。",
+  "The Paste button does not work in Mozilla based web browsers (technical security reasons). Press CTRL-V on your keyboard to paste directly.": "MozillaベースのWebブラウザでは、貼り付けボタンは機能しません(技術的なセキュリティ上の理由で)。Ctrl+Vキーを押して直接貼り付けてください。",
+  "Your Document is not well formed. Check JavaScript console for details.": "この文書には構文的な問題があります。詳細はJavaScriptコンソールを参照してください。",
+  "You need to select some text before creating a link": "リンクを作成するにはテキストを選択する必要があります",
+
+  "Alignment:": "行揃え:",
+  "Not set": "なし",
+  "Left": "左",
+  "Right": "右",
+  "Texttop": "テキスト上部",
+  "Absmiddle": "中央(絶対的)",
+  "Baseline": "ベースライン",
+  "Absbottom": "下(絶対的)",
+  "Bottom": "下",
+  "Middle": "中央",
+  "Top": "上",
+
+  "Layout": "レイアウト",
+  "Spacing": "間隔",
+  "Horizontal:": "水平:",
+  "Horizontal padding": "水平余白",
+  "Vertical:": "垂直:",
+  "Vertical padding": "垂直余白",
+  "Border thickness:": "境界線の太さ:",
+  "Leave empty for no border": "境界線がない場合は空のままにする",
+
+  //Insert Link
+  "Insert/Modify Link": "リンクの挿入/修正",
+  "None (use implicit)": "なし (デフォルトに任せる)",
+  "New window (_blank)": "新しいウィンドウ (_blank)",
+  "Same frame (_self)": "自己フレーム内 (_self)",
+  "Top frame (_top)": "最上位フレーム (_top)",
+  "Other": "その他",
+  "Target:": "ターゲット:",
+  "Title (tooltip):": "タイトル:",
+  "URL:": "URL:",
+  "You must enter the URL where this link points to": "このリンクが指し示すURLを入力してください",
+
+  // Insert Table
+  "Insert Table": "テーブルの挿入",
+  "Rows:": "行:",
+  "Number of rows": "行数",
+  "Cols:": "列:",
+  "Number of columns": "列数",
+  "Width:": "幅:",
+  "Width of the table": "テーブルの幅",
+  "Percent": "パーセント(%)",
+  "Pixels": "ピクセル(px)",
+  "Em": "相対値(em)",
+  "Width unit": "幅の単位",
+  "Fixed width columns": "列の幅を固定",
+  "Positioning of this table": "このテーブルの配置",
+  "Cell spacing:": "セル間隔:",
+  "Space between adjacent cells": "隣接するセル間の距離",
+  "Cell padding:": "セル余白:",
+  "Space between content and border in cell": "セル内における内容と境界線との距離",
+  "You must enter a number of rows": "行数を入力してください",
+  "You must enter a number of columns": "列数を入力してください",
+
+  // Insert Image
+  "Insert Image": "画像の挿入",
+  "Image URL:": "画像URL:",
+  "Enter the image URL here": "画像のURLをここに入力します",
+  "Preview": "表示",
+  "Preview the image in a new window": "ウィンドウで画像を表示",
+  "Alternate text:": "代替テキスト:",
+  "For browsers that don't support images": "画像表示をサポートしないブラウザに必要です",
+  "Positioning of this image": "画像の配置",
+  "Image Preview:": "画像表示:",
+  "You must enter the URL": "URLを入力する必要があります",
+
+  //"button_bold": "fr/bold.gif",
+  //"button_underline": "fr/underline.gif",
+  //"button_strikethrough": "fr/strikethrough.gif",
+
+  // Editor Help
+  "Xinha Help": "ヘルプ",
+  "Editor Help": "エディタのヘルプ",
+  "Keyboard shortcuts": "キーボードショートカット",
+  "The editor provides the following key combinations:": "エディタは以下のキー操作を提供しています:",
+  "ENTER": "ENTER",
+  "new paragraph": "新規段落",
+  "SHIFT-ENTER": "SHIFT+ENTER",
+  "insert linebreak": "段落内改行の挿入",
+  "Set format to paragraph": "段落書式の設定",
+  "Clean content pasted from Word": "Wordから貼り付けられた内容の清書",
+  "Headings": "見出し",
+  "Close": "閉じる",
+
+  // Loading messages
+  "Loading in progress. Please wait!": "ロード中です。しばらくお待ちください",
+  "Loading plugin $plugin" : "ロード中プラグイン $plugin",
+  "Register plugin $plugin" : "登録中プラグイン $plugin", 
+  "Constructing object": "オブジェクト構築中",
+  "Generate Xinha framework": "Xinhaフレームワーク生成中",
+  "Init editor size":"エディタサイズの初期化", 
+  "Create Toolbar": "ツールバーの作成",
+  "Create Statusbar" : "ステータスバーの作成",
+  "Register right panel" : "登録 右パネル", 
+  "Register left panel" : "登録 左パネル", 
+  "Register bottom panel" : "登録 下パネル", 
+  "Register top panel" : "登録 上パネル", 
+  "Finishing" : "完了",
+  
+  // ColorPicker
+  "Click a color..." : "色をクリック...",
+  "Sample" : "サンプル",
+  "Web Safe: " : "Webセーフ: ",
+  "Color: " : "色: "  
+};
\ No newline at end of file
diff --git a/mailboxes/xinha/lang/lt.js b/mailboxes/xinha/lang/lt.js
new file mode 100644 (file)
index 0000000..ea34009
--- /dev/null
@@ -0,0 +1,53 @@
+// I18N constants
+
+// LANG: "lt", ENCODING: UTF-8
+// Author: Jaroslav Šatkevič, <jaro@akl.lt>
+
+{
+  "Bold": "Paryškinti",
+  "Italic": "Kursyvas",
+  "Underline": "Pabraukti",
+  "Strikethrough": "Perbraukti",
+  "Subscript": "Apatinis indeksas",
+  "Superscript": "Viršutinis indeksas",
+  "Justify Left": "Lygiavimas pagal kairę",
+  "Justify Center": "Lygiavimas pagal centrą",
+  "Justify Right": "Lygiavimas pagal dešinę",
+  "Justify Full": "Lygiuoti pastraipą",
+  "Ordered List": "Numeruotas sąrašas",
+  "Bulleted List": "Suženklintas sąrašas",
+  "Decrease Indent": "Sumažinti paraštę",
+  "Increase Indent": "Padidinti paraštę",
+  "Font Color": "Šrifto spalva",
+  "Background Color": "Fono spalva",
+  "Horizontal Rule": "Horizontali linija",
+  "Insert Web Link": "Įterpti nuorodą",
+  "Insert/Modify Image": "Įterpti paveiksliuką",
+  "Insert Table": "Įterpti lentelę",
+  "Toggle HTML Source": "Perjungti į HTML/WYSIWYG",
+  "Enlarge Editor": "Išplėstas redagavimo ekranas/Enlarge Editor",
+  "About this editor": "Apie redaktorių",
+  "Help using editor": "Pagalba naudojant redaktorių",
+  "Current style": "Dabartinis stilius",
+  "Undoes your last action": "Atšaukia paskutini jūsų veiksmą",
+  "Redoes your last action": "Pakartoja paskutinį atšauktą jūsų veiksmą",
+  "Cut selection": "Iškirpti",
+  "Copy selection": "Kopijuoti",
+  "Paste from clipboard": "Įterpti",
+  "OK": "OK",
+  "Cancel": "Atšaukti",
+  "Path": "Kelias",
+  "You are in TEXT MODE.  Use the [<>] button to switch back to WYSIWYG.": "Jūs esete teksto režime.  Naudokite [<>] mygtuką grįžimui į WYSIWYG.",
+  "The full screen mode is known to cause problems with Internet Explorer, due to browser bugs that we weren": "The full screen mode is known to cause problems with Internet Explorer, due to browser bugs that we weren",
+  "Cancel": "Atšaukti",
+  "Insert/Modify Link": "Idėti/Modifikuoti",
+  "New window (_blank)": "Naujas langas (_blank)",
+  "None (use implicit)": "None (use implicit)",
+  "Other": "Kitas",
+  "Same frame (_self)": "Same frame (_self)",
+  "Target:": "Target:",
+  "Title (tooltip):": "Pavadinimas (tooltip):",
+  "Top frame (_top)": "Top frame (_top)",
+  "URL:": "URL:",
+  "You must enter the URL where this link points to": "Jus privalote nurodyti URL į kuri rodo šitą nuoroda"
+}
diff --git a/mailboxes/xinha/lang/lv.js b/mailboxes/xinha/lang/lv.js
new file mode 100644 (file)
index 0000000..840b4e7
--- /dev/null
@@ -0,0 +1,42 @@
+// I18N constants
+
+// LANG: "lv", ENCODING: UTF-8
+// Author: Mihai Bazon, http://dynarch.com/mishoo
+// Translated by: Janis Klavins, <janis.klavins@devia.lv>
+
+{
+  "Bold": "Trekniem burtiem",
+  "Italic": "Kursîvâ",
+  "Underline": "Pasvîtrots",
+  "Strikethrough": "Pârsvîtrots",
+  "Subscript": "Novietot zem rindas",
+  "Superscript": "Novietot virs rindas",
+  "Justify Left": "Izlîdzinât pa kreisi",
+  "Justify Center": "Izlîdzinât centrâ",
+  "Justify Right": "Izlîdzinât pa labi",
+  "Justify Full": "Izlîdzinât pa visu lapu",
+  "Ordered List": "Numurçts saraksts",
+  "Bulleted List": "Saraksts",
+  "Decrease Indent": "Samazinât atkâpi",
+  "Increase Indent": "Palielinât atkâpi",
+  "Font Color": "Burtu krâsa",
+  "Background Color": "Fona krâsa",
+  "Horizontal Rule": "Horizontâla atdalîtâjsvîtra",
+  "Insert Web Link": "Ievietot hipersaiti",
+  "Insert/Modify Image": "Ievietot attçlu",
+  "Insert Table": "Ievietot tabulu",
+  "Toggle HTML Source": "Skatît HTML kodu",
+  "Enlarge Editor": "Palielinât Rediìçtâju",
+  "About this editor": "Par ðo rediìçtâju",
+  "Help using editor": "Rediìçtâja palîgs",
+  "Current style": "Patreizçjais stils",
+  "Undoes your last action": "Atcelt pçdçjo darbîbu",
+  "Redoes your last action": "Atkârtot pçdçjo darbîbu",
+  "Cut selection": "Izgriezt iezîmçto",
+  "Copy selection": "Kopçt iezîmçto",
+  "Paste from clipboard": "Ievietot iezîmçto",
+  "OK": "Labi",
+  "Cancel": "Atcelt",
+  "Path": "Ceïð",
+  "You are in TEXT MODE.  Use the [<>] button to switch back to WYSIWYG.": "Jûs patlaban darbojaties TEKSTA REÞÎMÂ. Lai pârietu atpakaï uz GRAFISKO REÞÎMU (WYSIWIG), lietojiet [<>] pogu."
+}
diff --git a/mailboxes/xinha/lang/nb.js b/mailboxes/xinha/lang/nb.js
new file mode 100644 (file)
index 0000000..0694379
--- /dev/null
@@ -0,0 +1,78 @@
+// I18N constants
+
+// LANG: "nb", ENCODING: UTF-8
+
+// - translated by ses<ses@online.no>
+// Additional translations by Håvard Wigtil <havardw@extend.no>
+// Additional translations by Kim Steinhaug <kim@steinhaug.com>
+
+{
+  "Bold": "Fet",
+  "Italic": "Kursiv",
+  "Underline": "Understreket",
+  "Strikethrough": "Gjennomstreket",
+  "Subscript": "Nedsenket",
+  "Superscript": "Opphøyet",
+  "Justify Left": "Venstrejuster",
+  "Justify Center": "Midtjuster",
+  "Justify Right": "Høyrejuster",
+  "Justify Full": "Blokkjuster",
+  "Ordered List": "Nummerert liste",
+  "Bulleted List": "Punktliste",
+  "Decrease Indent": "Reduser innrykk",
+  "Increase Indent": "Øke innrykk",
+  "Font Color": "Tekstfarge",
+  "Background Color": "Bakgrundsfarge",
+  "Horizontal Rule": "Vannrett linje",
+  "Insert Web Link": "Lag lenke",
+  "Insert/Modify Image": "Sett inn bilde",
+  "Insert Table": "Sett inn tabell",
+  "Toggle HTML Source": "Vis kildekode",
+  "Enlarge Editor": "Vis i eget vindu",
+  "About this editor": "Om denne editor",
+  "Help using editor": "Hjelp",
+  "Current style": "Nåværende stil",
+  "Undoes your last action": "Angrer siste redigering",
+  "Redoes your last action": "Gjør om siste angring",
+  "Cut selection": "Klipp ut område",
+  "Copy selection": "Kopier område",
+  "Save as": "Lagre som",
+  "Paste from clipboard": "Lim inn",
+  "Remove formatting": "Fjern formattering",
+  "Direction left to right": "Fra venstre mot høyre",
+  "Direction right to left": "Fra høyre mot venstre",
+  "Insert/Overwrite": "Sett inn/Overskriv",
+  "OK": "OK",
+  "Cancel": "Avbryt",
+  "Path": "Tekstvelger",
+  "You are in TEXT MODE.  Use the [<>] button to switch back to WYSIWYG.": "Du er i tekstmodus  Klikk på [<>] for å gå tilbake til WYSIWIG.",
+  "The full screen mode is known to cause problems with Internet Explorer, due to browser bugs that we weren": "Visning i eget vindu har kjente problemer med Internet Explorer, på grunn av problemer med denne nettleseren. Mulige problemer er et uryddig skjermbilde, manglende editorfunksjoner og/eller at nettleseren crasher. Hvis du bruker Windows 95 eller Windows 98 er det også muligheter for at Windows will crashe.\n\nTrykk ",
+  "Cancel": "Avbryt",
+  "Insert/Modify Link": "Rediger lenke",
+  "New window (_blank)": "Eget vindu (_blank)",
+  "None (use implicit)": "Ingen (bruk standardinnstilling)",
+  "Other": "Annen",
+  "Same frame (_self)": "Samme ramme (_self)",
+  "Target:": "Mål:",
+  "Title (tooltip):": "Tittel (tooltip):",
+  "Top frame (_top)": "Toppramme (_top)",
+  "URL:": "Adresse:",
+  "You must enter the URL where this link points to": "Du må skrive inn en adresse som denne lenken skal peke til",
+  "Clear Inline Font Specifications": "Fjerne inline font spesifikasjoner",
+  "Would you like to clear font typefaces?": "Ønsker du å fjerne skrifttyper",
+  "Would you like to clear font sizes?": "Ønsker du å fjerne skrift størrelser",
+  "Would you like to clear font colours?": "Ønsker du å fjerne farger på skriften",
+  "Print document": "Skriv ut dokumentet",
+  "Split Block": "Seperasjonsblokk",
+  "Toggle Borders": "Skru av/på hjelpelinjer på tabeller",
+  "Select all": "Merk alt",
+  // Loading messages
+  "Loading in progress. Please wait !": "WYSIWYG laster, vennligst vent!",
+  "Constructing main object": "Vennligst vent",
+  "Create Toolbar": "Lag verktøylinje",
+  "Register panel right": "Registrer høyrepanel",
+  "Register panel left": "Registrer venstrepanel",
+  "Register panel top": "Registrer toppanel",
+  "Register panel bottom": "Registrer bunnpanel"
+
+};
diff --git a/mailboxes/xinha/lang/nl.js b/mailboxes/xinha/lang/nl.js
new file mode 100644 (file)
index 0000000..13042ca
--- /dev/null
@@ -0,0 +1,64 @@
+// I18N constants
+
+// LANG: "nl", ENCODING: UTF-8
+// Author: Michel Weegeerink (info@mmc-shop.nl), http://mmc-shop.nl
+
+// 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.)
+
+{
+  "Bold": "Vet",
+  "Italic": "Cursief",
+  "Underline": "Onderstrepen",
+  "Strikethrough": "Doorhalen",
+  "Subscript": "Subscript",
+  "Superscript": "Superscript",
+  "Justify Left": "Links uitlijnen",
+  "Justify Center": "Centreren",
+  "Justify Right": "Rechts uitlijnen",
+  "Justify Full": "Uitvullen",
+  "Ordered List": "Nummering",
+  "Bulleted List": "Opsommingstekens",
+  "Decrease Indent": "Inspringing verkleinen",
+  "Increase Indent": "Inspringing vergroten",
+  "Font Color": "Tekstkleur",
+  "Background Color": "Achtergrondkleur",
+  "Horizontal Rule": "Horizontale lijn",
+  "Insert Web Link": "Hyperlink invoegen/aanpassen",
+  "Insert/Modify Image": "Afbeelding invoegen/aanpassen",
+  "Insert Table": "Tabel invoegen",
+  "Toggle HTML Source": "HTML broncode",
+  "Enlarge Editor": "Vergroot Editor",
+  "About this editor": "Over deze editor",
+  "Help using editor": "Xinha help",
+  "Current style": "Huidige stijl",
+  "Undoes your last action": "Ongedaan maken",
+  "Redoes your last action": "Herhalen",
+  "Cut selection": "Knippen",
+  "Copy selection": "Kopi?ren",
+  "Paste from clipboard": "Plakken",
+  "Direction left to right": "Tekstrichting links naar rechts",
+  "Direction right to left": "Tekstrichting rechts naar links",
+  "OK": "OK",
+  "Cancel": "Annuleren",
+  "Path": "Pad",
+  "You are in TEXT MODE.  Use the [<>] button to switch back to WYSIWYG.": "Je bent in TEKST-mode. Gebruik de [<>] knop om terug te keren naar WYSIWYG-mode.",
+  "The full screen mode is known to cause problems with Internet Explorer, due to browser bugs that we weren": "Fullscreen-mode veroorzaakt problemen met Internet Explorer door bugs in de webbrowser die we niet kunnen omzeilen. Hierdoor kunnen de volgende effecten optreden: verknoeide teksten, een verlies aan editor-functionaliteit en/of willekeurig vastlopen van de webbrowser. Als u Windows 95 of 98 gebruikt, is het zeer waarschijnlijk dat u een algemene beschermingsfout (",
+  "Cancel": "Annuleren",
+  "Insert/Modify Link": "Hyperlink invoegen/aanpassen",
+  "New window (_blank)": "Nieuw venster (_blank)",
+  "None (use implicit)": "Geen",
+  "Other": "Ander",
+  "Same frame (_self)": "Zelfde frame (_self)",
+  "Target:": "Doel:",
+  "Title (tooltip):": "Titel (tooltip):",
+  "Top frame (_top)": "Bovenste frame (_top)",
+  "URL:": "URL:",
+  "You must enter the URL where this link points to": "Geef de URL in waar de link naar verwijst"
+}
diff --git a/mailboxes/xinha/lang/pl.js b/mailboxes/xinha/lang/pl.js
new file mode 100644 (file)
index 0000000..b5bd5ce
--- /dev/null
@@ -0,0 +1,125 @@
+// I18N constants
+// LANG: "pl", ENCODING: UTF-8
+// translated: Krzysztof Kotowicz, http://www.eskot.krakow.pl/portfolio/, koto@webworkers.pl
+{
+  "Bold": "Pogrubienie",
+  "Italic": "Pochylenie",
+  "Underline": "Podkreślenie",
+  "Strikethrough": "Przekreślenie",
+  "Subscript": "Indeks dolny",
+  "Superscript": "Indeks górny",
+  "Justify Left": "Wyrównaj do lewej",
+  "Justify Center": "Wyśrodkuj",
+  "Justify Right": "Wyrównaj do prawej",
+  "Justify Full": "Wyjustuj",
+  "Ordered List": "Numerowanie",
+  "Bulleted List": "Wypunktowanie",
+  "Decrease Indent": "Zmniejsz wcięcie",
+  "Increase Indent": "Zwiększ wcięcie",
+  "Font Color": "Kolor czcionki",
+  "Background Color": "Kolor tła",
+  "Horizontal Rule": "Linia pozioma",
+  "Insert Web Link": "Wstaw adres sieci Web",
+  "Insert/Modify Image": "Wstaw obraz",
+  "Insert Table": "Wstaw tabelę",
+  "Toggle HTML Source": "Edycja WYSIWYG/w źródle strony",
+  "Enlarge Editor": "Pełny ekran",
+  "About this editor": "Informacje o tym edytorze",
+  "Help using editor": "Pomoc",
+  "Current style": "Obecny styl",
+  "Undoes your last action": "Cofa ostatnio wykonane polecenie",
+  "Redoes your last action": "Ponawia ostatnio wykonane polecenie",
+  "Cut selection": "Wycina zaznaczenie do schowka",
+  "Copy selection": "Kopiuje zaznaczenie do schowka",
+  "Paste from clipboard": "Wkleja zawartość schowka",
+  "Direction left to right": "Kierunek tekstu lewo-prawo",
+  "Direction right to left": "Kierunek tekstu prawo-lewo",
+  "Remove formatting": "Usuń formatowanie",
+  "Select all": "Zaznacz wszystko",
+  "Print document": "Drukuj dokument",
+  "Clear MSOffice tags": "Wyczyść tagi MSOffice",
+  "Clear Inline Font Specifications": "Wycisz bezpośrednie przypisania czcionek",
+  "Split Block": "Podziel blok",
+  "Toggle Borders": "Włącz / wyłącz ramki",
+
+  "&mdash; format &mdash;": "&mdash; Format &mdash;",
+  "Heading 1": "Nagłówek 1",
+  "Heading 2": "Nagłówek 2",
+  "Heading 3": "Nagłówek 3",
+  "Heading 4": "Nagłówek 4",
+  "Heading 5": "Nagłówek 5",
+  "Heading 6": "Nagłówek 6",
+  "Normal": "Normalny",
+  "Address": "Adres",
+  "Formatted": "Preformatowany",
+
+  //dialogs
+  "OK": "OK",
+  "Cancel": "Anuluj",
+  "Path": "Ścieżka",
+  "You are in TEXT MODE.  Use the [<>] button to switch back to WYSIWYG.": "Jesteś w TRYBIE TEKSTOWYM. Użyj przycisku [<>], aby przełączyć się na tryb WYSIWYG.",
+  "The Paste button does not work in Mozilla based web browsers (technical security reasons). Press CTRL-V on your keyboard to paste directly.": "Przycisk Wklej nie działa w przeglądarkach Mozilla z uwagi na ustawienia bezpieczeństwa. Naciśnij CRTL-V, aby wkleić zawartość schowka.",
+
+  "Alignment:": "Wyrównanie:",
+  "Not set": "Nie ustawione",
+  "Left": "Do lewej",
+  "Right": "Do prawej",
+  "Texttop": "Góra tekstu",
+  "Absmiddle": "Abs. środek",
+  "Baseline": "Linia bazowa",
+  "Absbottom": "Abs. dół",
+  "Bottom": "Dół",
+  "Middle": "Środek",
+  "Top": "Góra",
+
+  "Layout": "Layout",
+  "Spacing": "Spacjowanie",
+  "Horizontal:": "Poziome:",
+  "Horizontal padding": "Wcięcie poziome",
+  "Vertical:": "Pionowe:",
+  "Vertical padding": "Wcięcie pionowe",
+  "Border thickness:": "Grubość obramowania:",
+  "Leave empty for no border": "Bez ramek - zostaw puste",
+
+  //Insert Link
+  "Insert/Modify Link": "Wstaw/edytuj odnośnik",
+  "None (use implicit)": "Brak",
+  "New window (_blank)": "Nowe okno (_blank)",
+  "Same frame (_self)": "Ta sama ramka (_self)",
+  "Top frame (_top)": "Główna ramka (_top)",
+  "Other": "Inne",
+  "Target:": "Okno docelowe:",
+  "Title (tooltip):": "Tytuł (tooltip):",
+  "URL:": "URL:",
+  "You must enter the URL where this link points to": "Musisz podać URL, na jaki będzie wskazywał odnośnik",
+
+  // Insert Table
+  "Insert Table": "Wstaw tabelę",
+  "Rows:": "Wierszy:",
+  "Number of rows": "Liczba wierszy",
+  "Cols:": "Kolumn:",
+  "Number of columns": "Liczba kolumn",
+  "Width:": "Szerokość:",
+  "Width of the table": "Szerokość tabeli",
+  "Percent": "Procent",
+  "Pixels": "Pikseli",
+  "Em": "Em",
+  "Width unit": "Jednostka",
+  "Fixed width columns": "Kolumny o stałej szerokości",
+  "Positioning of this table": "Pozycjonowanie tabeli",
+  "Cell spacing:": "Odstęp komórek:",
+  "Space between adjacent cells": "Przestrzeń pomiędzy komórkami",
+  "Cell padding:": "Wcięcie komórek:",
+  "Space between content and border in cell": "Przestrzeń między krawędzią a zawartością komórki",
+
+  // Insert Image
+  "Insert Image": "Wstaw obrazek",
+  "Image URL:": "URL obrazka:",
+  "Enter the image URL here": "Podaj URL obrazka",
+  "Preview": "Podgląd",
+  "Preview the image in a new window": "Podgląd obrazka w nowym oknie",
+  "Alternate text:": "Tekst alternatywny:",
+  "For browsers that don't support images": "Dla przeglądarek, które nie obsługują obrazków",
+  "Positioning of this image": "Pozycjonowanie obrazka",
+  "Image Preview:": "Podgląd obrazka:"
+}
diff --git a/mailboxes/xinha/lang/pt_br.js b/mailboxes/xinha/lang/pt_br.js
new file mode 100644 (file)
index 0000000..501396b
--- /dev/null
@@ -0,0 +1,184 @@
+// I18N constants
+//
+// LANG: "pt_br", ENCODING: UTF-8
+// Portuguese Brazilian Translation
+//
+// Initial basic work by Alex Piaz <webmaster@globalmap.com>
+//
+// Author: Marcio Barbosa, <marcio@mpg.com.br>
+// MSN: tomarshall@msn.com - ICQ: 69419933
+// Site: http://www.mpg.com.br
+//
+// Last revision: 06 september 2007
+// Please don´t remove this information
+// If you modify any source, please insert a comment with your name and e-mail
+//
+// Distributed under the same terms as HTMLArea itself.
+// This notice MUST stay intact for use (see license.txt)
+{
+  "About": "Sobre",
+  "About Xinha": "Sobre o Xinha",
+  "Absbottom": "Inferior absoluto",
+  "Absmiddle": "Meio absoluto",
+  "Alignment:": "Alinhamento",
+  "Alternate text:": "Texto alternativo",
+  "Baseline": "Linha base",
+  "Bold": "Negrito",
+  "Border thickness:": "Espessura da borda",
+  "Bottom": "Botão",
+  "CTRL-0 (zero)": "CTRL-0 (zero)",
+  "CTRL-1 .. CTRL-6": "CTRL-1 .. CTRL-6",
+  "CTRL-A": "CTRL-A",
+  "CTRL-B": "CTRL-B",
+  "CTRL-C": "CTRL-C",
+  "CTRL-E": "CTRL-E",
+  "CTRL-I": "CTRL-I",
+  "CTRL-J": "CTRL-J",
+  "CTRL-L": "CTRL-L",
+  "CTRL-N": "CTRL-N",
+  "CTRL-R": "CTRL-R",
+  "CTRL-S": "CTRL-S",
+  "CTRL-U": "CTRL-U",
+  "CTRL-V": "CTRL-V",
+  "CTRL-X": "CTRL-X",
+  "CTRL-Y": "CTRL-Y",
+  "CTRL-Z": "CTRL-Z",
+  "Cancel": "Cancelar",
+  "Cell padding:": "Espaçamento interno da célula:",
+  "Cell spacing:": "Espaçamento da célula:",
+  "Clean content pasted from Word": "Limpar conteúdo copiado do Word",
+  "Close": "Fechar",
+  "Collapse borders:": "Bordas fechadas:",
+  "Cols:": "Colunas:",
+  "Constructing object": "Construindo objeto",
+  "Copy selection": "Copiar seleção",
+  "Create Statusbar": "Criar barra de informação (statusbar)",
+  "Create Toolbar": "Criar Barra de Ferramentas",
+  "Current style": "Estilo Atual",
+  "Cut selection": "Recortar seleção",
+  "Developer": "Desenvolvedor",
+  "ENTER": "ENTRAR",
+  "Editor Help": "Ajuda do Editor",
+  "Em": "Em",
+  "Enter the image URL here": "Entre aqui com a URL da imagem",
+  "Finishing": "Terminando",
+  "Fixed width columns": "Colunas com largura fixa",
+  "For browsers that don't support images": "Para navegadores que não suportam imagens",
+  "Generate Xinha framework": "Gerar Área de Trabalho do Xinha",
+  "Headings": "Títulos",
+  "Horizontal padding": "Espaçamento interno horizontal",
+  "Horizontal:": "Horizontal:",
+  "Image Preview:": "Visualização da Imagem:",
+  "Image URL:": "URL da imagem:",
+  "Init editor size": "Iniciar tamanho do editor",
+  "Insert Image": "Inserir Imagem",
+  "Insert Table": "Inserir Tabela",
+  "Insert/Modify Link": "Inserir/Modificar Link",
+  "Italic": "Itálico",
+  "Justify Center": "Justificar Centralizado",
+  "Justify Full": "Justificar Completamente",
+  "Justify Left": "Justificar à Esquerda",
+  "Justify Right": "Justificar à Direita",
+  "Keyboard shortcuts": "Atalhos de Teclado",
+  "Layout": "Esquema",
+  "Leave empty for no border": "Deixe em branco para não ter bordas",
+  "Left": "Esquerda",
+  "License": "Licença",
+  "Loading in progress. Please wait!": "Carregamento em processo. Por favor, aguarde!",
+  "Middle": "Meio",
+  "Name": "Nome",
+  "New window (_blank)": "Nova janela (_blank)",
+  "None (use implicit)": "Nenhum (uso implicito)",
+  "Not set": "Não definido",
+  "Number of columns": "Número de colunas",
+  "Number of rows": "Número de linhas",
+  "OK": "OK",
+  "Paste from clipboard": "Colar da Área de Transferência",
+  "Path": "Caminho",
+  "Percent": "Porcentagem",
+  "Pixels": "Pixels",
+  "Plugins": "Plugins",
+  "Positioning of this image": "Posicionamento desta imagem",
+  "Positioning of this table": "Posicionamento desta tabela",
+  "Preview": "Visualização",
+  "Preview the image in a new window": "Visualizar a imagem em uma nova janela",
+  "Redoes your last action": "Refazer sua última ação",
+  "Right": "Direita",
+  "Rows:": "Linhas:",
+  "SHIFT-ENTER": "SHIFT-ENTER",
+  "Same frame (_self)": "Mesmo frame (_self)",
+  "Select Color": "Selecionar côr",
+  "Select all": "Selecionar tudo",
+  "Set format to paragraph": "Definir formato para o parágrafo",
+  "Space between adjacent cells": "Espaço entre células adjacentes",
+  "Space between content and border in cell": "Espaço entre conteúdo e borda na célula",
+  "Spacing": "Espaçamento",
+  "Sponsored by": "Patrocinado por",
+  "Strikethrough": "Tachado",
+  "Target:": "Destino:",
+  "Texttop": "Texto no topo",
+  "Thanks": "Agradecimentos",
+  "The Paste button does not work in Mozilla based web browsers (technical security reasons). Press CTRL-V on your keyboard to paste directly.": "O botão Colar não funciona em navegadores baseado no Mozilla (por razões técnicas de segurança). Pressione CTRL-V no seu teclado para colar diretamente.",
+  "The editor provides the following key combinations:": "Este editor fornece a seguinte combinação de teclas:",
+  "Title (tooltip):": "Título (tooltip)",
+  "Top": "Topo",
+  "Top frame (_top)": "Frame no topo (_top)",
+  "URL:": "URL:",
+  "Underline": "Sublinhado",
+  "Undoes your last action": "Desfazer sua última ação",
+  "Version": "Versão",
+  "Vertical padding": "Espaçamento interno vertical",
+  "Vertical:": "Vertical:",
+  "Width of the table": "Larguran da tabela",
+  "Width unit": "Unidade de largura",
+  "Width:": "Largura:",
+  "Would you like to clear font colours?": "Deseja limpar as cores de fonte",
+  "Would you like to clear font sizes?": "Deseja limpar os tamanhos de fonte",
+  "Would you like to clear font typefaces?": "Deseja limpar os tipos de fonte",
+  "Xinha Help": "Ajuda do Xinha",
+  "You are in TEXT MODE.  Use the [<>] button to switch back to WYSIWYG.": "Você está no MODO TEXTO.  Use o botão [<>] para mudar para o modo de Visualização (WYSIWYG)",
+  "Your Document is not well formed. Check JavaScript console for details.": "Seu Documento não está formatado corretamente. Verifique o console do JavaScript para maiores detalhes.",
+  "insert linebreak": "inserir quebra de linha",
+  "new paragraph": "novo parágrafo",
+  
+  // not find with lc_parse_strings.php
+  "Subscript": "Subescrito",
+  "Superscript": "Sobrescrito",
+  "Direction left to right": "Da esquerda para direita",
+  "Direction right to left": "Da direita para esquerda",
+  "Remove formatting": "Remover formatação",
+  "Select all": "Selecionar tudo",
+  "Print document": "Imprimir documento",
+  "Clear MSOffice tags": "Limpar tags do MS Office",
+  "Clear Inline Font Specifications": "Limpar especificações de fontes inline",
+  "Split Block": "Dividir Bloco",
+  "Toggle Borders": "Mudar Bordas",
+  "Save as": "Salvar como",
+  "Insert/Overwrite": "Inserir/Sobrescrever",
+  "&mdash; format &mdash;": "&mdash; formato &mdash;",
+  "Heading 1": "Título 1",
+  "Heading 2": "Título 2",
+  "Heading 3": "Título 3",
+  "Heading 4": "Título 4",
+  "Heading 5": "Título 5",
+  "Heading 6": "Título 6",
+  "Normal": "Normal",
+  "Address": "Endereço",
+  "Formatted": "Formatado",
+  "&mdash; font &mdash;": "&mdash; fonte &mdash;",
+  "&mdash; size &mdash;": "&mdash; tamanho &mdash;",
+  "Ordered List": "Lista Numerada",
+  "Bulleted List": "Lista Marcadores",
+  "Decrease Indent": "Diminuir Indentação",
+  "Increase Indent": "Aumentar Indentação",
+  "Font Color": "Cor da Fonte",
+  "Background Color": "Cor do Fundo",
+  "Horizontal Rule": "Linha Horizontal",
+  "Insert Web Link": "Inserir Link",
+  "Insert/Modify Image": "Inserir/Modificar Imagem",
+  "Insert Table": "Inserir Tabela",
+  "Toggle HTML Source": "Ver Código-Fonte",
+  "Enlarge Editor": "Expandir Editor",
+  "About this editor": "Sobre este editor",
+  "Help using editor": "Ajuda - Usando o editor"
+}
diff --git a/mailboxes/xinha/lang/ro.js b/mailboxes/xinha/lang/ro.js
new file mode 100644 (file)
index 0000000..e622932
--- /dev/null
@@ -0,0 +1,63 @@
+// I18N constants
+
+// LANG: "ro", ENCODING: UTF-8
+// 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.)
+
+{
+  "Bold": "Îngroşat",
+  "Italic": "Italic",
+  "Underline": "Subliniat",
+  "Strikethrough": "Tăiat",
+  "Subscript": "Indice jos",
+  "Superscript": "Indice sus",
+  "Justify Left": "Aliniere la stânga",
+  "Justify Center": "Aliniere pe centru",
+  "Justify Right": "Aliniere la dreapta",
+  "Justify Full": "Aliniere în ambele părţi",
+  "Ordered List": "Listă ordonată",
+  "Bulleted List": "Listă marcată",
+  "Decrease Indent": "Micşorează alineatul",
+  "Increase Indent": "Măreşte alineatul",
+  "Font Color": "Culoarea textului",
+  "Background Color": "Culoare de fundal",
+  "Horizontal Rule": "Linie orizontală",
+  "Insert Web Link": "Inserează/modifică link",
+  "Insert/Modify Image": "Inserează/modifică imagine",
+  "Insert Table": "Inserează un tabel",
+  "Toggle HTML Source": "Sursa HTML / WYSIWYG",
+  "Enlarge Editor": "Maximizează editorul",
+  "About this editor": "Despre editor",
+  "Help using editor": "Documentaţie (devel)",
+  "Current style": "Stilul curent",
+  "Undoes your last action": "Anulează ultima acţiune",
+  "Redoes your last action": "Reface ultima acţiune anulată",
+  "Cut selection": "Taie în clipboard",
+  "Copy selection": "Copie în clipboard",
+  "Paste from clipboard": "Aduce din clipboard",
+  "Direction left to right": "Direcţia de scriere: stânga - dreapta",
+  "Direction right to left": "Direcţia de scriere: dreapta - stânga",
+  "OK": "OK",
+  "Cancel": "Anulează",
+  "Path": "Calea",
+  "You are in TEXT MODE.  Use the [<>] button to switch back to WYSIWYG.": "Eşti în modul TEXT.  Apasă butonul [<>] pentru a te întoarce în modul WYSIWYG.",
+  "Cancel": "Renunţă",
+  "Insert/Modify Link": "Inserează/modifcă link",
+  "New window (_blank)": "Fereastră nouă (_blank)",
+  "None (use implicit)": "Nimic (foloseşte ce-i implicit)",
+  "Other": "Alt target",
+  "Same frame (_self)": "Aceeaşi fereastră (_self)",
+  "Target:": "Ţinta:",
+  "Title (tooltip):": "Titlul (tooltip):",
+  "Top frame (_top)": "Fereastra principală (_top)",
+  "URL:": "URL:",
+  "You must enter the URL where this link points to": "Trebuie să introduceţi un URL"
+}
diff --git a/mailboxes/xinha/lang/ru.js b/mailboxes/xinha/lang/ru.js
new file mode 100644 (file)
index 0000000..d7e201b
--- /dev/null
@@ -0,0 +1,185 @@
+// I18N constants
+
+// LANG: "ru", ENCODING: UTF-8
+// Author: Yulya Shtyryakova, <yulya@vdcom.ru>
+
+// Some additions by: Alexey Kirpichnikov, <alexkir@kiwistudio.ru>
+// I took French version as a source of English phrases because French version was the most comprehensive
+// (fr.js was the largest file, actually) %)
+
+// 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.)
+
+{
+  "Bold": "Полужирный",
+  "Italic": "Наклонный",
+  "Underline": "Подчеркнутый",
+  "Strikethrough": "Перечеркнутый",
+  "Subscript": "Нижний индекс",
+  "Superscript": "Верхний индекс",
+  "Justify Left": "По левому краю",
+  "Justify Center": "По центру",
+  "Justify Right": "По правому краю",
+  "Justify Full": "По ширине",
+  "Ordered List": "Нумерованный список",
+  "Bulleted List": "Маркированный список",
+  "Decrease Indent": "Уменьшить отступ",
+  "Increase Indent": "Увеличить отступ",
+  "Font Color": "Цвет шрифта",
+  "Background Color": "Цвет фона",
+  "Horizontal Rule": "Горизонтальный разделитель",
+  "Insert Web Link": "Вставить гиперссылку",
+  "Insert/Modify Image": "Вставить изображение",
+  "Insert Table": "Вставить таблицу",
+  "Toggle HTML Source": "Показать Html-код",
+  "Enlarge Editor": "Увеличить редактор",
+  "About this editor": "О редакторе",
+  "Help using editor": "Помощь",
+  "Current style": "Текущий стиль",
+  "Undoes your last action": "Отменить",
+  "Redoes your last action": "Повторить",
+  "Cut selection": "Вырезать",
+  "Copy selection": "Копировать",
+  "Paste from clipboard": "Вставить",
+  "Direction left to right": "Направление слева направо",
+  "Direction right to left": "Направление справа налево",
+  "Remove formatting": "Убрать форматирование",
+  "Select all": "Выделить все",
+  "Print document": "Печать",
+  "Clear MSOffice tags": "Удалить разметку MSOffice",
+  "Clear Inline Font Specifications": "Удалить непосредственное задание шрифтов",
+  "Would you like to clear font typefaces?": "Удалить типы шрифтов?",
+  "Would you like to clear font sizes?": "Удалить размеры шрифтов ?",
+  "Would you like to clear font colours?": "Удалить цвета шрифтов ?",
+  "Split Block": "Разделить блок",
+  "Toggle Borders": "Включить/выключить отображение границ",
+  "Save as": "Сохранить как",
+  "Insert/Overwrite": "Вставка/замена",
+  "&mdash; format &mdash;": "&mdash; форматирование &mdash;",
+  "Heading 1": "Заголовок 1",
+  "Heading 2": "Заголовок 2",
+  "Heading 3": "Заголовок 3",
+  "Heading 4": "Заголовок 4",
+  "Heading 5": "Заголовок 5",
+  "Heading 6": "Заголовок 6",
+  "Normal": "Обычный текст",
+  "Address": "Адрес",
+  "Formatted": "Отформатированный текст",
+
+  "&mdash; font &mdash;": "&mdash; шрифт &mdash;",
+  "&mdash; size &mdash;": "&mdash; размер &mdash;",
+
+
+// Диалоги
+
+  "OK": "OK",
+  "Cancel": "Отмена",
+  "Path": "Путь",
+  "You are in TEXT MODE.  Use the [<>] button to switch back to WYSIWYG.": "Вы в режиме отображения Html-кода. нажмите кнопку [<>], чтобы переключиться в визуальный режим.",
+
+"The Paste button does not work in Mozilla based web browsers (technical security reasons). Press CTRL-V on your keyboard to paste directly.": "Кнопка Вставить не работает в браузерах на основе Mozilla (по техническим причинам, связанным с безопасностью). Нажмите Ctrl-V на клавиатуре, чтобы вставить.",
+
+  "Your Document is not well formed. Check JavaScript console for details.": "Ваш документ неправильно сформирован. Посмотрите Консоль JavaScript, чтобы узнать подробности.",
+
+  "Alignment:": "Выравнивание",
+  "Not set": "Не установлено",
+  "Left": "По левому краю",
+  "Right": "По правому краю",
+  "Texttop": "По верхней границе текста",
+  "Absmiddle": "По середине текста",
+  "Baseline": "По нижней границе текста",
+  "Absbottom": "По нижней границе",
+  "Bottom": "По нижнему краю",
+  "Middle": "Посредине",
+  "Top": "По верхнему краю",
+
+  "Layout": "Расположение",
+  "Spacing": "Поля",
+  "Horizontal:": "По горизонтали",
+  "Horizontal padding": "Горизонтальные поля",
+  "Vertical:": "По вертикали",
+  "Vertical padding": "Вертикальные поля",
+  "Border thickness:": "Толщина рамки",
+  "Leave empty for no border": "Оставьте пустым, чтобы убрать рамку",
+
+  //Insert Link
+  "Insert/Modify Link": "Вставка/изменение ссылки",
+  "None (use implicit)": "По умолчанию",
+  "New window (_blank)": "Новое окно (_blank)",
+  "Same frame (_self)": "То же окно (_self)",
+  "Top frame (_top)": "Родительское окно (_top)",
+  "Other": "Другое",
+  "Target:": "Открывать в окне:",
+  "Title (tooltip):": "Всплывающая подсказка",
+  "URL:": "URL:",
+  "You must enter the URL where this link points to": "Вы должны указать URL, на который будет указывать ссылка",
+  "You need to select some text before creating a link": "Вы должны выделить текст, который будет преобразован в ссылку",
+
+  // Insert Table
+  "Insert Table": "Вставка таблицы",
+  "Rows:": "Строки",
+  "Number of rows": "Количество строк",
+  "Cols:": "Столбцы",
+  "Number of columns": "Количество столбцов",
+  "Width:": "Ширина",
+  "Width of the table": "Ширина таблицы",
+  "Percent": "проценты",
+  "Pixels": "пикселы",
+  "Em": "em",
+  "Width unit": "Единицы измерения",
+  "Fixed width columns": "Столбцы фиксированной ширины",
+  "Positioning of this table": "Расположение таблицы",
+  "Cell spacing:": "Расстояние между ячейками",
+  "Space between adjacent cells": "Расстояние между соседними ячейками",
+  "Cell padding:": "Поля в ячейках",
+  "Space between content and border in cell": "Расстояние между границей ячейки и текстом",
+  "You must enter a number of rows": "Вы должны ввести количество строк",
+  "You must enter a number of columns": "Вы должны ввести количество столбцов",
+
+  // Insert Image
+  "Insert Image": "Вставка изображения",
+  "Image URL:": "URL изображения",
+  "Enter the image URL here": "Вставьте адрес изображения",
+  "Preview": "Предварительный просмотр",
+  "Preview the image in a new window": "Предварительный просмотр в отдельном окне",
+  "Alternate text:": "Альтернативный текст",
+  "For browsers that don't support images": "Для браузеров, которые не отображают картинки",
+  "Positioning of this image": "Расположение изображения",
+  "Image Preview:": "Предварительный просмотр",
+  "You must enter the URL": "Вы должны ввести URL",
+
+  // Editor Help
+  "Xinha Help": "Помощь",
+  "Editor Help": "Помощь",
+  "Keyboard shortcuts": "Горячие клавиши",
+  "The editor provides the following key combinations:": "Редактор поддерживает следующие комбинации клавиш:",
+  "ENTER": "ENTER",
+  "new paragraph": "новый абзац",
+  "SHIFT-ENTER": "SHIFT+ENTER",
+  "insert linebreak": "перенос строки",
+  "Set format to paragraph": "Отформатировать абзац",
+  "Clean content pasted from Word": "Очистить текст, вставленный из Word",
+  "Headings": "Заголовки",
+  "Close": "Закрыть",
+
+  // Loading messages
+  "Loading in progress. Please wait !": "Загрузка... Пожалуйста, подождите.",
+  "Constructing main object": "Создание главного объекта",
+  "Constructing object": "Создание объекта",
+  "Register panel right": "Регистрация правой панели",
+  "Register panel left": "Регистрация левой панели",
+  "Register panel top": "Регистрация верхней панели",
+  "Register panel bottom": "Регистрация нижней панели",
+  "Create Toolbar": "Создание панели инструментов",
+  "Create StatusBar": "Создание панели состояния",
+  "Generate Xinha object": "Создание объекта Xinha",
+  "Init editor size": "Инициализация размера редактора",
+  "Init IFrame": "инициализация iframe",
+  "Register plugin $plugin": "Регистрация $plugin"
+};
diff --git a/mailboxes/xinha/lang/sh.js b/mailboxes/xinha/lang/sh.js
new file mode 100644 (file)
index 0000000..2706304
--- /dev/null
@@ -0,0 +1,140 @@
+// I18N constants
+
+// LANG: "sh", ENCODING: UTF-8 | ISO-8859-2
+// Author: Ljuba Ranković, http://www.rankovic.net/ljubar
+
+// 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.)
+
+{
+               "Bold": "Masno",
+               "Italic": "Kurziv",
+               "Underline": "Podvučeno",
+               "Strikethrough": "Precrtano",
+               "Subscript": "Indeks-tekst",
+               "Superscript": "Eksponent-tekst",
+               "Justify Left":"Ravnanje ulevo",
+               "Justify Center": "Ravnanje po simetrali",
+               "Justify Right": "Ravnanje udesno",
+               "Justify Full": "Puno ravnanje",
+               "Ordered List": "Lista sa rednim brojevima",
+               "Bulleted List": "Lista sa simbolima",
+               "Decrease Indent": "smanji uvlačenje",
+               "Increase Indent": "Povećaj uvlačenje",
+               "Font Color": "Boja slova",
+               "Background Color": "Boja pozadine",
+               "Horizontal Rule": "Horizontalna linija",
+               "Insert Web Link": "Dodaj web link",
+               "Insert/Modify Image": "Dodaj/promeni sliku",
+               "Insert Table": "Ubaci tabelu",
+               "Toggle HTML Source": "Prebaci na HTML kod",
+               "Enlarge Editor": "Povećaj editor",
+               "About this editor": "O ovom editoru",
+               "Help using editor": "Pomoć pri korišćenju editora",
+               "Current style": "Važeći stil",
+               "Undoes your last action": "Poništava poslednju radnju",
+               "Redoes your last action": "Vraća poslednju radnju",
+               "Cut selection": "Iseci izabrano",
+               "Copy selection": "Kopiraj izabrano",
+               "Paste from clipboard": "Zalepi iz klipborda",
+               "Direction left to right": "Pravac s leva na desno",
+               "Direction right to left": "Pravac s desna na levo",
+        "Remove formatting": "Ukoni formatiranje",
+        "Select all": "Izaberi sve",
+        "Print document": "Štampaj dokument",
+        "Clear MSOffice tags": "Obriši MSOffice tagove",
+        "Clear Inline Font Specifications": "Obriši dodeljene osobine fonta",
+        "Split Block": "Podeli blok",
+        "Toggle Borders": "Izmeni okvire",
+
+        "&mdash; format &mdash;": "&mdash; Format &mdash;",
+        "Heading 1": "Zaglavlje 1",
+        "Heading 2": "Zaglavlje 2",
+        "Heading 3": "Zaglavlje 3",
+        "Heading 4": "Zaglavlje 4",
+        "Heading 5": "Zaglavlje 5",
+        "Heading 6": "Zaglavlje 6",
+        "Normal": "Običan",
+        "Address": "Adresa",
+        "Formatted": "Formatiran",
+        
+        // dialogs
+               "OK": "OK",
+               "Cancel": "Poništi",
+               "Path": "Putanja",
+               "You are in TEXT MODE.  Use the [<>] button to switch back to WYSIWYG.": "Nalazite se u TEXT režimu.  Koristite [<>] dugme za povratak na WYSIWYG.",
+
+               "The Paste button does not work in Mozilla based web browsers (technical security reasons). Press CTRL-V on your keyboard to paste directly.": "",
+
+        "Alignment:": "Ravnanje",
+        "Not set": "Nije postavljeno",
+        "Left": "Levo",
+        "Right": "Desno",
+        "Texttop": "Vrh teksta",
+        "Absmiddle": "Apsolutna sredina",
+        "Baseline": "Donja linija",
+        "Absbottom": "Apsolutno dno",
+        "Bottom": "Dno",
+        "Middle": "Sredina",
+        "Top": "Vrh",
+
+        "Layout": "Prelom",
+        "Spacing": "Razmak",
+        "Horizontal:": "Po horizontali",
+        "Horizontal padding": "Horizontalno odstojanje",
+        "Vertical:": "Po vertikali",
+        "Vertical padding": "Vertikalno odstojanje",
+        "Border thickness:": "Debljina okvira",
+        "Leave empty for no border": "Ostavi prazno kad nema okvira",
+               
+        // Insert Link
+               "Insert/Modify Link": "Dodaj/promeni Link",
+               "None (use implicit)": "koristi podrazumevano",
+               "New window (_blank)": "Novom prozoru (_blank)",
+               "Same frame (_self)": "Isti frejm (_self)",
+               "Top frame (_top)": "Glavni frejm (_top)",
+               "Other": "Drugo",
+               "Target:": "Otvori u:",
+               "Title (tooltip):": "Naziv (tooltip):",
+               "URL:": "URL:",
+               "You must enter the URL where this link points to": "Morate uneti URL na koji vodi ovaj link",
+               
+        // Insert Table
+        "Insert Table": "Ubaci tabelu",
+        "Rows:": "Redovi",
+        "Number of rows": "Broj redova",
+        "Cols:": "Kolone",
+        "Number of columns": "Broj kolona",
+        "Width:": "Širina",
+        "Width of the table": "Širina tabele",
+        "Percent": "Procenat",
+        "Pixels": "Pikseli",
+        "Em": "Em",
+        "Width unit": "Jedinica širine",
+        "Fixed width columns": "Fiksirana širina kolona",
+        "Positioning of this table": "Postavljanje ove tabele",
+        "Cell spacing:": "Rastojanje ćelija",
+        "Space between adjacent cells": "Rastojanje naspramnih ćelija",
+        "Cell padding:": "Unutrašnja odstojanja u ćeliji",
+        "Space between content and border in cell": "Rastojanje između sadržaja i okvira ćelije",
+
+        // Insert Image
+        "Insert Image": "Ubaci sliku",
+        "Image URL:": "URL slike",
+        "Enter the image URL here": "Unesite URL slike ovde",
+        "Preview": "Pregled",
+        "Preview the image in a new window": "Pregledaj sliku u novom prozoru",
+        "Alternate text:": "Alternativni tekst",
+        "For browsers that don't support images": "Za pretraživače koji ne podržavaju slike",
+        "Positioning of this image": "Postavljanje ove slike",
+        "Image Preview:": "Pregled slike",
+        
+        // Select Color popup
+               "Select Color": "Izaberite boju"
+};
diff --git a/mailboxes/xinha/lang/si.js b/mailboxes/xinha/lang/si.js
new file mode 100644 (file)
index 0000000..c34abbe
--- /dev/null
@@ -0,0 +1,50 @@
+// I18N constants
+
+// LANG: "si", ENCODING: UTF-8
+// Author: Tomaz Kregar, x_tomo_x@email.si
+
+// 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.)
+
+{
+  "Bold": "Krepko",
+  "Italic": "Ležeče",
+  "Underline": "Podčrtano",
+  "Strikethrough": "Prečrtano",
+  "Subscript": "Podpisano",
+  "Superscript": "Nadpisano",
+  "Justify Left": "Poravnaj levo",
+  "Justify Center": "Na sredino",
+  "Justify Right": "Poravnaj desno",
+  "Justify Full": "Porazdeli vsebino",
+  "Ordered List": "Oštevilčevanje",
+  "Bulleted List": "Označevanje",
+  "Decrease Indent": "Zmanjšaj zamik",
+  "Increase Indent": "Povečaj zamik",
+  "Font Color": "Barva pisave",
+  "Background Color": "Barva ozadja",
+  "Horizontal Rule": "Vodoravna črta",
+  "Insert Web Link": "Vstavi hiperpovezavo",
+  "Insert/Modify Image": "Vstavi sliko",
+  "Insert Table": "Vstavi tabelo",
+  "Toggle HTML Source": "Preklopi na HTML kodo",
+  "Enlarge Editor": "Povečaj urejevalnik",
+  "About this editor": "Vizitka za urejevalnik",
+  "Help using editor": "Pomoč za urejevalnik",
+  "Current style": "Trenutni slog",
+  "Undoes your last action": "Razveljavi zadnjo akcijo",
+  "Redoes your last action": "Uveljavi zadnjo akcijo",
+  "Cut selection": "Izreži",
+  "Copy selection": "Kopiraj",
+  "Paste from clipboard": "Prilepi",
+  "OK": "V redu",
+  "Cancel": "Prekliči",
+  "Path": "Pot",
+  "You are in TEXT MODE.  Use the [<>] button to switch back to WYSIWYG.": "Si v tekstovnem načinu.  Uporabi [<>] gumb za prklop nazaj na WYSIWYG."
+}
diff --git a/mailboxes/xinha/lang/sr.js b/mailboxes/xinha/lang/sr.js
new file mode 100644 (file)
index 0000000..06f78c4
--- /dev/null
@@ -0,0 +1,140 @@
+// I18N constants
+
+// LANG: "sh", ENCODING: UTF-8 | ISO-8859-5
+// Author: Ljuba Ranković, http://www.rankovic.net/ljubar
+
+// 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.)
+
+{
+               "Bold": "Масно",
+               "Italic": "Курзив",
+               "Underline": "Подвучено",
+               "Strikethrough": "Прецртано",
+               "Subscript": "Индекс-текст",
+               "Superscript": "Експонент-текст",
+               "Justify Left": "Равнање улево",
+               "Justify Center": "Равнање по симетрали",
+               "Justify Right": "Равнање удесно",
+               "Justify Full": "Пуно равнање",
+               "Ordered List": "Листа са редним бројевима",
+               "Bulleted List": "Листа са симболима",
+               "Decrease Indent": "Смањи увлачење",
+               "Increase Indent": "Повећај увлачење",
+               "Font Color": "Боја слова",
+               "Background Color": "Боја позадине",
+               "Horizontal Rule": "Хоризонтална линија",
+               "Insert Web Link": "додај веб линк",
+               "Insert/Modify Image": "додај/промени слику",
+               "Insert Table": "Убаци табелу",
+               "Toggle HTML Source": "Пребаци на приказ ХТМЛ кода",
+               "Enlarge Editor": "Повећај едитор",
+               "About this editor": "О овом едитору",
+               "Help using editor": "Помоћ при коришћењу едитора",
+               "Current style": "Важећи стил",
+               "Undoes your last action": "Поништава последњу радњу",
+               "Redoes your last action": "Враћа последњу радњу",
+               "Cut selection": "Исеци изабрано",
+               "Copy selection": "Копирај изабрано",
+               "Paste from clipboard": "Залепи из клипборда",
+               "Direction left to right": "Правац с лева на десно",
+               "Direction right to left": "Правац с десна на лево",
+        "Remove formatting": "Уклони форматирање",
+        "Select all": "Изабери све",
+        "Print document": "Штампај документ",
+        "Clear MSOffice tags": "Обриши MSOffice тагове",
+        "Clear Inline Font Specifications": "Обриши примењене особине фонта",
+        "Split Block": "Подели блок",
+        "Toggle Borders": "Пребаци оквирне линије",
+
+        "&mdash; format &mdash;": "&mdash; Format &mdash;",
+        "Heading 1": "Заглавље 1",
+        "Heading 2": "Заглавље 2",
+        "Heading 3": "Заглавље 3",
+        "Heading 4": "Заглавље 4",
+        "Heading 5": "Заглавље 5",
+        "Heading 6": "Заглавље 6",
+        "Normal": "обичан",
+        "Address": "адреса",
+        "Formatted": "форматиран",           
+               
+        // dialogs
+               "OK": "OK",
+               "Cancel": "Поништи",
+               "Path": "Путања",
+               "You are in TEXT MODE.  Use the [<>] button to switch back to WYSIWYG.":    "Налазите се у ТЕКСТ режиму.  Користите [<>] дугме за повратак на ШВТИД (WYSIWYG).",
+
+               "The Paste button does not work in Mozilla based web browsers (technical security reasons). Press CTRL-V on your keyboard to paste directly.": "Дугме 'залепи' не ради у претраживачима породице Mozilla (из разлога сигурности). Притисните CTRL-V на тастатури да директно залепите.",
+               
+        "Alignment:": "Равнање",
+        "Not set": "Није постављено",
+        "Left": "Лево",
+        "Right": "Десно",
+        "Texttop": "Врх текста",
+        "Absmiddle": "Апсолутна средина",
+        "Baseline": "Доња линија",
+        "Absbottom": "Апсолутно дно",
+        "Bottom": "Дно",
+        "Middle": "Средина",
+        "Top": "Врх",
+
+        "Layout": "Прелом",
+        "Spacing": "Размак",
+        "Horizontal:": "По хоризонтали",
+        "Horizontal padding": "Хортизонтално одстојање",
+        "Vertical:": "По вертикали",
+        "Vertical padding": "Вертикално одстојање",
+        "Border thickness:": "Дебљина оквира",
+        "Leave empty for no border": "Остави празно кад нема оквира",
+
+        // Insert Link
+               "Insert/Modify Link": "додај/промени линк",
+               "None (use implicit)": "користи подразумевано",
+               "New window (_blank)": "Новом прозору (_blank)",
+               "Same frame (_self)": "Исти фрејм (_self)",
+               "Top frame (_top)": "Главни фрејм (_top)",
+               "Other": "Друго",
+               "Target:": "Отвори у:",
+               "Title (tooltip):": "Назив (tooltip):",
+               "URL:": "УРЛ:",
+               "You must enter the URL where this link points to": "Морате унети УРЛ на који води овај линк",
+
+        // Insert Table
+        "Insert Table": "Убаци табелу",
+        "Rows:": "Редови",
+        "Number of rows": "Број редова",
+        "Cols:": "Колоне",
+        "Number of columns": "Број колона",
+        "Width:": "Ширина",
+        "Width of the table": "Ширина табеле",
+        "Percent": "Процената",
+        "Pixels": "Пиксела",
+        "Em": "Ем",
+        "Width unit": "Јединица ширине",
+        "Fixed width columns": "Фиксирана ширина колоне",
+        "Positioning of this table": "Постављање ове табеле",
+        "Cell spacing:": "Размак између ћелија",
+        "Space between adjacent cells": "Размак између наспрамних ћелија",
+        "Cell padding:": "Унутрашња одстојања од ивица ћелије",
+        "Space between content and border in cell": "Растојање између садржаја у ћелији и њеног оквира",
+
+        // Insert Image
+        "Insert Image": "Убаци слику",
+        "Image URL:": "УРЛ слике",
+        "Enter the image URL here": "Унесите УРЛ слике овде",
+        "Preview": "Преглед",
+        "Preview the image in a new window": "Прегледај слику у новом прозору",
+        "Alternate text:": "алтернативни текст",
+        "For browsers that don't support images": "За претраживаче који не подржавају слике",
+        "Positioning of this image": "Постављање ове слике",
+        "Image Preview:": "Преглед слике",
+
+        // Select Color popup
+               "Select Color": "Изабери боју"
+};
diff --git a/mailboxes/xinha/lang/sv.js b/mailboxes/xinha/lang/sv.js
new file mode 100644 (file)
index 0000000..61af49e
--- /dev/null
@@ -0,0 +1,116 @@
+// I18N constants
+// LANG: "sv", ENCODING: UTF-8
+
+// Swedish version for htmlArea v3.0
+// Initital translation by pat <pat@engvall.nu>
+// Synced with additional contants in rev. 477 (Mar 2006) by Thomas Loo <tloo@saltstorm.net>
+
+{
+  "Bold": "Fet",
+  "Italic": "Kursiv",
+  "Underline": "Understruken",
+  "Strikethrough": "Genomstruken",
+  "Subscript": "Nedsänkt",
+  "Superscript": "Upphöjd",
+  "Justify Left": "Vänsterjustera",
+  "Justify Center": "Centrera",
+  "Justify Right": "Högerjustera",
+  "Justify Full": "Marginaljustera",
+  "Ordered List": "Numrerad lista",
+  "Bulleted List": "Punktlista",
+  "Decrease Indent": "Minska indrag",
+  "Increase Indent": "Öka indrag",
+  "Font Color": "Textfärg",
+  "Background Color": "Bakgrundsfärg",
+  "Horizontal Rule": "Vågrät linje",
+  "Insert Web Link": "Infoga länk",
+  "Insert/Modify Image": "Infoga bild",
+  "Toggle HTML Source": "Visa källkod",
+  "Enlarge Editor": "Visa i eget fönster",
+  "About this editor": "Om denna editor",
+  "Help using editor": "Hjälp",
+  "Current style": "Nuvarande stil",
+
+  "Undoes your last action": "Ångra kommando",
+  "Redoes your last action": "Upprepa kommando",
+  "Select all": "Markera allt",
+  "Print document": "Skriv ut",
+  "Clear MSOffice tags": "Städa bort MS Office taggar",
+  "Clear Inline Font Specifications": "Rensa inbäddad typsnittsinformation",
+  "Remove formatting": "Rensa formattering",
+  "Toggle Borders": "Objektramar",
+  "Split Block": "Dela block",
+  "Direction left to right": "Vänster till höger",
+  "Direction right to left": "Höger till vänster",
+
+  "Insert/Overwrite": "Infoga/Skriv över",
+  "OK": "OK",
+  "Cancel": "Avbryt",
+  "Path": "Objekt",
+  "You are in TEXT MODE.  Use the [<>] button to switch back to WYSIWYG.": "Du befinner dig i texläge. Klicka på ikonen [<>] ovan för att växla tillbaka till WYSIWIG läge",
+  "The full screen mode is known to cause problems with Internet Explorer, due to browser bugs that we weren": "Visning i fullskärmsläga fungerar dåligt i din webläsare. Möjliga problem resulterar i en ryckig editor, saknade editorfunktioner och/eller att webläsaren kraschar. Om du använder Windows 95/98 finns också möjligheten att Windows kraschar.\n\nTryck ",
+  "The Paste button does not work in Mozilla based web browsers (technical security reasons). Press CTRL-V on your keyboard to paste directly.": "Denna knapp fungerar ej i Mozillabaserad webläsare, använd istället snabbtangenterna CTRL-V på tangentbordet för att klistra in.",
+
+  "Insert/Modify Link": "Redigera länk",
+  "New window (_blank)": "Nytt fönster (_blank)",
+  "None (use implicit)": "Ingen (använd standardinställing)",
+  "Other": "Annan",
+  "Same frame (_self)": "Samma ram (_self)",
+  "Target:": "Mål:",
+  "Title (tooltip):": "Titel (tooltip):",
+  "Top frame (_top)": "Toppram (_top)",
+  "URL:": "Sökväg:",
+  "You must enter the URL where this link points to": "Du måsta ange en adress till vilken länken skall peka på",
+  "Would you like to clear font typefaces?": "Radera alla typsnittsinformation ?",
+  "Would you like to clear font sizes?": "Radera alla fontstorlekar ?",
+  "Would you like to clear font colours?": "Ta bort all textfärger ?",
+
+  "You need to select some text before creating a link": "Du måsta markera ett objekt att applicera länken på!",
+
+  // Insert Table
+  "Insert Table": "Infoga tabell",
+  "Rows:": "Rader:",
+  "Number of rows": "Antal rader",
+  "Cols:": "Kolumner:",
+  "Number of columns": "Antal kolumner",
+  "Width:": "Bredd:",
+  "Width of the table": "Tabellbredd",
+  "Percent": "Procent",
+  "Pixels": "Pixlar",
+  "Em": "",
+  "Width unit": "Breddenheter",
+  "Fixed width columns": "Fixerad bredd",
+  "Alignment:": "Marginaljustering",
+  "Positioning of this table": "Tabellposition",
+  "Border thickness:": "Ramtjocklek",
+  "Leave empty for no border": "Lämna fältet tomt för att undvika ramar",
+  "Spacing": "Cellegenskaper",
+  "Cell spacing:": "Cellmarginaler:",
+  "Space between adjacent cells": "Utrymme mellan celler",
+  "Cell padding:": "Cellindrag:",
+  "Space between content and border in cell": "Utrymme mellan ram och cellinnehåll",
+  "You must enter a number of rows": "Ange ental rader",
+  "You must enter a number of columns": "Ange antal kolumner",
+
+  // Editor Help
+  "Keyboard shortcuts": "Snabbtangenter",
+  "The editor provides the following key combinations:": "Editorn nyttjar följande kombinationer:",
+  "new paragraph": "Ny paragraf ",
+  "insert linebreak": "Infoga radbrytning ",
+  "Set format to paragraph": "Aktivera paragrafläge",
+  "Clean content pasted from Word": "Rensa innehåll inklistrat från MS Word",
+  "Headings": "Skapa standardrubrik",
+  "Cut selection": "Klipp ut markering",
+  "Copy selection": "Kopiera  markering",
+  "Paste from clipboard": "Klistra in",
+  "Close": "Stäng",
+
+  // Loading messages
+  "Loading in progress. Please wait !": "Editorn laddas. Vänta...",
+  "Constructing main object": "Skapar huvudobjekt",
+  "Create Toolbar": "Skapar verktygspanel",
+  "Register panel right": "Registerar panel höger",
+  "Register panel left": "Registerar panel vänster",
+  "Register panel top": "Registerar toppanel",
+  "Register panel bottom": "Registerar fotpanel"
+}
diff --git a/mailboxes/xinha/lang/th.js b/mailboxes/xinha/lang/th.js
new file mode 100644 (file)
index 0000000..8a116af
--- /dev/null
@@ -0,0 +1,50 @@
+// I18N constants\r
+\r
+// LANG: "th", ENCODING: UTF-8\r
+// Author: Suchin Prasongbundit, <suchin@joolsoft.com>\r
+\r
+// FOR TRANSLATORS:\r
+//\r
+//   1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE\r
+//      (at least a valid email address)\r
+//\r
+//   2. PLEASE TRY TO USE UTF-8 FOR ENCODING;\r
+//      (if this is not possible, please include a comment\r
+//       that states what encoding is necessary.)\r
+\r
+{\r
+  "Bold": "ตัวหนา",\r
+  "Italic": "ตัวเอียง",\r
+  "Underline": "ขีดเส้นใต้",\r
+  "Strikethrough": "ขีดทับ",\r
+  "Subscript": "ตัวห้อย",\r
+  "Superscript": "ตัวยก",\r
+  "Justify Left": "จัดชิดซ้าย",\r
+  "Justify Center": "จัดกึ่งกลาง",\r
+  "Justify Right": "จัดชิดขวา",\r
+  "Justify Full": "จัดเต็มขอบ",\r
+  "Ordered List": "เลขลำดับ",\r
+  "Bulleted List": "ลำดับ",\r
+  "Decrease Indent": "ลดย่อหน้า",\r
+  "Increase Indent": "เพิ่มย่อหน้า",\r
+  "Font Color": "สีขอบแบบอักษร",\r
+  "Background Color": "สีพื้นหลัง",\r
+  "Horizontal Rule": "เส้นกึ่งกลาง",\r
+  "Insert Web Link": "ิเพิ่มลิ้งค์",\r
+  "Insert/Modify Image": "เพิ่ม/แก้ไขภาพ",\r
+  "Insert Table": "เพิ่มตาราง",\r
+  "Toggle HTML Source": "สลับการแสดงโค้ด HTML",\r
+  "Enlarge Editor": "ขยายให้เต็มจอ",\r
+  "About this editor": "เกี่ยวกับโปรแกรมนี้",\r
+  "Help using editor": "การใช้งานโปรแกรม",\r
+  "Current style": "รูปแบบปัจจุบัน",\r
+  "Undoes your last action": "ย้อนกลับ",\r
+  "Redoes your last action": "ทำซ้ำ",\r
+  "Cut selection": "ตัดส่วนที่เลือก",\r
+  "Copy selection": "สำเนาส่วนที่เลือก",\r
+  "Paste from clipboard": "วางจากคลิปบอร์ด",\r
+  "OK": "ตกลง",\r
+  "Cancel": "ยกเลิก",\r
+  "Path": "เส้นทาง",\r
+  "You are in TEXT MODE.  Use the [<>] button to switch back to WYSIWYG.": "คุณอยู่ในโหมดธรรมดา กดที่ปุ่ม [<>] เพื่อสลับกลับไปยังโหมดพิมพ์งานแบบเวิร์ด"\r
+}\r
diff --git a/mailboxes/xinha/lang/vn.js b/mailboxes/xinha/lang/vn.js
new file mode 100644 (file)
index 0000000..0aa6416
--- /dev/null
@@ -0,0 +1,56 @@
+// I18N constants : Vietnamese
+// LANG: "en", ENCODING: UTF-8
+// Author: Nguyễn Đình Nam, <hncryptologist@yahoo.com>
+// Modified 21/07/2004 by Phạm Mai Quân <pmquan@4vn.org>
+
+{
+  "Bold": "Đậm",
+  "Italic": "Nghiêng",
+  "Underline": "Gạch Chân",
+  "Strikethrough": "Gạch Xóa",
+  "Subscript": "Viết Xuống Dưới",
+  "Superscript": "Viết Lên Trên",
+  "Justify Left": "Căn Trái",
+  "Justify Center": "Căn Giữa",
+  "Justify Right": "Căn Phải",
+  "Justify Full": "Căn Đều",
+  "Ordered List": "Danh Sách Có Thứ Tự (1, 2, 3)",
+  "Bulleted List": "Danh Sách Phi Thứ Tự (Chấm đầu dòng)",
+  "Decrease Indent": "Lùi Ra Ngoài",
+  "Increase Indent": "Thụt Vào Trong",
+  "Font Color": "Màu Chữ",
+  "Background Color": "Màu Nền",
+  "Horizontal Rule": "Dòng Kẻ Ngang",
+  "Insert Web Link": "Tạo Liên Kết",
+  "Insert/Modify Image": "Chèn Ảnh",
+  "Insert Table": "Chèn Bảng",
+  "Toggle HTML Source": "Chế Độ Mã HTML",
+  "Enlarge Editor": "Phóng To Ô Soạn Thảo",
+  "About this editor": "Tự Giới Thiệu",
+  "Help using editor": "Giúp Đỡ",
+  "Current style": "Định Dạng Hiện Thời",
+  "Undoes your last action": "Hủy thao tác trước",
+  "Redoes your last action": "Lấy lại thao tác vừa bỏ",
+  "Cut selection": "Cắt",
+  "Copy selection": "Sao chép",
+  "Paste from clipboard": "Dán",
+  "Direction left to right": "Viết từ trái sang phải",
+  "Direction right to left": "Viết từ phải sang trái",
+  "OK": "Đồng ý",
+  "Cancel": "Hủy",
+  "The full screen mode is known to cause problems with Internet Explorer, due to browser bugs that we weren": "Chế độ phóng to ô soạn thảo có thể gây lỗi với Internet Explorer vì một số lỗi của trình duyệt này, vì thế chế độ này có thể sẽ không chạy. Hiển thị không đúng, lộn xộn, không có đầy đủ chức năng, và cũng có thể làm trình duyệt của bạn bị tắt ngang. Nếu bạn đang sử dụng Windows 9x bạn có thể bị báo lỗi ",
+  "Path": "Đường Dẫn",
+  "You are in TEXT MODE.  Use the [<>] button to switch back to WYSIWYG.": "Bạn đang ở chế độ text.  Sử dụng nút [<>] để chuyển lại chế độ WYSIWIG.",
+  "Cancel": "Hủy",
+  "Insert/Modify Link": "Thêm/Chỉnh sửa đường dẫn",
+  "New window (_blank)": "Cửa sổ mới (_blank)",
+  "None (use implicit)": "Không (sử dụng implicit)",
+  "OK": "Đồng ý",
+  "Other": "Khác",
+  "Same frame (_self)": "Trên cùng khung (_self)",
+  "Target:": "Nơi hiện thị:",
+  "Title (tooltip):": "Tiêu đề (của hướng dẫn):",
+  "Top frame (_top)": "Khung trên cùng (_top)",
+  "URL:": "URL:",
+  "You must enter the URL where this link points to": "Bạn phải điền địa chỉ (URL) mà đường dẫn sẽ liên kết tới"
+}
diff --git a/mailboxes/xinha/license.txt b/mailboxes/xinha/license.txt
new file mode 100644 (file)
index 0000000..e7798cf
--- /dev/null
@@ -0,0 +1,30 @@
+htmlArea License (based on BSD license)\r
+Copyright (c) 2002-2004, interactivetools.com, inc.\r
+Copyright (c) 2003-2004 dynarch.com\r
+All rights reserved.\r
+\r
+Redistribution and use in source and binary forms, with or without\r
+modification, are permitted provided that the following conditions are met:\r
+\r
+1) Redistributions of source code must retain the above copyright notice,\r
+   this list of conditions and the following disclaimer.\r
+\r
+2) Redistributions in binary form must reproduce the above copyright notice,\r
+   this list of conditions and the following disclaimer in the documentation\r
+   and/or other materials provided with the distribution.\r
+\r
+3) Neither the name of interactivetools.com, inc. nor the names of its\r
+   contributors may be used to endorse or promote products derived from this\r
+   software without specific prior written permission.\r
+\r
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\r
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\r
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+POSSIBILITY OF SUCH DAMAGE.\r
diff --git a/mailboxes/xinha/modules/AboutBox/AboutBox.js b/mailboxes/xinha/modules/AboutBox/AboutBox.js
new file mode 100644 (file)
index 0000000..7dab1e3
--- /dev/null
@@ -0,0 +1,3 @@
+/* This compressed file is part of Xinha. For uncompressed sources, forum, and bug reports, go to xinha.org */
+/* This file is part of version 0.96beta2 released Fri, 20 Mar 2009 11:01:14 +0100 */
+(function(){Xinha.plugins.AboutBox=a;function a(b){this.editor=b}a._pluginInfo={name:"AboutBox",developer:"The Xinha Core Developer Team"};a.prototype._lc=function(b){return Xinha._lc(b,"AboutBox")};a.prototype._prepareDialog=function(){var b=this;var d=this.editor;Xinha.loadStyle("about.css","AboutBox","aboutCSS");this.dialog=new Xinha.Dialog(d,a.html,"Xinha",{width:600});this.dialog.getElementById("close").onclick=function(){b.dialog.hide()};this.dialog.getElementById("xinha_logo").src=_editor_url+"images/xinha_logo.gif";var c=this.dialog.getElementsByClassName("tab");this.currentTab=c[0];c.forEach(function(e){e.onclick=function(){if(b.currentTab){Xinha._removeClass(b.currentTab,"tab-current");b.dialog.getElementById(b.currentTab.rel).style.display="none"}Xinha._addClass(e,"tab-current");e.blur();b.currentTab=e;b.dialog.getElementById(e.rel).style.display="block"}});this.fillPlugins();this.fillVersion();this.dialog.onresize=function(){this.getElementById("content").style.height=parseInt(this.height,10)-this.getElementById("h1").offsetHeight-this.getElementById("buttons").offsetHeight-100+"px"}};a.prototype.fillPlugins=function(){var k=this.editor;var d=this.dialog.getElementById("plugins_table");var g,l,b;var c=0;for(var f in k.plugins){var h=k.plugins[f];g=document.createElement("tr");if(c%2){g.style.backgroundColor="#e5e5e5"}d.appendChild(g);l=document.createElement("td");l.innerHTML=h.name;if(h.version){l.innerHTML+=" v"+h.version}g.appendChild(l);l=document.createElement("td");if(h.developer){if(h.developer_url){l.innerHTML='<a target="_blank" href="'+h.developer_url+'">'+h.developer+"</a>"}else{l.innerHTML=h.developer}}g.appendChild(l);l=document.createElement("td");if(h.sponsor){if(h.sponsor_url){l.innerHTML='<a target="_blank" href="'+h.sponsor_url+'">'+h.sponsor+"</a>"}else{l.innerHTML=h.sponsor}}g.appendChild(l);l=document.createElement("td");if(h.license){l.innerHTML=h.license}else{l.innerHTML="htmlArea"}g.appendChild(l);c++}};a.prototype.fillVersion=function(){var b=Xinha.version;this.dialog.getElementById("version").innerHTML="<pre>\nRelease:         "+b.Release+" ("+b.Date+")\nHead:            "+b.Head+"\nRevision:        "+b.Revision+"\nLast Changed By: "+b.RevisionBy+"\n</pre>"};a.prototype.show=function(){var c=this;if(!a.html){if(a.loading){return}a.loading=true;Xinha._getback(Xinha.getPluginDir("AboutBox")+"/dialog.html",function(d){a.html=d;c.show()});return}if(!this.dialog){this._prepareDialog()}var b={inputArea:""};this.dialog.show(b)}})();
\ No newline at end of file
diff --git a/mailboxes/xinha/modules/AboutBox/about.css b/mailboxes/xinha/modules/AboutBox/about.css
new file mode 100644 (file)
index 0000000..c4507d0
--- /dev/null
@@ -0,0 +1,51 @@
+.dialog .about.buttons a.tab {
+  color: #000;
+  cursor: pointer;
+  margin-left: -5px;
+  float: left; position: relative;
+  border: 1px solid #555;
+  top: -3px; left: -2px;
+  padding: 2px 10px 3px 10px;
+  border-top: none; background-color: #CCC;
+  -moz-border-radius: 0px 0px 4px 4px;
+  -webkit-border-radius: 4px;
+  -webkit-border-top-left-radius:0;
+  -webkit-border-top-right-radius:0;
+  
+  z-index: 0;
+  text-decoration:none;
+}
+.dialog .about.buttons a.tab-current
+{
+  top: -4px;
+  background-color: #f5f6f6;
+  padding: 3px 10px 4px 10px;
+  z-index: 10;
+}
+
+.dialog .about.buttons {
+  background-color:white;
+  padding:3px 3px 0 10px;
+}
+
+.dialog .about.content .tab-content {
+  padding-bottom:15px;
+  width:95%;
+}
+.dialog .about.content {
+  height:300px;
+  overflow:auto;
+  background-color:#f5f6f6;
+}
+.dialog .about.content table.plugins{
+  width:95%;
+  border: 1px solid black;
+  margin: 1em;
+}
+.dialog .about.content table.plugins th{
+  font-weight: bold;
+  background-color: #CCC;
+}
+.dialog .about.content table.plugins td{
+  padding:3px;
+}
\ No newline at end of file
diff --git a/mailboxes/xinha/modules/AboutBox/dialog.html b/mailboxes/xinha/modules/AboutBox/dialog.html
new file mode 100644 (file)
index 0000000..4035191
--- /dev/null
@@ -0,0 +1,95 @@
+<h1 id="[h1]">\r
+    <l10n>About this editor</l10n>\r
+</h1>\r
+<img alt="Xinha" src="" id="[xinha_logo]" />\r
+<div id="[content]" class="about content" style="padding:10px;">\r
+     <div id="[about]" class="tab-content">\r
+        <p>\r
+            A free WYSIWYG editor replacement for \r
+            <tt>\r
+                &lt;textarea&gt;\r
+            </tt>\r
+            fields.\r
+        </p>\r
+        <p>\r
+            Visit the <a href="http://xinha.gogo.co.nz/">Xinha Website</a>\r
+            for more information.\r
+        </p>\r
+        <p>\r
+            Use of Xinha is granted by the terms of the htmlArea License (based on BSD license)\r
+        </p>\r
+        <pre>    Copyright (c) 2005-2009 Xinha Developer Team and contributors</pre>\r
+        <p>\r
+            Xinha was originally based on work by Mihai Bazon which is:\r
+        </p>\r
+        <pre>\r
+    Copyright (c) 2003-2004 dynarch.com.\r
+    Copyright (c) 2002-2003 interactivetools.com, inc.\r
+    This copyright notice MUST stay intact for use.\r
+  </pre>\r
+    </div>\r
+    <div id="[thanks]" style="display:none"  class="tab-content">\r
+      The development of Xinha would not have been possible without the original work of Mihai Bazon, InteractiveTools.com, and the many sponsors and contributors from around the world. \r
+    </div>\r
+    <div id="[license]" style="display:none" class="tab-content">\r
+      <pre>htmlArea License (based on BSD license)\r
+Copyright (c) 2005-2009 Xinha Developer Team and contributors\r
+Copyright (c) 2002-2004, interactivetools.com, inc.\r
+Copyright (c) 2003-2004 dynarch.com\r
+All rights reserved.\r
+\r
+Redistribution and use in source and binary forms, with or without\r
+modification, are permitted provided that the following conditions are met:\r
+\r
+1) Redistributions of source code must retain the above copyright notice,\r
+   this list of conditions and the following disclaimer.\r
+\r
+2) Redistributions in binary form must reproduce the above copyright notice,\r
+   this list of conditions and the following disclaimer in the documentation\r
+   and/or other materials provided with the distribution.\r
+\r
+3) Neither the name of interactivetools.com, inc. nor the names of its\r
+   contributors may be used to endorse or promote products derived from this\r
+   software without specific prior written permission.\r
+\r
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\r
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\r
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+POSSIBILITY OF SUCH DAMAGE.</pre>\r
+    </div>\r
+    <div id="[plugins]" style="display:none" class="tab-content">\r
+      <p>The following plugins have been loaded.</p>\r
+      <table class="plugins">\r
+        <thead>\r
+          <tr>\r
+            <th>Name</th>\r
+            <th>Developer</th>\r
+            <th>Sponsored by</th>\r
+            <th>License</th>\r
+          </tr>\r
+        </thead>\r
+        <tbody id="[plugins_table]"></tbody>\r
+      </table>\r
+      <p>License "htmlArea" means that the plugin is distributed under the same terms as Xinha itself.</p>\r
+    </div>\r
+    <div id="[version]" style="display:none" class="tab-content">\r
+      \r
+    </div>\r
+</div>\r
+<div class="buttons about" id="[buttons]">\r
+  <input style="float:right" type="button" id="[close]" value="_(Close)" />\r
+  <div style="float:left">\r
+    <a rel="about" class="tab tab-current" href="javascript:void(0)">About</a>\r
+    <a rel="thanks" class="tab" href="javascript:void(0)">Thanks</a>\r
+    <a rel="license" class="tab" href="javascript:void(0)">License</a>\r
+    <a rel="plugins" class="tab" href="javascript:void(0)">Plugins</a>\r
+    <a rel="version" class="tab" href="javascript:void(0)">Version</a>\r
+  </div>\r
+</div>
\ No newline at end of file
diff --git a/mailboxes/xinha/modules/ColorPicker/ColorPicker.js b/mailboxes/xinha/modules/ColorPicker/ColorPicker.js
new file mode 100644 (file)
index 0000000..c9d70f4
--- /dev/null
@@ -0,0 +1,3 @@
+/* This compressed file is part of Xinha. For uncompressed sources, forum, and bug reports, go to xinha.org */
+/* This file is part of version 0.96beta2 released Fri, 20 Mar 2009 11:01:14 +0100 */
+ColorPicker._pluginInfo={name:"colorPicker",version:"$LastChangedRevision: 1084 $".replace(/^[^:]*:\s*(.*)\s*\$$/,"$1"),developer:"James Sleeman",developer_url:"http://www.gogo.co.nz/",c_owner:"Gogo Internet Services",license:"htmlArea",sponsor:"Gogo Internet Services",sponsor_url:"http://www.gogo.co.nz/"};function ColorPicker(){}try{if(window.opener&&window.opener.Xinha){var openerColorPicker=window.opener.Xinha.colorPicker;Xinha._addEvent(window,"unload",function(){Xinha.colorPicker=openerColorPicker})}}catch(e){}Xinha.colorPicker=function(t){if(Xinha.colorPicker.savedColors.length===0){Xinha.colorPicker.loadColors()}this.is_ie_6=(Xinha.is_ie&&Xinha.ie_version<7);var i=this;var c=false;var d=false;var w=0;var u=0;this.callback=t.callback?t.callback:function(x){alert("You picked "+x)};this.websafe=t.websafe?t.websafe:false;this.savecolors=t.savecolors?t.savecolors:20;this.cellsize=parseInt(t.cellsize?t.cellsize:"10px",10);this.side=t.granularity?t.granularity:18;var h=this.side+1;var k=this.side-1;this.value=1;this.saved_cells=null;this.table=document.createElement("table");this.table.className="dialog";this.table.cellSpacing=this.table.cellPadding=0;this.table.onmouseup=function(){c=false;d=false};this.tbody=document.createElement("tbody");this.table.appendChild(this.tbody);this.table.style.border="1px solid WindowFrame";this.table.style.zIndex="1050";var b=document.createElement("tr");var g=document.createElement("td");g.colSpan=this.side;g.className="title";g.style.fontFamily="small-caption,caption,sans-serif";g.style.fontSize="x-small";g.unselectable="on";g.style.MozUserSelect="none";g.style.cursor="default";g.appendChild(document.createTextNode(Xinha._lc("Click a color...")));g.style.borderBottom="1px solid WindowFrame";b.appendChild(g);g=null;var g=document.createElement("td");g.className="title";g.colSpan=2;g.style.fontFamily="Tahoma,Verdana,sans-serif";g.style.borderBottom="1px solid WindowFrame";g.style.paddingRight="0";b.appendChild(g);var m=document.createElement("div");m.title=Xinha._lc("Close");m.className="buttonColor";m.style.height="11px";m.style.width="11px";m.style.cursor="pointer";m.onclick=function(){i.close()};m.appendChild(document.createTextNode("\u00D7"));m.align="center";m.style.verticalAlign="top";m.style.position="relative";m.style.cssFloat="right";m.style.styleFloat="right";m.style.padding="0";m.style.margin="2px";m.style.backgroundColor="transparent";m.style.fontSize="11px";if(!Xinha.is_ie){m.style.lineHeight="9px"}m.style.letterSpacing="0";g.appendChild(m);this.tbody.appendChild(b);m=b=g=null;this.constrain_cb=document.createElement("input");this.constrain_cb.type="checkbox";this.chosenColor=document.createElement("input");this.chosenColor.type="text";this.chosenColor.maxLength=7;this.chosenColor.style.width="50px";this.chosenColor.style.fontSize="11px";this.chosenColor.onchange=function(){if(/#[0-9a-f]{6,6}/i.test(this.value)){i.backSample.style.backgroundColor=this.value;i.foreSample.style.color=this.value}};this.backSample=document.createElement("div");this.backSample.appendChild(document.createTextNode("\u00A0"));this.backSample.style.fontWeight="bold";this.backSample.style.fontFamily="small-caption,caption,sans-serif";this.backSample.fontSize="x-small";this.foreSample=document.createElement("div");this.foreSample.appendChild(document.createTextNode(Xinha._lc("Sample")));this.foreSample.style.fontWeight="bold";this.foreSample.style.fontFamily="small-caption,caption,sans-serif";this.foreSample.fontSize="x-small";function q(y){var x=y.toString(16);if(x.length<2){x="0"+x}return x}function p(x){return"#"+q(x.red)+q(x.green)+q(x.blue)}function v(x,y){return Math.round(Math.round(x/y)*y)}function f(x){return parseInt(x.toString(16)+x.toString(16),16)}function s(x){x.red=f(v(parseInt(q(x.red).charAt(0),16),3));x.blue=f(v(parseInt(q(x.blue).charAt(0),16),3));x.green=f(v(parseInt(q(x.green).charAt(0),16),3));return x}function l(B,F,D){var x;if(F===0){x={red:D,green:D,blue:D}}else{B/=60;var A=Math.floor(B);var C=B-A;var z=D*(1-F);var y=D*(1-F*C);var E=D*(1-F*(1-C));switch(A){case 0:x={red:D,green:E,blue:z};break;case 1:x={red:y,green:D,blue:z};break;case 2:x={red:z,green:D,blue:E};break;case 3:x={red:z,green:y,blue:D};break;case 4:x={red:E,green:z,blue:D};break;default:x={red:D,green:z,blue:y};break}}x.red=Math.ceil(x.red*255);x.green=Math.ceil(x.green*255);x.blue=Math.ceil(x.blue*255);return x}var o=this;function a(x){x=x?x:window.event;el=x.target?x.target:x.srcElement;do{if(el==o.table){return}}while(el=el.parentNode);o.close()}this.open=function(G,A,B){this.table.style.display="";this.pick_color();if(B&&/#[0-9a-f]{6,6}/i.test(B)){this.chosenColor.value=B;this.backSample.style.backgroundColor=B;this.foreSample.style.color=B}Xinha._addEvent(document.body,"mousedown",a);this.table.style.position="absolute";var E=A;var D=0;var C=0;do{if(E.style.position=="fixed"){this.table.style.position="fixed"}D+=E.offsetTop-E.scrollTop;C+=E.offsetLeft-E.scrollLeft;E=E.offsetParent}while(E);var z,F;if(/top/.test(G)||(D+this.table.offsetHeight>document.body.offsetHeight)){if(D-this.table.offsetHeight>0){this.table.style.top=(D-this.table.offsetHeight)+"px"}else{this.table.style.top=0}}else{this.table.style.top=(D+A.offsetHeight)+"px"}if(/left/.test(G)||(C+this.table.offsetWidth>document.body.offsetWidth)){if(C-(this.table.offsetWidth-A.offsetWidth)>0){this.table.style.left=(C-(this.table.offsetWidth-A.offsetWidth))+"px"}else{this.table.style.left=0}}else{this.table.style.left=C+"px"}if(this.is_ie_6){this.iframe.style.top=this.table.style.top;this.iframe.style.left=this.table.style.left}};function n(x){i.chosenColor.value=x.colorCode;i.backSample.style.backgroundColor=x.colorCode;i.foreSample.style.color=x.colorCode;if((x.hue>=195&&x.saturation>0.5)||(x.hue===0&&x.saturation===0&&x.value<0.5)||(x.hue!==0&&i.value<0.75)){x.style.borderColor="#fff"}else{x.style.borderColor="#000"}w=x.thisrow;u=x.thiscol}function j(x){if(i.value<0.5){x.style.borderColor="#fff"}else{x.style.borderColor="#000"}k=x.thisrow;h=x.thiscol;i.chosenColor.value=i.saved_cells[w][u].colorCode;i.backSample.style.backgroundColor=i.saved_cells[w][u].colorCode;i.foreSample.style.color=i.saved_cells[w][u].colorCode}function r(y,x){i.saved_cells[y][x].style.borderColor=i.saved_cells[y][x].colorCode}this.pick_color=function(){var K,L;var J=this;var R=359/(this.side);var B=1/(this.side-1);var I=1/(this.side-1);var Q=this.constrain_cb.checked;if(this.saved_cells===null){this.saved_cells=[];for(var C=0;C<this.side;C++){var y=document.createElement("tr");this.saved_cells[C]=[];for(var z=0;z<this.side;z++){var G=document.createElement("td");if(Q){G.colorCode=p(s(l(R*C,B*z,this.value)))}else{G.colorCode=p(l(R*C,B*z,this.value))}this.saved_cells[C][z]=G;G.style.height=this.cellsize+"px";G.style.width=this.cellsize-2+"px";G.style.borderWidth="1px";G.style.borderStyle="solid";G.style.borderColor=G.colorCode;G.style.backgroundColor=G.colorCode;if(C==w&&z==u){G.style.borderColor="#000";this.chosenColor.value=G.colorCode;this.backSample.style.backgroundColor=G.colorCode;this.foreSample.style.color=G.colorCode}G.hue=R*C;G.saturation=B*z;G.thisrow=C;G.thiscol=z;G.onmousedown=function(){c=true;J.saved_cells[w][u].style.borderColor=J.saved_cells[w][u].colorCode;n(this)};G.onmouseover=function(){if(c){n(this)}};G.onmouseout=function(){if(c){this.style.borderColor=this.colorCode}};G.ondblclick=function(){Xinha.colorPicker.remember(this.colorCode,J.savecolors);J.callback(this.colorCode);J.close()};G.appendChild(document.createTextNode(" "));G.style.cursor="pointer";y.appendChild(G);G=null}var G=document.createElement("td");G.appendChild(document.createTextNode(" "));G.style.width=this.cellsize+"px";y.appendChild(G);G=null;var G=document.createElement("td");this.saved_cells[C][z+1]=G;G.appendChild(document.createTextNode(" "));G.style.width=this.cellsize-2+"px";G.style.height=this.cellsize+"px";G.constrainedColorCode=p(s(l(0,0,I*C)));G.style.backgroundColor=G.colorCode=p(l(0,0,I*C));G.style.borderWidth="1px";G.style.borderStyle="solid";G.style.borderColor=G.colorCode;if(C==k){G.style.borderColor="black"}G.hue=R*C;G.saturation=B*z;G.hsv_value=I*C;G.thisrow=C;G.thiscol=z+1;G.onmousedown=function(){d=true;J.saved_cells[k][h].style.borderColor=J.saved_cells[k][h].colorCode;J.value=this.hsv_value;J.pick_color();j(this)};G.onmouseover=function(){if(d){J.value=this.hsv_value;J.pick_color();j(this)}};G.onmouseout=function(){if(d){this.style.borderColor=this.colorCode}};G.style.cursor="pointer";y.appendChild(G);G=null;this.tbody.appendChild(y);y=null}var y=document.createElement("tr");this.saved_cells[C]=[];for(var z=0;z<this.side;z++){var G=document.createElement("td");if(Q){G.colorCode=p(s(l(0,0,I*(this.side-z-1))))}else{G.colorCode=p(l(0,0,I*(this.side-z-1)))}this.saved_cells[C][z]=G;G.style.height=this.cellsize+"px";G.style.width=this.cellsize-2+"px";G.style.borderWidth="1px";G.style.borderStyle="solid";G.style.borderColor=G.colorCode;G.style.backgroundColor=G.colorCode;G.hue=0;G.saturation=0;G.value=I*(this.side-z-1);G.thisrow=C;G.thiscol=z;G.onmousedown=function(){c=true;J.saved_cells[w][u].style.borderColor=J.saved_cells[w][u].colorCode;n(this)};G.onmouseover=function(){if(c){n(this)}};G.onmouseout=function(){if(c){this.style.borderColor=this.colorCode}};G.ondblclick=function(){Xinha.colorPicker.remember(this.colorCode,J.savecolors);J.callback(this.colorCode);J.close()};G.appendChild(document.createTextNode(" "));G.style.cursor="pointer";y.appendChild(G);G=null}this.tbody.appendChild(y);y=null;var y=document.createElement("tr");var G=document.createElement("td");y.appendChild(G);G.colSpan=this.side+2;G.style.padding="3px";if(this.websafe){var M=document.createElement("div");var H=document.createElement("label");H.appendChild(document.createTextNode(Xinha._lc("Web Safe: ")));this.constrain_cb.onclick=function(){J.pick_color()};H.appendChild(this.constrain_cb);H.style.fontFamily="small-caption,caption,sans-serif";H.style.fontSize="x-small";M.appendChild(H);G.appendChild(M);M=null}var M=document.createElement("div");var H=document.createElement("label");H.style.fontFamily="small-caption,caption,sans-serif";H.style.fontSize="x-small";H.appendChild(document.createTextNode(Xinha._lc("Color: ")));H.appendChild(this.chosenColor);M.appendChild(H);var O=document.createElement("span");O.className="buttonColor ";O.style.fontSize="13px";O.style.width="24px";O.style.marginLeft="2px";O.style.padding="0px 4px";O.style.cursor="pointer";O.onclick=function(){Xinha.colorPicker.remember(J.chosenColor.value,J.savecolors);J.callback(J.chosenColor.value);J.close()};O.appendChild(document.createTextNode(Xinha._lc("OK")));O.align="center";M.appendChild(O);G.appendChild(M);var x=document.createElement("table");x.style.width="100%";var P=document.createElement("tbody");x.appendChild(P);var A=document.createElement("tr");P.appendChild(A);var N=document.createElement("td");A.appendChild(N);N.appendChild(this.backSample);N.style.width="50%";var T=document.createElement("td");A.appendChild(T);T.appendChild(this.foreSample);T.style.width="50%";G.appendChild(x);var S=document.createElement("div");S.style.clear="both";function F(V){var U=Xinha.is_ie;var W=document.createElement("div");W.style.width=J.cellsize+"px";W.style.height=J.cellsize+"px";W.style.margin="1px";W.style.border="1px solid black";W.style.cursor="pointer";W.style.backgroundColor=V;W.style[U?"styleFloat":"cssFloat"]="left";W.ondblclick=function(){J.callback(V);J.close()};W.onclick=function(){J.chosenColor.value=V;J.backSample.style.backgroundColor=V;J.foreSample.style.color=V};S.appendChild(W)}for(var E=0;E<Xinha.colorPicker.savedColors.length;E++){F(Xinha.colorPicker.savedColors[E])}G.appendChild(S);this.tbody.appendChild(y);document.body.appendChild(this.table);if(this.is_ie_6){if(!this.iframe){this.iframe=document.createElement("iframe");this.iframe.frameBorder=0;this.iframe.src="javascript:;";this.iframe.style.position="absolute";this.iframe.style.width=this.table.offsetWidth;this.iframe.style.height=this.table.offsetHeight;document.body.insertBefore(this.iframe,this.table)}this.iframe.style.display=""}}else{for(var C=0;C<this.side;C++){for(var z=0;z<this.side;z++){if(Q){this.saved_cells[C][z].colorCode=p(s(l(R*C,B*z,this.value)))}else{this.saved_cells[C][z].colorCode=p(l(R*C,B*z,this.value))}this.saved_cells[C][z].style.backgroundColor=this.saved_cells[C][z].colorCode;this.saved_cells[C][z].style.borderColor=this.saved_cells[C][z].colorCode}}var D=this.saved_cells[w][u];this.chosenColor.value=D.colorCode;this.backSample.style.backgroundColor=D.colorCode;this.foreSample.style.color=D.colorCode;if((D.hue>=195&&D.saturation>0.5)||(D.hue===0&&D.saturation===0&&D.value<0.5)||(D.hue!==0&&J.value<0.75)){D.style.borderColor="#fff"}else{D.style.borderColor="#000"}}};this.close=function(){Xinha._removeEvent(document.body,"mousedown",a);this.table.style.display="none";if(this.is_ie_6){if(this.iframe){this.iframe.style.display="none"}}}};Xinha.colorPicker.savedColors=[];Xinha.colorPicker.remember=function(a,c){for(var b=Xinha.colorPicker.savedColors.length;b--;){if(Xinha.colorPicker.savedColors[b]==a){return false}}Xinha.colorPicker.savedColors.splice(0,0,a);Xinha.colorPicker.savedColors=Xinha.colorPicker.savedColors.slice(0,c);var d=new Date();d.setMonth(d.getMonth()+1);document.cookie="XinhaColorPicker="+escape(Xinha.colorPicker.savedColors.join("-"))+";expires="+d.toGMTString();return true};Xinha.colorPicker.loadColors=function(){var b=document.cookie.indexOf("XinhaColorPicker");if(b!=-1){var c=(document.cookie.indexOf("=",b)+1);var a=document.cookie.indexOf(";",b);if(a==-1){a=document.cookie.length}Xinha.colorPicker.savedColors=unescape(document.cookie.substring(c,a)).split("-")}};Xinha.colorPicker.InputBinding=function(b,c){var g=b.ownerDocument;var a=g.createElement("span");a.className="buttonColor";var d=this.chooser=g.createElement("span");d.className="chooser";if(b.value){d.style.backgroundColor=b.value}d.onmouseover=function(){d.className="chooser buttonColor-hilite"};d.onmouseout=function(){d.className="chooser"};d.appendChild(g.createTextNode("\u00a0"));a.appendChild(d);var f=g.createElement("span");f.className="nocolor";f.onmouseover=function(){f.className="nocolor buttonColor-hilite";f.style.color="#f00"};f.onmouseout=function(){f.className="nocolor";f.style.color="#000"};f.onclick=function(){b.value="";d.style.backgroundColor=""};f.appendChild(g.createTextNode("\u00d7"));a.appendChild(f);b.parentNode.insertBefore(a,b.nextSibling);Xinha._addEvent(b,"change",function(){d.style.backgroundColor=this.value});c=(c)?Xinha.cloneObject(c):{cellsize:"5px"};c.callback=(c.callback)?c.callback:function(h){d.style.backgroundColor=h;b.value=h};d.onclick=function(){var h=new Xinha.colorPicker(c);h.open("",d,b.value)};Xinha.freeLater(this,"chooser")};Xinha.colorPicker.InputBinding.prototype.setColor=function(a){this.chooser.style.backgroundColor=a};
\ No newline at end of file
diff --git a/mailboxes/xinha/modules/ColorPicker/lang/pt_br.js b/mailboxes/xinha/modules/ColorPicker/lang/pt_br.js
new file mode 100644 (file)
index 0000000..4b1ea7e
--- /dev/null
@@ -0,0 +1,22 @@
+// I18N constants
+//
+// LANG: "pt_br", ENCODING: UTF-8
+// Portuguese Brazilian Translation
+//
+// Author: Marcio Barbosa, <marcio@mpg.com.br>
+// MSN: tomarshall@msn.com - ICQ: 69419933
+// Site: http://www.mpg.com.br
+//
+// Last revision: 06 september 2007
+// Please don´t remove this information
+// If you modify any source, please insert a comment with your name and e-mail
+//
+// Distributed under the same terms as HTMLArea itself.
+// This notice MUST stay intact for use (see license.txt).
+{
+  "Click a color...": "Selecione uma côr...",
+  "Close": "Fechar",
+  "Color: ": "Côr:",
+  "Sample": "Exemplo",
+  "Web Safe: ": "Web Segura:"
+}
diff --git a/mailboxes/xinha/modules/CreateLink/dialog.html b/mailboxes/xinha/modules/CreateLink/dialog.html
new file mode 100644 (file)
index 0000000..5c7863d
--- /dev/null
@@ -0,0 +1,28 @@
+<h1 id="[h1]"><l10n>Insert/Modify Link</l10n></h1>
+<table border="0" style="margin-top:10px;width: 100%;">
+  <tr>
+    <td class="label"><l10n>URL:</l10n></td>
+    <td style="width: 70%"><input type="text" id="[f_href]" name="[f_href]" style="width: 90%" /></td>
+  </tr>
+  <tr>
+    <td class="label"><l10n>Title (tooltip):</l10n></td>
+    <td><input type="text" id="[f_title]" name="[f_title]" style="width: 90%" /></td>
+  </tr>
+  <tr>
+    <td class="label"><span id="[f_target_label]"><l10n>Target:</l10n></span></td>
+    <td><select id="[f_target]" name="[f_target]">
+      <option value=""><l10n>None (use implicit)</l10n></option>
+      <option value="_blank"><l10n>New window (_blank)</l10n></option>
+      <option value="_self"><l10n>Same frame (_self)</l10n></option>
+      <option value="_top"><l10n>Top frame (_top)</l10n></option>
+      <option value="_other"><l10n>Other</l10n></option>
+    </select>
+    <input type="text" name="[f_other_target]" id="[f_other_target]" size="10" style="visibility: hidden" />
+    </td>
+  </tr>
+</table>
+
+<div class="buttons" id="[buttons]">
+  <input type="button" id="[ok]"     value="_(OK)"     />
+  <input type="button" id="[cancel]" value="_(Cancel)" />
+</div>
\ No newline at end of file
diff --git a/mailboxes/xinha/modules/CreateLink/lang/pt_br.js b/mailboxes/xinha/modules/CreateLink/lang/pt_br.js
new file mode 100644 (file)
index 0000000..f75cd02
--- /dev/null
@@ -0,0 +1,18 @@
+// I18N constants
+//
+// LANG: "pt_br", ENCODING: UTF-8
+// Portuguese Brazilian Translation
+//
+// Author: Marcio Barbosa, <marcio@mpg.com.br>
+// MSN: tomarshall@msn.com - ICQ: 69419933
+// Site: http://www.mpg.com.br
+//
+// Last revision: 06 september 2007
+// Please don´t remove this information
+// If you modify any source, please insert a comment with your name and e-mail
+//
+// Distributed under the same terms as HTMLArea itself.
+// This notice MUST stay intact for use (see license.txt).
+{
+  "You need to select some text before creating a link": "Você precisa selecionar um texto antes de criar um link"
+}
diff --git a/mailboxes/xinha/modules/CreateLink/link.html b/mailboxes/xinha/modules/CreateLink/link.html
new file mode 100644 (file)
index 0000000..adad400
--- /dev/null
@@ -0,0 +1,136 @@
+<html>
+
+<head>
+  <title>Insert/Modify Link</title>
+  <script type="text/javascript" src="../../popups/popup.js"></script>
+  <link rel="stylesheet" type="text/css" href="../../popups/popup.css" />
+
+  <script type="text/javascript">
+    window.resizeTo(400, 200);
+
+Xinha = window.opener.Xinha;
+
+function i18n(str) {
+  return (Xinha._lc(str, 'Xinha'));
+}
+
+function onTargetChanged() {
+  var f = document.getElementById("f_other_target");
+  if (this.value == "_other") {
+    f.style.visibility = "visible";
+    f.select();
+    f.focus();
+  } else f.style.visibility = "hidden";
+}
+
+function Init() {
+  __dlg_translate('Xinha');
+  __dlg_init();
+
+  // Make sure the translated string appears in the drop down. (for gecko)
+  document.getElementById("f_target").selectedIndex = 1;
+  document.getElementById("f_target").selectedIndex = 0;
+
+  var param = window.dialogArguments;
+  var target_select = document.getElementById("f_target");
+  var use_target = true;
+  if (param) {
+    if ( typeof param["f_usetarget"] != "undefined" ) {
+      use_target = param["f_usetarget"];
+    }
+    if ( typeof param["f_href"] != "undefined" ) {
+      document.getElementById("f_href").value = param["f_href"];
+      document.getElementById("f_title").value = param["f_title"];
+      comboSelectValue(target_select, param["f_target"]);
+      if (target_select.value != param.f_target) {
+        var opt = document.createElement("option");
+        opt.value = param.f_target;
+        opt.innerHTML = opt.value;
+        target_select.appendChild(opt);
+        opt.selected = true;
+      }
+    }
+  }
+  if (! use_target) {
+    document.getElementById("f_target_label").style.visibility = "hidden";
+    document.getElementById("f_target").style.visibility = "hidden";
+    document.getElementById("f_other_target").style.visibility = "hidden";
+  }
+  var opt = document.createElement("option");
+  opt.value = "_other";
+  opt.innerHTML = i18n("Other");
+  target_select.appendChild(opt);
+  target_select.onchange = onTargetChanged;
+  document.getElementById("f_href").focus();
+  document.getElementById("f_href").select();
+}
+
+function onOK() {
+  var required = {
+    // f_href shouldn't be required or otherwise removing the link by entering an empty
+    // url isn't possible anymore.
+    // "f_href": i18n("You must enter the URL where this link points to")
+  };
+  for (var i in required) {
+    var el = document.getElementById(i);
+    if (!el.value) {
+      alert(required[i]);
+      el.focus();
+      return false;
+    }
+  }
+  // pass data back to the calling window
+  var fields = ["f_href", "f_title", "f_target" ];
+  var param = new Object();
+  for (var i in fields) {
+    var id = fields[i];
+    var el = document.getElementById(id);
+    param[id] = el.value;
+  }
+  if (param.f_target == "_other")
+    param.f_target = document.getElementById("f_other_target").value;
+  __dlg_close(param);
+  return false;
+}
+
+function onCancel() {
+  __dlg_close(null);
+  return false;
+}
+
+</script>
+
+</head>
+
+<body class="dialog" onload="Init()">
+<div class="title">Insert/Modify Link</div>
+<form>
+<table border="0" style="width: 100%;">
+  <tr>
+    <td class="label">URL:</td>
+    <td><input type="text" id="f_href" style="width: 100%" /></td>
+  </tr>
+  <tr>
+    <td class="label">Title (tooltip):</td>
+    <td><input type="text" id="f_title" style="width: 100%" /></td>
+  </tr>
+  <tr>
+    <td class="label"><span id="f_target_label">Target:</span></td>
+    <td><select id="f_target">
+      <option value="">None (use implicit)</option>
+      <option value="_blank">New window (_blank)</option>
+      <option value="_self">Same frame (_self)</option>
+      <option value="_top">Top frame (_top)</option>
+    </select>
+    <input type="text" name="f_other_target" id="f_other_target" size="10" style="visibility: hidden" />
+    </td>
+  </tr>
+</table>
+
+<div id="buttons">
+  <button type="submit" name="ok" onclick="return onOK();">OK</button>
+  <button type="button" name="cancel" onclick="return onCancel();">Cancel</button>
+</div>
+</form>
+</body>
+</html>
\ No newline at end of file
diff --git a/mailboxes/xinha/modules/CreateLink/link.js b/mailboxes/xinha/modules/CreateLink/link.js
new file mode 100644 (file)
index 0000000..17714c9
--- /dev/null
@@ -0,0 +1,3 @@
+/* This compressed file is part of Xinha. For uncompressed sources, forum, and bug reports, go to xinha.org */
+/* This file is part of version 0.96beta2 released Fri, 20 Mar 2009 11:01:14 +0100 */
+function CreateLink(c){this.editor=c;var a=c.config;var b=this;c.config.btnList.createlink[3]=function(){b.show(b._getSelectedAnchor())}}CreateLink._pluginInfo={name:"CreateLink",origin:"Xinha Core",version:"$LastChangedRevision: 1084 $".replace(/^[^:]*:\s*(.*)\s*\$$/,"$1"),developer:"The Xinha Core Developer Team",developer_url:"$HeadURL: http://svn.xinha.org/trunk/modules/CreateLink/link.js $".replace(/^[^:]*:\s*(.*)\s*\$$/,"$1"),sponsor:"",sponsor_url:"",license:"htmlArea"};CreateLink.prototype._lc=function(a){return Xinha._lc(a,"Xinha")};CreateLink.prototype.onGenerateOnce=function(){CreateLink.loadAssets()};CreateLink.loadAssets=function(){var self=CreateLink;if(self.loading){return}self.loading=true;Xinha._getback(_editor_url+"modules/CreateLink/dialog.html",function(getback){self.html=getback;self.dialogReady=true});Xinha._getback(_editor_url+"modules/CreateLink/pluginMethods.js",function(getback){eval(getback);self.methodsReady=true})};CreateLink.prototype.onUpdateToolbar=function(){if(!(CreateLink.dialogReady&&CreateLink.methodsReady)){this.editor._toolbarObjects.createlink.state("enabled",false)}else{this.onUpdateToolbar=null}};CreateLink.prototype.prepareDialog=function(){var a=this;var c=this.editor;var b=this.dialog=new Xinha.Dialog(c,CreateLink.html,"Xinha",{width:400});b.getElementById("ok").onclick=function(){a.apply()};b.getElementById("cancel").onclick=function(){a.dialog.hide()};if(!c.config.makeLinkShowsTarget){b.getElementById("f_target_label").style.visibility="hidden";b.getElementById("f_target").style.visibility="hidden";b.getElementById("f_other_target").style.visibility="hidden"}b.getElementById("f_target").onchange=function(){var d=b.getElementById("f_other_target");if(this.value=="_other"){d.style.visibility="visible";d.select();d.focus()}else{d.style.visibility="hidden"}};this.dialogReady=true};
\ No newline at end of file
diff --git a/mailboxes/xinha/modules/CreateLink/pluginMethods.js b/mailboxes/xinha/modules/CreateLink/pluginMethods.js
new file mode 100644 (file)
index 0000000..48b3554
--- /dev/null
@@ -0,0 +1,3 @@
+/* This compressed file is part of Xinha. For uncompressed sources, forum, and bug reports, go to xinha.org */
+/* This file is part of version 0.96beta2 released Fri, 20 Mar 2009 11:01:14 +0100 */
+CreateLink.prototype.show=function(c){if(!this.dialog){this.prepareDialog()}var d=this.editor;this.a=c;if(!c&&this.editor.selectionEmpty(this.editor.getSelection())){alert(this._lc("You need to select some text before creating a link"));return false}var b={f_href:"",f_title:"",f_target:"",f_other_target:""};if(c&&c.tagName.toLowerCase()=="a"){b.f_href=this.editor.fixRelativeLinks(c.getAttribute("href"));b.f_title=c.title;if(c.target){if(!/_self|_top_|_blank/.test(c.target)){b.f_target="_other";b.f_other_target=c.target}else{b.f_target=c.target;b.f_other_target=""}}}this.dialog.show(b)};CreateLink.prototype.apply=function(){var m=this.dialog.hide();var l=this.a;var h=this.editor;var k={href:"",target:"",title:""};if(m.f_href){k.href=m.f_href;k.title=m.f_title;if(m.f_target.value){if(m.f_target.value=="other"){k.target=m.f_other_target}else{k.target=m.f_target.value}}}if(m.f_target.value){if(m.f_target.value!="_other"){k.target=m.f_target.value}else{k.target=m.f_other_target}}if(l&&l.tagName.toLowerCase()=="a"){if(!k.href){if(confirm(this._lc("Are you sure you wish to remove this link?"))){var c=l.parentNode;while(l.hasChildNodes()){c.insertBefore(l.removeChild(l.childNodes[0]),l)}c.removeChild(l);h.updateToolbar();return}}else{for(var f in k){l.setAttribute(f,k[f])}if(Xinha.is_ie){if(/mailto:([^?<>]*)(\?[^<]*)?$/i.test(l.innerHTML)){l.innerHTML=RegExp.$1}}}}else{if(!k.href){return true}var g=Xinha.uniq("http://www.example.com/Link");h._doc.execCommand("createlink",false,g);var b=h._doc.getElementsByTagName("a");for(var f=0;f<b.length;f++){var e=b[f];if(e.href==g){if(!l){l=e}for(var d in k){e.setAttribute(d,k[d])}}}}h.selectNodeContents(l);h.updateToolbar()};CreateLink.prototype._getSelectedAnchor=function(){var d=this.editor.getSelection();var c=this.editor.createRange(d);var b=this.editor.activeElement(d);if(b!=null&&b.tagName.toLowerCase()=="a"){return b}else{b=this.editor._getFirstAncestor(d,"a");if(b!=null){return b}}return null};
\ No newline at end of file
diff --git a/mailboxes/xinha/modules/Dialogs/XinhaDialog.js b/mailboxes/xinha/modules/Dialogs/XinhaDialog.js
new file mode 100644 (file)
index 0000000..618128d
--- /dev/null
@@ -0,0 +1,3 @@
+/* This compressed file is part of Xinha. For uncompressed sources, forum, and bug reports, go to xinha.org */
+/* This file is part of version 0.96beta2 released Fri, 20 Mar 2009 11:01:14 +0100 */
+Xinha.Dialog=function(g,k,a,m,f){var r=this;this.id={};this.r_id={};this.editor=g;this.document=document;this.size=m;this.modal=(f&&f.modal===false)?false:true;this.closable=(f&&f.closable===false)?false:true;this.resizable=(f&&f.resizable===false)?false:true;this.layer=(f&&f.layer)?f.layer:0;this.centered=(f&&f.centered===true)?true:false;this.closeOnEscape=(f&&f.closeOnEscape===true)?true:false;this.rootElem=null;this.captionBar=null;this.main=null;this.background=null;this.centered=null;this.greyout=null;this.buttons=null;this.closer=null;this.icon=null;this.resizer=null;this.initialZ=null;var b=g.config.dialogOptions;if(b){if(typeof b.centered!="undefined"){this.centered=b.centered}if(typeof b.resizable!="undefined"){this.resizable=b.resizable}if(typeof b.closable!="undefined"){this.closable=b.closable}if(typeof b.greyout!="undefined"){this.greyout=b.greyout}if(typeof b.closeOnEscape!="undefined"){this.closeOnEscape=b.closeOnEscape}}var n;if(Xinha.is_ie){n=document.createElement("iframe");n.src="about:blank";n.onreadystatechange=function(){var w=window.event.srcElement.contentWindow.document;if(this.readyState=="complete"&&w&&w.body){var y=w.createElement("div");var s,x=document.styleSheets;for(var p=0;p<x.length;p++){if(x[p].id.indexOf("Xinha")!=-1&&x[p].cssText){s+=x[p].cssText}}y.innerHTML='<br><style type="text/css">\n'+s+"\n</style>";w.getElementsByTagName("body")[0].appendChild(y);w.body.className="xinha_dialog_background";if(r.modal){w.body.className+="_modal"}if(r.greyout){w.body.className+="_greyout"}}}}else{n=document.createElement("div")}n.className="xinha_dialog_background";if(this.modal){n.className+="_modal"}if(this.greyout){n.className+="_greyout"}var j=1000;if(!Xinha.Dialog.initialZ){var o=g._htmlArea;while(o){if(o.style&&parseInt(o.style.zIndex,10)>j){j=parseInt(o.style.zIndex,10)}o=o.parentNode}Xinha.Dialog.initialZ=j}j=Xinha.Dialog.initialZ;var l=n.style;l.position="absolute";l.top=0;l.left=0;l.border="none";l.overflow="hidden";l.display="none";l.zIndex=(this.modal?j+25:j+1)+this.layer;document.body.appendChild(n);this.background=n;n=null;Xinha.freeLater(this,"background");var c=document.createElement("div");c.style.position=(Xinha.is_ie||!this.modal)?"absolute":"fixed";c.style.zIndex=(this.modal?j+27:j+3)+this.layer;c.style.display="none";if(!this.modal){Xinha._addEvent(c,"mousedown",function(){Xinha.Dialog.activateModeless(r)})}c.className="dialog"+(this.modal?"":" modeless");if(Xinha.is_chrome){c.className+=" chrome"}document.body.appendChild(c);c.style.paddingBottom="10px";c.style.width=(m&&m.width)?m.width+"px":"";if(m&&m.height){if(Xinha.ie_version<7){c.style.height=m.height+"px"}else{c.style.minHeight=m.height+"px"}}k=this.translateHtml(k,a);var h=document.createElement("div");c.appendChild(h);h.innerHTML=k;this.fixupDOM(h,a);var u=h.removeChild(h.getElementsByTagName("h1")[0]);c.insertBefore(u,h);Xinha._addEvent(u,"mousedown",function(i){r.dragStart(i)});u.style.MozUserSelect="none";u.style.WebkitUserSelect="none";u.unselectable="on";u.onselectstart=function(){return false};this.buttons=document.createElement("div");l=this.buttons.style;l.position="absolute";l.top="0";l.right="2px";c.appendChild(this.buttons);if(this.closable&&this.closeOnEscape){Xinha._addEvent(document,"keypress",function(i){if(i.keyCode==27){if(Xinha.Dialog.activeModeless==r||r.modal){r.hide();return true}}})}this.closer=null;if(this.closable){this.closer=document.createElement("div");this.closer.className="closeButton";this.closer.onmousedown=function(i){this.className="closeButton buttonClick";Xinha._stopEvent(Xinha.getEvent(i));return false};this.closer.onmouseout=function(i){this.className="closeButton";Xinha._stopEvent(Xinha.getEvent(i));return false};this.closer.onmouseup=function(){this.className="closeButton";r.hide();return false};this.buttons.appendChild(this.closer);var v=document.createElement("span");v.className="innerX";v.style.position="relative";v.style.top="-3px";v.appendChild(document.createTextNode("\u00D7"));this.closer.appendChild(v);v=null}this.icon=document.createElement("img");var t=this.icon;t.className="icon";t.src=g.config.iconList.dialogCaption;t.style.position="absolute";t.style.top="3px";t.style.left="2px";t.ondrag=function(){return false};u.style.paddingLeft="22px";c.appendChild(this.icon);var e=c.getElementsByTagName("*");for(var q=0;q<e.length;q++){var d=e[q];if(d.tagName.toLowerCase()=="textarea"||d.tagName.toLowerCase()=="input"){}else{d.unselectable="on"}}this.resizer=null;if(this.resizable){this.resizer=document.createElement("div");this.resizer.className="resizeHandle";l=this.resizer.style;l.position="absolute";l.bottom="0px";l.right="0px";l.MozUserSelect="none";Xinha._addEvent(this.resizer,"mousedown",function(i){r.resizeStart(i)});c.appendChild(this.resizer)}this.rootElem=c;this.captionBar=u;this.main=h;u=null;c=null;h=null;Xinha.freeLater(this,"rootElem");Xinha.freeLater(this,"captionBar");Xinha.freeLater(this,"main");Xinha.freeLater(this,"buttons");Xinha.freeLater(this,"closer");Xinha.freeLater(this,"icon");Xinha.freeLater(this,"resizer");Xinha.freeLater(this,"document");this.size={}};Xinha.Dialog.prototype.onresize=function(){return true};Xinha.Dialog.prototype.show=function(m){var c=this.rootElem;var n=c.style;var l=this.modal;var b=this.editor.scrollPos();this.scrollPos=b;var i=this;if(this.attached){this.editor.showPanel(c)}if(Xinha._someEditorHasBeenActivated){this._lastRange=this.editor.saveSelection();if(Xinha.is_ie&&!l){i.saveSelection=function(){i._lastRange=i.editor.saveSelection()};Xinha._addEvent(this.editor._doc,"mouseup",i.saveSelection)}}if(l){this.editor.deactivateEditor();this.editor.suspendUpdateToolbar=true;this.editor.currentModal=i}if(Xinha.is_ff2&&l){this._restoreTo=[this.editor._textArea.style.display,this.editor._iframe.style.visibility,this.editor.hidePanels()];this.editor._textArea.style.display="none";this.editor._iframe.style.visibility="hidden"}if(!this.attached){if(l){this.showBackground();this.posBackground({top:0,left:0});this.resizeBackground(Xinha.Dialog.calcFullBgSize())}else{this.background.style.display=""}Xinha.Dialog.fadeIn(this.rootElem,100,function(){if(l){var o=i.rootElem.getElementsByTagName("input");for(var p=0;p<o.length;p++){if(o[p].type=="text"){o[p].focus();break}}}});var k=c.offsetHeight;var e=c.offsetWidth;var h=Xinha.viewportSize();var f=h.y;var g=h.x;if(k>f){n.height=f+"px";if(c.scrollHeight>k){i.main.style.overflowY="auto"}}if(this.size.top&&this.size.left){n.top=parseInt(this.size.top,10)+"px";n.left=parseInt(this.size.left,10)+"px"}else{if(this.editor.btnClickEvent&&!this.centered){var a=this.editor.btnClickEvent;if(n.position=="absolute"){n.top=a.clientY+this.scrollPos.y+"px"}else{n.top=a.clientY+"px"}if(k+c.offsetTop>f){n.top=(n.position=="absolute"?this.scrollPos.y:0)+"px"}if(n.position=="absolute"){n.left=a.clientX+this.scrollPos.x+"px"}else{n.left=a.clientX+"px"}if(e+c.offsetLeft>g){n.left=a.clientX-e+"px";if(c.offsetLeft<0){n.left=0}}this.editor.btnClickEvent=null}else{var j=(f-k)/2;var d=(g-e)/2;n.top=((j>0)?j:0)+"px";n.left=((d>0)?d:0)+"px"}}}this.width=e;this.height=k;if(!l){this.resizeBackground({width:e+"px",height:k+"px"});this.posBackground({top:n.top,left:n.left})}if(typeof m!="undefined"){this.setValues(m)}this.dialogShown=true};Xinha.Dialog.prototype.hide=function(){if(this.attached){this.editor.hidePanel(this.rootElem)}else{Xinha.Dialog.fadeOut(this.rootElem);this.hideBackground();var a=this;if(Xinha.is_ff2&&this.modal){this.editor._textArea.style.display=this._restoreTo[0];this.editor._iframe.style.visibility=this._restoreTo[1];this.editor.showPanels(this._restoreTo[2])}if(!this.editor._isFullScreen&&this.modal){window.scroll(this.scrollPos.x,this.scrollPos.y)}if(Xinha.is_ie&&!this.modal){Xinha._removeEvent(this.editor._doc,"mouseup",a.saveSelection)}if(this.modal){this.editor.suspendUpdateToolbar=false;this.editor.currentModal=null;this.editor.activateEditor()}}if(this.modal){this.editor.restoreSelection(this._lastRange)}this.dialogShown=false;this.editor.updateToolbar();this.editor.focusEditor();return this.getValues()};Xinha.Dialog.prototype.toggle=function(){if(this.rootElem.style.display=="none"){this.show()}else{this.hide()}};Xinha.Dialog.prototype.collapse=function(){if(this.collapsed){this.collapsed=false;this.show()}else{this.main.style.height=0;this.collapsed=true}};Xinha.Dialog.prototype.getElementById=function(a){return this.document.getElementById(this.id[a]?this.id[a]:a)};Xinha.Dialog.prototype.getElementsByName=function(a){var b=this.document.getElementsByName(this.id[a]?this.id[a]:a);return Xinha.collectionToArray(b)};Xinha.Dialog.prototype.getElementsByClassName=function(a){return Xinha.getElementsByClassName(this.rootElem,a)};Xinha.Dialog.prototype.dragStart=function(c){if(this.attached||this.dragging){return}if(!this.modal){this.posBackground({top:0,left:0});this.resizeBackground(Xinha.Dialog.calcFullBgSize());this.editor.suspendUpdateToolbar=true}c=Xinha.getEvent(c);var b=this;b.dragging=true;b.scrollPos=b.editor.scrollPos();var a=b.rootElem.style;b.xOffs=c.offsetX||c.layerX;b.yOffs=c.offsetY||c.layerY;b.mouseMove=function(d){b.dragIt(d)};Xinha._addEvent(document,"mousemove",b.mouseMove);if(Xinha.is_ie){Xinha._addEvent(this.background.contentWindow.document,"mousemove",b.mouseMove)}b.mouseUp=function(d){b.dragEnd(d)};Xinha._addEvent(document,"mouseup",b.mouseUp);if(Xinha.is_ie){Xinha._addEvent(this.background.contentWindow.document,"mouseup",b.mouseUp)}};Xinha.Dialog.prototype.dragIt=function(c){var b=this;if(!b.dragging){return false}var d,e,a;if(b.rootElem.style.position=="absolute"){d=(c.clientY+this.scrollPos.y)-b.yOffs+"px";e=(c.clientX+this.scrollPos.x)-b.xOffs+"px";a={top:d,left:e}}else{if(b.rootElem.style.position=="fixed"){d=c.clientY-b.yOffs+"px";e=c.clientX-b.xOffs+"px";a={top:d,left:e}}}b.posDialog(a)};Xinha.Dialog.prototype.dragEnd=function(b){var a=this;if(!this.modal){this.editor.suspendUpdateToolbar=false}if(!a.dragging){return false}a.dragging=false;Xinha._removeEvent(document,"mousemove",a.mouseMove);if(Xinha.is_ie){Xinha._removeEvent(this.background.contentWindow.document,"mousemove",a.mouseMove)}Xinha._removeEvent(document,"mouseup",a.mouseUp);if(Xinha.is_ie){Xinha._removeEvent(this.background.contentWindow.document,"mouseup",a.mouseUp)}var c=a.rootElem.style;a.size.top=c.top;a.size.left=c.left;if(!this.modal){this.sizeBgToDialog()}};Xinha.Dialog.prototype.resizeStart=function(c){var b=this;if(b.resizing){return}b.resizing=true;if(!this.modal){this.editor.suspendUpdateToolbar=true;this.posBackground({top:0,left:0});this.resizeBackground(Xinha.Dialog.calcFullBgSize())}b.scrollPos=b.editor.scrollPos();var a=b.rootElem.style;a.minHeight="";a.overflow="hidden";b.xOffs=parseInt(a.left,10);b.yOffs=parseInt(a.top,10);b.mouseMove=function(d){b.resizeIt(d)};Xinha._addEvent(document,"mousemove",b.mouseMove);if(Xinha.is_ie){Xinha._addEvent(this.background.contentWindow.document,"mousemove",b.mouseMove)}b.mouseUp=function(d){b.resizeEnd(d)};Xinha._addEvent(document,"mouseup",b.mouseUp);if(Xinha.is_ie){Xinha._addEvent(this.background.contentWindow.document,"mouseup",b.mouseUp)}};Xinha.Dialog.prototype.resizeIt=function(c){var b=this;if(!b.resizing){return false}var d,e;if(b.rootElem.style.position=="absolute"){d=c.clientY+b.scrollPos.y;e=c.clientX+b.scrollPos.x}else{d=c.clientY;e=c.clientX}e-=b.xOffs;d-=b.yOffs;var a={};a.width=((e>10)?e:10)+8+"px";a.height=((d>10)?d:10)+"px";b.sizeDialog(a);b.width=b.rootElem.offsetWidth;b.height=b.rootElem.offsetHeight;b.onresize()};Xinha.Dialog.prototype.resizeEnd=function(b){var a=this;a.resizing=false;if(!this.modal){this.editor.suspendUpdateToolbar=false}Xinha._removeEvent(document,"mousemove",a.mouseMove);if(Xinha.is_ie){Xinha._removeEvent(this.background.contentWindow.document,"mouseup",a.mouseUp)}Xinha._removeEvent(document,"mouseup",a.mouseUp);if(Xinha.is_ie){Xinha._removeEvent(this.background.contentWindow.document,"mouseup",a.mouseUp)}a.size.width=a.rootElem.offsetWidth;a.size.height=a.rootElem.offsetHeight;if(!this.modal){this.sizeBgToDialog()}};Xinha.Dialog.prototype.attachToPanel=function(c){var b=this;var a=this.rootElem;var d=this.editor;this.attached=true;this.rootElem.side=c;this.captionBar.ondblclick=function(e){b.detachFromPanel(Xinha.getEvent(e))};a.style.position="static";a.parentNode.removeChild(a);this.background.style.display="none";this.captionBar.style.paddingLeft="3px";this.resizer.style.display="none";if(this.closable){this.closer.style.display="none"}this.icon.style.display="none";if(c=="left"||c=="right"){a.style.width=d.config.panel_dimensions[c]}else{a.style.width=""}Xinha.addClasses(a,"panel");d._panels[c].panels.push(a);d._panels[c].div.appendChild(a);d.notifyOf("panel_change",{action:"add",panel:a})};Xinha.Dialog.prototype.detachFromPanel=function(){var b=this;var a=b.rootElem;var d=a.style;var c=b.editor;b.attached=false;var e=Xinha.getElementTopLeft(a);d.position="absolute";d.top=e.top+"px";d.left=e.left+"px";b.captionBar.style.paddingLeft="22px";b.resizer.style.display="";if(b.closable){b.closer.style.display=""}b.icon.style.display="";if(b.size.width){a.style.width=b.size.width+"px"}Xinha.removeClasses(a,"panel");c.removePanel(a);document.body.appendChild(a);b.captionBar.ondblclick=function(){b.attachToPanel(a.side)};this.background.style.display="";this.sizeBgToDialog()};Xinha.Dialog.calcFullBgSize=function(){var b=Xinha.pageSize();var a=Xinha.viewportSize();return{width:(b.x>a.x?b.x:a.x)+"px",height:(b.x>a.y?b.y:a.y)+"px"}};Xinha.Dialog.prototype.sizeBgToDialog=function(){var a=this.rootElem.style;var b=this.background.style;b.top=a.top;b.left=a.left;b.width=a.width;b.height=a.height};Xinha.Dialog.prototype.hideBackground=function(){Xinha.Dialog.fadeOut(this.background)};Xinha.Dialog.prototype.showBackground=function(){Xinha.Dialog.fadeIn(this.background,70)};Xinha.Dialog.prototype.posBackground=function(a){if(this.background.style.display!="none"){this.background.style.top=a.top;this.background.style.left=a.left}};Xinha.Dialog.prototype.resizeBackground=function(a){if(this.background.style.display!="none"){this.background.style.width=a.width;this.background.style.height=a.height}};Xinha.Dialog.prototype.posDialog=function(b){var a=this.rootElem.style;a.left=b.left;a.top=b.top};Xinha.Dialog.prototype.sizeDialog=function(c){var b=this.rootElem.style;b.height=c.height;b.width=c.width;var d=parseInt(c.width,10);var a=parseInt(c.height,10)-this.captionBar.offsetHeight;this.main.style.height=(a>20)?a:20+"px";this.main.style.width=(d>10)?d:10+"px"};Xinha.Dialog.prototype.setValues=function(d){for(var g in d){if(typeof g=="string"){var c=this.getElementsByName(g);if(!c){continue}for(var a=0;a<c.length;a++){var h=c[a];switch(h.tagName.toLowerCase()){case"select":for(var f=0;f<h.options.length;f++){if(typeof d[g]=="object"){for(var b=0;b<d[g].length;b++){if(d[g][b]==h.options[f].value){h.options[f].selected=true}}}else{if(d[g]==h.options[f].value){h.options[f].selected=true}}}break;case"textarea":case"input":switch(h.getAttribute("type")){case"radio":if(h.value==d[g]){h.checked=true}break;case"checkbox":if(typeof d[g]=="object"){for(f in d[g]){if(d[g][f]==h.value){h.checked=true}}}else{if(d[g]==h.value){h.checked=true}}break;default:h.value=d[g];break}}}}}};Xinha.Dialog.prototype.getValues=function(){var d=[];var b=Xinha.collectionToArray(this.rootElem.getElementsByTagName("input")).append(Xinha.collectionToArray(this.rootElem.getElementsByTagName("textarea"))).append(Xinha.collectionToArray(this.rootElem.getElementsByTagName("select")));for(var a=0;a<b.length;a++){var f=b[a];if(!(f.name&&this.r_id[f.name])){continue}if(typeof d[this.r_id[f.name]]=="undefined"){d[this.r_id[f.name]]=null}var c=d[this.r_id[f.name]];switch(f.tagName.toLowerCase()){case"select":if(f.multiple){if(!c.push){if(c!==null){c=[c]}else{c=[]}}for(var e=0;e<f.options.length;e++){if(f.options[e].selected){c.push(f.options[e].value)}}}else{if(f.selectedIndex>=0){c=f.options[f.selectedIndex]}}break;default:switch(f.type.toLowerCase()){case"radio":if(f.checked){c=f.value}break;case"checkbox":if(c===null){if(this.getElementsByName(this.r_id[f.name]).length>1){c=[]}}if(f.checked){if(c!==null&&typeof c=="object"&&c.push){c.push(f.value)}else{c=f.value}}break;default:c=f.value;break}}d[this.r_id[f.name]]=c}return d};Xinha.Dialog.prototype.translateHtml=function(c,a){var b=this;if(typeof a=="function"){b._lc=a}else{if(a){this._lc=function(d){return Xinha._lc(d,a)}}else{this._lc=function(d){return d}}}c=c.replace(/((?:name)|(?:id))=(['"])\[([a-z0-9_]+)\]\2/ig,function(f,e,d,g){return e+"="+d+b.createId(g)+d}).replace(/<l10n>(.*?)<\/l10n>/ig,function(d,e){return b._lc(e)}).replace(/\="_\((.*?)\)"/g,function(d,e){return'="'+b._lc(e)+'"'});return c};Xinha.Dialog.prototype.fixupDOM=function(j,e){var g=this;if(typeof e!="string"){e="GenericPlugin"}var a=function(l,m){switch(m){case"editor":return _editor_url;case"plugin":return Xinha.getPluginDir(e);case"images":return g.editor.imgURL("images")}};var h=Xinha.collectionToArray(j.getElementsByTagName("img"));for(var f=0;f<h.length;++f){var b=h[f];var c=b.getAttribute("src");if(c){var d=c.replace(/^\[(editor|plugin|images)\]/,a);if(d!=c){b.setAttribute("src",d)}}}var k=Xinha.collectionToArray(j.getElementsByTagName("a"));for(var f=0;f<k.length;++f){var i=k[f];var c=i.getAttribute("href");if(c){var d=c.replace(/^\[(editor|plugin|images)\]/,a);if(d!=c){i.setAttribute("href",d)}}}};Xinha.Dialog.prototype.createId=function(b){var a=this;if(typeof a.id[b]=="undefined"){a.id[b]=Xinha.uniq("Dialog");a.r_id[a.id[b]]=b}return a.id[b]};Xinha.Dialog.activateModeless=function(a){if(Xinha.Dialog.activeModeless==a||a.attached){return}if(Xinha.Dialog.activeModeless){Xinha.Dialog.activeModeless.rootElem.style.zIndex=parseInt(Xinha.Dialog.activeModeless.rootElem.style.zIndex,10)-10}Xinha.Dialog.activeModeless=a;Xinha.Dialog.activeModeless.rootElem.style.zIndex=parseInt(Xinha.Dialog.activeModeless.rootElem.style.zIndex,10)+10};Xinha.Dialog.setOpacity=function(a,b){if(typeof a.style.filter!="undefined"){a.style.filter=(b<100)?"alpha(opacity="+b+")":""}else{a.style.opacity=b/100}};Xinha.Dialog.fadeIn=function(c,b,f,a,d){a=a||1;d=d||25;b=b||100;c.op=c.op||0;var e=c.op;if(c.style.display=="none"){Xinha.Dialog.setOpacity(c,0);c.style.display=""}if(e<b){c.op+=d;Xinha.Dialog.setOpacity(c,e);c.timeOut=setTimeout(function(){Xinha.Dialog.fadeIn(c,b,f,a,d)},a)}else{Xinha.Dialog.setOpacity(c,b);c.op=b;c.timeOut=null;if(typeof f=="function"){f.call()}}};Xinha.Dialog.fadeOut=function(b,a,c){a=a||1;c=c||30;if(typeof b.op=="undefined"){b.op=100}var d=b.op;if(d>=0){b.op-=c;Xinha.Dialog.setOpacity(b,d);b.timeOut=setTimeout(function(){Xinha.Dialog.fadeOut(b,a,c)},a)}else{Xinha.Dialog.setOpacity(b,0);b.style.display="none";b.op=0;b.timeOut=null}};
\ No newline at end of file
diff --git a/mailboxes/xinha/modules/Dialogs/dialog.js b/mailboxes/xinha/modules/Dialogs/dialog.js
new file mode 100644 (file)
index 0000000..45ac438
--- /dev/null
@@ -0,0 +1,3 @@
+/* This compressed file is part of Xinha. For uncompressed sources, forum, and bug reports, go to xinha.org */
+/* This file is part of version 0.96beta2 released Fri, 20 Mar 2009 11:01:14 +0100 */
+function Dialog(a,c,d){if(typeof d=="undefined"){d=window}if(typeof window.showModalDialog=="function"&&!Xinha.is_webkit){Dialog._return=function(e){if(typeof c=="function"){c(e)}};var b=window.showModalDialog(a,d,"dialogheight=300;dialogwidth=400;resizable=yes")}else{Dialog._geckoOpenModal(a,c,d)}}Dialog._parentEvent=function(a){setTimeout(function(){if(Dialog._modal&&!Dialog._modal.closed){Dialog._modal.focus()}},50);try{if(Dialog._modal&&!Dialog._modal.closed){Xinha._stopEvent(a)}}catch(b){}};Dialog._return=null;Dialog._modal=null;Dialog._arguments=null;Dialog._selection=null;Dialog._geckoOpenModal=function(c,f,j){var h=window.open(c,"hadialog","toolbar=no,menubar=no,personalbar=no,width=10,height=10,scrollbars=no,resizable=yes,modal=yes,dependable=yes");Dialog._modal=h;Dialog._arguments=j;function b(e){Xinha._addEvent(e,"click",Dialog._parentEvent);Xinha._addEvent(e,"mousedown",Dialog._parentEvent);Xinha._addEvent(e,"focus",Dialog._parentEvent)}function a(e){Xinha._removeEvent(e,"click",Dialog._parentEvent);Xinha._removeEvent(e,"mousedown",Dialog._parentEvent);Xinha._removeEvent(e,"focus",Dialog._parentEvent)}b(window);for(var d=0;d<window.frames.length;d++){try{b(window.frames[d])}catch(g){}}Dialog._return=function(m){if(m&&f){f(m)}a(window);for(var k=0;k<window.frames.length;k++){try{a(window.frames[k])}catch(l){}}Dialog._modal=null};Dialog._modal.focus()};
\ No newline at end of file
diff --git a/mailboxes/xinha/modules/Dialogs/panel-dialog.js b/mailboxes/xinha/modules/Dialogs/panel-dialog.js
new file mode 100644 (file)
index 0000000..9d2bbd4
--- /dev/null
@@ -0,0 +1,77 @@
+
+Xinha.PanelDialog = function(editor, side, html, localizer)
+{
+  this.id    = { };
+  this.r_id  = { }; // reverse lookup id
+  this.editor   = editor;
+  this.document = document;
+  this.rootElem = editor.addPanel(side);
+
+  var dialog = this;
+  if(typeof localizer == 'function')
+  {
+    this._lc = localizer;
+  }
+  else if(localizer)
+  {
+    this._lc = function(string)
+    {
+      return Xinha._lc(string,localizer);
+    };
+  }
+  else
+  {
+    this._lc = function(string)
+    {
+      return string;
+    };
+  }
+
+  html = html.replace(/\[([a-z0-9_]+)\]/ig,
+                      function(fullString, id)
+                      {
+                        if(typeof dialog.id[id] == 'undefined')
+                        {
+                          dialog.id[id] = Xinha.uniq('Dialog');
+                          dialog.r_id[dialog.id[id]] = id;
+                        }
+                        return dialog.id[id];
+                      }
+             ).replace(/<l10n>(.*?)<\/l10n>/ig,
+                       function(fullString,translate)
+                       {
+                         return dialog._lc(translate) ;
+                       }
+             ).replace(/="_\((.*?)\)"/g,
+                       function(fullString, translate)
+                       {
+                         return '="' + dialog._lc(translate) + '"';
+                       }
+             );
+
+  this.rootElem.innerHTML = html;
+};
+
+Xinha.PanelDialog.prototype.show = function(values)
+{
+  this.setValues(values);
+  this.editor.showPanel(this.rootElem);
+};
+
+Xinha.PanelDialog.prototype.hide = function()
+{
+  this.editor.hidePanel(this.rootElem);
+  return this.getValues();
+};
+
+Xinha.PanelDialog.prototype.onresize   = Xinha.Dialog.prototype.onresize;
+
+Xinha.PanelDialog.prototype.toggle     = Xinha.Dialog.prototype.toggle;
+
+Xinha.PanelDialog.prototype.setValues  = Xinha.Dialog.prototype.setValues;
+
+Xinha.PanelDialog.prototype.getValues  = Xinha.Dialog.prototype.getValues;
+
+Xinha.PanelDialog.prototype.getElementById    = Xinha.Dialog.prototype.getElementById;
+
+Xinha.PanelDialog.prototype.getElementsByName = Xinha.Dialog.prototype.getElementsByName;
\ No newline at end of file
diff --git a/mailboxes/xinha/modules/Dialogs/popupwin.js b/mailboxes/xinha/modules/Dialogs/popupwin.js
new file mode 100644 (file)
index 0000000..3c4ba98
--- /dev/null
@@ -0,0 +1,3 @@
+/* This compressed file is part of Xinha. For uncompressed sources, forum, and bug reports, go to xinha.org */
+/* This file is part of version 0.96beta2 released Fri, 20 Mar 2009 11:01:14 +0100 */
+function PopupWin(d,g,i,e){this.editor=d;this.handler=i;var f=window.open("","__ha_dialog","toolbar=no,menubar=no,personalbar=no,width=600,height=600,left=20,top=40,scrollbars=no,resizable=yes");this.window=f;var h=f.document;this.doc=h;var j=this;var a=document.baseURI||document.URL;if(a&&a.match(/(.*)\/([^\/]+)/)){a=RegExp.$1+"/"}if(typeof _editor_url!="undefined"&&!(/^\//.test(_editor_url))&&!(/http:\/\//.test(_editor_url))){a+=_editor_url}else{a=_editor_url}if(!(/\/$/.test(a))){a+="/"}this.baseURL=a;h.open();var c="<html><head><title>"+g+"</title>\n";c+='<style type="text/css">@import url('+_editor_url+"Xinha.css);</style>\n";if(_editor_skin!=""){c+='<style type="text/css">@import url('+_editor_url+"skins/"+_editor_skin+"/skin.css);</style>\n"}c+="</head>\n";c+='<body class="dialog popupwin" id="--HA-body"></body></html>';h.write(c);h.close();function b(){var k=h.body;if(!k){setTimeout(b,25);return false}f.title=g;h.documentElement.style.padding="0px";h.documentElement.style.margin="0px";var l=h.createElement("div");l.className="content";j.content=l;k.appendChild(l);j.element=k;e(j);f.focus()}b()}PopupWin.prototype.callHandler=function(){var c=["input","textarea","select"];var h={};for(var f=c.length;--f>=0;){var a=c[f];var d=this.content.getElementsByTagName(a);for(var b=0;b<d.length;++b){var e=d[b];var g=e.value;if(e.tagName.toLowerCase()=="input"){if(e.type=="checkbox"){g=e.checked}}h[e.name]=g}}this.handler(this,h);return false};PopupWin.prototype.close=function(){this.window.close()};PopupWin.prototype.addButtons=function(){var a=this;var e=this.doc.createElement("div");this.content.appendChild(e);e.id="buttons";e.className="buttons";for(var d=0;d<arguments.length;++d){var c=arguments[d];var b=this.doc.createElement("button");e.appendChild(b);b.innerHTML=Xinha._lc(c,"Xinha");switch(c.toLowerCase()){case"ok":Xinha.addDom0Event(b,"click",function(){a.callHandler();a.close();return false});break;case"cancel":Xinha.addDom0Event(b,"click",function(){a.close();return false});break}}};PopupWin.prototype.showAtElement=function(){var a=this;setTimeout(function(){var b=a.content.offsetWidth+4;var e=a.content.offsetHeight+4;var d=a.content;var c=d.style;c.position="absolute";c.left=parseInt((b-d.offsetWidth)/2,10)+"px";c.top=parseInt((e-d.offsetHeight)/2,10)+"px";if(Xinha.is_gecko){a.window.innerWidth=b;a.window.innerHeight=e}else{a.window.resizeTo(b+8,e+70)}},25)};
\ No newline at end of file
diff --git a/mailboxes/xinha/modules/FullScreen/full-screen.js b/mailboxes/xinha/modules/FullScreen/full-screen.js
new file mode 100644 (file)
index 0000000..9812011
--- /dev/null
@@ -0,0 +1,3 @@
+/* This compressed file is part of Xinha. For uncompressed sources, forum, and bug reports, go to xinha.org */
+/* This file is part of version 0.96beta2 released Fri, 20 Mar 2009 11:01:14 +0100 */
+function FullScreen(c,b){this.editor=c;c._superclean_on=false;var a=c.config;a.registerIcon("fullscreen",[_editor_url+a.imgURL+"ed_buttons_main.png",8,0]);a.registerIcon("fullscreenrestore",[_editor_url+a.imgURL+"ed_buttons_main.png",9,0]);a.registerButton("fullscreen",this._lc("Maximize/Minimize Editor"),a.iconList.fullscreen,true,function(f,g,d){f._fullScreen()});a.addToolbarElement("fullscreen","popupeditor",0)}FullScreen._pluginInfo={name:"FullScreen",version:"1.0",developer:"James Sleeman",developer_url:"http://www.gogo.co.nz/",c_owner:"Gogo Internet Services",license:"htmlArea",sponsor:"Gogo Internet Services",sponsor_url:"http://www.gogo.co.nz/"};FullScreen.prototype._lc=function(a){return Xinha._lc(a,{url:_editor_url+"modules/FullScreen/lang/",context:"FullScreen"})};Xinha.prototype._fullScreen=function(){var g=this;var f=g.config;function j(){if(!g._isFullScreen||g._sizing){return false}g._sizing=true;var n=Xinha.viewportSize();var i=n.y-g.config.fullScreenMargins[0]-g.config.fullScreenMargins[2];var e=n.x-g.config.fullScreenMargins[1]-g.config.fullScreenMargins[3];g.sizeEditor(e+"px",i+"px",true,true);g._sizing=false;if(g._toolbarObjects.fullscreen){g._toolbarObjects.fullscreen.swapImage(f.iconList.fullscreenrestore)}}function l(){if(g._isFullScreen||g._sizing){return false}g._sizing=true;g.initSize();g._sizing=false;if(g._toolbarObjects.fullscreen){g._toolbarObjects.fullscreen.swapImage(f.iconList.fullscreen)}}function a(){if(g._isFullScreen){window.scroll(0,0);window.setTimeout(a,150)}}if(typeof this._isFullScreen=="undefined"){this._isFullScreen=false;if(g.target!=g._iframe){Xinha._addEvent(window,"resize",j)}}if(Xinha.is_gecko){this.deactivateEditor()}if(this._isFullScreen){this._htmlArea.style.position="";if(!Xinha.is_ie){this._htmlArea.style.border=""}try{if(Xinha.is_ie&&document.compatMode=="CSS1Compat"){var b=document.getElementsByTagName("html")}else{var b=document.getElementsByTagName("body")}b[0].style.overflow=""}catch(g){}this._isFullScreen=false;l();var d=this._htmlArea;while((d=d.parentNode)&&d.style){d.style.position=d._xinha_fullScreenOldPosition;d._xinha_fullScreenOldPosition=null}if(Xinha.ie_version<7){var h=document.getElementsByTagName("select");for(var c=0;c<h.length;++c){h[c].style.visibility="visible"}}window.scroll(this._unScroll.x,this._unScroll.y)}else{this._unScroll={x:(window.pageXOffset)?(window.pageXOffset):(document.documentElement)?document.documentElement.scrollLeft:document.body.scrollLeft,y:(window.pageYOffset)?(window.pageYOffset):(document.documentElement)?document.documentElement.scrollTop:document.body.scrollTop};var d=this._htmlArea;while((d=d.parentNode)&&d.style){d._xinha_fullScreenOldPosition=d.style.position;d.style.position="static"}if(Xinha.ie_version<7){var h=document.getElementsByTagName("select");var m,k;for(var c=0;c<h.length;++c){m=h[c];k=false;while(m=m.parentNode){if(m==this._htmlArea){k=true;break}}if(!k&&h[c].style.visibility!="hidden"){h[c].style.visibility="hidden"}}}window.scroll(0,0);this._htmlArea.style.position="absolute";this._htmlArea.style.zIndex=999;this._htmlArea.style.left=g.config.fullScreenMargins[3]+"px";this._htmlArea.style.top=g.config.fullScreenMargins[0]+"px";if(!Xinha.is_ie&&!Xinha.is_webkit){this._htmlArea.style.border="none"}this._isFullScreen=true;a();try{if(Xinha.is_ie&&document.compatMode=="CSS1Compat"){var b=document.getElementsByTagName("html")}else{var b=document.getElementsByTagName("body")}b[0].style.overflow="hidden"}catch(g){}j()}if(Xinha.is_gecko){this.activateEditor()}this.focusEditor()};
\ No newline at end of file
diff --git a/mailboxes/xinha/modules/FullScreen/lang/de.js b/mailboxes/xinha/modules/FullScreen/lang/de.js
new file mode 100644 (file)
index 0000000..72ff5a3
--- /dev/null
@@ -0,0 +1,6 @@
+// I18N constants
+// LANG: "de", ENCODING: UTF-8
+// translated: Raimund Meyer xinha@ray-of-light.org
+{
+  "Maximize/Minimize Editor": "Editor maximieren/verkleinern"
+};
diff --git a/mailboxes/xinha/modules/FullScreen/lang/es.js b/mailboxes/xinha/modules/FullScreen/lang/es.js
new file mode 100644 (file)
index 0000000..9303b69
--- /dev/null
@@ -0,0 +1,6 @@
+// I18N constants
+// LANG: "es", ENCODING: UTF-8
+// translated: Derick Leony <dleony@gmail.com>
+{
+  "Maximize/Minimize Editor": "Maximizar/Minimizar Editor"
+};
\ No newline at end of file
diff --git a/mailboxes/xinha/modules/FullScreen/lang/fr.js b/mailboxes/xinha/modules/FullScreen/lang/fr.js
new file mode 100644 (file)
index 0000000..af4b014
--- /dev/null
@@ -0,0 +1,5 @@
+// I18N constants
+// LANG: "fr", ENCODING: UTF-8
+{
+  "Maximize/Minimize Editor": "Agrandir/Réduire l'éditeur"
+};
\ No newline at end of file
diff --git a/mailboxes/xinha/modules/FullScreen/lang/ja.js b/mailboxes/xinha/modules/FullScreen/lang/ja.js
new file mode 100644 (file)
index 0000000..f10c4da
--- /dev/null
@@ -0,0 +1,5 @@
+// I18N constants
+// LANG: "ja", ENCODING: UTF-8
+{
+  "Maximize/Minimize Editor": "エディタの最大化/最小化"
+};
\ No newline at end of file
diff --git a/mailboxes/xinha/modules/FullScreen/lang/nb.js b/mailboxes/xinha/modules/FullScreen/lang/nb.js
new file mode 100644 (file)
index 0000000..aba7c2b
--- /dev/null
@@ -0,0 +1,6 @@
+// I18N constants
+// LANG: "nb", ENCODING: UTF-8
+// translated: Kim Steinhaug, http://www.steinhaug.com/, kim@steinhaug.com
+{
+  "Maximize/Minimize Editor": "Maksimer/Minimer WYSIWYG vindu"
+};
\ No newline at end of file
diff --git a/mailboxes/xinha/modules/FullScreen/lang/nl.js b/mailboxes/xinha/modules/FullScreen/lang/nl.js
new file mode 100644 (file)
index 0000000..4fcdc3f
--- /dev/null
@@ -0,0 +1,6 @@
+// I18N constants
+// LANG: "nl", ENCODING: UTF-8
+// translated: Arthur Bogaart a.bogaart@onehippo.org
+{
+  "Maximize/Minimize Editor": "Editor maximaliseren/verkleinen"
+};
diff --git a/mailboxes/xinha/modules/FullScreen/lang/pl.js b/mailboxes/xinha/modules/FullScreen/lang/pl.js
new file mode 100644 (file)
index 0000000..0c639bb
--- /dev/null
@@ -0,0 +1,6 @@
+// I18N constants
+// LANG: "pl", ENCODING: UTF-8
+// translated: Krzysztof Kotowicz, koto1sa@o2.pl, http://www.eskot.krakow.pl/portfolio
+{
+  "Maximize/Minimize Editor": "Maksymalizuj/minimalizuj edytor"
+};
diff --git a/mailboxes/xinha/modules/FullScreen/lang/pt_br.js b/mailboxes/xinha/modules/FullScreen/lang/pt_br.js
new file mode 100644 (file)
index 0000000..06e4812
--- /dev/null
@@ -0,0 +1,18 @@
+// I18N constants
+//
+// LANG: "pt_br", ENCODING: UTF-8
+// Portuguese Brazilian Translation
+//
+// Author: Marcio Barbosa, <marcio@mpg.com.br>
+// MSN: tomarshall@msn.com - ICQ: 69419933
+// Site: http://www.mpg.com.br
+//
+// Last revision: 06 september 2007
+// Please don´t remove this information
+// If you modify any source, please insert a comment with your name and e-mail
+//
+// Distributed under the same terms as HTMLArea itself.
+// This notice MUST stay intact for use (see license.txt).
+{
+  "Maximize/Minimize Editor": "Maximizar/Minimizar Editor"
+};
diff --git a/mailboxes/xinha/modules/FullScreen/lang/ru.js b/mailboxes/xinha/modules/FullScreen/lang/ru.js
new file mode 100644 (file)
index 0000000..b2248ef
--- /dev/null
@@ -0,0 +1,6 @@
+// I18N constants\r
+// LANG: "ru", ENCODING: UTF-8\r
+// Author: Andrei Blagorazumov, a@fnr.ru\r
+{\r
+  "Maximize/Minimize Editor": "Развернуть/Свернуть редактор"\r
+};
\ No newline at end of file
diff --git a/mailboxes/xinha/modules/FullScreen/lang/sv.js b/mailboxes/xinha/modules/FullScreen/lang/sv.js
new file mode 100755 (executable)
index 0000000..c27fee5
--- /dev/null
@@ -0,0 +1,6 @@
+// I18N constants
+// LANG: "sv" (Swedish), ENCODING: UTF-8
+// translated: Erik Dalén, <dalen@jpl.se>
+{
+  "Maximize/Minimize Editor": "Maximera/Minimera WYSIWYG fönster"
+};
diff --git a/mailboxes/xinha/modules/Gecko/Gecko.js b/mailboxes/xinha/modules/Gecko/Gecko.js
new file mode 100644 (file)
index 0000000..49d571a
--- /dev/null
@@ -0,0 +1,3 @@
+/* This compressed file is part of Xinha. For uncompressed sources, forum, and bug reports, go to xinha.org */
+/* This file is part of version 0.96beta2 released Fri, 20 Mar 2009 11:01:14 +0100 */
+Gecko._pluginInfo={name:"Gecko",origin:"Xinha Core",version:"$LastChangedRevision: 1084 $".replace(/^[^:]*:\s*(.*)\s*\$$/,"$1"),developer:"The Xinha Core Developer Team",developer_url:"$HeadURL: http://svn.xinha.org/trunk/modules/Gecko/Gecko.js $".replace(/^[^:]*:\s*(.*)\s*\$$/,"$1"),sponsor:"",sponsor_url:"",license:"htmlArea"};function Gecko(a){this.editor=a;a.Gecko=this}Gecko.prototype.onKeyPress=function(u){var d=this.editor;var j=d.getSelection();if(d.isShortCut(u)){switch(d.getKey(u).toLowerCase()){case"z":if(d._unLink&&d._unlinkOnUndo){Xinha._stopEvent(u);d._unLink();d.updateToolbar();return true}break;case"a":sel=d.getSelection();sel.removeAllRanges();range=d.createRange();range.selectNodeContents(d._doc.body);sel.addRange(range);Xinha._stopEvent(u);return true;break;case"v":if(!d.config.htmlareaPaste){return true}break}}switch(d.getKey(u)){case" ":var g=function(y,m){var x=y.nextSibling;if(typeof m=="string"){m=d._doc.createElement(m)}var s=y.parentNode.insertBefore(m,x);Xinha.removeFromParent(y);s.appendChild(y);x.data=" "+x.data;j.collapse(x,1);d._unLink=function(){var a=s.firstChild;s.removeChild(a);s.parentNode.insertBefore(a,s);Xinha.removeFromParent(s);d._unLink=null;d._unlinkOnUndo=false};d._unlinkOnUndo=true;return s};if(d.config.convertUrlsToLinks&&j&&j.isCollapsed&&j.anchorNode.nodeType==3&&j.anchorNode.data.length>3&&j.anchorNode.data.indexOf(".")>=0){var t=j.anchorNode.data.substring(0,j.anchorOffset).search(/\S{4,}$/);if(t==-1){break}if(d._getFirstAncestor(j,"a")){break}var h=j.anchorNode.data.substring(0,j.anchorOffset).replace(/^.*?(\S*)$/,"$1");var e=h.match(Xinha.RE_email);if(e){var v=j.anchorNode;var f=v.splitText(j.anchorOffset);var k=v.splitText(t);g(k,"a").href="mailto:"+e[0];break}RE_date=/([0-9]+\.)+/;RE_ip=/(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/;var p=h.match(Xinha.RE_url);if(p){if(RE_date.test(h)){break}var i=j.anchorNode;var b=i.splitText(j.anchorOffset);var q=i.splitText(t);g(q,"a").href=(p[1]?p[1]:"http://")+p[2];break}}break}switch(u.keyCode){case 27:if(d._unLink){d._unLink();Xinha._stopEvent(u)}break;break;case 8:case 46:if(!u.shiftKey&&this.handleBackspace()){Xinha._stopEvent(u)}default:d._unlinkOnUndo=false;if(j.anchorNode&&j.anchorNode.nodeType==3){var w=d._getFirstAncestor(j,"a");if(!w){break}if(!w._updateAnchTimeout){if(j.anchorNode.data.match(Xinha.RE_email)&&w.href.match("mailto:"+j.anchorNode.data.trim())){var l=j.anchorNode;var c=function(){w.href="mailto:"+l.data.trim();w._updateAnchTimeout=setTimeout(c,250)};w._updateAnchTimeout=setTimeout(c,1000);break}var n=j.anchorNode.data.match(Xinha.RE_url);if(n&&w.href.match(new RegExp("http(s)?://"+Xinha.escapeStringForRegExp(j.anchorNode.data.trim())))){var o=j.anchorNode;var r=function(){n=o.data.match(Xinha.RE_url);if(n){w.href=(n[1]?n[1]:"http://")+n[2]}w._updateAnchTimeout=setTimeout(r,250)};w._updateAnchTimeout=setTimeout(r,1000)}}}break}return false};Gecko.prototype.handleBackspace=function(){var a=this.editor;setTimeout(function(){var e=a.getSelection();var g=a.createRange(e);var f=g.startContainer;var i=g.startOffset;var c=g.endContainer;var h=g.endOffset;var j=f.nextSibling;if(f.nodeType==3){f=f.parentNode}if(!(/\S/.test(f.tagName))){var d=document.createElement("p");while(f.firstChild){d.appendChild(f.firstChild)}f.parentNode.insertBefore(d,f);Xinha.removeFromParent(f);var b=g.cloneRange();b.setStartBefore(j);b.setEndAfter(j);b.extractContents();e.removeAllRanges();e.addRange(b)}},10)};Gecko.prototype.inwardHtml=function(a){a=a.replace(/<(\/?)strong(\s|>|\/)/ig,"<$1b$2");a=a.replace(/<(\/?)em(\s|>|\/)/ig,"<$1i$2");a=a.replace(/<(\/?)del(\s|>|\/)/ig,"<$1strike$2");return a};Gecko.prototype.outwardHtml=function(a){a=a.replace(/<script[\s]*src[\s]*=[\s]*['"]chrome:\/\/.*?["']>[\s]*<\/script>/ig,"");return a};Gecko.prototype.onExecCommand=function(f,e,d){try{this.editor._doc.execCommand("useCSS",false,true);this.editor._doc.execCommand("styleWithCSS",false,false)}catch(l){}switch(f){case"paste":alert(Xinha._lc("The Paste button does not work in Mozilla based web browsers (technical security reasons). Press CTRL-V on your keyboard to paste directly."));return true;break;case"removeformat":var k=this.editor;var c=k.getSelection();var m=k.saveSelection(c);var j=k.createRange(c);var g=k._doc.body.getElementsByTagName("*");var a=(j.startContainer.nodeType==1)?j.startContainer:j.startContainer.parentNode;var h,b;if(c.isCollapsed){j.selectNodeContents(k._doc.body)}for(h=0;h<g.length;h++){b=g[h];if(j.isPointInRange(b,0)||(g[h]==a&&j.startOffset==0)){b.removeAttribute("style")}}this.editor._doc.execCommand(f,e,d);k.restoreSelection(m);return true;break}return false};Gecko.prototype.onMouseDown=function(b){if(b.target.tagName.toLowerCase()=="hr"){var c=this.editor.getSelection();var a=this.editor.createRange(c);a.selectNode(b.target)}};Xinha.prototype.insertNodeAtSelection=function(b){if(b.ownerDocument!=this._doc){try{b=this._doc.adoptNode(b)}catch(f){}}var d=this.getSelection();var a=this.createRange(d);d.removeAllRanges();a.deleteContents();var c=a.startContainer;var h=a.startOffset;var g=b;switch(c.nodeType){case 3:if(b.nodeType==3){c.insertData(h,b.data);a=this.createRange();a.setEnd(c,h+b.length);a.setStart(c,h+b.length);d.addRange(a)}else{c=c.splitText(h);if(b.nodeType==11){g=g.firstChild}c.parentNode.insertBefore(b,c);this.selectNodeContents(g);this.updateToolbar()}break;case 1:if(b.nodeType==11){g=g.firstChild}c.insertBefore(b,c.childNodes[h]);this.selectNodeContents(g);this.updateToolbar();break}};Xinha.prototype.getParentElement=function(c){if(typeof c=="undefined"){c=this.getSelection()}var a=this.createRange(c);try{var d=a.commonAncestorContainer;if(!a.collapsed&&a.startContainer==a.endContainer&&a.startOffset-a.endOffset<=1&&a.startContainer.hasChildNodes()){d=a.startContainer.childNodes[a.startOffset]}while(d.nodeType==3){d=d.parentNode}return d}catch(b){return null}};Xinha.prototype.activeElement=function(a){if((a===null)||this.selectionEmpty(a)){return null}if(!a.isCollapsed){if(a.anchorNode.childNodes.length>a.anchorOffset&&a.anchorNode.childNodes[a.anchorOffset].nodeType==1){return a.anchorNode.childNodes[a.anchorOffset]}else{if(a.anchorNode.nodeType==1){return a.anchorNode}else{return null}}}return null};Xinha.prototype.selectionEmpty=function(a){if(!a){return true}if(typeof a.isCollapsed!="undefined"){return a.isCollapsed}return true};Xinha.prototype.saveSelection=function(){return this.createRange(this.getSelection()).cloneRange()};Xinha.prototype.restoreSelection=function(a){try{var b=this.getSelection();b.removeAllRanges();b.addRange(a)}catch(c){}};Xinha.prototype.selectNodeContents=function(b,d){this.focusEditor();this.forceRedraw();var a;var e=typeof d=="undefined"?true:false;var c=this.getSelection();a=this._doc.createRange();if(!b){c.removeAllRanges();return}if(e&&b.tagName&&b.tagName.toLowerCase().match(/table|img|input|textarea|select/)){a.selectNode(b)}else{a.selectNodeContents(b)}c.removeAllRanges();c.addRange(a);if(typeof d!="undefined"){if(d){c.collapse(a.startContainer,a.startOffset)}else{c.collapse(a.endContainer,a.endOffset)}}};Xinha.prototype.insertHTML=function(c){var e=this.getSelection();var a=this.createRange(e);this.focusEditor();var b=this._doc.createDocumentFragment();var f=this._doc.createElement("div");f.innerHTML=c;while(f.firstChild){b.appendChild(f.firstChild)}var d=this.insertNodeAtSelection(b)};Xinha.prototype.getSelectedHTML=function(){var b=this.getSelection();if(b.isCollapsed){return""}var a=this.createRange(b);return Xinha.getHTML(a.cloneContents(),false,this)};Xinha.prototype.getSelection=function(){return this._iframe.contentWindow.getSelection()};Xinha.prototype.createRange=function(b){this.activateEditor();if(typeof b!="undefined"){try{return b.getRangeAt(0)}catch(a){return this._doc.createRange()}}else{return this._doc.createRange()}};Xinha.prototype.isKeyEvent=function(a){return a.type=="keypress"};Xinha.prototype.getKey=function(a){return String.fromCharCode(a.charCode)};Xinha.getOuterHTML=function(a){return(new XMLSerializer()).serializeToString(a)};Xinha.cc=String.fromCharCode(8286);Xinha.prototype.setCC=function(h){var c=Xinha.cc;try{if(h=="textarea"){var d=this._textArea;var f=d.selectionStart;var j=d.value.substring(0,f);var a=d.value.substring(f,d.value.length);if(a.match(/^[^<]*>/)){var i=a.indexOf(">")+1;d.value=j+a.substring(0,i)+c+a.substring(i,a.length)}else{d.value=j+c+a}d.value=d.value.replace(new RegExp("(&[^"+c+"]*?)("+c+")([^"+c+"]*?;)"),"$1$3$2");d.value=d.value.replace(new RegExp("(<script[^>]*>[^"+c+"]*?)("+c+")([^"+c+"]*?<\/script>)"),"$1$3$2");d.value=d.value.replace(new RegExp("^([^"+c+"]*)("+c+")([^"+c+"]*<body[^>]*>)(.*?)"),"$1$3$2$4")}else{var b=this.getSelection();b.getRangeAt(0).insertNode(this._doc.createTextNode(c))}}catch(g){}};Xinha.prototype.findCC=function(h){if(h=="textarea"){var d=this._textArea;var i=d.value.indexOf(Xinha.cc);if(i==-1){return}var c=i+Xinha.cc.length;var j=d.value.substring(0,i);var a=d.value.substring(c,d.value.length);d.value=j;d.scrollTop=d.scrollHeight;var b=d.scrollTop;d.value+=a;d.setSelectionRange(i,i);d.focus();d.scrollTop=b}else{try{var k=this._doc;k.body.innerHTML=k.body.innerHTML.replace(new RegExp(Xinha.cc),'<span id="XinhaEditingPostion"></span>');var g=k.getElementById("XinhaEditingPostion");this.selectNodeContents(g);this.scrollToElement(g);g.parentNode.removeChild(g);this._iframe.contentWindow.focus()}catch(f){}}};Xinha.prototype._standardToggleBorders=Xinha.prototype._toggleBorders;Xinha.prototype._toggleBorders=function(){var a=this._standardToggleBorders();var c=this._doc.getElementsByTagName("TABLE");for(var b=0;b<c.length;b++){c[b].style.display="none";c[b].style.display="table"}return a};Xinha.getDoctype=function(a){var b="";if(a.doctype){b+="<!DOCTYPE "+a.doctype.name+" PUBLIC ";b+=a.doctype.publicId?'"'+a.doctype.publicId+'"':"";b+=a.doctype.systemId?' "'+a.doctype.systemId+'"':"";b+=">"}return b};
\ No newline at end of file
diff --git a/mailboxes/xinha/modules/Gecko/paraHandlerBest.js b/mailboxes/xinha/modules/Gecko/paraHandlerBest.js
new file mode 100644 (file)
index 0000000..2ba8fe2
--- /dev/null
@@ -0,0 +1,3 @@
+/* This compressed file is part of Xinha. For uncompressed sources, forum, and bug reports, go to xinha.org */
+/* This file is part of version 0.96beta2 released Fri, 20 Mar 2009 11:01:14 +0100 */
+EnterParagraphs._pluginInfo={name:"EnterParagraphs",version:"1.0",developer:"Adam Wright",developer_url:"http://www.hipikat.org/",sponsor:"The University of Western Australia",sponsor_url:"http://www.uwa.edu.au/",license:"htmlArea"};EnterParagraphs.prototype._whiteSpace=/^\s*$/;EnterParagraphs.prototype._pExclusions=/^(address|blockquote|body|dd|div|dl|dt|fieldset|form|h1|h2|h3|h4|h5|h6|hr|li|noscript|ol|p|pre|table|ul)$/i;EnterParagraphs.prototype._pContainers=/^(body|del|div|fieldset|form|ins|map|noscript|object|td|th)$/i;EnterParagraphs.prototype._pBreak=/^(address|pre|blockquote)$/i;EnterParagraphs.prototype._permEmpty=/^(area|base|basefont|br|col|frame|hr|img|input|isindex|link|meta|param)$/i;EnterParagraphs.prototype._elemSolid=/^(applet|br|button|hr|img|input|table)$/i;EnterParagraphs.prototype._pifySibling=/^(address|blockquote|del|div|dl|fieldset|form|h1|h2|h3|h4|h5|h6|hr|ins|map|noscript|object|ol|p|pre|table|ul|)$/i;EnterParagraphs.prototype._pifyForced=/^(ul|ol|dl|table)$/i;EnterParagraphs.prototype._pifyParent=/^(dd|dt|li|td|th|tr)$/i;function EnterParagraphs(a){this.editor=a;if(Xinha.is_gecko){this.onKeyPress=this.__onKeyPress}}EnterParagraphs.prototype.name="EnterParagraphs";EnterParagraphs.prototype.insertAdjacentElement=function(b,c,a){if(c=="BeforeBegin"){b.parentNode.insertBefore(a,b)}else{if(c=="AfterEnd"){b.nextSibling?b.parentNode.insertBefore(a,b.nextSibling):b.parentNode.appendChild(a)}else{if(c=="AfterBegin"&&b.firstChild){b.insertBefore(a,b.firstChild)}else{if(c=="BeforeEnd"||c=="AfterBegin"){b.appendChild(a)}}}}};EnterParagraphs.prototype.forEachNodeUnder=function(b,e,c,d){var f,a;if(b.nodeType==11&&b.firstChild){f=b.firstChild;a=b.lastChild}else{f=a=b}while(a.lastChild){a=a.lastChild}return this.forEachNode(f,a,e,c,d)};EnterParagraphs.prototype.forEachNode=function(e,j,f,h,l){var i=function(m,n){return(n=="ltr"?m.nextSibling:m.previousSibling)};var g=function(m,n){return(n=="ltr"?m.firstChild:m.lastChild)};var k,b,d;var a=l;var c=false;while(k!=h=="ltr"?j:e){if(!k){k=h=="ltr"?e:j}else{if(g(k,h)){k=g(k,h)}else{if(i(k,h)){k=i(k,h)}else{b=k;while(!i(b,h)&&b!=(h=="ltr"?j:e)){b=b.parentNode}k=(i(b,h)?i(b,h):b)}}}c=(k==(h=="ltr"?j:e));switch(f){case"cullids":d=this._fenCullIds(k,a);break;case"find_fill":d=this._fenEmptySet(k,a,f,c);break;case"find_cursorpoint":d=this._fenEmptySet(k,a,f,c);break}if(d[0]){return d[1]}if(c){break}if(d[1]){a=d[1]}}return false};EnterParagraphs.prototype._fenEmptySet=function(c,b,d,a){if(!b&&!c.firstChild){b=c}if((c.nodeType==1&&this._elemSolid.test(c.nodeName))||(c.nodeType==3&&!this._whiteSpace.test(c.nodeValue))||(c.nodeType!=1&&c.nodeType!=3)){switch(d){case"find_fill":return new Array(true,false);break;case"find_cursorpoint":return new Array(true,c);break}}if(a){return new Array(true,b)}return new Array(false,b)};EnterParagraphs.prototype._fenCullIds=function(c,a,b){if(a.id){b[a.id]?a.id="":b[a.id]=true}return new Array(false,b)};EnterParagraphs.prototype.processSide=function(a,c){var d=function(i,h){return(h=="left"?i.previousSibling:i.nextSibling)};var e=c=="left"?a.startContainer:a.endContainer;var f=c=="left"?a.startOffset:a.endOffset;var b,g=e;while(g.nodeType==1&&!this._permEmpty.test(g.nodeName)){g=(f?g.lastChild:g.firstChild)}while(b=b?(d(b,c)?d(b,c):b.parentNode):g){if(d(b,c)){if(this._pExclusions.test(d(b,c).nodeName)){return this.processRng(a,c,b,d(b,c),(c=="left"?"AfterEnd":"BeforeBegin"),true,false)}}else{if(this._pContainers.test(b.parentNode.nodeName)){return this.processRng(a,c,b,b.parentNode,(c=="left"?"AfterBegin":"BeforeEnd"),true,false)}else{if(this._pExclusions.test(b.parentNode.nodeName)){if(this._pBreak.test(b.parentNode.nodeName)){return this.processRng(a,c,b,b.parentNode,(c=="left"?"AfterBegin":"BeforeEnd"),false,(c=="left"?true:false))}else{return this.processRng(a,c,(b=b.parentNode),(d(b,c)?d(b,c):b.parentNode),(d(b,c)?(c=="left"?"AfterEnd":"BeforeBegin"):(c=="left"?"AfterBegin":"BeforeEnd")),false,false)}}}}}};EnterParagraphs.prototype.processRng=function(a,g,m,o,c,k,i){var d=g=="left"?a.startContainer:a.endContainer;var f=g=="left"?a.startOffset:a.endOffset;var h=this.editor;var p=h._doc.createRange();p.selectNode(m);if(g=="left"){p.setEnd(d,f);a.setStart(p.startContainer,p.startOffset)}else{if(g=="right"){p.setStart(d,f);a.setEnd(p.endContainer,p.endOffset)}}var b=p.cloneContents();this.forEachNodeUnder(b,"cullids","ltr",this.takenIds,false,false);var l,e,n;l=g=="left"?(p.endContainer.nodeType==3?true:false):(p.startContainer.nodeType==3?false:true);e=l?p.startOffset:p.endOffset;l=l?p.startContainer:p.endContainer;if(this._pifyParent.test(l.nodeName)&&l.parentNode.childNodes.item(0)==l){while(!this._pifySibling.test(l.nodeName)){l=l.parentNode}}if(b.nodeType==11&&!b.firstChild){if(l.nodeName!="BODY"||(l.nodeName=="BODY"&&e!=0)){b.appendChild(h._doc.createElement(l.nodeName))}}n=this.forEachNodeUnder(b,"find_fill","ltr",false);if(n&&this._pifySibling.test(l.nodeName)&&((e==0)||(e==1&&this._pifyForced.test(l.nodeName)))){m=h._doc.createElement("p");m.innerHTML="&nbsp;";if((g=="left")&&l.previousSibling){return new Array(l.previousSibling,"AfterEnd",m)}else{if((g=="right")&&l.nextSibling){return new Array(l.nextSibling,"BeforeBegin",m)}else{return new Array(l.parentNode,(g=="left"?"AfterBegin":"BeforeEnd"),m)}}}if(n){if(n.nodeType==3){n=h._doc.createDocumentFragment()}if((n.nodeType==1&&!this._elemSolid.test())||n.nodeType==11){var j=h._doc.createElement("p");j.innerHTML="&nbsp;";n.appendChild(j)}else{var j=h._doc.createElement("p");j.innerHTML="&nbsp;";n.parentNode.insertBefore(parentNode,n)}}if(n){m=n}else{m=(k||(b.nodeType==11&&!b.firstChild))?h._doc.createElement("p"):h._doc.createDocumentFragment();m.appendChild(b)}if(i){m.appendChild(h._doc.createElement("br"))}return new Array(o,c,m)};EnterParagraphs.prototype.isNormalListItem=function(a){var c,b;c=a.startContainer;if((typeof c.nodeName!="undefined")&&(c.nodeName.toLowerCase()=="li")){b=c}else{if((typeof c.parentNode!="undefined")&&(typeof c.parentNode.nodeName!="undefined")&&(c.parentNode.nodeName.toLowerCase()=="li")){b=c.parentNode}else{return false}}if(!b.previousSibling){if(a.startOffset==0){return false}}return true};EnterParagraphs.prototype.__onKeyPress=function(a){if(a.keyCode==13&&!a.shiftKey&&this.editor._iframe.contentWindow.getSelection){return this.handleEnter(a)}};EnterParagraphs.prototype.handleEnter=function(j){var b;var c=this.editor.getSelection();var a=this.editor.createRange(c);if(this.isNormalListItem(a)){return true}this.takenIds=new Object();var f=this.processSide(a,"left");var d=this.processSide(a,"right");b=d[2];c.removeAllRanges();a.deleteContents();var g=this.forEachNodeUnder(b,"find_cursorpoint","ltr",false,true);if(!g){alert("INTERNAL ERROR - could not find place to put cursor after ENTER")}if(f){this.insertAdjacentElement(f[0],f[1],f[2])}if(d&&d.nodeType!=1){this.insertAdjacentElement(d[0],d[1],d[2])}if((g)&&(this._permEmpty.test(g.nodeName))){var i=0;while(g.parentNode.childNodes.item(i)!=g){i++}c.collapse(g.parentNode,i)}else{try{c.collapse(g,0);if(g.nodeType==3){g=g.parentNode}this.editor.scrollToElement(g)}catch(h){}}this.editor.updateToolbar();Xinha._stopEvent(j);return true};
\ No newline at end of file
diff --git a/mailboxes/xinha/modules/GetHtml/DOMwalk.js b/mailboxes/xinha/modules/GetHtml/DOMwalk.js
new file mode 100644 (file)
index 0000000..52b2cdb
--- /dev/null
@@ -0,0 +1,3 @@
+/* This compressed file is part of Xinha. For uncompressed sources, forum, and bug reports, go to xinha.org */
+/* This file is part of version 0.96beta2 released Fri, 20 Mar 2009 11:01:14 +0100 */
+function GetHtmlImplementation(a){this.editor=a}GetHtmlImplementation._pluginInfo={name:"GetHtmlImplementation DOMwalk",origin:"Xinha Core",version:"$LastChangedRevision: 1167 $".replace(/^[^:]*:\s*(.*)\s*\$$/,"$1"),developer:"The Xinha Core Developer Team",developer_url:"$HeadURL: http://svn.xinha.org/trunk/modules/GetHtml/DOMwalk.js $".replace(/^[^:]*:\s*(.*)\s*\$$/,"$1"),sponsor:"",sponsor_url:"",license:"htmlArea"};Xinha.getHTML=function(a,c,b){return Xinha.getHTMLWrapper(a,c,b)};Xinha.emptyAttributes=" checked disabled ismap readonly nowrap compact declare selected defer multiple noresize noshade ";Xinha.getHTMLWrapper=function(m,c,j,d){var h="";if(!d){d=""}switch(m.nodeType){case 10:case 6:case 12:break;case 2:break;case 4:h+=(Xinha.is_ie?("\n"+d):"")+"<![CDATA["+m.data+"]]>";break;case 5:h+="&"+m.nodeValue+";";break;case 7:h+=(Xinha.is_ie?("\n"+d):"")+"<?"+m.target+" "+m.data+" ?>";break;case 1:case 11:case 9:var k;var g;var p=(m.nodeType==1)?m.tagName.toLowerCase():"";if((p=="script"||p=="noscript")&&j.config.stripScripts){break}if(c){c=!(j.config.htmlRemoveTags&&j.config.htmlRemoveTags.test(p))}if(Xinha.is_ie&&p=="head"){if(c){h+=(Xinha.is_ie?("\n"+d):"")+"<head>"}var r=RegExp.multiline;RegExp.multiline=true;var f=m.innerHTML.replace(Xinha.RE_tagName,function(s,i,a){return i+a.toLowerCase()}).replace(/\s*=\s*(([^'"][^>\s]*)([>\s])|"([^"]+)"|'([^']+)')/g,'="$2$4$5"$3').replace(/<(link|meta)((\s*\S*="[^"]*")*)>([\n\r]*)/g,"<$1$2 />\n");RegExp.multiline=r;h+=f+"\n";if(c){h+=(Xinha.is_ie?("\n"+d):"")+"</head>"}break}else{if(c){k=(!(m.hasChildNodes()||Xinha.needsClosingTag(m)));h+=((Xinha.isBlockElement(m))?("\n"+d):"")+"<"+m.tagName.toLowerCase();var q=m.attributes;for(g=0;g<q.length;++g){var n=q.item(g);if(Xinha.is_real_gecko&&(m.tagName.toLowerCase()=="img")&&((n.nodeName.toLowerCase()=="height")||(n.nodeName.toLowerCase()=="width"))){if(!m.complete||m.naturalWidth===0){continue}}if(typeof n.nodeValue=="object"){continue}if(m.tagName.toLowerCase()=="input"&&m.type.toLowerCase()=="checkbox"&&n.nodeName.toLowerCase()=="value"&&n.nodeValue.toLowerCase()=="on"){continue}if(!n.specified&&!(m.tagName.toLowerCase().match(/input|option/)&&n.nodeName=="value")&&!(m.tagName.toLowerCase().match(/area/)&&n.nodeName.match(/shape|coords/i))){continue}var b=n.nodeName.toLowerCase();if(/_moz_editor_bogus_node/.test(b)||(b=="class"&&n.nodeValue=="webkit-block-placeholder")){h="";break}if(/(_moz)|(contenteditable)|(_msh)/.test(b)){continue}var o;if(Xinha.emptyAttributes.indexOf(" "+b+" ")!=-1){o=b}else{if(b!="style"){if(typeof m[n.nodeName]!="undefined"&&b!="href"&&b!="src"&&!(/^on/.test(b))){o=m[n.nodeName]}else{o=n.nodeValue;if(b=="class"){o=o.replace(/Apple-style-span/,"");if(!o){continue}}if(Xinha.is_ie&&(b=="href"||b=="src")){o=j.stripBaseURL(o)}if(j.config.only7BitPrintablesInURLs&&(b=="href"||b=="src")){o=o.replace(/([^!-~]+)/g,function(a){return escape(a)})}}}else{if(!Xinha.is_ie){o=m.style.cssText.replace(/rgb\(.*?\)/ig,function(a){return Xinha._colorToRgb(a)})}}}if(/^(_moz)?$/.test(o)){continue}h+=" "+b+'="'+Xinha.htmlEncode(o)+'"'}if(Xinha.is_ie&&m.style.cssText){h+=' style="'+m.style.cssText.toLowerCase()+'"'}if(Xinha.is_ie&&m.tagName.toLowerCase()=="option"&&m.selected){h+=' selected="selected"'}if(h!==""){if(k&&p=="p"){h+=">&nbsp;</p>"}else{if(k){h+=" />"}else{h+=">"}}}}}var e=false;if(p=="script"||p=="noscript"){if(!j.config.stripScripts){if(Xinha.is_ie){var l="\n"+m.innerHTML.replace(/^[\n\r]*/,"").replace(/\s+$/,"")+"\n"+d}else{var l=(m.hasChildNodes())?m.firstChild.nodeValue:""}h+=l+"</"+p+">"+((Xinha.is_ie)?"\n":"")}}else{if(p=="pre"){h+=((Xinha.is_ie)?"\n":"")+m.innerHTML.replace(/<br>/g,"\n")+"</"+p+">"}else{for(g=m.firstChild;g;g=g.nextSibling){if(!e&&g.nodeType==1&&Xinha.isBlockElement(g)){e=true}h+=Xinha.getHTMLWrapper(g,true,j,d+"  ")}if(c&&!k){h+=(((Xinha.isBlockElement(m)&&e)||p=="head"||p=="html")?("\n"+d):"")+"</"+m.tagName.toLowerCase()+">"}}}break;case 3:if(/^script|noscript|style$/i.test(m.parentNode.tagName)){h=m.data}else{if(m.data.trim()==""){if(m.data){h=" "}else{h=""}}else{h=Xinha.htmlEncode(m.data)}}break;case 8:h="<!--"+m.data+"-->";break}return h};
\ No newline at end of file
diff --git a/mailboxes/xinha/modules/GetHtml/TransformInnerHTML.js b/mailboxes/xinha/modules/GetHtml/TransformInnerHTML.js
new file mode 100644 (file)
index 0000000..0c17a2b
--- /dev/null
@@ -0,0 +1,3 @@
+/* This compressed file is part of Xinha. For uncompressed sources, forum, and bug reports, go to xinha.org */
+/* This file is part of version 0.96beta2 released Fri, 20 Mar 2009 11:01:14 +0100 */
+function GetHtmlImplementation(a){this.editor=a}GetHtmlImplementation._pluginInfo={name:"GetHtmlImplementation TransformInnerHTML",version:"1.0",developer:"Nelson Bright",developer_url:"http://www.brightworkweb.com/",sponsor:"",sponsor_url:"",license:"htmlArea"};Xinha.RegExpCache=[/<\s*\/?([^\s\/>]+)[\s*\/>]/gi,/(\s+)_moz[^=>]*=[^\s>]*/gi,/\s*=\s*(([^'"][^>\s]*)([>\s])|"([^"]+)"|'([^']+)')/g,/\/>/g,/<(br|hr|img|input|link|meta|param|embed|area)((\s*\S*="[^"]*")*)>/g,/(<\w+\s+(\w*="[^"]*"\s+)*)(checked|compact|declare|defer|disabled|ismap|multiple|no(href|resize|shade|wrap)|readonly|selected)([\s>])/gi,/(="[^']*)'([^'"]*")/,/&(?=(?!(#[0-9]{2,5};|[a-zA-Z0-9]{2,6};|#x[0-9a-fA-F]{2,4};))[^<]*>)/g,/<\s+/g,/\s+(\/)?>/g,/\s{2,}/g,/\s+([^=\s]+)((="[^"]+")|([\s>]))/g,/\s+contenteditable(=[^>\s\/]*)?/gi,/((href|src)=")([^\s]*)"/g,/<\/?(div|p|h[1-6]|table|tr|td|th|ul|ol|li|dl|dt|dd|blockquote|object|br|hr|img|embed|param|pre|script|html|head|body|meta|link|title|area|input|form|textarea|select|option)[^>]*>/g,/<\/(div|p|h[1-6]|table|tr|ul|ol|dl|blockquote|object|html|head|body|script|form|select)( [^>]*)?>/g,/<(div|p|h[1-6]|table|tr|ul|ol|dl|blockquote|object|html|head|body|script|form|select)( [^>]*)?>/g,/<(td|th|li|dt|dd|option|br|hr|embed|param|pre|meta|link|title|area|input|textarea)[^>]*>/g,/(^|<\/(pre|script)>)(\s|[^\s])*?(<(pre|script)[^>]*>|$)/g,/(<pre[^>]*>)([\s\S])*?(<\/pre>)/g,/(^|<!--[\s\S]*?-->)([\s\S]*?)(?=<!--[\s\S]*?-->|$)/g,/\S*=""/g,/<!--[\s\S]*?-->|<\?[\s\S]*?\?>|<\/?\w[^>]*>/g,/(^|<\/script>)[\s\S]*?(<script[^>]*>|$)/g];if(typeof RegExp.prototype.compile=="function"){for(var i=0;i<Xinha.RegExpCache.length;i++){Xinha.RegExpCache[i]=new RegExp().compile(Xinha.RegExpCache[i])}}Xinha.prototype.cleanHTML=function(b){var d=Xinha.RegExpCache;b=b.replace(d[0],function(c){return c.toLowerCase()}).replace(d[1]," ").replace(d[12]," ").replace(d[2],'="$2$4$5"$3').replace(d[21]," ").replace(d[11],function(f,e,c){return" "+e.toLowerCase()+c}).replace(d[3],">").replace(d[9],"$1>").replace(d[5],'$1$3="$3"$5').replace(d[4],"<$1$2 />").replace(d[6],"$1$2").replace(d[7],"&amp;").replace(d[8],"<").replace(d[10]," ");if(Xinha.is_ie&&d[13].test(b)){b=b.replace(d[13],"$1"+Xinha._escapeDollars(stripBaseURL(RegExp.$3))+'"')}if(this.config.only7BitPrintablesInURLs){if(Xinha.is_ie){d[13].test(b)}if(d[13].test(b)){try{b=b.replace(d[13],"$1"+Xinha._escapeDollars(decodeURIComponent(RegExp.$3).replace(/([^!-~]+)/g,function(c){return escape(c)}))+'"')}catch(a){b=b.replace(d[13],Xinha._escapeDollars("$1"+RegExp.$3.replace(/([^!-~]+)/g,function(c){return escape(c)})+'"'))}}}return b};Xinha.indent=function(a,b){Xinha.__nindent=0;Xinha.__sindent="";Xinha.__sindentChar=(typeof b=="undefined")?"  ":b;var d=Xinha.RegExpCache;if(Xinha.is_gecko){a=a.replace(d[19],function(c){return c.replace(/<br \/>/g,"\n")})}a=a.replace(d[18],function(c){c=c.replace(d[20],function(f,e,g){string=g.replace(/[\n\r]/gi," ").replace(/\s+/gi," ").replace(d[14],function(l){if(l.match(d[16])){var k="\n"+Xinha.__sindent+l;Xinha.__sindent+=Xinha.__sindentChar;++Xinha.__nindent;return k}else{if(l.match(d[15])){--Xinha.__nindent;Xinha.__sindent="";for(var h=Xinha.__nindent;h>0;--h){Xinha.__sindent+=Xinha.__sindentChar}return"\n"+Xinha.__sindent+l}else{if(l.match(d[17])){return"\n"+Xinha.__sindent+l}}}return l});return e+string});return c});a=a.replace(/^\s*/,"").replace(/ +\n/g,"\n").replace(/[\r\n]+(\s+)<\/script>/g,"\n$1<\/script>");return a};Xinha.getHTML=function(k,e,g){var f="";var h=Xinha.RegExpCache;if(k.nodeType==11){var d=document.createElement("div");var p=k.insertBefore(d,k.firstChild);for(j=p.nextSibling;j;j=j.nextSibling){p.appendChild(j.cloneNode(true))}f+=p.innerHTML.replace(h[23],function(a){a=a.replace(h[22],function(c){if(/^<[!\?]/.test(c)){return c}else{return g.cleanHTML(c)}});return a})}else{var n=(k.nodeType==1)?k.tagName.toLowerCase():"";if(e){f+="<"+n;var o=k.attributes;for(i=0;i<o.length;++i){var l=o.item(i);if(!l.specified){continue}var b=l.nodeName.toLowerCase();var m=l.nodeValue;f+=" "+b+'="'+m+'"'}f+=">"}if(n=="html"){innerhtml=g._doc.documentElement.innerHTML}else{innerhtml=k.innerHTML}f+=innerhtml.replace(h[23],function(a){a=a.replace(h[22],function(c){if(/^<[!\?]/.test(c)){return c}else{if(!(g.config.htmlRemoveTags&&g.config.htmlRemoveTags.test(c.replace(/<([^\s>\/]+)/,"$1")))){return g.cleanHTML(c)}else{return""}}});return a});if(Xinha.is_ie){f=f.replace(/<(li|dd|dt)( [^>]*)?>/g,"</$1><$1$2>").replace(/(<[uod]l[^>]*>[\s\S]*?)<\/(li|dd|dt)>/g,"$1").replace(/\s*<\/(li|dd|dt)>(\s*<\/(li|dd|dt)>)+/g,"</$1>").replace(/(<dt[\s>][\s\S]*?)(<\/d[dt]>)+/g,"$1</dt>")}if(Xinha.is_gecko){f=f.replace(/<br \/>\n$/,"")}f=f.replace(/\s*(<\/(li|dd|dt)>)/g,"$1");if(e){f+="</"+n+">"}f=Xinha.indent(f)}return f};Xinha._escapeDollars=function(a){return a.replace(/\$/g,"$$$$")};
\ No newline at end of file
diff --git a/mailboxes/xinha/modules/GetHtml/lang/pt_br.js b/mailboxes/xinha/modules/GetHtml/lang/pt_br.js
new file mode 100644 (file)
index 0000000..4568329
--- /dev/null
@@ -0,0 +1,18 @@
+// I18N constants
+//
+// LANG: "pt_br", ENCODING: UTF-8
+// Portuguese Brazilian Translation
+//
+// Author: Marcio Barbosa, <marcio@mpg.com.br>
+// MSN: tomarshall@msn.com - ICQ: 69419933
+// Site: http://www.mpg.com.br
+//
+// Last revision: 06 september 2007
+// Please don´t remove this information
+// If you modify any source, please insert a comment with your name and e-mail
+//
+// Distributed under the same terms as HTMLArea itself.
+// This notice MUST stay intact for use (see license.txt).
+{
+  "Your Document is not well formed. Check JavaScript console for details.": "Seu documento não está formatado corretamente. Verifique os detalhes no console do Javascript."
+}
diff --git a/mailboxes/xinha/modules/InlineStyler/InlineStyler.js b/mailboxes/xinha/modules/InlineStyler/InlineStyler.js
new file mode 100644 (file)
index 0000000..78db747
--- /dev/null
@@ -0,0 +1,3 @@
+/* This compressed file is part of Xinha. For uncompressed sources, forum, and bug reports, go to xinha.org */
+/* This file is part of version 0.96beta2 released Fri, 20 Mar 2009 11:01:14 +0100 */
+Xinha.InlineStyler=function(b,c,a,d){this.element=b;this.editor=c;this.dialog=a;this.doc=d?d:document;this.inputs={styles:{},aux:{}};this.styles={};this.auxData={}};Xinha.InlineStyler.getLength=function(b){var a=parseInt(b);if(isNaN(a)){a=""}return a};Xinha.InlineStyler.prototype.applyStyle=function(f){var b=this.element;var d=b.style;for(var a in f){if(typeof f[a]=="function"){continue}if(f[a]!=null){var e=f[a].value||f[a]}switch(a){case"backgroundImage":if(/\S/.test(e)){d.backgroundImage="url("+e+")"}else{d.backgroundImage="none"}break;case"borderCollapse":d.borderCollapse=f[a]=="on"?"collapse":"separate";break;case"width":if(/\S/.test(e)){d.width=e+this.inputs.aux.widthUnit.value}else{d.width=""}break;case"height":if(/\S/.test(e)){d.height=e+this.inputs.aux.heightUnit.value}else{d.height=""}break;case"textAlign":if(e=="char"){var c=this.inputs.aux.textAlignChar.value;if(c=='"'){c='\\"'}d.textAlign='"'+c+'"'}else{if(e=="-"){d.textAlign=""}else{d.textAlign=e}}break;case"verticalAlign":b.vAlign="";if(e=="-"){d.verticalAlign=""}else{d.verticalAlign=e}break;case"float":if(Xinha.is_ie){d.styleFloat=e}else{d.cssFloat=e}break;case"borderWidth":d[a]=e+"px";break;default:d[a]=e;break}}};Xinha.InlineStyler.prototype.createStyleLayoutFieldset=function(){var m=this;var f=this.editor;var u=this.doc;var d=this.element;var l=u.createElement("fieldset");var c=u.createElement("legend");l.appendChild(c);c.innerHTML=Xinha._lc("Layout","TableOperations");var q=u.createElement("table");l.appendChild(q);q.style.width="100%";var a=u.createElement("tbody");q.appendChild(a);var r=d.tagName.toLowerCase();var b,h,j,n,k,e,o;if(r!="td"&&r!="tr"&&r!="th"){b=u.createElement("tr");a.appendChild(b);h=u.createElement("td");h.className="label";b.appendChild(h);h.innerHTML=Xinha._lc("Float","TableOperations")+":";h=u.createElement("td");b.appendChild(h);n=u.createElement("select");n.name=this.dialog.createId("float");h.appendChild(n);this.inputs.styles["float"]=n;e=["None","Left","Right"];for(var o=0;o<e.length;++o){var g=e[o];var t=e[o].toLowerCase();k=u.createElement("option");k.innerHTML=Xinha._lc(g,"TableOperations");k.value=t;if(Xinha.is_ie){k.selected=((""+d.style.styleFloat).toLowerCase()==t)}else{k.selected=((""+d.style.cssFloat).toLowerCase()==t)}n.appendChild(k)}}b=u.createElement("tr");a.appendChild(b);h=u.createElement("td");h.className="label";b.appendChild(h);h.innerHTML=Xinha._lc("Width","TableOperations")+":";h=u.createElement("td");b.appendChild(h);j=u.createElement("input");j.name=this.dialog.createId("width");j.type="text";j.value=Xinha.InlineStyler.getLength(d.style.width);j.size="5";this.inputs.styles.width=j;j.style.marginRight="0.5em";h.appendChild(j);n=u.createElement("select");n.name=this.dialog.createId("widthUnit");this.inputs.aux.widthUnit=n;k=u.createElement("option");k.innerHTML=Xinha._lc("percent","TableOperations");k.value="%";k.selected=/%/.test(d.style.width);n.appendChild(k);k=u.createElement("option");k.innerHTML=Xinha._lc("pixels","TableOperations");k.value="px";k.selected=/px/.test(d.style.width);n.appendChild(k);h.appendChild(n);n.style.marginRight="0.5em";h.appendChild(u.createTextNode(Xinha._lc("Text align","TableOperations")+":"));n=u.createElement("select");n.name=this.dialog.createId("textAlign");n.style.marginLeft=n.style.marginRight="0.5em";h.appendChild(n);this.inputs.styles.textAlign=n;e=["Left","Center","Right","Justify","-"];if(r=="td"){e.push("Char")}j=u.createElement("input");this.inputs.aux.textAlignChar=j;j.name=this.dialog.createId("textAlignChar");j.size="1";j.style.fontFamily="monospace";h.appendChild(j);for(var o=0;o<e.length;++o){var g=e[o];var t=g.toLowerCase();k=u.createElement("option");k.value=t;k.innerHTML=Xinha._lc(g,"TableOperations");k.selected=((d.style.textAlign.toLowerCase()==t)||(d.style.textAlign==""&&g=="-"));n.appendChild(k)}var p=j;function s(i){p.style.visibility=i?"visible":"hidden";if(i){p.focus();p.select()}}n.onchange=function(){s(this.value=="char")};s(n.value=="char");b=u.createElement("tr");a.appendChild(b);h=u.createElement("td");h.className="label";b.appendChild(h);h.innerHTML=Xinha._lc("Height","TableOperations")+":";h=u.createElement("td");b.appendChild(h);j=u.createElement("input");j.name=this.dialog.createId("height");j.type="text";j.value=Xinha.InlineStyler.getLength(d.style.height);j.size="5";this.inputs.styles.height=j;j.style.marginRight="0.5em";h.appendChild(j);n=u.createElement("select");n.name=this.dialog.createId("heightUnit");this.inputs.aux.heightUnit=n;k=u.createElement("option");k.innerHTML=Xinha._lc("percent","TableOperations");k.value="%";k.selected=/%/.test(d.style.height);n.appendChild(k);k=u.createElement("option");k.innerHTML=Xinha._lc("pixels","TableOperations");k.value="px";k.selected=/px/.test(d.style.height);n.appendChild(k);h.appendChild(n);n.style.marginRight="0.5em";h.appendChild(u.createTextNode(Xinha._lc("Vertical align","TableOperations")+":"));n=u.createElement("select");n.name=this.dialog.createId("verticalAlign");this.inputs.styles.verticalAlign=n;n.style.marginLeft="0.5em";h.appendChild(n);e=["Top","Middle","Bottom","Baseline","-"];for(var o=0;o<e.length;++o){var g=e[o];var t=g.toLowerCase();k=u.createElement("option");k.value=t;k.innerHTML=Xinha._lc(g,"TableOperations");k.selected=((d.style.verticalAlign.toLowerCase()==t)||(d.style.verticalAlign==""&&g=="-"));n.appendChild(k)}return l};Xinha.InlineStyler.prototype.createStyleFieldset=function(){var g=this.editor;var t=this.doc;var e=this.element;var o=t.createElement("fieldset");var d=t.createElement("legend");o.appendChild(d);d.innerHTML=Xinha._lc("CSS Style","TableOperations");var s=t.createElement("table");o.appendChild(s);s.style.width="100%";var a=t.createElement("tbody");s.appendChild(a);var c,h,l,p,m,f,r;c=t.createElement("tr");a.appendChild(c);h=t.createElement("td");c.appendChild(h);h.className="label";h.innerHTML=Xinha._lc("Background","TableOperations")+":";h=t.createElement("td");c.appendChild(h);l=t.createElement("input");l.name=this.dialog.createId("backgroundColor");l.value=Xinha._colorToRgb(e.style.backgroundColor);l.type="hidden";this.inputs.styles.backgroundColor=l;l.style.marginRight="0.5em";h.appendChild(l);new Xinha.colorPicker.InputBinding(l);h.appendChild(t.createTextNode(" "+Xinha._lc("Image URL","TableOperations")+": "));l=t.createElement("input");l.name=this.dialog.createId("backgroundImage");l.type="text";this.inputs.styles.backgroundImage=l;if(e.style.backgroundImage.match(/url\(\s*(.*?)\s*\)/)){l.value=RegExp.$1}h.appendChild(l);c=t.createElement("tr");a.appendChild(c);h=t.createElement("td");c.appendChild(h);h.className="label";h.innerHTML=Xinha._lc("FG Color","TableOperations")+":";h=t.createElement("td");c.appendChild(h);l=t.createElement("input");l.name=this.dialog.createId("color");l.value=Xinha._colorToRgb(e.style.color);l.type="hidden";this.inputs.styles.color=l;l.style.marginRight="0.5em";h.appendChild(l);new Xinha.colorPicker.InputBinding(l);l=t.createElement("input");l.style.visibility="hidden";l.type="text";h.appendChild(l);c=t.createElement("tr");a.appendChild(c);h=t.createElement("td");c.appendChild(h);h.className="label";h.innerHTML=Xinha._lc("Border","TableOperations")+":";h=t.createElement("td");c.appendChild(h);l=t.createElement("input");l.name=this.dialog.createId("borderColor");l.value=Xinha._colorToRgb(e.style.borderColor);l.type="hidden";this.inputs.styles.borderColor=l;l.style.marginRight="0.5em";h.appendChild(l);new Xinha.colorPicker.InputBinding(l);p=t.createElement("select");p.name=this.dialog.createId("borderStyle");var n=[];h.appendChild(p);this.inputs.styles.borderStyle=p;f=["none","dotted","dashed","solid","double","groove","ridge","inset","outset"];var b=e.style.borderStyle;if(b.match(/([^\s]*)\s/)){b=RegExp.$1}for(var r=0;r<f.length;r++){var u=f[r];m=t.createElement("option");m.value=u;m.innerHTML=u;if(u==b){m.selected=true}p.appendChild(m)}p.style.marginRight="0.5em";function k(x){for(var v=0;v<n.length;++v){var w=n[v];w.style.visibility=x?"hidden":"visible";if(!x&&(w.tagName.toLowerCase()=="input")){w.focus();w.select()}}}p.onchange=function(){k(this.value=="none")};l=t.createElement("input");l.name=this.dialog.createId("borderWidth");n.push(l);l.type="text";this.inputs.styles.borderWidth=l;l.value=Xinha.InlineStyler.getLength(e.style.borderWidth);l.size="5";h.appendChild(l);l.style.marginRight="0.5em";var q=t.createElement("span");q.innerHTML=Xinha._lc("pixels","TableOperations");h.appendChild(q);n.push(q);k(p.value=="none");if(e.tagName.toLowerCase()=="table"){c=t.createElement("tr");a.appendChild(c);h=t.createElement("td");h.className="label";c.appendChild(h);l=t.createElement("input");l.name=this.dialog.createId("borderCollapse");l.type="checkbox";l.value="on";this.inputs.styles.borderCollapse=l;l.id="f_st_borderCollapse";var u=(/collapse/i.test(e.style.borderCollapse));l.checked=u?1:0;h.appendChild(l);h=t.createElement("td");c.appendChild(h);var j=t.createElement("label");j.htmlFor="f_st_borderCollapse";j.innerHTML=Xinha._lc("Collapsed borders","TableOperations");h.appendChild(j)}return o};
\ No newline at end of file
diff --git a/mailboxes/xinha/modules/InsertImage/dialog.html b/mailboxes/xinha/modules/InsertImage/dialog.html
new file mode 100644 (file)
index 0000000..49114e7
--- /dev/null
@@ -0,0 +1,83 @@
+<h1 id="[h1]"><l10n>Insert Image</l10n></h1>
+<!--- new stuff --->
+<form action="" method="get" style="padding-top:10px" id="[inputs]">
+<table border="0" width="95%" style="padding: 0px; margin: 0px">
+  <tbody>
+
+  <tr>
+    <td style="width: 7em; text-align: right"><l10n>Image URL:</l10n></td>
+    <td><input type="text" name="[f_url]" id="[f_url]" style="width:75%"
+      title="_(Enter the image URL here)" />
+      <button id="[preview]" title="_(Preview the image in a new window)"><l10n>Preview</l10n></button>
+    </td>
+  </tr>
+  <tr>
+    <td style="width: 7em; text-align: right"><l10n>Alternate text:</l10n></td>
+    <td><input type="text" name="[f_alt]" id="[f_alt]" style="width:100%"
+      title="_(For browsers that don't support images)" /></td>
+  </tr>
+
+  </tbody>
+</table>
+
+<br />
+
+<fieldset style="float: left; margin-left: 5px;">
+<legend><l10n>Layout</l10n></legend>
+
+<div class="space"></div>
+
+<div class="fl"><l10n>Alignment:</l10n></div>
+<select size="1" name="[f_align]" id="[f_align]"
+  title="_(Positioning of this image)">
+  <option value=""                             ><l10n>Not set</l10n></option>
+  <option value="left"                         ><l10n>Left</l10n></option>
+  <option value="right"                        ><l10n>Right</l10n></option>
+  <option value="texttop"                      ><l10n>Texttop</l10n></option>
+  <option value="absmiddle"                    ><l10n>Absmiddle</l10n></option>
+  <option value="baseline"                     ><l10n>Baseline</l10n></option>
+  <option value="absbottom"                    ><l10n>Absbottom</l10n></option>
+  <option value="bottom"                       ><l10n>Bottom</l10n></option>
+  <option value="middle"                       ><l10n>Middle</l10n></option>
+  <option value="top"                          ><l10n>Top</l10n></option>
+</select>
+
+<br />
+
+<div class="fl"><l10n>Border thickness:</l10n></div>
+<input type="text" name="[f_border]" id="[f_border]" size="5"
+title="_(Leave empty for no border)" />
+
+<div class="space"></div>
+
+</fieldset>
+
+<fieldset>
+<legend><l10n>Spacing</l10n></legend>
+
+<div class="space"></div>
+
+<div class="fr"><l10n>Horizontal:</l10n></div>
+<input type="text" name="[f_horiz]" id="[f_horiz]" size="5"
+title="_(Horizontal padding)" />
+
+<br />
+
+<div class="fr"><l10n>Vertical:</l10n></div>
+<input type="text" name="[f_vert]" id="[f_vert]" size="5"
+title="_(Vertical padding)" />
+
+<div class="space"></div>
+
+</fieldset>
+</form>
+<div>
+<l10n>Image Preview:</l10n><br />
+    <iframe id="[ipreview]" frameborder="0" style="border : 1px solid gray;" 
+       height="200" width="100%" src="about:blank"></iframe>
+</div>
+
+<div class="buttons" id="[buttons]">
+  <input type="button" id="[ok]"     value="_(OK)"     />
+  <input type="button" id="[cancel]" value="_(Cancel)" />
+</div>
\ No newline at end of file
diff --git a/mailboxes/xinha/modules/InsertImage/insert_image.html b/mailboxes/xinha/modules/InsertImage/insert_image.html
new file mode 100644 (file)
index 0000000..0247e4b
--- /dev/null
@@ -0,0 +1,173 @@
+<!DOCTYPE html
+     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Insert Image</title>
+
+<script type="text/javascript" src="../../popups/popup.js"></script>
+<link rel="stylesheet" type="text/css" href="../../popups/popup.css" />
+
+<script type="text/javascript">
+
+
+Xinha = window.opener.Xinha;
+function i18n(str) {
+  return (Xinha._lc(str, 'Xinha'));
+}
+
+function Init() {
+  __dlg_translate('Xinha');
+  __dlg_init(null,{width:410,height:400});
+  // Make sure the translated string appears in the drop down. (for gecko)
+  document.getElementById("f_align").selectedIndex = 1;
+  document.getElementById("f_align").selectedIndex = 5;
+  var param = window.dialogArguments;
+  if (param["f_base"]) {
+      document.getElementById("f_base").value = param["f_base"];
+  }
+  document.getElementById("f_url").value    = param["f_url"] ? param["f_url"] : "";
+  document.getElementById("f_alt").value    = param["f_alt"] ? param["f_alt"] : "";
+  document.getElementById("f_border").value = (typeof param["f_border"]!="undefined") ? param["f_border"] : "";
+  document.getElementById("f_align").value  = param["f_align"] ? param["f_align"] : "";
+  document.getElementById("f_vert").value   = (typeof param["f_vert"]!="undefined") ? param["f_vert"] : "";
+  document.getElementById("f_horiz").value  = (typeof param["f_horiz"]!="undefined") ? param["f_horiz"] : "";
+  if (param["f_url"]) {
+      window.ipreview.location.replace(Xinha._resolveRelativeUrl(param.f_base, param.f_url));
+  }
+  document.getElementById("f_url").focus();
+}
+
+function onOK() {
+  var required = {
+    "f_url": i18n("You must enter the URL")
+  };
+  for (var i in required) {
+    var el = document.getElementById(i);
+    if (!el.value) {
+      alert(required[i]);
+      el.focus();
+      return false;
+    }
+  }
+  // pass data back to the calling window
+  var fields = ["f_url", "f_alt", "f_align", "f_border",
+                "f_horiz", "f_vert"];
+  var param = new Object();
+  for (var i in fields) {
+    var id = fields[i];
+    var el = document.getElementById(id);
+    param[id] = el.value;
+  }
+  __dlg_close(param);
+  return false;
+}
+
+function onCancel() {
+  __dlg_close(null);
+  return false;
+}
+
+function onPreview() {
+  var f_url = document.getElementById("f_url");
+  var url = f_url.value;
+  var base = document.getElementById("f_base").value;
+  if (!url) {
+    alert(i18n("You must enter the URL"));
+    f_url.focus();
+    return false;
+  }
+  window.ipreview.location.replace(Xinha._resolveRelativeUrl(base, url));
+  return false;
+}
+</script>
+
+</head>
+
+<body class="dialog" onload="Init()">
+
+<div class="title">Insert Image</div>
+<!--- new stuff --->
+<form action="" method="get">
+<input type="hidden" name="base" id="f_base"/>
+<table border="0" width="100%" style="padding: 0px; margin: 0px">
+  <tbody>
+
+  <tr>
+    <td style="width: 7em; text-align: right">Image URL:</td>
+    <td><input type="text" name="url" id="f_url" style="width:75%"
+      title="Enter the image URL here" />
+      <button name="preview" onclick="return onPreview();"
+      title="Preview the image in a new window">Preview</button>
+    </td>
+  </tr>
+  <tr>
+    <td style="width: 7em; text-align: right">Alternate text:</td>
+    <td><input type="text" name="alt" id="f_alt" style="width:100%"
+      title="For browsers that don't support images" /></td>
+  </tr>
+
+  </tbody>
+</table>
+
+<fieldset style="float: left; margin-left: 5px;">
+<legend>Layout</legend>
+
+<div class="space"></div>
+
+<div class="fl">Alignment:</div>
+<select size="1" name="align" id="f_align"
+  title="Positioning of this image">
+  <option value=""                             >Not set</option>
+  <option value="left"                         >Left</option>
+  <option value="right"                        >Right</option>
+  <option value="texttop"                      >Texttop</option>
+  <option value="absmiddle"                    >Absmiddle</option>
+  <option value="baseline" selected="selected" >Baseline</option>
+  <option value="absbottom"                    >Absbottom</option>
+  <option value="bottom"                       >Bottom</option>
+  <option value="middle"                       >Middle</option>
+  <option value="top"                          >Top</option>
+</select>
+
+<br />
+
+<div class="fl">Border thickness:</div>
+<input type="text" name="border" id="f_border" size="5"
+title="Leave empty for no border" />
+
+<div class="space"></div>
+
+</fieldset>
+
+<fieldset>
+<legend>Spacing</legend>
+
+<div class="space"></div>
+
+<div class="fr">Horizontal:</div>
+<input type="text" name="horiz" id="f_horiz" size="5"
+title="Horizontal padding" />
+
+<br />
+
+<div class="fr">Vertical:</div>
+<input type="text" name="vert" id="f_vert" size="5"
+title="Vertical padding" />
+
+<div class="space"></div>
+
+</fieldset>
+<div class="space" style="clear:all"></div>
+<div>
+Image Preview:<br />
+    <iframe name="ipreview" id="ipreview" frameborder="0" style="border : 1px solid gray;" 
+       height="200" width="100%" src="../../popups/blank.html"></iframe>
+</div>
+<div id="buttons">
+<button type="submit" name="ok" onclick="return onOK();">OK</button>
+<button type="button" name="cancel" onclick="return onCancel();">Cancel</button>
+</div>
+</form>
+</body>
+</html>
\ No newline at end of file
diff --git a/mailboxes/xinha/modules/InsertImage/insert_image.js b/mailboxes/xinha/modules/InsertImage/insert_image.js
new file mode 100644 (file)
index 0000000..33dc5d5
--- /dev/null
@@ -0,0 +1,3 @@
+/* This compressed file is part of Xinha. For uncompressed sources, forum, and bug reports, go to xinha.org */
+/* This file is part of version 0.96beta2 released Fri, 20 Mar 2009 11:01:14 +0100 */
+InsertImage._pluginInfo={name:"InsertImage",origin:"Xinha Core",version:"$LastChangedRevision: 1055 $".replace(/^[^:]*:\s*(.*)\s*\$$/,"$1"),developer:"The Xinha Core Developer Team",developer_url:"$HeadURL: http://svn.xinha.org/trunk/modules/InsertImage/insert_image.js $".replace(/^[^:]*:\s*(.*)\s*\$$/,"$1"),sponsor:"",sponsor_url:"",license:"htmlArea"};function InsertImage(c){this.editor=c;var a=c.config;var b=this;c.config.btnList.insertimage[3]=function(){b.show()}}InsertImage.prototype._lc=function(a){return Xinha._lc(a,"Xinha")};InsertImage.prototype.onGenerateOnce=function(){InsertImage.loadAssets()};InsertImage.loadAssets=function(){var self=InsertImage;if(self.loading){return}self.loading=true;Xinha._getback(_editor_url+"modules/InsertImage/dialog.html",function(getback){self.html=getback;self.dialogReady=true});Xinha._getback(_editor_url+"modules/InsertImage/pluginMethods.js",function(getback){eval(getback);self.methodsReady=true})};InsertImage.prototype.onUpdateToolbar=function(){if(!(InsertImage.dialogReady&&InsertImage.methodsReady)){this.editor._toolbarObjects.insertimage.state("enabled",false)}else{this.onUpdateToolbar=null}};InsertImage.prototype.prepareDialog=function(){var a=this;var c=this.editor;var b=this.dialog=new Xinha.Dialog(c,InsertImage.html,"Xinha",{width:410});b.getElementById("ok").onclick=function(){a.apply()};b.getElementById("cancel").onclick=function(){a.dialog.hide()};b.getElementById("preview").onclick=function(){var d=b.getElementById("f_url");var e=d.value;if(!e){alert(b._lc("You must enter the URL"));d.focus();return false}b.getElementById("ipreview").src=e;return false};this.dialog.onresize=function(){var d=parseInt(this.height,10)-this.getElementById("h1").offsetHeight-this.getElementById("buttons").offsetHeight-this.getElementById("inputs").offsetHeight-parseInt(this.rootElem.style.paddingBottom,10);this.getElementById("ipreview").style.height=((d>0)?d:0)+"px";this.getElementById("ipreview").style.width=this.width-2+"px"};this.dialogReady=true};
\ No newline at end of file
diff --git a/mailboxes/xinha/modules/InsertImage/pluginMethods.js b/mailboxes/xinha/modules/InsertImage/pluginMethods.js
new file mode 100644 (file)
index 0000000..c5f01ea
--- /dev/null
@@ -0,0 +1,3 @@
+/* This compressed file is part of Xinha. For uncompressed sources, forum, and bug reports, go to xinha.org */
+/* This file is part of version 0.96beta2 released Fri, 20 Mar 2009 11:01:14 +0100 */
+InsertImage.prototype.show=function(c){if(!this.dialog){this.prepareDialog()}var b=this.editor;if(typeof c=="undefined"){c=b.getParentElement();if(c&&c.tagName.toLowerCase()!="img"){c=null}}if(c){function a(f,g){var d=f.attributes;for(var e=0;e<d.length;e++){if(d[e].nodeName==g&&d[e].specified){return d[e].value}}return""}outparam={f_url:this.stripBaseURL(c.getAttribute("src",2)),f_alt:c.alt,f_border:c.border,f_align:c.align,f_vert:a(c,"vspace"),f_horiz:a(c,"hspace"),f_width:c.width,f_height:c.height}}else{outparam={f_url:"",f_alt:"",f_border:"",f_align:"",f_vert:"",f_horiz:"",f_width:"",f_height:""}}this.image=c;this.dialog.show(outparam)};InsertImage.prototype.apply=function(){var g=this.dialog.hide();if(!g.f_url){return}var c=this.editor;var b=this.image;if(!b){if(Xinha.is_ie){var e=c.getSelection();var a=c.createRange(e);c._doc.execCommand("insertimage",false,g.f_url);b=a.parentElement();if(b.tagName.toLowerCase()!="img"){b=b.previousSibling}}else{b=document.createElement("img");b.src=g.f_url;c.insertNodeAtSelection(b);if(!b.tagName){b=a.startContainer.firstChild}}}else{b.src=g.f_url}for(var f in g){var d=g[f];switch(f){case"f_alt":if(d){b.alt=d}else{b.removeAttribute("alt")}break;case"f_border":if(d){b.border=parseInt(d||"0")}else{b.removeAttribute("border")}break;case"f_align":if(d.value){b.align=d.value}else{b.removeAttribute("align")}break;case"f_vert":if(d!=""){b.vspace=parseInt(d||"0")}else{b.removeAttribute("vspace")}break;case"f_horiz":if(d!=""){b.hspace=parseInt(d||"0")}else{b.removeAttribute("hspace")}break;case"f_width":if(d){b.width=parseInt(d||"0")}else{b.removeAttribute("width")}break;case"f_height":if(d){b.height=parseInt(d||"0")}else{b.removeAttribute("height")}break}}};
\ No newline at end of file
diff --git a/mailboxes/xinha/modules/InsertTable/dialog.html b/mailboxes/xinha/modules/InsertTable/dialog.html
new file mode 100644 (file)
index 0000000..0a7456a
--- /dev/null
@@ -0,0 +1,100 @@
+<h1 id="[h1]"><l10n>Insert Table</l10n></h1>\r
+<form action="" method="get" style="margin-top:10px">\r
+<div id="[columns_alert]" style="color:red;display:none"><l10n>You must enter a number of columns</l10n></div>\r
+<div id="[rows_alert]" style="color:red;display:none"><l10n>You must enter a number of rows</l10n></div>\r
+\r
+<table border="0" style="padding: 0px; margin: 0px">\r
+  <tbody>\r
+  <tr>\r
+  <td>\r
+    <l10n>Caption</l10n>:\r
+  </td>  \r
+  <td colspan="4">\r
+    <input type="text" name="[caption]" id="[caption]" style="width:90%" title="_(Caption for the table)" />\r
+  </td>\r
+  </tr>\r
+  <tr>\r
+    <td style="width: 4em; text-align: right"><l10n>Rows:</l10n></td>\r
+    <td><input type="text" name="[rows]" id="[rows]" size="5" title="_(Number of rows)"  /></td>\r
+    <td style="width: 4em; text-align: right">Width:</td>\r
+    <td><input type="text" name="[width]" id="[width]" size="5" title="_(Width of the table)" /></td>\r
+    <td><select size="1" name="[unit]" id="[unit]" title="Width unit">\r
+      <option value="%"               ><l10n>Percent</l10n></option>\r
+      <option value="px"              ><l10n>Pixels</l10n></option>\r
+      <option value="em"              >Em</option>\r
+    </select></td>\r
+  </tr>\r
+  <tr>\r
+    <td style="width: 4em; text-align: right">Cols:</td>\r
+    <td><input type="text" name="[cols]" id="[cols]" size="5" title="_(Number of columns)"  /></td>\r
+    <td style="text-align: right"><input type="checkbox" name="[fixed]" id="[fixed]" value="on" /></td>\r
+    <td colspan="2"><label\r
+    ><l10n>Fixed width columns</l10n></label></td>\r
+  </tr>\r
+  </tbody>\r
+</table>\r
+\r
+<br />\r
+\r
+<fieldset id="[layout_fieldset]" style="float: left; margin-left: 10px;">\r
+<legend><l10n>Layou</l10n>t</legend>\r
+\r
+<div class="space"></div>\r
+\r
+<div class="fl"><l10n>Alignment:</l10n></div>\r
+<select size="1" name="[align]" id="[align]"\r
+  title="Positioning of this table">\r
+  <option value=""                             ><l10n>Not set</l10n></option>\r
+  <option value="left"                         ><l10n>Left</l10n></option>\r
+  <option value="right"                        ><l10n>Right</l10n></option>\r
+  <option value="texttop"                      ><l10n>Texttop</l10n></option>\r
+  <option value="absmiddle"                    ><l10n>Absmiddle</l10n></option>\r
+  <option value="baseline"                     ><l10n>Baseline</l10n></option>\r
+  <option value="absbottom"                    ><l10n>Absbottom</l10n></option>\r
+  <option value="bottom"                       ><l10n>Bottom</l10n></option>\r
+  <option value="middle"                       ><l10n>Middle</option>\r
+  <option value="top"                          ><l10n>Top</l10n></option>\r
+</select>\r
+\r
+<br />\r
+\r
+<div class="fl"><l10n>Border</l10n></div>\r
+<input type="text" name="[border]" id="[border]" size="2" title="_(Leave empty for no border)" /> <l10n>Pixels</l10n>\r
+<select size="1" name="[border_style]" id="[border_style]" title="_(Style of the border)">\r
+  <option value="solid"   >Solid</option>\r
+  <option value="dotted"  >Dotted</option>\r
+  <option value="dashed"  >Dashed</option>\r
+  <option value="double"  >Double</option>\r
+  <option value="groove"  >Groove</option>\r
+  <option value="ridge"   >Ridge</option>\r
+  <option value="inset"   >Inset</option>\r
+  <option value="outset"  >outset</option>\r
+</select>\r
+<input type="text" size="7" id="[border_color]" name="[border_color]"/>\r
+<br /><l10n>Collapse borders:</l10n> \r
+<input type="checkbox" name="[border_collapse]" id="[border_collapse]" value="on" />\r
+\r
+<div class="space"></div>\r
+\r
+</fieldset>\r
+\r
+<fieldset  id="[spacing_fieldset]">\r
+<legend><l10n>Spacing</l10n></legend>\r
+\r
+<div class="space"></div>\r
+\r
+<div class="fr"><l10n>Cell spacing:</l10n></div>\r
+<input type="text" name="[spacing]" id="[spacing]" size="5" title="_(Space between adjacent cells)" />\r
+\r
+<br />\r
+\r
+<div class="fr"><l10n>Cell padding:</l10n></div>\r
+<input type="text" name="[padding]" id="[padding]" size="5" title="_(Space between content and border in cell)" />\r
+\r
+\r
+</fieldset>\r
+  <div class="buttons" style="clear:left">\r
+  <input type="button" id="[ok]"     value="_(OK)"     />\r
+  <input type="button" id="[cancel]" value="_(Cancel)" />\r
+  </div>\r
+</form>\r
diff --git a/mailboxes/xinha/modules/InsertTable/insert_table.html b/mailboxes/xinha/modules/InsertTable/insert_table.html
new file mode 100644 (file)
index 0000000..c3aab8d
--- /dev/null
@@ -0,0 +1,157 @@
+<html>
+
+<head>
+  <title>Insert Table</title>
+
+<script type="text/javascript" src="../../popups/popup.js"></script>
+<link rel="stylesheet" type="text/css" href="../../popups/popup.css" />
+
+<script type="text/javascript">
+
+window.resizeTo(425, 250);
+
+Xinha = window.opener.Xinha;
+function i18n(str) {
+  return (Xinha._lc(str, 'Xinha'));
+}
+
+function Init() {
+  Xinha = window.opener.Xinha; // load the Xinha plugin and lang file
+  __dlg_translate('Xinha');
+  __dlg_init(null, Xinha.is_ie ? null : {width:425,height:250});
+  // Make sure the translated string appears in the drop down. (for gecko)
+  document.getElementById("f_unit").selectedIndex = 1;
+  document.getElementById("f_unit").selectedIndex = 0;
+  document.getElementById("f_align").selectedIndex = 1;
+  document.getElementById("f_align").selectedIndex = 0;
+  document.getElementById("f_rows").focus();
+}
+
+function onOK() {
+  var required = {
+    "f_rows": i18n("You must enter a number of rows"),
+    "f_cols": i18n("You must enter a number of columns")
+  };
+  for (var i in required) {
+    var el = document.getElementById(i);
+    if (!el.value) {
+      alert(required[i]);
+      el.focus();
+      return false;
+    }
+  }
+  var fields = ["f_rows", "f_cols", "f_width", "f_unit", "f_fixed",
+                "f_align", "f_border", "f_spacing", "f_padding"];
+  var param = new Object();
+  for (var i in fields) {
+    var id = fields[i];
+    var el = document.getElementById(id);
+    param[id] = (el.type == "checkbox") ? el.checked : el.value;
+  }
+  __dlg_close(param);
+  return false;
+}
+
+function onCancel() {
+  __dlg_close(null);
+  return false;
+}
+
+</script>
+
+</head>
+
+<body class="dialog" onload="Init()">
+
+<div class="title">Insert Table</div>
+
+<form action="" method="get">
+<table border="0" style="padding: 0px; margin: 0px">
+  <tbody>
+
+  <tr>
+    <td style="width: 4em; text-align: right">Rows:</td>
+    <td><input type="text" name="rows" id="f_rows" size="5" title="Number of rows" value="2" /></td>
+    <td style="width: 4em; text-align: right">Width:</td>
+    <td><input type="text" name="width" id="f_width" size="5" title="Width of the table" value="100" /></td>
+    <td><select size="1" name="unit" id="f_unit" title="Width unit">
+      <option value="%" selected="selected"  >Percent</option>
+      <option value="px"              >Pixels</option>
+      <option value="em"              >Em</option>
+    </select></td>
+  </tr>
+  <tr>
+    <td style="width: 4em; text-align: right">Cols:</td>
+    <td><input type="text" name="cols" id="f_cols" size="5" title="Number of columns" value="4" /></td>
+    <td style="text-align: right"><input type="checkbox" checked="checked" name="fixed" id="f_fixed" value="on" /></td>
+    <td colspan="2"><label for="f_fixed"
+    >Fixed width columns</label></td>
+  </tr>
+  </tbody>
+</table>
+
+<p />
+
+<fieldset style="float: left; margin-left: 5px;">
+<legend>Layout</legend>
+
+<div class="space"></div>
+
+<div class="fl">Alignment:</div>
+<select size="1" name="align" id="f_align"
+  title="Positioning of this table">
+  <option value="" selected="selected"         >Not set</option>
+  <option value="left"                         >Left</option>
+  <option value="right"                        >Right</option>
+  <option value="texttop"                      >Texttop</option>
+  <option value="absmiddle"                    >Absmiddle</option>
+  <option value="baseline"                     >Baseline</option>
+  <option value="absbottom"                    >Absbottom</option>
+  <option value="bottom"                       >Bottom</option>
+  <option value="middle"                       >Middle</option>
+  <option value="top"                          >Top</option>
+</select>
+
+<p />
+
+<div class="fl">Border thickness:</div>
+<input type="text" name="border" id="f_border" size="5" value="1"
+title="Leave empty for no border" />
+<!--
+<p />
+
+<div class="fl">Collapse borders:</div>
+<input type="checkbox" name="collapse" id="f_collapse" />
+-->
+<div class="space"></div>
+
+</fieldset>
+
+<fieldset style="float:right; margin-right: 5px;">
+<legend>Spacing</legend>
+
+<div class="space"></div>
+
+<div class="fr">Cell spacing:</div>
+<input type="text" name="spacing" id="f_spacing" size="5" value="1"
+title="Space between adjacent cells" />
+
+<p />
+
+<div class="fr">Cell padding:</div>
+<input type="text" name="padding" id="f_padding" size="5" value="1"
+title="Space between content and border in cell" />
+
+<div class="space"></div>
+
+</fieldset>
+
+<div style="margin-top: 85px; border-top: 1px solid #999; padding: 2px; text-align: right;">
+<button type="button" name="ok" onclick="return onOK();">OK</button>
+<button type="button" name="cancel" onclick="return onCancel();">Cancel</button>
+</div>
+
+</form>
+
+</body>
+</html>
diff --git a/mailboxes/xinha/modules/InsertTable/insert_table.js b/mailboxes/xinha/modules/InsertTable/insert_table.js
new file mode 100644 (file)
index 0000000..380786c
--- /dev/null
@@ -0,0 +1,3 @@
+/* This compressed file is part of Xinha. For uncompressed sources, forum, and bug reports, go to xinha.org */
+/* This file is part of version 0.96beta2 released Fri, 20 Mar 2009 11:01:14 +0100 */
+InsertTable._pluginInfo={name:"InsertTable",origin:"Xinha Core",version:"$LastChangedRevision: 1085 $".replace(/^[^:]*:\s*(.*)\s*\$$/,"$1"),developer:"The Xinha Core Developer Team",developer_url:"$HeadURL: http://svn.xinha.org/trunk/modules/InsertTable/insert_table.js $".replace(/^[^:]*:\s*(.*)\s*\$$/,"$1"),sponsor:"",sponsor_url:"",license:"htmlArea"};function InsertTable(c){this.editor=c;var a=c.config;var b=this;c.config.btnList.inserttable[3]=function(){b.show()}}InsertTable.prototype._lc=function(a){return Xinha._lc(a,"Xinha")};InsertTable.prototype.onGenerateOnce=function(){InsertTable.loadAssets()};InsertTable.loadAssets=function(){var self=InsertTable;if(self.loading){return}self.loading=true;Xinha._getback(_editor_url+"modules/InsertTable/dialog.html",function(getback){self.html=getback;self.dialogReady=true});Xinha._getback(_editor_url+"modules/InsertTable/pluginMethods.js",function(getback){eval(getback);self.methodsReady=true})};InsertTable.prototype.onUpdateToolbar=function(){if(!(InsertTable.dialogReady&&InsertTable.methodsReady)){this.editor._toolbarObjects.inserttable.state("enabled",false)}else{this.onUpdateToolbar=null}};InsertTable.prototype.prepareDialog=function(){var a=this;var c=this.editor;var b=this.dialog=new Xinha.Dialog(c,InsertTable.html,"Xinha",{width:400});b.getElementById("ok").onclick=function(){a.apply()};b.getElementById("cancel").onclick=function(){a.dialog.hide()};this.borderColorPicker=new Xinha.colorPicker.InputBinding(b.getElementById("border_color"));this.dialog.onresize=function(){this.getElementById("layout_fieldset").style.width=(this.width/2)+50+"px";this.getElementById("spacing_fieldset").style.width=(this.width/2)-120+"px"};this.dialogReady=true};
\ No newline at end of file
diff --git a/mailboxes/xinha/modules/InsertTable/pluginMethods.js b/mailboxes/xinha/modules/InsertTable/pluginMethods.js
new file mode 100644 (file)
index 0000000..964adcd
--- /dev/null
@@ -0,0 +1,3 @@
+/* This compressed file is part of Xinha. For uncompressed sources, forum, and bug reports, go to xinha.org */
+/* This file is part of version 0.96beta2 released Fri, 20 Mar 2009 11:01:14 +0100 */
+InsertTable.prototype.show=function(c){if(!this.dialog){this.prepareDialog()}var b=this.editor;var a={caption:"",rows:"2",cols:"4",width:"100",unit:"%",fixed:"",align:"",border:"1",border_style:"dotted",border_color:"#000000",border_collapse:"on",spacing:"",padding:"5"};this.borderColorPicker.setColor("#000000");this.dialog.show(a);this.dialog.onresize()};InsertTable.prototype.apply=function(){var g=this.editor;var l=g._doc;var a=this.dialog.getValues();if(!a.rows||!a.cols){if(!a.rows){this.dialog.getElementById("rows_alert").style.display=""}if(!a.cols){this.dialog.getElementById("columns_alert").style.display=""}return}this.dialog.hide();var n=l.createElement("table");for(var k in a){var m=a[k];if(!m){continue}switch(k){case"width":n.style.width=m+a.unit.value;break;case"align":n.align=m.value;break;case"border":n.style.border=m+"px "+a.border_style.value+" "+a.border_color;break;case"border_collapse":n.style.borderCollapse=(m=="on")?"collapse":"";break;case"spacing":n.cellSpacing=parseInt(m,10);break;case"padding":n.cellPadding=parseInt(m,10);break}}if(a.caption){var o=n.createCaption();o.appendChild(l.createTextNode(a.caption))}var f=0;if(a.fixed){f=Math.floor(100/parseInt(a.cols,10))}var e=l.createElement("tbody");n.appendChild(e);for(var d=0;d<a.rows;++d){var h=l.createElement("tr");e.appendChild(h);for(var c=0;c<a.cols;++c){var b=l.createElement("td");if(f&&d===0){b.style.width=f+"%"}if(a.border){b.style.border=a.border+"px "+a.border_style.value+" "+a.border_color}h.appendChild(b);b.appendChild(l.createTextNode("\u00a0"))}}g.insertNodeAtSelection(n)};
\ No newline at end of file
diff --git a/mailboxes/xinha/modules/InternetExplorer/InternetExplorer.js b/mailboxes/xinha/modules/InternetExplorer/InternetExplorer.js
new file mode 100644 (file)
index 0000000..8f98ee4
--- /dev/null
@@ -0,0 +1,3 @@
+/* This compressed file is part of Xinha. For uncompressed sources, forum, and bug reports, go to xinha.org */
+/* This file is part of version 0.96beta2 released Fri, 20 Mar 2009 11:01:14 +0100 */
+InternetExplorer._pluginInfo={name:"Internet Explorer",origin:"Xinha Core",version:"$LastChangedRevision: 1173 $".replace(/^[^:]*:\s*(.*)\s*\$$/,"$1"),developer:"The Xinha Core Developer Team",developer_url:"$HeadURL: http://svn.xinha.org/trunk/modules/InternetExplorer/InternetExplorer.js $".replace(/^[^:]*:\s*(.*)\s*\$$/,"$1"),sponsor:"",sponsor_url:"",license:"htmlArea"};function InternetExplorer(a){this.editor=a;a.InternetExplorer=this}InternetExplorer.prototype.onKeyPress=function(a){if(this.editor.isShortCut(a)){switch(this.editor.getKey(a).toLowerCase()){case"n":this.editor.execCommand("formatblock",false,"<p>");Xinha._stopEvent(a);return true;break;case"1":case"2":case"3":case"4":case"5":case"6":this.editor.execCommand("formatblock",false,"<h"+this.editor.getKey(a).toLowerCase()+">");Xinha._stopEvent(a);return true;break}}switch(a.keyCode){case 8:case 46:if(this.handleBackspace()){Xinha._stopEvent(a);return true}break}return false};InternetExplorer.prototype.handleBackspace=function(){var e=this.editor;var f=e.getSelection();if(f.type=="Control"){var g=e.activeElement(f);Xinha.removeFromParent(g);return true}var d=e.createRange(f);var c=d.duplicate();c.moveStart("character",-1);var b=c.parentElement();if(b!=d.parentElement()&&(/^a$/i.test(b.tagName))){c.collapse(true);c.moveEnd("character",1);c.pasteHTML("");c.select();return true}};InternetExplorer.prototype.inwardHtml=function(a){a=a.replace(/<(\/?)del(\s|>|\/)/ig,"<$1strike$2");a=a.replace(/(<script|<!--)/i,"&nbsp;$1");a=a.replace(/<span[^>]+id="__InsertSpan_Workaround_[a-z]+".*?>([\s\S]*?)<\/span>/i,"$1");return a};InternetExplorer.prototype.outwardHtml=function(a){a=a.replace(/&nbsp;(\s*)(<script|<!--)/i,"$1$2");a=a.replace(/<span[^>]+id="__InsertSpan_Workaround_[a-z]+".*?>([\s\S]*?)<\/span>/i,"$1");return a};InternetExplorer.prototype.onExecCommand=function(f,d,c){switch(f){case"saveas":var o=null;var l=this.editor;var h=document.createElement("iframe");h.src="about:blank";h.style.display="none";document.body.appendChild(h);try{if(h.contentDocument){o=h.contentDocument}else{o=h.contentWindow.document}}catch(n){}o.open("text/html","replace");var k="";if(l.config.browserQuirksMode===false){var e='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">'}else{if(l.config.browserQuirksMode===true){var e=""}else{var e=Xinha.getDoctype(document)}}if(!l.config.fullPage){k+=e+"\n";k+="<html>\n";k+="<head>\n";k+='<meta http-equiv="Content-Type" content="text/html; charset='+l.config.charSet+'">\n';if(typeof l.config.baseHref!="undefined"&&l.config.baseHref!==null){k+='<base href="'+l.config.baseHref+'"/>\n'}if(typeof l.config.pageStyleSheets!=="undefined"){for(var j=0;j<l.config.pageStyleSheets.length;j++){if(l.config.pageStyleSheets[j].length>0){k+='<link rel="stylesheet" type="text/css" href="'+l.config.pageStyleSheets[j]+'">'}}}if(l.config.pageStyle){k+='<style type="text/css">\n'+l.config.pageStyle+"\n</style>"}k+="</head>\n";k+="<body>\n";k+=l.getEditorContent();k+="</body>\n";k+="</html>"}else{k=l.getEditorContent();if(k.match(Xinha.RE_doctype)){l.setDoctype(RegExp.$1)}}o.write(k);o.close();o.execCommand(f,d,c);document.body.removeChild(h);return true;break;case"removeformat":var l=this.editor;var b=l.getSelection();var p=l.saveSelection(b);var j,a,g;function m(q){if(q.nodeType!=1){return}q.removeAttribute("style");for(var i=0;i<q.childNodes.length;i++){m(q.childNodes[i])}if((q.tagName.toLowerCase()=="span"&&!q.attributes.length)||q.tagName.toLowerCase()=="font"){q.outerHTML=q.innerHTML}}if(l.selectionEmpty(b)){g=l._doc.body.childNodes;for(j=0;j<g.length;j++){a=g[j];if(a.nodeType!=1){continue}if(a.tagName.toLowerCase()=="span"){newNode=l.convertNode(a,"div");a.parentNode.replaceChild(newNode,a);a=newNode}m(a)}}l._doc.execCommand(f,d,c);l.restoreSelection(p);return true;break}return false};Xinha.prototype.insertNodeAtSelection=function(a){this.insertHTML(a.outerHTML)};Xinha.prototype.getParentElement=function(d){if(typeof d=="undefined"){d=this.getSelection()}var a=this.createRange(d);switch(d.type){case"Text":var c=a.parentElement();while(true){var b=a.duplicate();b.moveToElementText(c);if(b.inRange(a)){break}if((c.nodeType!=1)||(c.tagName.toLowerCase()=="body")){break}c=c.parentElement}return c;case"None":return a.parentElement();case"Control":return a.item(0);default:return this._doc.body}};Xinha.prototype.activeElement=function(c){if((c===null)||this.selectionEmpty(c)){return null}if(c.type.toLowerCase()=="control"){return c.createRange().item(0)}else{var b=c.createRange();var a=this.getParentElement(c);if(a.innerHTML==b.htmlText){return a}return null}};Xinha.prototype.selectionEmpty=function(a){if(!a){return true}return this.createRange(a).htmlText===""};Xinha.prototype.saveSelection=function(){return this.createRange(this.getSelection())};Xinha.prototype.restoreSelection=function(k){if(!k){return}var b=this.createRange(this.getSelection());var f=function(m){for(var e=m;e;e=e.parentNode){if(e.tagName.toLowerCase()=="html"){return e.parentNode}}return null};if(f(k.parentElement())==f(b.parentElement())){if(b.isEqual(k)){return}}try{k.select()}catch(c){}b=this.createRange(this.getSelection());if(b.parentElement()!=k.parentElement()){var d=this.config.selectWorkaround||"VisibleCue";switch(d){case"SimulateClick":case"InsertSpan":var g=f(k.parentElement());var i=function(o){var n="";for(var m=0;m<26;++m){n+=String.fromCharCode("a".charCodeAt(0)+m)}var e="";for(var m=0;m<o;++m){e+=n.substr(Math.floor(Math.random()*n.length+1),1)}return e};var l=1;var j="__InsertSpan_Workaround_"+i(l);while(g.getElementById(j)){l+=1;j="__InsertSpan_Workaround_"+i(l)}k.pasteHTML('<span id="'+j+'"></span>');var h=g.getElementById(j);k.moveToElementText(h);k.select();break;case"JustificationHack":var a=String.fromCharCode(1);k.pasteHTML(a);k.findText(a,-1);k.select();k.execCommand("JustifyNone");k.pasteHTML("");break;case"VisibleCue":default:var a=String.fromCharCode(1);k.pasteHTML(a);k.findText(a,-1);k.select()}}};Xinha.prototype.selectNodeContents=function(d,e){this.focusEditor();this.forceRedraw();var a;var f=typeof e=="undefined"?true:false;if(f&&d.tagName&&d.tagName.toLowerCase().match(/table|img|input|select|textarea/)){a=this._doc.body.createControlRange();a.add(d)}else{a=this._doc.body.createTextRange();if(3==d.nodeType){if(d.parentNode){a.moveToElementText(d.parentNode)}else{a.moveToElementText(this._doc.body)}var g=this._doc.body.createTextRange();var b=0;var c=d.previousSibling;for(;c&&(1!=c.nodeType);c=c.previousSibling){if(3==c.nodeType){b+=c.nodeValue.length-c.nodeValue.split("\r").length-1}}if(c&&(1==c.nodeType)){g.moveToElementText(c);a.setEndPoint("StartToEnd",g)}if(b){a.moveStart("character",b)}b=0;c=d.nextSibling;for(;c&&(1!=c.nodeType);c=c.nextSibling){if(3==c.nodeType){b+=c.nodeValue.length-c.nodeValue.split("\r").length-1;if(!c.nextSibling){b+=1}}}if(c&&(1==c.nodeType)){g.moveToElementText(c);a.setEndPoint("EndToStart",g)}if(b){a.moveEnd("character",-b)}if(!d.nextSibling){a.moveEnd("character",-1)}}else{a.moveToElementText(d)}}if(typeof e!="undefined"){a.collapse(e);if(!e){a.moveStart("character",-1);a.moveEnd("character",-1)}}a.select()};Xinha.prototype.insertHTML=function(b){this.focusEditor();var c=this.getSelection();var a=this.createRange(c);a.pasteHTML(b)};Xinha.prototype.getSelectedHTML=function(){var b=this.getSelection();if(this.selectionEmpty(b)){return""}var a=this.createRange(b);if(a.htmlText){return a.htmlText}else{if(a.length>=1){return a.item(0).outerHTML}}return""};Xinha.prototype.getSelection=function(){return this._doc.selection};Xinha.prototype.createRange=function(a){if(!a){a=this.getSelection()}return a.createRange()};Xinha.prototype.isKeyEvent=function(a){return a.type=="keydown"};Xinha.prototype.getKey=function(a){return String.fromCharCode(a.keyCode)};Xinha.getOuterHTML=function(a){return a.outerHTML};Xinha.cc=String.fromCharCode(8201);Xinha.prototype.setCC=function(h){var d=Xinha.cc;if(h=="textarea"){var f=this._textArea;var j=document.selection.createRange();j.collapse();j.text=d;var g=f.value.indexOf(d);var k=f.value.substring(0,g);var b=f.value.substring(g+d.length,f.value.length);if(b.match(/^[^<]*>/)){var i=b.indexOf(">")+1;f.value=k+b.substring(0,i)+d+b.substring(i,b.length)}else{f.value=k+d+b}f.value=f.value.replace(new RegExp("(&[^"+d+"]*?)("+d+")([^"+d+"]*?;)"),"$1$3$2");f.value=f.value.replace(new RegExp("(<script[^>]*>[^"+d+"]*?)("+d+")([^"+d+"]*?<\/script>)"),"$1$3$2");f.value=f.value.replace(new RegExp("^([^"+d+"]*)("+d+")([^"+d+"]*<body[^>]*>)(.*?)"),"$1$3$2$4")}else{var c=this.getSelection();var a=c.createRange();if(c.type=="Control"){var e=a.item(0);e.outerHTML+=d}else{a.collapse();a.text=d}}};Xinha.prototype.findCC=function(b){var a=(b=="textarea")?this._textArea:this._doc.body;range=a.createTextRange();if(range.findText(escape(Xinha.cc))){range.select();range.text="";range.select()}if(range.findText(Xinha.cc)){range.select();range.text="";range.select()}if(b=="textarea"){this._textArea.focus()}};Xinha.getDoctype=function(a){return(a.compatMode=="CSS1Compat"&&Xinha.ie_version<8)?'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">':""};
\ No newline at end of file
diff --git a/mailboxes/xinha/modules/Opera/Opera.js b/mailboxes/xinha/modules/Opera/Opera.js
new file mode 100644 (file)
index 0000000..7119294
--- /dev/null
@@ -0,0 +1,3 @@
+/* This compressed file is part of Xinha. For uncompressed sources, forum, and bug reports, go to xinha.org */
+/* This file is part of version 0.96beta2 released Fri, 20 Mar 2009 11:01:14 +0100 */
+Opera._pluginInfo={name:"Opera",origin:"Xinha Core",version:"$LastChangedRevision: 1084 $".replace(/^[^:]*:\s*(.*)\s*\$$/,"$1"),developer:"The Xinha Core Developer Team",developer_url:"$HeadURL: http://svn.xinha.org/trunk/modules/Opera/Opera.js $".replace(/^[^:]*:\s*(.*)\s*\$$/,"$1"),sponsor:"Gogo Internet Services Limited",sponsor_url:"http://www.gogo.co.nz/",license:"htmlArea"};function Opera(a){this.editor=a;a.Opera=this}Opera.prototype.onKeyPress=function(u){var d=this.editor;var j=d.getSelection();if(d.isShortCut(u)){switch(d.getKey(u).toLowerCase()){case"z":if(d._unLink&&d._unlinkOnUndo){Xinha._stopEvent(u);d._unLink();d.updateToolbar();return true}break;case"a":sel=d.getSelection();sel.removeAllRanges();range=d.createRange();range.selectNodeContents(d._doc.body);sel.addRange(range);Xinha._stopEvent(u);return true;break;case"v":if(!d.config.htmlareaPaste){return true}break}}switch(d.getKey(u)){case" ":var g=function(y,m){var x=y.nextSibling;if(typeof m=="string"){m=d._doc.createElement(m)}var s=y.parentNode.insertBefore(m,x);Xinha.removeFromParent(y);s.appendChild(y);x.data=" "+x.data;j.collapse(x,1);d._unLink=function(){var a=s.firstChild;s.removeChild(a);s.parentNode.insertBefore(a,s);Xinha.removeFromParent(s);d._unLink=null;d._unlinkOnUndo=false};d._unlinkOnUndo=true;return s};if(d.config.convertUrlsToLinks&&j&&j.isCollapsed&&j.anchorNode.nodeType==3&&j.anchorNode.data.length>3&&j.anchorNode.data.indexOf(".")>=0){var t=j.anchorNode.data.substring(0,j.anchorOffset).search(/\S{4,}$/);if(t==-1){break}if(d._getFirstAncestor(j,"a")){break}var h=j.anchorNode.data.substring(0,j.anchorOffset).replace(/^.*?(\S*)$/,"$1");var e=h.match(Xinha.RE_email);if(e){var v=j.anchorNode;var f=v.splitText(j.anchorOffset);var k=v.splitText(t);g(k,"a").href="mailto:"+e[0];break}RE_date=/([0-9]+\.)+/;RE_ip=/(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/;var p=h.match(Xinha.RE_url);if(p){if(RE_date.test(h)){break}var i=j.anchorNode;var b=i.splitText(j.anchorOffset);var q=i.splitText(t);g(q,"a").href=(p[1]?p[1]:"http://")+p[2];break}}break}switch(u.keyCode){case 27:if(d._unLink){d._unLink();Xinha._stopEvent(u)}break;break;case 8:case 46:if(!u.shiftKey&&this.handleBackspace()){Xinha._stopEvent(u)}default:d._unlinkOnUndo=false;if(j.anchorNode&&j.anchorNode.nodeType==3){var w=d._getFirstAncestor(j,"a");if(!w){break}if(!w._updateAnchTimeout){if(j.anchorNode.data.match(Xinha.RE_email)&&w.href.match("mailto:"+j.anchorNode.data.trim())){var l=j.anchorNode;var c=function(){w.href="mailto:"+l.data.trim();w._updateAnchTimeout=setTimeout(c,250)};w._updateAnchTimeout=setTimeout(c,1000);break}var n=j.anchorNode.data.match(Xinha.RE_url);if(n&&w.href.match(new RegExp("http(s)?://"+Xinha.escapeStringForRegExp(j.anchorNode.data.trim())))){var o=j.anchorNode;var r=function(){n=o.data.match(Xinha.RE_url);if(n){w.href=(n[1]?n[1]:"http://")+n[2]}w._updateAnchTimeout=setTimeout(r,250)};w._updateAnchTimeout=setTimeout(r,1000)}}}break}return false};Opera.prototype.handleBackspace=function(){var a=this.editor;setTimeout(function(){var e=a.getSelection();var g=a.createRange(e);var f=g.startContainer;var i=g.startOffset;var c=g.endContainer;var h=g.endOffset;var j=f.nextSibling;if(f.nodeType==3){f=f.parentNode}if(!(/\S/.test(f.tagName))){var d=document.createElement("p");while(f.firstChild){d.appendChild(f.firstChild)}f.parentNode.insertBefore(d,f);Xinha.removeFromParent(f);var b=g.cloneRange();b.setStartBefore(j);b.setEndAfter(j);b.extractContents();e.removeAllRanges();e.addRange(b)}},10)};Opera.prototype.inwardHtml=function(a){a=a.replace(/<(\/?)del(\s|>|\/)/ig,"<$1strike$2");return a};Opera.prototype.outwardHtml=function(a){return a};Opera.prototype.onExecCommand=function(f,e,d){switch(f){case"removeformat":var k=this.editor;var c=k.getSelection();var l=k.saveSelection(c);var j=k.createRange(c);var g=k._doc.body.getElementsByTagName("*");var a=(j.startContainer.nodeType==1)?j.startContainer:j.startContainer.parentNode;var h,b;if(c.isCollapsed){j.selectNodeContents(k._doc.body)}for(h=0;h<g.length;h++){b=g[h];if(j.isPointInRange(b,0)||(g[h]==a&&j.startOffset==0)){b.removeAttribute("style")}}this.editor._doc.execCommand(f,e,d);k.restoreSelection(l);return true;break}return false};Opera.prototype.onMouseDown=function(a){};Xinha.prototype.insertNodeAtSelection=function(b){if(b.ownerDocument!=this._doc){try{b=this._doc.adoptNode(b)}catch(f){}}this.focusEditor();var d=this.getSelection();var a=this.createRange(d);a.deleteContents();var c=a.startContainer;var h=a.startOffset;var g=b;d.removeAllRanges();switch(c.nodeType){case 3:if(b.nodeType==3){c.insertData(h,b.data);a=this.createRange();a.setEnd(c,h+b.length);a.setStart(c,h+b.length);d.addRange(a)}else{c=c.splitText(h);if(b.nodeType==11){g=g.firstChild}c.parentNode.insertBefore(b,c);this.selectNodeContents(g);this.updateToolbar()}break;case 1:if(b.nodeType==11){g=g.firstChild}c.insertBefore(b,c.childNodes[h]);this.selectNodeContents(g);this.updateToolbar();break}};Xinha.prototype.getParentElement=function(c){if(typeof c=="undefined"){c=this.getSelection()}var a=this.createRange(c);try{var d=a.commonAncestorContainer;if(!a.collapsed&&a.startContainer==a.endContainer&&a.startOffset-a.endOffset<=1&&a.startContainer.hasChildNodes()){d=a.startContainer.childNodes[a.startOffset]}while(d.nodeType==3){d=d.parentNode}return d}catch(b){return null}};Xinha.prototype.activeElement=function(a){if((a===null)||this.selectionEmpty(a)){return null}if(!a.isCollapsed){if(a.anchorNode.childNodes.length>a.anchorOffset&&a.anchorNode.childNodes[a.anchorOffset].nodeType==1){return a.anchorNode.childNodes[a.anchorOffset]}else{if(a.anchorNode.nodeType==1){return a.anchorNode}else{return null}}}return null};Xinha.prototype.selectionEmpty=function(a){if(!a){return true}if(typeof a.isCollapsed!="undefined"){return a.isCollapsed}return true};Xinha.prototype.saveSelection=function(){return this.createRange(this.getSelection()).cloneRange()};Xinha.prototype.restoreSelection=function(a){var b=this.getSelection();b.removeAllRanges();b.addRange(a)};Xinha.prototype.selectNodeContents=function(b,d){this.focusEditor();this.forceRedraw();var a;var e=typeof d=="undefined"?true:false;var c=this.getSelection();a=this._doc.createRange();if(e&&b.tagName&&b.tagName.toLowerCase().match(/table|img|input|textarea|select/)){a.selectNode(b)}else{a.selectNodeContents(b)}c.removeAllRanges();c.addRange(a);if(typeof d!="undefined"){if(d){c.collapse(a.startContainer,a.startOffset)}else{c.collapse(a.endContainer,a.endOffset)}}};Xinha.prototype.insertHTML=function(c){var e=this.getSelection();var a=this.createRange(e);this.focusEditor();var b=this._doc.createDocumentFragment();var f=this._doc.createElement("div");f.innerHTML=c;while(f.firstChild){b.appendChild(f.firstChild)}var d=this.insertNodeAtSelection(b)};Xinha.prototype.getSelectedHTML=function(){var b=this.getSelection();if(b.isCollapsed){return""}var a=this.createRange(b);return Xinha.getHTML(a.cloneContents(),false,this)};Xinha.prototype.getSelection=function(){var c=this._iframe.contentWindow.getSelection();if(c&&c.focusNode&&c.focusNode.tagName&&c.focusNode.tagName=="HTML"){var b=this._doc.getElementsByTagName("body")[0];var a=this.createRange();a.selectNodeContents(b);c.removeAllRanges();c.addRange(a);c.collapseToEnd()}return c};Xinha.prototype.createRange=function(b){this.activateEditor();if(typeof b!="undefined"){try{return b.getRangeAt(0)}catch(a){return this._doc.createRange()}}else{return this._doc.createRange()}};Xinha.prototype.isKeyEvent=function(a){return a.type=="keypress"};Xinha.prototype.getKey=function(a){return String.fromCharCode(a.charCode)};Xinha.getOuterHTML=function(a){return(new XMLSerializer()).serializeToString(a)};Xinha.cc=String.fromCharCode(8286);Xinha.prototype.setCC=function(i){var c=Xinha.cc;try{if(i=="textarea"){var f=this._textArea;var g=f.selectionStart;var k=f.value.substring(0,g);var a=f.value.substring(g,f.value.length);if(a.match(/^[^<]*>/)){var j=a.indexOf(">")+1;f.value=k+a.substring(0,j)+c+a.substring(j,a.length)}else{f.value=k+c+a}f.value=f.value.replace(new RegExp("(&[^"+c+"]*?)("+c+")([^"+c+"]*?;)"),"$1$3$2");f.value=f.value.replace(new RegExp("(<script[^>]*>[^"+c+"]*?)("+c+")([^"+c+"]*?<\/script>)"),"$1$3$2");f.value=f.value.replace(new RegExp("^([^"+c+"]*)("+c+")([^"+c+"]*<body[^>]*>)(.*?)"),"$1$3$2$4");f.value=f.value.replace(c,'<span id="XinhaOperaCaretMarker">MARK</span>')}else{var b=this.getSelection();var d=this._doc.createElement("span");d.id="XinhaOperaCaretMarker";b.getRangeAt(0).insertNode(d)}}catch(h){}};Xinha.prototype.findCC=function(i){if(i=="textarea"){var h=this._textArea;var j=h.value.search(/(<span\s+id="XinhaOperaCaretMarker"\s*\/?>((\s|(MARK))*<\/span>)?)/);if(j==-1){return}var e=RegExp.$1;var f=j+e.length;var k=h.value.substring(0,j);var b=h.value.substring(f,h.value.length);h.value=k;h.scrollTop=h.scrollHeight;var d=h.scrollTop;h.value+=b;h.setSelectionRange(j,j);h.focus();h.scrollTop=d}else{var g=this._doc.getElementById("XinhaOperaCaretMarker");if(g){this.focusEditor();var a=this.createRange();a.selectNode(g);var c=this.getSelection();c.addRange(a);c.collapseToStart();this.scrollToElement(g);g.parentNode.removeChild(g);return}}};Xinha.getDoctype=function(a){var b="";if(a.doctype){b+="<!DOCTYPE "+a.doctype.name+" PUBLIC ";b+=a.doctype.publicId?'"'+a.doctype.publicId+'"':"";b+=a.doctype.systemId?' "'+a.doctype.systemId+'"':"";b+=">"}return b};Xinha.prototype._standardInitIframe=Xinha.prototype.initIframe;Xinha.prototype.initIframe=function(){if(!this._iframeLoadDone){if(this._iframe.contentWindow&&this._iframe.contentWindow.xinhaReadyToRoll){this._iframeLoadDone=true;this._standardInitIframe()}else{var a=this;setTimeout(function(){a.initIframe()},5)}}};Xinha._addEventOperaOrig=Xinha._addEvent;Xinha._addEvent=function(a,c,b){if(a.tagName&&a.tagName.toLowerCase()=="select"&&c=="change"){return Xinha.addDom0Event(a,c,b)}return Xinha._addEventOperaOrig(a,c,b)};
\ No newline at end of file
diff --git a/mailboxes/xinha/modules/WebKit/WebKit.js b/mailboxes/xinha/modules/WebKit/WebKit.js
new file mode 100644 (file)
index 0000000..9457bbd
--- /dev/null
@@ -0,0 +1,3 @@
+/* This compressed file is part of Xinha. For uncompressed sources, forum, and bug reports, go to xinha.org */
+/* This file is part of version 0.96beta2 released Fri, 20 Mar 2009 11:01:14 +0100 */
+WebKit._pluginInfo={name:"WebKit",origin:"Xinha Core",version:"$LastChangedRevision: 1146 $".replace(/^[^:]*:\s*(.*)\s*\$$/,"$1"),developer:"The Xinha Core Developer Team",developer_url:"$HeadURL: http://svn.xinha.org/trunk/modules/WebKit/WebKit.js $".replace(/^[^:]*:\s*(.*)\s*\$$/,"$1"),sponsor:"",sponsor_url:"",license:"htmlArea"};function WebKit(a){this.editor=a;a.WebKit=this}WebKit.prototype.onKeyPress=function(u){var d=this.editor;var j=d.getSelection();if(d.isShortCut(u)){switch(d.getKey(u).toLowerCase()){case"z":if(d._unLink&&d._unlinkOnUndo){Xinha._stopEvent(u);d._unLink();d.updateToolbar();return true}break;case"a":break;case"v":if(!d.config.htmlareaPaste){return true}break}}switch(d.getKey(u)){case" ":var g=function(y,m){var x=y.nextSibling;if(typeof m=="string"){m=d._doc.createElement(m)}var s=y.parentNode.insertBefore(m,x);Xinha.removeFromParent(y);s.appendChild(y);x.data=" "+x.data;j.collapse(x,1);d._unLink=function(){var a=s.firstChild;s.removeChild(a);s.parentNode.insertBefore(a,s);Xinha.removeFromParent(s);d._unLink=null;d._unlinkOnUndo=false};d._unlinkOnUndo=true;return s};if(d.config.convertUrlsToLinks&&j&&j.isCollapsed&&j.anchorNode.nodeType==3&&j.anchorNode.data.length>3&&j.anchorNode.data.indexOf(".")>=0){var t=j.anchorNode.data.substring(0,j.anchorOffset).search(/\S{4,}$/);if(t==-1){break}if(d._getFirstAncestor(j,"a")){break}var h=j.anchorNode.data.substring(0,j.anchorOffset).replace(/^.*?(\S*)$/,"$1");var e=h.match(Xinha.RE_email);if(e){var v=j.anchorNode;var f=v.splitText(j.anchorOffset);var k=v.splitText(t);g(k,"a").href="mailto:"+e[0];break}RE_date=/([0-9]+\.)+/;RE_ip=/(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/;var p=h.match(Xinha.RE_url);if(p){if(RE_date.test(h)){break}var i=j.anchorNode;var b=i.splitText(j.anchorOffset);var q=i.splitText(t);g(q,"a").href=(p[1]?p[1]:"http://")+p[2];break}}break}switch(u.keyCode){case 13:if(u.shiftKey){}break;case 27:if(d._unLink){d._unLink();Xinha._stopEvent(u)}break;case 8:case 46:if(!u.shiftKey&&this.handleBackspace()){Xinha._stopEvent(u)}break;default:d._unlinkOnUndo=false;if(j.anchorNode&&j.anchorNode.nodeType==3){var w=d._getFirstAncestor(j,"a");if(!w){break}if(!w._updateAnchTimeout){if(j.anchorNode.data.match(Xinha.RE_email)&&w.href.match("mailto:"+j.anchorNode.data.trim())){var l=j.anchorNode;var c=function(){w.href="mailto:"+l.data.trim();w._updateAnchTimeout=setTimeout(c,250)};w._updateAnchTimeout=setTimeout(c,1000);break}var n=j.anchorNode.data.match(Xinha.RE_url);if(n&&w.href.match(new RegExp("http(s)?://"+Xinha.escapeStringForRegExp(j.anchorNode.data.trim())))){var o=j.anchorNode;var r=function(){n=o.data.match(Xinha.RE_url);if(n){w.href=(n[1]?n[1]:"http://")+n[2]}w._updateAnchTimeout=setTimeout(r,250)};w._updateAnchTimeout=setTimeout(r,1000)}}}break}return false};WebKit.prototype.handleBackspace=function(){var a=this.editor;setTimeout(function(){var e=a.getSelection();var g=a.createRange(e);var f=g.startContainer;var i=g.startOffset;var c=g.endContainer;var h=g.endOffset;var j=f.nextSibling;if(f.nodeType==3){f=f.parentNode}if(!(/\S/.test(f.tagName))){var d=document.createElement("p");while(f.firstChild){d.appendChild(f.firstChild)}f.parentNode.insertBefore(d,f);Xinha.removeFromParent(f);var b=g.cloneRange();b.setStartBefore(j);b.setEndAfter(j);b.extractContents();e.removeAllRanges();e.addRange(b)}},10)};WebKit.prototype.inwardHtml=function(a){return a};WebKit.prototype.outwardHtml=function(a){return a};WebKit.prototype.onExecCommand=function(h,g,f){this.editor._doc.execCommand("styleWithCSS",false,false);switch(h){case"paste":alert(Xinha._lc("The Paste button does not work in the Safari browser for security reasons. Press CTRL-V on your keyboard to paste directly."));return true;break;case"removeformat":var m=this.editor;var e=m.getSelection();var q=m.saveSelection(e);var l=m.createRange(e);var j=m._doc.getElementsByTagName("*");j=Xinha.collectionToArray(j);var a=(l.startContainer.nodeType==1)?l.startContainer:l.startContainer.parentNode;var k,d,p,n,c,b=m._doc.createRange();function o(r){if(r.nodeType!=1){return}r.removeAttribute("style");for(var i=0;i<r.childNodes.length;i++){o(r.childNodes[i])}if((r.tagName.toLowerCase()=="span"&&!r.attributes.length)||r.tagName.toLowerCase()=="font"){b.selectNodeContents(r);n=b.extractContents();while(n.firstChild){c=n.removeChild(n.firstChild);r.parentNode.insertBefore(c,r)}r.parentNode.removeChild(r)}}if(e.isCollapsed){j=m._doc.body.childNodes;for(k=0;k<j.length;k++){d=j[k];if(d.nodeType!=1){continue}if(d.tagName.toLowerCase()=="span"){p=m.convertNode(d,"div");d.parentNode.replaceChild(p,d);d=p}o(d)}}else{for(k=0;k<j.length;k++){d=j[k];if(l.isPointInRange(d,0)||(j[k]==a&&l.startOffset==0)){o(d)}}}b.detach();m.restoreSelection(q);return true;break}return false};WebKit.prototype.onMouseDown=function(a){if(a.target.tagName.toLowerCase()=="hr"||a.target.tagName.toLowerCase()=="img"){this.editor.selectNodeContents(a.target)}};Xinha.prototype.insertNodeAtSelection=function(b){var d=this.getSelection();var a=this.createRange(d);d.removeAllRanges();a.deleteContents();var c=a.startContainer;var f=a.startOffset;var e=b;switch(c.nodeType){case 3:if(b.nodeType==3){c.insertData(f,b.data);a=this.createRange();a.setEnd(c,f+b.length);a.setStart(c,f+b.length);d.addRange(a)}else{c=c.splitText(f);if(b.nodeType==11){e=e.firstChild}c.parentNode.insertBefore(b,c);this.selectNodeContents(e);this.updateToolbar()}break;case 1:if(b.nodeType==11){e=e.firstChild}c.insertBefore(b,c.childNodes[f]);this.selectNodeContents(e);this.updateToolbar();break}};Xinha.prototype.getParentElement=function(c){if(typeof c=="undefined"){c=this.getSelection()}var a=this.createRange(c);try{var d=a.commonAncestorContainer;if(!a.collapsed&&a.startContainer==a.endContainer&&a.startOffset-a.endOffset<=1&&a.startContainer.hasChildNodes()){d=a.startContainer.childNodes[a.startOffset]}while(d.nodeType==3){d=d.parentNode}return d}catch(b){return null}};Xinha.prototype.activeElement=function(a){if((a===null)||this.selectionEmpty(a)){return null}if(!a.isCollapsed){if(a.anchorNode.childNodes.length>a.anchorOffset&&a.anchorNode.childNodes[a.anchorOffset].nodeType==1){return a.anchorNode.childNodes[a.anchorOffset]}else{if(a.anchorNode.nodeType==1){return a.anchorNode}else{return null}}}return null};Xinha.prototype.selectionEmpty=function(a){if(!a){return true}if(typeof a.isCollapsed!="undefined"){return a.isCollapsed}return true};Xinha.prototype.saveSelection=function(){return this.createRange(this.getSelection()).cloneRange()};Xinha.prototype.restoreSelection=function(a){var b=this.getSelection();b.removeAllRanges();b.addRange(a)};Xinha.prototype.selectNodeContents=function(b,d){this.focusEditor();this.forceRedraw();var a;var e=typeof d=="undefined"?true:false;var c=this.getSelection();a=this._doc.createRange();if(e&&b.tagName&&b.tagName.toLowerCase().match(/table|img|input|textarea|select/)){a.selectNode(b)}else{a.selectNodeContents(b)}c.removeAllRanges();c.addRange(a);if(typeof d!="undefined"){if(d){c.collapse(a.startContainer,a.startOffset)}else{c.collapse(a.endContainer,a.endOffset)}}};Xinha.prototype.insertHTML=function(c){var e=this.getSelection();var a=this.createRange(e);this.focusEditor();var b=this._doc.createDocumentFragment();var f=this._doc.createElement("div");f.innerHTML=c;while(f.firstChild){b.appendChild(f.firstChild)}var d=this.insertNodeAtSelection(b)};Xinha.prototype.getSelectedHTML=function(){var b=this.getSelection();if(b.isCollapsed){return""}var a=this.createRange(b);if(a){return Xinha.getHTML(a.cloneContents(),false,this)}else{return""}};Xinha.prototype.getSelection=function(){return this._iframe.contentWindow.getSelection()};Xinha.prototype.createRange=function(b){this.activateEditor();if(typeof b!="undefined"){try{return b.getRangeAt(0)}catch(a){return this._doc.createRange()}}else{return this._doc.createRange()}};Xinha.prototype.isKeyEvent=function(a){return a.type=="keydown"};Xinha.prototype.getKey=function(b){var a=String.fromCharCode(parseInt(b.keyIdentifier.replace(/^U\+/,""),16));if(b.shiftKey){return a}else{return a.toLowerCase()}};Xinha.getOuterHTML=function(a){return(new XMLSerializer()).serializeToString(a)};Xinha.cc=String.fromCharCode(8286);Xinha.prototype.setCC=function(h){var c=Xinha.cc;try{if(h=="textarea"){var d=this._textArea;var f=d.selectionStart;var j=d.value.substring(0,f);var a=d.value.substring(f,d.value.length);if(a.match(/^[^<]*>/)){var i=a.indexOf(">")+1;d.value=j+a.substring(0,i)+c+a.substring(i,a.length)}else{d.value=j+c+a}d.value=d.value.replace(new RegExp("(&[^"+c+";]*?)("+c+")([^"+c+"]*?;)"),"$1$3$2");d.value=d.value.replace(new RegExp("(<script[^>]*>[^"+c+"]*?)("+c+")([^"+c+"]*?<\/script>)"),"$1$3$2");d.value=d.value.replace(new RegExp("^([^"+c+"]*)("+c+")([^"+c+"]*<body[^>]*>)(.*?)"),"$1$3$2$4")}else{var b=this.getSelection();b.getRangeAt(0).insertNode(this._doc.createTextNode(c))}}catch(g){}};Xinha.prototype.findCC=function(i){var c=Xinha.cc;if(i=="textarea"){var f=this._textArea;var j=f.value.indexOf(c);if(j==-1){return}var d=j+c.length;var k=f.value.substring(0,j);var a=f.value.substring(d,f.value.length);f.value=k;f.scrollTop=f.scrollHeight;var b=f.scrollTop;f.value+=a;f.setSelectionRange(j,j);f.focus();f.scrollTop=b}else{var m=this;try{var l=this._doc;l.body.innerHTML=l.body.innerHTML.replace(new RegExp(c),'<span id="XinhaEditingPostion"></span>');var h=l.getElementById("XinhaEditingPostion");this.selectNodeContents(h);this.scrollToElement(h);h.parentNode.removeChild(h);this._iframe.contentWindow.focus()}catch(g){}}};Xinha.prototype._standardToggleBorders=Xinha.prototype._toggleBorders;Xinha.prototype._toggleBorders=function(){var a=this._standardToggleBorders();var c=this._doc.getElementsByTagName("TABLE");for(var b=0;b<c.length;b++){c[b].style.display="none";c[b].style.display="table"}return a};Xinha.getDoctype=function(a){var b="";if(a.doctype){b+="<!DOCTYPE "+a.doctype.name+" PUBLIC ";b+=a.doctype.publicId?'"'+a.doctype.publicId+'"':"";b+=a.doctype.systemId?' "'+a.doctype.systemId+'"':"";b+=">"}return b};
\ No newline at end of file
diff --git a/mailboxes/xinha/popups/blank.html b/mailboxes/xinha/popups/blank.html
new file mode 100644 (file)
index 0000000..45d5f7a
--- /dev/null
@@ -0,0 +1 @@
+<html><body onload="window.xinhaReadyToRoll = true;"></body></html>
\ No newline at end of file
diff --git a/mailboxes/xinha/popups/editor_help.html b/mailboxes/xinha/popups/editor_help.html
new file mode 100644 (file)
index 0000000..f197813
--- /dev/null
@@ -0,0 +1,62 @@
+<html>
+ <head>
+  <title>Editor Help</title>
+  <script type="text/javascript" src="popup.js"></script>
+  <link rel="stylesheet" type="text/css" href="popup.css" />
+
+<script type="text/javascript">
+  window.resizeTo(400, 480);
+Xinha = window.opener.Xinha;
+function Init() {
+  __dlg_translate('Xinha');
+  __dlg_init();
+
+}
+
+
+function onCancel() {
+  __dlg_close(null);
+  return false;
+}
+
+</script>
+</head>
+
+<body class="dialog" onload="Init()">
+<div class="title">Xinha Help</div>
+<table width="100%" style="background: white none repeat scroll 0%;">
+  <thead style="border: 1px solid gray; background: silver none repeat scroll 0%;">
+  <tr>
+    <th colspan="2"> 
+      <span style="text-align:center">Keyboard shortcuts</span><br />
+      <span>The editor provides the following key combinations:</span>
+    </th>
+  </tr>
+  </thead>
+  <tbody>
+  <tr><td>ENTER</td><td><span>new paragraph</span>(&lt;P&gt;)</td></tr>
+  <tr><td>SHIFT-ENTER</td><td><span>insert linebreak</span>(&lt;BR&gt;)</td></tr>
+  <tr><td>CTRL-A</td><td><span>Select all</span></td></tr>
+  <tr><td>CTRL-B</td><td><span>Bold</span></td></tr>
+  <tr><td>CTRL-I</td><td><span>Italic</span></td></tr>
+  <tr><td>CTRL-U</td><td><span>Underline</span></td></tr>
+  <tr><td>CTRL-S</td><td><span>Strikethrough</span></td></tr>
+  <tr><td>CTRL-L</td><td><span>Justify Left</span></td></tr>
+  <tr><td>CTRL-E</td><td><span>Justify Center</span></td></tr>
+  <tr><td>CTRL-R</td><td><span>Justify Right</span></td></tr>
+  <tr><td>CTRL-J</td><td><span>Justify Full</span></td></tr>
+  <tr><td>CTRL-Z</td><td><span>Undoes your last action</span></td></tr>
+  <tr><td>CTRL-Y</td><td><span>Redoes your last action</span></td></tr>
+  <tr><td>CTRL-N</td><td><span>Set format to paragraph</span></td></tr>
+  <tr><td>CTRL-0 (zero)</td><td><span>Clean content pasted from Word</span></td></tr>
+  <tr><td>CTRL-1 .. CTRL-6</td><td><span>Headings</span> (&lt;h1&gt; .. &lt;h6&gt;)</td></tr>
+  <tr><td>CTRL-X</td><td><span>Cut selection</span></td></tr>
+  <tr><td>CTRL-C</td><td><span>Copy selection</span></td></tr>
+  <tr><td>CTRL-V</td><td><span>Paste from clipboard</span></td></tr>
+  </tbody>
+</table>
+<div id="buttons">
+  <button type="button" name="cancel" onclick="return onCancel();">Close</button>
+</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/mailboxes/xinha/popups/popup.css b/mailboxes/xinha/popups/popup.css
new file mode 100644 (file)
index 0000000..7bf9358
--- /dev/null
@@ -0,0 +1,39 @@
+html, body, .dialog {
+  background: ButtonFace;
+  color: ButtonText;
+  font: 11px Tahoma,Verdana,sans-serif;
+  margin: 0px;
+  padding: 0px;
+}
+body { padding: 5px; }
+form { padding: 0px; margin: 0px; }
+form p {
+  margin-top: 5px;
+  margin-bottom: 5px;
+}
+table {
+  font: 11px Tahoma,Verdana,sans-serif;
+}
+select, input, button { font: 11px Tahoma,Verdana,sans-serif; }
+button { width: 70px; }
+table .label { text-align: right; width: 8em; }
+
+.fl { width: 9em; float: left; padding: 2px 5px; text-align: right; }
+.fr { width: 7em; float: left; padding: 2px 5px; text-align: right; }
+fieldset { padding: 0px 10px 5px 5px; }
+.space { padding: 2px; }
+.title { background: #ddf; color: #000; font-weight: bold; font-size: 120%; padding: 3px 10px; margin-bottom: 10px;
+border-bottom: 1px solid black; letter-spacing: 2px;
+}
+.buttonColor {
+  padding: 1px;
+  cursor: default;
+  border: 1px solid;
+  border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
+}
+#buttons {
+      margin-top: 1em; 
+      border-top: 1px solid #999;
+      padding: 1em; 
+      text-align: right;
+}
\ No newline at end of file
diff --git a/mailboxes/xinha/popups/popup.js b/mailboxes/xinha/popups/popup.js
new file mode 100644 (file)
index 0000000..523e298
--- /dev/null
@@ -0,0 +1,3 @@
+/* This compressed file is part of Xinha. For uncompressed sources, forum, and bug reports, go to xinha.org */
+/* This file is part of version 0.96beta2 released Fri, 20 Mar 2009 11:01:14 +0100 */
+if(typeof Xinha=="undefined"){Xinha=window.opener.Xinha}HTMLArea=Xinha;function getAbsolutePos(b){var c={x:b.offsetLeft,y:b.offsetTop};if(b.offsetParent){var a=getAbsolutePos(b.offsetParent);c.x+=a.x;c.y+=a.y}return c}function comboSelectValue(f,d){var b=f.getElementsByTagName("option");for(var a=b.length;--a>=0;){var e=b[a];e.selected=(e.value==d)}f.value=d}function __dlg_onclose(){opener.Dialog._return(null)}function __dlg_init(b,a){__xinha_dlg_init(a)}function __xinha_dlg_init(b){if(window.__dlg_init_done){return true}if(window.opener._editor_skin){var c=document.getElementsByTagName("head")[0];var d=document.createElement("link");d.type="text/css";d.href=window.opener._editor_url+"skins/"+window.opener._editor_skin+"/skin.css";d.rel="stylesheet";c.appendChild(d)}if(!window.dialogArguments&&opener.Dialog._arguments){window.dialogArguments=opener.Dialog._arguments}var e=Xinha.pageSize(window);if(!b){b={width:e.x,height:e.y}}window.resizeTo(b.width,b.height);var f=Xinha.viewportSize(window);window.resizeBy(0,e.y-f.y);if(b.top&&b.left){window.moveTo(b.left,b.top)}else{if(!Xinha.is_ie){var a=opener.screenX+(opener.outerWidth-b.width)/2;var g=opener.screenY+(opener.outerHeight-b.height)/2}else{var a=(self.screen.availWidth-b.width)/2;var g=(self.screen.availHeight-b.height)/2}window.moveTo(a,g)}Xinha.addDom0Event(document.body,"keypress",__dlg_close_on_esc);window.__dlg_init_done=true}function __dlg_translate(e){var d=["input","select","legend","span","option","td","th","button","div","label","a","img"];for(var g=0;g<d.length;++g){var c=document.getElementsByTagName(d[g]);for(var b=c.length;--b>=0;){var f=c[b];if(f.firstChild&&f.firstChild.data){var a=Xinha._lc(f.firstChild.data,e);if(a){f.firstChild.data=a}}if(f.title){var a=Xinha._lc(f.title,e);if(a){f.title=a}}if(f.tagName.toLowerCase()=="input"&&(/^(button|submit|reset)$/i.test(f.type))){var a=Xinha._lc(f.value,e);if(a){f.value=a}}}}document.title=Xinha._lc(document.title,e)}function __dlg_close(a){opener.Dialog._return(a);window.close()}function __dlg_close_on_esc(a){a||(a=window.event);if(a.keyCode==27){__dlg_close(null);return false}return true};
\ No newline at end of file
diff --git a/mailboxes/xinha/popups/select_color.html b/mailboxes/xinha/popups/select_color.html
new file mode 100644 (file)
index 0000000..89e0e67
--- /dev/null
@@ -0,0 +1,359 @@
+<!--<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">-->
+<html><head><title>Select Color</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<script type="text/javascript" src="popup.js"></script>
+<script type="text/javascript">
+window.resizeTo(240, 182);
+// run on page load
+function Init()
+{
+  __dlg_translate('Xinha');
+  __dlg_init();
+  Xinha.addDom0Event(document, 'keypress', __dlg_close_on_esc);
+
+  var color = window.dialogArguments;
+  color = ValidateColor(color) || '000000';
+  View(color);
+}
+// preview color
+function View(color)
+{
+  document.getElementById("ColorPreview").style.backgroundColor = '#' + color;
+  document.getElementById("ColorHex").value = '#' + color;
+}
+// select color
+function Set(string)
+{
+  var color = ValidateColor(string);
+  if (color == null)
+  {
+    alert("Invalid color code: " + string);
+  }
+  else
+  {
+    View(color);
+    __dlg_close(color);
+  }
+}
+// return valid color code
+function ValidateColor(string)
+{
+  string = string || '';
+  string = string + "";
+  string = string.toUpperCase();
+  var chars = '0123456789ABCDEF';
+  var out   = '';
+  // remove invalid color chars
+  for (var i=0; i<string.length; i++)
+  {
+    var schar = string.charAt(i);
+    if (chars.indexOf(schar) != -1) out += schar;
+  }
+  // check length
+  if (out.length != 6) return null;
+  return out;
+}
+</script>
+<style type="text/css">
+body { background:buttonface; margin:0; padding:0; }
+form { margin:0; padding:0; }
+#containerpreview td { background:buttonface; }
+#preview { background-color:#000000; padding:1px; height:21px; width:50px; }
+#ColorPreview { height:100%; width:100%; }
+#ColorHex { font-size:12px; background:buttonface; border:0; }
+#palettecolor { cursor:pointer; }
+#palettecolor td { width:10px; height:10px; }
+</style>
+</head>
+<body class="dialog" onload="Init()">
+
+<form action="#" method="get" onsubmit="Set(document.getElementById('ColorHex').value); return false;">
+<table border="0" cellspacing="0" cellpadding="4" width="100%" id="containerpreview">
+ <tr>
+  <td style="vertical-align: middle;"><div id="preview"><div id="ColorPreview"></div></div></td>
+  <td style="vertical-align: middle;" width="100%"><input type="text" name="ColorHex"
+    id="ColorHex" value="" size=15></td>
+ </tr>
+</table>
+</form>
+
+<table id="palettecolor" border="0" cellspacing="1" cellpadding="0" width="100%" bgcolor="#000000">
+<tr>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#003300" onmouseover="View('003300')" onclick="Set('003300')"></td>
+<td bgcolor="#006600" onmouseover="View('006600')" onclick="Set('006600')"></td>
+<td bgcolor="#009900" onmouseover="View('009900')" onclick="Set('009900')"></td>
+<td bgcolor="#00CC00" onmouseover="View('00CC00')" onclick="Set('00CC00')"></td>
+<td bgcolor="#00FF00" onmouseover="View('00FF00')" onclick="Set('00FF00')"></td>
+<td bgcolor="#330000" onmouseover="View('330000')" onclick="Set('330000')"></td>
+<td bgcolor="#333300" onmouseover="View('333300')" onclick="Set('333300')"></td>
+<td bgcolor="#336600" onmouseover="View('336600')" onclick="Set('336600')"></td>
+<td bgcolor="#339900" onmouseover="View('339900')" onclick="Set('339900')"></td>
+<td bgcolor="#33CC00" onmouseover="View('33CC00')" onclick="Set('33CC00')"></td>
+<td bgcolor="#33FF00" onmouseover="View('33FF00')" onclick="Set('33FF00')"></td>
+<td bgcolor="#660000" onmouseover="View('660000')" onclick="Set('660000')"></td>
+<td bgcolor="#663300" onmouseover="View('663300')" onclick="Set('663300')"></td>
+<td bgcolor="#666600" onmouseover="View('666600')" onclick="Set('666600')"></td>
+<td bgcolor="#669900" onmouseover="View('669900')" onclick="Set('669900')"></td>
+<td bgcolor="#66CC00" onmouseover="View('66CC00')" onclick="Set('66CC00')"></td>
+<td bgcolor="#66FF00" onmouseover="View('66FF00')" onclick="Set('66FF00')"></td>
+</tr>
+<tr>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#333333" onmouseover="View('333333')" onclick="Set('333333')"></td>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#000033" onmouseover="View('000033')" onclick="Set('000033')"></td>
+<td bgcolor="#003333" onmouseover="View('003333')" onclick="Set('003333')"></td>
+<td bgcolor="#006633" onmouseover="View('006633')" onclick="Set('006633')"></td>
+<td bgcolor="#009933" onmouseover="View('009933')" onclick="Set('009933')"></td>
+<td bgcolor="#00CC33" onmouseover="View('00CC33')" onclick="Set('00CC33')"></td>
+<td bgcolor="#00FF33" onmouseover="View('00FF33')" onclick="Set('00FF33')"></td>
+<td bgcolor="#330033" onmouseover="View('330033')" onclick="Set('330033')"></td>
+<td bgcolor="#333333" onmouseover="View('333333')" onclick="Set('333333')"></td>
+<td bgcolor="#336633" onmouseover="View('336633')" onclick="Set('336633')"></td>
+<td bgcolor="#339933" onmouseover="View('339933')" onclick="Set('339933')"></td>
+<td bgcolor="#33CC33" onmouseover="View('33CC33')" onclick="Set('33CC33')"></td>
+<td bgcolor="#33FF33" onmouseover="View('33FF33')" onclick="Set('33FF33')"></td>
+<td bgcolor="#660033" onmouseover="View('660033')" onclick="Set('660033')"></td>
+<td bgcolor="#663333" onmouseover="View('663333')" onclick="Set('663333')"></td>
+<td bgcolor="#666633" onmouseover="View('666633')" onclick="Set('666633')"></td>
+<td bgcolor="#669933" onmouseover="View('669933')" onclick="Set('669933')"></td>
+<td bgcolor="#66CC33" onmouseover="View('66CC33')" onclick="Set('66CC33')"></td>
+<td bgcolor="#66FF33" onmouseover="View('66FF33')" onclick="Set('66FF33')"></td>
+</tr>
+<tr>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#666666" onmouseover="View('666666')" onclick="Set('666666')"></td>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#000066" onmouseover="View('000066')" onclick="Set('000066')"></td>
+<td bgcolor="#003366" onmouseover="View('003366')" onclick="Set('003366')"></td>
+<td bgcolor="#006666" onmouseover="View('006666')" onclick="Set('006666')"></td>
+<td bgcolor="#009966" onmouseover="View('009966')" onclick="Set('009966')"></td>
+<td bgcolor="#00CC66" onmouseover="View('00CC66')" onclick="Set('00CC66')"></td>
+<td bgcolor="#00FF66" onmouseover="View('00FF66')" onclick="Set('00FF66')"></td>
+<td bgcolor="#330066" onmouseover="View('330066')" onclick="Set('330066')"></td>
+<td bgcolor="#333366" onmouseover="View('333366')" onclick="Set('333366')"></td>
+<td bgcolor="#336666" onmouseover="View('336666')" onclick="Set('336666')"></td>
+<td bgcolor="#339966" onmouseover="View('339966')" onclick="Set('339966')"></td>
+<td bgcolor="#33CC66" onmouseover="View('33CC66')" onclick="Set('33CC66')"></td>
+<td bgcolor="#33FF66" onmouseover="View('33FF66')" onclick="Set('33FF66')"></td>
+<td bgcolor="#660066" onmouseover="View('660066')" onclick="Set('660066')"></td>
+<td bgcolor="#663366" onmouseover="View('663366')" onclick="Set('663366')"></td>
+<td bgcolor="#666666" onmouseover="View('666666')" onclick="Set('666666')"></td>
+<td bgcolor="#669966" onmouseover="View('669966')" onclick="Set('669966')"></td>
+<td bgcolor="#66CC66" onmouseover="View('66CC66')" onclick="Set('66CC66')"></td>
+<td bgcolor="#66FF66" onmouseover="View('66FF66')" onclick="Set('66FF66')"></td>
+</tr>
+<tr>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#999999" onmouseover="View('999999')" onclick="Set('999999')"></td>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#000099" onmouseover="View('000099')" onclick="Set('000099')"></td>
+<td bgcolor="#003399" onmouseover="View('003399')" onclick="Set('003399')"></td>
+<td bgcolor="#006699" onmouseover="View('006699')" onclick="Set('006699')"></td>
+<td bgcolor="#009999" onmouseover="View('009999')" onclick="Set('009999')"></td>
+<td bgcolor="#00CC99" onmouseover="View('00CC99')" onclick="Set('00CC99')"></td>
+<td bgcolor="#00FF99" onmouseover="View('00FF99')" onclick="Set('00FF99')"></td>
+<td bgcolor="#330099" onmouseover="View('330099')" onclick="Set('330099')"></td>
+<td bgcolor="#333399" onmouseover="View('333399')" onclick="Set('333399')"></td>
+<td bgcolor="#336699" onmouseover="View('336699')" onclick="Set('336699')"></td>
+<td bgcolor="#339999" onmouseover="View('339999')" onclick="Set('339999')"></td>
+<td bgcolor="#33CC99" onmouseover="View('33CC99')" onclick="Set('33CC99')"></td>
+<td bgcolor="#33FF99" onmouseover="View('33FF99')" onclick="Set('33FF99')"></td>
+<td bgcolor="#660099" onmouseover="View('660099')" onclick="Set('660099')"></td>
+<td bgcolor="#663399" onmouseover="View('663399')" onclick="Set('663399')"></td>
+<td bgcolor="#666699" onmouseover="View('666699')" onclick="Set('666699')"></td>
+<td bgcolor="#669999" onmouseover="View('669999')" onclick="Set('669999')"></td>
+<td bgcolor="#66CC99" onmouseover="View('66CC99')" onclick="Set('66CC99')"></td>
+<td bgcolor="#66FF99" onmouseover="View('66FF99')" onclick="Set('66FF99')"></td>
+</tr>
+<tr>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#CCCCCC" onmouseover="View('CCCCCC')" onclick="Set('CCCCCC')"></td>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#0000CC" onmouseover="View('0000CC')" onclick="Set('0000CC')"></td>
+<td bgcolor="#0033CC" onmouseover="View('0033CC')" onclick="Set('0033CC')"></td>
+<td bgcolor="#0066CC" onmouseover="View('0066CC')" onclick="Set('0066CC')"></td>
+<td bgcolor="#0099CC" onmouseover="View('0099CC')" onclick="Set('0099CC')"></td>
+<td bgcolor="#00CCCC" onmouseover="View('00CCCC')" onclick="Set('00CCCC')"></td>
+<td bgcolor="#00FFCC" onmouseover="View('00FFCC')" onclick="Set('00FFCC')"></td>
+<td bgcolor="#3300CC" onmouseover="View('3300CC')" onclick="Set('3300CC')"></td>
+<td bgcolor="#3333CC" onmouseover="View('3333CC')" onclick="Set('3333CC')"></td>
+<td bgcolor="#3366CC" onmouseover="View('3366CC')" onclick="Set('3366CC')"></td>
+<td bgcolor="#3399CC" onmouseover="View('3399CC')" onclick="Set('3399CC')"></td>
+<td bgcolor="#33CCCC" onmouseover="View('33CCCC')" onclick="Set('33CCCC')"></td>
+<td bgcolor="#33FFCC" onmouseover="View('33FFCC')" onclick="Set('33FFCC')"></td>
+<td bgcolor="#6600CC" onmouseover="View('6600CC')" onclick="Set('6600CC')"></td>
+<td bgcolor="#6633CC" onmouseover="View('6633CC')" onclick="Set('6633CC')"></td>
+<td bgcolor="#6666CC" onmouseover="View('6666CC')" onclick="Set('6666CC')"></td>
+<td bgcolor="#6699CC" onmouseover="View('6699CC')" onclick="Set('6699CC')"></td>
+<td bgcolor="#66CCCC" onmouseover="View('66CCCC')" onclick="Set('66CCCC')"></td>
+<td bgcolor="#66FFCC" onmouseover="View('66FFCC')" onclick="Set('66FFCC')"></td>
+</tr>
+<tr>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#FFFFFF" onmouseover="View('FFFFFF')" onclick="Set('FFFFFF')"></td>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#0000FF" onmouseover="View('0000FF')" onclick="Set('0000FF')"></td>
+<td bgcolor="#0033FF" onmouseover="View('0033FF')" onclick="Set('0033FF')"></td>
+<td bgcolor="#0066FF" onmouseover="View('0066FF')" onclick="Set('0066FF')"></td>
+<td bgcolor="#0099FF" onmouseover="View('0099FF')" onclick="Set('0099FF')"></td>
+<td bgcolor="#00CCFF" onmouseover="View('00CCFF')" onclick="Set('00CCFF')"></td>
+<td bgcolor="#00FFFF" onmouseover="View('00FFFF')" onclick="Set('00FFFF')"></td>
+<td bgcolor="#3300FF" onmouseover="View('3300FF')" onclick="Set('3300FF')"></td>
+<td bgcolor="#3333FF" onmouseover="View('3333FF')" onclick="Set('3333FF')"></td>
+<td bgcolor="#3366FF" onmouseover="View('3366FF')" onclick="Set('3366FF')"></td>
+<td bgcolor="#3399FF" onmouseover="View('3399FF')" onclick="Set('3399FF')"></td>
+<td bgcolor="#33CCFF" onmouseover="View('33CCFF')" onclick="Set('33CCFF')"></td>
+<td bgcolor="#33FFFF" onmouseover="View('33FFFF')" onclick="Set('33FFFF')"></td>
+<td bgcolor="#6600FF" onmouseover="View('6600FF')" onclick="Set('6600FF')"></td>
+<td bgcolor="#6633FF" onmouseover="View('6633FF')" onclick="Set('6633FF')"></td>
+<td bgcolor="#6666FF" onmouseover="View('6666FF')" onclick="Set('6666FF')"></td>
+<td bgcolor="#6699FF" onmouseover="View('6699FF')" onclick="Set('6699FF')"></td>
+<td bgcolor="#66CCFF" onmouseover="View('66CCFF')" onclick="Set('66CCFF')"></td>
+<td bgcolor="#66FFFF" onmouseover="View('66FFFF')" onclick="Set('66FFFF')"></td>
+</tr>
+<tr>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#FF0000" onmouseover="View('FF0000')" onclick="Set('FF0000')"></td>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#990000" onmouseover="View('990000')" onclick="Set('990000')"></td>
+<td bgcolor="#993300" onmouseover="View('993300')" onclick="Set('993300')"></td>
+<td bgcolor="#996600" onmouseover="View('996600')" onclick="Set('996600')"></td>
+<td bgcolor="#999900" onmouseover="View('999900')" onclick="Set('999900')"></td>
+<td bgcolor="#99CC00" onmouseover="View('99CC00')" onclick="Set('99CC00')"></td>
+<td bgcolor="#99FF00" onmouseover="View('99FF00')" onclick="Set('99FF00')"></td>
+<td bgcolor="#CC0000" onmouseover="View('CC0000')" onclick="Set('CC0000')"></td>
+<td bgcolor="#CC3300" onmouseover="View('CC3300')" onclick="Set('CC3300')"></td>
+<td bgcolor="#CC6600" onmouseover="View('CC6600')" onclick="Set('CC6600')"></td>
+<td bgcolor="#CC9900" onmouseover="View('CC9900')" onclick="Set('CC9900')"></td>
+<td bgcolor="#CCCC00" onmouseover="View('CCCC00')" onclick="Set('CCCC00')"></td>
+<td bgcolor="#CCFF00" onmouseover="View('CCFF00')" onclick="Set('CCFF00')"></td>
+<td bgcolor="#FF0000" onmouseover="View('FF0000')" onclick="Set('FF0000')"></td>
+<td bgcolor="#FF3300" onmouseover="View('FF3300')" onclick="Set('FF3300')"></td>
+<td bgcolor="#FF6600" onmouseover="View('FF6600')" onclick="Set('FF6600')"></td>
+<td bgcolor="#FF9900" onmouseover="View('FF9900')" onclick="Set('FF9900')"></td>
+<td bgcolor="#FFCC00" onmouseover="View('FFCC00')" onclick="Set('FFCC00')"></td>
+<td bgcolor="#FFFF00" onmouseover="View('FFFF00')" onclick="Set('FFFF00')"></td>
+</tr>
+<tr>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#00FF00" onmouseover="View('00FF00')" onclick="Set('00FF00')"></td>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#990033" onmouseover="View('990033')" onclick="Set('990033')"></td>
+<td bgcolor="#993333" onmouseover="View('993333')" onclick="Set('993333')"></td>
+<td bgcolor="#996633" onmouseover="View('996633')" onclick="Set('996633')"></td>
+<td bgcolor="#999933" onmouseover="View('999933')" onclick="Set('999933')"></td>
+<td bgcolor="#99CC33" onmouseover="View('99CC33')" onclick="Set('99CC33')"></td>
+<td bgcolor="#99FF33" onmouseover="View('99FF33')" onclick="Set('99FF33')"></td>
+<td bgcolor="#CC0033" onmouseover="View('CC0033')" onclick="Set('CC0033')"></td>
+<td bgcolor="#CC3333" onmouseover="View('CC3333')" onclick="Set('CC3333')"></td>
+<td bgcolor="#CC6633" onmouseover="View('CC6633')" onclick="Set('CC6633')"></td>
+<td bgcolor="#CC9933" onmouseover="View('CC9933')" onclick="Set('CC9933')"></td>
+<td bgcolor="#CCCC33" onmouseover="View('CCCC33')" onclick="Set('CCCC33')"></td>
+<td bgcolor="#CCFF33" onmouseover="View('CCFF33')" onclick="Set('CCFF33')"></td>
+<td bgcolor="#FF0033" onmouseover="View('FF0033')" onclick="Set('FF0033')"></td>
+<td bgcolor="#FF3333" onmouseover="View('FF3333')" onclick="Set('FF3333')"></td>
+<td bgcolor="#FF6633" onmouseover="View('FF6633')" onclick="Set('FF6633')"></td>
+<td bgcolor="#FF9933" onmouseover="View('FF9933')" onclick="Set('FF9933')"></td>
+<td bgcolor="#FFCC33" onmouseover="View('FFCC33')" onclick="Set('FFCC33')"></td>
+<td bgcolor="#FFFF33" onmouseover="View('FFFF33')" onclick="Set('FFFF33')"></td>
+</tr>
+<tr>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#0000FF" onmouseover="View('0000FF')" onclick="Set('0000FF')"></td>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#990066" onmouseover="View('990066')" onclick="Set('990066')"></td>
+<td bgcolor="#993366" onmouseover="View('993366')" onclick="Set('993366')"></td>
+<td bgcolor="#996666" onmouseover="View('996666')" onclick="Set('996666')"></td>
+<td bgcolor="#999966" onmouseover="View('999966')" onclick="Set('999966')"></td>
+<td bgcolor="#99CC66" onmouseover="View('99CC66')" onclick="Set('99CC66')"></td>
+<td bgcolor="#99FF66" onmouseover="View('99FF66')" onclick="Set('99FF66')"></td>
+<td bgcolor="#CC0066" onmouseover="View('CC0066')" onclick="Set('CC0066')"></td>
+<td bgcolor="#CC3366" onmouseover="View('CC3366')" onclick="Set('CC3366')"></td>
+<td bgcolor="#CC6666" onmouseover="View('CC6666')" onclick="Set('CC6666')"></td>
+<td bgcolor="#CC9966" onmouseover="View('CC9966')" onclick="Set('CC9966')"></td>
+<td bgcolor="#CCCC66" onmouseover="View('CCCC66')" onclick="Set('CCCC66')"></td>
+<td bgcolor="#CCFF66" onmouseover="View('CCFF66')" onclick="Set('CCFF66')"></td>
+<td bgcolor="#FF0066" onmouseover="View('FF0066')" onclick="Set('FF0066')"></td>
+<td bgcolor="#FF3366" onmouseover="View('FF3366')" onclick="Set('FF3366')"></td>
+<td bgcolor="#FF6666" onmouseover="View('FF6666')" onclick="Set('FF6666')"></td>
+<td bgcolor="#FF9966" onmouseover="View('FF9966')" onclick="Set('FF9966')"></td>
+<td bgcolor="#FFCC66" onmouseover="View('FFCC66')" onclick="Set('FFCC66')"></td>
+<td bgcolor="#FFFF66" onmouseover="View('FFFF66')" onclick="Set('FFFF66')"></td>
+</tr>
+<tr>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#FFFF00" onmouseover="View('FFFF00')" onclick="Set('FFFF00')"></td>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#990099" onmouseover="View('990099')" onclick="Set('990099')"></td>
+<td bgcolor="#993399" onmouseover="View('993399')" onclick="Set('993399')"></td>
+<td bgcolor="#996699" onmouseover="View('996699')" onclick="Set('996699')"></td>
+<td bgcolor="#999999" onmouseover="View('999999')" onclick="Set('999999')"></td>
+<td bgcolor="#99CC99" onmouseover="View('99CC99')" onclick="Set('99CC99')"></td>
+<td bgcolor="#99FF99" onmouseover="View('99FF99')" onclick="Set('99FF99')"></td>
+<td bgcolor="#CC0099" onmouseover="View('CC0099')" onclick="Set('CC0099')"></td>
+<td bgcolor="#CC3399" onmouseover="View('CC3399')" onclick="Set('CC3399')"></td>
+<td bgcolor="#CC6699" onmouseover="View('CC6699')" onclick="Set('CC6699')"></td>
+<td bgcolor="#CC9999" onmouseover="View('CC9999')" onclick="Set('CC9999')"></td>
+<td bgcolor="#CCCC99" onmouseover="View('CCCC99')" onclick="Set('CCCC99')"></td>
+<td bgcolor="#CCFF99" onmouseover="View('CCFF99')" onclick="Set('CCFF99')"></td>
+<td bgcolor="#FF0099" onmouseover="View('FF0099')" onclick="Set('FF0099')"></td>
+<td bgcolor="#FF3399" onmouseover="View('FF3399')" onclick="Set('FF3399')"></td>
+<td bgcolor="#FF6699" onmouseover="View('FF6699')" onclick="Set('FF6699')"></td>
+<td bgcolor="#FF9999" onmouseover="View('FF9999')" onclick="Set('FF9999')"></td>
+<td bgcolor="#FFCC99" onmouseover="View('FFCC99')" onclick="Set('FFCC99')"></td>
+<td bgcolor="#FFFF99" onmouseover="View('FFFF99')" onclick="Set('FFFF99')"></td>
+</tr>
+<tr>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#00FFFF" onmouseover="View('00FFFF')" onclick="Set('00FFFF')"></td>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#9900CC" onmouseover="View('9900CC')" onclick="Set('9900CC')"></td>
+<td bgcolor="#9933CC" onmouseover="View('9933CC')" onclick="Set('9933CC')"></td>
+<td bgcolor="#9966CC" onmouseover="View('9966CC')" onclick="Set('9966CC')"></td>
+<td bgcolor="#9999CC" onmouseover="View('9999CC')" onclick="Set('9999CC')"></td>
+<td bgcolor="#99CCCC" onmouseover="View('99CCCC')" onclick="Set('99CCCC')"></td>
+<td bgcolor="#99FFCC" onmouseover="View('99FFCC')" onclick="Set('99FFCC')"></td>
+<td bgcolor="#CC00CC" onmouseover="View('CC00CC')" onclick="Set('CC00CC')"></td>
+<td bgcolor="#CC33CC" onmouseover="View('CC33CC')" onclick="Set('CC33CC')"></td>
+<td bgcolor="#CC66CC" onmouseover="View('CC66CC')" onclick="Set('CC66CC')"></td>
+<td bgcolor="#CC99CC" onmouseover="View('CC99CC')" onclick="Set('CC99CC')"></td>
+<td bgcolor="#CCCCCC" onmouseover="View('CCCCCC')" onclick="Set('CCCCCC')"></td>
+<td bgcolor="#CCFFCC" onmouseover="View('CCFFCC')" onclick="Set('CCFFCC')"></td>
+<td bgcolor="#FF00CC" onmouseover="View('FF00CC')" onclick="Set('FF00CC')"></td>
+<td bgcolor="#FF33CC" onmouseover="View('FF33CC')" onclick="Set('FF33CC')"></td>
+<td bgcolor="#FF66CC" onmouseover="View('FF66CC')" onclick="Set('FF66CC')"></td>
+<td bgcolor="#FF99CC" onmouseover="View('FF99CC')" onclick="Set('FF99CC')"></td>
+<td bgcolor="#FFCCCC" onmouseover="View('FFCCCC')" onclick="Set('FFCCCC')"></td>
+<td bgcolor="#FFFFCC" onmouseover="View('FFFFCC')" onclick="Set('FFFFCC')"></td>
+</tr>
+<tr>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#FF00FF" onmouseover="View('FF00FF')" onclick="Set('FF00FF')"></td>
+<td bgcolor="#000000" onmouseover="View('000000')" onclick="Set('000000')"></td>
+<td bgcolor="#9900FF" onmouseover="View('9900FF')" onclick="Set('9900FF')"></td>
+<td bgcolor="#9933FF" onmouseover="View('9933FF')" onclick="Set('9933FF')"></td>
+<td bgcolor="#9966FF" onmouseover="View('9966FF')" onclick="Set('9966FF')"></td>
+<td bgcolor="#9999FF" onmouseover="View('9999FF')" onclick="Set('9999FF')"></td>
+<td bgcolor="#99CCFF" onmouseover="View('99CCFF')" onclick="Set('99CCFF')"></td>
+<td bgcolor="#99FFFF" onmouseover="View('99FFFF')" onclick="Set('99FFFF')"></td>
+<td bgcolor="#CC00FF" onmouseover="View('CC00FF')" onclick="Set('CC00FF')"></td>
+<td bgcolor="#CC33FF" onmouseover="View('CC33FF')" onclick="Set('CC33FF')"></td>
+<td bgcolor="#CC66FF" onmouseover="View('CC66FF')" onclick="Set('CC66FF')"></td>
+<td bgcolor="#CC99FF" onmouseover="View('CC99FF')" onclick="Set('CC99FF')"></td>
+<td bgcolor="#CCCCFF" onmouseover="View('CCCCFF')" onclick="Set('CCCCFF')"></td>
+<td bgcolor="#CCFFFF" onmouseover="View('CCFFFF')" onclick="Set('CCFFFF')"></td>
+<td bgcolor="#FF00FF" onmouseover="View('FF00FF')" onclick="Set('FF00FF')"></td>
+<td bgcolor="#FF33FF" onmouseover="View('FF33FF')" onclick="Set('FF33FF')"></td>
+<td bgcolor="#FF66FF" onmouseover="View('FF66FF')" onclick="Set('FF66FF')"></td>
+<td bgcolor="#FF99FF" onmouseover="View('FF99FF')" onclick="Set('FF99FF')"></td>
+<td bgcolor="#FFCCFF" onmouseover="View('FFCCFF')" onclick="Set('FFCCFF')"></td>
+<td bgcolor="#FFFFFF" onmouseover="View('FFFFFF')" onclick="Set('FFFFFF')"></td>
+</tr>
+</table>
+
+</body></html>
\ No newline at end of file
diff --git a/mailboxes/xinha/release-notes.txt b/mailboxes/xinha/release-notes.txt
new file mode 100644 (file)
index 0000000..0a0b3ed
--- /dev/null
@@ -0,0 +1,299 @@
+Xinha - The Community-Built Online HTML Editor
+
+For bug reports, forum, and updates go to 
+http://xinha.org
+
+Release History
+
+Xinha 0.96beta2
+Bugs Fixed
+ * #1376 [IE6 & IE7 Quirksmode] Dialogs are invisible
+ * #1381 [IE] QuirksMode dialog background rendered in wrong position when panel is detached
+ * #1383 [IE7] Secure and Nonsecure Warning
+ * #1382 [IE] QuirksMode dialog background falsely non-grey with modal dialogs, grey when dragging modeless dialogs
+ * #1389 [IE6] selection lost when clicking toolbar button
+ * #1386 [Safari] Setting default checkbox settings in dialogs does not work
+ * #1394 fullpage puts metas/ title all on the same line
+ * #1390 PreserveScripts shorthand php tags
+ * #1392 too much recursion when setting HTML in fullPage mode using onGenerate/onGenerateOnce
+ * #1407 [IE8] window resize causes infinite loop
+ * #1408 PHP5 IIS file upload problem
+ * #1374 [IE8] Table insert not work
+ * #1379 [Firefox] no longer corrupts image data from broken images
+
+Translation
+ * [SmartReplace] Added French translation
+ * #1406 [FullScreen] Added Spanish translation
+
+Xinha 0.96beta
+Bugs Fixed
+ * #314 Status bar should wrap
+ * #741 ContextMenu should not overflow window boundaries
+ * #961 baseHref not correctly treated when stripping
+ * #1160 Safari puts selected HTML near bottom if edited
+ * #1166 TableOperations dialogs do not resize properly in Safari 3
+ * #1173 IE8 beta toolbars broken
+ * #1174 IE8 beta no text cursor in wysiwyg
+ * #1187 ExtendedFileManager "imgManager.changeDir is not a function" error
+ * #1193 Stylist bug when formatting selected text
+ * #1213 Would be nice to protect unsaved changes from accidental loss when navigating away
+ * #1221 Selecting heading normal on nothing throws exception alert
+ * #1224 sevenbitclean? / ghost cursor error with html mode toggle (Firefox)
+ * #1227 No CSS rules load when using @import in external stylesheet
+ * #1230 CSS width attribute breaks select display in IE
+ * #1240 Linker: trim spaces from URL
+ * #1247 CharCounter problems with Silva skin
+ * #1257 Error if url query string included '/'
+ * #1258 Event object is not handed over to event handlers installed on textarea
+ * #1261 Dutch translation for Fullscreen module
+ * #1280 restoreSelection doesn't always work in internet explorer
+ * #1281 selectNodeContents is borken in IE when the node is a text node
+ * #1284 _editor_url is still used in a couple of plugins.
+ * #1286 use callbacks as criteria for getFirstAncestor
+ * #1288 [DefinitionList] list items restricted to small width and one line by CSS
+ * #1290 Improved support for pasting from Microsoft Word
+ * #1291 Xinha.removeFromParent() does not return correct reference
+ * #1292 change naming scheme of plugin files
+ * #1293 [Gecko] Window scrolls to top of editing area when switching from text to WYSIWYG
+ * #1294 Editor higher in HTML mode
+ * #1295 Textarea not aligned under toolbar
+ * #1298 CSS styling gets inserted into table cell after viewing source (Safari only)
+ * #1300 create namespace for plugins within Xinha namespace
+ * #1301 loading should not fail if plugin omits _pluginInfo
+ * #1302 add Array.prototype.forEach for Browser that doesn't support it
+ * #1303 add getElementsByClassName()
+ * #1306 Toolbar actions need access to the click event
+ * #1309 Xinha chokes on anchors
+ * #1315 Xinha's _addEvent uses event capturing
+ * #1316 In InternetExplorer, the cursor is lost when switching into source mode
+ * #1317 Xinha's postback and getback should allow for failure handlers
+ * #1319 make event hooks like onKeyPress accesible from the config object
+ * #1320 make it possible to use png images as icons in IE6
+ * #1321 [SaveSubmit] icon is in "changed" state initially
+ * #1322 [SaveSubmit] error when form action is empty
+ * #1332 Panel classes are very generic, and risk conflict with users embedding it in their site
+ * #1337 GetHTML truncates hyperlinks
+ * #1346 statusbar shows b, i, strike instead of strong, em, and del
+ * #1357 safari form submit has empty form field names in POST data, causes failure with perl CGI
+
+Enhancements
+ * #1176 Completely revamped dialog system, which uses inline lightbox-style dialogs instead of separate popup windows 
+ * #326 Added support for customizable icon sets
+ * #1318 Added icon set from the Tango Project
+ * #1287 New InsertNote plugin for handling footnotes, with automatic note numbering and ordering, linking, and support for repeated references
+ * #1289 New InsertSnippet2 plugin, with categorization of snippets, search by name, and an XML data format
+ * #58 Additional settings for Linker plugin (link types and targets can be configured)
+ * #1219 Configuration option to autofocus editor
+ * #1285 Configuration option to set document body class
+ * #1323 Allow skins to have meta information (author, etc.)
+ * #1338 _editor_url is now automatically detected
+ * #1345 Add a static function that saves the contents of all Xinhas to their respective textareas
+
+
+Xinha 0.95
+Bugs Fixed
+ * fixed #1040 htmlRemoveTags doesn't work in IE 
+ * fixed #645 IE Save as function only saves the original html 
+ * fixed #1136 FF3 Linux select boxes in toolbar are too small 
+ * fixed #1100 Extended File Manager - Error after opening window
+ * fixed #1103 [TransformInnerHTML] IE breaks singlet attributes starting with "no"
+ * fixed #1086 Repeated javascript insertion in onclick attributes
+ * fixed #1094 IE throws error in Xinha.loadStyle function
+ * fixed  #1117 IE returns javascript error -1072896658
+ * fixed #993 PageStyle to override styles in PageStylesheets
+ * #1112 switching between modes leaves strange characters in source 
+ * fixed #1128 loading fails when Fullscreen tried to load as plugin
+ * fixed #1126 Percent (%) in URL prevent stripSelfNamedAnchors from working  
+ * fixed #1120 HTML select overlaps color picker in IE6
+ * #1115 + #1127 fixed compatibility issues with Firefox 3
+ * #961 +  #1130 changed behaviour of xinha_config.baseHref
+ * fixed #645 Save as function only saves the original html
+ * fixed #1040 htmlRemoveTags doesn't work in IE
+ * fixed #1015 Mozilla shows scrollbars on click in Stylist 
+ * #918 removed mozParaHandler dirty as it had been broken for a long time
+ * fixed #1015 Mozilla shows scrollbars on click in Stylist 
+ * fixed #1148 HTML entities break when cursor is inside when switching from HTML to WYSIWYG 
+ * fixed #1151 form action always made absolute
+ * fixed #1155 InsertAnchor broken in IE 7
+ * fixed #1158 [ImageManager] in Japanese environment, an error occurs by reading of lang/ja.js in IE6/7 
+ * fixed #1152 Plugins using surroundHTML (EditTag, LangMarks) no longer work in IE7
+ * fixed #1161 permission error from ColorPicker.js
+ * fixed #1181 [TableOperations] Table Options dialog first entry for border style faulty
+ * fixed #1185 [TableOperations] IE: style float broken
+ * fixed #1197 [Linker] IE shows bug in line 262
+ * fixed #1200 [Linker] Dialog does not show if scanned folder empty
+Enhancements
+ * #1143 add Safari support
+ * #938  add Opera support
+ * #1138 added API functions Xinha.getEditor(), Xinha.prototype.getPluginInstance(), Xinha.addOnloadHandler() 
+ * #1137 [Equation] FF3 fixes & improved way of avoiding formula changes in editor
+ * #1150 synchronize "Remove Format" between browsers
+ * added plugin PreserveScripts for enhanced editing of pages containing PHP and/or JavaScript ()
+ * Loading message facelift
+ * added XinhaLoader.js for enhanced user experience through early loading message
+ * made Xinha.makeEditors accept a DOM reference to the textarea instead of the id as part of xinha_editors array (#1105)
+ * #1123 Allow return of PHP array from xinha_pass_to_php_backend
+ * [Linker] scan.php: Allow specification of base url to use (so that a subdirectory can be used as $dir and return appropriate urls to the files (prefixing the url
+ * [ExtendedFileManager] new Version
+ * #961 +  #1130 changed behaviour of xinha_config.baseHref
+ * #1137 [Equation] improved way of avoiding formula changes in editor
+ * #442 removed alert "Your Document is not well formed..."
+ * #1119 disabled Firefox 2 spell check when ContextMenu is enabled 
+ * added a plugin "GenericPlugin" as a democase for plugin event handlers
+ * #1171 [SmartReplace] now also replaces three dots with an ellipsis
+ * #1119 [ContextMenu] optionally switch of Firefox Spell check
+ * #1172 [LangMarks] make available languages configurable
+ * enhanced behaviour when xinha_config.baseHref is set to another server
+ * #1195 Allow to specify an external url to load a plugin from
+ * #1201 Add inwardHtml/outwardHtml functions to Config object
+I18n
+ * #1109 Spanish language extended
+ * #1116 [ExtendedFileManager] added French translation
+ * #853 updated Translation for farsi
+ * fixed wrong encoding in Spanish language file 
+ * fixed no bold/italic/underline button images in Spanish
+ *  #1194 [ExtendedFileManager] updated French translation
+
+Xinha 0.94
+ * Ticket #1093 [InsertSmiley] remove smiley gifs from trunk
+ * fixed Ticket #1019 Cusor not jumping to editable part of window when clicked in IE
+ * [TableOperations] Add config option to not dispaly toolbar buttons
+ * fixed Ticket #1021  Prevent ExtendedFileManager from masking ImageManager
+ * fixed Ticket #1023 [ImageManager] Add config item to allow the advanced image options to be hidden from the user
+ * fixed Ticket #1026 fix problems with loading skins
+ * fixed Tickets #1030 & #1031: slow loading large pages in IE
+ * fixed Ticket #1034 [ExtendedFileManager] Color pickers shown when use_color_pickers is false
+ * fixed Ticket #1035 [TransformInnerHTML] tags corruptedunder certain circumstances
+ * fixed Ticket #1036 [ExtendedFileManager] window is only resized after all thumbnails have benn loaded, which can take quite some time
+ * fixed Ticket #1039 Firefox full page adds multiple paragraphs after view source
+ * fixed Ticket #1019 Cusor not jumping to editable part of window when clicked in IE7
+ * fixed Ticket #1046 Error in IE 6 when switching from text to wysiwyg
+ * [DOMwalk] linebreaks inserted before <br />s
+ * catch error in IE when trying to restore selection on non-displayed area
+ * fixed Ticket #973 Error switching wysiwyg/html including javascript file on the code
+ * fixed Ticket #1028  - [Linker] automatically (attempt to) work around an issue with mod_security being triggered because of the charset on our POST requests
+ * fixed Ticket #1055 [Stylist] Inappropriate styles (for other tags) are shown
+ * added Dutch language files
+ * added new hook 'onBeforeSubmit' for firePluginEvent()
+ * added new hook 'onBeforeUnload' for firePluginEvent()
+ * fixed Ticket #1048 Full Screen plugin doesn't load if many editors on page
+ * fixed Ticket #1053 ListType plugin doesn't work in panel config with multiple editors
+ * fixed Ticket #1026 Skins referenced with <link>-tags don't work anymore
+ * fixed Ticket #1059 [Equation] loosing formula onsubmit
+ * fixed Ticket #1060 [Equation] various updates
+ * [Equation] preserve formula on reload in Mozilla
+ * [Equation] updated ASCIIMathML.js
+ * [Skin:silva] padding and border on textarea make the textmode too wide 
+ * fixed Ticket#1001 Editor loads a bunch of null urls in ie
+ * fixed Ticket #1068 [TranformInnerHTML] newlines added after </script>
+ * fixed Ticket#1069 Editor document URL prefixed to any href that only consists of URL parameters
+ * added Thai translation for core
+ * added complete Portuguese Brazilian translation
+ * updated lc_parse script
+ * fixed Ticket #1071 [ExtendedFileManager] external image URL image inserted with width/height 0, amking it invisible
+ * fixed Ticket #1074 [SuperClean] throws warnings in PHP 5
+ * fixed Ticket #1079 [DynamicCSS] lists Xinha internal CSS
+ * fixed Ticket #1080 Some plugins leave behind stylesheet links in fullpage mode
+ * fixed Ticket #1083 Convert URLs to links - Error
+ * fixed Ticket #1084 URL auto-linking (Gecko): URLs with user:password@domain.tld falsely recognized as email address
+ * fixed Ticket #1085 URL auto-linking (Gecko): IP numbers don't work
+ * fixed Ticket #1081 Control character is not being removed inside SCRIPT tags or HEAD when switching from textmode to htmlmode
+ * fixed Ticket #1078 [InsertImage] spacing attributes: inconsistent behaviour when editing image
+ * fixed Ticket #1089 [Color Picker] Localize OK Label
+ * fixed Ticket #1091 [SaveSubmit] does not correctly submit value of checkboxes and radio buttons
+
+Xinha 0.93
+ - fixed Ticket #967 Font Color Picker stops working after using one of ImageManager, ExtendedFileManager, FullPage, or HorizontalRule
+ - fixed Ticket #965 When switching between Xinhas in the same page, in textmode toolbar stays disabled
+ - fixwd Ticket #963 DOMwalk IE: head tag attributes without quotes and closing slash
+ - Ticket #962 DOMwalk Mozilla: improved source indentation
+ - fixed Ticket #957 If item in in xinha_editors is not a textarea: skip gracefully
+ - fixed Ticket #900: catch an fatal error that occured sometimes when switching between modes in fullpage mode in Mozilla
+ - fixed Ticket #969 DOMwalk Gecko: line breaks rendered as <br>s inside <pre> blocks
+ - fixed Ticket #976 Loading message misplaced in IE7
+ - fixed Ticket #977 TableOperations toolbar off-place in ext_example.html
+ - fixed Ticket #978 defining a padding for <td>s in global css affects Xinha framework
+ - Ticket #979 improve checking for non-supported browsers
+ - fixed Ticket #934 SuperClean plugin returns just quotation when executed on localhost
+ - Ticket #929 Save changes on page unload fixed for Mozilla 
+ - fixed Ticket #980 ImageManager color format bug
+ - fixed Ticket #981 No doctype in iframe content document/ editor always in quirks mode
+ - fixed Ticket #543 Stylist Panel overflow broken
+ - Ticket #983 added id for iframe
+ - fixed Ticket #984 !ExtendedFileManager produces php warning
+ - optimized icon file size
+ - fixed !JavaScript error in !ImageManager/!ExtendedFileManager image editor
+ - Ticket #908* Prompts broken in IE7: fixed for EFM, !ImageManager & !TableOperations
+ - Fixes for TableOperations, tickets #82, #908*, #912 and #947
+ - fixed Ticket #998* whitespace added before and/or after content (in non-fullpage mode)
+ - fixed slow unloading in Mozilla
+ - Fix focus problem when switching from html to wysiwyg in Gecko. See ticket #900.
+ - fixed toolbar floating issue
+ - fixed #1003 HTML length limited to 1024 characters with plugin CharCounter
+ - Ticket #1000 new public methods for getting/setting editor content
+ - fixed #735 - IE eating scripts and comments at the beginning of pages.
+ - Added new config variables to set iframe width if less than editor width (ticket:322) and set alignment of toolbar buttons.
+ - added Basque translation for XinhaCore
+ - prevent an error if server is set to parse .js files as PHP
+ - Ticket #127 plugin HtmlEntities: Entities.js  file corrupt
+
+Xinha 0.92beta
+ - fixed Ticket #831 stop empty anchors from being removed
+ - Make htmlarea.js just load XinhaCore.js instead of being a copy of it.
+ - fixed Ticket #445 Toggle TableBorder doesn't work if this.fullpage=true or using FullPage plugin
+ - fixed Ticket #551 shape and coord attributes of area element are ignored by IE
+ - fixed Ticket #650 SpellChecker is not compatible with FullPage plugin
+ - fixed Ticket #816 CharacterMap and ListType panel modes make editor jump to top in IE
+ - fixed Ticket #570 change behaviour of justify when an image is selected to make the image float left/right, 
+   click the justify button again to undo it
+ - fixed Ticket #891 noscript content got escaped
+ - fixed Ticket #857 Firefox fails to load in fullpage mode when <link ..> tag in wrong place.
+ - fixed Ticket #841 Spell Checker - Won't return to xinha.
+ - fixed Ticket #914 All buttons stay grey & this.getParentElement is not a function message when not calling
+   Xinha.loadPlugins() in xinha_init function
+ - fixed Ticket #911 Background color does not work in Firefox
+ - fixed Ticket #912 an error is thrown in Mozilla when clicking merge cells button and fewer than 2 cells are selected
+ - fixed Ticket #816 CharacterMap and ListType panel modes make editor jump to top in IE
+ - fixed Ticket #917 getHTMLWrapper in IE renders attributes like _stylist_usedtobe="[object Object]"
+ - fixed Ticket #556 stripBaseHref didn't work without baseHref defined explicitly.
+ - Update InsertPicture plugin Update
+ - fixed Ticket #921 EFM extended file manager - iframe height problem (IE)
+ - Ticket #923 colorPicker face lift & localisation
+ - fixed Ticket #924 EFM + ImageManager re-transforming of url to original image after automatic resize broken
+ - Ticket #900- retain editing position position between modes
+ - fixed Ticket #928 ImageManager fails if (another) Files.php exists in include path
+ - fixed Ticket #935 EFM demo_images php upload allowed: possible security risk
+ - Ticket #939 Japanese langage support 
+ - fixed Ticket #3 Horizontal Rule Selection
+ - Plugin ExtendedFileManager: added doc to allowed upload extensions
+ - Plugin PasteText update
+ - Plugin HtmlEntities: default preset iso-8859-1
+ - fixed Ticket #948 IE: inline styles are not rendered by DOMwalk getHTML()
+ - Plugin HorizontalRule update
+ - Plugin SaveSubmit update
+ - Plugin Linker update
+ - fixed Ticket #823 editor contents was not submitted when using JavaScript form.submit() without prior form.onsubmit()
+ - fixed Ticket #459 all body attributes removed in full page mode in FireFox
+ - _editor_url is now converted to absolute if it is relative. 
+ - fixed Ticket #594 IE: insertHTML() inserts HTML outside editor when editor is not focussed
+ - Ticket #954 FullScreen mode can now be called programmatically or on startup with or without button
+ - fixed Ticket #321 FullScreen : select elements show through in IE6 
+ - fixed Ticket #953 Statusbar has ugly white gap at the bottom when switching back from full screen in IE 
+ - fixed Ticket #952 FullScreen: scrollbars don't disappear in IE in QuirksMode
+ - fixed Ticket #603 Popop Dialog Height problems
+ - fixed Ticket #955 DOMwalk getHTML outputs empty attribute with value "true" instead of attribute name and some are skipped at all
+Xinha 0.91beta
+ - changed namespace from HTMLArea to Xinha
+ - the core file is now named XinhaCore.js instead of htmlarea.js,
+   please change your pages accordingly (the htmlarea.js will be removed!)
+ - the color picker script is now loaded on demand to reduce initial loading time
+Xinha 0.9beta
+This equals Xinha revision 635 of Jan 11 2007
+ - All JavaScript files over 2kb have been compressed using the dojo JavaScript compressor
+ - All gifs have been optimized using Trout's GIF Optimizer version 2.3
\ No newline at end of file
diff --git a/mailboxes/xinha/skins/blue-look/button-background.png b/mailboxes/xinha/skins/blue-look/button-background.png
new file mode 100644 (file)
index 0000000..9680684
Binary files /dev/null and b/mailboxes/xinha/skins/blue-look/button-background.png differ
diff --git a/mailboxes/xinha/skins/blue-look/separator.gif b/mailboxes/xinha/skins/blue-look/separator.gif
new file mode 100644 (file)
index 0000000..5ae3d59
Binary files /dev/null and b/mailboxes/xinha/skins/blue-look/separator.gif differ
diff --git a/mailboxes/xinha/skins/blue-look/skin.css b/mailboxes/xinha/skins/blue-look/skin.css
new file mode 100644 (file)
index 0000000..b0d478c
--- /dev/null
@@ -0,0 +1,105 @@
+.htmlarea .toolbar, .htmlarea .toolbar .button
+{
+  background-color:#f7f8fd;
+}
+
+.htmlarea .toolbarRow
+{
+  margin-top:2px;
+  margin-bottom:2px;
+  border:1px dotted #DEDEDE;
+  padding:2px;
+  -moz-border-radius:3px;
+  margin:4px;
+  height:25px;
+}
+
+.htmlarea .toolbar .button
+{
+  background-image: url(button-background.png);
+  width:20px;
+  height:20px;
+  padding:0px;
+  border:1px solid #f7f8fd;
+}
+
+.buttonImageContainer
+{
+  position:relative;
+  left:1px;
+  top :1px;
+}
+
+.htmlarea .toolbar .separator {
+  margin:0px;
+  background-image: url(separator.gif);
+  border:1px #f7f8fd;
+  width:   7px;
+  height: 20px;
+  padding: 0px;
+}
+
+.htmlarea .toolbar a.button:hover
+{
+  border: 1px solid;
+  border-color: white #CCC #CCC white;
+}
+
+.htmlarea .toolbar a.buttonDisabled:hover
+{
+  border-color: #f7f8fd;
+}
+
+.htmlarea .toolbar .button.buttonActive,
+.htmlarea .toolbar .button.buttonPressed
+{
+  border: 1px solid;
+  border-color: #CCC white white #CCC;
+}
+
+.htmlarea .statusBar {
+  border-color: #CCC white white #CCC;
+  padding: 0px;
+  height:20px;
+  background-image: url(button-background.png);
+  background-repeat: repeat-x;
+  background-color: #f7f8fd;
+  color: ButtonText;
+  font: 11px helvetica,arial,sans-serif;
+}
+
+.htmlarea .statusBar .statusBarWidgetContainer
+{
+  background-image: url(button-background.png);
+  background-repeat: repeat-x;
+  background-color: #f7f8fd;
+}
+
+.htmlarea .statusBar .statusBarTree
+{
+  display:block;
+  margin: 3px;
+}
+
+.htmlarea .statusBar .statusBarTree a
+{
+  padding: 2px 5px;
+  color: #00f;
+  text-decoration:none;
+}
+
+.htmlarea .panel h1
+{
+  background-image: url('button-background.png');
+  background-repeat: repeat-x;
+  background-color: #f7f8fd;
+}
+.dialog {
+  background-color:#f7f8fd;
+}
+.dialog .title {
+  background-image: url(button-background.png);
+}  
+.dialog button{
+  background-image: url(button-background.png);
+}
diff --git a/mailboxes/xinha/skins/blue-metallic/button-background.png b/mailboxes/xinha/skins/blue-metallic/button-background.png
new file mode 100644 (file)
index 0000000..41c18db
Binary files /dev/null and b/mailboxes/xinha/skins/blue-metallic/button-background.png differ
diff --git a/mailboxes/xinha/skins/blue-metallic/separator.gif b/mailboxes/xinha/skins/blue-metallic/separator.gif
new file mode 100644 (file)
index 0000000..bc9297a
Binary files /dev/null and b/mailboxes/xinha/skins/blue-metallic/separator.gif differ
diff --git a/mailboxes/xinha/skins/blue-metallic/skin.css b/mailboxes/xinha/skins/blue-metallic/skin.css
new file mode 100644 (file)
index 0000000..1c6b806
--- /dev/null
@@ -0,0 +1,103 @@
+.htmlarea .toolbar { background-color:#f7f8fd;}\r
+\r
+.htmlarea .toolbarRow\r
+{\r
+  /*background-image: url(button-background.png);*/\r
+  background-color: #C5DCEC;\r
+  margin-top:2px;\r
+  margin-bottom:2px;\r
+  border:1px solid #7A8A99;\r
+  padding:2px;\r
+  -moz-border-radius:4px;\r
+  margin:4px;\r
+  height:25px;\r
+}\r
+\r
+.htmlarea .toolbar .button {\r
+  background-image: url(button-background.png);\r
+  width:20px;\r
+  height:21px;\r
+  padding:1px;\r
+  border:0px;\r
+}\r
+\r
+.buttonImageContainer\r
+{\r
+  position:relative;\r
+  left:1px;\r
+  top :1px;\r
+}\r
+\r
+.htmlarea .toolbar .separator\r
+{\r
+  margin:0px;\r
+  background-image: url(separator.gif);\r
+  border:1px #f7f8fd;\r
+  width:   7px;\r
+  height: 21px;\r
+  padding: 0px;\r
+}\r
+\r
+.htmlarea .toolbar a.button:hover,\r
+.htmlarea .toolbar a.buttonDisabled:hover\r
+{\r
+  padding: 0px;\r
+  border: 1px solid;\r
+  border-color: #7A8A99;\r
+}\r
+\r
+.htmlarea .toolbar .button.buttonActive,\r
+.htmlarea .toolbar .button.buttonPressed\r
+{\r
+  padding: 0px;\r
+  border: 1px solid;\r
+  border-color: #79A4CC #FFFFFF #FFFFFF #79A4CC;\r
+}\r
+\r
+.htmlarea .statusBar {\r
+  border-color: #CCC white white #CCC;\r
+  padding: 0px;\r
+  height:20px;\r
+  background-image: url(button-background.png);\r
+  background-repeat: repeat-x;\r
+  background-color: #f7f8fd;\r
+  color: ButtonText;\r
+  font: 11px helvetica,arial,sans-serif;\r
+}\r
+\r
+.htmlarea .statusBar .statusBarWidgetContainer\r
+{\r
+  background-image: url(button-background.png);\r
+  background-repeat: repeat-x;\r
+  background-color: #f7f8fd;\r
+}\r
+\r
+.htmlarea .statusBar .statusBarTree\r
+{\r
+  display:block;\r
+  margin: 3px;\r
+}\r
+\r
+.htmlarea .statusBar .statusBarTree a\r
+{\r
+  padding: 2px 5px;\r
+  color: #00f;\r
+  text-decoration:none;\r
+}\r
+\r
+.htmlarea .panel h1\r
+{\r
+  background-image: url('button-background.png');\r
+  background-repeat: repeat-x;\r
+  background-color: #f7f8fd;\r
+}\r
+\r
+.dialog {\r
+  background-color: #EEEEEE;\r
+}\r
+.dialog .title {\r
+  background-image: url(button-background.png);\r
+}\r
+.dialog button{\r
+  background-image: url(button-background.png);\r
+}\r
diff --git a/mailboxes/xinha/skins/green-look/button-background.gif b/mailboxes/xinha/skins/green-look/button-background.gif
new file mode 100644 (file)
index 0000000..d137119
Binary files /dev/null and b/mailboxes/xinha/skins/green-look/button-background.gif differ
diff --git a/mailboxes/xinha/skins/green-look/separator.gif b/mailboxes/xinha/skins/green-look/separator.gif
new file mode 100644 (file)
index 0000000..0357233
Binary files /dev/null and b/mailboxes/xinha/skins/green-look/separator.gif differ
diff --git a/mailboxes/xinha/skins/green-look/skin.css b/mailboxes/xinha/skins/green-look/skin.css
new file mode 100644 (file)
index 0000000..b278580
--- /dev/null
@@ -0,0 +1,96 @@
+.htmlarea .toolbar, .htmlarea .toolbar .button
+{
+  background-color:#f8fdf8;
+}
+.htmlarea .toolbarRow
+{
+  margin-top:2px;
+  margin-bottom:2px;
+  border:1px dotted #DEDEDE;
+  padding:2px;
+  -moz-border-radius:3px;
+  margin:4px;
+  height:25px;
+}
+.htmlarea .toolbar .button
+{
+  background-image:url(button-background.gif);
+  width:20px;
+  height:20px;
+  padding:0;
+  border:1px solid #f8fdf8;
+}
+.buttonImageContainer
+{
+  position:relative;
+  left:1px;
+  top:1px;
+}
+.htmlarea .toolbar .separator {
+  margin:0;
+  background-image:url(separator.gif);
+  border:1px #f8fdf8;
+  width:7px;
+  height:20px;
+  padding:0;
+}
+.htmlarea .toolbar a.button:hover
+{
+  border:1px solid;
+  border-color:#fff #ccc #ccc #fff;
+}
+.htmlarea .toolbar a.buttonDisabled:hover
+{
+  border-color:#f8fdf8;
+}
+.htmlarea .toolbar .buttonActive,
+.htmlarea .toolbar .buttonPressed
+{
+  border:1px solid;
+  border-color:#ccc #fff #fff #ccc;
+  background:#ffb166;
+}
+.htmlarea .statusBar {
+  border-color:#ccc #fff #fff #ccc;
+  padding:0;
+  height:20px;
+  background-image:url(button-background.gif);
+  background-repeat:repeat-x;
+  background-color:#f8fdf8;
+  color:ButtonText;
+  font:11px helvetica,arial,sans-serif;
+}
+
+.htmlarea .statusBar .statusBarWidgetContainer
+{
+  background-image: url(button-background.gif);
+  background-repeat: repeat-x;
+  background-color: #f8fdf8;
+}
+
+.htmlarea .statusBar .statusBarTree
+{
+  display:block;
+  margin:3px;
+}
+.htmlarea .statusBar .statusBarTree a
+{
+  padding:2px 5px;
+  color:#00f;
+  text-decoration:none;
+}
+.htmlarea .panel h1
+{
+  background-image:url(button-background.gif);
+  background-repeat:repeat-x;
+  background-color:#f8fdf8;
+}
+.dialog {
+  background-color:#f8fdf8;
+}
+.dialog .title {
+  background-image: url(button-background.png);
+}  
+.dialog button{
+  background-image: url(button-background.png);
+}
diff --git a/mailboxes/xinha/skins/inditreuse/README b/mailboxes/xinha/skins/inditreuse/README
new file mode 100644 (file)
index 0000000..b66accd
--- /dev/null
@@ -0,0 +1,9 @@
+Skin inditreuse\r
+Author: Kyle Kochis (http://completesiteservices.com/)\r
+This work is licensed under the Creative Commons Attribution-ShareAlike License.\r
+To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/2.0/\r
+or send a letter to\r
+Creative Commons,\r
+559 Nathan Abbott Way\r
+Stanford, California 94305\r
+USA
\ No newline at end of file
diff --git a/mailboxes/xinha/skins/inditreuse/back.png b/mailboxes/xinha/skins/inditreuse/back.png
new file mode 100644 (file)
index 0000000..7a71fe6
Binary files /dev/null and b/mailboxes/xinha/skins/inditreuse/back.png differ
diff --git a/mailboxes/xinha/skins/inditreuse/button-background.png b/mailboxes/xinha/skins/inditreuse/button-background.png
new file mode 100644 (file)
index 0000000..5e4a827
Binary files /dev/null and b/mailboxes/xinha/skins/inditreuse/button-background.png differ
diff --git a/mailboxes/xinha/skins/inditreuse/hover.png b/mailboxes/xinha/skins/inditreuse/hover.png
new file mode 100644 (file)
index 0000000..5e45483
Binary files /dev/null and b/mailboxes/xinha/skins/inditreuse/hover.png differ
diff --git a/mailboxes/xinha/skins/inditreuse/selected.png b/mailboxes/xinha/skins/inditreuse/selected.png
new file mode 100644 (file)
index 0000000..5ade5f7
Binary files /dev/null and b/mailboxes/xinha/skins/inditreuse/selected.png differ
diff --git a/mailboxes/xinha/skins/inditreuse/separator.png b/mailboxes/xinha/skins/inditreuse/separator.png
new file mode 100644 (file)
index 0000000..cb77e5d
Binary files /dev/null and b/mailboxes/xinha/skins/inditreuse/separator.png differ
diff --git a/mailboxes/xinha/skins/inditreuse/skin.css b/mailboxes/xinha/skins/inditreuse/skin.css
new file mode 100644 (file)
index 0000000..a85197e
--- /dev/null
@@ -0,0 +1,81 @@
+.htmlarea .toolbar {\r
+       background-color:#889fc9;\r
+  background-image:url(back.png);\r
+  background-repeat:repeat-y;\r
+}\r
+.htmlarea .toolbarRow {\r
+  margin-top:2px;\r
+  margin-bottom:2px;\r
+  background-image:url(button-background.png);\r
+  height:25px;\r
+}\r
+.htmlarea .toolbar .button {\r
+  width:20px;\r
+  height:20px;\r
+  padding:1px;\r
+  border:none;\r
+  background-image:url(button-background.png);\r
+}\r
+.buttonImageContainer {\r
+  position:relative;\r
+  left:1px;\r
+  top:1px;\r
+}\r
+.htmlarea .toolbar .separator {\r
+  margin:0;\r
+  background-image: url(separator.png);\r
+  width:7px;\r
+  height:20px;\r
+  padding:1px;\r
+  border:none;\r
+}\r
+.htmlarea .toolbar a.button:hover {\r
+  border:none !important;\r
+  padding:1px;\r
+  background-image:url(hover.png);\r
+}\r
+.htmlarea .toolbar .button.buttonPressed\r
+{\r
+  padding:1px;\r
+  background-image:url(selected.png);\r
+}\r
+.htmlarea .statusBar {\r
+  padding:0;\r
+  height:20px;\r
+  background-image:url(button-background.png);\r
+  background-repeat:repeat-x;\r
+  background-color:#889fc9;\r
+  color:ButtonText;\r
+  font:11px helvetica,arial,sans-serif;\r
+}\r
+\r
+.htmlarea .statusBar .statusBarWidgetContainer\r
+{\r
+  background-image: url(button-background.png);\r
+  background-repeat: repeat-x;\r
+  background-color: #889fc9;\r
+}\r
+\r
+.htmlarea .statusBar .statusBarTree {\r
+  display:block;\r
+  margin:3px;\r
+}\r
+.htmlarea .statusBar .statusBarTree a {\r
+  padding:2px 5px;\r
+  color:#00f;\r
+  text-decoration:none;\r
+}\r
+.htmlarea .panel h1 {\r
+  background-image:url(button-background.png);\r
+  background-repeat:repeat-x;\r
+  background-color:#889fc9;\r
+}\r
+.dialog {\r
+  background-color:#889fc9;\r
+}\r
+.dialog .title {\r
+  background-image: url(button-background.png);\r
+}  \r
+.dialog button{\r
+  background-image: url(button-background.png);\r
+}\r
diff --git a/mailboxes/xinha/skins/silva/dialog.jpg b/mailboxes/xinha/skins/silva/dialog.jpg
new file mode 100644 (file)
index 0000000..05676b5
Binary files /dev/null and b/mailboxes/xinha/skins/silva/dialog.jpg differ
diff --git a/mailboxes/xinha/skins/silva/html.gif b/mailboxes/xinha/skins/silva/html.gif
new file mode 100644 (file)
index 0000000..ddd6531
Binary files /dev/null and b/mailboxes/xinha/skins/silva/html.gif differ
diff --git a/mailboxes/xinha/skins/silva/skin.css b/mailboxes/xinha/skins/silva/skin.css
new file mode 100644 (file)
index 0000000..732251c
--- /dev/null
@@ -0,0 +1,3 @@
+/* This compressed file is part of Xinha. For uncompressed sources, forum, and bug reports, go to xinha.org */
+/* This file is part of version 0.96beta2 released Fri, 20 Mar 2009 11:01:14 +0100 */
+.htmlarea .toolbar,.htmlarea .toolbar .button{background-color:transparent;}.htmlarea .toolbar{padding:0;background-image:url(toolbar.png);}.htmlarea .toolbarRow{margin-top:0;margin-bottom:0;border:1px solid #F1F1F1;padding:0;-moz-border-radius:15px;margin:4px;height:20px;}html>body .htmlarea .toolbarRow{border-color:transparent;}.htmlarea .toolbar .button{width:18px;height:18px;padding:1px 2px 2px 1px;border:solid #F1F1F1;border-width:1px;}html>body .htmlarea .toolbar .button{border-color:transparent;}.buttonImageContainer{position:relative;left:1px;top:1px;}.htmlarea .toolbar a.button:hover{border:solid 1px;border-color:black;}.htmlarea .toolbar a.buttonDisabled:hover{border:solid transparent 1px;}.htmlarea .toolbar .button.buttonActive,.htmlarea .toolbar .button.buttonPressed{border:black dotted 1px;padding:2px 1px 1px 2px;}.htmlarea .toolbar .button.buttonPressed{padding:1px 2px 2px 1px;}.htmlarea .toolbar .separator{margin:3px;border-left:1px dotted black;border-right:none;width:1px;height:11px;padding:0;}.htmlarea .statusBar{border-color:#CCC white white #CCC;padding:0;height:20px;background-image:url(statusbar.png);background-repeat:repeat-x;background-color:white;color:grey;font:11px Arial,Helvetica,sans-serif;vertical-align:middle;}.htmlarea .statusBar .statusBarWidgetContainer{background-image:url(statusbar.png);background-repeat:repeat-x;background-color:white;}.htmlarea .statusBar .statusBarTree{display:block;margin:3px;}.htmlarea .statusBar .statusBarTree a{padding:0 5px;color:green;text-decoration:none;letter-spacing:.15em;font-size:120%;border:none;padding:2px 5px;}.htmlarea .statusBar .statusBarTree a:visited{color:green;}.htmlarea .statusBar .statusBarTree a:hover{background-color:transparent;color:green;border:none;padding:1px 5px;}.dialog{background-color:#f0f0f0;}body.dialog{padding-top:0;}.dialog,.dialog button,.dialog input,.dialog select,.dialog textarea,.dialog table,.dialog td,.dialog th,.panel{font:11px Arial,Helvetica,sans-serif!IMPORTANT;}.panel a{color:#444;border-bottom:1px dotted #bbb;}.panel a:hover{background-color:#eee;}.dialog .title,.dialog h1,.htmlarea .panel h1{background-image:url(toolbar.png);background-repeat:repeat-x;color:black;font:Arial,Helvetica,sans-serif!IMPORTANT;letter-spacing:.2em;font-size:13px;font-weight:400;}.dialog button{background:url(statusbar.png) bottom repeat-x;border:1px solid grey;height:18px;vertical-align:middle;}.dialog input[type=button],.dialog input[type=submit]{background:url(statusbar.png) bottom repeat-x;border:1px solid grey;height:18px;vertical-align:middle;}.htmlarea textarea.xinha_textarea{background:url(html.gif) bottom right no-repeat;font-family:"Lucida Console",Courier,monospace;font-size:10pt;}.htmlarea .dTreeNode{color:black;}
\ No newline at end of file
diff --git a/mailboxes/xinha/skins/silva/skin.xml b/mailboxes/xinha/skins/silva/skin.xml
new file mode 100644 (file)
index 0000000..cfe00d3
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<skin>
+  <meta name="name" value="silva" />
+  <meta name="developer" value="Raimund Meyer" />
+  <meta name="developer_url" value="http://x-webservice.net" />
+  <meta name="sponsor" value="" />
+  <meta name="sponsor_url" value="" />
+  <meta name="version" value="1.0" />
+  <meta name="license" value="htmlArea" />
+  <recommendedIcons>Crystal</recommendedIcons>
+</skin>
\ No newline at end of file
diff --git a/mailboxes/xinha/skins/silva/statusbar.png b/mailboxes/xinha/skins/silva/statusbar.png
new file mode 100644 (file)
index 0000000..16db3c6
Binary files /dev/null and b/mailboxes/xinha/skins/silva/statusbar.png differ
diff --git a/mailboxes/xinha/skins/silva/toolbar.png b/mailboxes/xinha/skins/silva/toolbar.png
new file mode 100644 (file)
index 0000000..6f46299
Binary files /dev/null and b/mailboxes/xinha/skins/silva/toolbar.png differ
diff --git a/mailboxes/xinha/skins/titan/README b/mailboxes/xinha/skins/titan/README
new file mode 100644 (file)
index 0000000..1272a27
--- /dev/null
@@ -0,0 +1,12 @@
+Skin Titan, a modification of Skin inditreuse by Mike Harris (www.jonesstandard.org)\r
+I simply changed the background to look more like nickel, and the dots on the separator have been replaced.  \r
+Everything else is the same.\r
+\r
+Skin inditreuse Author: Kyle Kochis (http://completesiteservices.com/)\r
+This work is licensed under the Creative Commons Attribution-ShareAlike License.\r
+To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/2.0/\r
+or send a letter to\r
+Creative Commons,\r
+559 Nathan Abbott Way\r
+Stanford, California 94305\r
+USA
\ No newline at end of file
diff --git a/mailboxes/xinha/skins/titan/back.png b/mailboxes/xinha/skins/titan/back.png
new file mode 100644 (file)
index 0000000..7a71fe6
Binary files /dev/null and b/mailboxes/xinha/skins/titan/back.png differ
diff --git a/mailboxes/xinha/skins/titan/button-background.png b/mailboxes/xinha/skins/titan/button-background.png
new file mode 100644 (file)
index 0000000..4ee6aae
Binary files /dev/null and b/mailboxes/xinha/skins/titan/button-background.png differ
diff --git a/mailboxes/xinha/skins/titan/hover.png b/mailboxes/xinha/skins/titan/hover.png
new file mode 100644 (file)
index 0000000..2e87d84
Binary files /dev/null and b/mailboxes/xinha/skins/titan/hover.png differ
diff --git a/mailboxes/xinha/skins/titan/selected.png b/mailboxes/xinha/skins/titan/selected.png
new file mode 100644 (file)
index 0000000..ffcf8a5
Binary files /dev/null and b/mailboxes/xinha/skins/titan/selected.png differ
diff --git a/mailboxes/xinha/skins/titan/separator.png b/mailboxes/xinha/skins/titan/separator.png
new file mode 100644 (file)
index 0000000..75e009f
Binary files /dev/null and b/mailboxes/xinha/skins/titan/separator.png differ
diff --git a/mailboxes/xinha/skins/titan/skin.css b/mailboxes/xinha/skins/titan/skin.css
new file mode 100644 (file)
index 0000000..dc65fbd
--- /dev/null
@@ -0,0 +1,81 @@
+.htmlarea .toolbar {\r
+        background-color:#889fc9;\r
+  background-image:url(back.png);\r
+  background-repeat:repeat-y;\r
+}\r
+.htmlarea .toolbarRow {\r
+  margin-top:2px;\r
+  margin-bottom:2px;\r
+  background-image:url(button-background.png);\r
+  height:25px;\r
+}\r
+.htmlarea .toolbar .button {\r
+  width:20px;\r
+  height:20px;\r
+  padding:1px;\r
+  border:none;\r
+  background-image:url(button-background.png);\r
+}\r
+.buttonImageContainer {\r
+  position:relative;\r
+  left:1px;\r
+  top:1px;\r
+}\r
+.htmlarea .toolbar .separator {\r
+  margin:0;\r
+  background-image: url(separator.png);\r
+  width:7px;\r
+  height:20px;\r
+  padding:1px;\r
+  border:none;\r
+}\r
+.htmlarea .toolbar a.button:hover {\r
+  border:none !important;\r
+  padding:1px;\r
+  background-image:url(hover.png);\r
+}\r
+.htmlarea .toolbar .button.buttonPressed\r
+{\r
+  padding:1px;\r
+  background-image:url(selected.png);\r
+}\r
+.htmlarea .statusBar {\r
+  padding:0;\r
+  height:20px;\r
+  background-image:url(button-background.png);\r
+  background-repeat:repeat-x;\r
+  background-color:#889fc9;\r
+  color:ButtonText;\r
+  font:11px helvetica,arial,sans-serif;\r
+}\r
+\r
+.htmlarea .statusBar .statusBarWidgetContainer\r
+{\r
+  background-image: url(button-background.png);\r
+  background-repeat: repeat-x;\r
+  background-color: #889fc9;\r
+}\r
+\r
+.htmlarea .statusBar .statusBarTree {\r
+  display:block;\r
+  margin:3px;\r
+}\r
+.htmlarea .statusBar .statusBarTree a {\r
+  padding:2px 5px;\r
+  color:#00f;\r
+  text-decoration:none;\r
+}\r
+.htmlarea .panel h1 {\r
+  background-image:url(button-background.png);\r
+  background-repeat:repeat-x;\r
+  background-color:#889fc9;\r
+}\r
+.dialog {\r
+  background-color:#f7f8fd;\r
+}\r
+.dialog .title {\r
+  background-image: url(button-background.png);\r
+}  \r
+.dialog button{\r
+  background-image: url(button-background.png);\r
+}\r
diff --git a/mailboxes/xinha/skins/xp-blue/back.png b/mailboxes/xinha/skins/xp-blue/back.png
new file mode 100644 (file)
index 0000000..478debb
Binary files /dev/null and b/mailboxes/xinha/skins/xp-blue/back.png differ
diff --git a/mailboxes/xinha/skins/xp-blue/button-background.png b/mailboxes/xinha/skins/xp-blue/button-background.png
new file mode 100644 (file)
index 0000000..69488d3
Binary files /dev/null and b/mailboxes/xinha/skins/xp-blue/button-background.png differ
diff --git a/mailboxes/xinha/skins/xp-blue/hover.png b/mailboxes/xinha/skins/xp-blue/hover.png
new file mode 100644 (file)
index 0000000..f55e355
Binary files /dev/null and b/mailboxes/xinha/skins/xp-blue/hover.png differ
diff --git a/mailboxes/xinha/skins/xp-blue/selected.png b/mailboxes/xinha/skins/xp-blue/selected.png
new file mode 100644 (file)
index 0000000..c0c3339
Binary files /dev/null and b/mailboxes/xinha/skins/xp-blue/selected.png differ
diff --git a/mailboxes/xinha/skins/xp-blue/separator.png b/mailboxes/xinha/skins/xp-blue/separator.png
new file mode 100644 (file)
index 0000000..02ceb37
Binary files /dev/null and b/mailboxes/xinha/skins/xp-blue/separator.png differ
diff --git a/mailboxes/xinha/skins/xp-blue/skin.css b/mailboxes/xinha/skins/xp-blue/skin.css
new file mode 100644 (file)
index 0000000..c8f8564
--- /dev/null
@@ -0,0 +1,84 @@
+.htmlarea .toolbar {\r
+       background-color:#c3daf9;\r
+  background-image:url(back.png);\r
+  background-repeat:repeat-y;\r
+}\r
+.htmlarea .toolbarRow {\r
+  margin-top:2px;\r
+  margin-bottom:2px;\r
+  background-image:url(button-background.png);\r
+  height:25px;  \r
+}\r
+.htmlarea .toolbar .button {\r
+  width:20px;\r
+  height:20px;\r
+  padding:1px;\r
+  border:none;\r
+  background-image:url(button-background.png);\r
+}\r
+.buttonImageContainer {\r
+  position:relative;\r
+  left:1px;\r
+  top:1px;\r
+}\r
+.htmlarea .toolbar .separator {\r
+  margin:0;\r
+  background-image:url(separator.png);\r
+  width:7px;\r
+  height:20px;\r
+  padding:0;\r
+}\r
+.separator {\r
+  border:none;\r
+}\r
+.htmlarea .toolbar a.button:hover {\r
+  border:1px solid #003355;\r
+  padding:0;\r
+  background-image:url(hover.png);\r
+}\r
+.htmlarea .toolbar .button.buttonPressed\r
+{\r
+  border:1px solid #003355;\r
+  padding:0;\r
+  background-image:url(selected.png);\r
+}\r
+.htmlarea .statusBar {\r
+  padding:0;\r
+  height:20px;\r
+  background-image:url(button-background.png);\r
+  background-repeat:repeat-x;\r
+  background-color:#c3daf9;\r
+  color:ButtonText;\r
+  font:11px helvetica,arial,sans-serif;\r
+}\r
+\r
+.htmlarea .statusBar .statusBarWidgetContainer\r
+{\r
+  background-image: url(button-background.png);\r
+  background-repeat: repeat-x;\r
+  background-color: #c3daf9;\r
+}\r
+\r
+.htmlarea .statusBar .statusBarTree {\r
+  display:block;\r
+  margin:3px;\r
+}\r
+.htmlarea .statusBar .statusBarTree a {\r
+  padding:2px 5px;\r
+  color:#00f;\r
+  text-decoration:none;\r
+}\r
+.htmlarea .panel h1 {\r
+  background-image:url(button-background.png);\r
+  background-repeat:repeat-x;\r
+  background-color:#c3daf9;\r
+}\r
+.dialog {\r
+  background-color:#c3daf9;\r
+}\r
+.dialog .title {\r
+  background-image: url(button-background.png);\r
+}  \r
+.dialog button{\r
+  background-image: url(button-background.png);\r
+}\r
diff --git a/mailboxes/xinha/skins/xp-green/back.png b/mailboxes/xinha/skins/xp-green/back.png
new file mode 100644 (file)
index 0000000..0d0a749
Binary files /dev/null and b/mailboxes/xinha/skins/xp-green/back.png differ
diff --git a/mailboxes/xinha/skins/xp-green/button-background.png b/mailboxes/xinha/skins/xp-green/button-background.png
new file mode 100644 (file)
index 0000000..81a4657
Binary files /dev/null and b/mailboxes/xinha/skins/xp-green/button-background.png differ
diff --git a/mailboxes/xinha/skins/xp-green/hover.png b/mailboxes/xinha/skins/xp-green/hover.png
new file mode 100644 (file)
index 0000000..f55e355
Binary files /dev/null and b/mailboxes/xinha/skins/xp-green/hover.png differ
diff --git a/mailboxes/xinha/skins/xp-green/selected.png b/mailboxes/xinha/skins/xp-green/selected.png
new file mode 100644 (file)
index 0000000..c0c3339
Binary files /dev/null and b/mailboxes/xinha/skins/xp-green/selected.png differ
diff --git a/mailboxes/xinha/skins/xp-green/separator.png b/mailboxes/xinha/skins/xp-green/separator.png
new file mode 100644 (file)
index 0000000..18c5a57
Binary files /dev/null and b/mailboxes/xinha/skins/xp-green/separator.png differ
diff --git a/mailboxes/xinha/skins/xp-green/skin.css b/mailboxes/xinha/skins/xp-green/skin.css
new file mode 100644 (file)
index 0000000..4a284dc
--- /dev/null
@@ -0,0 +1,84 @@
+.htmlarea .toolbar {\r
+  background-color:#f2f0e4;\r
+  background-image:url(back.png);\r
+  background-repeat:repeat-y;\r
+}\r
+.htmlarea .toolbarRow {\r
+  margin-top:2px;\r
+  margin-bottom:2px;\r
+  background-image:url(button-background.png);\r
+  height:25px;\r
+}\r
+.htmlarea .toolbar .button {\r
+  width:20px;\r
+  height:20px;\r
+  padding:1px;\r
+  border:none;\r
+  background-image:url(button-background.png);\r
+}\r
+.buttonImageContainer {\r
+  position:relative;\r
+  left:1px;\r
+  top:1px;\r
+}\r
+.htmlarea .toolbar .separator {\r
+  margin:0;\r
+  background-image:url(separator.png);\r
+  width:7px;\r
+  height:20px;\r
+  padding:0;\r
+}\r
+.separator {\r
+  border:none;\r
+}\r
+.htmlarea .toolbar a.button:hover {\r
+  border:1px solid #335500;\r
+  padding:0;\r
+  background-image:url(hover.png);\r
+}\r
+.htmlarea .toolbar .button.buttonPressed\r
+{\r
+  border:1px solid #335500;\r
+  padding:0;\r
+  background-image:url(selected.png);\r
+}\r
+.htmlarea .statusBar {\r
+  padding:0;\r
+  height:20px;\r
+  background-image:url(button-background.png);\r
+  background-repeat:repeat-x;\r
+  background-color:#f2f0e4;\r
+  color:ButtonText;\r
+  font:11px helvetica,arial,sans-serif;\r
+}\r
+\r
+.htmlarea .statusBar .statusBarWidgetContainer\r
+{\r
+  background-image: url(button-background.png);\r
+  background-repeat: repeat-x;\r
+  background-color: #f2f0e4;\r
+}\r
+\r
+.htmlarea .statusBar .statusBarTree {\r
+  display:block;\r
+  margin:3px;\r
+}\r
+.htmlarea .statusBar .statusBarTree a {\r
+  padding:2px 5px;\r
+  color:#00f;\r
+  text-decoration:none;\r
+}\r
+.htmlarea .panel h1 {\r
+  background-image:url(button-background.png);\r
+  background-repeat:repeat-x;\r
+  background-color:#f2f0e4;\r
+}\r
+.dialog {\r
+  background-color:#f2f0e4;\r
+}\r
+.dialog .title {\r
+  background-image: url(button-background.png);\r
+}  \r
+.dialog button{\r
+  background-image: url(button-background.png);\r
+}\r