Index: trunk/ezoe/classes/ezoepackerfunctions.php
===================================================================
--- trunk/ezoe/classes/ezoepackerfunctions.php	(revision 69)
+++ trunk/ezoe/classes/ezoepackerfunctions.php	(working copy)
@@ -215,16 +215,16 @@
                 //'font_size' => ezi18n( 'design/standard/ezoe', "Font size"),
                 //'fontdefault' => ezi18n( 'design/standard/ezoe', "Font family"),
                 'block' => ezi18n( 'design/standard/ezoe', "Format"),
-                'paragraph' => ezi18n( 'design/standard/ezoe', "Paragraph"),
+                'paragraph' => ezi18n( 'design/standard/ezoe', "Paragraph (Ctrl+7)"),
                 'div' => ezi18n( 'design/standard/ezoe', "Div"),
                 //'address' => ezi18n( 'design/standard/ezoe', "Address"),
-                'pre' => ezi18n( 'design/standard/ezoe', "Literal"),
-                'h1' => ezi18n( 'design/standard/ezoe', "Heading 1"),
-                'h2' => ezi18n( 'design/standard/ezoe', "Heading 2"),
-                'h3' => ezi18n( 'design/standard/ezoe', "Heading 3"),
-                'h4' => ezi18n( 'design/standard/ezoe', "Heading 4"),
-                'h5' => ezi18n( 'design/standard/ezoe', "Heading 5"),
-                'h6' => ezi18n( 'design/standard/ezoe', "Heading 6"),
+                'pre' => ezi18n( 'design/standard/ezoe', "Literal (Ctrl+8)"),
+                'h1' => ezi18n( 'design/standard/ezoe', "Heading 1 (Ctrl+1)"),
+                'h2' => ezi18n( 'design/standard/ezoe', "Heading 2 (Ctrl+2)"),
+                'h3' => ezi18n( 'design/standard/ezoe', "Heading 3 (Ctrl+3)"),
+                'h4' => ezi18n( 'design/standard/ezoe', "Heading 4 (Ctrl+4)"),
+                'h5' => ezi18n( 'design/standard/ezoe', "Heading 5 (Ctrl+5)"),
+                'h6' => ezi18n( 'design/standard/ezoe', "Heading 6 (Ctrl+6)"),
                 //'blockquote' => ezi18n( 'design/standard/ezoe', "Blockquote"),
                 'code' => ezi18n( 'design/standard/ezoe', "Code"),
                 'samp' => ezi18n( 'design/standard/ezoe', "Code sample"),
@@ -234,18 +234,18 @@
                 'italic_desc' => ezi18n( 'design/standard/ezoe', "Italic (Ctrl+I)"),
                 'underline_desc' => ezi18n( 'design/standard/ezoe', "Underline (Ctrl+U)"),
                 'striketrough_desc' => ezi18n( 'design/standard/ezoe', "Strikethrough"),
-                'justifyleft_desc' => ezi18n( 'design/standard/ezoe', "Align left"),
-                'justifycenter_desc' => ezi18n( 'design/standard/ezoe', "Align center"),
-                'justifyright_desc' => ezi18n( 'design/standard/ezoe', "Align right"),
-                'justifyfull_desc' => ezi18n( 'design/standard/ezoe', "Align full"),
+                'justifyleft_desc' => ezi18n( 'design/standard/ezoe', "Align left (Ctrl+L)"),
+                'justifycenter_desc' => ezi18n( 'design/standard/ezoe', "Align center (Ctrl+E)"),
+                'justifyright_desc' => ezi18n( 'design/standard/ezoe', "Align right (Ctrl+R)"),
+                'justifyfull_desc' => ezi18n( 'design/standard/ezoe', "Align full (Ctrl+J)"),
                 'bullist_desc' => ezi18n( 'design/standard/ezoe', "Unordered list"),
                 'numlist_desc' => ezi18n( 'design/standard/ezoe', "Ordered list"),
-                'outdent_desc' => ezi18n( 'design/standard/ezoe', "Outdent"),
-                'indent_desc' => ezi18n( 'design/standard/ezoe', "Indent"),
+                'outdent_desc' => ezi18n( 'design/standard/ezoe', "Outdent (Ctrl+Shift+M)"),
+                'indent_desc' => ezi18n( 'design/standard/ezoe', "Indent (Ctrl+M)"),
                 'undo_desc' => ezi18n( 'design/standard/ezoe', "Undo (Ctrl+Z)"),
                 'redo_desc' => ezi18n( 'design/standard/ezoe', "Redo (Ctrl+Y)"),
-                'link_desc' => ezi18n( 'design/standard/ezoe', "Insert/edit link"),
-                'unlink_desc' => ezi18n( 'design/standard/ezoe', "Unlink"),
+                'link_desc' => ezi18n( 'design/standard/ezoe', "Insert/edit link (Ctrl+K)"),
+                'unlink_desc' => ezi18n( 'design/standard/ezoe', "Unlink (Ctrl+Shift+K)"),
                 'image_desc' => ezi18n( 'design/standard/ezoe', "Insert/edit image"),
 
                 'object_desc' => ezi18n( 'design/standard/ezoe', "Insert/edit object"),
@@ -260,8 +260,8 @@
 
                 'cleanup_desc' => ezi18n( 'design/standard/ezoe', "Cleanup messy code"),
                 'code_desc' => ezi18n( 'design/standard/ezoe', "Edit HTML Source"),
-                'sub_desc' => ezi18n( 'design/standard/ezoe', "Subscript"),
-                'sup_desc' => ezi18n( 'design/standard/ezoe', "Superscript"),
+                'sub_desc' => ezi18n( 'design/standard/ezoe', "Subscript (Ctrl+=)"),
+                'sup_desc' => ezi18n( 'design/standard/ezoe', "Superscript (Ctrl+Shift+=)"),
                 //'hr_desc' => ezi18n( 'design/standard/ezoe', "Insert horizontal ruler"),
                 'removeformat_desc' => ezi18n( 'design/standard/ezoe', "Remove formatting"),
                 'custom1_desc' => ezi18n( 'design/standard/ezoe', "Your custom description here"),
@@ -270,9 +270,9 @@
                 'charmap_desc' => ezi18n( 'design/standard/ezoe', "Insert special character"),
                 'visualaid_desc' => ezi18n( 'design/standard/ezoe', "Toggle guidelines/invisible elements"),
                 'anchor_desc' => ezi18n( 'design/standard/ezoe', "Insert/edit anchor"),
-                'cut_desc' => ezi18n( 'design/standard/ezoe', "Cut"),
-                'copy_desc' => ezi18n( 'design/standard/ezoe', "Copy"),
-                'paste_desc' => ezi18n( 'design/standard/ezoe', "Paste"),
+                'cut_desc' => ezi18n( 'design/standard/ezoe', "Cut (Ctrl+X)"),
+                'copy_desc' => ezi18n( 'design/standard/ezoe', "Copy (Ctrl+C)"),
+                'paste_desc' => ezi18n( 'design/standard/ezoe', "Paste (Ctrl+V)"),
                 'image_props_desc' => ezi18n( 'design/standard/ezoe', "Image properties"),
                 'newdocument_desc' => ezi18n( 'design/standard/ezoe', "New document"),
                 'help_desc' => ezi18n( 'design/standard/ezoe', "Help"),
Index: trunk/ezoe/design/standard/javascript/ezoe/popup_utils.js
===================================================================
--- trunk/ezoe/design/standard/javascript/ezoe/popup_utils.js	(revision 69)
+++ trunk/ezoe/design/standard/javascript/ezoe/popup_utils.js	(working copy)
@@ -407,7 +407,7 @@
     {
         if ( className ) className = ' ' + className + ' ';
         tag = ',' + tag.toUpperCase() + ',';
-        while ( n !== undefined && n.nodeName !== undefined && n.nodeName !== 'BODY' )
+        while ( n !== undefined && n !== null && n.nodeName !== undefined && n.nodeName !== 'BODY' )
         {
             if ( checkElement && tag.indexOf( ',' + n.nodeName + ',' ) !== -1
             && ( !className || (' ' + n.className + ' ').indexOf( className ) !== -1 ) 
Index: trunk/ezoe/design/standard/javascript/themes/ez/editor_template.js
===================================================================
--- trunk/ezoe/design/standard/javascript/themes/ez/editor_template.js	(revision 69)
+++ trunk/ezoe/design/standard/javascript/themes/ez/editor_template.js	(working copy)
@@ -133,7 +133,20 @@
             ed.onInit.add(function() {
                 ed.onNodeChange.add(t._nodeChanged, t);
                 ed.addShortcut('ctrl+8', '', ['FormatBlock', false, '<pre>']);
-                ed.addShortcut('ctrl+9', '', ['FormatBlock', false, '<pre>']);
+                ed.addShortcut('ctrl+9', '', ['FormatBlock', false, '<pre>']);// just to override default TinyMCE's ctrl+9, <address>.
+
+                // some extra shortcuts to mimic word a bit more
+                ed.addShortcut('ctrl+=', '', ['subscript', false]);
+                ed.addShortcut('ctrl+shift+=', '', ['superscript', false]);
+                ed.addShortcut('ctrl+m', '', ['Indent', false]);
+                ed.addShortcut('ctrl+shift+m', '', ['Outdent', false]);
+                ed.addShortcut('ctrl+r', '', ['JustifyRight', false]);
+                ed.addShortcut('ctrl+l', '', ['JustifyLeft', false]);
+                ed.addShortcut('ctrl+e', '', ['JustifyCenter', false]);
+                ed.addShortcut('ctrl+j', '', ['JustifyFull', false]);
+                ed.addShortcut('ctrl+k', '', ['mceLink', false]);
+                ed.addShortcut('ctrl+shift+k', '', ['unlink', false]); // not in word, just for consistency
+
                 if ( s.theme_ez_content_css )
                 {
                     var css_arr = s.theme_ez_content_css.split(',');
@@ -1167,7 +1180,7 @@
         {
             if ( className ) className = ' ' + className + ' ';
             tag = ',' + tag.toUpperCase() + ',';
-            while ( n !== undefined && n.nodeName !== undefined && n.nodeName !== 'BODY' )
+            while ( n !== undefined && n !== null && n.nodeName !== undefined && n.nodeName !== 'BODY' )
             {
                 if ( checkElement && tag.indexOf( ',' + n.nodeName + ',' ) !== -1
                 && ( !className || (' ' + n.className + ' ').indexOf( className ) !== -1 ) 
