--- maxlength.module.orig	2009-09-23 10:51:54.000000000 +0200
+++ maxlength.module	2009-09-23 11:56:42.000000000 +0200
@@ -56,10 +56,15 @@
 function _maxlength_content_form_alter(&$form, &$form_state, $form_id) {
   $type = $form['type']['#value'];
   // update the title as needed
-  _maxlength_format_element($form['title'], $form['title']['#default_value'], 'title', 'title', $type);
+  //_maxlength_format_element($form['title'], $form['title']['#default_value'], 'title', 'title', $type);
+  $form['title']['#after_build'] = array('_maxlength_format_element');
+  $form['title']['#max_length_properties'] = array($form['title']['#default_value'], 'title', 'title', $type);
 
   // Update the body as needed
-  _maxlength_format_element($form['body_field']['body'], $form['body_field']['body']['#default_value'], 'body', 'body', $type);
+  //_maxlength_format_element($form['body_field']['body'], $form['body_field']['body']['#default_value'], 'body', 'body', $type);
+  $form['body_field']['body']['#after_build'] = array('_maxlength_format_element');
+  $form['body_field']['body']['#max_length_properties'] = array($form['body_field']['body']['#default_value'], 'body', 'body', $type);
+
 
 
   if (module_exists('content')) {
@@ -70,8 +75,10 @@
     foreach ($list as $field) {
       if (is_array($form[$field])) {
         foreach (element_children($form[$field]) as $key) {
-          _maxlength_format_element($form[$field][$key], $form[$field][$key]['value'], $field, str_replace('_', '-', $field) .'-'. $key .'-value', $type);
-        }
+         //_maxlength_format_element($form[$field][$key], $form[$field][$key]['value'], $field, str_replace('_', '-', $field) .'-'. $key .'-value', $type);
+         $form[$field][$key]['#after_build'] = array('_maxlength_format_element');
+         $form[$field][$key]['#max_length_properties'] = array($form[$field][$key]['#default_value']['value'], $field, str_replace('_', '-', $field) .'-'. $key .'-value', $type);
+       }
       }
     }
   }
@@ -172,10 +179,18 @@
  *   Could this all be done without drupal_add_js and just theming of the form element.
  *   Can we use a theme function to let alter the placement of the maxlength text.
  */
-function _maxlength_format_element(&$element, $value = '', $field, $id, $type = '') {
+//function _maxlength_format_element(&$element, $value = '', $field, $id, $type = '') {
+function _maxlength_format_element($element) {
+  $value = $element['#max_length_properties'][0];
+  $field = $element['#max_length_properties'][1];
+  $id = $element['#max_length_properties'][2];
+  $type = $element['#max_length_properties'][3];
+  
   $values = _maxlength_get_values($field, $type);
 
   if ($values !== FALSE AND isset($values['limit']) AND $values['limit'] AND $values['use_js']) {
+
+    //dsm("$value - $field - $id - $type");
     $path = drupal_get_path('module', 'maxlength');
     drupal_add_js($path .'/maxlength.js');
 
@@ -203,7 +218,10 @@
     drupal_add_js($js_settings, 'setting');
     $element['#suffix'] = '<div id="maxlength-'. $id .'"
       class="maxlength-counter">'. t($values['text'], array('!limit' => $values['limit'], '!remaining' => '<span class="maxlength-counter-remaining">'. $remaining .'</span>')) .'</div>';
+
+    //dsm($element);
   }
+  return $element;
 }
 
 function _maxlength_get_values($field = 'body', $type = '') {
