All the selected form tag that has textarea for editing, replace it with a function call, say
OpenEditorForm( $browser, $os, $form_name, $action, $method, $input_names_separated_by_comma, $misc_para);Then for those input textarea tag for actual editing, replace it with another function call, say
PutEditor( $browser, $os, $col, $row, $input_name, $input_value );
CloseEditorForm();These functions are defined by module namely, for example, "WYSIWYG".
In OpenEditorForm, one will create "different" textarea for different browser, e.g. different Javascript, IFrame for IE, etc.., so there is room for creativity. But the key is the input_names which is basically used for associating individual input text area with javascript functions, or better yet dynamically generate javascript functions (but bear in mind it may impose performance issues.)
In PutEditor, those names previously defined in OpenEditorForm() will invoke whatever Javascript you have defined plus all the dimension needed for the textarea or IFrame (if you prefer IE only solution).
You may want to use DOM to manipulate the control of textarea along with mouse click on different areas on the "graphic menu bar".
This approach allow a whole new set of cool development for WYSIWYG editor plug-in and the rest of the open source community can have more choices and of course the freedom to choose which editor they want to use without a lot of hassle.
Just my two cents.