diff -up press_flow_pure/sites/all/modules/contrib/maxlength/maxlength.js drupal/sites/all/modules/contrib/maxlength/maxlength.js
--- press_flow_pure/sites/all/modules/contrib/maxlength/maxlength.js	2008-09-28 17:14:48.000000000 -0700
+++ drupal/sites/all/modules/contrib/maxlength/maxlength.js	2010-08-03 08:19:11.154907637 -0700
@@ -1,15 +1,29 @@
 /* $Id: maxlength.js,v 1.1.6.6 2008/09/29 00:14:48 acm Exp $ */
 
+(function($) {
+
 Drupal.maxLength_limit = function (field) {
   var limit = field.attr("limit");
-
+  var dir = field.attr("count_dir");
   // calculate the remaining count of chars
-  var remainingCnt = limit - field.val().length;
-
-  // if there is not remaining char, we clear additional content
-  if (remainingCnt < 0) {
-    field.val(field.val().substr(0, limit));
-    remainingCnt = 0;
+  if(dir == 2){
+    //count up
+    var remainingCnt = field.val().length;
+    if(remainingCnt > limit){
+      $('#maxlength-'+field.attr('id').substr(5) + ' span.maxlength-counter-remaining').addClass("error");
+    }
+    else{
+      $('#maxlength-'+field.attr('id').substr(5) + ' span.maxlength-counter-remaining').removeClass("error");
+    }
+  }else{
+    //count down
+    var remainingCnt = limit - field.val().length;
+    if(remainingCnt < 0){
+      $('#maxlength-'+field.attr('id').substr(5) + ' span.maxlength-counter-remaining').addClass("error");
+    }
+    else{
+      $('#maxlength-'+field.attr('id').substr(5) + ' span.maxlength-counter-remaining').removeClass("error");
+    }
   }
 
   // update the remaing chars text
@@ -25,9 +39,11 @@ if (Drupal.jsEnabled) {
   $(document).ready(function(){
     // get all the settings, and save the limits in the fields
     for (var id in Drupal.settings.maxlength) {
-      var limit = Drupal.settings.maxlength[id];
+      var limit = Drupal.settings.maxlength[id].limit;
+      var dir = Drupal.settings.maxlength[id].count_dir;
       var element = $("#"+ id);
       element.attr("limit", limit);
+      element.attr("count_dir", dir);
       // update the count at the page load
       Drupal.maxLength_limit(element);
 
@@ -37,3 +53,5 @@ if (Drupal.jsEnabled) {
     }
   });
 }
+
+})(jQuery);
diff -up press_flow_pure/sites/all/modules/contrib/maxlength/maxlength.module drupal/sites/all/modules/contrib/maxlength/maxlength.module
--- press_flow_pure/sites/all/modules/contrib/maxlength/maxlength.module	2009-06-06 10:53:32.000000000 -0700
+++ drupal/sites/all/modules/contrib/maxlength/maxlength.module	2010-08-03 08:19:11.154907637 -0700
@@ -104,11 +104,13 @@ function _maxlength_content_type_form_al
       '#description' => t('Maximum number of characters allowed for the !type field of this content type. Leave blank for an unlimited size.', array('!type' => $label)) .'<br/>'.
       '<b>'. t('Please remember, it counts all characters, including HTML, so may not work as expected with rich text editors e.g. FCKeditor / tinyMCE.') .'</b>',
         );
+
     $form['submission'][MAXLENGTH_NODE_TYPE . $label][MAXLENGTH_NODE_TYPE . $label .'_js'] = array(
-      '#type' => 'checkbox',
-      '#title' => t('Enable remaining characters countdown for the !label', array('!label' => ucwords($label))),
+      '#type' => 'radios',
+      '#title' => t('Enable remaining characters count for the !label', array('!label' => ucwords($label))),
       '#default_value' => variable_get(MAXLENGTH_NODE_TYPE . $label .'_js_'. $type, '0'),
-      '#description' => t('This will enable a Javascript based count down, as well as the client side validation for the !type field of this content type. If no limit set this is ignored.', array('!type' => $label)),
+      '#options' => array('Disable count', 'Enable count down', 'Enable count up'),
+      '#description' => t('This will enable a Javascript based count, as well as the client side validation for the !type field of this content type. If no limit set this is ignored.', array('!type' => $label)),
     );
     $form['submission'][MAXLENGTH_NODE_TYPE . $label][MAXLENGTH_NODE_TYPE . $label .'_text'] = array(
       '#type' => 'textarea',
@@ -127,10 +129,11 @@ function _maxlength_cck_form_alter(&$for
       $new_fields[$key] = $field;
       if ($key == 'max_length') {
         $new_fields[MAXLENGTH_NODE_TYPE . $form['field_name']['#value'] .'_js'] = array(
-          '#type' => 'checkbox',
-          '#title' => t('Enable remaining characters countdown for this field'),
+          '#type' => 'radios',
+          '#title' => t('Enable remaining characters count for this field'),
           '#default_value' => variable_get(MAXLENGTH_NODE_TYPE . $form['field_name']['#value'] .'_js', '0'),
-          '#description' => t('This will enable a Javascript based count down, as well as the client side validation for this field. If no limit set this is ignored.'),
+          '#options' => array('Disable count', 'Enable count down', 'Enable count up'),
+          '#description' => t('This will enable a Javascript based count, as well as the client side validation for this field. If no limit set this is ignored.'),
         );
 
         $new_fields[MAXLENGTH_NODE_TYPE . $form['field_name']['#value'] .'_text'] = array(
@@ -197,7 +200,7 @@ function _maxlength_format_element(&$ele
 
     $js_settings = array(
       'maxlength' => array(
-        'edit-'. $id => $values['limit'],
+        'edit-'. $id => array('limit' => $values['limit'], 'count_dir' => $values['use_js']),
       ),
     );
     drupal_add_js($js_settings, 'setting');
Common subdirectories: press_flow_pure/sites/all/modules/contrib/maxlength/translations and drupal/sites/all/modules/contrib/maxlength/translations
