Hola:
Me parece que el código que usas no vale en mozilla... y creo que lo que pides es muy difícil de implementar, aunque no imposible...
Este mismo editor (el de nuestros foros) no controla esa condición, y sin duda es bastante más complejo que el código que muestras (no lo vayas a tomar mal)
Aprovecho para poner un enlace a un editor que también vale con mozilla:
http://www.pepemolina.com/editor/index.html
Una forma de llevar ese control es ampliando la selección tantos caracteres antes y después del texto seleccionado para comprobar si son un BBCode pero sería difícil controlar anidamientos [B][i][B][i]...
Saludos