///////////////////////////////////////////
///function URLEncode(PlainText_)
////////////////////////////////////////////
function URLEncode(PlainText_)
{
	// 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 = PlainText_;
	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 += "+";*/
				encoded += ch;
				;
			} else {
				encoded += "%";
				encoded += HEX.charAt((charCode >> 4) & 0xF);
				encoded += HEX.charAt(charCode & 0xF);
			}
		}
	} // for	
	return encoded;
}
///////////////////////////////////////////
///function URLDecode(encoded)
////////////////////////////////////////////
function URLDecode(encoded){
	
				   // Replace + with ' '
				   // Replace %xx with equivalent character
				   // Put [ERROR] in output if %xx is invalid.
				   //alert('encoded=' + encoded);
				   var HEXCHARS = "0123456789ABCDEFabcdef";    
				   var _plaintext = "";
				   var j = 0;
				   while (j < encoded.length) {
				       var ch = encoded.charAt(j);
				       //alert('ch=' + ch);
					   if (ch == "+") {
					   		_plaintext += " ";
						   j++;
					   } 
					   else if (ch == "%") {
					   		if (j < (encoded.length-2) 
									&& HEXCHARS.indexOf(encoded.charAt(j+1)) != -1 
									&& HEXCHARS.indexOf(encoded.charAt(j+2)) != -1 ) {
									_plaintext += unescape( encoded.substr(j,3) );
								j += 3;
							} else {
								//alert( 'Bad escape combination near ...' + encoded.substr(i) );
								//_plaintext += "%[ERROR]";
								j++;
							}
						} 
						else {
						   _plaintext = _plaintext+ ch;
						   j++;
						}
					} // while
					
					//alert('plaintext=' + _plaintext);
				   
				   return _plaintext;
}
