Index: trunk/CHANGELOG
===================================================================
--- trunk/CHANGELOG	(revision 791)
+++ trunk/CHANGELOG	(revision 792)
@@ -14,6 +14,7 @@
 02-Apr-2008 Matthias Gallas
 #	fixed bug with registration of users are not added to signup group
 02-Apr-2008 Christian Sommer
+#	added handling of missing characters to mailto encryption routines
 !	some code clean-up in News module
 !	fixed some layout issues with Form module (combination with Output-filter)
 !	fixed layout issue with optional subject/body text of encrypted mailto links
Index: trunk/wb/modules/output_filter/filter-routines.php
===================================================================
--- trunk/wb/modules/output_filter/filter-routines.php	(revision 791)
+++ trunk/wb/modules/output_filter/filter-routines.php	(revision 792)
@@ -167,7 +167,7 @@
 				// encrypt the email using an adapted Caesar cipher
 		  	$encrypted_email = "";
 				for($i = strlen($email_address) -1; $i > -1; $i--) {
-					if(in_array($email_address[$i], array('F', 'Z', 'X', 'K'))) {
+					if(preg_match('#[FZXK0-9]#', $email_address[$i], $characters)) {
 						$encrypted_email .= $email_address[$i];
 					} else {
 						$encrypted_email .= chr((ord($email_address[$i]) -97 + $shift) % 26 + 97);
Index: trunk/wb/modules/output_filter/js/mdcr.js
===================================================================
--- trunk/wb/modules/output_filter/js/mdcr.js	(revision 791)
+++ trunk/wb/modules/output_filter/js/mdcr.js	(revision 792)
@@ -8,14 +8,18 @@
 
 function sdcr(a,f) {
   var b = a.charCodeAt(a.length-1) -97;
-  var c=""; var e;
+  var c=""; var e; var g;
   
   for(var d=a.length-2; d>-1; d--) {
     if(a.charCodeAt(d) < 97) {
-      if(a.charCodeAt(d) == 70) { c+=String.fromCharCode(64); }
-      if(a.charCodeAt(d) == 90) { c+=String.fromCharCode(46); }
-      if(a.charCodeAt(d) == 88) { c+=String.fromCharCode(95); }
-      if(a.charCodeAt(d) == 45) { c+=String.fromCharCode(45); }
+      switch(a.charCodeAt(d)) {
+	case 70: g=64; break;
+	case 90: g=46; break;
+      	case 88: g=95; break;
+      	case 45: g=45; break;
+	default: g=a.charCodeAt(d); break;
+      }
+      c+=String.fromCharCode(g)
     } else {
       e=(a.charCodeAt(d) - 97 - b) % 26;
       e+=(e<0 || e>25) ? +26 : 0;
