--- loncom/homework/response.pm	2004/05/27 04:25:13	1.99
+++ loncom/homework/response.pm	2004/11/06 21:30:35	1.105.2.1
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # various response type definitons response definition
 #
-# $Id: response.pm,v 1.99 2004/05/27 04:25:13 albertel Exp $
+# $Id: response.pm,v 1.105.2.1 2004/11/06 21:30:35 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -46,7 +46,8 @@ sub start_response {
     push (@Apache::inputtags::response,$id);
     push (@Apache::inputtags::responselist,$id);
     @Apache::inputtags::inputlist=();
-    if ($Apache::inputtags::part eq '') {
+    if ($Apache::inputtags::part eq '' && 
+	!$Apache::lonhomework::ignore_response_errors) {
 	&Apache::lonxml::error(&HTML::Entities::encode(&mt("Found a <*response> outside of a <part> in a <part>ed problem"),'<>&"'));
     }
     if ($Apache::inputtags::response_with_no_part &&
@@ -135,12 +136,17 @@ sub setrandomnumber {
 	my ($num1,$num2)=split(/\Q$char\E/,$rndseed);
 	$num1+=$rndmod;
 	$num2+=$rndmod;
+	if($Apache::lonnet::_64bit) { $num1=(($num1<<32)>>32); $num2=(($num2<<32)>>32); }
 	$rndseed=$num1.$char.$num2;
     } else {
 	$rndseed+=$rndmod;
+	if($Apache::lonnet::_64bit) {
+	    use integer;
+	    $rndseed=(($rndseed<<32)>>32);
+	}
     }
-    &Apache::lonnet::setup_random_from_rndseed($rndseed);
     &Apache::lonxml::debug("randseed $rndseed");
+    &Apache::lonnet::setup_random_from_rndseed($rndseed);
     return '';
 }
 
@@ -220,9 +226,16 @@ sub meta_part_order {
     if (@Apache::inputtags::partlist) {
 	my @parts=@Apache::inputtags::partlist;
 	shift(@parts);
-	return '<partorder>'.join(',',@parts).'</partorder>';
+	return '<partorder>'.join(',',@parts).'</partorder>'."\n";
     } else {
-	return '<partorder>0</partorder>';
+	return '<partorder>0</partorder>'."\n";
+    }
+}
+
+sub meta_response_order {
+    if (@Apache::inputtags::responselist) {
+	return '<responseorder>'.join(',',@Apache::inputtags::responselist).
+	    '</responseorder>'."\n";
     }
 }
 
@@ -492,12 +505,14 @@ sub answer_footer {
 }
 
 sub showallfoils {
-    my $return=0;
-    if (defined($ENV{'form.showallfoils'}) &&
-	$ENV{'request.state'} eq 'construct') {
-	$return=1;
+    if (defined($ENV{'form.showallfoils'})) {
+	my ($symb)=&Apache::lonxml::whichuser();
+	if ($ENV{'request.state'} eq 'construct' || 
+	    ($ENV{'user.adv'} && $symb eq '')) {
+	    return 1;
+	}
     }
-    return $return;
+    return 0;
 }
 
 sub getresponse {
@@ -522,7 +537,11 @@ sub getresponse {
 	$Apache::lonhomework::results{"resource.$part.$id.scantron"}.=
 	    $response;
 	if ($resulttype ne 'letter') {
-	    $response = $let_to_num{$response};
+	    if ($resulttype eq 'A is 1') {
+		$response = $let_to_num{$response}+1;
+	    } else {
+		$response = $let_to_num{$response};
+	    }
 	}
     } else {
 	$response = $ENV{$formparm};