--- loncom/homework/radiobuttonresponse.pm	2010/06/14 02:08:28	1.146
+++ loncom/homework/radiobuttonresponse.pm	2011/05/27 18:40:37	1.148
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # mutliple choice style responses
 #
-# $Id: radiobuttonresponse.pm,v 1.146 2010/06/14 02:08:28 raeburn Exp $
+# $Id: radiobuttonresponse.pm,v 1.148 2011/05/27 18:40:37 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -141,7 +141,7 @@ sub start_foilgroup {
     my $result;
     %Apache::response::foilgroup=();
     $Apache::radiobuttonresponse::conceptgroup=0;
-    &Apache::response::pushrandomnumber();
+    &Apache::response::pushrandomnumber(undef,$target);
     if ($target eq 'tex' && $Apache::lonhomework::type eq 'exam') {
 	$result.='\item[\textbf{'.$Apache::lonxml::counter.'}.]';
     }
@@ -336,14 +336,24 @@ sub displayallfoils {
     my $i   =0;
     my $id=$Apache::inputtags::response['-1'];
     my $part=$Apache::inputtags::part;
-    my $lastresponse;
-    unless ((($Apache::lonhomework::history{"resource.$part.type"} eq 'anonsurvey') || ($Apache::lonhomework::history{"resource.$part.type"} eq 'anonsurveycred')) && (defined($env{'form.grade_symb'}))) {
+    my ($lastresponse,$newvariation,$showanswer);
+    if ((($Apache::lonhomework::history{"resource.$part.type"} eq 'randomizetry') ||
+        ($Apache::lonhomework::type eq 'randomizetry')) &&
+        ($Apache::inputtags::status[-1] eq 'CAN_ANSWER')) {
+        if ($env{'form.'.$part.'.rndseed'} ne
+            $Apache::lonhomework::history{"resource.$part.rndseed"}) {
+            $newvariation = 1;
+        }
+    }
+    $showanswer = &Apache::response::show_answer();
+    unless ((($Apache::lonhomework::history{"resource.$part.type"} eq 'anonsurvey') || ($Apache::lonhomework::history{"resource.$part.type"} eq 'anonsurveycred')) && (defined($env{'form.grade_symb'})) ||
+           ($newvariation && !$showanswer)) {
         $lastresponse = 
 	    $Apache::lonhomework::history{"resource.$part.$id.submission"};
     }
     if ($direction eq 'horizontal') { $result.='<table><tr>'; }
     my %lastresponse=&Apache::lonnet::str2hash($lastresponse);
-    if (&Apache::response::show_answer() ) {
+    if ($showanswer) {
 	foreach my $name (@names) {
 	    if ($Apache::response::foilgroup{$name.'.value'} ne 'unused') {
 		if (($direction eq 'horizontal') && ($target ne 'tex')) {
@@ -400,6 +410,7 @@ sub displayallfoils {
                        type=\"radio\"
                        name=\"HWVAL_$Apache::inputtags::response['-1']\"
                        value=\"$temp\"";
+
 		    if (defined($lastresponse{$name})) { $result .= ' checked="checked"'; }
 		    $result .= ' />'.$Apache::response::foilgroup{$name.'.text'}.
 			'</label>';
@@ -617,7 +628,18 @@ sub displayfoils {
 	my $temp=0;  
 	my $id=$Apache::inputtags::response['-1'];
 	my $part=$Apache::inputtags::part;
-	my $lastresponse=$Apache::lonhomework::history{"resource.$part.$id.submission"};
+        my ($lastresponse,$newvariation);
+        if ((($Apache::lonhomework::history{"resource.$part.type"} eq 'randomizetry') ||
+             ($Apache::lonhomework::type eq 'randomizetry')) && 
+        ($Apache::inputtags::status[-1] eq 'CAN_ANSWER')) {
+            if ($env{'form.'.$part.'.rndseed'} ne
+                $Apache::lonhomework::history{"resource.$part.rndseed"}) {
+                $newvariation = 1;
+            }
+        }
+        unless ($newvariation) {
+	    $lastresponse=$Apache::lonhomework::history{"resource.$part.$id.submission"};
+        }
 	my %lastresponse=&Apache::lonnet::str2hash($lastresponse);
 	if ($target ne 'tex' && $direction eq 'horizontal') {
 	    $result.="<table><tr>";