<?xml version="1.0"?> 
<!--
   - The contents of this file are subject to the Netscape Public
   - License Version 1.1 (the "License"); you may not use this file
   - except in compliance with the License. You may obtain a copy of
   - the License at http://www.mozilla.org/NPL/
   -  
   - Software distributed under the License is distributed on an "AS
   - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
   - implied. See the License for the specific language governing
   - rights and limitations under the License.
   -  
   - The Original Code is Mozilla Communicator client code, released
   - March 31, 1998.
   - 
   - The Initial Developer of the Original Code is Netscape
   - Communications Corporation. Portions created by Netscape are
   - Copyright (C) 1999 Netscape Communications Corporation. All
   - Rights Reserved.
   - 
   - Contributor(s):
  -->

<?xul-overlay href="chrome://global/content/globalOverlay.xul"?>
<?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>

<!DOCTYPE window SYSTEM "chrome://editor/locale/editorOverlay.dtd">

<?xml-stylesheet href="chrome://editor/skin/EditorToolbars.css" type="text/css"?> 

<overlay id="editorOverlay"
        xmlns:html="http://www.w3.org/1999/xhtml"
        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

<script language="JavaScript" src="chrome://editor/content/editorOverlay.js"/>
<script language="JavaScript" src="chrome://global/content/globalOverlay.js"/>
<script language="JavaScript" src="chrome://editor/content/ComposerCommands.js"/>

  <keyset id="platformOverlayKeyset" />

  <keyset id="defaultKeySet">

    <!-- defined in globalOverlay -->
    <key id="key_newNavigator"/>
    <key id="key_newBlankPage"/>

    <key id="openeditorkb"  xulkey="true" key="&fileopen.keybinding;"  shift="false" observes="cmd_open" />
    <key id="openremoteeditorkb" xulkey="true" key="&fileopenremote.keybinding;" shift="false" observes="cmd_openRemote" />
    <key id="savekb"        xulkey="true" key="&filesave.keybinding;"  shift="false" observes="cmd_save"/>
    <key id="closekb"       xulkey="true" key="&fileclose.keybinding;" shift="false" observes="cmd_close" />
    <key id="printkb"       xulkey="true" key="&fileprint.keybinding;" shift="false" observes="cmd_print" />
    <key id="exitkb"        xulkey="true" key="&fileexit.keybinding;"  shift="false" observes="cmd_quit" />

    <key id="key_undo"/>
    <key id="key_redo"/>
    <key id="key_cut"/>
    <key id="key_copy"/>
    <key id="key_paste"/>
    <key id="pastequotationkb" xulkey="true" shift="true" key="&editpaste.keybinding;" observes="cmd_pasteQuote" />
    <key id="key_delete"/>
    <key id="key_selectAll"/>
    <key id="findkb"          xulkey="true" key="&editfind.keybinding;"          shift="false" observes="cmd_find" />
    <key id="findnextkb"      xulkey="true" key="&editfindnext.keybinding;"      shift="false" observes="cmd_findNext" />
    <key id="checkspellingkb" xulkey="true" key="&editcheckspelling.keybinding;" shift="false" observes="cmd_spelling" />
    <key id="key_preferences"/>

    <key id="boldkb"        xulkey="true" key="&stylebold.keybinding;"      shift="false" observes="cmd_bold"/>
    <key id="italickb"      xulkey="true" key="&styleitalic.keybinding;"    shift="false" observes="cmd_italic"/>
    <key id="underlinekb"   xulkey="true" key="&styleunderline.keybinding;" shift="false" observes="cmd_underline"/>

    <key id="increaseindentkb" xulkey="true" key="&formatindent.keybinding;"  observes="cmd_indent" />
    <key id="decreaseindentkb" xulkey="true" key="&formatoutdent.keybinding;" observes="cmd_outdent" />

    <key id="removestyleskb"     shift="true" xulkey="true" key="&formatremovestyles.keybinding;"   observes="cmd_removeStyles" />
    <key id="decreasefontsizekb" shift="true" xulkey="true" key="&decreaseFontSize.keybinding;"     observes="cmd_decreaseFont" />
    <key id="increasefontsizekb" shift="true" xulkey="true" key="&increaseFontSize.keybinding;"     observes="cmd_increaseFont" />

  </keyset>

  <!-- commands updated when the editor gets created -->
  <commandset id="commonEditorMenuItems"
					commandupdater="true"
					events="create"
					oncommandupdate="goUpdateComposerMenuItems(this)"
  >
    <command id="cmd_open"                                          oncommand="goDoCommand('cmd_open')"/>
    <command id="cmd_openRemote"   value="&openremoteCmd.label;"    oncommand="goDoCommand('cmd_openRemote')"/>
    <command id="cmd_close"        value="&closeCmd.label;"         oncommand="goDoCommand('cmd_close')"/>

    <command id="cmd_printSetup"   value="&printSetupCmd.label;"    oncommand="goDoCommand('cmd_printSetup')"/>
    <command id="cmd_printPreview" value="&printPreviewCmd.label;"  oncommand="goDoCommand('cmd_printPreview')"/>
    <command id="cmd_print"                                         oncommand="goDoCommand('cmd_print')"/>
    <command id="cmd_print_button"                                  buttonaction="goDoCommand('cmd_print')"/>

    <command id="cmd_quit"         value="&exitCmd.label;"          oncommand="goDoCommand('cmd_quit')"/>
  </commandset>

  <commandset id="composerMenuItems"
					commandupdater="true"
					events="create"
					oncommandupdate="goUpdateComposerMenuItems(this)"
  >
    <!-- format menu -->
    <command id="cmd_listProperties"  oncommand="goDoCommand('cmd_listProperties')"/>
    <command id="cmd_pageProperties"  oncommand="goDoCommand('cmd_pageProperties')"/>
    <command id="cmd_colorProperties" oncommand="goDoCommand('cmd_colorProperties')"/>

    <command id="cmd_link"             oncommand="goDoCommand('cmd_link')"/>
    <command id="cmd_anchor"           oncommand="goDoCommand('cmd_anchor')"/>
    <command id="cmd_image"            oncommand="goDoCommand('cmd_image')"/>
    <command id="cmd_hline"            oncommand="goDoCommand('cmd_hline')"/>
    <command id="cmd_table"            oncommand="goDoCommand('cmd_table')"/>
    <command id="cmd_objectProperties" oncommand="goDoCommand('cmd_objectProperties')"/>
    <command id="cmd_insertChars"      oncommand="goDoCommand('cmd_insertChars')"     value="&insertCharsCmd.label;"/>
    <command id="cmd_editTable"/>
    <command id="cmd_insertHTML"       oncommand="goDoCommand('cmd_insertHTML')"      value="&HTMLSourceCmd.label;"/>
    <command id="cmd_editHTML"         oncommand="goDoCommand('cmd_editHTML')"        value="&HTMLSourceCmd.label;"/>
    <command id="cmd_insertBreak"      oncommand="goDoCommand('cmd_insertBreak')"     value="&insertLineBreakCmd.label;"/>
    <command id="cmd_insertBreakAll"   oncommand="goDoCommand('cmd_insertBreakAll')"  value="&insertBreakBelowImagesCmd.label;"/>
  </commandset>
  
  <commandset id="composerSaveMenuItems"
					commandupdater="true"
					events="create, save"
					oncommandupdate="goUpdateComposerMenuItems(this)"
  >
    <command id="cmd_save"          value="&saveCmd.label;"          oncommand="goDoCommand('cmd_save')"/>
    <command id="cmd_saveAs"        value="&saveAsCmd.label;"        oncommand="goDoCommand('cmd_saveAs')"/>
    <command id="cmd_saveAsCharset" value="&saveAsCharsetCmd.label;" oncommand="goDoCommand('cmd_saveAsCharset')"/>
    <command id="cmd_revert"        value="&fileRevert.label;"       oncommand="goDoCommand('cmd_revert')"/>

    <command id="cmd_preview"                                       oncommand="goDoCommand('cmd_preview')"/>
  </commandset>


  <!-- edit menu commands. These get updated by code in globalOverlay.js -->
  <commandset id="composerEditMenuItems"
					commandupdater="true"
					events="create"
					oncommandupdate="goUpdateComposerMenuItems(this)"
	>
    <command id="cmd_undo" value="&undoCmd.label;"/>
    <command id="cmd_redo" value="&redoCmd.label;"/>
    <command id="cmd_cut" value="&cutCmd.label;"/>
    <command id="cmd_copy" value="&copyCmd.label;"/>
    <command id="cmd_paste" value="&pasteCmd.label;"/>  
    <command id="cmd_delete" value="&clearCmd.label;"/>
    <command id="cmd_selectAll" value="&selectAllCmd.label;"/>

    <command id="cmd_preferences"   oncommand="goDoCommand('cmd_preferences')"/>

    <command id="cmd_find"          oncommand="goDoCommand('cmd_find')"/>
    <command id="cmd_findNext"      oncommand="goDoCommand('cmd_findNext')"   value="&findAgainCmd.label;"/>
    <command id="cmd_spelling"      oncommand="goDoCommand('cmd_spelling')"/>
    <command id="cmd_pasteQuote"    oncommand="goDoCommand('cmd_pasteQuote')" value="&pasteAsQuotationCmd.label;"/>

  </commandset>

  <!-- style related commands that update on creation, and on selection change -->
  <commandset id="composerStyleMenuItems"
					commandupdater="true"
					events="create, style"
					oncommandupdate="goUpdateComposerMenuItems(this)"
	>
    <command id="cmd_bold"          state="false"     oncommand="goDoCommand('cmd_bold')"/>
    <command id="cmd_italic"        state="false"     oncommand="goDoCommand('cmd_italic')"/>
    <command id="cmd_underline"     state="false"     oncommand="goDoCommand('cmd_underline')"/>

    <command id="cmd_strikethrough" state="false"     oncommand="goDoCommand('cmd_strikethrough')"/>
    <command id="cmd_superscript"   state="false"     oncommand="goDoCommand('cmd_superscript')"/>
    <command id="cmd_subscript"     state="false"     oncommand="goDoCommand('cmd_subscript')"/>
    <command id="cmd_nobreak"       state="false"     oncommand="goDoCommand('cmd_nobreak')"/>

    <command id="cmd_em"            state="false"     oncommand="goDoCommand('cmd_em')"/>
    <command id="cmd_strong"        state="false"     oncommand="goDoCommand('cmd_strong')"/>
    <command id="cmd_cite"          state="false"     oncommand="goDoCommand('cmd_cite')"/>
    <command id="cmd_abbr"          state="false"     oncommand="goDoCommand('cmd_abbr')"/>
    <command id="cmd_acronym"       state="false"     oncommand="goDoCommand('cmd_acronym')"/>
    <command id="cmd_code"          state="false"     oncommand="goDoCommand('cmd_code')"/>
    <command id="cmd_samp"          state="false"     oncommand="goDoCommand('cmd_samp')"/>
    <command id="cmd_var"           state="false"     oncommand="goDoCommand('cmd_var')"/>

    <command id="cmd_ul"            state="false"     oncommand="goDoCommand('cmd_ul')"/>
    <command id="cmd_ol"            state="false"     oncommand="goDoCommand('cmd_ol')"/>

    <command id="cmd_indent"                          oncommand="goDoCommand('cmd_indent')"/>
    <command id="cmd_outdent"                         oncommand="goDoCommand('cmd_outdent')"/>

    <!-- the state attribute gets filled with the paragraph format before the command is exectued -->
    <command id="cmd_paragraphState" state=""         oncommand="goDoCommand('cmd_paragraphState')"/>
    <command id="cmd_fontFace"       state=""         oncommand="goDoCommand('cmd_fontFace')"/>
    <command id="cmd_fontSize"       state=""         oncommand="goDoCommand('cmd_fontSize')"/>
    <command id="cmd_align"          state=""         oncommand="goDoCommand('cmd_align')"/>
    
    <command id="cmd_advancedProperties"              oncommand="goDoCommand('cmd_advancedProperties')"/>

    <command id="cmd_increaseFont"                    oncommand="goDoCommand('cmd_increaseFont')"/>
    <command id="cmd_decreaseFont"                    oncommand="goDoCommand('cmd_decreaseFont')"/>
    
    <command id="cmd_removeStyles"                    oncommand="goDoCommand('cmd_removeStyles')"/>
  </commandset>

  <!-- commands updated only when the menu gets created -->
  <commandset id="composerListMenuItems"  oncommandupdate="goUpdateComposerMenuItems(this)">
    <!-- List menu  -->
    <command id="cmd_dt"                  oncommand="goDoCommand('cmd_dt')"/>
    <command id="cmd_dd"                  oncommand="goDoCommand('cmd_dd')"/>
    <command id="cmd_removeList"      oncommand="goDoCommand('cmd_removeList')"/>
  </commandset>
  <commandset id="composerTableMenuItems" oncommandupdate="goUpdateTableMenuItems(this)">
    <!-- Table menu -->
    <command id="cmd_SelectTable"         oncommand="goDoCommand('cmd_SelectTable')"/>
    <command id="cmd_SelectRow"           oncommand="goDoCommand('cmd_SelectRow')"/>
    <command id="cmd_SelectColumn"        oncommand="goDoCommand('cmd_SelectColumn')"/>
    <command id="cmd_SelectCell"          oncommand="goDoCommand('cmd_SelectCell')"/>
    <command id="cmd_SelectAllCells"      oncommand="goDoCommand('cmd_SelectAllCells')"/>
    <command id="cmd_InsertTable"         oncommand="goDoCommand('cmd_InsertTable')"/>
    <command id="cmd_InsertRowAbove"      oncommand="goDoCommand('cmd_InsertRowAbove')"/>
    <command id="cmd_InsertRowBelow"      oncommand="goDoCommand('cmd_InsertRowBelow')"/>
    <command id="cmd_InsertColumnBefore"  oncommand="goDoCommand('cmd_InsertColumnBefore')"/>
    <command id="cmd_InsertColumnAfter"   oncommand="goDoCommand('cmd_InsertColumnAfter')"/>
    <command id="cmd_InsertCellBefore"    oncommand="goDoCommand('cmd_InsertCellBefore')"/>
    <command id="cmd_InsertCellAfter"     oncommand="goDoCommand('cmd_InsertCellAfter')"/>
    <command id="cmd_DeleteTable"         oncommand="goDoCommand('cmd_DeleteTable')"/>
    <command id="cmd_DeleteRow"           oncommand="goDoCommand('cmd_DeleteRow')"/>
    <command id="cmd_DeleteColumn"        oncommand="goDoCommand('cmd_DeleteColumn')"/>
    <command id="cmd_DeleteCell"          oncommand="goDoCommand('cmd_DeleteCell')"/>
    <command id="cmd_DeleteCellContents"  oncommand="goDoCommand('cmd_DeleteCellContents')"/>
    <command id="cmd_NormalizeTable"      oncommand="goDoCommand('cmd_NormalizeTable')"/>
    <command id="cmd_tableJoinCells"      oncommand="goDoCommand('cmd_tableJoinCells')"/>
    <command id="cmd_tableSplitCell"      oncommand="goDoCommand('cmd_tableSplitCell')"/>
    <command id="cmd_editTable"           oncommand="goDoCommand('cmd_editTable')"/>
  </commandset>

  <broadcasterset id="broadcasterset">
    <!-- Broadcasters/commands with no other home -->
    <!-- view menu -->
    <command id="cmd_newNavigator"/>
    <command id="cmd_newMessage"/>
    <command id="cmd_newCard"/>
    <command id="cmd_newEditor"/>
    <command id="cmd_newEditorTemplate"/>
    <command id="cmd_newEditorDraft"/>

   	<command id="cmd_viewCompToolbar"     oncommand="goToggleToolbar('EditToolbar','cmd_viewCompToolbar');"         checked="true"/>
   	<command id="cmd_viewFormatToolbar"   oncommand="goToggleToolbar('FormatToolbar','cmd_viewFormatToolbar');"     checked="true"/>
   	<command id="cmd_viewEditModeToolbar" oncommand="goToggleToolbar('EditModeToolbar','cmd_viewEditModeToolbar');" checked="true"/>
  	<command id="cmd_viewtaskbar"         oncommand="goToggleToolbar('taskbar','cmd_viewtaskbar');"                 checked="true"/>

    <!-- Obsolete; these will go away -->
    <command id="Editor:Font:Size" fontsize=""/>
  </broadcasterset>

  <!-- Editor menu items -->
  <menu id="fileMenu" value="&fileMenu.label;" accesskey="&filemenu.accesskey;">
    <menupopup id="fileMenu_Popup">
      <!-- Note: globalOverlay.xul uses menu_newEditor, but we want different menu item text
                 so we use our own id, value, and accesskey but connect to the same global key and broadcaster node
       -->
      <menuitem id="menu_newBlankPage" value="&newBlankPageCmd.label;" accesskey="&newBlankPage.accesskey;" key="key_newBlankPage" observes="cmd_newEditor"/>
        <menu id="menu_New" value="&newMenu.label;" accesskey="&newMenu.accesskey;">
          <menupopup id="menu_NewPopup">
            <!-- From globalOverlay.xul -->
<!-- Probably won't implement these
            <menuitem id="menu_newEditorTemplate"  observes="cmd_newEditorTemplate"/>
            <menuitem id="menu_newEditorDraft"     observes="cmd_newEditorDraft"/>
            <menuseparator/>
-->
            <menuitem id="menu_newNavigator" observes="cmd_newNavigator"/>
          </menupopup>
        </menu>
      <menuitem accesskey="&fileopenremote.accesskey;"      key="openremoteeditorkb" observes="cmd_openRemote"/>
      <menuitem accesskey="&fileopen.accesskey;"            key="openeditorkb"       observes="cmd_open" value="&openFileCmd.label;"/>
      <menu accesskey="&filerecentmenu.accesskey;" value="&fileRecentMenu.label;" oncreate="BuildRecentMenu()">
        <!-- Items appended at runtime -->
        <menupopup id="menupopup_RecentFiles"/>
      </menu>
      <menuitem accesskey="&filerevert.accesskey;" observes="cmd_revert"/>
      <menuseparator />
      <menuitem accesskey="&fileclose.accesskey;"      key="closekb"        observes="cmd_close"/>
      <menuitem accesskey="&filesave.accesskey;"       key="savekb"         observes="cmd_save"/>
      <menuitem accesskey="&filesaveas.accesskey;"                          observes="cmd_saveAs"/>
      <menuitem accesskey="&filesaveascharset.accesskey;"                               observes="cmd_saveAsCharset"/>
      <menuseparator />
      <!-- FRAME, LINK should go here, but nav must put them in global files -->
      <menuitem id="menu_preview" value="&previewCmd.label;" accesskey="&filepreview.accesskey;" observes="cmd_preview"/>
      <menuseparator />
      <menuitem accesskey="&fileprintsetup.accesskey;"                           observes="cmd_printSetup" />
      <menuitem accesskey="&fileprintpreview.accesskey;"                         observes="cmd_printPreview"/>
      <menuitem accesskey="&fileprint.accesskey;" id="printMenuItem" key="printkb" observes="cmd_print" value="&printCmd.label;"/>
      <menuseparator />
      <menuitem accesskey="&fileexit.accesskey;"            key="exitkb"         observes="cmd_quit"/>
    </menupopup>
  </menu>

  <menu id="editMenu" value="&editMenu.label;" accesskey="&editmenu.accesskey;">
    <menupopup id="edEditMenuPopup" oncreate="EditorInitEditMenu()">
      <!-- from globalOverlay.xul -->
      <menuitem id="menu_undo"/>
      <menuitem id="menu_redo"/>
      <menuseparator id="edEditMenuSep1" />
      <menuitem id="menu_cut"/>
      <menuitem id="menu_copy"/>
      <menuitem id="menu_paste"/>
      <menuitem id="menu_delete"/>
      <menuseparator id="edEditMenuSep2" />
      <menuitem id="menu_selectAll"/>
      <menuseparator class="hide-in-IM"/>
      <menuitem id="menu_find"       accesskey="&editfind.accesskey;"            key="findkb"         observes="cmd_find" value="&findCmd.label;"/>
      <menuitem id="menu_findnext"   accesskey="&editfindnext.accesskey;"        key="findnextkb"     observes="cmd_findNext"/>
      <menuseparator class="hide-in-IM" />
      <menuitem id="menu_checkspelling" accesskey="&editcheckspelling.accesskey;"   key="checkspellingkb" observes="cmd_spelling" value="&checkSpellingCmd.label;"/>
      <menuseparator id="sep_checkspelling" class="hide-in-IM"/>
      <menuitem class="hide-in-IM" id="menu_editHTML"    accesskey="&HTMLsource.accesskey;"            observes="cmd_editHTML"/>
      <menuseparator/>
      <menuitem id="menu_preferences"                                                                  observes="cmd_preferences"/>
    </menupopup>
  </menu>

  <!-- view menu items -->
    <menu id="viewToolbar" value="&viewToolbarsMenu.label;" accesskey="&viewToolbarsMenu.accesskey;">
      <menupopup> 

  		<menuitem value="&compositionToolbarCmd.label;" type="checkbox" accesskey="&compositiontb.accesskey;" observes="cmd_viewCompToolbar"  />
  		<menuitem value="&formattingToolbarCmd.label;"  type="checkbox" accesskey="&formattingtb.accesskey;"  observes="cmd_viewFormatToolbar" />
      <menuitem value="&editmodeToolbarCmd.label;"    type="checkbox" accesskey="&editmodetb.accesskey;"    observes="cmd_viewEditModeToolbar" />
  		<menuitem value="&taskbarCmd.label;"            type="checkbox" accesskey="&taskbarCmd.accesskey;"    observes="cmd_viewtaskbar" />
      </menupopup>
    </menu>
    <menuitem id="viewSourceMenuitem" accesskey="&HTMLsource.accesskey;" observes="cmd_editHTML"/>
    <menuitem id="viewParagraphMarks" type="checkbox" value="&viewParagraphMarks.label;" accesskey="&viewparagraphmarks.accesskey;" oncommand="EditorToggleParagraphMarks();"/>
    <menupopup id = "composerCharsetMenuPopup"  oncreate="updateCharsetPopupMenu(this)" />

  <!-- Insert menu -->
  <menu id="insertMenu" value="&insertMenu.label;" accesskey="&insertmenu.accesskey;">
    <menupopup>
      <menuitem accesskey="&insertlink.accesskey;"       observes="cmd_link"        value="&insertLinkCmd.label;" />
      <menuitem accesskey="&insertanchor.accesskey;"     observes="cmd_anchor"      value="&insertAnchorCmd.label;"/>
      <menuitem accesskey="&insertimage.accesskey;"      observes="cmd_image"       value="&insertImageCmd.label;"/>
      <menuitem accesskey="&inserthline.accesskey;"      observes="cmd_hline"       value="&insertHLineCmd.label;"/>
      <menuitem accesskey="&inserttable.accesskey;"      observes="cmd_table"       value="&insertTableCmd.label;"/>
      <menuitem accesskey="&HTMLsource.accesskey;"       observes="cmd_insertHTML"  key="inserthtmlkb"/>
      <menuitem accesskey="&insertchars.accesskey;"      observes="cmd_insertChars" />
      <menuseparator />
      <menuitem accesskey="&insertlinebreak.accesskey;"  observes="cmd_insertBreak"/>
      <menuitem accesskey="&insertbreak.accesskey;"      observes="cmd_insertBreakAll"/>
    </menupopup>
  </menu>
    
  <!-- Format Menu -->
  <menupopup id="formatMenuPopup" oncreate="EditorInitFormatMenu()">
    <!-- Font face submenu -->
    <menu id="fontFaceMenu" value="&fontfaceMenu.label;" accesskey="&formatfontmenu.accesskey;" 
          position="1">
      <menupopup oncommand="EditorSetFontFace('cmd_fontFace', event.target.data)">
        <menuitem value="&fontVarWidth.label;"      accesskey="&fontvarwidth.accesskey;"    data=""/>
        <menuitem value="&fontFixedWidth.label;"    accesskey="&fontfixedwidth.accesskey;"  data="tt"/>
        <menuseparator/>
        <menuitem value="&fontHelveticaFont.label;" accesskey="&fonthelvetica.accesskey;"   data="Arial, Helvetica, sans-serif"/>
        <menuitem value="&fontTimes.label;"         accesskey="&fonttimes.accesskey;"       data="Times New Roman, Times, serif"/>
        <menuitem value="&fontCourier.label;"       accesskey="&fontcourier.accesskey;"     data="Courier New, Courier, mono"/>
      </menupopup>
    </menu>

    <!-- Font size submenu -->
    <menu id="fontSizeMenu" value="&fontsizeMenu.label;"
          accesskey="&formatsizemenu.accesskey;" 
          position="2">
      <menupopup>
      <menuitem value="&decreaseFontSize.label;" accesskey="&decreasefontsize.accesskey;" observes="cmd_decreaseFont" key="decreasefontsizekb"/>
      <menuitem value="&increaseFontSize.label;" accesskey="&increasefontsize.accesskey;" observes="cmd_increaseFont" key="increasefontsizekb"/>
        <menuseparator/>
        <menuitem value="&size-xx-smallCmd.label;" accesskey="&size-xx-small.accesskey;" oncommand="EditorSetFontSize('xx-small')"/>
        <menuitem value="&size-x-smallCmd.label;"  accesskey="&size-x-small.accesskey;"  oncommand="EditorSetFontSize('x-small')"/>
        <menuitem value="&size-smallCmd.label;"    accesskey="&size-small.accesskey;"    oncommand="EditorSetFontSize('small')"/>
        <menuitem value="&size-mediumCmd.label;"   accesskey="&size-medium.accesskey;"   oncommand="EditorSetFontSize('medium')"/>
        <menuitem value="&size-largeCmd.label;"    accesskey="&size-large.accesskey;"    oncommand="EditorSetFontSize('large')"/>
        <menuitem value="&size-x-largeCmd.label;"  accesskey="&size-x-large.accesskey;"  oncommand="EditorSetFontSize('x-large')"/>
        <menuitem value="&size-xx-largeCmd.label;" accesskey="&size-xx-large.accesskey;" oncommand="EditorSetFontSize('xx-large')"/>
      </menupopup>
    </menu>

    <!-- Font style submenu -->
    <menu id="fontStyleMenu" value="&fontStyleMenu.label;" 
          accesskey="&formatstylemenu.accesskey;"
          position="3">
    <menupopup oncreate="initFontStyleMenu(this)" oncommand="goDoCommand(event.target.observes)">
      <menuitem value="&styleBoldCmd.label;"        accesskey="&stylebold.accesskey;"         observes="cmd_bold"         key="boldkb"/>
      <menuitem value="&styleItalicCmd.label;"      accesskey="&styleitalic.accesskey;"       observes="cmd_italic"       key="italickb" />
      <menuitem value="&styleUnderlineCmd.label;"   accesskey="&styleunderline.accesskey;"    observes="cmd_underline"    key="underlinekb"/>
      <menuitem value="&styleStrikeThruCmd.label;"  accesskey="&stylestrikethru.accesskey;"   observes="cmd_strikethrough"/>
      <menuitem value="&styleSuperscriptCmd.label;" accesskey="&stylesuperscript.accesskey;"  observes="cmd_superscript"/>
      <menuitem value="&styleSubscriptCmd.label;"   accesskey="&stylesubscript.accesskey;"    observes="cmd_subscript"/>
      <menuitem value="&styleNonbreakingCmd.label;" accesskey="&stylenonbreaking.accesskey;"  observes="cmd_nobreak"/>
      <menuseparator/>
      <menuitem value="&styleEm.label;"             accesskey="&styleEm.accesskey;"           observes="cmd_em"/>
      <menuitem value="&styleStrong.label;"         accesskey="&styleStrong.accesskey;"       observes="cmd_strong"/>
      <menuitem value="&styleCite.label;"           accesskey="&styleCite.accesskey;"         observes="cmd_cite"/>
      <menuitem value="&styleAbbr.label;"           accesskey="&styleAbbr.accesskey;"         observes="cmd_abbr"/>
      <menuitem value="&styleAcronym.label;"        accesskey="&styleAcronym.accesskey;"      observes="cmd_acronym"/>
      <menuitem value="&styleCode.label;"           accesskey="&styleCode.accesskey;"         observes="cmd_code"/>
      <menuitem value="&styleSamp.label;"           accesskey="&styleSamp.accesskey;"         observes="cmd_samp"/>
      <menuitem value="&styleVar.label;"            accesskey="&styleVar.accesskey;"          observes="cmd_var"/>
    </menupopup>
    </menu>
    
    <!-- Font color submenu -->
    <menu id="fontColorMenu" value="&fontColorMenu.label;"
          accesskey="&formatcolormenu.accesskey;"
          position="4">
      <menupopup>
         <menuitem value="&colorBlackCmd.label;"   accesskey="&colorblack.accesskey;"   oncommand="EditorSetFontColor('black')"/>
         <menuitem value="&colorGrayCmd.label;"    accesskey="&colorgray.accesskey;"    oncommand="EditorSetFontColor('gray')"/>
         <menuitem value="&colorSilverCmd.label;"  accesskey="&colorsilver.accesskey;"  oncommand="EditorSetFontColor('silver')"/>
         <menuitem value="&colorWhiteCmd.label;"   accesskey="&colorwhite.accesskey;"   oncommand="EditorSetFontColor('white')"/>
         <menuitem value="&colorRedCmd.label;"     accesskey="&colorred.accesskey;"     oncommand="EditorSetFontColor('red')"/>
         <menuitem value="&colorBlueCmd.label;"    accesskey="&colorblue.accesskey;"    oncommand="EditorSetFontColor('blue')"/>
         <menuitem value="&colorGreenCmd.label;"   accesskey="&colorgreen.accesskey;"   oncommand="EditorSetFontColor('green')"/>
         <menuitem value="&colorCyanCmd.label;"    accesskey="&colorcyan.accesskey;"    oncommand="EditorSetFontColor('cyan')"/>
         <menuitem value="&colorYellowCmd.label;"  accesskey="&coloryellow.accesskey;"  oncommand="EditorSetFontColor('yellow')"/>
         <menuitem value="&colorMagentaCmd.label;" accesskey="&colormagenta.accesskey;" oncommand="EditorSetFontColor('magenta')"/>
      </menupopup>
    </menu>

    <!-- Background color submenu. "value" is set in InitFormatMenu() -->
    <menu id="backgroundColorMenu"
         accesskey="&formatbkgdcolormenu.accesskey;"
         position="5">
      <menupopup>
       <menuitem value="&colorBlackCmd.label;"     accesskey="&colorblack.accesskey;"    oncommand="EditorSetBackgroundColor('black')"/>
       <menuitem value="&colorGrayCmd.label;"      accesskey="&colorgray.accesskey;"     oncommand="EditorSetBackgroundColor('gray')"/>
       <menuitem value="&colorSilverCmd.label;"    accesskey="&colorsilver.accesskey;"   oncommand="EditorSetBackgroundColor('silver')"/>
       <menuitem value="&colorWhiteCmd.label;"     accesskey="&colorwhite.accesskey;"    oncommand="EditorSetBackgroundColor('white')"/>
       <menuitem value="&colorRedCmd.label;"       accesskey="&colorred.accesskey;"      oncommand="EditorSetBackgroundColor('red')"/>
       <menuitem value="&colorBlueCmd.label;"      accesskey="&colorblue.accesskey;"     oncommand="EditorSetBackgroundColor('blue')"/>
       <menuitem value="&colorGreenCmd.label;"     accesskey="&colorgreen.accesskey;"    oncommand="EditorSetBackgroundColor('green')"/>
       <menuitem value="&colorCyanCmd.label;"      accesskey="&colorcyan.accesskey;"     oncommand="EditorSetBackgroundColor('cyan')"/>
       <menuitem value="&colorYellowCmd.label;"    accesskey="&coloryellow.accesskey;"   oncommand="EditorSetBackgroundColor('yellow')"/>
       <menuitem value="&colorMagentaCmd.label;"   accesskey="&colormagenta.accesskey;"  oncommand="EditorSetBackgroundColor('magenta')"/>
      </menupopup>
    </menu>

<!-- Font color submenu
     THIS WORKS ONLY IN Windows/Linux (use arbitrary XUL in submenu)
    <menu id="fontColorMenu" value="&fontColorMenu.label;"
          accesskey="&formatcolormenu.accesskey;"
          position="4">
    	<menupopup>
        <colorpicker id="menuTextCP" palettename="standard"
          oncommand="EditorSelectTextColor('menuTextCP',null);"/>
        <menuitem value="&colorPicker.default.label;" 
          accesskey="&colorPicker.default.accesskey;" 
          oncommand="EditorRemoveTextColor(null)"/>
    	</menupopup>
    </menu>

    <menu id="backgroundColorMenu"
          accesskey="&formatbkgdcolormenu.accesskey;"
          position="5">
    	<menupopup>
        <colorpicker id="menuBackCP" palettename="standard"
          oncommand="EditorSelectBackColor('menuBackCP',null);"/>
        <menuitem value="&colorPicker.default.label;"
          accesskey="&colorPicker.default.accesskey;" 
          oncommand="EditorRemoveBackColor(null)"/>
    	</menupopup>
    </menu>
-->

    <menuseparator position="6"/>
    <menuitem id="removeAllStylesMenuitem" value="&removeAllStylesCmd.label;"
                accesskey="&formatremovestyles.accesskey;" key="removestyleskb"
                oncommand="goDoCommand('cmd_removeStyles')" position="7"/>
    <menuitem id="removeLinksMenuitem" value="&removeLinksCmd.label;"
                accesskey="&formatremovelinks.accesskey;"
                oncommand="EditorRemoveLinks()" position="8"/>
    <menuseparator position="9"/>

    <!-- Note: the 'Init' menu methods for Heading, Paragraph, and List 
         assume that the id = 'menu_'+tagName (the 'data' value),
         except for the first ('none') item
     -->
    <!-- Heading Style submenu -->
    <menu id="headingMenu" value="&headingMenu.label;"
          accesskey="&formatheadingmenu.accesskey;"
          position="10" oncreate="InitHeadingMenu()">
      <menupopup oncommand="EditorSetParagraphFormat('cmd_paragraphState', event.target.getAttribute('data'))">
        <menuitem id="menu_noHeading" type="radio" value="&noneCmd.label;"     accesskey="&none.accesskey;"     data=""/>
        <menuitem id="menu_h1"        type="radio" value="&heading1Cmd.label;" accesskey="&heading1.accesskey;" data="h1"/>
        <menuitem id="menu_h2"        type="radio" value="&heading2Cmd.label;" accesskey="&heading2.accesskey;" data="h2"/>
        <menuitem id="menu_h3"        type="radio" value="&heading3Cmd.label;" accesskey="&heading3.accesskey;" data="h3"/>
        <menuitem id="menu_h4"        type="radio" value="&heading4Cmd.label;" accesskey="&heading4.accesskey;" data="h4"/>
        <menuitem id="menu_h5"        type="radio" value="&heading5Cmd.label;" accesskey="&heading5.accesskey;" data="h5"/>
        <menuitem id="menu_h6"        type="radio" value="&heading6Cmd.label;" accesskey="&heading6.accesskey;" data="h6"/>
      </menupopup>
    </menu>

    <!-- Paragraph Style submenu -->
    <menu id="paragraphMenu" value="&paragraphMenu.label;"
          accesskey="&formatparagraphmenu.accesskey;"
          position="11" oncreate="InitParagraphMenu()">
      <menupopup oncommand="EditorSetParagraphFormat('cmd_paragraphState', event.target.getAttribute('data'))">
        <menuitem id="menu_normal"  type="radio" value="&normalCmd.label;"               accesskey="&normal.accesskey;"              data=""/>
        <menuitem id="menu_p"       type="radio" value="&paragraphParagraphCmd.label;"   accesskey="&paragraphparagraph.accesskey;"  data="p"/>
        <menuitem id="menu_address" type="radio" value="&paragraphAddressCmd.label;"     accesskey="&paragraphaddress.accesskey;"    data="address"/>   
        <menuitem id="menu_pre"     type="radio" value="&paragraphPreformatCmd.label;"   accesskey="&paragraphpreformat.accesskey;"  data="pre"/>       
        <menuseparator/>
        <menuitem id="menu_blockquote" type="checkbox" value="&paragraphBlockquoteCmd.label;"  accesskey="&paragraphblockquote.accesskey;" data="blockquote"/>
      </menupopup>
    </menu>

    <!-- List Style submenu -->
    <menu id="listMenu" value="&formatlistMenu.label;"
          accesskey="&formatlistmenu.accesskey;"
          position="12" oncreate="InitListMenu()">
      <menupopup>
        <menuitem id="menu_noList" type="radio" value="&noneCmd.label;"           accesskey="&none.accesskey;"           observes="cmd_removeList"/>
        <menuitem id="menu_ul"     type="radio" value="&listBulletCmd.label;"     accesskey="&listbullet.accesskey;"     observes="cmd_ul"/>
        <menuitem id="menu_ol"     type="radio" value="&listNumberedCmd.label;"   accesskey="&listnumbered.accesskey;"   observes="cmd_ol"/>
        <menuitem id="menu_dt"     type="radio" value="&listTermCmd.label;"       accesskey="&listterm.accesskey;"       observes="cmd_dt"/>
        <menuitem id="menu_dd"     type="radio" value="&listDefinitionCmd.label;" accesskey="&listdefinition.accesskey;" observes="cmd_dd"/>
        <menuseparator/>
        <menuitem id="listProps" value="&listProps.label;" accesskey="&listprops.accesskey;" observes="cmd_listProperties"/>
      </menupopup>
    </menu>

    <menu id="alignMenu" value="&alignMenu.label;" accesskey="&formatalignmenu.accesskey;"
        position="13">
      <!-- Align submenu -->
      <menupopup oncommand="EditorAlign('cmd_align', event.target.getAttribute('data'))">
        <menuitem value="&alignLeft.label;"    accesskey="&alignleft.accesskey;"    data="left"/>
        <menuitem value="&alignCenter.label;"  accesskey="&aligncenter.accesskey;"  data="center"/>
        <menuitem value="&alignRight.label;"   accesskey="&alignright.accesskey;"   data="right"/>
        <menuitem value="&alignJustify.label;" accesskey="&alignjustify.accesskey;" data="justify"/>
      </menupopup>
    </menu>
    <menuseparator position="14"/>

    <menuitem id="increaseIndent" value="&increaseIndent.label;"  accesskey="&increaseindent.accesskey;"  key="increaseindentkb"
                observes="cmd_indent" position="15"/>
    <menuitem id="decreaseIndent" value="&decreaseIndent.label;"  accesskey="&decreaseindent.accesskey;"  key="decreaseindentkb"
              observes="cmd_outdent"  position="16"/>
    <menuseparator position="17"/>
    <!-- Merge Table Menu and separator in Messenger Composer here -->
    <!-- Merge property items here -->
  </menupopup>

  <!-- Items to append at the bottom of the formatMenuPopup -->
  <menuitem id="objectProperties" value="&properties.label;" accesskey="&properties.accesskey;"
            observes="cmd_objectProperties"/>
  <menuitem id="pageProperties" value="&pageProperties.label;"
            accesskey="&pageproperties.accesskey;"
            oncommand="goDoCommand('cmd_pageProperties')"/>
  <menuitem id="colorsAndBackground" value="&colorsAndBackground.label;"
            accesskey="&colorsandbackground.accesskey;"
            oncommand="goDoCommand('cmd_colorProperties')"/>

  <menu id="tableMenu" value="&tableMenu.label;" accesskey="&tablemenu.accesskey;">
    <menupopup  oncreate="EditorInitTableMenu()">
      <menu id="tableInsertMenu" value="&tableInsertMenu.label;" accesskey="&tableinsertmenu.accesskey;">
        <menupopup>
          <menuitem value="&insertTableCmd.label;"    accesskey="&tabletable.accesskey;"        observes="cmd_InsertTable"/>
          <menuseparator />
          <menuitem value="&tableRowAbove.label;"     accesskey="&tablerow.accesskey;"          observes="cmd_InsertRowAbove"/>
          <menuitem value="&tableRowBelow.label;"     accesskey="&tablerowbelow.accesskey;"     observes="cmd_InsertRowBelow"/>
          <menuseparator />
          <menuitem value="&tableColumnBefore.label;" accesskey="&tablecolumn.accesskey;"       observes="cmd_InsertColumnBefore"/>
          <menuitem value="&tableColumnAfter.label;"  accesskey="&tablecolumnafter.accesskey;"  observes="cmd_InsertColumnAfter"/>
          <menuseparator />
          <menuitem value="&tableCellBefore.label;"   accesskey="&tablecell.accesskey;"         observes="cmd_InsertCellBefore"/>
          <menuitem value="&tableCellAfter.label;"    accesskey="&tablecellafter.accesskey;"    observes="cmd_InsertCellAfter"/>
        </menupopup>
      </menu>
      <menu id="tableSelectMenu" value="&tableSelectMenu.label;"
              accesskey="&tableselectmenu.accesskey;">
        <menupopup>
            <menuitem id="menu_SelectTable"    value="&tableTable.label;"    accesskey="&tabletable.accesskey;"    observes="cmd_SelectTable"    />
            <menuitem id="menu_SelectRow"      value="&tableRow.label;"      accesskey="&tablerow.accesskey;"      observes="cmd_SelectRow"      />
            <menuitem id="menu_SelectColumn"   value="&tableColumn.label;"   accesskey="&tablecolumn.accesskey;"   observes="cmd_SelectColumn"   />
            <menuitem id="menu_SelectCell"     value="&tableCell.label;"     accesskey="&tablecell.accesskey;"     observes="cmd_SelectCell"     />
            <menuitem id="menu_SelectAllCells" value="&tableAllCells.label;" accesskey="&tableallcells.accesskey;" observes="cmd_SelectAllCells" />
        </menupopup>
      </menu>
      <menu id="tableDeleteMenu" value="&tableDeleteMenu.label;" accesskey="&tabledeletemenu.accesskey;">
        <menupopup>
          <menuitem id="menu_DeleteTable"         value="&tableTable.label;"        accesskey="&tabletable.accesskey;"          observes="cmd_DeleteTable"/>
          <menuitem id="menu_DeleteRow"           value="&tableRows.label;"         accesskey="&tablerow.accesskey;"            observes="cmd_DeleteRow"/>
          <menuitem id="menu_DeleteColumn"        value="&tableColumns.label;"      accesskey="&tablecolumn.accesskey;"         observes="cmd_DeleteColumn"/>
          <menuitem id="menu_DeleteCell"          value="&tableCells.label;"        accesskey="&tablecell.accesskey;"           observes="cmd_DeleteCell"/>
          <menuitem id="menu_DeleteCellContents"  value="&tableCellContents.label;" accesskey="&tablecellcontents.accesskey;"   observes="cmd_DeleteCellContents"/>
        </menupopup>
      </menu>
      <menuseparator />
      <menuitem id="menu_NormalizeTable"  value="&tableFix.label;"        accesskey="&tablefix.accesskey;"       observes="cmd_NormalizeTable"/>
      <!-- menu value is set in InitTableMenu -->
      <menuitem id="menu_tableJoinCells"                                  accesskey="&tablejoincells.accesskey;" observes="cmd_tableJoinCells"/>
      <menuitem id="menu_tableSlitCell"   value="&tableSplitCell.label;"  accesskey="&tablesplitcell.accesskey;" observes="cmd_tableSplitCell"/>
      <!-- this is shared with Format Menu -->
      <menuitem id="menu_tableProperties" value="&tableProperties.label;" accesskey="&properties.accesskey;"     observes="cmd_editTable"/>
    </menupopup>
  </menu>

  <popup id="TextColorPopup"  popupanchor="bottomleft" ignorekeys="true">
    <text class="ColorPickerLabel" id="TextColorCaption" value="&textColorCaption.label;" flex="1"/>
    <!-- TODO: Add "Last color picked" button and text -->
    <box valign="middle" autostretch="never">
      <text class="color-button"/>
      <text class="label" value="&lastPickedColor.label;"/>
    </box>
    <colorpicker id="TextColorPicker" palettename="standard" onclick="EditorSelectTextColor('TextColorPicker','TextColorPopupButton');"/>
<!--
    <box valign="middle" autostretch="never">
      <text class="label" value="&colorLabel.label;"/>
      <button class="dialog" value="&ok.label;" oncommand="SetManualTextColor()"/>
    </box>
-->
    <button class="dialog" value="&colorPicker.default.label;" oncommand="EditorRemoveTextColor('TextColorPopupButton');"/>
  </popup>

  <popup id="BackColorPopup" popupanchor="bottomleft" oncreate="InitBackColorPopup()" ignorekeys="true">
    <!-- Text is filled in at runtime according to what background element will be set -->
    <text class="ColorPickerLabel" id="BackColorCaption" value="Background Color" flex="1"/>
    <!-- TODO: Add "Last color picked" button and text -->
    <box valign="middle" autostretch="never">
      <text class="color-button"/>
      <text class="label" value="&lastPickedColor.label;"/>
    </box>
    <colorpicker id="BackColorPicker" palettename="standard" onclick="EditorSelectBackColor('BackColorPicker','BackColorPopupButton');"/>
<!--
    <box valign="middle" autostretch="never">
      <text class="label" value="&colorLabel.label;"/>
      <button class="dialog" value="Ok" oncommand="SetManualBackColor()"/>
    </box>
-->
    <button class="dialog" value="&colorPicker.default.label;" oncommand="EditorRemoveBackColor('BackColorPopupButton');"/>
  </popup>

  <menupopup id="AlignmentPopup">
    <menuitem oncommand="EditorAlign('cmd_align', 'left')">
     <button class="plain" id="text-align-left" align="left" value="&alignLeft.label;"/>
    </menuitem>
    <menuitem oncommand="EditorAlign('cmd_align', 'center')">
     <button class="plain" id="text-align-center" align="left" value="&alignCenter.label;"/>
    </menuitem>
    <menuitem oncommand="EditorAlign('cmd_align', 'right')">
     <button class="plain" id="text-align-right" align="left" value="&alignRight.label;"/>
    </menuitem>
    <menuitem oncommand="EditorAlign('cmd_align', 'justify')">
     <button class="plain" id="text-align-justify" align="left" value="&alignJustify.label;"/>
    </menuitem>
  </menupopup>
  
  <!-- InsertPopup is used by messengercompose.xul -->
  <menupopup id="InsertPopup">
    <menuitem oncommand="goDoCommand('cmd_link')">
     <button class="plain" id="linkButton-dark" darkcolor="true" align="left" value="&linkToolbarCmd.label;"/>
    </menuitem>
    <menuitem oncommand="goDoCommand('cmd_anchor')">
     <button class="plain" id="namedAnchorButton-dark" align="left" value="&anchorToolbarCmd.label;"/>
    </menuitem>
    <menuitem oncommand="goDoCommand('cmd_image')">
     <button class="plain" id="imageButton-dark" align="left" value="&imageToolbarCmd.label;"/>
    </menuitem>
    <menuitem oncommand="goDoCommand('cmd_hline')">
     <button class="plain" id="hlineButton-dark" align="left" value="&hruleToolbarCmd.label;"/>
    </menuitem>
    <menuitem oncommand="goDoCommand('cmd_table')">
     <button class="plain" id="tableButton-dark" align="left" value="&tableToolbarCmd.label;"/>
    </menuitem>
  </menupopup>

  <!-- Editor toolbar items -->
  <!-- note that we override the submenu item label "Blank Window" with "New" used for the menu -->
  <button class="button-toolbar-2 top"    id="newButton"       
          value="&newMenu.label;"         observes="cmd_newEditor"
          tooltip="aTooltip"              tooltiptext="&newToolbarCmd.tooltip;"/>
  <button class="button-toolbar-2 top"    id="openButton"
          value="&openToolbarCmd.label;"  observes="cmd_open"
          tooltip="aTooltip"              tooltiptext="&openToolbarCmd.tooltip;"/>
  <button class="button-toolbar-2 top"    id="saveButton"
                                          observes="cmd_save"
          tooltip="aTooltip"              tooltiptext="&saveToolbarCmd.tooltip;"/>
  <button class="button-toolbar-2 top"    id="previewButton"
          value="&previewToolbarCmd.label;" observes="cmd_preview"
          tooltip="aTooltip"              tooltiptext="&previewToolbarCmd.tooltip;"/>

  <menubutton class="menubutton-dual toolbar" id="printButton" value="&printToolbarCmd.label;" 
              observes="cmd_print_button" tooltip="aTooltip" tooltiptext="&printToolbarCmd.tooltip;"
              crop="right">  
 	  <menupopup id="printMenu">
      <menuitem accesskey="&fileprint.accesskey;" key="printkb" observes="cmd_print" value="&printCmd.label;" default="true"/>
      <menuitem accesskey="&fileprintsetup.accesskey;" observes="cmd_printSetup" />
      <menuitem accesskey="&fileprintpreview.accesskey;" observes="cmd_printPreview"/>
    </menupopup>
  </menubutton>
    
  <button class="button-toolbar-2 top"    id="findButton"
          value="&findToolbarCmd.label;"  observes="cmd_find"
          tooltip="aTooltip"              tooltiptext="&findToolbarCmd.tooltip;"/>
  <button class="button-toolbar-2 top"    id="spellingButton"
          value="&spellToolbarCmd.label;" observes="cmd_spelling"
          tooltip="aTooltip"              tooltiptext="&spellToolbarCmd.tooltip;"/>

  <button class="button-toolbar-2 top"    id="imageButton"
          value="&imageToolbarCmd.label;" observes="cmd_image"
          tooltip="aTooltip"              tooltiptext="&imageToolbarCmd.tooltip;"/>
  <button class="button-toolbar-2 top"    id="hlineButton"
          value="&hruleToolbarCmd.label;" observes="cmd_hline"
          tooltip="aTooltip"              tooltiptext="&hruleToolbarCmd.tooltip;"/>
  <button class="button-toolbar-2 top"    id="tableButton"
          value="&tableToolbarCmd.label;" observes="cmd_table"
          tooltip="aTooltip"              tooltiptext="&tableToolbarCmd.tooltip;"/>
  <button class="button-toolbar-2 top"    id="linkButton"
          value="&linkToolbarCmd.label;"  observes="cmd_link"
          tooltip="aTooltip"              tooltiptext="&linkToolbarCmd.tooltip;"/>
  <button class="button-toolbar-2 top"    id="namedAnchorButton"
          value="&anchorToolbarCmd.label;" observes="cmd_anchor"
          tooltip="aTooltip"               tooltiptext="&anchorToolbarCmd.tooltip;"/>

  <!-- Formatting toolbar items. "data" are HTML tagnames, don't translate -->
  <menulist id="ParagraphSelect" tooltip="aTooltip" tooltiptext="&ParagraphSelect.tooltip;">
    <observes element="cmd_paragraphState" attribute="state" onbroadcast="onParagraphFormatChange(this.parentNode, 'cmd_paragraphState')"/>
    <menupopup id="ParagraphPopup" oncommand="EditorSetParagraphFormat('cmd_paragraphState', event.target.data)">
      <menuitem value="&normalCmd.label;"              data=""/>
      <menuitem value="&paragraphParagraphCmd.label;"  data="p"/>
      <menuitem value="&heading1Cmd.label;"            data="h1"/>
      <menuitem value="&heading2Cmd.label;"            data="h2"/>
      <menuitem value="&heading3Cmd.label;"            data="h3"/>
      <menuitem value="&heading4Cmd.label;"            data="h4"/>
      <menuitem value="&heading5Cmd.label;"            data="h5"/>
      <menuitem value="&heading6Cmd.label;"            data="h6"/>
      <menuitem value="&paragraphAddressCmd.label;"    data="address"/>
      <menuitem value="&paragraphPreformatCmd.label;"  data="pre"/>
      <menuseparator/>
      <menuitem value="&paragraphBlockquoteCmd.label;" data="blockquote"/>
    </menupopup>
  </menulist>

  <!-- TODO: Use actual "face" value when combobox can display arbitrary HTML -->
  <!-- "data" are HTML tagnames, don't translate -->
  <menulist id="FontFaceSelect" tooltip="aTooltip" tooltiptext="&FontFaceSelect.tooltip;">
    <observes element="cmd_fontFace" attribute="state" onbroadcast="onFontFaceChange(this.parentNode, 'cmd_fontFace')"/>
    <menupopup id="FontFacePopup" oncommand="EditorSetFontFace('cmd_fontFace', event.target.data)">
      <menuitem value="&fontVarWidth.label;"      data=""/>
      <menuitem value="&fontFixedWidth.label;"    data="tt"/>
      <menuseparator/>
      <menuitem value="&fontHelveticaFont.label;" data="Arial, Helvetica, sans-serif"/>
      <menuitem value="&fontTimes.label;"         data="Times New Roman, Times, serif"/>
      <menuitem value="&fontCourier.label;"       data="Courier New, Courier, mono"/>
    </menupopup>
  </menulist>  
  
  <menulist id="FontSizeSelect" oncommand="EditorSelectFontSize()" tooltip="aTooltip" tooltiptext="&FontSizeSelect.tooltip;">
    <observes element="cmd_fontSize" attribute="state" onbroadcast="onFontSizeChange(this.parentNode, 'cmd_fontSize')"/>
    <menupopup>
      <menuitem value="&size-xx-smallCmd.label;"/>
      <menuitem value="&size-x-smallCmd.label;"/>
      <menuitem value="&size-smallCmd.label;"/>
      <menuitem value="&size-mediumCmd.label;"/>
      <menuitem value="&size-largeCmd.label;"/>
      <menuitem value="&size-x-largeCmd.label;"/>
      <menuitem value="&size-xx-largeCmd.label;"/>
    </menupopup>
  </menulist>          

  <stack id="ColorButtons" autostretch="never">
    <text class="color-button" id="BackColorPopupButton" popup="BackColorPopup"
          tooltip="aTooltip"   tooltiptext="&BackColorPopupButton.tooltip;"/>
    <text class="color-button" id="TextColorPopupButton" popup="TextColorPopup"
          tooltip="aTooltip"   tooltiptext="&TextColorPopupButton.tooltip;"/>
  </stack>

<!-- A BUG IN CSS/BOXES MAKES THIS ASSERT WHEN CLASS= IS PRESENT AND WE TRY TO COLLAPSE THE TOOLBOX -->
  <button class="button-toolbar" id="DecreaseFontSizeButton" observes="cmd_decreaseFont"
          tooltip="aTooltip"     tooltiptext="&decreaseFontSizeToolbarCmd.tooltip;"/>
  <button class="button-toolbar" id="IncreaseFontSizeButton" observes="cmd_increaseFont"
          tooltip="aTooltip"     tooltiptext="&increaseFontSizeToolbarCmd.tooltip;"/>

  <button class="button-toolbar" id="boldButton" oncommand="goDoCommand('cmd_bold')"
          tooltip="aTooltip"     tooltiptext="&boldToolbarCmd.tooltip;">
    <observes element="cmd_bold" attribute="state" onbroadcast="onButtonUpdate(this.parentNode, 'cmd_bold')"/>
  </button>
  <button class="button-toolbar" id="italicButton" align="center" oncommand="goDoCommand('cmd_italic')"
          tooltip="aTooltip"     tooltiptext="&italicToolbarCmd.tooltip;">
    <observes element="cmd_italic" attribute="state" onbroadcast="onButtonUpdate(this.parentNode, 'cmd_italic')"/>
  </button>
  <button class="button-toolbar" id="underlineButton" align="center" oncommand="goDoCommand('cmd_underline')"
          tooltip="aTooltip"     tooltiptext="&underlineToolbarCmd.tooltip;">
    <observes element="cmd_underline" attribute="state" onbroadcast="onButtonUpdate(this.parentNode, 'cmd_underline')"/>
  </button>

  <button class="button-toolbar" id="ulButton" oncommand="goDoCommand('cmd_ul')"
          tooltip="aTooltip"     tooltiptext="&bulletListToolbarCmd.tooltip;">
      <observes element="cmd_ul" attribute="state" onbroadcast="onButtonUpdate(this.parentNode, 'cmd_ul')"/>
  </button>

  <button class="button-toolbar" id="olButton" oncommand="goDoCommand('cmd_ol')"
          tooltip="aTooltip"     tooltiptext="&numberListToolbarCmd.tooltip;">
      <observes element="cmd_ol" attribute="state" onbroadcast="onButtonUpdate(this.parentNode, 'cmd_ol')"/>
  </button>

  <button class="button-toolbar format" id="outdentButton"    observes="cmd_outdent"
          tooltip="aTooltip"            tooltiptext="&outdentToolbarCmd.tooltip;"/>
  <button class="button-toolbar format" id="indentButton"     observes="cmd_indent"
          tooltip="aTooltip"            tooltiptext="&indentToolbarCmd.tooltip;"/>
  <button class="button-toolbar format popup" id="AlignPopupButton" disabled="true"
          tooltip="aTooltip"            tooltiptext="&AlignPopupButton.tooltip;"/>
  
  <!-- Edit Mode toolbar -->
  <button id="NormalModeButton"   class="edit-mode plain" type="text" selected="1" value="&normalMode.label;"    onclick="SetEditMode(1)"
          tooltip="aTooltip"      tooltiptext="&normalMode.tooltip;"/>
  <button id="TagModeButton"      class="edit-mode plain" type="text" selected="0" value="&showAllTags.label;"   onclick="SetEditMode(2)"
          tooltip="aTooltip"      tooltiptext="&showAllTags.tooltip;"/>
  <button id="SourceModeButton"   class="edit-mode plain" type="text" selected="0" value="&sourceMode.label;"    onclick="SetEditMode(3)"
          tooltip="aTooltip"      tooltiptext="&sourceMode.tooltip;"/>
  <button id="PreviewModeButton"  class="edit-mode plain" type="text" selected="0" value="&previewMode.label;"   onclick="SetEditMode(0)"
          tooltip="aTooltip"      tooltiptext="&previewMode.tooltip;"/>
  <image id="ToggleEditModeType" onclick="ToggleEditModeType()"
          tooltip="aTooltip"      tooltiptext="&ToggleEditModeType.tooltip;"/>

 <!-- InsertPopupButton is used by messengercompose.xul -->
  <button class="plain format popup" id="InsertPopupButton"/>


  <!-- Paste as quotation is used by mail compose,
       but in composer it has to go in the debug menu
   -->
  <menuitem id="menu_pasteQuote" accesskey="&editpastequotation.accesskey;" observes="cmd_pasteQuote"/>

  <!-- DEBUG only -->
  <menu id="debugMenu" value="&debugMenu.label;">
  <menupopup>
    <menuitem value="&newEditorTestPage.label;" oncommand="window.openDialog('chrome://editor/content','_blank','chrome,all,dialog=no','chrome://editor/content/EditorInitPage.html')"/>
    <menuitem value="&textEditorCmd.label;"     oncommand="EditorNewPlaintext();" />
    <menuitem value="&outputTextCmd.label;"
           oncommand="EditorGetText()"/>
    <menuitem value="&outputHTMLCmd.label;"
           oncommand="EditorGetHTML()"/>
    <menuitem value="&outputXIFCmd.label;"
           oncommand="EditorGetXIF()"/>
    <menuseparator />
    <menuitem value="&pasteAsQuotationCmd.label;"
           accesskey="&editpastequotation.accesskey;"
           oncommand="goDoCommand('cmd_pasteQuote')"/>
    <menuitem value="&editRewrapCmd.label;"
           oncommand="editorShell.Rewrap(false)"/>
    <menuitem value="&editStripQuotesCmd.label;"
           oncommand="editorShell.StripCites()"/>
    <menuitem value="&insertTextCmd.label;"
           oncommand="EditorInsertText('All good things come to those who wait. ')"/>
    <menuseparator />
    <menuitem value="&testSelectionCmd.label;"
           oncommand="EditorTestSelection()"/>
    <menuitem value="&testTableLayoutCmd.label;"
           oncommand="EditorTestTableLayout()"/>
    <menuitem value="&showEmbeddedCmd.label;"
           oncommand="EditorShowEmbeddedObjects()"/>
    <menuitem value="&dumpContentCmd.label;"
           oncommand="EditorDumpContent()"/>
    <menuitem value="&testDocumentCmd.label;"
           oncommand="EditorTestDocument()"/>
    <menuitem value="&runUnitTestsCmd.label;"
           oncommand="EditorUnitTests()"/>
    <menuseparator />
    <menuitem value="&startLogCmd.label;"
           oncommand="EditorStartLog()"/>
    <menuitem value="&stopLogCmd.label;"
           oncommand="EditorStopLog()"/>
    <menuitem value="&runLogCmd.label;"
           oncommand="EditorRunLog()"/>
    <menuseparator />
    <menuitem value="&setFocusCmd.label;"
            accesskey="&toolsetfocus.accesskey;"
            oncommand="window.focus()"/>
  </menupopup>
  </menu>
  <!-- end DEBUG only -->

</overlay>
