re-add mathml.js
authorJim Pryor <profjim@jimpryor.net>
Wed, 1 Jun 2011 07:46:59 +0000 (03:46 -0400)
committerJim Pryor <profjim@jimpryor.net>
Wed, 1 Jun 2011 07:46:59 +0000 (03:46 -0400)
Signed-off-by: Jim Pryor <profjim@jimpryor.net>
mathml.js [new file with mode: 0644]

diff --git a/mathml.js b/mathml.js
new file mode 100644 (file)
index 0000000..a72c2e5
--- /dev/null
+++ b/mathml.js
@@ -0,0 +1,70 @@
+/*
+March 19, 2004 MathHTML (c) Peter Jipsen http://www.chapman.edu/~jipsen
+Released under the GNU General Public License version 2 or later.
+See the GNU General Public License (at http://www.gnu.org/copyleft/gpl.html)
+for more details.
+*/
+
+function convertMath(node) {// for Gecko
+  if (node.nodeType==1) {
+    var newnode = 
+      document.createElementNS("http://www.w3.org/1998/Math/MathML",
+        node.nodeName.toLowerCase());
+    for(var i=0; i < node.attributes.length; i++)
+      newnode.setAttribute(node.attributes[i].nodeName,
+        node.attributes[i].nodeValue);
+    for (var i=0; i<node.childNodes.length; i++) {
+      var st = node.childNodes[i].nodeValue;
+      if (st==null || st.slice(0,1)!=" " && st.slice(0,1)!="\n") 
+        newnode.appendChild(convertMath(node.childNodes[i]));
+    }
+    return newnode;
+  }
+  else return node;
+}
+
+function convert() {
+  var mmlnode = document.getElementsByTagName("math");
+  var st,str,node,newnode;
+  for (var i=0; i<mmlnode.length; i++)
+    if (document.createElementNS!=null)
+      mmlnode[i].parentNode.replaceChild(convertMath(mmlnode[i]),mmlnode[i]);
+    else { // convert for IE
+      str = "";
+      node = mmlnode[i];
+      while (node.nodeName!="/MATH") {
+        st = node.nodeName.toLowerCase();
+        if (st=="#text") str += node.nodeValue;
+        else {
+          str += (st.slice(0,1)=="/" ? "</m:"+st.slice(1) : "<m:"+st);
+          if (st.slice(0,1)!="/") 
+             for(var j=0; j < node.attributes.length; j++)
+               if (node.attributes[j].nodeValue!="italic" &&
+                 node.attributes[j].nodeValue!="" &&
+                 node.attributes[j].nodeValue!="inherit" &&
+                 node.attributes[j].nodeValue!=undefined)
+                 str += " "+node.attributes[j].nodeName+"="+
+                     "\""+node.attributes[j].nodeValue+"\"";
+          str += ">";
+        }
+        node = node.nextSibling;
+        node.parentNode.removeChild(node.previousSibling);
+      }
+      str += "</m:math>";
+      newnode = document.createElement("span");
+      node.parentNode.replaceChild(newnode,node);
+      newnode.innerHTML = str;
+    }
+}
+
+if (document.createElementNS==null) {
+  document.write("<object id=\"mathplayer\"\
+  classid=\"clsid:32F66A20-7614-11D4-BD11-00104BD3F987\"></object>");
+  document.write("<?import namespace=\"m\" implementation=\"#mathplayer\"?>");
+}
+if(typeof window.addEventListener != 'undefined'){
+  window.addEventListener('load', convert, false);
+}
+if(typeof window.attachEvent != 'undefined') {
+  window.attachEvent('onload', convert);
+}