// Por formi aliajn alfabetojn per la klavoj kiuj estas en cxiu klavaro
// Aŭtoroj: Bart Demeyere, Ikar Akimenko
// 2009-12-14
// GNU-licenzo

function xEsperanta(t, objekto) {
  t = t.replace(/c[xX]/g, "\u0109");
  t = t.replace(/g[xX]/g, "\u011d");
  t = t.replace(/h[xX]/g, "\u0125");
  t = t.replace(/j[xX]/g, "\u0135");
  t = t.replace(/s[xX]/g, "\u015d");
  t = t.replace(/u[xX]/g, "\u016d");
  t = t.replace(/C[xX]/g, "\u0108");
  t = t.replace(/G[xX]/g, "\u011c");
  t = t.replace(/H[xX]/g, "\u0124");
  t = t.replace(/J[xX]/g, "\u0134");
  t = t.replace(/S[xX]/g, "\u015c");
  t = t.replace(/U[xX]/g, "\u016c");
  if (t != objekto.value) {
    objekto.value = t;
  }
  if (t.indexOf("@@") != -1) {
    xLatina(objekto.value, objekto);
  }
  if (t.indexOf("$$") != -1) {
    xCirila(objekto.value, objekto);
  }
}

function xLatina(t, objekto) {
  t = t.replace(/a'/g, "á");
  t = t.replace(/A'/g, "Á");
  t = t.replace(/a`/g, "à");
  t = t.replace(/A`/g, "À");
  t = t.replace(/a\^/g, "â");
  t = t.replace(/A\^/g, "Â");
  t = t.replace(/a~/g, "ã");
  t = t.replace(/A~/g, "Ã");
  t = t.replace(/a:/g, "ä");
  t = t.replace(/A:/g, "Ä");
  t = t.replace(/a°/g, "å");
  t = t.replace(/A°/g, "Å");
  t = t.replace(/a€/g, "æ");
  t = t.replace(/A€/g, "Æ");
  t = t.replace(/c'/g, "ć");
  t = t.replace(/C'/g, "Ć");
  t = t.replace(/c\^/g, "ĉ");
  t = t.replace(/C\^/g, "Ĉ");
  t = t.replace(/c`'/g, "č");
  t = t.replace(/C`'/g, "Č");
  t = t.replace(/c\./g, "ċ");
  t = t.replace(/C\./g, "Ċ");
  t = t.replace(/c,/g, "ç");
  t = t.replace(/C,/g, "Ç");
  t = t.replace(/d_/g, "ð");
  t = t.replace(/D_/g, "Ð");
  t = t.replace(/e'/g, "é");
  t = t.replace(/E'/g, "É");
  t = t.replace(/e`/g, "è");
  t = t.replace(/E`/g, "È");
  t = t.replace(/e\^/g, "ê");
  t = t.replace(/E\^/g, "Ê");
  t = t.replace(/e~/g, "ẽ");
  t = t.replace(/E~/g, "Ẽ");
  t = t.replace(/e:/g, "ë");
  t = t.replace(/E:/g, "Ë");
  t = t.replace(/e_/g, "ē");
  t = t.replace(/E_/g, "Ē");
  t = t.replace(/e\(/g, "ĕ");
  t = t.replace(/E\(/g, "Ĕ");
  t = t.replace(/e,/g, "ę");
  t = t.replace(/E,/g, "Ę");
  t = t.replace(/g'/g, "ǵ");
  t = t.replace(/G'/g, "Ǵ");
  t = t.replace(/G,/g, "Ģ");
  t = t.replace(/g\^/g, "ĝ");
  t = t.replace(/G\^/g, "Ĝ");
  t = t.replace(/g\(/g, "ğ");
  t = t.replace(/G\(/g, "Ğ");
  t = t.replace(/g\./g, "ġ");
  t = t.replace(/G\./g, "Ġ");
  t = t.replace(/h\^/g, "ĥ");
  t = t.replace(/H\^/g, "Ĥ");
  t = t.replace(/h_/g, "ħ");
  t = t.replace(/H_/g, "Ħ");
  t = t.replace(/i'/g, "í");
  t = t.replace(/I'/g, "Í");
  t = t.replace(/i`/g, "ì");
  t = t.replace(/I`/g, "Ì");
  t = t.replace(/i\^/g, "î");
  t = t.replace(/I\^/g, "Î");
  t = t.replace(/i~/g, "ĩ");
  t = t.replace(/I~/g, "Ĩ");
  t = t.replace(/i:/g, "ï");
  t = t.replace(/I:/g, "Ï");
  t = t.replace(/i_/g, "ī");
  t = t.replace(/I_/g, "Ī");
  t = t.replace(/i\(/g, "ĭ");
  t = t.replace(/I\(/g, "Ĭ");
  t = t.replace(/i,/g, "į");
  t = t.replace(/I,/g, "Į");
  t = t.replace(/i\)/g, "ĳ");
  t = t.replace(/I\)/g, "Ĳ");
  t = t.replace(/i\./g, "ı");
  t = t.replace(/I\./g, "İ");
  t = t.replace(/j\^/g, "ĵ");
  t = t.replace(/J\^/g, "Ĵ");
  t = t.replace(/k,/g, "ķ");
  t = t.replace(/K,/g, "Ķ");
  t = t.replace(/k\//g, "ĸ");
  t = t.replace(/l'/g, "ĺ");
  t = t.replace(/L'/g, "Ĺ");
  t = t.replace(/l`/g, "ľ");
  t = t.replace(/L`/g, "Ľ");
  t = t.replace(/l\./g, "ŀ");
  t = t.replace(/L\./g, "Ŀ");
  t = t.replace(/l\//g, "ł");
  t = t.replace(/L\//g, "Ł");
  t = t.replace(/n'/g, "ń");
  t = t.replace(/N'/g, "Ń");
  t = t.replace(/n,/g, "ņ");
  t = t.replace(/N,/g, "Ņ");
  t = t.replace(/n`'/g, "ň");
  t = t.replace(/N`'/g, "Ň");
  t = t.replace(/n\)/g, "ŋ");
  t = t.replace(/N\)/g, "Ŋ");
  t = t.replace(/n~/g, "ñ");
  t = t.replace(/N~/g, "Ñ");
  t = t.replace(/n`/g, "ŉ");
  t = t.replace(/o'/g, "ó");
  t = t.replace(/O'/g, "Ó");
  t = t.replace(/o`/g, "ó");
  t = t.replace(/O`/g, "Ó");
  t = t.replace(/o\^/g, "ô");
  t = t.replace(/O\^/g, "Ô");
  t = t.replace(/o~/g, "õ");
  t = t.replace(/O~/g, "Õ");
  t = t.replace(/o:/g, "ö");
  t = t.replace(/O:/g, "Ö");
  t = t.replace(/o\//g, "ø");
  t = t.replace(/O\//g, "Ø");
  t = t.replace(/o_/g, "ō");
  t = t.replace(/O_/g, "Ō");
  t = t.replace(/o\(/g, "ŏ");
  t = t.replace(/O\(/g, "Ŏ");
  t = t.replace(/o€/g, "œ");
  t = t.replace(/O€/g, "Œ");
  t = t.replace(/r'/g, "ŕ");
  t = t.replace(/R'/g, "Ŕ");
  t = t.replace(/r,/g, "ŗ");
  t = t.replace(/R,/g, "Ŗ");
  t = t.replace(/r`'/g, "ř");
  t = t.replace(/R`'/g, "Ř");
  t = t.replace(/s'/g, "ś");
  t = t.replace(/S'/g, "Ś");
  t = t.replace(/s\^/g, "ŝ");
  t = t.replace(/S\^/g, "Ŝ");
  t = t.replace(/s,/g, "ş");
  t = t.replace(/S,/g, "Ş");
  t = t.replace(/s`'/g, "Š");
  t = t.replace(/S`'/g, "š");
  t = t.replace(/s\)/g, "ß");
  t = t.replace(/t,/g, "ţ");
  t = t.replace(/T,/g, "Ţ");
  t = t.replace(/t`'/g, "ť");
  t = t.replace(/T`'/g, "Ť");
  t = t.replace(/t_/g, "ŧ");
  t = t.replace(/T_/g, "Ŧ");
  t = t.replace(/t'/g, "þ");
  t = t.replace(/T'/g, "Þ");
  t = t.replace(/u'/g, "ú");
  t = t.replace(/U'/g, "Ú");
  t = t.replace(/u`/g, "ù");
  t = t.replace(/U`/g, "Ú");
  t = t.replace(/u\^/g, "û");
  t = t.replace(/U\^/g, "Ü");
  t = t.replace(/u~/g, "ũ");
  t = t.replace(/U~/g, "Ũ");
  t = t.replace(/u:/g, "ü");
  t = t.replace(/U:/g, "Ü");
  t = t.replace(/u_/g, "ū");
  t = t.replace(/U_/g, "Ū");
  t = t.replace(/u\(/g, "ŭ");
  t = t.replace(/U\(/g, "Ŭ");
  t = t.replace(/u°/g, "ů");
  t = t.replace(/U°/g, "Ů");
  t = t.replace(/u,/g, "Ų");
  t = t.replace(/U,/g, "ų");
  t = t.replace(/w\^/g, "ŵ");
  t = t.replace(/W\^/g, "Ŵ");
  t = t.replace(/y\^/g, "ŷ");
  t = t.replace(/Y\^/g, "Ŷ");
  t = t.replace(/y'/g, "ý");
  t = t.replace(/Y'/g, "Ý");
  t = t.replace(/y:/g, "ÿ");
  t = t.replace(/Y:/g, "Ÿ");
  t = t.replace(/z'/g, "ź");
  t = t.replace(/Z'/g, "Ź");
  t = t.replace(/z\./g, "ż");
  t = t.replace(/Z\./g, "Ż");
  t = t.replace(/z`'/g, "ž");
  t = t.replace(/Z`'/g, "Ž");
  if (t != objekto.value) {
    objekto.value = t;
  }
}

function xCirila(t, objekto) {
  if (t.indexOf("@@") != -1) {
    xLatina(objekto.value, objekto);
    return;
  }
  // unue la 'malfacilaj' kombinoj, por ke oni povu fari cxiujn kombinojn de
  // literoj, eble ja unue metante spaceton inter ili kaj post forigi gxin
  t = t.replace(/шцx/g, "щ"); // 2
  t = t.replace(/ШЦX/g, "Щ"); // 2
  t = t.replace(/йj/g, "ь"); // 2
  t = t.replace(/ЙJ/g, "Ь"); // 2
  t = t.replace(/йu/g, "ю"); // 2
  t = t.replace(/ЙU/g, "Ю"); // 2
  t = t.replace(/йa/g, "я"); // 2
  t = t.replace(/ЙA/g, "Я"); // 2
  t = t.replace(/йi/g, "ї"); // 3   /// cirila й kaj latina i al cirila ї
  t = t.replace(/ЙI/g, "Ї"); // 3   /// cirila Й kaj latina I al cirila Ї

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

function xGreka(t, objekto) {
  if (t.indexOf("@@") != -1) {
    xLatina(objekto.value, objekto);
    return;
  }

  // unue la 'malfacilaj' kombinoj, por ke oni povu fari cxiujn kombinojn de
  // literoj, eble ja unue metante spaceton inter ili kaj poste forigante gxin
//  t = t.replace(/st/g, "ϛ"); // 1 (historie ĝusta varianto) /// stigma //// U+03DB
  t = t.replace(/σt/g, "ϛ"); // 1 (historie ĝusta varianto) /// stigma
//// U+03DB
  t = t.replace(/ςt/g, "ϛ"); // 1 (historie ĝusta varianto) /// stigma
//// U+03DB
//  t = t.replace(/ST/g, "Ϛ"); // 1 (historie ĝusta varianto) /// Stigma //// U+03DA
  t = t.replace(/ΣT/g, "Ϛ"); // 1 (historie ĝusta varianto) /// Stigma
//// U+03DA

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

  if (t != objekto.value) {
    objekto.value = t;
  }
}
