var letters='                                 !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}                                 ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿  ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ';

function DecodeURI(str)
{
	var res='';
	var hex='';
	str = str.replace(/\+/, ' ');
	while (str.length>0)
	{
		var f=str.indexOf("%");
		if (f<0)
		{
			res+=str;
			str='';
		}
		else
		{
			res+=str.substr(0,f);
			str=str.substr(f+1,str.length-f-1);
			hex=str.substr(0,2);
			res+=Hex2Char(hex);
			str=str.substr(2,str.length-2);
		}
	}
	return res;
}


function HChar2Number(ch)
{
	var n=parseInt(ch);
	if (!isNaN(n))
	{
		return n;
	}
	else
	{
		return (ch.charCodeAt(0)-55);
	}
	

}

function Hex2Char(hex)
{
	var res=0;

	var ch=hex.substr(0,1);
	res=letters.charAt(HChar2Number(hex.substr(0,1))*16+HChar2Number(hex.substr(1,1)));
	return res;
}

