--- loncom/homework/chemresponse.pm	2004/02/13 15:12:57	1.29
+++ loncom/homework/chemresponse.pm	2004/06/07 21:17:42	1.33
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # chemical equation style response
 #
-# $Id: chemresponse.pm,v 1.29 2004/02/13 15:12:57 www Exp $
+# $Id: chemresponse.pm,v 1.33 2004/06/07 21:17:42 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -35,7 +35,7 @@ BEGIN {
     &Apache::lonxml::register('Apache::chemresponse',('organicresponse','organicstructure','reactionresponse'));
 }
 
-sub seperate_jme_window {
+sub separate_jme_window {
     my ($smile_input,$jme_input,$molecule,$options)=@_;
     my $smilesection;
     if (defined($smile_input)) {
@@ -92,7 +92,7 @@ $molecule
 </body>
 </html>
 CHEMPAGE
-    $body=&HTML::Entities::encode($body);
+    $body=&HTML::Entities::encode($body,'<>&"');
     $body=~s/\n/ /g;
     my $result=<<CHEMINPUT;
 <input type="button" value="Draw Molecule" onClick="javascript:editor=window.open('','','width=500,height=500,scrollbars=no,resizable=yes');editor.document.open('text/html','replace');editor.document.writeln('$body')" />
@@ -117,7 +117,7 @@ sub start_organicresponse {
 	}
 	my $options=&Apache::lonxml::get_param('options',$parstack,
 					       $safeeval);
-	$result=&seperate_jme_window("HWVAL_$id","MOLECULE_$id",$molecule,$options);
+	$result=&separate_jme_window("HWVAL_$id","MOLECULE_$id",$molecule,$options);
 	$result.= '<input type="hidden" name="MOLECULE_'.$id.'" value="" />';
     } elsif ($target eq 'edit') {
 	$result .=&Apache::edit::tag_start($target,$token);
@@ -129,7 +129,7 @@ sub start_organicresponse {
 				    $token,40);
 	my $molecule=&Apache::lonxml::get_param('molecule',$parstack,
 						$safeeval);
-	$result .=&seperate_jme_window(undef,
+	$result .=&separate_jme_window(undef,
 		      &Apache::edit::html_element_name('molecule'),
 		      $molecule,$options);
 	$result .='</nobr><br /><nobr>';
@@ -138,7 +138,7 @@ sub start_organicresponse {
 	$result .=&Apache::edit::hidden_arg('jmeanswer',$token);
 	my $jmeanswer=&Apache::lonxml::get_param('jmeanswer',$parstack,
 						 $safeeval);
-	$result .=&seperate_jme_window(
+	$result .=&separate_jme_window(
                       &Apache::edit::html_element_name('answer'),
                       &Apache::edit::html_element_name('jmeanswer'),
 		      $jmeanswer,$options);
@@ -165,7 +165,7 @@ sub end_organicresponse {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
     my $result;
     if ($target eq 'grade' && defined($ENV{'form.submitted'})) {
-	&Apache::response::setup_params($$tagstack[-1]);
+	&Apache::response::setup_params($$tagstack[-1],$safeeval);
 	my $response = &Apache::response::getresponse();
 	if ( $response =~ /[^\s]/) {
 	    my $partid = $Apache::inputtags::part;
@@ -248,7 +248,7 @@ sub start_organicstructure {
 	    $options.= ',multipart,number';
 	}
 						   
-	$result .=&seperate_jme_window(undef,
+	$result .=&separate_jme_window(undef,
 				 &Apache::edit::html_element_name('molecule'),
 				       $molecule,$options);
 	$result.="</nobr><br />";
@@ -304,7 +304,15 @@ sub start_reactionresponse {
 	my $partid = $Apache::inputtags::part;
 	my $id = $Apache::inputtags::response['-1'];
 	my $reaction=$Apache::lonhomework::history{"resource.$partid.$id.submission"};
-	$result.=&edit_reaction_button($id,"HWVAL_$id",$reaction);
+	my $status=$Apache::inputtags::status['-1'];
+	if ($status eq 'CAN_ANSWER') {
+	    $result.=&edit_reaction_button($id,"HWVAL_$id",$reaction);
+	}
+	if (  &Apache::response::show_answer() ) {
+	    my $ans=&Apache::lonxml::get_param('answer',$parstack,$safeeval);
+	    $ans=~s/(\\|\')/\\$1/g;
+	    $Apache::inputtags::answertxt{$id}=&Apache::run::run("return &chemparse('$ans');",$safeeval);
+	}
     } elsif ($target eq "edit") {
 	$result .=&Apache::edit::tag_start($target,$token);
 	my $answer=&Apache::lonxml::get_param('answer',$parstack,
@@ -326,7 +334,7 @@ sub end_reactionresponse {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
     my $result;
     if ($target eq 'grade' && defined($ENV{'form.submitted'})) {
-	&Apache::response::setup_params($$tagstack[-1]);
+	&Apache::response::setup_params($$tagstack[-1],$safeeval);
 	my $response = &Apache::response::getresponse();
 	if ( $response =~ /[^\s]/) {
 	    my $partid = $Apache::inputtags::part;