//Переводим CP1251 в UTF8
function transcode(d)
{
	d=d.replace(/%u0420%u0452/g,'%u0410');d=d.replace(/%u0420%u2018/g,'%u0411');
	d=d.replace(/%u0420%u2019/g,'%u0412');d=d.replace(/%u0420%u201C/g,'%u0413');
	d=d.replace(/%u0420%u201D/g,'%u0414');d=d.replace(/%u0420%u2022/g,'%u0415');
	d=d.replace(/%u0420%u0403/g,'%u0401');d=d.replace(/%u0420%u2013/g,'%u0416');
	d=d.replace(/%u0420%u2014/g,'%u0417');d=d.replace(/%u0420%uFFFD/g,'%u0418');
	d=d.replace(/%u0420%u2122/g,'%u0419');d=d.replace(/%u0420%u0459/g,'%u041A');
	d=d.replace(/%u0420%u203A/g,'%u041B');d=d.replace(/%u0420%u045A/g,'%u041C');
	d=d.replace(/%u0420%u045C/g,'%u041D');d=d.replace(/%u0420%u045B/g,'%u041E');
	d=d.replace(/%u0420%u045F/g,'%u041F');d=d.replace(/%u0420%20/g,'Р');
	d=d.replace(/%u0420%u040E/g,'%u0421');d=d.replace(/%u0420%u045E/g,'%u0422');
	d=d.replace(/%u0420%u0408/g,'%u0423');d=d.replace(/%u0420%A4/g,'%u0424');
	d=d.replace(/%u0420%u0490/g,'%u0425');d=d.replace(/%u0420%A6/g,'%u0426');
	d=d.replace(/%u0420%A7/g,'%u0427');d=d.replace(/%u0420%u0401/g,'%u0428');
	d=d.replace(/%u0420%A9/g,'%u0429');d=d.replace(/%u0420%u0404/g,'%u042A');
	d=d.replace(/%u0420%AB/g,'%u042B');d=d.replace(/%u0420%AC/g,'%u042C');
	d=d.replace(/%u0420%AE/g,'%u042E');d=d.replace(/%u0420%u0407/g,'%u042F');
	d=d.replace(/%u0420%B0/g,'%u0430');d=d.replace(/%u0420%B1/g,'%u0431');
	d=d.replace(/%u0420%u0406/g,'%u0432');d=d.replace(/%u0420%u0456/g,'%u0433');
	d=d.replace(/%u0420%u0491/g,'%u0434');d=d.replace(/%u0420%B5/g,'%u0435');
	d=d.replace(/%u0421%u2018/g,'%u0451');d=d.replace(/%u0420%B6/g,'%u0436');
	d=d.replace(/%u0420%B7/g,'%u0437');d=d.replace(/%u0420%u0451/g,'%u0438');
	d=d.replace(/%u0420%u2116/g,'%u0439');d=d.replace(/%u0420%u0454/g,'%u043A');
	d=d.replace(/%u0420%BB/g,'%u043B');d=d.replace(/%u0420%u0458/g,'%u043C');
	d=d.replace(/%u0420%u0405/g,'%u043D');d=d.replace(/%u0420%u0455/g,'%u043E');
	d=d.replace(/%u0420%u0457/g,'%u043F');d=d.replace(/%u0421%u0402/g,'%u0440');
	d=d.replace(/%u0421%u0403/g,'%u0441');d=d.replace(/%u0421%u201A/g,'%u0442');
	d=d.replace(/%u0421%u0453/g,'%u0443');d=d.replace(/%u0421%u201E/g,'%u0444');
	d=d.replace(/%u0421%u2026/g,'%u0445');d=d.replace(/%u0421%u2020/g,'%u0446');
	d=d.replace(/%u0421%u2021/g,'%u0447');d=d.replace(/%u0421%u20AC/g,'%u0448');
	d=d.replace(/%u0421%u2030/g,'%u0449');d=d.replace(/%u0421%u0409/g,'%u044A');
	d=d.replace(/%u0421%u2039/g,'%u044B');d=d.replace(/%u0421%u040A/g,'%u044C');
	d=d.replace(/%u0421%u040C/g,'%u044D');d=d.replace(/%u0421%u040B/g,'%u044E');
	d=d.replace(/%u0421%u040F/g,'%u044F');d=d.replace(/%u0420/g,'%u042D');
	return d;
}
function base64_decode(data)
{
	var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
	var o1, o2, o3, h1, h2, h3, h4, bits, i=0, enc='';

	do {
		h1 = b64.indexOf(data.charAt(i++));
		h2 = b64.indexOf(data.charAt(i++));
		h3 = b64.indexOf(data.charAt(i++));
		h4 = b64.indexOf(data.charAt(i++));

		bits = h1<<18 | h2<<12 | h3<<6 | h4;

		o1 = bits>>16 & 0xff;
		o2 = bits>>8 & 0xff;
		o3 = bits & 0xff;

		if (h3 == 64)      enc += String.fromCharCode(o1);
		else if (h4 == 64) enc += String.fromCharCode(o1, o2);
		else               enc += String.fromCharCode(o1, o2, o3);
	} while (i < data.length);

	return enc;
}
