--- loncom/homework/chemresponse.pm	2015/03/09 16:30:46	1.97
+++ loncom/homework/chemresponse.pm	2021/04/07 22:16:03	1.100
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # chemical equation style response
 #
-# $Id: chemresponse.pm,v 1.97 2015/03/09 16:30:46 raeburn Exp $
+# $Id: chemresponse.pm,v 1.100 2021/04/07 22:16:03 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -199,7 +199,7 @@ RESIZEJS
 function jsmeOnLoad() {
     document.getElementById('JMErefresh').style.display="none";
     document.getElementById('JMEcredits').style.display="inline";
-    jsmeApplet = new JSApplet.JSME("jme", "420px", "330px");
+    jsmeApplet = new JSApplet.JSME("jme", "420px", "330px", {"options" : "$options"});
     document.JME = jsmeApplet;
     $molecule;
     document.getElementById('JMEbuttons').style.display="block";
@@ -630,37 +630,32 @@ sub end_organicstructure {
     return $result;
 }
 
-sub edit_reaction_button {
-    my ($id,$field,$reaction)=@_;
-    my $id_es=&escape($id);
-    my $field_es=&escape($field);
-    my $reaction_es=&escape($reaction);
-    my $docopen=&Apache::lonhtmlcommon::javascript_docopen();
-    my $iconpath=$Apache::lonnet::perlvar{'lonIconsURL'};
-    my $display=&mt('Edit Answer');
-    my $start_page = 
-	&Apache::loncommon::start_page('LON-CAPA Reaction Editor',undef,
-				       {'frameset'    => 1,
-					'js_ready'    => 1,
-					'add_entries' => {
-					    'rows'   => "30%,*",
-					    'border' => "0",}},);
-    my $end_page = 
-	&Apache::loncommon::end_page({'frameset' => 1,
-				      'js_ready' => 1});
-    my $result=<<EDITREACTION;
+sub reaction_preview {
+    my ($field, $reaction) = @_;
+    
+    # NOTE: $reaction should be encoded if the document was sent as XHTML
+    $reaction =~ s/"//g;
+    my $result=<<JS_PREVIEW;
+<input type="button" value="Help" onclick = "window.open('/adm/reactionresponse/reaction_help.html','','scrollbars=yes,resizable=yes,width=550,height=600')" />
 <script type="text/javascript">
-// <!--
-    function create_reaction_window_${id}_${field} () {
-	editor=window.open('','','width=500,height=270,scrollbars=no,resizable=yes');
-	editor.$docopen;
-	editor.document.writeln('$start_page <frame src="/res/adm/pages/reactionresponse/reaction_viewer.html?inhibitmenu=yes" name="viewer" scrolling="no" />  <frame src="/res/adm/pages/reactionresponse/reaction_editor.html?inhibitmenu=yes&reaction=$reaction_es&id=$id_es&field=$field_es" name="editor" scrolling="no" /> $end_page');
-	editor.document.close();
-    }
-// -->
+    if (typeof reaction_preview_started === 'undefined') {
+        var script = document.createElement('script');
+        script.type = 'text/javascript';
+        script.src = '/adm/reactionresponse/reaction_preview.js';
+        document.body.appendChild(script);
+        reaction_preview_started = true;
+    }
+    window.addEventListener('load', function(e) {
+        var input = document.forms.lonhomework.$field;
+        input.readonly = '';
+        input.value = "$reaction";
+        if (!input.id)
+            input.id = "$field";
+        var preview = new LC.HW.ReactionPreview(input.id);
+        preview.start_preview();
+    }, false);
 </script>
-<a href="javascript:create_reaction_window_${id}_${field}();void(0);"><img class="stift" src='$iconpath/stift.gif' alt='$display' title='$display' /></a>
-EDITREACTION
+JS_PREVIEW
     return $result;
 }
 
@@ -687,11 +682,11 @@ sub start_reactionresponse {
 						$safeeval);
 	$result .='<span class="LC_nobreak">'.
 	    &Apache::edit::text_arg('Answer:','answer',$token,40);
-	$result .=&edit_reaction_button($id,&Apache::edit::html_element_name('answer'),$answer).'</span>';
+	$result .= &reaction_preview(&Apache::edit::html_element_name('answer'), $answer).'</span>';
 	my $initial=&Apache::lonxml::get_param('initial',$parstack,$safeeval);
 	$result.='<span class="LC_nobreak">'.
 	    &Apache::edit::text_arg('Initial Reaction:','initial',$token,40);
-	$result .=&edit_reaction_button($id,&Apache::edit::html_element_name('initial'),$initial).'</span>';
+        $result .= &reaction_preview(&Apache::edit::html_element_name('initial'), $initial).'</span>';
 	$result .=&Apache::edit::end_row().&Apache::edit::start_spanning_row();
     }  elsif ($target eq 'modified') {
 	my $constructtag=&Apache::edit::get_new_args($token,$parstack,
@@ -779,7 +774,7 @@ sub end_reactionresponse {
     if  (($target eq 'web') && ($Apache::lonhomework::type ne 'exam') && ($status eq 'CAN_ANSWER')) {
         my $reaction=$Apache::lonhomework::history{"resource.$partid.$id.submission"};
         if ($reaction eq '') {  $reaction=&Apache::lonxml::get_param('initial',$parstack,$safeeval); }
-        $result.=&edit_reaction_button($id,"HWVAL_$id",$reaction);
+        $result .= &reaction_preview("HWVAL_$id", $reaction);
     }
     &Apache::response::end_response();
     return $result;