﻿/* By AllCity
   http://allcity.net.ru/
   Vesrion 0.3.5 beta 2
   03.05.2008
*/

// Функция транслита НАЧАЛО
var t={
message:document.getElementById("message"),
mSet:0,

// Раскладка букв
mSets:[[{A:"А",a:"а",B:"Б",b:"б",V:"В",v:"в",G:"Г",g:"г",D:"Д",d:"д",E:"Е",e:"е",Z:"З",z:"з",I:"И",i:"и",J:"Й",j:"й",K:"К",k:"к",L:"Л",l:"л",M:"М",m:"м",N:"Н",n:"н",O:"О",o:"о",P:"П",p:"п",R:"Р",r:"р",S:"С",s:"с",T:"Т",t:"т",U:"У",u:"у",F:"Ф",f:"ф",X:"Х",x:"х",H:"Х",h:"х",C:"Ц",c:"ц",W:"В",w:"в","ъъ":"Ъ","\u0022":"ъ",Y:"Ы",y:"ы","ьь":"Ь","\u0027":"ь",A:"Э",a:"э",O:"Ё",o:"ё",U:"Ю",u:"ю","#":"№",ЙЕ:"Э",Йе:"Э",йе:"э",ЙО:"Ё",Йо:"Ё",йо:"ё",ЫО:"Ё",Ыо:"Ё",ыо:"ё",ЙУ:"Ю",Йу:"Ю",йу:"ю",ЫУ:"Ю",Ыу:"Ю",ыу:"ю",Q:"Я",q:"я",ЙА:"Я",Йа:"Я",йа:"я",ЫА:"Я",Ыа:"Я",ыа:"я",ЦХ:"Ч",Цх:"Ч",цх:"ч",СХ:"Ш",Сх:"Ш",сх:"ш",ЗХ:"Ж",Зх:"Ж",зх:"ж",ШХ:"Щ",Шх:"Щ",шх:"щ","#":"№"},{А:"A",а:"a",Б:"B",б:"b",В:"V",в:"v",Г:"G",г:"g",Д:"D",д:"d",Е:"E",е:"e",Ё:"Jo",ё:"jo",Ж:"Zh",ж:"zh",З:"Z",з:"z",И:"I",и:"i",Й:"J",й:"j",К:"K",к:"k",Л:"L",л:"l",М:"M",м:"m",Н:"N",н:"n",О:"O",о:"o",П:"P",п:"p",Р:"R",р:"r",С:"S",с:"s",Т:"T",т:"t",У:"U",у:"u",Ф:"F",ф:"f",Х:"H",х:"h",Ц:"C",ц:"c",Ч:"Ch",ч:"ch",Ш:"Sh",ш:"sh",Щ:"Shh",щ:"shh",Ъ:"\"\"",ъ:"\"",Ы:"Y",ы:"y",Ь:"''",ь:"'",Э:"Je",э:"je",Ю:"Ju",ю:"ju",Я:"Ja",я:"ja","№":"#"}]], // Русский язык Universal

// Фокус над таблицей (message)
fc:function(){
document.getElementById("message").focus();
},

// Обнаружение HTML и BB тегов
Tags:function(){
var tst=document.getElementById("translitTags");
if(t.mTags){
tst.className="TranslitOn";tst.title="Включить обнаружение HTML и BB тегов";
}
else
{
tst.className="TranslitOff";tst.title="Отключить обнаружение HTML и BB тегов";
}
t.mTags=!t.mTags;t.fc();
},

// Кириллица - Латиница
go:function(dir)
{
var message=document.getElementById("message");
if(message.value=="")return;
var text="";
if (message.selectionStart >= 0)
{
var s = message.selectionStart;
var e = message.selectionEnd;
if (s != e)
{
var l = message.value.substring(0, s);
var r = message.value.substring(e, message.value.length);
text = (dir)?t._gob(message.value.substring(s, e)):t._gof(message.value.substring(s, e));
message.value = l + text + r;
message.selectionStart = s;
message.selectionEnd = s + text.length;
}
else
{
var l = message.value.substring(0, s);l = (dir)?t._gob(l):t._gof(l);message.value = (dir)?t._gob(message.value):t._gof(message.value);message.selectionStart = message.selectionEnd = l.length;
}
}
else if (document.selection)
{
message.focus();
var sel = document.selection.createRange();
if (sel.text) {sel.text = (dir)?t._gob(sel.text):t._gof(sel.text);}
else message.value = (dir)?t._gob(message.value):t._gof(message.value);
} 
else message.value = (dir)?t._gob(message.value):t._gof(message.value);
message.focus();
},

// Функция обнаружение HTML и BB тегов
_gof:function(text){
var cy = "";
var prev = "";
t.iTag=false;
var ctr=false;
if(t.mTags&&(text.search(/[\[\]<>]/)!=-1)) ctr = true;
for (i=0;i<text.length;i++){
if (ctr){
if (text.substr(i,1)=="["||text.substr(i,1)=="<") {t.iTag=true;cy += text.substr(i,1);prev = text.substr(i,1);continue;}
else if (text.substr(i,1)=="]"||text.substr(i,1)==">") {t.iTag=false;cy += text.substr(i,1);prev = text.substr(i,1);continue;}
if(t.iTag) {cy += text.substr(i,1);prev = text.substr(i,1);continue;}
}
var langText = t.mSets[t.mSet][0][text.substr(i,1)];
if(!langText)langText=text.substr(i,1);
var langDuo = t.mSets[t.mSet][0][prev + langText];
if (langDuo && prev) {cy = cy.substr(0,cy.length-1) + langDuo;prev = langDuo;}
else {cy += langText;
prev = langText;}}
return cy;},

_gob:function(text){
var tr = "";
for (i=0;i<text.length;i++)
{if (t.mSets[t.mSet][1][text.substr(i,1)]) tr += t.mSets[t.mSet][1][text.substr(i,1)];
else tr += text.substr(i,1);}
return tr;},

cnv:function(e)
{
var pos = "", prev1 = "";
var message = document.getElementById("message");
if (message.selectionStart>=0)
{
pos = message.selectionStart;
prev1 = message.value.charAt(pos-1);
}
else if (document.selection)
var langText = t.mSets[t.mSet][0][keychar];
if (!langText) langText = keychar;
var langDuo = t.mSets[t.mSet][0][prev1 + langText];
if (langDuo && prev1)
{
t.c(langDuo,2);
return false;
}
else if (langText)
{
t.c(langText);
return false;
}
else
{
return true;
}
}

}
// Функция транслита КОНЕЦ
