// Por formi aliajn alfabetojn per la klavoj kiuj estas en cxiu klavaro
// Aŭtoro: Bart Demeyere
//   Cirila kaj Greka alfabeto: Ikar Akimenko
// 2011-02-24
// Elekteblaj licenzoj: MIT, BSD, GPL

$(document).ready(function(){
  $('.Esperanta').xAlfabeto();
  $('.Latina').xAlfabeto();
  $('.Cirila').xAlfabeto();
  $('.Greka').xAlfabeto();
  $('.Nenia').xAlfabeto();
  if ($.cookie('sxangxiLiterojn') != 'false')
    $.cookie('sxangxiLiterojn', 'true');
});

function getCaret (ctrl) {
	if (document.selection) {	// IE Support
    ctrl.focus ();
    var r = document.selection.createRange();
    if (r == null) {
      return 0;
    }
    var re = ctrl.createTextRange(),
        rc = re.duplicate();
    re.moveToBookmark(r.getBookmark());
    rc.setEndPoint('EndToStart', re);
    return rc.text.length;
	}
	else if (ctrl.selectionStart || ctrl.selectionStart == '0')// Firefox support
		return ctrl.selectionStart;
	return 0;
}
function setCaret(ctrl, pos){
	if(ctrl.setSelectionRange)
	{
		ctrl.focus();
		ctrl.setSelectionRange(pos,pos);
	}
	else if (ctrl.createTextRange) {
		var range = ctrl.createTextRange();
		range.collapse(true);
		range.moveEnd('character', pos);
		range.moveStart('character', pos);
		range.select();
	}
}

(function($){$.fn.xAlfabeto=function(j){
  var l=jQuery.extend({
    esperanta:{C:"Ĉ","c":"ĉ",G:"Ĝ",g:"ĝ",H:"Ĥ",h:"ĥ",J:"Ĵ",j:"ĵ",S:"Ŝ",s:"ŝ",U:"Ŭ",u:"ŭ",Ĉ:"Cx",ĉ:"cx",Ĝ:"Gx",ĝ:"gx",Ĥ:"Hx",ĥ:"hx",Ĵ:"Jx",ĵ:"jx",Ŝ:"Sx",ŝ:"sx",Ŭ:"Ux",ŭ:"ux"},
    latinaSxangxosignoj:"'`:^(.,_/~0°€)",
    latinaSxangxosignoj2:"'",
    latina:{
      "a'":"á","á'":"a'",
      "A'":"Á","Á'":"A'",
      "a`":"à","à`":"a`",
      "A`":"À","À`":"A`",
      "a^":"â","â^":"a^",
      "A^":"Â","Â^":"A^",
      "a~":"ã","ã~":"a~",
      "A~":"Ã","Ã~":"A~",
      "a:":"ä","ä:":"a:",
      "A:":"Ä","Ä:":"A:",
      "a°":"å","å°":"a°",
      "A°":"Å","Å°":"A°",
      "a)":"æ","æ)":"a)",
      "A)":"Æ","Æ)":"A)",
      "a€":"æ","æ€":"a€",
      "A€":"Æ","Æ€":"A€",
      "c'":"ć","ć'":"c'",
      "C'":"Ć","Ć'":"C'",
      "c^":"ĉ","ĉ^":"c^",
      "C^":"Ĉ","Ĉ^":"C^",
      "c`'":"č","č'":"c`'",
      "C`'":"Č","Č'":"C`'",
      "c.":"ċ","ċ.":"c.",
      "C.":"Ċ","Ċ.":"C.",
      "c,":"ç","ç,":"c,",
      "C,":"Ç","Ç,":"C,",
      "d_":"ð","ð_":"d_",
      "D_":"Ð","Ð_":"D_",
      "e'":"é","é'":"e'",
      "E'":"É","É'":"E'",
      "e`":"è","è`":"e`",
      "E`":"È","È`":"E`",
      "e^":"ê","ê^":"e^",
      "E^":"Ê","Ê^":"E^",
      "e~":"ẽ","ẽ~":"e~",
      "E~":"Ẽ","Ẽ~":"E~",
      "e:":"ë","ë:":"e:",
      "E:":"Ë","Ë:":"E:",
      "e_":"ē","ē_":"e_",
      "E_":"Ē","Ē_":"E_",
      "e(":"ĕ","ĕ(":"e(",
      "E(":"Ĕ","Ĕ(":"E(",
      "e,":"ę","ę,":"e,",
      "E,":"Ę","Ę,":"E,",
      "g'":"ǵ","ǵ'":"g'",
      "G'":"Ǵ","Ǵ'":"G'",
      "G,":"Ģ","Ģ,":"G,",
      "g^":"ĝ","ĝ^":"g^",
      "G^":"Ĝ","Ĝ^":"G^",
      "g(":"ğ","ğ(":"g(",
      "G(":"Ğ","Ğ(":"G(",
      "g.":"ġ","ġ.":"g.",
      "G.":"Ġ","Ġ.":"G.",
      "h^":"ĥ","ĥ^":"h^",
      "H^":"Ĥ","Ĥ^":"H^",
      "h_":"ħ","ħ_":"h_",
      "H_":"Ħ","Ħ_":"H_",
      "i'":"í","í'":"i'",
      "I'":"Í","Í'":"I'",
      "i`":"ì","ì`":"i`",
      "I`":"Ì","Ì`":"I`",
      "i^":"î","î^":"i^",
      "I^":"Î","Î^":"I^",
      "i~":"ĩ","ĩ~":"i~",
      "I~":"Ĩ","Ĩ~":"I~",
      "i:":"ï","ï:":"i:",
      "I:":"Ï","Ï:":"I:",
      "i_":"ī","ī_":"i_",
      "I_":"Ī","Ī_":"I_",
      "i(":"ĭ","ĭ(":"i(",
      "I(":"Ĭ","Ĭ(":"I(",
      "i,":"į","į,":"i,",
      "I,":"Į","Į,":"I,",
      "i)":"ĳ","ĳ)":"i)",
      "I)":"Ĳ","Ĳ)":"I)",
      "i.":"ı","ı.":"i.",
      "I.":"İ","İ.":"I.",
      "j^":"ĵ","ĵ^":"j^",
      "J^":"Ĵ","Ĵ^":"J^",
      "k,":"ķ","ķ,":"k,",
      "K,":"Ķ","Ķ,":"K,",
      "k/":"ĸ","ĸ/":"k/",
      "l'":"ĺ","ĺ'":"l'",
      "L'":"Ĺ","Ĺ'":"L'",
      "l`":"ľ","ľ`":"l`",
      "L`":"Ľ","Ľ`":"L`",
      "l.":"ŀ","ŀ.":"l.",
      "L.":"Ŀ","Ŀ.":"L.",
      "l/":"ł","ł/":"l/",
      "L/":"Ł","Ł/":"L/",
      "n'":"ń","ń'":"n'",
      "N'":"Ń","Ń'":"N'",
      "n,":"ņ","ņ,":"n,",
      "N,":"Ņ","Ņ,":"N,",
      "n`'":"ň","ň'":"n`'",
      "N`'":"Ň","Ň'":"N`'",
      "n)":"ŋ","ŋ)":"n)",
      "N)":"Ŋ","Ŋ)":"N)",
      "n~":"ñ","ñ~":"n~",
      "N~":"Ñ","Ñ~":"N~",
      "n`":"ŉ","ŉ`":"n`",
      "o'":"ó","ó'":"o'",
      "O'":"Ó","Ó'":"O'",
      "o`":"ó","ó`":"o`",
      "O`":"Ó","Ó`":"O`",
      "o^":"ô","ô^":"o^",
      "O^":"Ô","Ô^":"O^",
      "o~":"õ","õ~":"o~",
      "O~":"Õ","Õ~":"O~",
      "o:":"ö","ö:":"o:",
      "O:":"Ö","Ö:":"O:",
      "o/":"ø","ø/":"o/",
      "O/":"Ø","Ø/":"O/",
      "o_":"ō","ō_":"o_",
      "O_":"Ō","Ō_":"O_",
      "o(":"ŏ","ŏ(":"o(",
      "O(":"Ŏ","Ŏ(":"O(",
      "o)":"œ","œ)":"o)",
      "O)":"Œ","Œ)":"O)",
      "o€":"œ","œ€":"o€",
      "O€":"Œ","Œ€":"O€",
      "r'":"ŕ","ŕ'":"r'",
      "R'":"Ŕ","Ŕ'":"R'",
      "r,":"ŗ","ŗ,":"r,",
      "R,":"Ŗ","Ŗ,":"R,",
      "r`'":"ř","ř'":"r`'",
      "R`'":"Ř","Ř'":"R`'",
      "s'":"ś","ś'":"s'",
      "S'":"Ś","Ś'":"S'",
      "s^":"ŝ","ŝ^":"s^",
      "S^":"Ŝ","Ŝ^":"S^",
      "s,":"ş","ş,":"s,",
      "S,":"Ş","Ş,":"S,",
      "s`'":"Š","Š'":"s`'",
      "S`'":"š","š'":"S`'",
      "s)":"ß","ß)":"s)",
      "t,":"ţ","ţ,":"t,",
      "T,":"Ţ","Ţ,":"T,",
      "t`'":"ť","ť'":"t`'",
      "T`'":"Ť","Ť'":"T`'",
      "t_":"ŧ","ŧ_":"t_",
      "T_":"Ŧ","Ŧ_":"T_",
      "t'":"þ","þ'":"t'",
      "T'":"Þ","Þ'":"T'",
      "u'":"ú","ú'":"u'",
      "U'":"Ú","Ú'":"U'",
      "u`":"ù","ù`":"u`",
      "U`":"Ú","Ú`":"U`",
      "u^":"û","û^":"u^",
      "U^":"Ü","Ü^":"U^",
      "u~":"ũ","ũ~":"u~",
      "U~":"Ũ","Ũ~":"U~",
      "u:":"ü","ü:":"u:",
      "U:":"Ü","Ü:":"U:",
      "u_":"ū","ū_":"u_",
      "U_":"Ū","Ū_":"U_",
      "u(":"ŭ","ŭ(":"u(",
      "U(":"Ŭ","Ŭ(":"U(",
      "u°":"ů","ů°":"u°",
      "U°":"Ů","Ů°":"U°",
      "u,":"Ų","Ų,":"u,",
      "U,":"ų","ų,":"U,",
      "w^":"ŵ","ŵ^":"w^",
      "W^":"Ŵ","Ŵ^":"W^",
      "y^":"ŷ","ŷ^":"y^",
      "Y^":"Ŷ","Ŷ^":"Y^",
      "y'":"ý","ý'":"y'",
      "Y'":"Ý","Ý'":"Y'",
      "y:":"ÿ","ÿ:":"y:",
      "Y:":"Ÿ","Ÿ:":"Y:",
      "z'":"ź","ź'":"z'",
      "Z'":"Ź","Ź'":"Z'",
      "z.":"ż","ż.":"z.",
      "Z.":"Ż","Ż.":"Z.",
      "z`'":"ž","ž'":"z`'",
      "Z`'":"Ž","Ž'":"Z`'"
    },
    cirilaSxangxosignoj:"'`:xX^(.,_/~°€)eEoOiIjJ",
    cirilaSxangxosignoj2:"xX",
    cirila:{
      // unue la 'malfacilaj' kombinoj, por ke oni povu fari cxiujn kombinojn de
      // literoj, eble ja unue metante spaceton inter ili kaj post forigi gxin
      "шцx":"щ","щx":"шцx", // 2
      "ШЦX":"Щ","ЩX":"ШЦX", // 2
      "йj":"ь",//"ьj":"йj", // 2
      "ЙJ":"Ь",//"ЬJ":"ЙJ", // 2
      "йu":"ю",//"юu":"йu", // 2
      "ЙU":"Ю",//"ЮU":"ЙU", // 2
      "йa":"я",//"яa":"йa", // 2
      "ЙA":"Я",//"ЯA":"ЙA", // 2
      "йi":"ї",//"їi":"йi", // 3   /// cirila й kaj latina i al cirila ї
      "ЙI":"Ї",//"ЇI":"ЙI", // 3   /// cirila Й kaj latina I al cirila Ї

      "a":"а",
      "A":"А",
      "а(":"ӑ","ӑ(":"а(", //// U+04D1
      "А(":"Ӑ","Ӑ(":"А(", //// U+04D0
      "а:":"ӓ","ӓ:":"а:", //// U+04D3
      "А:":"Ӓ","Ӓ:":"А:", //// U+04D2
      "аx":"ә","әx":"аx",
      "АX":"Ә","ӘX":"АX",
      "ә:":"ӛ","ӛ:":"ә:", //// U+04DB
      "Ә:":"Ӛ","Ӛ:":"Ә:", //// U+04DA
      "а)":"ӕ","ӕ)":"а)", //// U+04D5
      "А)":"Ӕ","Ӕ)":"А)", //// U+04D4
      "а€":"ӕ","ӕ€":"а€", //// U+04D5
      "А€":"Ӕ","Ӕ€":"А€", //// U+04D4
      "b":"б",
      "B":"Б",
      "v":"в",
      "V":"В",
      "g":"г",
      "G":"Г",
      "г'":"ѓ","ѓ'":"г'",
      "Г'":"Ѓ","Ѓ'":"Г'",
      "h":"ґ",
      "H":"Ґ",
      "г_":"ғ","ғ_":"г_",
      "Г_":"Ғ","Ғ_":"Г_",
      "г)":"ҕ","ҕ)":"г)", //// U+0495
      "Г)":"Ҕ","Ҕ)":"Г)", //// U+0494
      "г,":"ӷ","ӷ,":"г,", //// U+04F7
      "Г,":"Ӷ","Ӷ,":"Г,", //// U+04F6
      "d":"д",
      "D":"Д",
      "gx":"ђ","ђx":"gx", // 1
      "GX":"Ђ","ЂX":"GX", // 1
      "гx":"ђ","ђx":"гx", // 2
      "ГX":"Ђ","ЂX":"ГX", // 2
      "дx":"ђ","ђx":"дx", // 3
      "ДX":"Ђ","ЂX":"ДX", // 3
      "д_":"ђ","ђ_":"д_", // 4
      "Д_":"Ђ","Ђ_":"Д_", // 4
      "з,":"ҙ","ҙ,":"з,",
      "З,":"Ҙ","Ҙ,":"З,",
      "йe":"е",//"еe":"йe",
      "ЙE":"Е",//"ЕE":"ЙE",
      "е`":"ѐ","ѐ`":"е`", ////
      "Е`":"Ѐ","Ѐ`":"Е`", ////
      "е(":"ӗ","ӗ(":"е(", //// U+04D7
      "Е(":"Ӗ","Ӗ(":"Е(", //// U+04D6
      "йo":"ё",//"ёo":"йo", // 1
      "ЙO":"Ё",//"ЁO":"ЙO", // 1
      "е:":"ё","ё:":"е:", // 2
      "Е:":"Ё","Ё:":"Е:", // 2
      "еx":"є","єx":"еx", // 1
      "ЕX":"Є","ЄX":"ЕX", // 1
      "эx":"є","єx":"эx", // 2
      "ЭX":"Є","ЄX":"ЭX", // 2
      "jx":"ж","жx":"jx", // 1
      "JX":"Ж","ЖX":"JX", // 2
      "йx":"ж","жx":"йx", // 1
      "ЙX":"Ж","ЖX":"ЙX", // 2
      "ж(":"ӂ","ӂ(":"ж(", //// U+04C2
      "Ж(":"Ӂ","Ӂ(":"Ж(", //// U+04C1
      "ж:":"ӝ","ӝ:":"ж:", //// U+04DD
      "Ж:":"Ӝ","Ӝ:":"Ж:", //// U+04DC
      "ж,":"җ","җ,":"ж,",
      "Ж,":"Җ","Җ,":"Ж,",
      "z":"з",
      "Z":"З",
      "з:":"ӟ","ӟ:":"з:", //// U+04DF
      "З:":"Ӟ","Ӟ:":"З:", //// U+04DE
      "зx":"ѕ","ѕx":"зx",
      "ЗX":"Ѕ","ЅX":"ЗX",
      "з_":"ӡ","ӡ_":"з_", //// U+04E1
      "З_":"Ӡ","Ӡ_":"З_", //// U+04E0
      "з/":"ζ","ζ/":"з/",
      "З/":"Ζ","Ζ/":"З/",
      "i":"и",   /// latina i al cirila и
      "I":"И",   /// latina I al cirila И
      "и`":"ѝ","ѝ`":"и`", ////
      "И`":"Ѝ","Ѝ`":"И`", ////
      "j":"й", // 1
      "J":"Й", // 1
      "и(":"й","й(":"и(", // 2
      "И(":"Й","Й(":"И(", // 2
      "и:":"ӥ","ӥ:":"и:", //// U+04E5
      "И:":"Ӥ","Ӥ:":"И:", //// U+04E4
      "и_":"ӣ","ӣ_":"и_", //// U+04E3
      "И_":"Ӣ","Ӣ_":"И_", //// U+04E2
      "й,":"ҋ","ҋ,":"й,", //// U+048B
      "Й,":"Ҋ","Ҋ,":"Й,", //// U+048A
      "и.":"і","і.":"и.",   /// cirila и. al cirila і
      "И.":"І","І.":"И.",   /// cirila И. al cirila І
      "і.":"ї","ї.":"і.", // 1   /// cirila і. al cirila ї
      "І.":"Ї","Ї.":"І.", // 1   /// cirila І. al cirila Ї
      "і:":"ї","ї:":"і:", // 2   /// cirila і: al cirila ї
      "І:":"Ї","Ї:":"І:", // 2   /// cirila І: al cirila Ї
      "й)":"ј","ј)":"й)", // 1   /// cirila й) al cirila ј
      "Й)":"Ј","Ј)":"Й)", // 1   /// cirila Й) al cirila Ј
      "і)":"ј","ј)":"і)", // 2   /// cirila і) al cirila ј
      "І)":"Ј","Ј)":"І)", // 2   /// cirila І) al cirila Ј
      "k":"к",
      "K":"К",
      "к'":"ќ","ќ'":"к'",
      "К'":"Ќ","Ќ'":"К'",
      "к,":"қ","қ,":"к,",
      "К,":"Қ","Қ,":"К,",
      "к)":"ӄ","ӄ)":"к)", ////
      "К)":"Ӄ","Ӄ)":"К)", ////
      "к`":"ҡ","ҡ`":"к`", ////
      "К`":"Ҡ","Ҡ`":"К`", ////
      "к_":"ҟ","ҟ_":"к_", //// U+049F
      "К_":"Ҟ","Ҟ_":"К_", //// U+049E
      "к/":"ҝ","ҝ/":"к/", //// U+049D
      "К/":"Ҝ","Ҝ/":"К/", //// U+049C
      "l":"л",
      "L":"Л",
      "л,":"ӆ","ӆ,":"л,", //// U+04C6
      "Л,":"Ӆ","Ӆ,":"Л,", //// U+04C5
      "л)":"љ","љ)":"л)",
      "Л)":"Љ","Љ)":"Л)",
      "m":"м",
      "M":"М",
      "м,":"ӎ","ӎ,":"м,", //// U+04CE
      "М,":"Ӎ","Ӎ,":"М,", //// U+04CD
      "n":"н",
      "N":"Н",
      "н~":"ӈ","ӈ~":"н~", ////
      "Н~":"Ӈ","Ӈ~":"Н~", ////
      "н'":"ң","ң'":"н'", ////
      "Н'":"Ң","Ң'":"Н'", ////
      "н,":"ӊ","ӊ,":"н,", //// U+04CA
      "Н,":"Ӊ","Ӊ,":"Н,", //// U+04C9
      "н_":"ҥ","ҥ_":"н_", //// U+04A5
      "Н_":"Ҥ","Ҥ_":"Н_", //// U+04A4
      "н)":"њ","њ)":"н)",
      "Н)":"Њ","Њ)":"Н)",
      "o":"о",
      "O":"О",
      "о:":"ӧ","ӧ:":"о:", //// U+04E7
      "О:":"Ӧ","Ӧ:":"О:", //// U+04E6
      "о_":"ө","ө_":"о_", //// U+4E9
      "О_":"Ө","Ө_":"О_", //// U+4E8
      "ө:":"ӫ","ӫ:":"ө:", //// U+04EB
      "Ө:":"Ӫ","Ӫ:":"Ө:", //// U+04EA
      "p":"п",
      "P":"П",
      "п)":"ҧ","ҧ)":"п)", //// U+04A7
      "П)":"Ҧ","Ҧ)":"П)", //// U+04A6
      "с/":"ҁ","ҁ/":"с/", //// U+0481
      "С/":"Ҁ","Ҁ/":"С/", //// U+0480
      "r":"р",
      "R":"Р",
      "р/":"ҏ","ҏ/":"р/", //// U+048F
      "Р/":"Ҏ","Ҏ/":"Р/", //// U+048E
      "s":"с",
      "S":"С",
      "с,":"ҫ","ҫ,":"с,",
      "С,":"Ҫ","Ҫ,":"С,",
      "t":"т",
      "T":"Т",
      "т,":"ҭ","ҭ,":"т,", //// U+04AD
      "Т,":"Ҭ","Ҭ,":"Т,", //// U+04AC
      "ч_":"ћ","ћ_":"ч_", // 1
      "Ч_":"Ћ","Ћ_":"Ч_", // 1
      "т)":"ћ","ћ)":"т)", // 2
      "Т)":"Ћ","Ћ)":"Т)", // 2
      "u":"у",
      "U":"У",
      "у(":"ў","ў(":"у(",   // 1
      "У(":"Ў","Ў(":"У(",   // 1
      "уx":"ў","ўx":"уx",   // 2
      "УX":"Ў","ЎX":"УX",   // 2
      "w":"ў",   // 3
      "W":"Ў",   // 3
      "у:":"ӱ","ӱ:":"у:", //// U+04F1
      "У:":"Ӱ","Ӱ:":"У:", //// U+04F0
      "у~":"ӳ","ӳ~":"у~", //// U+04F3
      "У~":"Ӳ","Ӳ~":"У~", //// U+04F2
      "у_":"ӯ","ӯ_":"у_", ////
      "У_":"Ӯ","Ӯ_":"У_", ////
      "у,":"ү","ү,":"у,",
      "У,":"Ү","Ү,":"У,",
      "у/":"ұ","ұ/":"у/",
      "У/":"Ұ","Ұ/":"У/",
      "у°":"ѹ","ѹ°":"у°", //// U+0479
      "У°":"Ѹ","Ѹ°":"У°", //// U+0478
      "f":"ф",
      "F":"Ф",
      "hx":"х","хx":"hx", // 1
      "HX":"Х","ХX":"HX", // 1
      "ґx":"х","хx":"ґx", // 2
      "ҐX":"Х","ХX":"ҐX", // 2
      "х,":"ҳ","ҳ,":"х,",
      "Х,":"Ҳ","Ҳ,":"Х,",
      "h/":"һ","һ/":"h/", // 1
      "H/":"Һ","Һ/":"H/", // 1
      "ґ/":"һ","һ/":"ґ/", // 2
      "Ґ/":"Һ","Һ/":"Ґ/", // 2
      "о°":"ѡ","ѡ°":"о°", //// U+0461
      "О°":"Ѡ","Ѡ°":"О°", //// U+0460
      "ѡ~":"ѿ","ѿ~":"ѡ~", //// U+047F
      "Ѡ~":"Ѿ","Ѿ~":"Ѡ~", //// U+047E
      "о/":"ѻ","ѻ/":"о/", //// U+047B
      "О/":"Ѻ","Ѻ/":"О/", //// U+047A
      "c":"ц",
      "C":"Ц",
      "ц_":"ҵ","ҵ_":"ц_", //// U+04B5
      "Ц_":"Ҵ","Ҵ_":"Ц_", //// U+04B4
      "cx":"ч","чx":"cx", // 1
      "CX":"Ч","ЧX":"CX", // 1
      "цx":"ч","чx":"цx", // 2
      "ЦX":"Ч","ЧX":"ЦX", // 2
      "ч:":"ӵ","ӵ:":"ч:", //// U+04F5
      "Ч:":"Ӵ","Ӵ:":"Ч:", //// U+04F4
      "ч,":"ҷ","ҷ,":"ч,", ////
      "Ч,":"Ҷ","Ҷ,":"Ч,", ////
      "ч'":"ӌ","ӌ'":"ч'", ////
      "Ч'":"Ӌ","Ӌ'":"Ч'", ////
      "ч/":"ҹ","ҹ/":"ч/", //// U+04B9
      "Ч/":"Ҹ","Ҹ/":"Ч/", //// U+04B8
      "е'":"ҽ","ҽ'":"е'", //// U+04BD
      "Е'":"Ҽ","Ҽ'":"Е'", //// U+04BC
      "ҽ,":"ҿ","ҿ,":"ҽ,", //// U+04BF
      "Ҽ,":"Ҿ","Ҿ,":"Ҽ,", //// U+04BE
      "ц,":"џ","џ,":"ц,",
      "Ц,":"Џ","Џ,":"Ц,",
      "sx":"ш","шx":"sx", // 1
      "SX":"Ш","ШX":"SX", // 1
      "сx":"ш","шx":"сx", // 2
      "СX":"Ш","ШX":"СX", // 2
//   t = t.replace(/sxcx/g, "щ"); // 1
//   t = t.replace(/SXCX/g, "Щ"); // 1
      "ш,":"щ","щ,":"ш,", // 3
      "Ш,":"Щ","Щ,":"Ш,", // 3
      "ь'":"ъ","ъ'":"ь'",
      "Ь'":"Ъ","Ъ'":"Ь'",
      "y":"ы",
      "Y":"Ы",
//   t = t.replace(/л//g, "ын"); //// U+A65F
      "л/":"Ꙟ","Ꙟ/":"л/", //// U+A65F   /// unicode 5.1 estas bezonata
//   t = t.replace(/Л//g, "Ын"); //// U+A65E
      "Л/":"Ꙟ","Ꙟ/":"Л/", //// U+A65E   /// unicode 5.1 estas bezonata
      "ы:":"Ӹ","Ӹ:":"ы:", ////
      "Ы:":"Ӹ","Ӹ:":"Ы:", ////
      "jj":"ь",//"ьj":"jj", // 1
      "JJ":"Ь",//"ЬJ":"JJ", // 1
      "ы/":"ь","ь/":"ы/", // 3
      "Ы/":"Ь","Ь/":"Ы/", // 3
      "ь`":"ҍ","ҍ`":"ь`", //// U+048D
      "Ь`":"Ҍ","Ҍ`":"Ь`", //// U+048C
      "e":"э",
      "E":"Э",
      "э:":"ӭ","ӭ:":"э:", //// U+04ED
      "Э:":"Ӭ","Ӭ:":"Э:", //// U+04EC
      "ju":"ю",//"юu":"ju", // 1
      "JU":"Ю",//"ЮU":"JU", // 1
      "ja":"я",//"яa":"ja", // 1
      "JA":"Я",//"ЯA":"JA", // 1
      "ь_":"ѣ","ѣ_":"ь_", // 1 //// U+0463
      "Ь_":"Ѣ","Ѣ_":"Ь_", // 1 //// U+0462
      "я_":"ѣ","ѣ_":"я_", // 2 //// U+0463
      "Я_":"Ѣ","Ѣ_":"Я_", // 2 //// U+0462
//   t = t.replace(/а//g, "іa"); //// U+A657
      "а/":"ꙗ","ꙗ/":"а/", //// U+A657   /// unicode 5.1 estas bezonata
//   t = t.replace(/А//g, "ІA"); //// U+A656
      "А/":"Ꙗ","Ꙗ/":"А/", //// U+A656   /// unicode 5.1 estas bezonata
//   t = t.replace(/ь//g, "іѣ"); // 1 //// U+A653
      "ь/":"ꙓ","ꙓ/":"ь/", // 1 //// U+A653   /// unicode 5.1 estas bezonata
//   t = t.replace(/Ь//g, "ІѢ"); // 1 //// U+A652
      "Ь/":"Ꙓ","Ꙓ/":"Ь/", // 1 //// U+A652   /// unicode 5.1 estas bezonata
//   t = t.replace(/ѣ//g, "іѣ"); // 2 //// U+A653
      "ѣ/":"ꙓ","ꙓ/":"ѣ/", // 2 //// U+A653   /// unicode 5.1 estas bezonata
//   t = t.replace(/Ѣ//g, "ІѢ"); // 2 //// U+A652
      "Ѣ/":"Ꙓ","Ꙓ/":"Ѣ/", // 2 //// U+A652   /// unicode 5.1 estas bezonata
      "е/":"ѥ","ѥ/":"е/", // 1 //// U+0465
      "Е/":"Ѥ","Ѥ/":"Е/", // 1 //// U+0464
      "є/":"ѥ","ѥ/":"є/", // 2 //// U+0465
      "Є/":"Ѥ","Ѥ/":"Є/", // 2 //// U+0464
      "я'":"ѧ","ѧ'":"я'", // 1 //// U+0467
      "Я'":"Ѧ","Ѧ'":"Я'", // 1 //// U+0466
      "а,":"ѧ","ѧ,":"а,", // 2 //// U+0467
      "А,":"Ѧ","Ѧ,":"А,", // 2 //// U+0466
      "ѧ_":"ѫ","ѫ_":"ѧ_", //// U+046B (U+0471)
      "Ѧ_":"Ѫ","Ѫ_":"Ѧ_", //// U+046A (U+0470)
      "ѧ/":"ѩ","ѩ/":"ѧ/", //// U+0469
      "Ѧ/":"Ѩ","Ѩ/":"Ѧ/", //// U+0468
      "ѫ/":"ѭ","ѭ/":"ѫ/", //// U+0473
      "Ѫ/":"Ѭ","Ѭ/":"Ѫ/", //// U+0472
      "з~":"ѯ","ѯ~":"з~", ////
      "З~":"Ѯ","Ѯ~":"З~", ////
      "ш/":"ѱ","ѱ/":"ш/", // 1 ////
      "Ш/":"Ѱ","Ѱ/":"Ш/", // 1 ////
      "п/":"ѱ","ѱ/":"п/", // 2 ////
      "П/":"Ѱ","Ѱ/":"П/", // 2 ////
      "фx":"ѳ","ѳx":"фx", // 1 //// U+473
      "ФX":"Ѳ","ѲX":"ФX", // 1 //// U+472
      "о~":"ѳ","ѳ~":"о~", // 2 //// U+473
      "О~":"Ѳ","Ѳ~":"О~", // 2 //// U+472
      "вx":"ѵ","ѵx":"вx", //// U+0475
      "ВX":"Ѵ","ѴX":"ВX", //// U+0474
      "ѵ:":"ѷ","ѷ:":"ѵ:", //// U+0477
      "Ѵ:":"Ѷ","Ѷ:":"Ѵ:", //// U+0476
      "о,":"ҩ","ҩ,":"о,", //// U+04A9
      "О,":"Ҩ","Ҩ,":"О,", //// U+04A8
      "и/":"ӏ","ӏ/":"и", // 1 //// U+04CF /// cirila и/ al cirila bastoneto minuskla
      "И/":"Ӏ","Ӏ/":"И/", // 1 //// U+04C0 /// cirila И/ al cirila bastoneto majuskla
      "і/":"ӏ","ӏ/":"і/", // 2 //// U+04CF /// cirila і/ al cirila bastoneto minuskla
      "І/":"Ӏ","Ӏ/":"І/" // 2 //// U+04C0 /// cirila І/ al cirila bastoneto majuskla
      },
    grekaSxangxosignoj:"':^`.,",
    greka:{
  // unue la 'malfacilaj' kombinoj, por ke oni povu fari cxiujn kombinojn de
  // literoj, eble ja unue metante spaceton inter ili kaj poste forigante gxin
//      "st":"ϛ","ϛt":"st", // 1 (historie ĝusta varianto) /// stigma //// U+03DB
      "σt":"ϛ",//"ϛt":"σt", // 1 (historie ĝusta varianto) /// stigma
//// U+03DB
      "ςt":"ϛ",//"ϛt":"ςt", // 1 (historie ĝusta varianto) /// stigma
//// U+03DB
//      "ST":"Ϛ","ϚT":"ST", // 1 (historie ĝusta varianto) /// Stigma //// U+03DA
      "ΣT":"Ϛ",//"ϚT":"ΣT", // 1 (historie ĝusta varianto) /// Stigma
//// U+03DA

      "a":"α", //// α
      "A":"Α", //// Α
      "α'":"ά","ά'":"α'",
      "Α'":"Ά","Ά'":"Α'",
      "b":"β", // 1 //// β
      "B":"Β", // 1 //// Β
      "v":"β", // 2 //// β
      "V":"Β", // 2 //// Β
      "g":"γ", //// γ
      "G":"Γ", //// Γ
      "d":"δ", //// δ
      "D":"Δ", //// Δ
      "e":"ε", //// ε
      "E":"Ε", //// Ε
      "ε'":"έ","έ'":"ε'",
      "Ε'":"Έ","Έ'":"Ε'",
      "w":"ϝ", /// digamma //// U+0377
      "W":"Ϝ", /// Digamma //// U+0376
//      "t'":"ϛ","ϛ'":"t'", // 2 (varianto pli oportuna por tajpado) /// stigma //// U+03DB
      "τ'":"ϛ","ϛ'":"τ'", // 2 (varianto pli oportuna por tajpado)
/// stigma //// U+03DB
//      "T'":"Ϛ","Ϛ'":"T'", // 2 (varianto pli oportuna por tajpado) /// Stigma //// U+03DA
      "Τ'":"Ϛ","Ϛ'":"Τ'", // 2 (varianto pli oportuna por tajpado)
/// Stigma //// U+03DA
//      "s`":"ϛ","ϛ`":"s`", // 3 (varianto pli oportuna por tajpado) /// stigma //// U+03DB
      "σ`":"ϛ","ϛ`":"σ`", // 3 (varianto pli oportuna por tajpado)
/// stigma //// U+03DB
      "ς`":"ϛ","ϛ`":"ς`", // 3(4) (varianto pli oportuna por tajpado) /// stigma //// U+03DB
//      "S`":"Ϛ","Ϛ`":"S`", // 3 (varianto pli oportuna por tajpado) /// Stigma //// U+03DA
      "Σ`":"Ϛ","Ϛ`":"Σ`", // 3 (varianto pli oportuna por tajpado) /// Stigma //// U+03DA
      "z":"ζ", //// ζ
      "Z":"Ζ", //// Ζ
//      "e^":"η","η^":"e^", // 1 /// [ɛ:] (longa "e" vasta) //// η
      "ε^":"η","η^":"ε^", // 1 /// [ɛ:] (longa "e" vasta) //// η
//      "E^":"Η","Η^":"E^", // 1 /// [ɛ:] (longa "e" vasta) //// Η
      "Ε^":"Η","Η^":"Ε^", // 1 /// [ɛ:] (longa "e" vasta) //// Η
//      "e:":"η","η:":"e:", // 2 /// [ɛ:] (longa "e" vasta) //// η
      "ε:":"η","η:":"ε:", // 2 /// [ɛ:] (longa "e" vasta) //// η
//      "E:":"Η","Η:":"E:", // 2 /// [ɛ:] (longa "e" vasta) //// Η
      "Ε:":"Η","Η:":"Ε:", // 2 /// [ɛ:] (longa "e" vasta) //// Η
      "η'":"ή","ή'":"η'",
      "Η'":"Ή","Ή'":"Η'",
//      "h^":"ͱ","ͱ^":"h^", /// heta //// U+0371
      "χ^":"ͱ","ͱ^":"χ^", /// heta //// U+0371
//      "H^":"Ͱ","Ͱ^":"H^", /// Heta //// U+0370
      "Χ^":"Ͱ","Ͱ^":"Χ^", /// Heta //// U+0370
//      "t^":"θ","θ^":"t^", //// θ
      "τ^":"θ","θ^":"τ^", //// θ
//      "T^":"Θ","Θ^":"T^", //// Θ
      "Τ^":"Θ","Θ^":"Τ^", //// Θ
      "i":"ι", //// ι
      "I":"Ι", //// Ι
      "ι'":"ί","ί'":"ι'",
      "Ι'":"Ί","Ί'":"Ι'",
      "ι:":"ϊ","ϊ:":"ι:",
      "Ι'":"Ϊ","Ϊ'":"Ι'",
      "ί:":"ΐ","ΐ:":"ί:", // 1
      "Ί:":"Ϊ́","Ϊ́:":"Ί:", // 1  ////
      "ϊ'":"ΐ","ΐ'":"ϊ'", // 2
      "Ϊ'":"Ϊ́","Ϊ́'":"Ϊ'", // 2  ////
      "j":"ȷ", /// yot
      "J":"ȷ", /// Yot
      "k":"κ", //// κ
      "K":"Κ", //// Κ
      "l":"λ", //// λ
      "L":"Λ", //// Λ
      "m":"μ", //// μ
      "M":"Μ", //// Μ
      "n":"ν", //// ν
      "N":"Ν", //// Ν
      "x":"ξ", //// ξ
      "X":"Ξ", //// Ξ
      "o":"ο", //// ο
      "O":"Ο", //// Ο
      "ο'":"ό","ό'":"ο'",
      "Ο'":"Ό","Ό'":"Ο'",
      "p":"π", //// π
      "P":"Π", //// Π
//      "m^":"ϻ","ϻ^":"m^", // 1 /// san //// U+03FB
      "μ^":"ϻ","ϻ^":"μ^", // 1 /// san //// U+03FB
//      "M^":"ϻ","ϻ^":"M^", // 1 /// San //// U+03FA
      "Μ^":"ϻ","ϻ^":"Μ^", // 1 /// San //// U+03FA
//      "s'":"ϻ","ϻ'":"s'", // 2 /// san //// U+03FB
      "σ'":"ϻ","ϻ'":"σ'", // 2 /// san //// U+03FB
//      "S'":"ϻ","ϻ'":"S'", // 2 /// San //// U+03FA
      "Σ'":"ϻ","ϻ'":"Σ'", // 2 /// San //// U+03FA
//      "s^":"ϸ","ϸ^":"s^", /// sho //// U+03F8
      "σ^":"ϸ","ϸ^":"σ^", /// sho //// U+03F8
//      "S^":"Ϸ","Ϸ^":"S^", /// Sho //// U+03F7
      "Σ^":"Ϸ","Ϸ^":"Σ^", /// Sho //// U+03F7
      "q":"ϙ", /// koppa ////
      "Q":"Ϙ", /// Koppa ////
      "r":"ρ", //// ρ
      "R":"Ρ", //// Ρ
      "s":"σ", //// σ
      "S":"Σ", //// Σ
//      "s,":"ς","ς,":"s,", ////
      "σ,":"ς","ς,":"σ,", ////
//      "S,":"Σ","Σ,":"S,", //// Σ /// jes, majusklo(σ)==Σ kaj majusklo(ς)==Σ
      "Σ,":"Σ","Σ,":"Σ,", //// Σ /// jes, majusklo(σ)==Σ kaj majusklo(ς)==Σ
      "t":"τ", //// τ
      "T":"Τ", //// Τ
      "y":"υ", //// υ
      "Y":"Υ", //// Υ
      "υ'":"ύ","ύ'":"υ'",
      "Υ'":"Ύ","Ύ'":"Υ'",
      "υ:":"ϋ","ϋ:":"υ:",
      "Υ:":"Ϋ","Ϋ:":"Υ:",
      "ύ:":"ΰ","ΰ:":"ύ:", // 1
      "Ύ:":"Ϋ́","Ϋ́:":"Ύ:", // 1 ////
      "ϋ'":"ΰ","ΰ'":"ϋ'", // 2
      "Ϋ'":"Ϋ́","Ϋ́'":"Ϋ'", // 2 ////
      "f":"φ", //// φ
      "F":"Φ", //// Φ
      "h":"χ", //// χ
      "H":"Χ", //// Χ
//      "p^":"ψ","ψ^":"p^", //// ψ
      "π^":"ψ","ψ^":"π^", //// ψ
//      "P^":"Ψ","Ψ^":"P^", //// Ψ
      "Π^":"Ψ","Ψ^":"Π^", //// Ψ
      "ο^":"ω","ω^":"ο^", // 1 //// ω
      "Ο^":"Ω","Ω^":"Ο^", // 1 //// Ω
      "ο:":"ω","ω:":"ο:", // 2 /// [ɔ:] (longa "o" vasta) //// ω
      "Ο:":"Ω","Ω:":"Ο:", // 2 /// [ɔ:] (longa "o" vasta) //// Ω
      "ω'":"ώ","ώ'":"ω'",
      "Ω'":"Ώ","Ώ'":"Ω'",
      "c":"ͳ", // 1 /// sampi arkaika //// U+0373
      "C":"Ͳ", // 1 /// Sampi arkaika //// U+0372
//      "s:":"ͳ","ͳ:":"s:", // 2 /// [s:] (longa "s" vasta) /// sampi arkaika //// U+0373
      "σ:":"ͳ","ͳ:":"σ:", // 2 /// [s:] (longa "s" vasta) /// sampi arkaika //// U+0373
      "ς:":"ͳ","ͳ:":"ς:", // 2(3) /// [s:] (longa "s" vasta) /// sampi arkaika //// U+0373
//      "S:":"Ͳ","Ͳ:":"S:", // 2 /// [s:] (longa "s" vasta) /// Sampi arkaika //// U+0372
      "Σ:":"Ͳ","Ͳ:":"Σ:", // 2 /// [s:] (longa "s" vasta) /// Sampi arkaika //// U+0372
//      "c^":"ϡ","ϡ^":"c^", // 1 /// sampi pli malfrua //// U+03E1
//      "s:^":"ϡ","ϡ^":"s:^", // 2 /// [s:] (longa "s" vasta) /// sampi pli malfrua //// U+03E1
      "ͳ^":"ϡ","ϡ^":"ͳ^", /// [s:] (longa "s" vasta) /// sampi pli malfrua //// U+03E1
//      "C^":"Ϡ","Ϡ^":"C^", // 1 /// Sampi pli malfrua //// U+03E0
//      "S:^":"Ϡ","Ϡ^":"S:^", // 2 /// [s:] (longa "s" vasta) /// Sampi pli malfrua //// U+03E0
      "Ͳ^":"Ϡ","Ϡ^":"Ͳ^", /// Sampi pli malfrua //// U+03E0
//      "h'":"΄","΄'":"h'", // 1 /// sonas kiel esparanta h
      "χ'":"΄","΄'":"χ'", // 1 /// sonas kiel esparanta h
//      "H'":"΄","΄'":"H'", // 1 /// sonas kiel esparanta H
      "Χ'":"΄","΄'":"Χ'", // 1 /// sonas kiel esparanta H
      "/":"΄", // 2 /// sonas kiel esparanta H
      "΄:":"΅","΅:":"΄:",
      "΄`":'"̔','"̔`':'΄`', /// spiritus asper, δασεῖα
      "΄'":'"̓','"̓\'':"΄'", /// spiritus lenas, ψιλή
      "΄,":"ͺ","ͺ,":"΄,", /// jota suba indico, ὑπογεγραμμένη
      "΄^":";",";^":"΄^", // 1 /// estas ne interpunkcio, sed greka signo
      "·,":";",";,":"·,", // 2 /// estas ne interpunkcio, sed greka signo
      "΄.":"·","·.":"΄."
      },
    alfabeto:{e:"Esperanta",l:"Latina",c:"Cirila",g:"Greka",n:"Nenia"}
    },j);

  return this.each(function(){
    this.ek=false;
    $(this).keydown(function(e){
      if($.cookie('sxangxiLiterojn') == 'false')return;
      this.isCtrl=false;
      if(e.keyCode==231)this.ek=true;
      if(e.ctrlKey)this.isCtrl=true;
      this.povasSxangxiLingvon = (this.value.indexOf('@@') >= 0);
    });
    $(this).keyup(function(e){
      if($.cookie('sxangxiLiterojn') == 'false')return;
      if(this.isCtrl)return;
      if(this.ek)return;
      var poz=getCaret(this);
      //$('#tempo').append(poz + (this.value).charAt(poz-1) + ' ');//!!!
      var pozicio=(getCaret(this)-1);
      var en, de, al, de_longeco;
      de = '';
      al = '';
      de_longeco = 1;
      if (this.povasSxangxiLingvon && this.value.substr(pozicio-2,2)=='@@')
      { de = (this.value).charAt(pozicio);
        var klaso = l.alfabeto[de];
        if (!klaso) { setCaret(this, poz); return; }
        de_longeco = 2; al = '';
        $(this).removeClass('Esperanta');
        $(this).removeClass('Latina');
        $(this).removeClass('Greka');
        $(this).removeClass('Cirila');
        $(this).addClass(klaso);
        this.title = klaso + ' alfabeto';
        $(this).trigger('mouseover');
      } else if($(this).hasClass('Esperanta')) {
        if($.cookie('Esperanta') == 'false')return;
        if (pozicio < 1) { setCaret(this, poz); return; }
        if (e.keyCode != 88) { setCaret(this, poz); return; }//ne 'x' au 'X'
        //while (pozicio > 0 && (this.value).charAt(pozicio).toLowerCase() != 'x')
        //  --pozicio;
        de = (this.value).charAt(pozicio-1);
        al = l.esperanta[de];
        //$('#tempo').append(' E('+pozicio+de+'-'+al+')');
        if (!al) { setCaret(this, poz); return; }
      } else if($(this).hasClass('Latina')) {
        if($.cookie('Latina') == 'false')return;
        //$('#tempo').append('kc'+e.keyCode+' ');
        if (pozicio < 1 
            || (e.keyCode <= 46 && e.keyCode != 32 && e.keyCode != 0))
        { setCaret(this, poz); return; }
        en = (this.value).charAt(pozicio);
        if (l.latinaSxangxosignoj.indexOf(en) == -1)
        { setCaret(this, poz); return; }
        de = (this.value).charAt(pozicio-1) + en;
        al = l.latina[de];
        if (!al) {
          if (pozicio < 2 || l.latinaSxangxosignoj2.indexOf(en) == -1
              || !(al = l.latina[(this.value).charAt(pozicio-2) + de]))
            { setCaret(this, poz); return; }
          else de_longeco = 2;
        }
      } else if($(this).hasClass('Cirila')) {
        if($.cookie('Cirila') == 'false')return;
        if (e.keyCode <= 46 && e.keyCode != 32 && e.keyCode != 0)
        { setCaret(this, poz); return; }
        en = (this.value).charAt(pozicio);
        if (pozicio > 1 && l.cirilaSxangxosignoj2.indexOf(en) != -1)
        { de = (this.value).substr(pozicio-2, 3);
          al = l.cirila[de];
          if (al) de_longeco = 2;
        }
        if (!al)
        { if (pozicio > 0 && l.cirilaSxangxosignoj.indexOf(en) != -1)
          { de = (this.value).charAt(pozicio-1) + en;
            al = l.cirila[de];
          }
          if (!al)
          { if (al = l.cirila[en]) de_longeco = 0;
            else { setCaret(this, poz); return; }
          }
        }
      } else if($(this).hasClass('Greka')) {
        if($.cookie('Greka') == 'false')return;
        if (e.keyCode <= 46 && e.keyCode != 32) { setCaret(this, poz); return; }
        en = (this.value).charAt(pozicio);
        if (pozicio > 0 && l.grekaSxangxosignoj.indexOf(en) != -1)
        { de = (this.value).charAt(pozicio-1) + en;
          al = l.greka[de];
          if (!al) { setCaret(this, poz); return; }
        }
        else if (al = l.greka[en]) de_longeco = 0;
        else { setCaret(this, poz); return; }
      } else { setCaret(this, poz); return; }
      //if(!de && !al) { setCaret(this,pozicio+1); return; }
      var f=this.scrollTop; var g=this.value.substr(pozicio+1);
      this.value=this.value.substr(0,pozicio-de_longeco)+al+g;
      setCaret(this, pozicio - de_longeco + al.length);
      if(f>this.scrollHeight)f=this.scrollHeight;
      this.scrollTop=f
    })
  })
}})(jQuery);


