diff --git a/js/maxlength.js b/js/maxlength.js
index a590fac..dbf5ed2 100644
--- a/js/maxlength.js
+++ b/js/maxlength.js
@@ -242,20 +242,7 @@
   }
 
   $.fn.charCount = function(options) {
-    // default configuration properties
-    var defaults = {
-      warning: 10,
-      css: 'counter',
-      counterElement: 'div',
-      cssWarning: 'messages warning',
-      cssExceeded: 'error',
-      counterText: Drupal.t('Content limited to @limit characters, remaining: <strong>@remaining</strong>'),
-      action: 'attach',
-      enforce: false,
-      truncateHtml: false
-    };
-
-    var options = $.extend(defaults, options);
+    var options = $.extend(Drupal.settings.maxlength.defaults, options);
     ml.options[$(this).attr('id')] = options;
 
     if (options.action == 'detach') {
diff --git a/maxlength.module b/maxlength.module
index 2473fbb..64a337d 100644
--- a/maxlength.module
+++ b/maxlength.module
@@ -34,8 +34,33 @@ function maxlength_pre_render($element) {
     }
     $element['#attributes']['class'][] = 'maxlength';
     $element['#attached']['js'][] = drupal_get_path('module', 'maxlength') . '/js/maxlength.js';
-  }
-  return $element;
+    $element['#attached']['js'][] = array(
+      'data' => array('maxlength' => array(
+        'defaults' => _maxlength_get_js_defaults()
+      )),
+      'type' => 'setting'
+    );
+   }
+   return $element;
+ }
+
+function _maxlength_get_js_defaults(){
+
+  $js_defaults = array(
+    'warning' => 10,
+    'css' => 'maxlength-counter',
+    'counterElement' => 'div',
+    'cssWarning' => 'messages warning',
+    'cssExceeded' => 'error',
+    'counterText' => MAXLENGTH_DEFAULT_JS_LABEL,
+    'action' => 'attach',
+    'enforce' => false,
+    'truncateHtml' => false
+  );
+
+  drupal_alter('maxlength_js_defaults', $js_defaults);
+
+  return $js_defaults;
 }
 
 /**
