diff --git includes/form.inc includes/form.inc
index 64ac3e6..528121e 100644
--- includes/form.inc
+++ includes/form.inc
@@ -2573,15 +2573,15 @@ function theme_form_element($element) {
   $t = get_t();
 
   // Add element's #type and #name as class to aid with JS/CSS selectors.
-  $class = array('form-item');
+  $element['attributes']['class'][] = 'form-item';
   if (!empty($element['#type'])) {
-    $class[] = 'form-type-' . strtr($element['#type'], '_', '-');
+    $element['attributes']['class'][] = 'form-type-' . strtr($element['#type'], '_', '-');
   }
   if (!empty($element['#name'])) {
-    $class[] = 'form-item-' . strtr($element['#name'], array(' ' => '-', '_' => '-', '[' => '-', ']' => ''));
+    $element['attributes']['class'][] = 'form-item-' . strtr($element['#name'], array(' ' => '-', '_' => '-', '[' => '-', ']' => ''));
   }
 
-  $output = '<div class="' . implode(' ', $class) . '">' . "\n";
+  $output = '<div ' . drupal_attributes($element['attributes']) . '">' . "\n";
   $required = !empty($element['#required']) ? '<span class="form-required" title="' . $t('This field is required.') . '">*</span>' : '';
 
   if (!empty($element['#title']) && empty($element['#form_element_skip_title'])) {
