--- loncom/homework/response.pm	2014/08/28 14:41:18	1.236
+++ loncom/homework/response.pm	2014/12/30 20:03:10	1.238
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # various response type definitons response definition
 #
-# $Id: response.pm,v 1.236 2014/08/28 14:41:18 raeburn Exp $
+# $Id: response.pm,v 1.238 2014/12/30 20:03:10 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'));
@@ -577,20 +578,60 @@ sub start_mathresponse {
 }
 
 sub edit_mathresponse_button {
-    my ($id,$field)=@_;
-    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 $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);
 <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
+        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 LCmathField = document.getElementById('${field}');
+  LCmathField.className += ' math'; // note the space
+  var LCMATH_started;
+  if (typeof LCMATH_started === 'undefined') {
+    $mathjaxjs
+    LCMATH_started = true;
+    var script = document.createElement("script");
+    script.type = "text/javascript";
+    script.src = "/adm/LC_math_editor/LC_math_editor.min.js";
+    document.body.appendChild(script);
+    window.addEventListener('load', function(e) {
+        LCMATH.initEditors();
+    }, false);
+  }
+</script>
+EQ_EDITOR_SCRIPT
+    }
 }
 
 sub end_mathresponse {
@@ -653,7 +694,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);
         }
     }