--- loncom/homework/response.pm	2003/10/27 19:27:09	1.87
+++ loncom/homework/response.pm	2004/02/16 20:09:51	1.91
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # various response type definitons response definition
 #
-# $Id: response.pm,v 1.87 2003/10/27 19:27:09 albertel Exp $
+# $Id: response.pm,v 1.91 2004/02/16 20:09:51 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -77,17 +77,13 @@ sub end_hintresponse {
 # that is stable and unique based on the part number and response number
 sub setrandomnumber {
     my $rndseed;
-    if ($ENV{'request.state'} eq "construct") {
-	$rndseed=$ENV{'form.rndseed'};
-	if (!$rndseed) { $rndseed=time; }
-    } else {
-	$rndseed=&Apache::lonnet::rndseed();
-    }
+    $rndseed=&Apache::structuretags::setup_rndseed();
+    if (!defined($rndseed)) { $rndseed=&Apache::lonnet::rndseed(); }
     &Apache::lonxml::debug("randseed $rndseed");
     #  $rndseed=unpack("%32i",$rndseed);
     my $rndmod=(&Apache::lonnet::numval($Apache::inputtags::part) << 10);
     if (defined($Apache::inputtags::response['-1'])) {
-       $rndmod+=&Apache::lonnet::numval($Apache::inputtags::response[-1]);
+	$rndmod+=&Apache::lonnet::numval($Apache::inputtags::response[-1]);
     }
     if ($rndseed =~/,/) {
 	{
@@ -115,8 +111,8 @@ sub meta_parameter_write {
     }
     $result.=            ' name="'.$name.'"'.
                          ' type="'.$type.'"'.
-($default?' default="'.$default.'"':'').
-($display?' display="'.$display.' [Part: '.$partref.']"':'')
+(defined($default)?' default="'.$default.'"':'').
+(defined($display)?' display="'.$display.' [Part: '.$partref.']"':'')
              .'></parameter>'
              ."\n";
     return $result;
@@ -460,7 +456,7 @@ sub showallfoils {
 }
 
 sub getresponse {
-    my ($temp)=@_;
+    my ($temp,$resulttype)=@_;
     my $formparm='form.HWVAL_'.$Apache::inputtags::response['-1'];
     my $response;
     if (!defined($temp)) {
@@ -480,7 +476,9 @@ sub getresponse {
 	# save bubbled letter for later
 	$Apache::lonhomework::results{"resource.$part.$id.scantron"}.=
 	    $response;
-	$response = $let_to_num{$response};
+	if ($resulttype ne 'letter') {
+	    $response = $let_to_num{$response};
+	}
     } else {
 	$response = $ENV{$formparm};
     }
@@ -504,6 +502,7 @@ sub scored_response {
 	if ($increase ne '') { $score+=$increase+1; }
     }
     my $weight = &Apache::lonnet::EXT("resource.$part.weight");
+    if (!defined($weight) || $weight eq '' || $weight eq 0) { $weight = 1; }
     my $pcr=$score/$weight;
     $Apache::lonhomework::results{"resource.$part.$id.awarded"}=$pcr;
     $Apache::lonhomework::results{"resource.$part.$id.awarddetail"}=
@@ -559,7 +558,6 @@ sub whichorder {
     for (my $i=0;$i<=$#bottomlist;$i++) {
 	if ($bottomlist[$i]) { push(@whichopt,$bottomlist[$i]) }
     }
-
     return @whichopt;
 }