// Инициализируем таблицу перевода
var trans = [];
for (var i = 0x410; i <= 0x44F; i++)
  trans[i] = i - 0x350; // А-Яа-я
trans[0x401] = 0xA8;    // Ё
trans[0x451] = 0xB8;    // ё

// Переопределяем функцию escape()
escapeNew = function(str)
{
  var ret = [];
  // Составляем массив кодов символов, попутно переводим кириллицу
  for (var i = 0; i < str.length; i++)
  {
    var n = str.charCodeAt(i);
    if (typeof trans[n] != 'undefined')
      n = trans[n];
    if (n <= 0xFF)
      ret.push(n);
  }
  return window.escape(String.fromCharCode.apply(null, ret));
}


var trans_un = [];
for (var i = 0xC0; i <= 0xFF; i++)
  trans_un[i] = i + 0x350; // А-Яа-я
trans_un[0xA8] = 0x401;    // Ё
trans_un[0xB8] = 0x451;    // ё

unescapeNew = function(str) {
   str = window.unescape(str);
   var ret = [];

   for (var i = 0; i < str.length; i++) {
      var n = str.charCodeAt(i);
      if( (n >= 0xc0 && n <= 0xff) || n == 0xA8 || n == 0xb8) {
         if( trans_un[n] != 'undefined' )
         n = trans_un[n];
      }
      ret.push(n);
   }

   return String.fromCharCode.apply(null, ret);
}