diff -uw spamspan/spamspan.compressed.js spamspan/spamspan.compressed.js
--- spamspan/spamspan.compressed.js	2008-09-09 23:40:14.000000000 +1000
+++ spamspan/spamspan.compressed.js	2009-07-16 12:35:14.000000000 +1000
@@ -1 +1,11 @@
-if(Drupal.jsEnabled){$(function(){$("span."+Drupal.settings.spamspan.m).each(function(_1){var _2=($("span."+Drupal.settings.spamspan.u,this).text()+"@"+$("span."+Drupal.settings.spamspan.d,this).text()).replace(/\s+/g,"").replace(/\[dot\]/g,".");var _3=$("span."+Drupal.settings.spamspan.t,this).text().replace(/^ \((.*)\)$/,"$1");$(this).after($("<a></a>").attr("href","mailto:"+_2).html(_3?_3:_2).addClass("spamspan")).remove();});});}
\ No newline at end of file
+if(Drupal.jsEnabled){
+$(function(){
+var _1=new RegExp(Drupal.settings.spamspan.p,"g");
+$("span."+Drupal.settings.spamspan.m).each(function(_2){
+var _3=($("span."+Drupal.settings.spamspan.u,this).text()+"@"+$("span."+Drupal.settings.spamspan.d,this).text()).replace(/\s+/g,"").replace(_1,".");
+var _4=$("span."+Drupal.settings.spamspan.t,this).text().replace(/^ \((.*)\)$/,"$1");
+$(this).after($("<a></a>").attr("href","mailto:"+_3).html(_4?_4:_3).addClass("spamspan")).remove();
+});
+});
+}
+
diff -uw spamspan/spamspan.js spamspan/spamspan.js
--- spamspan/spamspan.js	2008-09-09 23:40:14.000000000 +1000
+++ spamspan/spamspan.js	2009-07-16 12:24:37.000000000 +1000
@@ -17,6 +17,8 @@
 // load SpamSpan
 if (Drupal.jsEnabled) {
    $(function () {
+// need to manually create the "." replacement regex
+       var dot_regex = new RegExp(Drupal.settings.spamspan.p, 'g'); 
 // get each span with class spamSpanMainClass
        $("span." + Drupal.settings.spamspan.m).each(function (index) {
 // for each such span, set mail to the relevant value, removing spaces	
@@ -24,7 +26,7 @@
 	    	"@" + 
 	    	$("span." + Drupal.settings.spamspan.d, this).text())
 	    	.replace(/\s+/g, '')
-	    	.replace(/\[dot\]/g, '.');		
+	    	.replace(dot_regex, '.');		
 // Find the anchor text, and remove the round brackets from the start and end
 	    var _anchorText = $("span." +  Drupal.settings.spamspan.t, this).text().replace(/^ \((.*)\)$/, "$1");
 // create the <a> element, and replace the original span contents
diff -uw spamspan/spamspan.module spamspan/spamspan.module
--- spamspan/spamspan.module	2009-05-05 03:58:33.000000000 +1000
+++ spamspan/spamspan.module	2009-07-16 12:24:37.000000000 +1000
@@ -114,6 +114,14 @@
         '#required' => TRUE,
         '#description' => t('Replace "@" with this text when javascript is disabled.')
       );
+      // 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.')
+      );
       $form['spamspan_settings']['spamspan_use_graphic'] = array(
         '#type' => 'checkbox',
         '#title' => t('Use a graphical replacement for "@"'),
@@ -140,7 +148,8 @@
       'm' => 'spamspan',
       'u' => variable_get('spamspan_userclass', 'u'),
       'd' => variable_get('spamspan_domainclass', 'd'),
-      't' => variable_get('spamspan_anchorclass', 't')
+      't' => variable_get('spamspan_anchorclass', 't'),
+      'p' => variable_get('spamspan_dot', 'p')
     )
   ), 'setting');
 }
@@ -159,8 +168,8 @@
  */
 function _spamspan_callback($matches) {
   // Replace .'s in the address with [dot]
-  $user_name = str_replace(".", " [dot] ", $matches[2]);
-  $domain = str_replace(".", " [dot] ", $matches[3]);
+  $user_name = str_replace(".", variable_get('spamspan_dot', ' [dot] '), $matches[2]);
+  $domain = str_replace(".", variable_get('spamspan_dot',' [dot] '), $matches[3]);
   if (variable_get('spamspan_use_graphic', 1)) {
     $image = base_path() . drupal_get_path("module", "spamspan") ."/image.gif";
     $at = '<img alt="at" width="10" src="'. $image .'" />';
