private void htmlByAuthor(PrintWriter printWriter, String author) throws InvalidCredentialsException {
		htmlTop(printWriter);

		printWriter.println("<h3>Search by author</h3>");

		printWriter.println("<form method=\"get\" action=\"" + searchByAuthorUrl(null) + "\">");

		printWriter.println("<input type=\"hidden\" name=\"" + PARAM_OP + "\" value=\"" + OP_BYAUTHOR + "\">");
		printWriter.print("<input type=\"text\" name=\"" + PARAM_AUTHOR + "\"");
		if (author != null) {
			printWriter.println(" value=\"" + author + "\">");
		}else {
			printWriter.println(">");
		}
		

		printWriter.println("<input type=\"submit\" value=\"Search\">");
		printWriter.println("</form>");

		if (author != null) {
			printWriter.println("<h4>Results for " + author + "</h4>");
			printWriter.println("<table border=\"1\">");
			printWriter.println("<tr><th>ISBN</th><th>Rating</th><th>Title</th><th>Category</th></tr>");
			for (String isbn : this.service.searchBooksByAuthor(this.sessionId, author)) {
				printWriter.println("<tr><td>" + isbn + "</td>");
				Book book;
				try {
					book = this.service.getBook(this.sessionId, isbn);
					printWriter.println("<td>" + book.getRating() + "</td><td>" + book.getTitle() + "</td><td>"
							+ book.getRating() + "</td>");
				} catch (BookNotFoundException e) {
					printWriter.println("<td>-</td><td>-</td><td>" + e.getMessage() + "</td>");
				}

				printWriter.println("</tr>");
			}
			printWriter.println("</table>");
		}

		htmlBottom(printWriter);
	}