def form_select(label, name, values, hash = {})
name = name.to_sym
id = "form-#{name}"
multiple, size = hash.values_at(:multiple, :size)
s_args = {:name => name, :id => id}.merge(form_tabindex)
s_args[:multiple] = :multiple if multiple
s_args[:size] = (size || multiple || 1).to_i
has_selected, selected = hash.key?(:selected), hash[:selected]
error = form_errors[name.to_s]
g = Ramaze::Gestalt.new
g.tr do
g.td do
g.label(:for => id){ "#{label}:" }
g.span(:class => 'error'){ error } if error
end
g.td do
g.select(s_args) do
values.each do |key, value|
value ||= key
o_args = {:value => value}
o_args[:selected] = :selected if has_selected and value == selected
g.option(o_args){ key }
end
end
end
end
g.to_s
end