public static void displayURL(String url)
	{
		if (url == null || url.length() == 0)
		{
			url = "http://www.google.com";
		}
		boolean windows = isWindowsPlatform();
		String cmd = null;
		try
		{
			if (windows)
			{
				// cmd = 'rundll32 url.dll,FileProtocolHandler http://...'
				/*
				 * Rundll32 doesn't like .htm or .html files, which is why .ht%6D or .ht%6D%6C works, %6D is the
				 * hexidecimal code for m. %6C is the hexidecimal code for l.
				 */
				if (url.toUpperCase().endsWith(".HTM"))
				{
					url = url.substring(0, url.length() - 1) + "%6D";
				}
				if (url.toUpperCase().endsWith(".HTML"))
				{
					url = url.substring(0, url.length() - 2) + "%6D%6C";
				}
				cmd = WIN_PATH + " " + WIN_FLAG + " " + url;

				Runtime.getRuntime().exec(cmd);
			}
			else
			{
				// Under Unix, Netscape has to be running for the "-remote"
				// command to work. So, we try sending the command and
				// check for an exit value. If the exit command is 0,
				// it worked, otherwise we need to start the browser.
				// cmd = 'netscape -remote openURL(http://www.javaworld.com)'
				cmd = UNIX_PATH + " " + UNIX_FLAG + "(" + url + ")";
				Process p = Runtime.getRuntime().exec(cmd);
				try
				{
					// wait for exit code -- if it's 0, command worked,
					// otherwise we need to start the browser up.
					int exitCode = p.waitFor();
					if (exitCode != 0)
					{
						// Command failed, start up the browser
						// cmd = 'netscape http://www.javaworld.com'
						cmd = UNIX_PATH + " " + url;
						p = Runtime.getRuntime().exec(cmd);
					}
				}
				catch (InterruptedException x)
				{
					System.err.println("Error bringing up browser, cmd='" + cmd
							+ "'");
					System.err.println("Caught: " + x);
				}
			}
		}
		catch (IOException x)
		{
			// couldn't exec browser
			System.err.println("Could not invoke browser, command=" + cmd);
			System.err.println("Caught: " + x);
		}
	}