Initial work on the plugin architecture.
On extension init, we run the init() method defined by all plugins. If a plugin
returns true, we'll use that as the main plugin.
Implement the initial gmail plugin, using most of the work on the
previously-used parser.js. We no longer use parser.js.
Remove the elementMain object, and just use .element (e.target) instead, to target the element from where the autocomplete was triggered.
Replace the data.gmailView functionlity with data.contentEditable.
On focus, we check if the element has the contenteditable property, or is a standard form element.
Begin work on the Yahoo Mail plugin.
Plugin architecture is mostly done, but still needs some work and guidelines, on the format of the data sent from the plugin (from, to, subject, etc.) to the main script.
Minor cleanup in the gmail plugin, to be clear about what re're returning in the
response.
Added some documentation about the plugins in the readme.
Fix issues with getSelectedWord, when the last character of the selection was a
space, and the word returned was '', by using trim() on the selected string.
Fix a long-stading issue when the autocomplete dialog was triggered with an
automatic first word selection, without manually-selected text.
The issue was caused by the fact that after triggering the dialog.close method,
the focus doesn't return to the editor right away, but has a slight delay.
This caused the window.getSelection() method to return the selection from the
dialog search field, instead of the selection in the editor.
Create a general method for traversing the DOM in search for the next tabindex
item (for when moving to the next button with Tab, and tab is assigned as the
autocomplete shortcut), so we don't have to manually do this in each plugin.
Refactor the dialog.close() callback functionality, since it was breaking the
Tab autocompletion.
Use an array of regexs to activate the pageAction in the background script.
Add an extra array of chrome match patterns, for auto-reloading.
Complete very basic yahoo plugin, without all the required details.
Remove the forced focus from dialog.close and move it to a separate function,
called only on Enter, Esc, and when activating a quicktext.
This is because the dialog.close method, also called on blur, was forcing the
focus to return to the editor, every time you clicked on another input field.
Begin work on the Outlook plugin.
Complete the initial version of the outlook plugin.
Refactor the focusNext method to work as close as the native functionality as
possible.
Outlook.com tab-switching from field to field still doesn't work, because it
uses custom js-events.