Hi Brian,
id must be unique in the document (http://www.w3.org/TR/html4/struct/global.html#adef-id) so you probably want to do something like:
append output "<input type=\"hidden\" id=\"$element(form_id):$element(name):$value\" name=\"$element(name)\" value=\"$value\">\n"
as it's done for checkbox and radio elements (https://openacs.org/api-doc/proc-view?proc=template::widget::input&source_p=1)
see http://www.w3.org/TR/html4/types.html#type-name for valid ID.