diff options
Diffstat (limited to 'static/js')
| -rw-r--r-- | static/js/mathml.js | 70 | 
1 files changed, 70 insertions, 0 deletions
| diff --git a/static/js/mathml.js b/static/js/mathml.js new file mode 100644 index 0000000..a72c2e5 --- /dev/null +++ b/static/js/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); +} | 
