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

svn commit: r454197 [27/29] - in /incubator/roller/trunk/web: WEB-INF/classes/ roller-ui/authoring/editors/ roller-ui/authoring/editors/xinha/ roller-ui/authoring/editors/xinha/conf/ roller-ui/authoring/editors/xinha/contrib/ roller-ui/authoring/editor...

Added: incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/lang/it.js
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/lang/it.js?view=auto&rev=454197
==============================================================================
--- incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/lang/it.js (added)
+++ incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/lang/it.js Sun Oct  8 12:53:13 2006
@@ -0,0 +1,79 @@
+// I18N constants
+// LANG: "it", ENCODING: UTF-8
+// Author: Fabio Rotondo <fa...@rotondo.it>
+{
+  "Align": "Allinea",
+  "All four sides": "Tutti e quattro i lati",
+  "Background": "Sfondo",
+  "Baseline": "Allineamento",
+  "Border": "Bordo",
+  "Borders": "Bordi",
+  "Bottom": "Basso",
+  "Style [CSS]": "Stile [CSS]",
+  "Caption": "Titolo",
+  "Cell Properties": "Proprietà della Cella",
+  "Center": "Centra",
+  "Char": "Carattere",
+  "Collapsed borders": "Bordi chiusi",
+  "Color": "Colore",
+  "Description": "Descrizione",
+  "FG Color": "Colore Principale",
+  "Float": "Fluttuante",
+  "Frames": "Frames",
+  "Height": "Altezza",
+  "How many columns would you like to merge?": "Quante colonne vuoi unire?",
+  "How many rows would you like to merge?": "Quante righe vuoi unire?",
+  "Image URL": "URL dell'Immagine",
+  "Justify": "Justifica",
+  "Layout": "Layout",
+  "Left": "Sinistra",
+  "Margin": "Margine",
+  "Middle": "Centrale",
+  "No rules": "Nessun righello",
+  "No sides": "Nessun lato",
+  "None": "Nulla",
+  "Padding": "Padding",
+  "Please click into some cell": "Per favore, clicca in una cella",
+  "Right": "Destra",
+  "Row Properties": "Proprietà della Riga",
+  "Rules will appear between all rows and columns": "Le linee appariranno tra tutte le righe e colonne",
+  "Rules will appear between columns only": "Le linee appariranno solo tra le colonne",
+  "Rules will appear between rows only": "Le linee appariranno solo tra le righe",
+  "Rules": "Linee",
+  "Spacing and padding": "Spaziatura e Padding",
+  "Spacing": "Spaziatura",
+  "Summary": "Sommario",
+  "Delete cell": "Cancella cella",
+  "Insert cell after": "Inserisci cella dopo",
+  "Insert cell before": "Inserisci cella prima",
+  "Merge cells": "Unisci celle",
+  "Cell properties": "Proprietà della cella",
+  "Split cell": "Dividi cella",
+  "Delete column": "Cancella colonna",
+  "Insert column after": "Inserisci colonna dopo",
+  "Insert column before": "Inserisci colonna prima",
+  "Split column": "Dividi colonna",
+  "Delete row": "Cancella riga",
+  "Insert row before": "Inserisci riga prima",
+  "Insert row after": "Inserisci riga dopo",
+  "Row properties": "Proprietà della riga",
+  "Split row": "Dividi riga",
+  "Table properties": "Proprietà della Tabella",
+  "Table Properties": "Proprietà della Tabella",
+  "Text align": "Allineamento del Testo",
+  "The bottom side only": "Solo la parte inferiore",
+  "The left-hand side only": "Solo la parte sinistra",
+  "The right and left sides only": "Solo destra e sinistra",
+  "The right-hand side only": "Solo la parte destra",
+  "The top and bottom sides only": "Solo sopra e sotto",
+  "The top side only": "Solo la parte sopra",
+  "Top": "Alto",
+  "Unset color": "Rimuovi colore",
+  "Vertical align": "Allineamento verticale",
+  "Width": "Larghezza",
+  "HTMLArea cowardly refuses to delete the last cell in row.": "HTMLArea si rifiuta codardamente di cancellare l'ultima cella nella riga.",
+  "HTMLArea cowardly refuses to delete the last column in table.": "HTMLArea si rifiuta codardamente di cancellare l'ultima colonna nella tabella.",
+  "HTMLArea cowardly refuses to delete the last row in table.": "HTMLArea si rifiuta codardamente di cancellare l'ultima riga nella tabella.",
+  "percent": "percento",
+  "pixels": "pixels"
+};

Added: incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/lang/nb.js
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/lang/nb.js?view=auto&rev=454197
==============================================================================
--- incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/lang/nb.js (added)
+++ incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/lang/nb.js Sun Oct  8 12:53:13 2006
@@ -0,0 +1,80 @@
+// I18N constants
+// LANG: "nb", ENCODING: UTF-8
+// Author: Mihai Bazon, <mi...@yahoo.com>
+// translated into Norwegian: ses@online.no  11.11.03
+{
+  "Align": "Juster",
+  "All four sides": "Alle fire sider",
+  "Background": "Bakgrund",
+  "Baseline": "Grunnlinje",
+  "Border": "Kantlinje",
+  "Borders": "Kantlinjer",
+  "Bottom": "Bunn",
+  "Style [CSS]": "Stil [CSS]",
+  "Caption": "Overskrift",
+  "Cell Properties": "Celleegenskaper",
+  "Center": "Sentrer",
+  "Char": "Tegn",
+  "Collapsed borders": "Fjern kantlinjer",
+  "Color": "Farge",
+  "Description": "Beskrivelse",
+  "FG Color": "FG farge",
+  "Float": "Flytende",
+  "Frames": "rammer",
+  "Height": "Høyde",
+  "How many columns would you like to merge?": "Hvor mange kolonner vil du slå sammen?",
+  "How many rows would you like to merge?": "Hvor mange rader vil du slå sammen?",
+  "Image URL": "Bildets URL",
+  "Justify": "Juster",
+  "Layout": "Layout",
+  "Left": "Venstre",
+  "Margin": "Marg",
+  "Middle": "Midten",
+  "No rules": "Ingen linjal",
+  "No sides": "Ingen sider",
+  "None": "Ingen",
+  "Padding": "Luft",
+  "Please click into some cell": "Klikk i en eller annen celle",
+  "Right": "Høyre",
+  "Row Properties": "Egenskaper for rad",
+  "Rules will appear between all rows and columns": "Linjer vil synes mellom alle rader og kolonner",
+  "Rules will appear between columns only": "Linjer vil synes kun mellom kolonner",
+  "Rules will appear between rows only": "Linjer vil synes kun mellom rader",
+  "Rules": "Linjer",
+  "Spacing and padding": "Luft",
+  "Spacing": "Luft",
+  "Summary": "Sammendrag",
+  "Delete cell": "Slett celle",
+  "Insert cell after": "Sett inn celle etter",
+  "Insert cell before": "Sett inn celle foran",
+  "Merge cells": "Slå sammen celler",
+  "Cell properties": "Egenskaper for celle",
+  "Split cell": "Del celle",
+  "Delete column": "Slett kolonne",
+  "Insert column after": "Skyt inn kolonne etter",
+  "Insert column before": "Skyt inn kolonne før",
+  "Split column": "Del kolonne",
+  "Delete row": "Slett rad",
+  "Insert row before": "Skyt inn rad foran",
+  "Insert row after": "Skyt inn rad etter",
+  "Row properties": "Egenskaper for rad",
+  "Split row": "Del rad",
+  "Table properties": "Tabellegenskaper",
+  "Table Properties": "Tabellegenskaper",
+  "Text align": "Juster tekst",
+  "The bottom side only": "Bunnen kun",
+  "The left-hand side only": "Venstresiden kun",
+  "The right and left sides only": "Høyre- og venstresiden kun",
+  "The right-hand side only": "Høyresiden kun",
+  "The top and bottom sides only": "The top and bottom sides only",
+  "The top side only": "Overkanten kun",
+  "Top": "Overkant",
+  "Unset color": "Ikke-bestemt farge",
+  "Vertical align": "Vertikal justering",
+  "Width": "Bredde",
+  "HTMLArea cowardly refuses to delete the last cell in row.": "HTMLArea nekter å slette siste cellen i tabellen.",
+  "HTMLArea cowardly refuses to delete the last column in table.": "HTMLArea nekter å slette siste kolonnen i tabellen.",
+  "HTMLArea cowardly refuses to delete the last row in table.": "HTMLArea nekter å slette siste raden i tabellen.",
+  "percent": "prosent",
+  "pixels": "billedpunkter"
+};
\ No newline at end of file

Added: incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/lang/nl.js
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/lang/nl.js?view=auto&rev=454197
==============================================================================
--- incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/lang/nl.js (added)
+++ incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/lang/nl.js Sun Oct  8 12:53:13 2006
@@ -0,0 +1,79 @@
+// I18N constants
+// LANG: "nl", ENCODING: UTF-8
+// Author: Michel Weegeerink (info@mmc-shop.nl), http://mmc-shop.nl
+{
+  "Align": "Uitlijning",
+  "All four sides": "Alle 4 zijden",
+  "Background": "Achtergrond",
+  "Baseline": "Basis",
+  "Border": "Rand",
+  "Borders": "Randen",
+  "Bottom": "Onder",
+  "Style [CSS]": "CSS Style",
+  "Caption": "Opmerking",
+  "Cell Properties": "Celeigenschappen",
+  "Center": "Centreren",
+  "Char": "Karakter",
+  "Collapsed borders": "Geen randen",
+  "Color": "Kleur",
+  "Description": "Omschrijving",
+  "FG Color": "Voorgrond",
+  "Float": "Zwevend",
+  "Frames": "Frames",
+  "Height": "Hoogte",
+  "How many columns would you like to merge?": "Hoeveel kolommen wilt u samenvoegen?",
+  "How many rows would you like to merge?": "Hoeveel rijen wilt u samenvoegen?",
+  "Image URL": "Afbeelding URL",
+  "Justify": "Uitvullen",
+  "Layout": "Opmaak",
+  "Left": "Links",
+  "Margin": "Marge",
+  "Middle": "Midden",
+  "No rules": "Geen regels",
+  "No sides": "Geen zijlijnen",
+  "None": "Geen",
+  "Padding": "Celmarge",
+  "Please click into some cell": "Klik in een cel a.u.b.",
+  "Right": "Rechts",
+  "Row Properties": "Rijeigenschappen",
+  "Rules will appear between all rows and columns": "Regels verschijnen tussen alle rijen en kolommen",
+  "Rules will appear between columns only": "Regels verschijnen enkel tussen de kolommen",
+  "Rules will appear between rows only": "Regels verschijnen enkel tussen de rijen",
+  "Rules": "Regels",
+  "Spacing and padding": "Celmarge en afstand tussen cellen",
+  "Spacing": "marge",
+  "Summary": "Overzicht",
+  "Delete cell": "Cel verwijderen",
+  "Insert cell after": "Voeg cel toe achter",
+  "Insert cell before": "Voeg cel toe voor",
+  "Merge cells": "Cellen samenvoegen",
+  "Cell properties": "Celeigenschappen",
+  "Split cell": "Cel splitsen",
+  "Delete column": "Kolom verwijderen",
+  "Insert column after": "Kolom invoegen achter",
+  "Insert column before": "Kolom invoegen voor",
+  "Split column": "Kolom splitsen",
+  "Delete row": "Rij verwijderen",
+  "Insert row before": "Rij invoegen boven",
+  "Insert row after": "Rij invoegen onder",
+  "Row properties": "Rij eigenschappen",
+  "Split row": "Rij splitsen",
+  "Table properties": "Tabel eigenschappen",
+  "Table Properties": "Tabel eigenschappen",
+  "Text align": "Text uitlijning",
+  "The bottom side only": "Enkel aan de onderkant",
+  "The left-hand side only": "Enkel aan de linkerkant",
+  "The right and left sides only": "Enkel aan de linker en rechterkant",
+  "The right-hand side only": "Enkel aan de rechterkant",
+  "The top and bottom sides only": "Enkel aan de bovenen onderkant",
+  "The top side only": "Enkel aan de bovenkant",
+  "Top": "Boven",
+  "Unset color": "Wis kleur",
+  "Vertical align": "Vertikale uitlijning",
+  "Width": "Breedte",
+  "HTMLArea cowardly refuses to delete the last cell in row.": "HTMLArea kan de laatste cel in deze tabel niet verwijderen.",
+  "HTMLArea cowardly refuses to delete the last column in table.": "HTMLArea kan de laatste kolom in deze tabel niet verwijderen.",
+  "HTMLArea cowardly refuses to delete the last row in table.": "HTMLArea kan de laatste rij in deze tabel niet verwijderen.",
+  "percent": "procent",
+  "pixels": "pixels"
+};

Added: incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/lang/no.js
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/lang/no.js?view=auto&rev=454197
==============================================================================
--- incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/lang/no.js (added)
+++ incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/lang/no.js Sun Oct  8 12:53:13 2006
@@ -0,0 +1,80 @@
+// I18N constants
+// LANG: "no", ENCODING: UTF-8
+// Author: Mihai Bazon, <mi...@yahoo.com>
+// translated into Norwegian: ses@online.no  11.11.03
+{
+  "Align": "Juster",
+  "All four sides": "Alle fire sider",
+  "Background": "Bakgrund",
+  "Baseline": "Grunnlinje",
+  "Border": "Kantlinje",
+  "Borders": "Kantlinjer",
+  "Bottom": "Bunn",
+  "Style [CSS]": "Stil [CSS]",
+  "Caption": "Overskrift",
+  "Cell Properties": "Celleegenskaper",
+  "Center": "Sentrer",
+  "Char": "Tegn",
+  "Collapsed borders": "Fjern kantlinjer",
+  "Color": "Farge",
+  "Description": "Beskrivelse",
+  "FG Color": "FG farge",
+  "Float": "Flytende",
+  "Frames": "rammer",
+  "Height": "Høyde",
+  "How many columns would you like to merge?": "Hvor mange kolonner vil du slå sammen?",
+  "How many rows would you like to merge?": "Hvor mange rader vil du slå sammen?",
+  "Image URL": "Bildets URL",
+  "Justify": "Juster",
+  "Layout": "Layout",
+  "Left": "Venstre",
+  "Margin": "Marg",
+  "Middle": "Midten",
+  "No rules": "Ingen linjal",
+  "No sides": "Ingen sider",
+  "None": "Ingen",
+  "Padding": "Luft",
+  "Please click into some cell": "Klikk i en eller annen celle",
+  "Right": "Høyre",
+  "Row Properties": "Egenskaper for rad",
+  "Rules will appear between all rows and columns": "Linjer vil synes mellom alle rader og kolonner",
+  "Rules will appear between columns only": "Linjer vil synes kun mellom kolonner",
+  "Rules will appear between rows only": "Linjer vil synes kun mellom rader",
+  "Rules": "Linjer",
+  "Spacing and padding": "Luft",
+  "Spacing": "Luft",
+  "Summary": "Sammendrag",
+  "Delete cell": "Slett celle",
+  "Insert cell after": "Sett inn celle etter",
+  "Insert cell before": "Sett inn celle foran",
+  "Merge cells": "Slå sammen celler",
+  "Cell properties": "Egenskaper for celle",
+  "Split cell": "Del celle",
+  "Delete column": "Slett kolonne",
+  "Insert column after": "Skyt inn kolonne etter",
+  "Insert column before": "Skyt inn kolonne før",
+  "Split column": "Del kolonne",
+  "Delete row": "Slett rad",
+  "Insert row before": "Skyt inn rad foran",
+  "Insert row after": "Skyt inn rad etter",
+  "Row properties": "Egenskaper for rad",
+  "Split row": "Del rad",
+  "Table properties": "Tabellegenskaper",
+  "Table Properties": "Tabellegenskaper",
+  "Text align": "Juster tekst",
+  "The bottom side only": "Bunnen kun",
+  "The left-hand side only": "Venstresiden kun",
+  "The right and left sides only": "Høyre- og venstresiden kun",
+  "The right-hand side only": "Høyresiden kun",
+  "The top and bottom sides only": "The top and bottom sides only",
+  "The top side only": "Overkanten kun",
+  "Top": "Overkant",
+  "Unset color": "Ikke-bestemt farge",
+  "Vertical align": "Vertikal justering",
+  "Width": "Bredde",
+  "HTMLArea cowardly refuses to delete the last cell in row.": "HTMLArea nekter å slette siste cellen i tabellen.",
+  "HTMLArea cowardly refuses to delete the last column in table.": "HTMLArea nekter å slette siste kolonnen i tabellen.",
+  "HTMLArea cowardly refuses to delete the last row in table.": "HTMLArea nekter å slette siste raden i tabellen.",
+  "percent": "prosent",
+  "pixels": "billedpunkter"
+};
\ No newline at end of file

Added: incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/lang/pl.js
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/lang/pl.js?view=auto&rev=454197
==============================================================================
--- incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/lang/pl.js (added)
+++ incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/lang/pl.js Sun Oct  8 12:53:13 2006
@@ -0,0 +1,83 @@
+// I18N constants
+// LANG: "pl", ENCODING: UTF-8
+// translated: Krzysztof Kotowicz koto@webworkers.pl
+{
+  "Align": "Wyrównanie",
+  "All four sides": "Wszystkie 4 strony",
+  "Background": "Tło",
+  "Baseline": "Linia bazowa",
+  "Border": "Ramka",
+  "Borders": "Ramki",
+  "Bottom": "Dół",
+  "Style [CSS]": "Styl [CSS]",
+  "CSS Style": "Styl CSS",
+  "Caption": "Podpis",
+  "Cell Properties": "Właściwości komórki",
+  "Center": "Środek",
+  "Char": "Znak",
+  "Collapsed borders": "Ramki skolapsowane",
+  "Color": "Kolor",
+  "Description": "Opis",
+  "FG Color": "Kolor czcionek",
+  "Float": "Opływanie",
+  "Frames": "Ramki zewn.",
+  "Frame and borders": "Obramowania",
+  "Height": "Wysokość",
+  "How many columns would you like to merge?": "Ile kolumn chcesz scalić?",
+  "How many rows would you like to merge?": "Ile wierszy chcesz scalić?",
+  "Image URL": "URL obrazka",
+  "Justify": "Wyjustuj",
+  "Layout": "Layout",
+  "Left": "Lewo",
+  "Margin": "Margines",
+  "Middle": "Środek",
+  "No rules": "Bez wewnętrzych",
+  "No sides": "Bez ramek",
+  "None": "Brak",
+  "Padding": "Wcięcia",
+  "Please click into some cell": "Kliknij w jakąś komórkę",
+  "Right": "Prawo",
+  "Row Properties": "Właściwości wiersza",
+  "Rules will appear between all rows and columns": "Linie będą widoczne pomiędzy kolumnami i wierszami",
+  "Rules will appear between columns only": "Linie będą widoczne tylko pomiędzy kolumnami",
+  "Rules will appear between rows only": "Linie będą widoczne tylko pomiędzy wierszami",
+  "Rules": "Linie wewn.",
+  "Spacing and padding": "Spacjowanie",
+  "Spacing": "Odstęp",
+  "Summary": "Podsumowanie",
+  "Delete cell": "Usuń komórkę",
+  "Insert cell after": "Wstaw komórkę po",
+  "Insert cell before": "Wstaw komórkę przed",
+  "Merge cells": "Scal komórki",
+  "Cell properties": "Właściwości komórki",
+  "Split cell": "Rozdziel komórkę",
+  "Delete column": "Usuń kolumnę",
+  "Insert column after": "Wstaw kolumnę po",
+  "Insert column before": "Wstaw kolumnę przed",
+  "Split column": "Rozdziel kolumnę",
+  "Delete row": "Usuń wiersz",
+  "Insert row before": "Wstaw wiersz przed",
+  "Insert row after": "Wstaw wiersz po",
+  "Row properties": "Właściwości wiersza",
+  "Split row": "Rozdziel wiersz",
+  "Table properties": "Właściwości tabeli",
+  "Table Properties": "Właściwości tabeli",
+  "Text align": "Wyr. w poziomie",
+  "The bottom side only": "Tylko dolna linia",
+  "The left-hand side only": "Tylko lewa linia",
+  "The right and left sides only": "Lewa i prawa linia",
+  "The right-hand side only": "Tylko prawa linia",
+  "The top and bottom sides only": "Górna i dolna linia",
+  "The top side only": "Tylko górna linia",
+  "Top": "Góra",
+  "Unset color": "Usuń kolor",
+  "Vertical align": "Wyr. w pionie",
+  "Width": "Szerokość",
+  "HTMLArea cowardly refuses to delete the last cell in row.": "Nie możesz skasować ostatniej komórki w wierszu.",
+  "HTMLArea cowardly refuses to delete the last column in table.": "Nie możesz skasować ostatniej kolumny w tabeli.",
+  "HTMLArea cowardly refuses to delete the last row in table.": "Nie możesz skasować ostatniego wiersza w tabeli.",
+  "percent": "%",
+  "pixels": "pikseli",
+  "OK": "OK",
+  "Cancel": "Anuluj"
+};

Added: incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/lang/ro.js
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/lang/ro.js?view=auto&rev=454197
==============================================================================
--- incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/lang/ro.js (added)
+++ incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/lang/ro.js Sun Oct  8 12:53:13 2006
@@ -0,0 +1,79 @@
+// I18N constants
+// LANG: "ro", ENCODING: UTF-8
+// Author: Mihai Bazon, http://dynarch.com/mishoo
+{
+  "Align": "Aliniere",
+  "All four sides": "Toate părţile",
+  "Background": "Fundal",
+  "Baseline": "Baseline",
+  "Border": "Chenar",
+  "Borders": "Chenare",
+  "Bottom": "Jos",
+  "Style [CSS]": "Stil [CSS]",
+  "Caption": "Titlu de tabel",
+  "Cell Properties": "Proprietăţile celulei",
+  "Center": "Centru",
+  "Char": "Caracter",
+  "Collapsed borders": "Chenare asimilate",
+  "Color": "Culoare",
+  "Description": "Descriere",
+  "FG Color": "Culoare text",
+  "Float": "Poziţie",
+  "Frames": "Chenare",
+  "Height": "Înălţimea",
+  "How many columns would you like to merge?": "Câte coloane vrei să uneşti?",
+  "How many rows would you like to merge?": "Câte linii vrei să uneşti?",
+  "Image URL": "URL-ul imaginii",
+  "Justify": "Justify",
+  "Layout": "Aranjament",
+  "Left": "Stânga",
+  "Margin": "Margine",
+  "Middle": "Mijloc",
+  "No rules": "Fără linii",
+  "No sides": "Fără părţi",
+  "None": "Nimic",
+  "Padding": "Spaţiere",
+  "Please click into some cell": "Vă rog să daţi click într-o celulă",
+  "Right": "Dreapta",
+  "Row Properties": "Proprietăţile liniei",
+  "Rules will appear between all rows and columns": "Vor apărea linii între toate rândurile şi coloanele",
+  "Rules will appear between columns only": "Vor apărea doar linii verticale",
+  "Rules will appear between rows only": "Vor apărea doar linii orizontale",
+  "Rules": "Linii",
+  "Spacing and padding": "Spaţierea",
+  "Spacing": "Între celule",
+  "Summary": "Sumar",
+  "Delete cell": "Şterge celula",
+  "Insert cell after": "Inserează o celulă la dreapta",
+  "Insert cell before": "Inserează o celulă la stânga",
+  "Merge cells": "Uneşte celulele",
+  "Cell properties": "Proprietăţile celulei",
+  "Split cell": "Împarte celula",
+  "Delete column": "Şterge coloana",
+  "Insert column after": "Inserează o coloană la dreapta",
+  "Insert column before": "Inserează o coloană la stânga",
+  "Split column": "Împarte coloana",
+  "Delete row": "Şterge rândul",
+  "Insert row before": "Inserează un rând înainte",
+  "Insert row after": "Inserează un rând după",
+  "Row properties": "Proprietăţile rândului",
+  "Split row": "Împarte rândul",
+  "Table properties": "Proprietăţile tabelei",
+  "Table Properties": "Proprietăţile tabelei",
+  "Text align": "Aliniere",
+  "The bottom side only": "Doar partea de jos",
+  "The left-hand side only": "Doar partea din stânga",
+  "The right and left sides only": "Partea din stânga şi cea din dreapta",
+  "The right-hand side only": "Doar partea din dreapta",
+  "The top and bottom sides only": "Partea de sus si cea de jos",
+  "The top side only": "Doar partea de sus",
+  "Top": "Sus",
+  "Unset color": "Dezactivează culoarea",
+  "Vertical align": "Aliniere pe verticală",
+  "Width": "Lăţime",
+  "HTMLArea cowardly refuses to delete the last cell in row.": "HTMLArea refuză cu laşitate să şteargă ultima celulă din rând.",
+  "HTMLArea cowardly refuses to delete the last column in table.": "HTMLArea refuză cu laşitate să şteargă ultima coloamă din tabela.",
+  "HTMLArea cowardly refuses to delete the last row in table.": "HTMLArea refuză cu laşitate să şteargă ultimul rând din tabela.",
+  "percent": "procente",
+  "pixels": "pixeli"
+};

Added: incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/lang/ru.js
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/lang/ru.js?view=auto&rev=454197
==============================================================================
--- incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/lang/ru.js (added)
+++ incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/lang/ru.js Sun Oct  8 12:53:13 2006
@@ -0,0 +1,79 @@
+// I18N constants
+// LANG: "ru", ENCODING: UTF-8
+// Author: Andrei Blagorazumov, a@fnr.ru
+{
+  "Align": "Выравнивание",
+  "All four sides": "Все 4 стороны",
+  "Background": "Фон",
+  "Baseline": "Базовая линия",
+  "Border": "Рамка",
+  "Borders": "Рамки",
+  "Bottom": "Низ",
+  "Style [CSS]": "Стиль [CSS]",
+  "Caption": "Заголовок",
+  "Cell Properties": "Свойства ячеек",
+  "Center": "Центр",
+  "Char": "Символ",
+  "Collapsed borders": "Накладывающиеся рамки",
+  "Color": "Цвет",
+  "Description": "Описание",
+  "FG Color": "Цвет переднего плана",
+  "Float": "Обтекание",
+  "Frames": "Фреймы",
+  "Height": "Высота",
+  "How many columns would you like to merge?": "Сколько столбцов вы хотите объединить?",
+  "How many rows would you like to merge?": "Сколько строк вы хотите объединить?",
+  "Image URL": "URL картинки",
+  "Justify": "По правому краю",
+  "Layout": "Раскладка",
+  "Left": "Лево",
+  "Margin": "Отступ",
+  "Middle": "Середина",
+  "No rules": "Нет линейки",
+  "No sides": "Нет сторон",
+  "None": "Ничего",
+  "Padding": "Поля",
+  "Please click into some cell": "Пожалуйста щелкните в некоторые ячейки",
+  "Right": "Право",
+  "Row Properties": "Свойства строк",
+  "Rules will appear between all rows and columns": "Линейки появятся между всеми строками и столбцами",
+  "Rules will appear between columns only": "Линейки появятся только между столбцами",
+  "Rules will appear between rows only": "Линейки появятся только между строками",
+  "Rules": "Линейки",
+  "Spacing and padding": "Поля и отступы",
+  "Spacing": "Отступы",
+  "Summary": "Сводка",
+  "Delete cell": "Удалить ячейку",
+  "Insert cell after": "Вставить ячейку после",
+  "Insert cell before": "Вставить ячейку до",
+  "Merge cells": "Объединить ячейки",
+  "Cell properties": "Свойства ячеек",
+  "Split cell": "Разделить ячейку",
+  "Delete column": "Удалить столбец",
+  "Insert column after": "Вставить столбец после",
+  "Insert column before": "Вставить столбец до",
+  "Split column": "Разделить столбец",
+  "Delete row": "Удалить строку",
+  "Insert row before": "Вставить строку до",
+  "Insert row after": "Вставить строку после",
+  "Row properties": "Свойства строки",
+  "Split row": "Разделить строку",
+  "Table properties": "Свойства таблиц",
+  "Table Properties": "Свойства таблиц",
+  "Text align": "Выравнивание теста",
+  "The bottom side only": "Только нижний край",
+  "The left-hand side only": "Только левый край",
+  "The right and left sides only": "Только левый и правый край",
+  "The right-hand side only": "Только правый край",
+  "The top and bottom sides only": "Только верхний и нижний край",
+  "The top side only": "Только верхний край",
+  "Top": "Верх",
+  "Unset color": "Отменить цвет",
+  "Vertical align": "Вертикальное  выравнивание",
+  "Width": "Ширина",
+  "HTMLArea cowardly refuses to delete the last cell in row.": "HTMLArea отказалась удалять последнюю ячейку в строке.",
+  "HTMLArea cowardly refuses to delete the last column in table.": "HTMLArea отказалась удалять последний столбец в таблице.",
+  "HTMLArea cowardly refuses to delete the last row in table.": "HTMLArea отказалась удалять последнюю строку в таблице.",
+  "percent": "процентов",
+  "pixels": "пикселей"
+};
\ No newline at end of file

Added: incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/lang/sv.js
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/lang/sv.js?view=auto&rev=454197
==============================================================================
--- incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/lang/sv.js (added)
+++ incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/lang/sv.js Sun Oct  8 12:53:13 2006
@@ -0,0 +1,79 @@
+// I18N constants
+// LANG: "sv" (Swedish), ENCODING: UTF-8
+// translated into Swedish: Erik Dalén, <da...@jpl.se>
+{
+  "Align": "Justera",
+  "All four sides": "Alla fyra sidor",
+  "Background": "Bakgrund",
+  "Baseline": "Baslinje",
+  "Border": "Kantlinje",
+  "Borders": "Kantlinjer",
+  "Bottom": "Botten",
+  "Style [CSS]": "Stil [CSS]",
+  "Caption": "Överskrift",
+  "Cell Properties": "Cellegenskaper",
+  "Center": "Centrera",
+  "Char": "Tecken",
+  "Collapsed borders": "Osynliga kantlinjer",
+  "Color": "Färg",
+  "Description": "Beskrivning",
+  "FG Color": "Förgrundsfärg",
+  "Float": "Flytande",
+  "Frames": "ramar",
+  "Height": "Höjd",
+  "How many columns would you like to merge?": "Hur många kolumner vill du slå samman?",
+  "How many rows would you like to merge?": "Hur många rader vill du slå samman?",
+  "Image URL": "Bildens URL",
+  "Justify": "Justera",
+  "Layout": "Layout",
+  "Left": "Venster",
+  "Margin": "Marginal",
+  "Middle": "Mitten",
+  "No rules": "Ingen linjal",
+  "No sides": "Inga sidor",
+  "None": "Ingen",
+  "Padding": "Luft",
+  "Please click into some cell": "Klicka i valfri cell",
+  "Right": "Höger",
+  "Row Properties": "Egenskaper for rad",
+  "Rules will appear between all rows and columns": "Linjaler kommer att synas mellan alla rader och kolumner",
+  "Rules will appear between columns only": "Linjaler kommer enbart synas mellan kolumner",
+  "Rules will appear between rows only": "Linjaler kommer enbart synas mellan rader",
+  "Rules": "Linjaler",
+  "Spacing and padding": "Mellanrum och luft",
+  "Spacing": "Mellanrum",
+  "Summary": "Sammandrag",
+  "Delete cell": "Radera cell",
+  "Insert cell after": "Infoga cell efter",
+  "Insert cell before": "Infoga cell före",
+  "Merge cells": "Slå samman celler",
+  "Cell properties": "Egenskaper for cell",
+  "Split cell": "Dela cell",
+  "Delete column": "Radera kolumn",
+  "Insert column after": "Infoga kolumn efter",
+  "Insert column before": "Infoga kolumn före",
+  "Split column": "Dela kolumn",
+  "Delete row": "Radera rad",
+  "Insert row before": "Infoga rad före",
+  "Insert row after": "Infoga rad efter",
+  "Row properties": "Egenskaper för rad",
+  "Split row": "Dela rad",
+  "Table properties": "Tabellegenskaper",
+  "Table Properties": "Tabellegenskaper",
+  "Text align": "Justera text",
+  "The bottom side only": "Nederkanten enbart",
+  "The left-hand side only": "Vänstersidan enbart",
+  "The right and left sides only": "Höger- och vänstersidan enbart",
+  "The right-hand side only": "Högersidan enbart",
+  "The top and bottom sides only": "Över- och nederkanten enbart",
+  "The top side only": "Överkanten enbart",
+  "Top": "Överkant",
+  "Unset color": "Obestämd färg",
+  "Vertical align": "Vertikal justering",
+  "Width": "Bredd",
+  "HTMLArea cowardly refuses to delete the last cell in row.": "Xinha nekar att radera sista cellen i tabellen.",
+  "HTMLArea cowardly refuses to delete the last column in table.": "Xinha nekar att radera sista kolumnen i tabellen.",
+  "HTMLArea cowardly refuses to delete the last row in table.": "Xinha nekar att radera sista raden i tabellen.",
+  "percent": "procent",
+  "pixels": "bildpunkter"
+};

Propchange: incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/lang/sv.js
------------------------------------------------------------------------------
    svn:executable = *

Added: incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/table-operations.js
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/table-operations.js?view=auto&rev=454197
==============================================================================
--- incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/table-operations.js (added)
+++ incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/TableOperations/table-operations.js Sun Oct  8 12:53:13 2006
@@ -0,0 +1,1181 @@
+// Table Operations Plugin for HTMLArea-3.0
+// Implementation by Mihai Bazon.  Sponsored by http://www.bloki.com
+//
+// htmlArea v3.0 - Copyright (c) 2002 interactivetools.com, inc.
+// This notice MUST stay intact for use (see license.txt).
+//
+// A free WYSIWYG editor replacement for <textarea> fields.
+// For full source code and docs, visit http://www.interactivetools.com/
+//
+// Version 3.0 developed by Mihai Bazon for InteractiveTools.
+//   http://dynarch.com/mishoo
+//
+// $Id: table-operations.js 584 2006-09-23 13:05:01Z gocher $
+
+// Object that will encapsulate all the table operations provided by
+// HTMLArea-3.0 (except "insert table" which is included in the main file)
+function TableOperations(editor) {
+	this.editor = editor;
+
+	var cfg = editor.config;
+	var bl = TableOperations.btnList;
+	var self = this;
+
+	// register the toolbar buttons provided by this plugin
+
+  // Remove existing inserttable and toggleborders, we will replace it in our group  
+  cfg.removeToolbarElement(' inserttable toggleborders '); 
+  
+	var toolbar = ["linebreak", "inserttable", "toggleborders"];
+    
+	for (var i = 0; i < bl.length; ++i) {
+		var btn = bl[i];
+		if (!btn) {
+			toolbar.push("separator");
+		} else {
+			var id = "TO-" + btn[0];
+			cfg.registerButton(id, HTMLArea._lc(btn[2], "TableOperations"), editor.imgURL(btn[0] + ".gif", "TableOperations"), false,
+					   function(editor, id) {
+						   // dispatch button press event
+						   self.buttonPress(editor, id);
+					   }, btn[1]);
+			toolbar.push(id);
+		}
+	}
+
+	// add a new line in the toolbar
+	cfg.toolbar.push(toolbar);
+}
+
+TableOperations._pluginInfo = {
+	name          : "TableOperations",
+	version       : "1.0",
+	developer     : "Mihai Bazon",
+	developer_url : "http://dynarch.com/mishoo/",
+	c_owner       : "Mihai Bazon",
+	sponsor       : "Zapatec Inc.",
+	sponsor_url   : "http://www.bloki.com",
+	license       : "htmlArea"
+};
+
+TableOperations.prototype._lc = function(string) {
+    return HTMLArea._lc(string, 'TableOperations');
+};
+
+/************************
+ * UTILITIES
+ ************************/
+
+// retrieves the closest element having the specified tagName in the list of
+// ancestors of the current selection/caret.
+TableOperations.prototype.getClosest = function(tagName) {
+	var editor = this.editor;
+	var ancestors = editor.getAllAncestors();
+	var ret = null;
+	tagName = ("" + tagName).toLowerCase();
+	for (var i = 0; i < ancestors.length; ++i) {
+		var el = ancestors[i];
+		if (el.tagName.toLowerCase() == tagName) {
+			ret = el;
+			break;
+		}
+	}
+	return ret;
+};
+
+// this function requires the file PopupDiv/PopupWin to be loaded from browser
+TableOperations.prototype.dialogTableProperties = function() {
+	// retrieve existing values
+	var table = this.getClosest("table");
+	// this.editor.selectNodeContents(table);
+	// this.editor.updateToolbar();
+
+	var dialog = new PopupWin(this.editor, HTMLArea._lc("Table Properties", "TableOperations"), function(dialog, params) {
+		TableOperations.processStyle(params, table);
+		for (var i in params) {
+      if(typeof params[i] == 'function') continue;
+			var val = params[i];
+			switch (i) {
+			    case "f_caption":
+				if (/\S/.test(val)) {
+					// contains non white-space characters
+					var caption = table.getElementsByTagName("caption")[0];
+					if (!caption) {
+						caption = dialog.editor._doc.createElement("caption");
+						table.insertBefore(caption, table.firstChild);
+					}
+					caption.innerHTML = val;
+				} else {
+					// search for caption and delete it if found
+					var caption = table.getElementsByTagName("caption")[0];
+					if (caption) {
+						caption.parentNode.removeChild(caption);
+					}
+				}
+				break;
+			    case "f_summary":
+				table.summary = val;
+				break;
+			    case "f_width":
+				table.style.width = ("" + val) + params.f_unit;
+				break;
+			    case "f_align":
+				table.align = val;
+				break;
+			    case "f_spacing":
+				table.cellSpacing = val;
+				break;
+			    case "f_padding":
+				table.cellPadding = val;
+				break;
+			    case "f_borders":
+				table.border = val;
+				break;
+			    case "f_frames":
+				table.frame = val;
+				break;
+			    case "f_rules":
+				table.rules = val;
+				break;
+			}
+		}
+		// various workarounds to refresh the table display (Gecko,
+		// what's going on?! do not disappoint me!)
+		dialog.editor.forceRedraw();
+		dialog.editor.focusEditor();
+		dialog.editor.updateToolbar();
+		var save_collapse = table.style.borderCollapse;
+		table.style.borderCollapse = "collapse";
+		table.style.borderCollapse = "separate";
+		table.style.borderCollapse = save_collapse;
+	},
+
+	// this function gets called when the dialog needs to be initialized
+	function (dialog) {
+
+		var f_caption = "";
+		var capel = table.getElementsByTagName("caption")[0];
+		if (capel) {
+			f_caption = capel.innerHTML;
+		}
+		var f_summary = table.summary;
+		var f_width = parseInt(table.style.width);
+		isNaN(f_width) && (f_width = "");
+		var f_unit = /%/.test(table.style.width) ? 'percent' : 'pixels';
+		var f_align = table.align;
+		var f_spacing = table.cellSpacing;
+		var f_padding = table.cellPadding;
+		var f_borders = table.border;
+		var f_frames = table.frame;
+		var f_rules = table.rules;
+
+		function selected(val) {
+			return val ? " selected" : "";
+		}
+
+		// dialog contents
+		dialog.content.style.width = "400px";
+		dialog.content.innerHTML = " \
+<div class='title'>" + HTMLArea._lc("Table Properties", "TableOperations") + "\
+</div> \
+<table style='width:100%'> \
+  <tr> \
+    <td> \
+      <fieldset><legend>" + HTMLArea._lc("Description", "TableOperations") + "</legend> \
+       <table style='width:100%'> \
+        <tr> \
+          <td class='label'>" + HTMLArea._lc("Caption", "TableOperations") + ":</td> \
+          <td class='value'><input type='text' name='f_caption' value='" + f_caption + "'/></td> \
+        </tr><tr> \
+          <td class='label'>" + HTMLArea._lc("Summary", "TableOperations") + ":</td> \
+          <td class='value'><input type='text' name='f_summary' value='" + f_summary + "'/></td> \
+        </tr> \
+       </table> \
+      </fieldset> \
+    </td> \
+  </tr> \
+  <tr><td id='--HA-layout'></td></tr> \
+  <tr> \
+    <td> \
+      <fieldset><legend>" + HTMLArea._lc("Spacing and padding", "TableOperations") + "</legend> \
+       <table style='width:100%'> \
+"+//        <tr> \
+//           <td class='label'>" + HTMLArea._lc("Width", "TableOperations") + ":</td> \
+//           <td><input type='text' name='f_width' value='" + f_width + "' size='5' /> \
+//             <select name='f_unit'> \
+//               <option value='%'" + selected(f_unit == "percent") + ">" + HTMLArea._lc("percent", "TableOperations") + "</option> \
+//               <option value='px'" + selected(f_unit == "pixels") + ">" + HTMLArea._lc("pixels", "TableOperations") + "</option> \
+//             </select> &nbsp;&nbsp;" + HTMLArea._lc("Align", "TableOperations") + ": \
+//             <select name='f_align'> \
+//               <option value='left'" + selected(f_align == "left") + ">" + HTMLArea._lc("Left", "TableOperations") + "</option> \
+//               <option value='center'" + selected(f_align == "center") + ">" + HTMLArea._lc("Center", "TableOperations") + "</option> \
+//               <option value='right'" + selected(f_align == "right") + ">" + HTMLArea._lc("Right", "TableOperations") + "</option> \
+//             </select> \
+//           </td> \
+//         </tr> \
+"        <tr> \
+          <td class='label'>" + HTMLArea._lc("Spacing", "TableOperations") + ":</td> \
+          <td><input type='text' name='f_spacing' size='5' value='" + f_spacing + "' /> &nbsp;" + HTMLArea._lc("Padding", "TableOperations") + ":\
+            <input type='text' name='f_padding' size='5' value='" + f_padding + "' /> &nbsp;&nbsp;" + HTMLArea._lc("pixels", "TableOperations") + "\
+          </td> \
+        </tr> \
+       </table> \
+      </fieldset> \
+    </td> \
+  </tr> \
+  <tr> \
+    <td> \
+      <fieldset><legend>" + HTMLArea._lc("Frame and borders", "TableOperations") + "</legend> \
+        <table width='100%'> \
+          <tr> \
+            <td class='label'>" + HTMLArea._lc("Borders", "TableOperations") + ":</td> \
+            <td><input name='f_borders' type='text' size='5' value='" + f_borders + "' /> &nbsp;&nbsp;" + HTMLArea._lc("pixels", "TableOperations") + "</td> \
+          </tr> \
+          <tr> \
+            <td class='label'>" + HTMLArea._lc("Frames", "TableOperations") + ":</td> \
+            <td> \
+              <select name='f_frames'> \
+                <option value='void'" + selected(f_frames == "void") + ">" + HTMLArea._lc("No sides", "TableOperations") + "</option> \
+                <option value='above'" + selected(f_frames == "above") + ">" + HTMLArea._lc("The top side only", "TableOperations") + "</option> \
+                <option value='below'" + selected(f_frames == "below") + ">" + HTMLArea._lc("The bottom side only", "TableOperations") + "</option> \
+                <option value='hsides'" + selected(f_frames == "hsides") + ">" + HTMLArea._lc("The top and bottom sides only", "TableOperations") + "</option> \
+                <option value='vsides'" + selected(f_frames == "vsides") + ">" + HTMLArea._lc("The right and left sides only", "TableOperations") + "</option> \
+                <option value='lhs'" + selected(f_frames == "lhs") + ">" + HTMLArea._lc("The left-hand side only", "TableOperations") + "</option> \
+                <option value='rhs'" + selected(f_frames == "rhs") + ">" + HTMLArea._lc("The right-hand side only", "TableOperations") + "</option> \
+                <option value='box'" + selected(f_frames == "box") + ">" + HTMLArea._lc("All four sides", "TableOperations") + "</option> \
+              </select> \
+            </td> \
+          </tr> \
+          <tr> \
+            <td class='label'>" + HTMLArea._lc("Rules", "TableOperations") + ":</td> \
+            <td> \
+              <select name='f_rules'> \
+                <option value='none'" + selected(f_rules == "none") + ">" + HTMLArea._lc("No rules", "TableOperations") + "</option> \
+                <option value='rows'" + selected(f_rules == "rows") + ">" + HTMLArea._lc("Rules will appear between rows only", "TableOperations") + "</option> \
+                <option value='cols'" + selected(f_rules == "cols") + ">" + HTMLArea._lc("Rules will appear between columns only", "TableOperations") + "</option> \
+                <option value='all'" + selected(f_rules == "all") + ">" + HTMLArea._lc("Rules will appear between all rows and columns", "TableOperations") + "</option> \
+              </select> \
+            </td> \
+          </tr> \
+        </table> \
+      </fieldset> \
+    </td> \
+  </tr> \
+  <tr> \
+    <td id='--HA-style'></td> \
+  </tr> \
+</table> \
+";
+		var st_prop = TableOperations.createStyleFieldset(dialog.doc, dialog.editor, table);
+		var p = dialog.doc.getElementById("--HA-style");
+		p.appendChild(st_prop);
+		var st_layout = TableOperations.createStyleLayoutFieldset(dialog.doc, dialog.editor, table);
+		p = dialog.doc.getElementById("--HA-layout");
+		p.appendChild(st_layout);
+		dialog.modal = true;
+		dialog.addButtons("OK", "Cancel");
+		dialog.showAtElement(dialog.editor._iframe, "c");
+	});
+};
+
+// this function requires the file PopupDiv/PopupWin to be loaded from browser
+TableOperations.prototype.dialogRowCellProperties = function(cell) {
+	// retrieve existing values
+	var element = this.getClosest(cell ? "td" : "tr");
+	var table = this.getClosest("table");
+	// this.editor.selectNodeContents(element);
+	// this.editor.updateToolbar();
+
+	var dialog = new PopupWin(this.editor, cell ? HTMLArea._lc("Cell Properties", "TableOperations") : HTMLArea._lc("Row Properties", "TableOperations"), function(dialog, params) {
+		TableOperations.processStyle(params, element);
+		for (var i in params) {
+      if(typeof params[i] == 'function') continue;
+			var val = params[i];
+			switch (i) {
+			    case "f_align":
+				element.align = val;
+				break;
+			    case "f_char":
+				element.ch = val;
+				break;
+			    case "f_valign":
+				element.vAlign = val;
+				break;
+			}
+		}
+		// various workarounds to refresh the table display (Gecko,
+		// what's going on?! do not disappoint me!)
+		dialog.editor.forceRedraw();
+		dialog.editor.focusEditor();
+		dialog.editor.updateToolbar();
+		var save_collapse = table.style.borderCollapse;
+		table.style.borderCollapse = "collapse";
+		table.style.borderCollapse = "separate";
+		table.style.borderCollapse = save_collapse;
+	},
+
+	// this function gets called when the dialog needs to be initialized
+	function (dialog) {
+
+		var f_align = element.align;
+		var f_valign = element.vAlign;
+		var f_char = element.ch;
+
+		function selected(val) {
+			return val ? " selected" : "";
+		}
+
+		// dialog contents
+		dialog.content.style.width = "400px";
+		dialog.content.innerHTML = " \
+<div class='title'>" + HTMLArea._lc(cell ? "Cell Properties" : "Row Properties", "TableOperations") + "</div> \
+<table style='width:100%'> \
+  <tr> \
+    <td id='--HA-layout'> \
+"+//      <fieldset><legend>" + HTMLArea._lc("Layout", "TableOperations") + "</legend> \
+//        <table style='width:100%'> \
+//         <tr> \
+//           <td class='label'>" + HTMLArea._lc("Align", "TableOperations") + ":</td> \
+//           <td> \
+//             <select name='f_align'> \
+//               <option value='left'" + selected(f_align == "left") + ">" + HTMLArea._lc("Left", "TableOperations") + "</option> \
+//               <option value='center'" + selected(f_align == "center") + ">" + HTMLArea._lc("Center", "TableOperations") + "</option> \
+//               <option value='right'" + selected(f_align == "right") + ">" + HTMLArea._lc("Right", "TableOperations") + "</option> \
+//               <option value='char'" + selected(f_align == "char") + ">" + HTMLArea._lc("Char", "TableOperations") + "</option> \
+//             </select> \
+//             &nbsp;&nbsp;" + HTMLArea._lc("Char", "TableOperations") + ": \
+//             <input type='text' style='font-family: monospace; text-align: center' name='f_char' size='1' value='" + f_char + "' /> \
+//           </td> \
+//         </tr><tr> \
+//           <td class='label'>" + HTMLArea._lc("Vertical align", "TableOperations") + ":</td> \
+//           <td> \
+//             <select name='f_valign'> \
+//               <option value='top'" + selected(f_valign == "top") + ">" + HTMLArea._lc("Top", "TableOperations") + "</option> \
+//               <option value='middle'" + selected(f_valign == "middle") + ">" + HTMLArea._lc("Middle", "TableOperations") + "</option> \
+//               <option value='bottom'" + selected(f_valign == "bottom") + ">" + HTMLArea._lc("Bottom", "TableOperations") + "</option> \
+//               <option value='baseline'" + selected(f_valign == "baseline") + ">" + HTMLArea._lc("Baseline", "TableOperations") + "</option> \
+//             </select> \
+//           </td> \
+//         </tr> \
+//        </table> \
+//       </fieldset> \
+"    </td> \
+  </tr> \
+  <tr> \
+    <td id='--HA-style'></td> \
+  </tr> \
+</table> \
+";
+		var st_prop = TableOperations.createStyleFieldset(dialog.doc, dialog.editor, element);
+		var p = dialog.doc.getElementById("--HA-style");
+		p.appendChild(st_prop);
+		var st_layout = TableOperations.createStyleLayoutFieldset(dialog.doc, dialog.editor, element);
+		p = dialog.doc.getElementById("--HA-layout");
+		p.appendChild(st_layout);
+		dialog.modal = true;
+		dialog.addButtons("OK", "Cancel");
+		dialog.showAtElement(dialog.editor._iframe, "c");
+	});
+};
+
+// this function gets called when some button from the TableOperations toolbar
+// was pressed.
+TableOperations.prototype.buttonPress = function(editor, button_id) {
+	this.editor = editor;
+	var mozbr = HTMLArea.is_gecko ? "<br />" : "";
+
+	// helper function that clears the content in a table row
+	function clearRow(tr) {
+		var tds = tr.getElementsByTagName("td");
+		for (var i = tds.length; --i >= 0;) {
+			var td = tds[i];
+			td.rowSpan = 1;
+			td.innerHTML = mozbr;
+		}
+	}
+
+	function splitRow(td) {
+		var n = parseInt("" + td.rowSpan);
+		var nc = parseInt("" + td.colSpan);
+		td.rowSpan = 1;
+		tr = td.parentNode;
+		var itr = tr.rowIndex;
+		var trs = tr.parentNode.rows;
+		var index = td.cellIndex;
+		while (--n > 0) {
+			tr = trs[++itr];
+			var otd = editor._doc.createElement("td");
+			otd.colSpan = td.colSpan;
+			otd.innerHTML = mozbr;
+			tr.insertBefore(otd, tr.cells[index]);
+		}
+		editor.forceRedraw();
+		editor.updateToolbar();
+	}
+
+	function splitCol(td) {
+		var nc = parseInt("" + td.colSpan);
+		td.colSpan = 1;
+		tr = td.parentNode;
+		var ref = td.nextSibling;
+		while (--nc > 0) {
+			var otd = editor._doc.createElement("td");
+			otd.rowSpan = td.rowSpan;
+			otd.innerHTML = mozbr;
+			tr.insertBefore(otd, ref);
+		}
+		editor.forceRedraw();
+		editor.updateToolbar();
+	}
+
+	function splitCell(td) {
+		var nc = parseInt("" + td.colSpan);
+		splitCol(td);
+		var items = td.parentNode.cells;
+		var index = td.cellIndex;
+		while (nc-- > 0) {
+			splitRow(items[index++]);
+		}
+	}
+
+	function selectNextNode(el) {
+		var node = el.nextSibling;
+		while (node && node.nodeType != 1) {
+			node = node.nextSibling;
+		}
+		if (!node) {
+			node = el.previousSibling;
+			while (node && node.nodeType != 1) {
+				node = node.previousSibling;
+			}
+		}
+		if (!node) {
+			node = el.parentNode;
+		}
+		editor.selectNodeContents(node);
+	}
+
+	switch (button_id) {
+		// ROWS
+
+	    case "TO-row-insert-above":
+	    case "TO-row-insert-under":
+		var tr = this.getClosest("tr");
+		if (!tr) {
+			break;
+		}
+		var otr = tr.cloneNode(true);
+		clearRow(otr);
+		tr.parentNode.insertBefore(otr, /under/.test(button_id) ? tr.nextSibling : tr);
+		editor.forceRedraw();
+		editor.focusEditor();
+		break;
+	    case "TO-row-delete":
+		var tr = this.getClosest("tr");
+		if (!tr) {
+			break;
+		}
+		var par = tr.parentNode;
+		if (par.rows.length == 1) {
+			alert(HTMLArea._lc("HTMLArea cowardly refuses to delete the last row in table.", "TableOperations"));
+			break;
+		}
+		// set the caret first to a position that doesn't
+		// disappear.
+		selectNextNode(tr);
+		par.removeChild(tr);
+		editor.forceRedraw();
+		editor.focusEditor();
+		editor.updateToolbar();
+		break;
+	    case "TO-row-split":
+		var td = this.getClosest("td");
+		if (!td) {
+			break;
+		}
+		splitRow(td);
+		break;
+
+		// COLUMNS
+
+	    case "TO-col-insert-before":
+	    case "TO-col-insert-after":
+		var td = this.getClosest("td");
+		if (!td) {
+			break;
+		}
+		var rows = td.parentNode.parentNode.rows;
+		var index = td.cellIndex;
+    var lastColumn = (td.parentNode.cells.length == index + 1);
+		for (var i = rows.length; --i >= 0;) {
+			var tr = rows[i];			
+			var otd = editor._doc.createElement("td");
+			otd.innerHTML = mozbr;
+      if (lastColumn && HTMLArea.is_ie) 
+      {
+        tr.insertBefore(otd);
+      } 
+      else 
+      {
+        var ref = tr.cells[index + (/after/.test(button_id) ? 1 : 0)];
+        tr.insertBefore(otd, ref);
+      }
+		}
+		editor.focusEditor();
+		break;
+	    case "TO-col-split":
+		var td = this.getClosest("td");
+		if (!td) {
+			break;
+		}
+		splitCol(td);
+		break;
+	    case "TO-col-delete":
+		var td = this.getClosest("td");
+		if (!td) {
+			break;
+		}
+		var index = td.cellIndex;
+		if (td.parentNode.cells.length == 1) {
+			alert(HTMLArea._lc("HTMLArea cowardly refuses to delete the last column in table.", "TableOperations"));
+			break;
+		}
+		// set the caret first to a position that doesn't disappear
+		selectNextNode(td);
+		var rows = td.parentNode.parentNode.rows;
+		for (var i = rows.length; --i >= 0;) {
+			var tr = rows[i];
+			tr.removeChild(tr.cells[index]);
+		}
+		editor.forceRedraw();
+		editor.focusEditor();
+		editor.updateToolbar();
+		break;
+
+		// CELLS
+
+	    case "TO-cell-split":
+		var td = this.getClosest("td");
+		if (!td) {
+			break;
+		}
+		splitCell(td);
+		break;
+	    case "TO-cell-insert-before":
+	    case "TO-cell-insert-after":
+		var td = this.getClosest("td");
+		if (!td) {
+			break;
+		}
+		var tr = td.parentNode;
+		var otd = editor._doc.createElement("td");
+		otd.innerHTML = mozbr;
+		tr.insertBefore(otd, /after/.test(button_id) ? td.nextSibling : td);
+		editor.forceRedraw();
+		editor.focusEditor();
+		break;
+	    case "TO-cell-delete":
+		var td = this.getClosest("td");
+		if (!td) {
+			break;
+		}
+		if (td.parentNode.cells.length == 1) {
+			alert(HTMLArea._lc("HTMLArea cowardly refuses to delete the last cell in row.", "TableOperations"));
+			break;
+		}
+		// set the caret first to a position that doesn't disappear
+		selectNextNode(td);
+		td.parentNode.removeChild(td);
+		editor.forceRedraw();
+		editor.updateToolbar();
+		break;
+	    case "TO-cell-merge":
+		// !! FIXME: Mozilla specific !!
+		var sel = editor._getSelection();
+		var range, i = 0;
+		var rows = [];
+		var row = null;
+		var cells = null;
+		if (!HTMLArea.is_ie) {
+			try {
+				while (range = sel.getRangeAt(i++)) {
+					var td = range.startContainer.childNodes[range.startOffset];
+					if (td.parentNode != row) {
+						row = td.parentNode;
+						(cells) && rows.push(cells);
+						cells = [];
+					}
+					cells.push(td);
+				}
+			} catch(e) {/* finished walking through selection */}
+			rows.push(cells);
+		} else {
+			// Internet Explorer "browser"
+			var td = this.getClosest("td");
+			if (!td) {
+				alert(HTMLArea._lc("Please click into some cell", "TableOperations"));
+				break;
+			}
+			var tr = td.parentElement;
+			var no_cols = prompt(HTMLArea._lc("How many columns would you like to merge?", "TableOperations"), 2);
+			if (!no_cols) {
+				// cancelled
+				break;
+			}
+			var no_rows = prompt(HTMLArea._lc("How many rows would you like to merge?", "TableOperations"), 2);
+			if (!no_rows) {
+				// cancelled
+				break;
+			}
+			var cell_index = td.cellIndex;
+			while (no_rows-- > 0) {
+				td = tr.cells[cell_index];
+				cells = [td];
+				for (var i = 1; i < no_cols; ++i) {
+					td = td.nextSibling;
+					if (!td) {
+						break;
+					}
+					cells.push(td);
+				}
+				rows.push(cells);
+				tr = tr.nextSibling;
+				if (!tr) {
+					break;
+				}
+			}
+		}
+		var HTML = "";
+		for (i = 0; i < rows.length; ++i) {
+			// i && (HTML += "<br />");
+			var cells = rows[i];
+			for (var j = 0; j < cells.length; ++j) {
+				// j && (HTML += "&nbsp;");
+				var cell = cells[j];
+				HTML += cell.innerHTML;
+				(i || j) && (cell.parentNode.removeChild(cell));
+			}
+		}
+		var td = rows[0][0];
+		td.innerHTML = HTML;
+		td.rowSpan = rows.length;
+		td.colSpan = rows[0].length;
+		editor.selectNodeContents(td);
+		editor.forceRedraw();
+		editor.focusEditor();
+		break;
+
+		// PROPERTIES
+
+	    case "TO-table-prop":
+		this.dialogTableProperties();
+		break;
+
+	    case "TO-row-prop":
+		this.dialogRowCellProperties(false);
+		break;
+
+	    case "TO-cell-prop":
+		this.dialogRowCellProperties(true);
+		break;
+
+	    default:
+		alert("Button [" + button_id + "] not yet implemented");
+	}
+};
+
+// the list of buttons added by this plugin
+TableOperations.btnList = [
+	// table properties button
+    ["table-prop",       "table", "Table properties"],
+	null,			// separator
+
+	// ROWS
+	["row-prop",         "tr", "Row properties"],
+	["row-insert-above", "tr", "Insert row before"],
+	["row-insert-under", "tr", "Insert row after"],
+	["row-delete",       "tr", "Delete row"],
+	["row-split",        "td[rowSpan!=1]", "Split row"],
+	null,
+
+	// COLS
+	["col-insert-before", "td", "Insert column before"],
+	["col-insert-after",  "td", "Insert column after"],
+	["col-delete",        "td", "Delete column"],
+	["col-split",         "td[colSpan!=1]", "Split column"],
+	null,
+
+	// CELLS
+	["cell-prop",          "td", "Cell properties"],
+	["cell-insert-before", "td", "Insert cell before"],
+	["cell-insert-after",  "td", "Insert cell after"],
+	["cell-delete",        "td", "Delete cell"],
+	["cell-merge",         "tr", "Merge cells"],
+	["cell-split",         "td[colSpan!=1,rowSpan!=1]", "Split cell"]
+	];
+
+
+
+//// GENERIC CODE [style of any element; this should be moved into a separate
+//// file as it'll be very useful]
+//// BEGIN GENERIC CODE -----------------------------------------------------
+
+TableOperations.getLength = function(value) {
+	var len = parseInt(value);
+	if (isNaN(len)) {
+		len = "";
+	}
+	return len;
+};
+
+// Applies the style found in "params" to the given element.
+TableOperations.processStyle = function(params, element) {
+	var style = element.style;
+	for (var i in params) {
+    if(typeof params[i] == 'function') continue;
+		var val = params[i];
+		switch (i) {
+		    case "f_st_backgroundColor":
+			style.backgroundColor = val;
+			break;
+		    case "f_st_color":
+			style.color = val;
+			break;
+		    case "f_st_backgroundImage":
+			if (/\S/.test(val)) {
+				style.backgroundImage = "url(" + val + ")";
+			} else {
+				style.backgroundImage = "none";
+			}
+			break;
+		    case "f_st_borderWidth":
+			style.borderWidth = val;
+			break;
+		    case "f_st_borderStyle":
+			style.borderStyle = val;
+			break;
+		    case "f_st_borderColor":
+			style.borderColor = val;
+			break;
+		    case "f_st_borderCollapse":
+			style.borderCollapse = val ? "collapse" : "";
+			break;
+		    case "f_st_width":
+			if (/\S/.test(val)) {
+				style.width = val + params["f_st_widthUnit"];
+			} else {
+				style.width = "";
+			}
+			break;
+		    case "f_st_height":
+			if (/\S/.test(val)) {
+				style.height = val + params["f_st_heightUnit"];
+			} else {
+				style.height = "";
+			}
+			break;
+		    case "f_st_textAlign":
+			if (val == "char") {
+				var ch = params["f_st_textAlignChar"];
+				if (ch == '"') {
+					ch = '\\"';
+				}
+				style.textAlign = '"' + ch + '"';
+			} else if (val == "-") {
+			    style.textAlign = "";
+			} else {
+				style.textAlign = val;
+			}
+			break;
+		    case "f_st_verticalAlign":
+		    element.vAlign = "";
+			if (val == "-") {
+			    style.verticalAlign = "";
+			    
+		    } else {
+			    style.verticalAlign = val;
+			}
+			break;
+		    case "f_st_float":
+			style.cssFloat = val;
+			break;
+// 		    case "f_st_margin":
+// 			style.margin = val + "px";
+// 			break;
+// 		    case "f_st_padding":
+// 			style.padding = val + "px";
+// 			break;
+		}
+	}
+};
+
+// Returns an HTML element for a widget that allows color selection.  That is,
+// a button that contains the given color, if any, and when pressed will popup
+// the sooner-or-later-to-be-rewritten select_color.html dialog allowing user
+// to select some color.  If a color is selected, an input field with the name
+// "f_st_"+name will be updated with the color value in #123456 format.
+TableOperations.createColorButton = function(doc, editor, color, name) {
+	if (!color) {
+		color = "";
+	} else if (!/#/.test(color)) {
+		color = HTMLArea._colorToRgb(color);
+	}
+
+	var df = doc.createElement("span");
+ 	var field = doc.createElement("input");
+	field.type = "hidden";
+	df.appendChild(field);
+ 	field.name = "f_st_" + name;
+	field.value = color;
+	var button = doc.createElement("span");
+	button.className = "buttonColor";
+	df.appendChild(button);
+	var span = doc.createElement("span");
+	span.className = "chooser";
+	// span.innerHTML = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
+	span.style.backgroundColor = color;
+	button.appendChild(span);
+	button.onmouseover = function() { if (!this.disabled) { this.className += " buttonColor-hilite"; }};
+	button.onmouseout = function() { if (!this.disabled) { this.className = "buttonColor"; }};
+	span.onclick = function() {
+		if (this.parentNode.disabled) {
+			return false;
+		}
+		editor._popupDialog("select_color.html", function(color) {
+			if (color) {
+				span.style.backgroundColor = "#" + color;
+				field.value = "#" + color;
+			}
+		}, color);
+	};
+	var span2 = doc.createElement("span");
+	span2.innerHTML = "&#x00d7;";
+	span2.className = "nocolor";
+	span2.title = HTMLArea._lc("Unset color", "TableOperations");
+	button.appendChild(span2);
+	span2.onmouseover = function() { if (!this.parentNode.disabled) { this.className += " nocolor-hilite"; }};
+	span2.onmouseout = function() { if (!this.parentNode.disabled) { this.className = "nocolor"; }};
+	span2.onclick = function() {
+		span.style.backgroundColor = "";
+		field.value = "";
+	};
+	return df;
+};
+
+TableOperations.createStyleLayoutFieldset = function(doc, editor, el) {
+	var fieldset = doc.createElement("fieldset");
+	var legend = doc.createElement("legend");
+	fieldset.appendChild(legend);
+	legend.innerHTML = HTMLArea._lc("Layout", "TableOperations");
+	var table = doc.createElement("table");
+	fieldset.appendChild(table);
+	table.style.width = "100%";
+	var tbody = doc.createElement("tbody");
+	table.appendChild(tbody);
+
+	var tagname = el.tagName.toLowerCase();
+	var tr, td, input, select, option, options, i;
+
+	if (tagname != "td" && tagname != "tr" && tagname != "th") {
+		tr = doc.createElement("tr");
+		tbody.appendChild(tr);
+		td = doc.createElement("td");
+		td.className = "label";
+		tr.appendChild(td);
+		td.innerHTML = HTMLArea._lc("Float", "TableOperations") + ":";
+		td = doc.createElement("td");
+		tr.appendChild(td);
+		select = doc.createElement("select");
+		td.appendChild(select);
+		select.name = "f_st_float";
+		options = ["None", "Left", "Right"];
+		for (var i = 0; i < options.length; ++i) {
+			var Val = options[i];
+			var val = options[i].toLowerCase();
+			option = doc.createElement("option");
+			option.innerHTML = HTMLArea._lc(Val, "TableOperations");
+			option.value = val;
+			option.selected = (("" + el.style.cssFloat).toLowerCase() == val);
+			select.appendChild(option);
+		}
+	}
+
+	tr = doc.createElement("tr");
+	tbody.appendChild(tr);
+	td = doc.createElement("td");
+	td.className = "label";
+	tr.appendChild(td);
+	td.innerHTML = HTMLArea._lc("Width", "TableOperations") + ":";
+	td = doc.createElement("td");
+	tr.appendChild(td);
+	input = doc.createElement("input");
+	input.type = "text";
+	input.value = TableOperations.getLength(el.style.width);
+	input.size = "5";
+	input.name = "f_st_width";
+	input.style.marginRight = "0.5em";
+	td.appendChild(input);
+	select = doc.createElement("select");
+	select.name = "f_st_widthUnit";
+	option = doc.createElement("option");
+	option.innerHTML = HTMLArea._lc("percent", "TableOperations");
+	option.value = "%";
+	option.selected = /%/.test(el.style.width);
+	select.appendChild(option);
+	option = doc.createElement("option");
+	option.innerHTML = HTMLArea._lc("pixels", "TableOperations");
+	option.value = "px";
+	option.selected = /px/.test(el.style.width);
+	select.appendChild(option);
+	td.appendChild(select);
+
+	select.style.marginRight = "0.5em";
+	td.appendChild(doc.createTextNode(HTMLArea._lc("Text align", "TableOperations") + ":"));
+	select = doc.createElement("select");
+	select.style.marginLeft = select.style.marginRight = "0.5em";
+	td.appendChild(select);
+	select.name = "f_st_textAlign";
+	options = ["Left", "Center", "Right", "Justify", "-"];
+	if (tagname == "td") {
+		options.push("Char");
+	}
+	input = doc.createElement("input");
+	input.name = "f_st_textAlignChar";
+	input.size = "1";
+	input.style.fontFamily = "monospace";
+	td.appendChild(input);
+	for (var i = 0; i < options.length; ++i) {
+		var Val = options[i];
+		var val = Val.toLowerCase();
+		option = doc.createElement("option");
+		option.value = val;
+		option.innerHTML = HTMLArea._lc(Val, "TableOperations");
+		option.selected = ((el.style.textAlign.toLowerCase() == val) || (el.style.textAlign == "" && Val == "-"));
+		select.appendChild(option);
+	}
+	function setCharVisibility(value) {
+		input.style.visibility = value ? "visible" : "hidden";
+		if (value) {
+			input.focus();
+			input.select();
+		}
+	}
+	select.onchange = function() { setCharVisibility(this.value == "char"); };
+	setCharVisibility(select.value == "char");
+
+	tr = doc.createElement("tr");
+	tbody.appendChild(tr);
+	td = doc.createElement("td");
+	td.className = "label";
+	tr.appendChild(td);
+	td.innerHTML = HTMLArea._lc("Height", "TableOperations") + ":";
+	td = doc.createElement("td");
+	tr.appendChild(td);
+	input = doc.createElement("input");
+	input.type = "text";
+	input.value = TableOperations.getLength(el.style.height);
+	input.size = "5";
+	input.name = "f_st_height";
+	input.style.marginRight = "0.5em";
+	td.appendChild(input);
+	select = doc.createElement("select");
+	select.name = "f_st_heightUnit";
+	option = doc.createElement("option");
+	option.innerHTML = HTMLArea._lc("percent", "TableOperations");
+	option.value = "%";
+	option.selected = /%/.test(el.style.height);
+	select.appendChild(option);
+	option = doc.createElement("option");
+	option.innerHTML = HTMLArea._lc("pixels", "TableOperations");
+	option.value = "px";
+	option.selected = /px/.test(el.style.height);
+	select.appendChild(option);
+	td.appendChild(select);
+
+	select.style.marginRight = "0.5em";
+	td.appendChild(doc.createTextNode(HTMLArea._lc("Vertical align", "TableOperations") + ":"));
+	select = doc.createElement("select");
+	select.name = "f_st_verticalAlign";
+	select.style.marginLeft = "0.5em";
+	td.appendChild(select);
+	options = ["Top", "Middle", "Bottom", "Baseline", "-"];
+	for (var i = 0; i < options.length; ++i) {
+		var Val = options[i];
+		var val = Val.toLowerCase();
+		option = doc.createElement("option");
+		option.value = val;
+		option.innerHTML = HTMLArea._lc(Val, "TableOperations");
+		option.selected = ((el.style.verticalAlign.toLowerCase() == val) || (el.style.verticalAlign == "" && Val == "-"));
+		select.appendChild(option);
+	}
+
+	return fieldset;
+};
+
+// Returns an HTML element containing the style attributes for the given
+// element.  This can be easily embedded into any dialog; the functionality is
+// also provided.
+TableOperations.createStyleFieldset = function(doc, editor, el) {
+	var fieldset = doc.createElement("fieldset");
+	var legend = doc.createElement("legend");
+	fieldset.appendChild(legend);
+	legend.innerHTML = HTMLArea._lc("CSS Style", "TableOperations");
+	var table = doc.createElement("table");
+	fieldset.appendChild(table);
+	table.style.width = "100%";
+	var tbody = doc.createElement("tbody");
+	table.appendChild(tbody);
+
+	var tr, td, input, select, option, options, i;
+
+	tr = doc.createElement("tr");
+	tbody.appendChild(tr);
+	td = doc.createElement("td");
+	tr.appendChild(td);
+	td.className = "label";
+	td.innerHTML = HTMLArea._lc("Background", "TableOperations") + ":";
+	td = doc.createElement("td");
+	tr.appendChild(td);
+	var df = TableOperations.createColorButton(doc, editor, el.style.backgroundColor, "backgroundColor");
+	df.firstChild.nextSibling.style.marginRight = "0.5em";
+	td.appendChild(df);
+	td.appendChild(doc.createTextNode(HTMLArea._lc("Image URL", "TableOperations") + ": "));
+	input = doc.createElement("input");
+	input.type = "text";
+	input.name = "f_st_backgroundImage";
+	if (el.style.backgroundImage.match(/url\(\s*(.*?)\s*\)/)) {
+		input.value = RegExp.$1;
+	}
+	// input.style.width = "100%";
+	td.appendChild(input);
+
+	tr = doc.createElement("tr");
+	tbody.appendChild(tr);
+	td = doc.createElement("td");
+	tr.appendChild(td);
+	td.className = "label";
+	td.innerHTML = HTMLArea._lc("FG Color", "TableOperations") + ":";
+	td = doc.createElement("td");
+	tr.appendChild(td);
+	td.appendChild(TableOperations.createColorButton(doc, editor, el.style.color, "color"));
+
+	// for better alignment we include an invisible field.
+	input = doc.createElement("input");
+	input.style.visibility = "hidden";
+	input.type = "text";
+	td.appendChild(input);
+
+	tr = doc.createElement("tr");
+	tbody.appendChild(tr);
+	td = doc.createElement("td");
+	tr.appendChild(td);
+	td.className = "label";
+	td.innerHTML = HTMLArea._lc("Border", "TableOperations") + ":";
+	td = doc.createElement("td");
+	tr.appendChild(td);
+
+	var colorButton = TableOperations.createColorButton(doc, editor, el.style.borderColor, "borderColor");
+	var btn = colorButton.firstChild.nextSibling;
+	td.appendChild(colorButton);
+	// borderFields.push(btn);
+	btn.style.marginRight = "0.5em";
+
+	select = doc.createElement("select");
+	var borderFields = [];
+	td.appendChild(select);
+	select.name = "f_st_borderStyle";
+	options = ["none", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"];
+	var currentBorderStyle = el.style.borderStyle;
+	// Gecko reports "solid solid solid solid" for "border-style: solid".
+	// That is, "top right bottom left" -- we only consider the first
+	// value.
+	(currentBorderStyle.match(/([^\s]*)\s/)) && (currentBorderStyle = RegExp.$1);
+	for (var i in options) {
+    if(typeof options[i] == 'function') continue;
+		var val = options[i];
+		option = doc.createElement("option");
+		option.value = val;
+		option.innerHTML = val;
+		(val == currentBorderStyle) && (option.selected = true);
+		select.appendChild(option);
+	}
+	select.style.marginRight = "0.5em";
+	function setBorderFieldsStatus(value) {
+		for (var i = 0; i < borderFields.length; ++i) {
+			var el = borderFields[i];
+			el.style.visibility = value ? "hidden" : "visible";
+			if (!value && (el.tagName.toLowerCase() == "input")) {
+				el.focus();
+				el.select();
+			}
+		}
+	}
+	select.onchange = function() { setBorderFieldsStatus(this.value == "none"); };
+
+	input = doc.createElement("input");
+	borderFields.push(input);
+	input.type = "text";
+	input.name = "f_st_borderWidth";
+	input.value = TableOperations.getLength(el.style.borderWidth);
+	input.size = "5";
+	td.appendChild(input);
+	input.style.marginRight = "0.5em";
+	var span = doc.createElement("span");
+	span.innerHTML = HTMLArea._lc("pixels", "TableOperations");
+	td.appendChild(span);
+	borderFields.push(span);
+
+	setBorderFieldsStatus(select.value == "none");
+
+	if (el.tagName.toLowerCase() == "table") {
+		// the border-collapse style is only for tables
+		tr = doc.createElement("tr");
+		tbody.appendChild(tr);
+		td = doc.createElement("td");
+		td.className = "label";
+		tr.appendChild(td);
+		input = doc.createElement("input");
+		input.type = "checkbox";
+		input.name = "f_st_borderCollapse";
+		input.id = "f_st_borderCollapse";
+		var val = (/collapse/i.test(el.style.borderCollapse));
+		input.checked = val ? 1 : 0;
+		td.appendChild(input);
+
+		td = doc.createElement("td");
+		tr.appendChild(td);
+		var label = doc.createElement("label");
+		label.htmlFor = "f_st_borderCollapse";
+		label.innerHTML = HTMLArea._lc("Collapsed borders", "TableOperations");
+		td.appendChild(label);
+	}
+
+// 	tr = doc.createElement("tr");
+// 	tbody.appendChild(tr);
+// 	td = doc.createElement("td");
+// 	td.className = "label";
+// 	tr.appendChild(td);
+// 	td.innerHTML = HTMLArea._lc("Margin", "TableOperations") + ":";
+// 	td = doc.createElement("td");
+// 	tr.appendChild(td);
+// 	input = doc.createElement("input");
+// 	input.type = "text";
+// 	input.size = "5";
+// 	input.name = "f_st_margin";
+// 	td.appendChild(input);
+// 	input.style.marginRight = "0.5em";
+// 	td.appendChild(doc.createTextNode(HTMLArea._lc("Padding", "TableOperations") + ":"));
+
+// 	input = doc.createElement("input");
+// 	input.type = "text";
+// 	input.size = "5";
+// 	input.name = "f_st_padding";
+// 	td.appendChild(input);
+// 	input.style.marginLeft = "0.5em";
+// 	input.style.marginRight = "0.5em";
+// 	td.appendChild(doc.createTextNode(HTMLArea._lc("pixels", "TableOperations")));
+
+	return fieldset;
+};
+
+//// END GENERIC CODE -------------------------------------------------------
\ No newline at end of file

Added: incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/img/ed_template.gif
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/img/ed_template.gif?view=auto&rev=454197
==============================================================================
Binary file - no diff available.

Propchange: incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/img/ed_template.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/img/layout_01.gif
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/img/layout_01.gif?view=auto&rev=454197
==============================================================================
Binary file - no diff available.

Propchange: incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/img/layout_01.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/img/layout_02.gif
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/img/layout_02.gif?view=auto&rev=454197
==============================================================================
Binary file - no diff available.

Propchange: incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/img/layout_02.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/img/layout_03.gif
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/img/layout_03.gif?view=auto&rev=454197
==============================================================================
Binary file - no diff available.

Propchange: incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/img/layout_03.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/lang/de.js
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/lang/de.js?view=auto&rev=454197
==============================================================================
--- incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/lang/de.js (added)
+++ incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/lang/de.js Sun Oct  8 12:53:13 2006
@@ -0,0 +1,7 @@
+// I18N constants
+// LANG: "de", ENCODING: UTF-8 | ISO-8859-1
+// Author: Udo Schmal (gocher), http://www.schaffrath-neuemedien.de/, udo.schmal@t-online.de
+{
+	"Insert template"          : "Template einfügen",
+	"Cancel"                   : "Abbrechen"
+};
\ No newline at end of file

Added: incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/lang/fr.js
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/lang/fr.js?view=auto&rev=454197
==============================================================================
--- incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/lang/fr.js (added)
+++ incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/lang/fr.js Sun Oct  8 12:53:13 2006
@@ -0,0 +1,6 @@
+// I18N constants
+// LANG: "fr", ENCODING: UTF-8
+{
+  "Insert template": "Insérer un template",
+  "Cancel": "Annulation"
+};
\ No newline at end of file

Added: incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/lang/it.js
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/lang/it.js?view=auto&rev=454197
==============================================================================
--- incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/lang/it.js (added)
+++ incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/lang/it.js Sun Oct  8 12:53:13 2006
@@ -0,0 +1,6 @@
+// I18N constants
+// LANG: "it", ENCODING: UTF-8 | ISO-8859-1
+{
+	"Insert template"           : "Inserisca il template",
+	"Cancel"                    : "Annullamento"
+};
\ No newline at end of file

Added: incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/lang/nb.js
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/lang/nb.js?view=auto&rev=454197
==============================================================================
--- incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/lang/nb.js (added)
+++ incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/lang/nb.js Sun Oct  8 12:53:13 2006
@@ -0,0 +1,7 @@
+// I18N constants
+// LANG: "nb", ENCODING: UTF-8
+// translated: Kim Steinhaug, http://www.steinhaug.com/, kim@steinhaug.com
+{
+  "Insert template": "Sett inn template",
+  "Cancel": "Avbryt"
+};
\ No newline at end of file

Added: incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/lang/no.js
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/lang/no.js?view=auto&rev=454197
==============================================================================
--- incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/lang/no.js (added)
+++ incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/lang/no.js Sun Oct  8 12:53:13 2006
@@ -0,0 +1,7 @@
+// I18N constants
+// LANG: "no", ENCODING: UTF-8
+// translated: Kim Steinhaug, http://www.steinhaug.com/, kim@steinhaug.com
+{
+  "Insert template": "Sett inn template",
+  "Cancel": "Avbryt"
+};
\ No newline at end of file

Added: incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/popups/template.html
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/popups/template.html?view=auto&rev=454197
==============================================================================
--- incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/popups/template.html (added)
+++ incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/popups/template.html Sun Oct  8 12:53:13 2006
@@ -0,0 +1,52 @@
+<html>
+<head>
+<title>Insert template</title>
+  <link rel="stylesheet" type="text/css" href="../../../popups/popup.css" />
+  <script type="text/javascript" src="../../../popups/popup.js"></script>
+
+<script type="text/javascript">
+function Init() {
+  __dlg_translate("Template");
+  __dlg_init();
+  window.resizeTo(400, 200);
+  document.getElementById("cancel").focus();
+}
+
+function onOK(sel) {
+  // pass data back to the calling window
+  var param = new Object();
+  param["templ"] = sel;
+  __dlg_close(param);
+  return false;
+}
+
+function onCancel() {
+  __dlg_close(null);
+  return false;
+}
+</script>
+</head>
+
+<body class="dialog" onload="Init()">
+<div class="title">Insert template</div>
+<form>
+  <table border="0" cellspacing="0" cellpadding="5">
+	<tr>
+    <td align="center" valign="top"><a href="javascript:;" onClick="onOK('1');">
+      <img src="../img/layout_01.gif" alt="" width="106" height="68" border="0" /></a>
+    </td>
+    <td align="center" valign="top"><a href="javascript:;" onClick="onOK('2');">
+      <img src="../img/layout_02.gif" alt="" width="106" height="68" border="0" /></a>
+    </td>  
+	  <td align="center" valign="top"><a href="javascript:;" onClick="onOK('3');">
+	    <img src="../img/layout_03.gif" alt="" width="106" height="68" border="0" /></a><br/>
+    </td>
+ 	</tr>
+  </table>
+
+  <div id="buttons">
+    <button type="button" name="cancel" id="cancel" onclick="return onCancel();">Cancel</button>
+  </div>
+</form>
+</body>
+</html>
\ No newline at end of file

Added: incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/template.css
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/template.css?view=auto&rev=454197
==============================================================================
--- incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/template.css (added)
+++ incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/template.css Sun Oct  8 12:53:13 2006
@@ -0,0 +1,3 @@
+div {
+	border: 1px dotted ActiveBorder;
+}
\ No newline at end of file

Added: incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/template.js
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/template.js?view=auto&rev=454197
==============================================================================
--- incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/template.js (added)
+++ incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/Template/template.js Sun Oct  8 12:53:13 2006
@@ -0,0 +1,115 @@
+// Template plugin for HTMLArea
+// Implementation by Udo Schmal based on HTMLArea 3.0
+// Original Author - Udo Schmal www.Schaffrath-NeueMedien.de
+//
+// (c) Udo Schmal & Schaffrath NeueMedien 2004
+// Distributed under the same terms as HTMLArea itself.
+// This notice MUST stay intact for use (see license.txt).
+
+function Template(editor) {
+        this.editor = editor;
+        var cfg = editor.config;
+        var self = this;
+	
+	// register the toolbar buttons provided by this plugin
+	cfg.registerButton({
+	id       : "template",
+	tooltip  : HTMLArea._lc("Insert template","Template"),
+	image    : editor.imgURL("ed_template.gif", "Template"),
+	textMode : false,
+	action   : function(editor) {
+			self.buttonPress(editor);
+		}
+	});
+	cfg.addToolbarElement("template", "inserthorizontalrule", 1);
+}
+
+Template._pluginInfo = {
+	name          : "Template",
+	version       : "1.0",
+	developer     : "Udo Schmal",
+	developer_url : "http://www.schaffrath-neuemedien.de/",
+	c_owner       : "Udo Schmal & Schaffrath NeueMedien",
+	license       : "htmlArea"
+};
+
+Template.prototype.onGenerate = function() {
+  var style_id = "Template-style"
+  var style = this.editor._doc.getElementById(style_id);
+  if (style == null) {
+    style = this.editor._doc.createElement("link");
+    style.id = style_id;
+    style.rel = 'stylesheet';
+    style.href = _editor_url + 'plugins/Template/template.css';
+    this.editor._doc.getElementsByTagName("HEAD")[0].appendChild(style);
+  }
+};
+
+Template.prototype.buttonPress = function(editor) {
+  editor._popupDialog( "plugin://Template/template", function( obj ) {
+    if ( !obj ) {//user must have pressed Cancel
+      return false;
+    }
+
+    var bodys = editor._doc.getElementsByTagName("body");
+    var body = bodys[0];
+
+  function getElement(x) {
+    var result = editor._doc.getElementById(x);
+    if (!result) {
+      result = editor._doc.createElement("div");
+      result.id = x;
+      result.innerHTML = x;
+      body.appendChild(result);
+    }
+    if (result.style)
+      result.removeAttribute("style");
+    return result;
+  }
+  
+    var content = getElement("content");
+    var menu1 = getElement("menu1");
+    var menu2 = getElement("menu2");
+    var menu3 = getElement("menu3");
+    switch (obj["templ"]) {
+	    case "1": menu1.style.position = "absolute";
+                menu1.style.right = "0px";
+                menu1.style.width = "28%";
+                menu1.style.backgroundColor = "#e1ddd9";
+                menu1.style.padding = "2px 20px";
+                content.style.position = "absolute";
+                content.style.left = "0px";
+                content.style.width = "70%";
+                content.style.backgroundColor = "#fff";
+                menu2.style.visibility = "hidden";
+                menu3.style.visibility = "hidden";
+                break;
+      case "2": menu1.style.position = "absolute";
+                menu1.style.left = "0px";
+                menu1.style.width = "28%";
+                menu1.style.height = "100%";
+                menu1.style.backgroundColor = "#e1ddd9";
+                content.style.position = "absolute";
+                content.style.right = "0px";
+                content.style.width = "70%";
+                content.style.backgroundColor = "#fff";
+                menu2.style.visibility = "hidden";
+                menu3.style.visibility = "hidden";
+                break
+      case "3": menu1.style.position = "absolute";
+                menu1.style.left = "0px";
+                menu1.style.width = "28%";
+                menu1.style.backgroundColor = "#e1ddd9";
+                menu2.style.position = "absolute";
+                menu2.style.right = "0px";
+                menu2.style.width = "28%";
+                menu2.style.backgroundColor = "#e1ddd9";
+                content.style.position = "absolute";
+                content.style.right = "30%";
+                content.style.width = "60%";
+                content.style.backgroundColor = "#fff";
+                menu3.style.visibility = "hidden";
+                break
+    }
+  }, null);
+};
\ No newline at end of file

Added: incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/UnFormat/img/unformat.gif
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/roller-ui/authoring/editors/xinha/plugins/UnFormat/img/unformat.gif?view=auto&rev=454197
==============================================================================
Binary file - no diff available.