<?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):
   -   Ryan Cassin (rcassin@supernova.org)
  -->

<!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 type="application/x-javascript" src="chrome://editor/content/editorOverlay.js"/>
<script type="application/x-javascript" src="chrome://editor/content/ComposerCommands.js"/>

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

    <key id="openeditorkb"   key="&fileopen.keybinding;"   observes="cmd_open"  modifiers="accel"/>
    <key id="openremoteeditorkb"  key="&fileopenremote.keybinding;"  observes="cmd_openRemote"  modifiers="accel,shift"/>
    <key id="savekb"         key="&filesave.keybinding;"   observes="cmd_save" modifiers="accel"/>
    <key id="closekb"        key="&fileclose.keybinding;"  observes="cmd_close"  modifiers="accel"/>
    <key id="printkb"        key="&fileprint.keybinding;"  observes="cmd_print"  modifiers="accel"/>
    <key id="key_quit"/>
    <key id="key_undo"/>
    <key id="key_redo"/>
    <key id="key_cut"/>
    <key id="key_copy"/>
    <key id="key_paste"/>
    <key id="key_delete"/>
    <key id="key_selectAll"/>
    <key id="pastequotationkb"  key="&editpastequotation.keybinding;"   observes="cmd_pasteQuote"  modifiers="accel, shift"/>
    <key id="findkb"            key="&editfind.keybinding;"            observes="cmd_find"  modifiers="accel"/>
    <key id="findnextkb"        key="&editfindnext.keybinding;"        observes="cmd_findNext"  modifiers="accel"/>
    <key id="checkspellingkb"   key="&editcheckspelling.keybinding;"   observes="cmd_spelling"  modifiers="accel"/>

    <key id="boldkb"         key="&stylebold.keybinding;"       observes="cmd_bold" modifiers="accel"/>
    <key id="italickb"       key="&styleitalic.keybinding;"     observes="cmd_italic" modifiers="accel"/>
    <key id="underlinekb"    key="&styleunderline.keybinding;"  observes="cmd_underline" modifiers="accel"/>

    <key id="fontfixedwidthkb"  key="&formatfontfixed.keybinding;"  oncommand="doStatefulCommand('cmd_fontFace', 'tt')"  modifiers="accel, shift"/>
    <key id="increaseindentkb"  key="&formatindent.keybinding;"  observes="cmd_indent"  modifiers="accel"/>
    <key id="decreaseindentkb"  key="&formatoutdent.keybinding;"  observes="cmd_outdent"  modifiers="accel"/>

    <key id="removestyleskb"       key="&formatremovestyles.keybinding;"   observes="cmd_removeStyles"  modifiers="shift, accel"/>
    <key id="removelinkskb"        key="&formatremovelinks.keybinding;"    observes="cmd_removeLinks"  modifiers="shift, accel"/>
    <key id="decreasefontsizekb"   key="&decreaseFontSize.keybinding;"     observes="cmd_decreaseFont"  modifiers="shift, accel"/>
    <key id="increasefontsizekb"   key="&increaseFontSize.keybinding;"     observes="cmd_increaseFont"  modifiers="shift, accel"/>
  </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"   label="&openremoteCmd.label;"    oncommand="goDoCommand('cmd_openRemote')"/>
    <command id="cmd_close"        label="&closeCmd.label;"         oncommand="goDoCommand('cmd_close')"/>

    <command id="cmd_printSetup"   label="&printSetupCmd.label;"    oncommand="goDoCommand('cmd_printSetup')"/>
<!--
    <command id="cmd_printPreview" label="&printPreviewCmd.label;"  oncommand="goDoCommand('cmd_printPreview')"/>
-->
    <command id="cmd_print"                                         oncommand="goDoCommand('cmd_print')"/>
    
    <command id="cmd_quit"         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')"     label="&insertCharsCmd.label;"/>
    <command id="cmd_insertHTML"       oncommand="goDoCommand('cmd_insertHTML')"     label="&insertHTMLCmd.label;"/>

    <command id="cmd_insertBreak"      oncommand="goDoCommand('cmd_insertBreak')"/>
    <command id="cmd_insertBreakAll"   oncommand="goDoCommand('cmd_insertBreakAll')"/>
    <command id="cmd_NormalMode"       oncommand="goDoCommand('cmd_NormalMode')"     label="&NormalMode.label;"/>
    <command id="cmd_AllTagsMode"      oncommand="goDoCommand('cmd_AllTagsMode')"    label="&AllTagsMode.label;"/>
    <command id="cmd_HTMLSourceMode"   oncommand="goDoCommand('cmd_HTMLSourceMode')"/>
    <command id="cmd_PreviewMode"      oncommand="goDoCommand('cmd_PreviewMode')"    label="&PreviewMode.label;"/>
  </commandset>
  
  <commandset id="composerSaveMenuItems"
          commandupdater="true"
          events="create, save"
          oncommandupdate="goUpdateComposerMenuItems(this)"
  >
    <command id="cmd_save"           label="&saveCmd.label;"           oncommand="goDoCommand('cmd_save')"/>
    <command id="cmd_saveAs"         label="&saveAsCmd.label;"         oncommand="goDoCommand('cmd_saveAs')"/>
    <command id="cmd_exportToText"   label="&exportToTextCmd.label;"   oncommand="goDoCommand('cmd_exportToText')"/>
    <command id="cmd_saveAsCharset"  label="&saveAsCharsetCmd.label;"  oncommand="goDoCommand('cmd_saveAsCharset')"/>
    <command id="cmd_revert"         label="&fileRevert.label;"        oncommand="goDoCommand('cmd_revert')"/>
    <command id="cmd_preview"                                          oncommand="goDoCommand('cmd_preview')"/>
    <command id="cmd_editSendPage"  label="&sendPageCmd.label;"   accesskey="&sendPage.accesskey;"   oncommand="goDoCommand('cmd_editSendPage')"/>
  </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"/>
    <command id="cmd_redo"/>
    <command id="cmd_cut"/>
    <command id="cmd_copy"/>
    <command id="cmd_paste"/>  
    <command id="cmd_delete"/>
    <command id="cmd_selectAll"/>

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

    <command id="cmd_find"          oncommand="goDoCommand('cmd_find')"/>
    <command id="cmd_findNext"      oncommand="goDoCommand('cmd_findNext')"   label="&findAgainCmd.label;"/>
    <command id="cmd_replace"       oncommand="goDoCommand('cmd_replace')" />
    <command id="cmd_spelling"      oncommand="goDoCommand('cmd_spelling')"/>
    <command id="cmd_pasteQuote"    oncommand="goDoCommand('cmd_pasteQuote')" label="&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_smiley"        state=""  />

    <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')"/>

    <!-- No "oncommand", use EditorSelectColor() to bring up color dialog -->
    <command id="cmd_fontColor"       state=""/>
    <command id="cmd_backgroundColor" state=""/>

    <command id="cmd_fontSize"        state=""         oncommand="goDoCommand('cmd_fontSize')"/>
    <command id="cmd_align"           state=""/>
    
    <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')"/>
    <command id="cmd_removeLinks"                     oncommand="goDoCommand('cmd_removeLinks')"/>
  </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')"/>
    <!-- cmd_ul and cmd_ol are shared with toolbar and are in composerStyleMenuItems commandset -->
  </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_JoinTableCells"      oncommand="goDoCommand('cmd_JoinTableCells')"/>
    <command id="cmd_SplitTableCell"      oncommand="goDoCommand('cmd_SplitTableCell')"/>
    <command id="cmd_TableOrCellColor"    oncommand="goDoCommand('cmd_TableOrCellColor')"/>
    <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_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>

  <!-- File  menu items -->
  <!-- Note: globalOverlay.xul uses menu_newEditor, but we want different menu item text
             so we use our own id, label, and accesskey but connect to the same global key and broadcaster node
   -->
  <menu id="fileMenu" label="&fileMenu.label;" accesskey="&filemenu.accesskey;">
    <menupopup id="menu_FilePopup">
      <menuitem id="menu_newBlankPage" label="&newBlankPageCmd.label;" accesskey="&newBlankPage.accesskey;" key="key_newBlankPage" observes="cmd_newEditor"/>
      <menu id="menu_editNew" label="&newMenu.label;" accesskey="&newMenu.accesskey;">
        <menupopup id="menu_NewPopup">
          <!-- From globalOverlay.xul -->
          <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" label="&openFileCmd.label;"/>
      <menu id="menu_RecentFiles" accesskey="&filerecentmenu.accesskey;" label="&fileRecentMenu.label;" oncreate="BuildRecentMenu(false)">
        <menupopup id="menupopup_RecentFiles"/>
          <!-- menuitems appended at runtime -->
      </menu>
      <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"/>
      <menuitem accesskey="&fileexporttotext.accesskey;"                    observes="cmd_exportToText" id="fileExportToText"/>
      <menuitem accesskey="&filerevert.accesskey;" observes="cmd_revert"/>
      <menuseparator/>
      <menuitem label="&previewCmd.label;"  accesskey="&filepreview.accesskey;" observes="cmd_preview"/>
      <!-- menuitem id="menu_SendPage" is merged here from mailEditorOverlay.xul,
           where "position" is assumed to be 14. Change that label if menu position changes.      -->
      <menuitem accesskey="&fileprintsetup.accesskey;" observes="cmd_printSetup" />
      <menuitem accesskey="&fileprint.accesskey;" key="printkb" observes="cmd_print" label="&printCmd.label;"/>
      <menuseparator/>
      <!-- The Exit/Quit item is merged from platformGlobalOverlay.xul -->
    </menupopup>
  </menu>

  <menu id="editMenu" label="&editMenu.label;" accesskey="&editmenu.accesskey;">
    <menupopup id="edEditMenuPopup" oncreate="EditorInitEditMenu()">
      <!-- from utilityOverlay.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 id="sep_find" class="hide-in-IM"/>
      <menuitem id="menu_find"       accesskey="&editfind.accesskey;"            key="findkb"         observes="cmd_find" label="&findCmd.label;"/>
      <menuitem id="menu_findnext"   accesskey="&editfindnext.accesskey;"        key="findnextkb"     observes="cmd_findNext"/>
      <menuitem id="menu_replace"   observes="cmd_replace" label="&replaceCmd.label;"/>
      <menuseparator id="sep_checkspelling" class="hide-in-IM" />
      <menuitem id="menu_checkspelling" accesskey="&editcheckspelling.accesskey;"   key="checkspellingkb" observes="cmd_spelling" label="&checkSpellingCmd.label;"/>
      <menuseparator/>
      <menuitem id="menu_preferences"                                                                  observes="cmd_preferences"/>
    </menupopup>
  </menu>

  <!-- view menu items -->
  <menu id="viewToolbar" label="&viewToolbarsMenu.label;" accesskey="&viewToolbarsMenu.accesskey;">
    <menupopup> 
      <menuitem id="viewComposerToolbar" label="&compositionToolbarCmd.label;" type="checkbox" accesskey="&compositiontb.accesskey;" observes="cmd_viewCompToolbar"  />
      <menuitem id="viewFormatToolbar"   label="&formattingToolbarCmd.label;"  type="checkbox" accesskey="&formattingtb.accesskey;"  observes="cmd_viewFormatToolbar" />
      <menuitem id="viewEditModeToolbar" label="&editmodeToolbarCmd.label;"    type="checkbox" accesskey="&editmodetb.accesskey;"    observes="cmd_viewEditModeToolbar" />
      <menuitem id="viewTaskBar"         label="&taskbarCmd.label;"            type="checkbox" accesskey="&taskbarCmd.accesskey;"    observes="cmd_viewtaskbar" />
    </menupopup>
  </menu>

  <menuitem id="viewNormalMode"   type="radio" name="1" accesskey="&NormalMode.accesskey;"     observes="cmd_NormalMode"/>
  <menuitem id="viewAllTagsMode"  type="radio" name="1" accesskey="&AllTagsMode.accesskey;"    observes="cmd_AllTagsMode"/>
  <menuitem id="viewSourceMode"   type="radio" name="1" accesskey="&HTMLSourceMode.accesskey;" observes="cmd_HTMLSourceMode" label="&HTMLSourceMode.label;"/>
  <menuitem id="viewPreviewMode"  type="radio" name="1" accesskey="&PreviewMode.accesskey;"    observes="cmd_PreviewMode"/>

  <menupopup id = "composerCharsetMenuPopup"  oncreate="updateCharsetPopupMenu(this)" />

  <!-- Insert menu -->
  <menu id="insertMenu" label="&insertMenu.label;" accesskey="&insertmenu.accesskey;">
    <menupopup>
      <menuitem accesskey="&insertlink.accesskey;"       observes="cmd_link"        label="&insertLinkCmd.label;" />
      <menuitem accesskey="&insertanchor.accesskey;"     observes="cmd_anchor"      label="&insertAnchorCmd.label;"/>
      <menuitem accesskey="&insertimage.accesskey;"      observes="cmd_image"       label="&insertImageCmd.label;"/>
      <menuitem accesskey="&inserthline.accesskey;"      observes="cmd_hline"       label="&insertHLineCmd.label;"/>
      <menuitem accesskey="&inserttable.accesskey;"      observes="cmd_InsertTable" label="&insertTableCmd.label;"/>
      <menuitem accesskey="&HTMLSourceMode.accesskey;"   observes="cmd_insertHTML"  key="inserthtmlkb"/>
      <menuitem accesskey="&insertchars.accesskey;"      observes="cmd_insertChars" />
      <menuseparator/>
<!-- Activate this after Enter key inserts P tag and not BR
      <menuitem accesskey="&insertbreak.accesskey;"      observes="cmd_insertBreak"      label="&insertBreakCmd.label;"/>
-->
      <menuitem accesskey="&insertbreakall.accesskey;"   observes="cmd_insertBreakAll"   label="&insertBreakAllCmd.label;"/>
    </menupopup>
  </menu>
    
  <!-- Insert menu for PlainText editor -->
  <menu id="insertMenuPlainText" label="&insertMenu.label;" accesskey="&insertmenu.accesskey;">
    <menupopup>
      <menuitem accesskey="&insertchars.accesskey;" observes="cmd_insertChars" />
    </menupopup>
  </menu>

  <!-- Format Menu -->
  <menupopup id="formatMenuPopup" oncreate="EditorInitFormatMenu()">
    <!-- Font face submenu -->
    <menu id="fontFaceMenu" label="&fontfaceMenu.label;" accesskey="&formatfontmenu.accesskey;" 
          position="1">
      <menupopup oncommand="doStatefulCommand('cmd_fontFace', event.target.value)" oncreate="initFontFaceMenu(this)">
        <menuitem label="&fontVarWidth.label;"      accesskey="&fontvarwidth.accesskey;"    value="" type="radio" name="1"/>
        <menuitem label="&fontFixedWidth.label;"    accesskey="&fontfixedwidth.accesskey;"  value="tt" type="radio" name="1" key="fontfixedwidthkb"/>
        <menuseparator/>
        <menuitem label="&fontHelveticaFont.label;" accesskey="&fonthelvetica.accesskey;"   value="Helvetica, Arial, sans-serif" type="radio" name="2" />
        <menuitem label="&fontTimes.label;"         accesskey="&fonttimes.accesskey;"       value="Times New Roman, Times, serif" type="radio" name="2" />
        <menuitem label="&fontCourier.label;"       accesskey="&fontcourier.accesskey;"     value="Courier New, Courier, mono" type="radio" name="2" />
      </menupopup>
    </menu>

    <!-- Font size submenu -->
    <menu id="fontSizeMenu" label="&fontsizeMenu.label;"
          accesskey="&formatsizemenu.accesskey;" 
          position="2">
      <menupopup oncreate="initFontSizeMenu(this)">
      <menuitem label="&decreaseFontSize.label;" accesskey="&decreasefontsize.accesskey;" observes="cmd_decreaseFont" type="radio" name="1" key="decreasefontsizekb"/>
      <menuitem label="&increaseFontSize.label;" accesskey="&increasefontsize.accesskey;" observes="cmd_increaseFont" type="radio" name="1" key="increasefontsizekb"/>
        <menuseparator/>
<!-- Not supported in current font size implementation
        <menuitem label="&size-xx-smallCmd.label;" accesskey="&size-xx-small.accesskey;" oncommand="EditorSetFontSize('xx-small')" type="radio" name="2" />
-->
        <menuitem label="&size-x-smallCmd.label;"  accesskey="&size-x-small.accesskey;"  oncommand="EditorSetFontSize('x-small')" type="radio" name="2" />
        <menuitem label="&size-smallCmd.label;"    accesskey="&size-small.accesskey;"    oncommand="EditorSetFontSize('small')" type="radio" name="2" />
        <menuitem label="&size-mediumCmd.label;"   accesskey="&size-medium.accesskey;"   oncommand="EditorSetFontSize('medium')" type="radio" name="2" />
        <menuitem label="&size-largeCmd.label;"    accesskey="&size-large.accesskey;"    oncommand="EditorSetFontSize('large')" type="radio" name="2" />
        <menuitem label="&size-x-largeCmd.label;"  accesskey="&size-x-large.accesskey;"  oncommand="EditorSetFontSize('x-large')" type="radio" name="2" />
        <menuitem label="&size-xx-largeCmd.label;" accesskey="&size-xx-large.accesskey;" oncommand="EditorSetFontSize('xx-large')" type="radio" name="2" />
      </menupopup>
    </menu>

    <!-- Font style submenu -->
    <menu id="fontStyleMenu" label="&fontStyleMenu.label;" 
          accesskey="&formatstylemenu.accesskey;"
          position="3">
    <menupopup oncreate="initFontStyleMenu(this)" oncommand="goDoCommand(event.target.observes)">
      <menuitem label="&styleBoldCmd.label;"        accesskey="&stylebold.accesskey;"         observes="cmd_bold"          type="checkbox" key="boldkb"/>
      <menuitem label="&styleItalicCmd.label;"      accesskey="&styleitalic.accesskey;"       observes="cmd_italic"        type="checkbox" key="italickb" />
      <menuitem label="&styleUnderlineCmd.label;"   accesskey="&styleunderline.accesskey;"    observes="cmd_underline"     type="checkbox" key="underlinekb"/>
      <menuitem label="&styleStrikeThruCmd.label;"  accesskey="&stylestrikethru.accesskey;"   observes="cmd_strikethrough" type="checkbox"/>
      <menuitem label="&styleSuperscriptCmd.label;" accesskey="&stylesuperscript.accesskey;"  observes="cmd_superscript"   type="checkbox"/>
      <menuitem label="&styleSubscriptCmd.label;"   accesskey="&stylesubscript.accesskey;"    observes="cmd_subscript"     type="checkbox"/>
      <menuitem label="&styleNonbreakingCmd.label;" accesskey="&stylenonbreaking.accesskey;"  observes="cmd_nobreak"       type="checkbox"/>
      <menuseparator/>
      <menuitem label="&styleEm.label;"             accesskey="&styleEm.accesskey;"           observes="cmd_em"            type="checkbox"/>
      <menuitem label="&styleStrong.label;"         accesskey="&styleStrong.accesskey;"       observes="cmd_strong"        type="checkbox"/>
      <menuitem label="&styleCite.label;"           accesskey="&styleCite.accesskey;"         observes="cmd_cite"          type="checkbox"/>
      <menuitem label="&styleAbbr.label;"           accesskey="&styleAbbr.accesskey;"         observes="cmd_abbr"          type="checkbox"/>
      <menuitem label="&styleAcronym.label;"        accesskey="&styleAcronym.accesskey;"      observes="cmd_acronym"       type="checkbox"/>
      <menuitem label="&styleCode.label;"           accesskey="&styleCode.accesskey;"         observes="cmd_code"          type="checkbox"/>
      <menuitem label="&styleSamp.label;"           accesskey="&styleSamp.accesskey;"         observes="cmd_samp"          type="checkbox"/>
      <menuitem label="&styleVar.label;"            accesskey="&styleVar.accesskey;"          observes="cmd_var"           type="checkbox"/>
    </menupopup>
    </menu>
    
    <menuitem id="fontColor" label="&formatFontColor.label;" 
          accesskey="&formatfontcolor.accesskey;"
          oncommand="EditorSelectColor('Text', null);"
          position="4"/>
    <menuseparator position="5"/>

    <!-- label and accesskey set at runtime from strings -->
    <menuitem id="removeStylesMenuitem" key="removestyleskb"
          observes="cmd_removeStyles"
          position="6"/>
    <menuitem id="removeLinksMenuitem" key="removelinkskb"
          observes="cmd_removeLinks"
          position="7"/>
    <menuseparator position="8"/>

    <!-- Note: the 'Init' menu methods for Paragraph, List, and Align
         assume that the id = 'menu_'+tagName (the 'value' label),
         except for the first ('none') item
     -->
    <!-- Paragraph Style submenu -->
    <menu id="paragraphMenu" label="&paragraphMenu.label;"
          accesskey="&formatparagraphmenu.accesskey;"
          position="9" oncreate="InitParagraphMenu()">
      <menupopup oncommand="doStatefulCommand('cmd_paragraphState', event.target.getAttribute('value'))">
        <menuitem id="menu_bodyText"  type="radio" name="1" label="&bodyTextCmd.label;"             accesskey="&bodytext.accesskey;"              value=""/>
        <menuitem id="menu_p"         type="radio" name="1" label="&paragraphParagraphCmd.label;"   accesskey="&paragraphparagraph.accesskey;"  value="p"/>
        <menuitem id="menu_h1"        type="radio" name="1" label="&heading1Cmd.label;"             accesskey="&heading1.accesskey;"            value="h1"/>
        <menuitem id="menu_h2"        type="radio" name="1" label="&heading2Cmd.label;"             accesskey="&heading2.accesskey;"            value="h2"/>
        <menuitem id="menu_h3"        type="radio" name="1" label="&heading3Cmd.label;"             accesskey="&heading3.accesskey;"            value="h3"/>
        <menuitem id="menu_h4"        type="radio" name="1" label="&heading4Cmd.label;"             accesskey="&heading4.accesskey;"            value="h4"/>
        <menuitem id="menu_h5"        type="radio" name="1" label="&heading5Cmd.label;"             accesskey="&heading5.accesskey;"            value="h5"/>
        <menuitem id="menu_h6"        type="radio" name="1" label="&heading6Cmd.label;"             accesskey="&heading6.accesskey;"            value="h6"/>
        <menuitem id="menu_address"   type="radio" name="1" label="&paragraphAddressCmd.label;"     accesskey="&paragraphaddress.accesskey;"    value="address"/>   
        <menuitem id="menu_pre"       type="radio" name="1" label="&paragraphPreformatCmd.label;"   accesskey="&paragraphpreformat.accesskey;"  value="pre"/>       
        <menuseparator/>
        <menuitem id="menu_blockquote" type="checkbox" label="&paragraphBlockquoteCmd.label;"  accesskey="&paragraphblockquote.accesskey;" value="blockquote"/>
      </menupopup>
    </menu>

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

    <menuitem id="increaseIndent" label="&increaseIndent.label;"  accesskey="&increaseindent.accesskey;"  key="increaseindentkb"
                observes="cmd_indent" position="12"/>
    <menuitem id="decreaseIndent" label="&decreaseIndent.label;"  accesskey="&decreaseindent.accesskey;"  key="decreaseindentkb"
              observes="cmd_outdent"  position="13"/>

    <menu id="alignMenu" label="&alignMenu.label;" accesskey="&formatalignmenu.accesskey;"
        oncreate="InitAlignMenu()"
        position="14">
      <!-- Align submenu -->
      <menupopup oncommand="doStatefulCommand('cmd_align', event.target.getAttribute('value'))">
        <menuitem id="menu_left"    label="&alignLeft.label;"  accesskey="&alignleft.accesskey;"      type="radio" name="1" value="left"/>
        <menuitem id="menu_center"  label="&alignCenter.label;"  accesskey="&aligncenter.accesskey;"  type="radio" name="1" value="center"/>
        <menuitem id="menu_right"   label="&alignRight.label;"   accesskey="&alignright.accesskey;"   type="radio" name="1" value="right"/>
        <menuitem id="menu_justify" label="&alignJustify.label;" accesskey="&alignjustify.accesskey;" type="radio" name="1" value="justify"/>
      </menupopup>
    </menu>
    <menuseparator position="15"/>
    <!-- Merge Table Menu and separator in Messenger Composer here -->
    <!-- Merge property items here -->
  </menupopup>

  <!-- Next 3 are items to append at the bottom of the formatMenuPopup -->
  <!-- label and accesskey filled in during menu creation -->
  <menuitem id="objectProperties" 
            oncommand="goDoCommand('cmd_objectProperties')"/>
  <!-- Dont use 'observes', must call command correctly -->
  <menuitem id="pageProperties" label="&pageProperties.label;"
            accesskey="&pageproperties.accesskey;"
            oncommand="goDoCommand('cmd_pageProperties')"/>
  <menuitem id="colorsAndBackground" label="&colorsAndBackground.label;"
            accesskey="&colorsandbackground.accesskey;"
            oncommand="goDoCommand('cmd_colorProperties')"/>

  <menu id="tableMenu" label="&tableMenu.label;" accesskey="&tablemenu.accesskey;">
    <menupopup  oncreate="EditorInitTableMenu()">
      <!-- From EditorCommandOverlay.xul (shared with context popup) -->
      <menu id="tableInsertMenu" label="&tableInsertMenu.label;" accesskey="&tableinsertmenu.accesskey;">
        <menupopup>
          <menuitem label="&insertTableCmd.label;"    accesskey="&tabletable.accesskey;"        observes="cmd_InsertTable"/>
          <menuseparator />
          <menuitem label="&tableRowAbove.label;"     accesskey="&tablerow.accesskey;"          observes="cmd_InsertRowAbove"/>
          <menuitem label="&tableRowBelow.label;"     accesskey="&tablerowbelow.accesskey;"     observes="cmd_InsertRowBelow"/>
          <menuseparator />
          <menuitem label="&tableColumnBefore.label;" accesskey="&tablecolumn.accesskey;"       observes="cmd_InsertColumnBefore"/>
          <menuitem label="&tableColumnAfter.label;"  accesskey="&tablecolumnafter.accesskey;"  observes="cmd_InsertColumnAfter"/>
          <menuseparator />
          <menuitem label="&tableCellBefore.label;"   accesskey="&tablecell.accesskey;"         observes="cmd_InsertCellBefore"/>
          <menuitem label="&tableCellAfter.label;"    accesskey="&tablecellafter.accesskey;"    observes="cmd_InsertCellAfter"/>
        </menupopup>
      </menu>
      <menu id="tableSelectMenu" label="&tableSelectMenu.label;" accesskey="&tableselectmenu.accesskey;">
        <menupopup id="tableSelectPopup">
          <menuitem id="menu_SelectTable"    label="&tableTable.label;"    accesskey="&tabletable.accesskey;"    observes="cmd_SelectTable"    />
          <menuitem id="menu_SelectRow"      label="&tableRow.label;"      accesskey="&tablerow.accesskey;"      observes="cmd_SelectRow"      />
          <menuitem id="menu_SelectColumn"   label="&tableColumn.label;"   accesskey="&tablecolumn.accesskey;"   observes="cmd_SelectColumn"   />
          <menuitem id="menu_SelectCell"     label="&tableCell.label;"     accesskey="&tablecell.accesskey;"     observes="cmd_SelectCell"     />
          <menuitem id="menu_SelectAllCells" label="&tableAllCells.label;" accesskey="&tableallcells.accesskey;" observes="cmd_SelectAllCells" />
        </menupopup>
      </menu>
      <menu id="tableDeleteMenu" label="&tableDeleteMenu.label;" accesskey="&tabledeletemenu.accesskey;">
        <menupopup id="tableDeletePopup">
          <menuitem id="menu_DeleteTable"         label="&tableTable.label;"        accesskey="&tabletable.accesskey;"          observes="cmd_DeleteTable"/>
          <menuitem id="menu_DeleteRow"           label="&tableRows.label;"         accesskey="&tablerow.accesskey;"            observes="cmd_DeleteRow"/>
          <menuitem id="menu_DeleteColumn"        label="&tableColumns.label;"      accesskey="&tablecolumn.accesskey;"         observes="cmd_DeleteColumn"/>
          <menuitem id="menu_DeleteCell"          label="&tableCells.label;"        accesskey="&tablecell.accesskey;"           observes="cmd_DeleteCell"/>
          <menuitem id="menu_DeleteCellContents"  label="&tableCellContents.label;" accesskey="&tablecellcontents.accesskey;"   observes="cmd_DeleteCellContents"/>
        </menupopup>
      </menu>
      <menuseparator />
      <!-- menu label is set in InitTableMenu -->
      <menuitem id="menu_JoinTableCells"   label="&tableJoinCells.label;"   accesskey="&tablejoincells.accesskey;"   observes="cmd_JoinTableCells"/>
      <menuitem id="menu_SlitTableCell"    label="&tableSplitCell.label;"   accesskey="&tablesplitcell.accesskey;"   observes="cmd_SplitTableCell"/>
      <menuseparator />
      <menuitem id="menu_TableOrCellColor" label="&tableOrCellColor.label;" accesskey="&tableOrCellColor.accesskey;" observes="cmd_TableOrCellColor"/>
      <menuitem id="menu_tableProperties"  label="&tableProperties.label;"  accesskey="&tableProperties.accesskey;"  observes="cmd_editTable"/>
    </menupopup>
  </menu>


  <!-- smiley menu -->
  <menubutton id="smileButtonMenu" class="button-toolbar" observes="cmd_smiley"
			tooltip="aTooltip" tooltiptext="&SmileButton.tooltip;">
       <menupopup id="smilyPopup">
               <menuitem class="smiley insert-smile menuitem-iconic"       label="&smiley1Cmd.label;" 
						oncommand="doStatefulCommand('cmd_smiley', ':-)'  )"  />
               <menuitem class="smiley insert-frown menuitem-iconic"       label="&smiley2Cmd.label;"
						oncommand="doStatefulCommand('cmd_smiley', ':-('  )" />                                              
               <menuitem class="smiley insert-wink menuitem-iconic"        label="&smiley3Cmd.label;"
						oncommand="doStatefulCommand('cmd_smiley', ';-)'  )"  />                       
               <menuitem class="smiley insert-tongue menuitem-iconic"      label="&smiley4Cmd.label;"
						oncommand="doStatefulCommand('cmd_smiley', ':-P'  )" />
               <menuitem class="smiley insert-laughing menuitem-iconic"    label="&smiley5Cmd.label;"
						oncommand="doStatefulCommand('cmd_smiley', ':-D'  )" />
               <menuitem class="smiley insert-embarrassed menuitem-iconic" label="&smiley6Cmd.label;"
						oncommand="doStatefulCommand('cmd_smiley', ':-['  )" />
               <menuitem class="smiley insert-undecided menuitem-iconic"   label="&smiley7Cmd.label;"
						oncommand="doStatefulCommand('cmd_smiley', ':-\\' )" />           
       </menupopup>
   </menubutton>


  <!-- this is only used in mailnews -->
  <menubutton id="AlignPopupButton" class="button-toolbar" observes="cmd_align"
              tooltip="aTooltip" tooltiptext="&AlignPopupButton.tooltip;">
    <menupopup id="AlignPopup">
      <menuitem id="AlignLeftItem" class="menuitem-iconic" label="&alignLeft.label;"
                oncommand="doStatefulCommand('cmd_align', 'left')"/>
      <menuitem id="AlignCenterItem" class="menuitem-iconic" label="&alignCenter.label;"
                oncommand="doStatefulCommand('cmd_align', 'center')"/>
      <menuitem id="AlignRightItem" class="menuitem-iconic" label="&alignRight.label;"
                oncommand="doStatefulCommand('cmd_align', 'right')"/>
      <menuitem id="AlignJustifyItem" class="menuitem-iconic" label="&alignJustify.label;"
                oncommand="doStatefulCommand('cmd_align', 'justify')"/>
    </menupopup>
  </menubutton>

  <!-- InsertPopupButton is used by messengercompose.xul -->
  <menubutton id="InsertPopupButton" class="button-toolbar" observes="cmd_insert">
    <menupopup id="InsertPopup">
      <menuitem id="InsertLinkItem" class="menuitem-iconic" observes="cmd_link"
                oncommand="goDoCommand('cmd_link')" label="&linkToolbarCmd.label;"/>
      <menuitem id="InsertAnchorItem" class="menuitem-iconic" observes="cmd_anchor"
                oncommand="goDoCommand('cmd_anchor')" label="&anchorToolbarCmd.label;"/>
      <menuitem id="InsertImageItem"  class="menuitem-iconic" observes="cmd_image"
                oncommand="goDoCommand('cmd_image')" label="&imageToolbarCmd.label;"/>
      <menuitem id="InsertHRuleItem"  class="menuitem-iconic" observes="cmd_hline"
                oncommand="goDoCommand('cmd_hline')" label="&hruleToolbarCmd.label;"/>
      <menuitem id="InsertTableItem"  class="menuitem-iconic" observes="cmd_table"
                oncommand="goDoCommand('cmd_table')" label="&tableToolbarCmd.label;"/>
    </menupopup>
  </menubutton>

  <!-- 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"       
          label="&newMenu.label;"         observes="cmd_newEditor"
          tooltip="aTooltip"              tooltiptext="&newToolbarCmd.tooltip;"/>
  <button class="button-toolbar-2 top"    id="openButton"
          label="&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"
          label="&previewToolbarCmd.label;" observes="cmd_preview"
          tooltip="aTooltip"              tooltiptext="&previewToolbarCmd.tooltip;"/>

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

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

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

  <!-- "value" are HTML tagnames, don't translate -->
  <menulist class="toolbar-focustarget" id="FontFaceSelect" tooltip="aTooltip" tooltiptext="&FontFaceSelect.tooltip;" crop="right">
    <observes element="cmd_fontFace" attribute="state" onbroadcast="onFontFaceChange(this.parentNode, 'cmd_fontFace')"/>
    <menupopup id="FontFacePopup" oncommand="doStatefulCommand('cmd_fontFace', event.target.value)">
      <menuitem label="&fontVarWidth.label;"      value=""/>
      <menuitem label="&fontFixedWidth.label;"    value="tt"/>
      <menuseparator/>
      <menuitem label="&fontHelveticaFont.label;" value="Helvetica, foo, sans-serif"/>
      <menuitem label="&fontTimes.label;"         value="Times New Roman, Times, serif"/>
      <menuitem label="&fontCourier.label;"       value="Courier New, Courier, mono"/>
    </menupopup>
  </menulist>  
  
  <menulist class="toolbar-focustarget" id="FontSizeSelect" oncommand="EditorSelectFontSize()" tooltip="aTooltip" tooltiptext="&FontSizeSelect.tooltip;" crop="right">
    <observes element="cmd_fontSize" attribute="state" onbroadcast="onFontSizeChange(this.parentNode, 'cmd_fontSize')"/>
    <menupopup>
      <menuitem label="&size-xx-smallCmd.label;"/>
      <menuitem label="&size-x-smallCmd.label;"/>
      <menuitem label="&size-smallCmd.label;"/>
      <menuitem label="&size-mediumCmd.label;"/>
      <menuitem label="&size-largeCmd.label;"/>
      <menuitem label="&size-x-largeCmd.label;"/>
      <menuitem label="&size-xx-largeCmd.label;"/>
    </menupopup>
  </menulist>          

  <stack id="ColorButtons" autostretch="never">
    <observes element="cmd_fontColor"       attribute="state" onbroadcast="onFontColorChange()"/>
    <observes element="cmd_backgroundColor" attribute="state" onbroadcast="onBackgroundColorChange()"/>
    <text class="color-button" id="BackgroundColorButton"
          onclick="EditorSelectColor('', event);"
          tooltip="aTooltip"   tooltiptext="&BackgroundColorButton.tooltip;"/>
    <text class="color-button" id="TextColorButton"
          onclick="EditorSelectColor('Text', event);"
          tooltip="aTooltip"   tooltiptext="&TextColorButton.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" observes="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" observes="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" observes="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" observes="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" observes="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;"/>

  <!-- alignment buttons -->
  <button class="button-toolbar" id="align-left-button"     oncommand="doStatefulCommand('cmd_align', 'left')"
    tooltip="aTooltip" tooltiptext="&alignLeft.tooltip;" >
    <observes element="cmd_align" attribute="state" onbroadcast="onStateButtonUpdate(this.parentNode, 'cmd_align', 'left')" />
  </button>
  <button class="button-toolbar" id="align-center-button"   oncommand="doStatefulCommand('cmd_align', 'center')"
    tooltip="aTooltip" tooltiptext="&alignCenter.tooltip;" >
    <observes element="cmd_align" attribute="state" onbroadcast="onStateButtonUpdate(this.parentNode, 'cmd_align', 'center')"/>
  </button>
  <button class="button-toolbar" id="align-right-button"    oncommand="doStatefulCommand('cmd_align', 'right')"
    tooltip="aTooltip" tooltiptext="&alignRight.tooltip;" >
    <observes element="cmd_align" attribute="state" onbroadcast="onStateButtonUpdate(this.parentNode, 'cmd_align', 'right')"/>
  </button>
  <button class="button-toolbar" id="align-justify-button"  oncommand="doStatefulCommand('cmd_align', 'justify')"
    tooltip="aTooltip" tooltiptext="&alignJustify.tooltip;" >
    <observes element="cmd_align" attribute="state" onbroadcast="onStateButtonUpdate(this.parentNode, 'cmd_align', 'justify')"/>
  </button>
  
  <!-- Edit Mode toolbar -->
  <tab id="NormalModeButton"   class="tab-bottom edit-mode _plain" type="text" selected="1" label="&NormalModeTab.label;"  oncommand="SetEditMode(1);"
          tooltip="aTooltip"      tooltiptext="&NormalMode.tooltip;"/>
  <tab id="TagModeButton"      class="tab-bottom edit-mode _plain" type="text" selected="0" label="&AllTagsMode.label;"    oncommand="SetEditMode(2);"
          tooltip="aTooltip"      tooltiptext="&AllTagsMode.tooltip;"/>
  <tab id="SourceModeButton"   class="tab-bottom edit-mode _plain" type="text" selected="0" label="&SourceMode.label;"     oncommand="SetEditMode(3);"
          tooltip="aTooltip"      tooltiptext="&HTMLSourceMode.tooltip;"/>
  <tab id="PreviewModeButton"  class="tab-bottom edit-mode _plain" type="text" selected="0" label="&PreviewMode.label;"    oncommand="SetEditMode(0);"
          tooltip="aTooltip"      tooltiptext="&PreviewMode.tooltip;"/>

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

</overlay>
