Переключение раскладки (Rus/Lat) выделенного текста
Позволяет переключить выделенный текст в форме ответа с русской на латинскую раскладку и наоборот.

http://forumfiles.ru/uploads/0007/e3/f7/2617/955986.png

Автор: satsana
Платформа: MyBB
ОТ автора:
Исходник: скрипт переключения раскладки от Deff.
Убрала вставку/удаление бб-кодов. (Они не совсем корректно работали с запоминалками введённого текста.)  Заменила на определение позиций начала/конца выделенного текста.
Изменила принцип переключения языка, теперь скрипт распознаёт раскладку в выделенной области. При захвате текста с разными раскладками "переводит" участок с латиницей в русскую раскладку. (Если таких участков несколько - переводится только первый из них.)
Добавила смену раскладки для знаков препинания и спецсимволов.
Achtung! Скрипт может не работать в старых версиях IE. Надеюсь, никто уже ими не пользуется...

Код:
    <!--Переключение раскладки выделенного текста v.2 -->
    <style>#button-transL{background-image:url(http://uploads.ru/i/X/j/Z/XjZW7.png)}</style>
    <script type="text/javascript">S='<img src="http://forum.mybb.ru/i/blank.gif" title="Lat ↔ Рус" onclick="LatRus();"/>';
    $("#button-font").after('<td id=button-transL>'+S+'</td>');
    function LatRus(){
    lat0='|@#$^&/?qwertyuiopasdfghjkl;\'zxcvbnm,QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM<>`~[].'.split('');
    lat='qwertyuiopasdfghjkl;\'zxcvbnm\,QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM<>`~'.split('');
    lat.push('\\[','\\]','\\.','\\?','\\/','\\&','\\^','\\$','\\#','\\@','\\|');
    rus0=('йцукенгшщзфывапролджэячсмитьбЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮёЁхъю,.?:;№"/').split('');
    rus=('\,йцукенгшщзфывапролджэячсмитьбЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮёЁхъю').split('');
    rus.unshift ('\\/','\\"','\\№','\\;','\\:','\\?','\\.');
    var selstart = document.getElementById("main-reply").selectionStart;
    var selend = document.getElementById("main-reply").selectionEnd;
    L=$('#main-reply').val();
    if (typeof selstart === "number" && typeof selend === "number"){
    var TxtTrans1 = (L.substring(selstart,selend).search(/[qwertyuiopasdfghjklzxcvbnm]/i)!=-1?'rus':'lat');
    var ar2=lat0,ar1=rus; if(TxtTrans1=='rus'){ar1=lat;ar2=rus0;
    selstart+=L.substring(selstart,selend).search(/[.,]*?[qwertyuiopasdfghjklzxcvbnm]/i); latend=L.substring(selstart,selend).search(/[йцукенгшщзфывапролджэячсмитьёхъю]/i);
    if (latend != -1) {selend = selstart+latend;}}
    L=L.substring(0,selstart) + L.substring(selstart,selend).replace(/[\s\S]*/mg,function(p){
    for(var i=0; i<ar1.length; i++){trans='/'+ar1[i]+'/g';p=p.replace(eval(trans), ar2[i])}return p;}) + L.substring(selend);}$('#main-reply').val(L);}</script>