--- loncom/homework/response.pm	2014/09/24 18:14:27	1.237
+++ loncom/homework/response.pm	2015/02/23 19:46:19	1.241
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # various response type definitons response definition
 #
-# $Id: response.pm,v 1.237 2014/09/24 18:14:27 damieng Exp $
+# $Id: response.pm,v 1.241 2015/02/23 19:46:19 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -56,6 +56,7 @@ use Apache::lonnet;
 use Apache::inputtags();
 use Apache::lonmaxima();
 use Apache::lonr();
+use Apache::lontexconvert();
 
 BEGIN {
     &Apache::lonxml::register('Apache::response',('responseparam','parameter','dataresponse','customresponse','mathresponse'));
@@ -180,7 +181,6 @@ sub setrandomnumber {
     } else {
 	($rndmod,$rndmod2)=&Apache::lonnet::digest("$id1,$id2");
     }
-    $Apache::lonhomework::results{'resource.'.$id1.'.rawrndseed'}=$rndseed;
     if ($rndseed =~/([,:])/) {
 	my $char=$1;
 	use integer;
@@ -197,7 +197,6 @@ sub setrandomnumber {
 	}
     }
     &Apache::lonxml::debug("randseed $rndmod $rndseed");
-    $Apache::lonhomework::results{'resource.'.$id1.'.rndseed'}=$rndseed;
     &Apache::lonnet::setup_random_from_rndseed($rndseed);
     return '';
 }
@@ -577,34 +576,73 @@ sub start_mathresponse {
 }
 
 sub edit_mathresponse_button {
-    my ($id,$field)=@_;
-    my $btype = $env{'browser.type'};
-    my $bversion = $env{'browser.version'};
-    if (($btype eq 'explorer' && $bversion < 9) || ($btype eq 'safari' && $bversion < 3) ||
-        ($btype eq 'mozilla' && $bversion < 3)) {
-      # DragMath applet
-      my $button=&mt('Edit Answer');
-#     my $helplink=&Apache::loncommon::help_open_topic('Formula_Editor');
-      my $iconpath=$Apache::lonnet::perlvar{'lonIconsURL'};
-      return(<<ENDFORMULABUTTON);
+    my ($partid,$id)=@_;
+    my $field = 'HWVAL_'.$partid.'_'.$id;
+    my $eqneditor = 'lcmath';
+    if ($env{'browser.type'} eq 'safari') {
+        if ($env{'browser.os'} eq 'mac') {
+            my ($prefix,$version) = ($env{'browser.version'} =~ /^(\d*)(\d{3})\./);
+            if ($env{'browser.mobile'}) {
+                if (($version < 531) || (($prefix eq '') && ($version < 533))) {
+                    $eqneditor = '';
+                }
+            } elsif ($version < 522) {
+                $eqneditor = 'dragmath';
+            }
+        }
+    } elsif ($env{'browser.type'} eq 'explorer') {
+        if ($env{'browser.version'} < 9) {
+            $eqneditor = 'dragmath';
+        }
+    } elsif ($env{'browser.type'} eq 'mozilla') {
+        if ($env{'browser.version'} < 3) {
+            $eqneditor = 'dragmath';
+        } else {
+            if ($env{'browser.info'} =~ /^firefox\-([\d\.]+)/) {
+                my $firefox = $1;
+                if ($firefox < 3) {
+                    $eqneditor = 'dragmath';
+                }
+            }
+        }
+    }
+    if ($eqneditor eq 'dragmath') {
+        # DragMath applet
+        my $button=&mt('Edit Answer');
+#       my $helplink=&Apache::loncommon::help_open_topic('Formula_Editor');
+        my $iconpath=$Apache::lonnet::perlvar{'lonIconsURL'};
+        return(<<ENDFORMULABUTTON);
 <script type="text/javascript" language="JavaScript">
-function edit_${id}_${field} (textarea) {
-    thenumber = textarea;
-    thedata = document.forms['lonhomework'].elements[textarea].value;
+function LC_mathedit_${field} (LCtextline) {
+    thenumber = LCtextline;
+    var thedata = '';
+    if (document.getElementById(LCtextline)) {
+        thedata = document.getElementById(LCtextline).value;
+    }
     newwin = window.open("/adm/dragmath/MaximaPopup.html","","width=565,height=400,resizable");
 }
 </script>
-<a href="javascript:edit_${id}_${field}('${field}');void(0);"><img class="stift" src="$iconpath/stift.gif" alt="$button" title="$button" /></a>
+<a href="javascript:LC_mathedit_${field}('${field}');void(0);"><img class="stift" src="$iconpath/stift.gif" alt="$button" title="$button" /></a>
 ENDFORMULABUTTON
-      
-    } else {
-      # LON-CAPA math equation editor
-      return(<<EQ_EDITOR_SCRIPT);
+    } elsif ($eqneditor eq 'lcmath') {
+        # LON-CAPA math equation editor
+        my $mathjaxjs;
+        unless (lc(&Apache::lontexconvert::tex_engine()) eq 'mathjax') {
+            $mathjaxjs = <<"MATHJAX_SCRIPT";
+var mathjaxscript = document.createElement("script");
+    mathjaxscript.type = "text/javascript";
+    mathjaxscript.src = "/adm/MathJax/MathJax.js?config=TeX-AMS-MML_HTMLorMML";
+    document.body.appendChild(mathjaxscript);
+MATHJAX_SCRIPT
+        }
+        return(<<EQ_EDITOR_SCRIPT);
 <script type="text/javascript">
-  var field = document.getElementById('${field}');
-  field.className += ' math'; // note the space
+  var LCmathField = document.getElementById('${field}');
+  LCmathField.className += ' math'; // note the space
+  LCmathField.setAttribute('data-implicit_operators', 'true');
   var LCMATH_started;
   if (typeof LCMATH_started === 'undefined') {
+    $mathjaxjs
     LCMATH_started = true;
     var script = document.createElement("script");
     script.type = "text/javascript";
@@ -679,7 +717,7 @@ sub end_mathresponse {
         my $id = $Apache::inputtags::response[-1];
         if (($Apache::inputtags::status['-1'] eq 'CAN_ANSWER')
            && (&Apache::lonnet::EXT('resource.'.$partid.'_'.$id.'.turnoffeditor') ne 'yes')) {
-            $result.=&edit_mathresponse_button($id,"HWVAL_$id");
+            $result.=&edit_mathresponse_button($partid,$id);
         }
     }