diff -urp misc/form.js misc/form.js
--- misc/form.js	2008-10-29 12:01:26.000000000 +0200
+++ misc/form.js	2008-12-16 00:59:30.000000000 +0200
@@ -10,3 +10,19 @@ Drupal.behaviors.multiselectSelector = {
     });
   }
 };
+
+
+Drupal.behaviors.filterGuildelines = {
+  attach: function (context) {
+  // Automatically displays the guidelines of the selected input format.
+    $('.filter-guidelines:not(.filterGuidelines-processed)', context)
+      .addClass('filterGuidelines-processed')
+      .parents('.filter-wrapper').find('select.filter-list')
+      .bind('change', function() {
+        $(this).parents('.filter-wrapper')
+        .find('.filter-guidelines-item').hide()
+        .siblings('#filter-guidelines-' + this.value).show();
+      })
+      .change();
+  }
+};
diff -urp modules/filter/filter.module modules/filter/filter.module
--- modules/filter/filter.module	2008-12-03 21:43:21.000000000 +0200
+++ modules/filter/filter.module	2008-12-16 00:58:02.000000000 +0200
@@ -60,6 +60,9 @@ function filter_theme() {
     'filter_tips_more_info' => array(
       'arguments' => array(),
     ),
+    'filter_guidelines' => array(
+      'arguments' => array('format' => NULL),
+     ),    
   );
 }
 
@@ -479,60 +482,39 @@ function check_markup($text, $format = F
  *   HTML for the form element.
  */
 function filter_form($value = FILTER_FORMAT_DEFAULT, $weight = NULL, $parents = array('format')) {
-  $value = filter_resolve_format($value);
-  $formats = filter_formats();
-
-  $extra = theme('filter_tips_more_info');
-
-  if (count($formats) > 1) {
-    $form = array(
-      '#type' => 'fieldset',
-      '#title' => t('Input format'),
-      '#collapsible' => TRUE,
-      '#collapsed' => TRUE,
-      '#weight' => $weight,
-      '#element_validate' => array('filter_form_validate'),
-    );
-    // Multiple formats available: display radio buttons with tips.
-    foreach ($formats as $format) {
-      // Generate the parents as the autogenerator does, so we will have a
-      // unique id for each radio button.
-      $parents_for_id = array_merge($parents, array($format->format));
-      $form[$format->format] = array(
-        '#type' => 'radio',
-        '#title' => $format->name,
-        '#default_value' => $value,
-        '#return_value' => $format->format,
-        '#parents' => $parents,
-        '#description' => theme('filter_tips', _filter_tips($format->format, FALSE)),
-        '#id' => form_clean_id('edit-' . implode('-', $parents_for_id)),
-      );
-    }
-  }
-  else {
-    // Only one format available: use a hidden form item and only show tips.
-    $format = array_shift($formats);
-    $form[$format->format] = array('#type' => 'value', '#value' => $format->format, '#parents' => $parents);
-    $tips = _filter_tips(variable_get('filter_default_format', 1), FALSE);
-    $form['format']['guidelines'] = array(
-      '#title' => t('Formatting guidelines'),
-      '#markup' => theme('filter_tips', $tips, FALSE),
-    );
+    $value = filter_resolve_format($value);
+    $formats = filter_formats();
+  
+   $form = array(
+     '#type' => 'fieldset',
+     '#weight' => $weight,
+     '#attributes' => array('class' => 'filter-wrapper'),
+   );
+  
+   if (count($formats)) {
+     // If there is only a single input format then disable the selectlist.
+     drupal_add_js('misc/form.js', 'core');
+     foreach ($formats as $format) {
+       $options[$format->format] = $format->name;
+       $guidelines[$format->format] = array('#markup' => theme('filter_guidelines', $format));
+     }
+     $element_id = form_clean_id('edit-' . implode('-', $parents));
+     $form['format'] = array(
+       '#type' => 'select',
+       '#title' => t('Formatting'),
+       '#options' => $options,
+       '#default_value' => $value,
+       '#parents' => $parents,
+       '#id' => $element_id,
+       '#attributes' => array('class' => 'filter-list'),
+       '#disabled' => count($formats) == 1,
+     );
+     $form['format_help'] = array('#markup' => '<div id="'. $element_id .'-help" class="filter-help">'. theme('filter_tips_more_info', TRUE) .'</div>');
+     $form['format_guidelines'] = array_merge($guidelines, array('#prefix' => '<div id="'. $element_id .'-guidelines" class="filter-guidelines">', '#suffix' => '</div>'));
   }
-  $form[] = array('#markup' => $extra);
   return $form;
 }
 
-function filter_form_validate($form) {
-  foreach (element_children($form) as $key) {
-    if ($form[$key]['#value'] == $form[$key]['#return_value']) {
-      return;
-    }
-  }
-  form_error($form, t('An illegal choice has been detected. Please contact the site administrator.'));
-  watchdog('form', 'Illegal choice %choice in %name element.', array('%choice' => $form[$key]['#value'], '%name' => empty($form['#title']) ? $form['#parents'][0] : $form['#title']), WATCHDOG_ERROR);
-}
-
 /**
  * Returns TRUE if the user is allowed to access this format.
  */
@@ -585,8 +567,23 @@ function _filter_tips($format, $long = F
  *
  * @ingroup themeable
  */
-function theme_filter_tips_more_info() {
-  return '<p>' . l(t('More information about formatting options'), 'filter/tips') . '</p>';
+function theme_filter_tips_more_info($icon = FALSE) {
+  if ($icon) {
+    $description = t('More information about formatting options');
+    return l(theme('image', 'misc/help.png', $description, $description), 'filter/tips', array('html' => TRUE));
+  }
+  else {
+    return '<p>'. l(t('More information about formatting options'), 'filter/tips') .'</p>';
+  }
+}
+
+/**
+ * Format guidelines for an input format.
+ *
+ * @ingroup themeable
+ */
+function theme_filter_guidelines($format) {
+  return '<div id="filter-guidelines-'. $format->format .'" class="filter-guidelines-item"><label>'. $format->name .':</label>'. theme('filter_tips', _filter_tips($format->format, FALSE)) .'</div>';
 }
 
 /**
