// JavaScript Document
var URL = {
	encode : function (text)
	{
		// The Javascript escape and unescape functions do not correspond
		// with what browsers actually do...
		var SAFECHARS = "0123456789" +					// Numeric
						"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +	// Alphabetic
						"abcdefghijklmnopqrstuvwxyz" +
						"-_.!~*'()";					// RFC2396 Mark characters
		var HEX = "0123456789ABCDEF";
	
		var plaintext = text;
		var encoded = "";
		for (var i = 0; i < plaintext.length; i++ ) {
			var ch = plaintext.charAt(i);
		    if (ch == " ") {
			    encoded += "+";				// x-www-urlencoded, rather than %20
			} else if (SAFECHARS.indexOf(ch) != -1) {
			    encoded += ch;
			} else {
			    var charCode = ch.charCodeAt(0);
				if (charCode > 255) {
				    alert( "Unicode Character '" + ch + "' cannot be encoded using standard URL encoding.\n" +
					        "(URL encoding only supports 8-bit characters.)\n" +
							"A space (+) will be substituted." );
					encoded += "+";
				} else {
					encoded += "%";
					encoded += HEX.charAt((charCode >> 4) & 0xF);
					encoded += HEX.charAt(charCode & 0xF);
				}
			}
		} // for
	
		//document.URLForm.F2.value = encoded;
		return encoded;
	},
	
	decode : function (text)
	{
		// Replace + with ' '
		// Replace %xx with equivalent character
		// Put [ERROR] in output if %xx is invalid.
		var HEXCHARS = "0123456789ABCDEFabcdef"; 
		var encoded = text;
		var plaintext = "";
		var i = 0;
		while (i < encoded.length) 
		{
			var ch = encoded.charAt(i);
			if (ch == "+") 
			{
				plaintext += " ";
				i++;
			} 
			else if (ch == "%") 
			{
				if (i < (encoded.length-2) && HEXCHARS.indexOf(encoded.charAt(i+1)) != -1 && HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) 
				{
					plaintext += unescape( encoded.substr(i,3) );
					i += 3;
				} 
				else 
				{
					//alert( 'Bad escape combination near ...' + encoded.substr(i) );
					plaintext += "%[ERROR]";
					i++;
				}
			} 
			else 
			{
			   plaintext += ch;
			   i++;
			}
		}
	   return plaintext;
	}
}