    # File lib/ramaze/helper/blue_form.rb, line 574
            def select(label, name, args = {})
              id              = args[:id] ? args[:id] : id_for(name)
              multiple, size  = args.values_at(:multiple, :size)

              # Get all the values
              if !args[:values] and @form_values.respond_to?(name)
                values = @form_values.send(name)
              else
                values = args[:values]
                args.delete(:values)
              end

              args[:multiple] = 'multiple' if multiple
              args[:size]     = (size || values.count || 1).to_i
              args[:name]     = multiple ? "#{name}[]" : name
              args            = args.merge(:id => id)

              # Retrieve the selected value
              has_selected, selected = args.key?(:selected), args[:selected]
                            selected = [selected] if !selected.is_a?(Array)
              args.delete(:selected)

              @g.p do
                label_for(id, label, name)
                @g.select args do
                  values.each do |value, o_name|
                    o_name ||= value
                    o_args = {:value => value}

                    if has_selected and selected.include?(value)
                      o_args[:selected] = 'selected'
                    end

                    @g.option(o_args){ o_name }
                  end
                end
              end
            end