anchor.diff:       echessd_lib:escape_html_entities(
          gettext(Session, CaptionTextID, [])), "'>"].
   
  -%% @doc
  +%% @doc Generate HTML code for a form hidden field.
   -spec hidden(Name :: echessd_query_parser:http_query_key(),
                Value :: any()) -> HTML :: iolist().
   hidden(Name, Value) ->
  
positive.code: tag([_ | _] = Tag, Attrs, Value) ->
      [$<, Tag, [[$\s | V] || V <- Attrs], $>, Value, "</", Tag, $>].
  
  %% @doc
  -spec checkbox(Session :: #session{},
                 ID :: nonempty_string(),
                 Name :: echessd_query_parser:http_query_key(),
                 CaptionTextID :: atom(),
                 IsChecked :: boolean()) ->
                        HTML :: iolist().
  checkbox(Session, ID, Name, CaptionTextID, IsChecked) ->
      [io_lib:format(
         "<label for=~s><input type=checkbox id=~s name=~w", [ID, ID, Name]),
       proplists:get_value(IsChecked, [{false, ""}], " checked"), ">&nbsp;",
       gettext(Session, CaptionTextID, []), "</label>"].
  
  %% @doc
  -spec input(Session :: #session{},
              Name :: echessd_query_parser:http_query_key(),
              CaptionTextID :: atom(),
              Value :: any()) ->
                     HTML :: iolist().
  input(Session, Name, CaptionTextID, Value) ->
      EncodedValue =
          echessd_lib:escape_html_entities(
            echessd_query_parser:encode(Name, Value)),
      [gettext(Session, CaptionTextID, []), ": ",
       io_lib:format("<input name=~w type=text value='~s'>",
                     [Name, EncodedValue])].
  
  %% @doc
  -spec password(Session :: #session{},
                 Name :: echessd_query_parser:http_query_key(),
                 CaptionTextID :: atom()) -> HTML :: iolist().
  
negative.code:     io_lib:format("<input name=~w type=hidden value='~s'>",
                    [Name, EncodedValue]).
  
  %% @doc Generate HTML code for a dropdown select list.
  -spec select(Session :: #session{},
               Name :: echessd_query_parser:http_query_key(),
               CaptionTextID :: atom(),
  