добавлю ещё свой вариант untranslit:
var trTableDif = {
Y: { O: '\u0401', o: '\u0401', U: '\u042E', u: '\u042E', A: '\u042F', a: '\u042F' },
y: { O: '\u0451', o: '\u0451', U: '\u044E', u: '\u044E', A: '\u044F', a: '\u044F' },
J: { E: '\u042D', e: '\u042D', U: '\u042E', u: '\u042E', A: '\u042F', a: '\u042F' },
j: { E: '\u044D', e: '\u044D', U: '\u044E', u: '\u044E', A: '\u044F', a: '\u044F' },
Z: { H: '\u0416', h: '\u0416' },
z: { H: '\u0436', h: '\u0436' },
T: { S: '\u0426', s: '\u0426' },
t: { S: '\u0446', s: '\u0446' },
C: { H: '\u0427', h: '\u0427' },
c: { H: '\u0447', h: '\u0447' },
S: { H: '\u0428', h: '\u0428' },
s: { H: '\u0448', h: '\u0448' },
E: { H: '\u042D', h: '\u042D' },
e: { H: '\u044D', h: '\u044D' },
K: { H: '\u0425', h: '\u0425' },
k: { H: '\u0445', h: '\u0445' },
'"': { '"': '\u042A' },
"'": { "'": '\u044A' }
};
var trTable = {
A: '\u0410', a: '\u0430',
B: '\u0411', b: '\u0431',
V: '\u0412', v: '\u0432',
G: '\u0413', g: '\u0433',
D: '\u0414', d: '\u0434',
E: '\u0415', e: '\u0435',
Z: '\u0417', z: '\u0437',
I: '\u0418', i: '\u0438',
J: '\u0419', j: '\u0439',
K: '\u041A', k: '\u043A',
L: '\u041B', l: '\u043B',
M: '\u041C', m: '\u043C',
N: '\u041D', n: '\u043D',
O: '\u041E', o: '\u043E',
P: '\u041F', p: '\u043F',
R: '\u0420', r: '\u0440',
S: '\u0421', s: '\u0441',
T: '\u0422', t: '\u0442',
U: '\u0423', u: '\u0443',
F: '\u0424', f: '\u0444',
X: '\u0425', x: '\u0445',
H: '\u0425', h: '\u0445',
C: '\u0426', c: '\u0446',
w: '\u0429', w: '\u0449',
Y: '\u042B', y: '\u044B',
"'": '\u044C',
//'"': '\u044C',
};
function untranslit (s) {
var res = "", len = s.length;
for (var f = 0; f < len; f++) {
var n = s.charAt(f);
var rus = trTable[n], dif = trTableDif[n];
if (dif) {
var n1 = s.charAt(f+1);
rus1 = dif[n1];
if (rus1) { rus = rus1; f++; }
}
res += rus?rus:n;
}
return res;
}