if( typeof myurlencode == 'undefined' && typeof myurldecode == 'undefined' ){
	function myurlencode(str)
	{
		var safec = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_.!~*\'()";
		var hexx = "0123456789ABCDEF";
		var encoded = "";
		for (var i = 0; i < str.length; i++ ) {
			var ch = str.charAt(i);
			if (ch == " ") {
				encoded += "+";
			} else if (safec.indexOf(ch) != -1) {
				encoded += ch;
			} else {
				var charCode = ch.charCodeAt(0);
				if (charCode > 255) {
					// Unicode Character !!!
					encoded += "+";
				} else {
					encoded += "%";
					encoded += hexx.charAt((charCode >> 4) & 0xF);
					encoded += hexx.charAt(charCode & 0xF);
				}
			}
		}
		return encoded;
	}
	
	function myurldecode(str)
	{
	   var hexx = "0123456789ABCDEFabcdef"; 
	   var plaintext = "";
	   var i = 0;
	   while (i < str.length) {
		   var ch = str.charAt(i);
		   if (ch == "+") {
			   plaintext += " ";
			   i++;
		   } else if (ch == "%") {
				if (i < (str.length-2) 
						&& hexx.indexOf(str.charAt(i+1)) != -1 
						&& hexx.indexOf(str.charAt(i+2)) != -1 ) {
					plaintext += unescape( str.substr(i,3) );
					i += 3;
				} else {
					// Bad escape combination // str.substr(i)
					// plaintext += "%[ERROR]";
					i++;
				}
			} else {
			   plaintext += ch;
			   i++;
			}
		}
	   return plaintext;
	}
}