--- mh/lib/Caller_ID.pm	Thu Mar  9 22:09:02 2000
+++ mh-kees/lib/Caller_ID.pm	Thu May  4 18:54:55 2000
@@ -2,7 +2,11 @@
 use strict;
 
 use vars '%name_by_number', '%state_by_areacode';
-my ($my_areacode, $my_state);
+my ($my_areacode, $my_state, $force_transpose);
+
+# if you want first/last transposition, set this to one.  What's the best
+# way to pass this in from the mh.ini file?
+$force_transpose=0;
 
 sub make_speakable {
     my($data, $format) = @_;
@@ -57,7 +61,7 @@
     else {
         ($time, $number, $name) = unpack("A13A13A15", $data);
     }
-    ($last, $first, $middle) = split(' ', $name);
+    ($last, $first, $middle) = split(/[\s,]+/, $name, 3);
     $first = ucfirst(lc($first));
     $first = ucfirst(lc($middle)) if length($first) == 1 and $middle; # Last M First format
     $last  = ucfirst(lc($last));
@@ -85,9 +89,16 @@
     elsif ($last eq "Pay") {
         $caller = "a pay phone";
     }
-    else {
+    elsif ($name =~ /,/ || $force_transpose) {
+	# comma-separated (Ameritech) or forced transposing
         $caller = "$first $last";
     }
+    else {
+	# no comma from Ameritech means leave the caller ID string alone
+	# perform upper/lower-casing on all the words
+	$caller = join(" ", map { ucfirst(lc()) } split(/\s+/,$name));
+    }
+
 
     print "ac=$areacode state_by_area_code=$state_by_areacode{$areacode}\n";
     unless ($areacode == $my_areacode or !$areacode or $caller =~ /\.wav/) {
@@ -98,7 +109,7 @@
             $caller .= " from area code $areacode";
         }
     }
-    $caller = "Call from $caller.  Phone call is from $caller.";
+    $caller = "Call from $caller.";
                                 # Allow for scalar or array call
     return wantarray ? ($caller, $number, $name, $time) : $caller;
 }
@@ -155,6 +166,7 @@
 
     open (CALLERID, $caller_id_file) or print "\nError, could not find the area code file $caller_id_file: $!\n";
 
+    undef %name_by_number;
     while (<CALLERID>) {
         next if /^\#/;
         ($number, $name) = $_ =~ /^(\S+) +(.+) *$/;
