--- loncom/homework/radiobuttonresponse.pm	2007/06/29 17:32:31	1.123
+++ loncom/homework/radiobuttonresponse.pm	2007/10/08 09:22:50	1.128
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # mutliple choice style responses
 #
-# $Id: radiobuttonresponse.pm,v 1.123 2007/06/29 17:32:31 albertel Exp $
+# $Id: radiobuttonresponse.pm,v 1.128 2007/10/08 09:22:50 foxr Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -56,8 +56,6 @@ sub start_radiobuttonresponse {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
     my $result;
 
-
-
     #when in a radiobutton response use these
     &Apache::lonxml::register('Apache::radiobuttonresponse',('foilgroup','foil','conceptgroup'));
     push (@Apache::lonxml::namespace,'radiobuttonresponse');
@@ -240,15 +238,19 @@ sub end_foilgroup {
 				      $direction,
 				      $bubbles_per_line);
 	    } elsif ($target eq 'answer' ) {
-		$result=&displayanswers($answer, \@shown);
+		$result=&displayanswers($answer, \@shown, $bubbles_per_line);
 	    } elsif ( $target eq 'grade') {
 		&grade_response($answer, \@shown, $bubbles_per_line);
 	    }  elsif ( $target eq 'analyze') {
+		my $bubble_lines = &bubble_line_count($answer_count, 
+						      $bubbles_per_line);
 		&Apache::response::analyze_store_foilgroup(\@shown,
 							   ['text','value','location']);
 		my $part_id="$Apache::inputtags::part.$Apache::inputtags::response[-1]";
 		push (@{ $Apache::lonhomework::analyze{"$part_id.options"} },
 		      ('true','false'));
+		push (@{ $Apache::lonhomework::analyze{"$part_id.bubble_lines"} },
+		      $bubble_lines);
 	    }
 	}
 	$Apache::lonxml::post_evaluate=0;
@@ -257,9 +259,13 @@ sub end_foilgroup {
 	&Apache::response::setup_prior_tries_hash(\&format_prior_answer,
 						  [\%Apache::response::foilgroup]);
     }
-    $bubble_lines = &bubble_line_count($answer_count, $bubbles_per_line);
     &Apache::response::poprandomnumber();
-    &Apache::lonxml::increment_counter($bubble_lines);
+    $bubble_lines = &bubble_line_count($answer_count, $bubbles_per_line);
+    &Apache::lonxml::increment_counter($bubble_lines,
+				       $id);
+    if ($target eq 'analyze') {
+	&Apache::lonhomework::set_bubble_lines();
+    }
     return $result;
 }
 
@@ -296,7 +302,6 @@ sub displayallfoils {
     my $result;
     &Apache::lonxml::debug("survey style display");
     my @names;
-    &Apache::lonnet::loghthis("Display all foils");
     if ( $Apache::response::foilgroup{'names'} ) {
 	@names= @{ $Apache::response::foilgroup{'names'} };
     }
@@ -585,6 +590,7 @@ sub displayfoils {
 	my @alphabet = ('A'..'Z');
 	my $i = 0;
 	my $bubble_number = 0;
+	my $line = 0;
 	my $temp=0;  
 	my $id=$Apache::inputtags::response['-1'];
 	my $part=$Apache::inputtags::part;
@@ -612,14 +618,15 @@ sub displayfoils {
 		$result .= ' />'.$Apache::response::foilgroup{$name.'.text'}."</label>";
 	    } else {
 		if ($Apache::lonhomework::type eq 'exam') {
-		    $result .= '{\small \textbf{'.$alphabet[$i].'}}$\bigcirc$'.$Apache::response::foilgroup{$name.'.text'}.'\\\\';  #' stupid emacs
-		    $i++;
-		    $bubble_number++;
 		    if($bubble_number >= $bubbles_per_line) {
+			$line++;
 			$i = 0;
 			$bubble_number = 0;
-			$result.='\item[\textbf{'.$Apache::lonxml::counter.'}.]';
+			$result.='\item[\textbf{'.($Apache::lonxml::counter+$line).'}.]';
 		    }
+		    $result .= '{\small \textbf{'.$alphabet[$i].'}}$\bigcirc$'.$Apache::response::foilgroup{$name.'.text'}.'\\\\';  #' stupid emacs
+		    $i++;
+		    $bubble_number++;
 		} else {
 		    $result .= '\vspace*{-2 mm}\item '.$Apache::response::foilgroup{$name.'.text'};
 		}
@@ -652,12 +659,18 @@ sub displayallanswers {
 }
 
 sub displayanswers {
-    my ($answer, $whichopt)=@_;
-    my $result=&Apache::response::answer_header('radiobuttonresponse');
+    my ($answer, $whichopt, $bubbles_per_line)=@_;
+    my $result;
+
     if ($Apache::lonhomework::type eq 'exam') {
-	my $correct = ('A'..'Z')[$answer];
-	$result.=&Apache::response::answer_part('radiobuttonresponse',
-						$correct);
+	my $line = int($answer/$bubbles_per_line);
+	my $correct = ('A'..'Z')[$answer%$bubbles_per_line];
+	$result .= &Apache::response::answer_header('radiobuttonresponse',
+						    $line);
+	$result .= &Apache::response::answer_part('radiobuttonresponse',
+						  $correct);
+    } else {
+	$result .= &Apache::response::answer_header('radiobuttonresponse');
     }
     foreach my $name (@{ $whichopt }) {
 	$result.=&Apache::response::answer_part('radiobuttonresponse',