function adjust_string(string)
	{
		var result = string;
		
		if (is_null(result) || (is_undefined(string)))
			{
				result = "";
			}
			
		return result;
	}

function trim(string)
	{
		var result = adjust_string(string).replace(/^\s+|\s+$/g, "");
		
		return result;
	}

function is_null(string)
	{
		var result = false;
		
		if (string === null)
			{
				result = true;
			}
			
		return result;
	}

function is_undefined(string)
	{
		var result = false;
		
		if (string === undefined)
			{
				result = true;
			}
			
		return result;
	}

function URLEncode(url)
	{
		var SAFECHARS = "0123456789" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +	"abcdefghijklmnopqrstuvwxyz" + "-_.!~*'()";
		var HEX = "0123456789ABCDEF";
		
		var plaintext = url;
		var encoded = "";
		
		for (var i = 0; i < plaintext.length; i++ )
			{
				var ch = plaintext.charAt(i);
				
				if (ch == " ")
					{
						encoded += "+";
					}
				else if (SAFECHARS.indexOf(ch) != -1)
					{
						encoded += ch;
					}
				else
					{
						var charCode = ch.charCodeAt(0);
						
						if (charCode > 255)
							{
								encoded += "+";
							}
						else
							{
								encoded += "%";
								encoded += HEX.charAt((charCode >> 4) & 0xF);
								encoded += HEX.charAt(charCode & 0xF);
							}
					}
			}
			
		return encoded;
	}

function URLDecode(utf_text)
	{
		var HEXCHARS = "0123456789ABCDEFabcdef";
		var encoded = utf_text.replace("%C4%83", "ă")
							  .replace("%C4%82", "Ă")
							  .replace("%C3%A2", "â")
							  .replace("%C3%82", "Â")
							  .replace("%C3%AE", "î")
							  .replace("%C3%8E", "Î")
							  .replace("%C8%99", "ş")
							  .replace("%C5%9F", "ş")
							  .replace("%C8%98", "Ş")
							  .replace("%C5%9E", "Ş")
							  .replace("%C8%9B", "ţ")
							  .replace("%C5%A3", "ţ")
							  .replace("%C8%9A", "Ţ")
							  .replace("%C5%A2", "Ţ");
		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
							{
								plaintext += "%";
								i++;
							}
					}
				else
					{
						plaintext += ch;
						i++;
					}
			}
			
		return plaintext;
	}
