--- loncom/homework/radiobuttonresponse.pm	2005/12/06 10:03:57	1.105
+++ loncom/homework/radiobuttonresponse.pm	2006/12/07 23:10:42	1.108
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # mutliple choice style responses
 #
-# $Id: radiobuttonresponse.pm,v 1.105 2005/12/06 10:03:57 albertel Exp $
+# $Id: radiobuttonresponse.pm,v 1.108 2006/12/07 23:10:42 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -32,6 +32,8 @@ use HTML::Entities();
 use Apache::lonlocal;
 use Apache::lonnet;
 
+my $exam_max_bubbles = 10;
+
 BEGIN {
     &Apache::lonxml::register('Apache::radiobuttonresponse',('radiobuttonresponse'));
 }
@@ -234,7 +236,10 @@ sub displayallfoils {
     my ($direction)=@_;
     my $result;
     &Apache::lonxml::debug("survey style display");
-    my @names = @{ $Apache::response::foilgroup{'names'} };
+    my @names;
+    if ( $Apache::response::foilgroup{'names'} ) {
+	@names= @{ $Apache::response::foilgroup{'names'} };
+    }
     my $temp=0;
     my $id=$Apache::inputtags::response['-1'];
     my $part=$Apache::inputtags::part;
@@ -271,7 +276,7 @@ sub displayallfoils {
                 $result .= '<label>';
 		$result.="<input type=\"radio\" name=\"HWVAL_$Apache::inputtags::response['-1']\" value=\"$temp\" ";
 		if (defined($lastresponse{$name})) { $result .= 'checked="on"'; }
-		$result .= '>'.$Apache::response::foilgroup{$name.'.text'}.
+		$result .= ' />'.$Apache::response::foilgroup{$name.'.text'}.
                     '</label>';
 		$temp++;
 		if ($direction eq 'horizontal') { $result.="</td>"; }
@@ -484,11 +489,22 @@ sub displayfoils {
                 $result.= '<label>';
 		$result.="<input type=\"radio\" name=\"HWVAL_$Apache::inputtags::response['-1']\" value=\"$temp\" ";
 		if (defined($lastresponse{$name})) { $result .= 'checked="on"'; }
-		$result .= '>'.$Apache::response::foilgroup{$name.'.text'}."</label>";
+		$result .= ' />'.$Apache::response::foilgroup{$name.'.text'}."</label>";
 	    } else {
 		if ($Apache::lonhomework::type eq 'exam') {
+		    
+		    # If necessary, start a new group of bubbles
+		    # in the next row on the scantron sheet:
+		    #
+		    if ($i >= $exam_max_bubbles) {
+			$i = 0;	# Back to A.
+			$Apache::lonxml::counter++; # Next row of bubbles...
+			$result .= '\item[\textbf{'.$Apache::lonxml::counter.'}.]';
+		    }
+
 		    $result .= '{\small \textbf{'.$alphabet[$i].'}}$\bigcirc$'.$Apache::response::foilgroup{$name.'.text'}.'\\\\';  #' stupid emacs
 		    $i++;
+
 		} else {
 		    $result .= '\vspace*{-2 mm}\item '.$Apache::response::foilgroup{$name.'.text'};
 		}
@@ -507,7 +523,10 @@ sub displayfoils {
 }
 
 sub displayallanswers {
-    my @names = @{ $Apache::response::foilgroup{'names'} };
+    my @names;
+    if ( $Apache::response::foilgroup{'names'} ) {
+	@names= @{ $Apache::response::foilgroup{'names'} };
+    }
   
     my $result=&Apache::response::answer_header('radiobuttonresponse');
     foreach my $name (@names) {