diff --git a/spamspan.compressed.js b/spamspan.compressed.js
index ff01571..c0474f7 100644
--- a/spamspan.compressed.js
+++ b/spamspan.compressed.js
@@ -1 +1 @@
-Drupal.behaviors.spamspan=function(_1){$("span."+Drupal.settings.spamspan.m,_1).each(function(_2){var _3=($("span."+Drupal.settings.spamspan.u,this).text()+"@"+$("span."+Drupal.settings.spamspan.d,this).text()).replace(/\s+/g,"").replace(/\[dot\]/g,".");var _4=$("span."+Drupal.settings.spamspan.h,this).text().replace(/^ ?\((.*)\) ?$/,"$1");var _5=$.map(_4.split(/, /),function(n,i){return (n.replace(/: /,"="));});var _6=$("span."+Drupal.settings.spamspan.t,this).text().replace(/^ \((.*)\)$/,"$1");var _7="mailto:"+encodeURIComponent(_3);var _8=_5.join("&");_7+=_8?("?"+_8):"";$(this).after($("<a></a>").attr("href",_7).html(_6?_6:_3).addClass("spamspan")).remove();});};
\ No newline at end of file
+Drupal.SpamSpan={};Drupal.behaviors.spamspan=function(_1){$("span."+Drupal.settings.spamspan.m,_1).each(function(_2){var _3=new RegExp(Drupal.SpamSpan.escape(Drupal.settings.spamspan.dot),"g");var _4=($("span."+Drupal.settings.spamspan.u,this).text()+"@"+$("span."+Drupal.settings.spamspan.d,this).text()).replace(_3,".").replace(/\s+/g,"");var _5=$("span."+Drupal.settings.spamspan.h,this).text().replace(/^ ?\((.*)\) ?$/,"$1");var _6=$.map(_5.split(/, /),function(n,i){return (n.replace(/: /,"="));});var _7=$("span."+Drupal.settings.spamspan.t,this).text().replace(/^ \((.*)\)$/,"$1");var _8="mailto:"+encodeURIComponent(_4);var _9=_6.join("&");_8+=_9?("?"+_9):"";$(this).after($("<a></a>").attr("href",_8).html(_7?_7:_4).addClass("spamspan")).remove();});};Drupal.SpamSpan.escape=function(_a){if(!arguments.callee.sRE){var _b=["/",".","*","+","?","|","(",")","[","]","{","}","\\"];arguments.callee.sRE=new RegExp("(\\"+_b.join("|\\")+")","g");}return _a.replace(arguments.callee.sRE,"\\$1");};
\ No newline at end of file
diff --git a/spamspan.js b/spamspan.js
index 1b79c47..46e08da 100644
--- a/spamspan.js
+++ b/spamspan.js
@@ -13,17 +13,19 @@
    	http://shrinksafe.dojotoolkit.org/ TO MAKE spamspan.compressed.js
 */
 
+Drupal.SpamSpan = {};
 
 // load SpamSpan
 Drupal.behaviors.spamspan = function(context) {
 // get each span with class spamSpanMainClass
-       $("span." + Drupal.settings.spamspan.m, context).each(function (index) {
+  $("span." + Drupal.settings.spamspan.m, context).each(function (index) {
+    var dot_regex = new RegExp(Drupal.SpamSpan.escape(Drupal.settings.spamspan.dot), 'g');
 // for each such span, set mail to the relevant value, removing spaces
 	    var _mail = ($("span." + Drupal.settings.spamspan.u, this).text() +
 	    	"@" +
 	    	$("span." + Drupal.settings.spamspan.d, this).text())
-	    	.replace(/\s+/g, '')
-	    	.replace(/\[dot\]/g, '.');
+	    	.replace(dot_regex, '.')
+	    	.replace(/\s+/g, '');
 // Find the header text, and remove the round brackets from the start and end
 	    var _headerText = $("span." +  Drupal.settings.spamspan.h, this).text().replace(/^ ?\((.*)\) ?$/, "$1");
 	    // split into individual headers, and return as an array of header=value pairs
@@ -45,3 +47,17 @@ Drupal.behaviors.spamspan = function(context) {
 		).remove();
 	} );
 };
+
+// Escapes the regular expression.
+Drupal.SpamSpan.escape = function(text) {
+  if (!arguments.callee.sRE) {
+    var specials = [
+      '/', '.', '*', '+', '?', '|',
+      '(', ')', '[', ']', '{', '}', '\\'
+    ];
+    arguments.callee.sRE = new RegExp(
+      '(\\' + specials.join('|\\') + ')', 'g'
+    );
+  }
+  return text.replace(arguments.callee.sRE, '\\$1');
+}
\ No newline at end of file
diff --git a/spamspan.module b/spamspan.module
index 090ff93..09d856e 100644
--- a/spamspan.module
+++ b/spamspan.module
@@ -112,7 +112,15 @@ function spamspan_filter($op, $delta = 0, $format = -1, $text = '') {
         '#title' => t('Use a graphical replacement for "@"'),
         '#default_value' => variable_get('spamspan_use_graphic', 0),
         '#description' => t('Replace "@" with a graphical representation when javascript is disabled (and ignore the setting "Replacement for @" above).')
-        );
+      );
+      // spamspan '.' replacement
+      $form['spamspan_settings']['spamspan_dot'] = array(
+        '#type' => 'textfield',
+        '#title' => t('Replacement for "."'),
+        '#default_value' => variable_get('spamspan_dot', ' [dot] '),
+        '#required' => TRUE,
+        '#description' => t('Replace "." with this text when javascript is disabled.')
+      );
       return $form;
     }
     break;
@@ -133,7 +141,8 @@ function spamspan_init() {
       'u' => variable_get('spamspan_userclass', 'u'),
       'd' => variable_get('spamspan_domainclass', 'd'),
       'h' => 'h',
-      't' => variable_get('spamspan_anchorclass', 't')
+      't' => variable_get('spamspan_anchorclass', 't'),
+      'dot' => variable_get('spamspan_dot', ' [dot] '),
     )
   ), 'setting');
 }
@@ -185,8 +194,9 @@ function _spamspan_output($name, $domain, $contents, $headers) {
 
 
   // Replace .'s in the address with [dot]
-  $user_name = str_replace(".", " [dot] ", $name);
-  $domain = str_replace(".", " [dot] ", $domain);
+  $dot = variable_get('spamspan_dot', ' [dot] ');
+  $user_name = str_replace(".", $dot, $name);
+  $domain = str_replace(".", $dot, $domain);
   if (variable_get('spamspan_use_graphic', 0)) {
     $image = base_path() . drupal_get_path("module", "spamspan") ."/image.gif";
     $at = '<img alt="at" width="10" src="'. $image .'" />';
diff --git a/spamspan.test b/spamspan.test
index 2496cd1..95f1f75 100644
--- a/spamspan.test
+++ b/spamspan.test
@@ -30,6 +30,7 @@ class SpamSpanBasicTestCase extends DrupalWebTestCase {
     variable_set('spamspan_anchorclass', 't');
     variable_set('spamspan_at', ' [at] ');
     variable_set('spamspan_use_graphic', 0);
+    variable_set('spamspan_dot', ' [dot] ');
   }
 
   /**
@@ -163,6 +164,7 @@ class SpamSpanMailtoTestCase extends DrupalWebTestCase {
     variable_set('spamspan_anchorclass', 't');
     variable_set('spamspan_at', ' [at] ');
     variable_set('spamspan_use_graphic', 0);
+    variable_set('spamspan_dot', ' [dot] ');
   }
   /**
     * Test for proper conversion of mailto: URLs
