Гром, не так сложно оказалось.
Кривоватый язык, сборище разнородных иерархий классов, и самое жуткое - различие реализаций в браузерах.
В smf реализовали поддержку IE (6, а может и 5), Mozilla (и многие производные от нее), а несовместимые с ними браузеры лишены сервиса.
Я использовал их ф-ии stringReplace() и stringSurround(), переработав их немного. Добавил такую вещь, как откат (undo) - я думаю при далеко не визуальной разметке полезно иметь возможность откатить изменения. Тем более, что браузеры не откатывают программно сделанные изменения текстовых полей.
Сейчас работаю над более удобным предпросмотром.
С перекодировкой статей сложнее. Разбирать и придумывать метод конвертации буду сравнительно долго: в базе 190 статей! Вот не думал, что столько бывает