//needs:<scriptsrc=gnmath.txt>script>
//needs:<scriptsrc=gnrandom.txt>script>
//******************************************************************************//******************************************************************************//******************************************************************************//******************************************************************************//UnitofMisurCLASS(UM)***************************************//anelementisastringlikem^2k^3s^(-1)//itsrappresentatiosis:[["m",2],["k",3],["s",-1]]//(usinggnmathconstantsdefinitionwecanalsouse:[[_m,2],[_k,3],[_s,-1]]functionUM(zxc){this.vv=zxc;}newUM([['dummy',0]]);UM.prototype.toString=function(){this.collect();s=""for(vari=0;i<this.vv.length;i++){s+=''s+=this.vv[i][0];s+=(this.vv[i][1]!=1)?''+this.vv[i][1]+'':''}returns;}//+++++++++++makethenthpowerofumUM.pow=function(umis,n){//umis:isaUM!!//wwl('inUM.pow azsx='+azsx)for(vari=0;i<umis.vv.length;i++){umis.vv[i][1]*=n;//thenamerestthesame,theexponentismultiplied}//wwl('inUM.pow prima di uscire azsx='+azsx)returnumis;}//+++++++++++collectsameunitsUM.prototype.collect=function(){//alert('collecting:'+this.vv)for(vari=0;i<this.vv.length;i++){for(varj=i+1;j<this.vv.length;j++){if(this.vv[i][0]==this.vv[j][0]){this.vv[i][1]+=this.vv[j][1];//sumexponentsthis.vv[j][0]="";this.vv[j][1]=""}//nilllasttermequal}}//alert('collected:'+this.vv)for(vari=0;i<this.vv.length;i++){//nillnullexponenttermif(this.vv[i][1]==0){this.vv[i][0]="";this.vv[i][1]=""}}//ww('collected e nilled:'+this.vv)this.vv.sort();//sortumalphabetically//ww('collected e sorted:'+this.vv)returnthis.vv;}//+++++++++++++multiply(x,y)returnsastringwithummultipliedUM.multiply=function(x,y){vark=0;newVett=newArray()// a new array will collect all terms from two strings
for(var i=0;i//loadingfirstelementtermsvara1=newArray();a1[0]=x.vv[i][0]// um name
a1[1]=x.vv[i][1] //umexponentnewVett[i]=a1;}for(varj=0;j<y.vv.length;j++){//// loading second element terms
var a2=new Array();
a2[0]=y.vv[j][0] //umnamea2[1]=y.vv[j][1]// um exponent
newVett[i+j]=a2;
}
//ww('creo prodotto')//ww(newVett)varprodotto=newUM(newVett);//build&returnanewumwithdatacollected//ww('pp:',prodotto)prodotto.collect();//ww('pp2:',prodotto)returnprodotto;}//++++++++++++++++x.divide(y)returnsastringwithumdividedUM.divide=function(x,y){//alert('x='+x)//alert('y='+y)vark=0;newVett=newArray()//vettore che conterr� vettori da due
for(var i=0;i//caricotuttiquellidixvara1=newArray();a1[0]=x.vv[i][0]a1[1]=x.vv[i][1]newVett[i]=a1;}//alert(newVett)for(varj=0;j<y.vv.length;j++){//caricotuttiquellidiyvara2=newArray();a2[0]=y.vv[j][0]a2[1]=-y.vv[j][1]// being at den power have to be inverted
newVett[i+j]=a2;
}
//alert(newVett)varrapporto=newUM(newVett);//ww('rapp1='+rapporto)rapporto.collect();//ww('rapp2='+rapporto)returnrapporto;}//******************************************************************************//******************************************************************************//******************************************************************************//******************************************************************************//******************************************************************************//******************************************************************************//PhysicalQuantityCLASS(PQ)//anelementisavectorincludinganumberandaumstringlike(8*10^4)m^2k^3s^(-1)//itsrappresentatiosis:[8,4,um]ie[8,4,[[_m,2],[_k,3],[_s,-1]]]functionPQ(_x,_exp,_mis){//argomenti:x=numero;exp=potenzadieci;_misumthis.x=_x;this.exp=_exp;//POLIMORPHISM:if_misisavector:if(_mis.length>0){this.mis=newUM(_mis);}else{//if_misisalreadyaum:this.mis=_mis}}newPQ(0,0,[['dummy',0]])PQ.precision=3;PQ.prototype.toString=function(){this.mis.collect();return(trunc(this.x,PQ.precision)+((this.exp==0)?'':''+dot+''+'10'+this.exp+'')+this.mis.toString()+'')}PQ.prototype.clone=function(){vars="";s+=this.x;s+=','+this.expvarss="[ "varcomma=','for(vari=0;i<this.mis.vv.length;i++){if(i==this.mis.vv.length-1){comma=''}ss+="['"+this.mis.vv[i][0]+"',"+this.mis.vv[i][1]+"]"+comma}ss+=' ]'s+=','+ssreturns;}PQ.multiply=function(x,y){returnnewPQ(x.x*y.x,x.exp+y.exp,UM.multiply(x.mis,y.mis));}PQ.pow=function(x,n){//wwl('inPQ.pow azsx='+azsx)return(newPQ(Math.pow(x.x,n),x.exp*n,UM.pow(x.mis,n)));}PQ.divide=function(x,y){returnnewPQ(x.x/y.x,x.exp-y.exp,UM.divide(x.mis,y.mis));}PQ.sum=function(x,y){varz=x.x*Math.pow(10,x.exp)+y.x*Math.pow(10,y.exp)returnnewPQ(z,0,x.mis);}PQ.diff=function(x,y){varz=x.x*Math.pow(10,x.exp)-y.x*Math.pow(10,y.exp)returnnewPQ(z,0,x.mis);}PQ.scalarMultiply=function(x,n){varz=(x.x*Math.pow(10,x.exp))*nreturnnewPQ(z,0,x.mis);}PQ.prototype.normalize=function(){//Adjustmantissatox.yyyvarog=Math.round(log10(this.x));this.x/=Math.pow(10,og);this.exp=(this.exp*1+og*1)returnthis;}//***********************
/*
ASCIIMathML.js
==============
This file contains JavaScript functions to convert ASCII math notation
to Presentation MathML. The conversion is done while the (X)HTML page
loads, and should work with Firefox/Mozilla/Netscape7+andInternetExplorer6+MathPlayer(http://www.dessci.com/en/products/mathplayer/).Justaddthenextlinetoyour(X)HTMLpagewiththisfileinthesamefolder:<scripttype="text/javascript"src="ASCIIMathML.js">script>
This is a convenient and inexpensive solution for authoring MathML.
Version 1.4.7 Aug 7, 2005, (c) Peter Jipsen http://www.chapman.edu/~jipsenLatestversionathttp://www.chapman.edu/~jipsen/mathml/ASCIIMathML.jsForchangesseehttp://www.chapman.edu/~jipsen/mathml/asciimathchanges.txtIfyouuseitonawebpage,pleasesendtheURLtojipsen@chapman.eduThisprogramisfreesoftware;youcanredistributeitand/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License (at http://www.gnu.org/copyleft/gpl.html)formoredetails.*/
var checkForMathML = true; //checkifbrowsercandisplayMathMLvarnotifyIfNoMathML=true;//putnoteattopofpageifnoMathMLcapabilityvarmathcolor="blue";//changeitto""(toinherit)oranyothercolorvarmathfontfamily="serif";//changeto""toinherit(worksinIE)// or another family (e.g. "arial")
var displaystyle = true; //putslimitsaboveandbelowlargeoperatorsvarshowasciiformulaonhover=true;//helpsstudentslearnASCIIMathvardecimalsign=".";//changeto","ifyoulike,bewareof `(1,2)`!varAMdelimiter1="`",AMescape1="\\\\`";//canuseothercharactersvarAMdelimiter2="$",AMescape2="\\\\\\$",AMdelimiter2regexp="\\$";vardoubleblankmathdelimiter=false;//iftrue,x+1isequalto `x+1`//forIEthisworksonlyin//varseparatetokens;//hasbeenremoved(emailmeifthisisaproblem)varisIE=document.createElementNS==null;if(document.getElementById==null)alert("This webpage requires a recent browser such as\
\nMozilla/Netscape 7+ or Internet Explorer 6+MathPlayer")//allfurtherglobalvariablesstartwith"AM"functionAMcreateElementXHTML(t){if(isIE)returndocument.createElement(t);elsereturndocument.createElementNS("http://www.w3.org/1999/xhtml",t);}functionAMnoMathMLNote(){varnd=AMcreateElementXHTML("h3");nd.setAttribute("align","center")nd.appendChild(AMcreateElementXHTML("p"));nd.appendChild(document.createTextNode("To view the "));varan=AMcreateElementXHTML("a");an.appendChild(document.createTextNode("ASCIIMathML"));an.setAttribute("href","http://www.chapman.edu/~jipsen/asciimath.html");nd.appendChild(an);nd.appendChild(document.createTextNode(" notation use Internet Explorer 6+"));an=AMcreateElementXHTML("a");an.appendChild(document.createTextNode("MathPlayer"));an.setAttribute("href","http://www.dessci.com/en/products/mathplayer/download.htm");nd.appendChild(an);nd.appendChild(document.createTextNode(" or Netscape/Mozilla/Firefox"));nd.appendChild(AMcreateElementXHTML("p"));returnnd;}functionAMisMathMLavailable(){if(navigator.appName.slice(0,8)=="Netscape")if(navigator.appVersion.slice(0,1)>="5")returnnull;elsereturnAMnoMathMLNote();elseif(navigator.appName.slice(0,9)=="Microsoft")try{varActiveX=newActiveXObject("MathPlayer.Factory.1");returnnull;}catch(e){returnAMnoMathMLNote();}elsereturnAMnoMathMLNote();}//characterlistsforMozilla/NetscapefontsvarAMcal=[0xEF35,0x212C,0xEF36,0xEF37,0x2130,0x2131,0xEF38,0x210B,0x2110,0xEF39,0xEF3A,0x2112,0x2133,0xEF3B,0xEF3C,0xEF3D,0xEF3E,0x211B,0xEF3F,0xEF40,0xEF41,0xEF42,0xEF43,0xEF44,0xEF45,0xEF46];varAMfrk=[0xEF5D,0xEF5E,0x212D,0xEF5F,0xEF60,0xEF61,0xEF62,0x210C,0x2111,0xEF63,0xEF64,0xEF65,0xEF66,0xEF67,0xEF68,0xEF69,0xEF6A,0x211C,0xEF6B,0xEF6C,0xEF6D,0xEF6E,0xEF6F,0xEF70,0xEF71,0x2128];varAMbbb=[0xEF8C,0xEF8D,0x2102,0xEF8E,0xEF8F,0xEF90,0xEF91,0x210D,0xEF92,0xEF93,0xEF94,0xEF95,0xEF96,0x2115,0xEF97,0x2119,0x211A,0x211D,0xEF98,0xEF99,0xEF9A,0xEF9B,0xEF9C,0xEF9D,0xEF9E,0x2124];varCONST=0,UNARY=1,BINARY=2,INFIX=3,LEFTBRACKET=4,RIGHTBRACKET=5,SPACE=6,UNDEROVER=7,DEFINITION=8,LEFTRIGHT=9,TEXT=10;//tokentypesvarAMsqrt={input:"sqrt",tag:"msqrt",output:"sqrt",tex:null,ttype:UNARY},AMroot={input:"root",tag:"mroot",output:"root",tex:null,ttype:BINARY},AMfrac={input:"frac",tag:"mfrac",output:"/",tex:null,ttype:BINARY},AMdiv={input:"/",tag:"mfrac",output:"/",tex:null,ttype:INFIX},AMover={input:"stackrel",tag:"mover",output:"stackrel",tex:null,ttype:BINARY},AMsub={input:"_",tag:"msub",output:"_",tex:null,ttype:INFIX},AMsup={input:"^",tag:"msup",output:"^",tex:null,ttype:INFIX},AMtext={input:"text",tag:"mtext",output:"text",tex:null,ttype:TEXT},AMmbox={input:"mbox",tag:"mtext",output:"mbox",tex:null,ttype:TEXT},AMquote={input:"\"",tag:"mtext",output:"mbox",tex:null,ttype:TEXT};varAMsymbols=[//somegreeksymbols{input:"alpha",tag:"mi",output:"\u03B1",tex:null,ttype:CONST},{input:"beta",tag:"mi",output:"\u03B2",tex:null,ttype:CONST},{input:"chi",tag:"mi",output:"\u03C7",tex:null,ttype:CONST},{input:"delta",tag:"mi",output:"\u03B4",tex:null,ttype:CONST},{input:"Delta",tag:"mo",output:"\u0394",tex:null,ttype:CONST},{input:"epsi",tag:"mi",output:"\u03B5",tex:"epsilon",ttype:CONST},{input:"varepsilon",tag:"mi",output:"\u025B",tex:null,ttype:CONST},{input:"eta",tag:"mi",output:"\u03B7",tex:null,ttype:CONST},{input:"gamma",tag:"mi",output:"\u03B3",tex:null,ttype:CONST},{input:"Gamma",tag:"mo",output:"\u0393",tex:null,ttype:CONST},{input:"iota",tag:"mi",output:"\u03B9",tex:null,ttype:CONST},{input:"kappa",tag:"mi",output:"\u03BA",tex:null,ttype:CONST},{input:"lambda",tag:"mi",output:"\u03BB",tex:null,ttype:CONST},{input:"Lambda",tag:"mo",output:"\u039B",tex:null,ttype:CONST},{input:"mu",tag:"mi",output:"\u03BC",tex:null,ttype:CONST},{input:"nu",tag:"mi",output:"\u03BD",tex:null,ttype:CONST},{input:"omega",tag:"mi",output:"\u03C9",tex:null,ttype:CONST},{input:"Omega",tag:"mo",output:"\u03A9",tex:null,ttype:CONST},{input:"phi",tag:"mi",output:"\u03C6",tex:null,ttype:CONST},{input:"varphi",tag:"mi",output:"\u03D5",tex:null,ttype:CONST},{input:"Phi",tag:"mo",output:"\u03A6",tex:null,ttype:CONST},{input:"pi",tag:"mi",output:"\u03C0",tex:null,ttype:CONST},{input:"Pi",tag:"mo",output:"\u03A0",tex:null,ttype:CONST},{input:"psi",tag:"mi",output:"\u03C8",tex:null,ttype:CONST},{input:"Psi",tag:"mi",output:"\u03A8",tex:null,ttype:CONST},{input:"rho",tag:"mi",output:"\u03C1",tex:null,ttype:CONST},{input:"sigma",tag:"mi",output:"\u03C3",tex:null,ttype:CONST},{input:"Sigma",tag:"mo",output:"\u03A3",tex:null,ttype:CONST},{input:"tau",tag:"mi",output:"\u03C4",tex:null,ttype:CONST},{input:"theta",tag:"mi",output:"\u03B8",tex:null,ttype:CONST},{input:"vartheta",tag:"mi",output:"\u03D1",tex:null,ttype:CONST},{input:"Theta",tag:"mo",output:"\u0398",tex:null,ttype:CONST},{input:"upsilon",tag:"mi",output:"\u03C5",tex:null,ttype:CONST},{input:"xi",tag:"mi",output:"\u03BE",tex:null,ttype:CONST},{input:"Xi",tag:"mo",output:"\u039E",tex:null,ttype:CONST},{input:"zeta",tag:"mi",output:"\u03B6",tex:null,ttype:CONST},{input:"-",tag:"mi",output:"-",tex:null,ttype:CONST},//binaryoperationsymbols{input:"*",tag:"mo",output:"\u22C5",tex:"cdot",ttype:CONST},{input:"**",tag:"mo",output:"\u22C6",tex:"star",ttype:CONST},{input:"//",tag:"mo",output:"/",tex:null,ttype:CONST},{input:"\\\\",tag:"mo",output:"\\",tex:"backslash",ttype:CONST},{input:"setminus",tag:"mo",output:"\\",tex:null,ttype:CONST},{input:"xx",tag:"mo",output:"\u00D7",tex:"times",ttype:CONST},{input:"-:",tag:"mo",output:"\u00F7",tex:"divide",ttype:CONST},{input:"@",tag:"mo",output:"\u2218",tex:"circ",ttype:CONST},{input:"o+",tag:"mo",output:"\u2295",tex:"oplus",ttype:CONST},{input:"ox",tag:"mo",output:"\u2297",tex:"otimes",ttype:CONST},{input:"o.",tag:"mo",output:"\u2299",tex:"odot",ttype:CONST},{input:"sum",tag:"mo",output:"\u2211",tex:null,ttype:UNDEROVER},{input:"prod",tag:"mo",output:"\u220F",tex:null,ttype:UNDEROVER},{input:"^^",tag:"mo",output:"\u2227",tex:"wedge",ttype:CONST},{input:"^^^",tag:"mo",output:"\u22C0",tex:"bigwedge",ttype:UNDEROVER},{input:"vv",tag:"mo",output:"\u2228",tex:"vee",ttype:CONST},{input:"vvv",tag:"mo",output:"\u22C1",tex:"bigvee",ttype:UNDEROVER},{input:"nn",tag:"mo",output:"\u2229",tex:"cap",ttype:CONST},{input:"nnn",tag:"mo",output:"\u22C2",tex:"bigcap",ttype:UNDEROVER},{input:"uu",tag:"mo",output:"\u222A",tex:"cup",ttype:CONST},{input:"uuu",tag:"mo",output:"\u22C3",tex:"bigcup",ttype:UNDEROVER},//binaryrelationsymbols{input:"!=",tag:"mo",output:"\u2260",tex:"ne",ttype:CONST},{input:":=",tag:"mo",output:":=",tex:null,ttype:CONST},{input:"lt",tag:"mo",output:"<",tex:null,ttype:CONST},{input:"<=",tag:"mo",output:"\u2264",tex:"le",ttype:CONST},{input:"lt=",tag:"mo",output:"\u2264",tex:"leq",ttype:CONST},{input:">=",tag:"mo",output:"\u2265",tex:"ge",ttype:CONST},{input:"geq",tag:"mo",output:"\u2265",tex:null,ttype:CONST},{input:"-<",tag:"mo",output:"\u227A",tex:"prec",ttype:CONST},{input:"-lt",tag:"mo",output:"\u227A",tex:null,ttype:CONST},{input:">-",tag:"mo",output:"\u227B",tex:"succ",ttype:CONST},{input:"in",tag:"mo",output:"\u2208",tex:null,ttype:CONST},{input:"!in",tag:"mo",output:"\u2209",tex:"notin",ttype:CONST},{input:"sub",tag:"mo",output:"\u2282",tex:"subset",ttype:CONST},{input:"sup",tag:"mo",output:"\u2283",tex:"supset",ttype:CONST},{input:"sube",tag:"mo",output:"\u2286",tex:"subseteq",ttype:CONST},{input:"supe",tag:"mo",output:"\u2287",tex:"supseteq",ttype:CONST},{input:"-=",tag:"mo",output:"\u2261",tex:"equiv",ttype:CONST},{input:"~=",tag:"mo",output:"\u2245",tex:"cong",ttype:CONST},{input:"~~",tag:"mo",output:"\u2248",tex:"approx",ttype:CONST},{input:"prop",tag:"mo",output:"\u221D",tex:"propto",ttype:CONST},//logicalsymbols{input:"and",tag:"mtext",output:"and",tex:null,ttype:SPACE},{input:"or",tag:"mtext",output:"or",tex:null,ttype:SPACE},{input:"not",tag:"mo",output:"\u00AC",tex:"neg",ttype:CONST},{input:"=>",tag:"mo",output:"\u21D2",tex:"implies",ttype:CONST},{input:"if",tag:"mo",output:"if",tex:null,ttype:SPACE},{input:"<=>",tag:"mo",output:"\u21D4",tex:"iff",ttype:CONST},{input:"AA",tag:"mo",output:"\u2200",tex:"forall",ttype:CONST},{input:"EE",tag:"mo",output:"\u2203",tex:"exists",ttype:CONST},{input:"_|_",tag:"mo",output:"\u22A5",tex:"bot",ttype:CONST},{input:"TT",tag:"mo",output:"\u22A4",tex:"top",ttype:CONST},{input:"|--",tag:"mo",output:"\u22A2",tex:"vdash",ttype:CONST},{input:"|==",tag:"mo",output:"\u22A8",tex:"models",ttype:CONST},//groupingbrackets{input:"(",tag:"mo",output:"(",tex:null,ttype:LEFTBRACKET},{input:")",tag:"mo",output:")",tex:null,ttype:RIGHTBRACKET},{input:"[",tag:"mo",output:"[",tex:null,ttype:LEFTBRACKET},{input:"]",tag:"mo",output:"]",tex:null,ttype:RIGHTBRACKET},{input:"{",tag:"mo",output:"{",tex:null,ttype:LEFTBRACKET},{input:"}",tag:"mo",output:"}",tex:null,ttype:RIGHTBRACKET},{input:"|",tag:"mo",output:"|",tex:null,ttype:LEFTRIGHT},//{input:"||",tag:"mo",output:"||",tex:null,ttype:LEFTRIGHT},{input:"(:",tag:"mo",output:"\u2329",tex:"langle",ttype:LEFTBRACKET},{input:":)",tag:"mo",output:"\u232A",tex:"rangle",ttype:RIGHTBRACKET},{input:"<<",tag:"mo",output:"\u2329",tex:null,ttype:LEFTBRACKET},{input:">>",tag:"mo",output:"\u232A",tex:null,ttype:RIGHTBRACKET},{input:"{:",tag:"mo",output:"{:",tex:null,ttype:LEFTBRACKET,invisible:true},{input:":}",tag:"mo",output:":}",tex:null,ttype:RIGHTBRACKET,invisible:true},//miscellaneoussymbols{input:"int",tag:"mo",output:"\u222B",tex:null,ttype:CONST},{input:"dx",tag:"mi",output:"{:d x:}",tex:null,ttype:DEFINITION},{input:"dy",tag:"mi",output:"{:d y:}",tex:null,ttype:DEFINITION},{input:"dz",tag:"mi",output:"{:d z:}",tex:null,ttype:DEFINITION},{input:"dt",tag:"mi",output:"{:d t:}",tex:null,ttype:DEFINITION},{input:"oint",tag:"mo",output:"\u222E",tex:null,ttype:CONST},{input:"del",tag:"mo",output:"\u2202",tex:"partial",ttype:CONST},{input:"grad",tag:"mo",output:"\u2207",tex:"nabla",ttype:CONST},{input:"+-",tag:"mo",output:"\u00B1",tex:"pm",ttype:CONST},{input:"O/",tag:"mo",output:"\u2205",tex:"emptyset",ttype:CONST},{input:"oo",tag:"mo",output:"\u221E",tex:"infty",ttype:CONST},{input:"aleph",tag:"mo",output:"\u2135",tex:null,ttype:CONST},{input:"...",tag:"mo",output:"...",tex:"ldots",ttype:CONST},{input:":.",tag:"mo",output:"\u2234",tex:"therefore",ttype:CONST},{input:"/_",tag:"mo",output:"\u2220",tex:"angle",ttype:CONST},{input:"\\",tag:"mo",output:"\u00A0",tex:null,ttype:CONST},{input:"quad",tag:"mo",output:"\u00A0\u00A0",tex:null,ttype:CONST},{input:"qquad",tag:"mo",output:"\u00A0\u00A0\u00A0\u00A0",tex:null,ttype:CONST},{input:"cdots",tag:"mo",output:"\u22EF",tex:null,ttype:CONST},{input:"vdots",tag:"mo",output:"\u22EE",tex:null,ttype:CONST},{input:"ddots",tag:"mo",output:"\u22F1",tex:null,ttype:CONST},{input:"diamond",tag:"mo",output:"\u22C4",tex:null,ttype:CONST},{input:"square",tag:"mo",output:"\u25A1",tex:null,ttype:CONST},{input:"|__",tag:"mo",output:"\u230A",tex:"lfloor",ttype:CONST},{input:"__|",tag:"mo",output:"\u230B",tex:"rfloor",ttype:CONST},{input:"|~",tag:"mo",output:"\u2308",tex:"lceiling",ttype:CONST},{input:"~|",tag:"mo",output:"\u2309",tex:"rceiling",ttype:CONST},{input:"CC",tag:"mo",output:"\u2102",tex:null,ttype:CONST},{input:"NN",tag:"mo",output:"\u2115",tex:null,ttype:CONST},{input:"QQ",tag:"mo",output:"\u211A",tex:null,ttype:CONST},{input:"RR",tag:"mo",output:"\u211D",tex:null,ttype:CONST},{input:"ZZ",tag:"mo",output:"\u2124",tex:null,ttype:CONST},{input:"f",tag:"mi",output:"f",tex:null,ttype:UNARY,func:true},{input:"g",tag:"mi",output:"g",tex:null,ttype:UNARY,func:true},//standardfunctions{input:"lim",tag:"mo",output:"lim",tex:null,ttype:UNDEROVER},{input:"Lim",tag:"mo",output:"Lim",tex:null,ttype:UNDEROVER},{input:"sin",tag:"mo",output:"sin",tex:null,ttype:UNARY,func:true},{input:"cos",tag:"mo",output:"cos",tex:null,ttype:UNARY,func:true},{input:"tan",tag:"mo",output:"tan",tex:null,ttype:UNARY,func:true},{input:"sinh",tag:"mo",output:"sinh",tex:null,ttype:UNARY,func:true},{input:"cosh",tag:"mo",output:"cosh",tex:null,ttype:UNARY,func:true},{input:"tanh",tag:"mo",output:"tanh",tex:null,ttype:UNARY,func:true},{input:"cot",tag:"mo",output:"cot",tex:null,ttype:UNARY,func:true},{input:"sec",tag:"mo",output:"sec",tex:null,ttype:UNARY,func:true},{input:"csc",tag:"mo",output:"csc",tex:null,ttype:UNARY,func:true},{input:"log",tag:"mo",output:"log",tex:null,ttype:UNARY,func:true},{input:"ln",tag:"mo",output:"ln",tex:null,ttype:UNARY,func:true},{input:"det",tag:"mo",output:"det",tex:null,ttype:UNARY,func:true},{input:"dim",tag:"mo",output:"dim",tex:null,ttype:CONST},{input:"mod",tag:"mo",output:"mod",tex:null,ttype:CONST},{input:"gcd",tag:"mo",output:"gcd",tex:null,ttype:UNARY,func:true},{input:"lcm",tag:"mo",output:"lcm",tex:null,ttype:UNARY,func:true},{input:"lub",tag:"mo",output:"lub",tex:null,ttype:CONST},{input:"glb",tag:"mo",output:"glb",tex:null,ttype:CONST},{input:"min",tag:"mo",output:"min",tex:null,ttype:UNDEROVER},{input:"max",tag:"mo",output:"max",tex:null,ttype:UNDEROVER},//arrows{input:"uarr",tag:"mo",output:"\u2191",tex:"uparrow",ttype:CONST},{input:"darr",tag:"mo",output:"\u2193",tex:"downarrow",ttype:CONST},{input:"rarr",tag:"mo",output:"\u2192",tex:"rightarrow",ttype:CONST},{input:"->",tag:"mo",output:"\u2192",tex:"to",ttype:CONST},{input:"|->",tag:"mo",output:"\u21A6",tex:"mapsto",ttype:CONST},{input:"larr",tag:"mo",output:"\u2190",tex:"leftarrow",ttype:CONST},{input:"harr",tag:"mo",output:"\u2194",tex:"leftrightarrow",ttype:CONST},{input:"rArr",tag:"mo",output:"\u21D2",tex:"Rightarrow",ttype:CONST},{input:"lArr",tag:"mo",output:"\u21D0",tex:"Leftarrow",ttype:CONST},{input:"hArr",tag:"mo",output:"\u21D4",tex:"Leftrightarrow",ttype:CONST},//commandswithargumentAMsqrt,AMroot,AMfrac,AMdiv,AMover,AMsub,AMsup,{input:"hat",tag:"mover",output:"\u005E",tex:null,ttype:UNARY,acc:true},{input:"bar",tag:"mover",output:"\u00AF",tex:"overline",ttype:UNARY,acc:true},{input:"vec",tag:"mover",output:"\u2192",tex:null,ttype:UNARY,acc:true},{input:"dot",tag:"mover",output:".",tex:null,ttype:UNARY,acc:true},{input:"ddot",tag:"mover",output:"..",tex:null,ttype:UNARY,acc:true},{input:"ul",tag:"munder",output:"\u0332",tex:"underline",ttype:UNARY,acc:true},AMtext,AMmbox,AMquote,{input:"bb",tag:"mstyle",atname:"fontweight",atval:"bold",output:"bb",tex:null,ttype:UNARY},{input:"mathbf",tag:"mstyle",atname:"fontweight",atval:"bold",output:"mathbf",tex:null,ttype:UNARY},{input:"sf",tag:"mstyle",atname:"fontfamily",atval:"sans-serif",output:"sf",tex:null,ttype:UNARY},{input:"mathsf",tag:"mstyle",atname:"fontfamily",atval:"sans-serif",output:"mathsf",tex:null,ttype:UNARY},{input:"bbb",tag:"mstyle",atname:"mathvariant",atval:"double-struck",output:"bbb",tex:null,ttype:UNARY,codes:AMbbb},{input:"mathbb",tag:"mstyle",atname:"mathvariant",atval:"double-struck",output:"mathbb",tex:null,ttype:UNARY,codes:AMbbb},{input:"cc",tag:"mstyle",atname:"mathvariant",atval:"script",output:"cc",tex:null,ttype:UNARY,codes:AMcal},{input:"mathcal",tag:"mstyle",atname:"mathvariant",atval:"script",output:"mathcal",tex:null,ttype:UNARY,codes:AMcal},{input:"tt",tag:"mstyle",atname:"fontfamily",atval:"monospace",output:"tt",tex:null,ttype:UNARY},{input:"mathtt",tag:"mstyle",atname:"fontfamily",atval:"monospace",output:"mathtt",tex:null,ttype:UNARY},{input:"fr",tag:"mstyle",atname:"mathvariant",atval:"fraktur",output:"fr",tex:null,ttype:UNARY,codes:AMfrk},{input:"mathfrak",tag:"mstyle",atname:"mathvariant",atval:"fraktur",output:"mathfrak",tex:null,ttype:UNARY,codes:AMfrk}];functioncompareNames(s1,s2){if(s1.input>s2.input)return1elsereturn-1;}varAMnames=[];//listofinputsymbolsfunctionAMinitSymbols(){vartexsymbols=[],i;for(i=0;i<AMsymbols.length;i++)if(AMsymbols[i].tex)texsymbols[texsymbols.length]={input:AMsymbols[i].tex,tag:AMsymbols[i].tag,output:AMsymbols[i].output,ttype:AMsymbols[i].ttype};AMsymbols=AMsymbols.concat(texsymbols);AMsymbols.sort(compareNames);for(i=0;i<AMsymbols.length;i++)AMnames[i]=AMsymbols[i].input;}varAMmathml="http://www.w3.org/1998/Math/MathML";functionAMcreateElementMathML(t){if(isIE)returndocument.createElement("m:"+t);elsereturndocument.createElementNS(AMmathml,t);}functionAMcreateMmlNode(t,frag){//varnode=AMcreateElementMathML(name);if(isIE)varnode=document.createElement("m:"+t);elsevarnode=document.createElementNS(AMmathml,t);node.appendChild(frag);returnnode;}functionnewcommand(oldstr,newstr){AMsymbols=AMsymbols.concat([{input:oldstr,tag:"mo",output:newstr,tex:null,ttype:DEFINITION}]);}functionAMremoveCharsAndBlanks(str,n){//removencharactersandanyfollowingblanksvarst;if(str.charAt(n)=="\\"&&str.charAt(n+1)!="\\"&&str.charAt(n+1)!="")st=str.slice(n+1);elsest=str.slice(n);for(vari=0;i<st.length&&st.charCodeAt(i)<=32;i=i+1);returnst.slice(i);}functionAMposition(arr,str,n){//returnposition>=nwherestrappearsorwouldbeinserted//assumesarrissortedif(n==0){varh,m;n=-1;h=arr.length;while(n+1<h){m=(n+h)>>1;if(arr[m]<str)n=m;elseh=m;}returnh;}elsefor(vari=n;i<arr.length&&arr[i]<str;i++);returni;//i=arr.length||arr[i]>=str}functionAMgetSymbol(str){//returnmaximalinitialsubstringofstrthatappearsinnames//returnnullifthereisnonevark=0;//newposvarj=0;//oldposvarmk;//matchposvarst;vartagst;varmatch="";varmore=true;for(vari=1;i<=str.length&&more;i++){st=str.slice(0,i);//initialsubstringoflengthij=k;k=AMposition(AMnames,st,j);if(k<AMnames.length&&str.slice(0,AMnames[k].length)==AMnames[k]){match=AMnames[k];mk=k;i=match.length;}more=k<AMnames.length&&str.slice(0,AMnames[k].length)>=AMnames[k];}AMpreviousSymbol=AMcurrentSymbol;if(match!=""){AMcurrentSymbol=AMsymbols[mk].ttype;returnAMsymbols[mk];}//ifstr[0]isadigitor-returnmaxsubstringofdigits.digitsAMcurrentSymbol=CONST;k=1;st=str.slice(0,1);varinteg=true;while("0"<=st&&st<="9"&&k<=str.length){st=str.slice(k,k+1);k++;}if(st==decimalsign){st=str.slice(k,k+1);if("0"<=st&&st<="9"){integ=false;k++;while("0"<=st&&st<="9"&&k<=str.length){st=str.slice(k,k+1);k++;}}}if((integ&&k>1)||k>2){st=str.slice(0,k-1);tagst="mn";}else{k=2;st=str.slice(0,1);//take1charactertagst=(("A">st||st>"Z")&&("a">st||st>"z")?"mo":"mi");
}
if (st=="-" && AMpreviousSymbol==INFIX)
return {input:st, tag:tagst, output:st, ttype:UNARY, func:true};
return {input:st, tag:tagst, output:st, ttype:CONST};
}
function AMremoveBrackets(node) {
var st;
if (node.nodeName=="mrow") {
st = node.firstChild.firstChild.nodeValue;
if (st=="(" || st=="[" || st=="{") node.removeChild(node.firstChild);
}
if (node.nodeName=="mrow") {
st = node.lastChild.firstChild.nodeValue;
if (st==")" || st=="]" || st=="}") node.removeChild(node.lastChild);
}
}
/*Parsing ASCII math expressions with the following grammar
v ::= [A-Za-z] | greek letters | numbers | other constant symbols
u ::= sqrt | text | bb | other unary symbols for font commands
b ::= frac | root | stackrel binary symbols
l ::= ( | [ | { | (: | {: left brackets
r ::= ) | ] | } | :) | :} right brackets
S ::= v | lEr | uS | bSS Simple expression
I ::= S_S | S^S | S_S^S | S Intermediate expression
E ::= IE | I/I Expression
Each terminal symbol is translated into a corresponding mathml node.*/
var AMnestingDepth,AMpreviousSymbol,AMcurrentSymbol;
function AMparseSexpr(str) { //parses str and returns [node,tailstr]
var symbol, node, result, i, st,// rightvert = false,
newFrag = document.createDocumentFragment();
str = AMremoveCharsAndBlanks(str,0);
symbol = AMgetSymbol(str); //either a token or a bracket or empty
if (symbol == null || symbol.ttype == RIGHTBRACKET && AMnestingDepth > 0) {
return [null,str];
}
if (symbol.ttype == DEFINITION) {
str = symbol.output+AMremoveCharsAndBlanks(str,symbol.input.length);
symbol = AMgetSymbol(str);
}
switch (symbol.ttype) {
case UNDEROVER:
case CONST:
str = AMremoveCharsAndBlanks(str,symbol.input.length);
return [AMcreateMmlNode(symbol.tag, //its a constant
document.createTextNode(symbol.output)),str];
case LEFTBRACKET: //read (expr+)
AMnestingDepth++;
str = AMremoveCharsAndBlanks(str,symbol.input.length);
result = AMparseExpr(str,true);
AMnestingDepth--;
if (typeof symbol.invisible == "boolean" && symbol.invisible)
node = AMcreateMmlNode("mrow",result[0]);
else {
node = AMcreateMmlNode("mo",document.createTextNode(symbol.output));
node = AMcreateMmlNode("mrow",node);
node.appendChild(result[0]);
}
return [node,result[1]];
case TEXT:
if (symbol!=AMquote) str = AMremoveCharsAndBlanks(str,symbol.input.length);
if (str.charAt(0)=="{") i=str.indexOf("}");
else if (str.charAt(0)=="(") i=str.indexOf(")");
else if (str.charAt(0)=="[") i=str.indexOf("]");
else if (symbol==AMquote) i=str.slice(1).indexOf("\"")+1;elsei=0;if(i==-1)i=str.length;st=str.slice(1,i);if(st.charAt(0)==""){node=AMcreateElementMathML("mspace");node.setAttribute("width","1ex");newFrag.appendChild(node);}newFrag.appendChild(AMcreateMmlNode(symbol.tag,document.createTextNode(st)));if(st.charAt(st.length-1)==""){node=AMcreateElementMathML("mspace");node.setAttribute("width","1ex");newFrag.appendChild(node);}str=AMremoveCharsAndBlanks(str,i+1);return[AMcreateMmlNode("mrow",newFrag),str];caseUNARY:str=AMremoveCharsAndBlanks(str,symbol.input.length);result=AMparseSexpr(str);if(result[0]==null)return[AMcreateMmlNode(symbol.tag,document.createTextNode(symbol.output)),str];if(typeofsymbol.func=="boolean"&&symbol.func){//functionshackst=str.charAt(0);if(st=="^"||st=="_"||st=="/"||st=="|"){return[AMcreateMmlNode(symbol.tag,document.createTextNode(symbol.output)),str];}else{node=AMcreateMmlNode("mrow",AMcreateMmlNode(symbol.tag,document.createTextNode(symbol.output)));node.appendChild(result[0]);return[node,result[1]];}}AMremoveBrackets(result[0]);if(symbol.input=="sqrt"){//sqrtreturn[AMcreateMmlNode(symbol.tag,result[0]),result[1]];}elseif(typeofsymbol.acc=="boolean"&&symbol.acc){//accentnode=AMcreateMmlNode(symbol.tag,result[0]);node.appendChild(AMcreateMmlNode("mo",document.createTextNode(symbol.output)));return[node,result[1]];}else{//fontchangecommandif(!isIE&&typeofsymbol.codes!="undefined"){for(i=0;i<result[0].childNodes.length;i++)if(result[0].childNodes[i].nodeName=="mi"||result[0].nodeName=="mi"){st=(result[0].nodeName=="mi"?result[0].firstChild.nodeValue:result[0].childNodes[i].firstChild.nodeValue);varnewst=[];for(varj=0;j<st.length;j++)if(st.charCodeAt(j)>64&&st.charCodeAt(j)<91)newst=newst+String.fromCharCode(symbol.codes[st.charCodeAt(j)-65]);elsenewst=newst+st.charAt(j);if(result[0].nodeName=="mi")result[0]=AMcreateElementMathML("mo").appendChild(document.createTextNode(newst));elseresult[0].replaceChild(AMcreateElementMathML("mo").appendChild(document.createTextNode(newst)),result[0].childNodes[i]);}}node=AMcreateMmlNode(symbol.tag,result[0]);node.setAttribute(symbol.atname,symbol.atval);return[node,result[1]];}caseBINARY:str=AMremoveCharsAndBlanks(str,symbol.input.length);result=AMparseSexpr(str);if(result[0]==null)return[AMcreateMmlNode("mo",document.createTextNode(symbol.input)),str];AMremoveBrackets(result[0]);varresult2=AMparseSexpr(result[1]);if(result2[0]==null)return[AMcreateMmlNode("mo",document.createTextNode(symbol.input)),str];AMremoveBrackets(result2[0]);if(symbol.input=="root"||symbol.input=="stackrel")newFrag.appendChild(result2[0]);newFrag.appendChild(result[0]);if(symbol.input=="frac")newFrag.appendChild(result2[0]);return[AMcreateMmlNode(symbol.tag,newFrag),result2[1]];caseINFIX:str=AMremoveCharsAndBlanks(str,symbol.input.length);return[AMcreateMmlNode("mo",document.createTextNode(symbol.output)),str];caseSPACE:str=AMremoveCharsAndBlanks(str,symbol.input.length);node=AMcreateElementMathML("mspace");node.setAttribute("width","1ex");newFrag.appendChild(node);newFrag.appendChild(AMcreateMmlNode(symbol.tag,document.createTextNode(symbol.output)));node=AMcreateElementMathML("mspace");node.setAttribute("width","1ex");newFrag.appendChild(node);return[AMcreateMmlNode("mrow",newFrag),str];caseLEFTRIGHT://if(rightvert)return[null,str];elserightvert=true;AMnestingDepth++;str=AMremoveCharsAndBlanks(str,symbol.input.length);result=AMparseExpr(str,false);AMnestingDepth--;varst="";if(result[0].lastChild!=null)st=result[0].lastChild.firstChild.nodeValue;//alert(result[0].lastChild+"***"+st);if(st=="|"){//itsanabsolutevaluesubtermnode=AMcreateMmlNode("mo",document.createTextNode(symbol.output));node=AMcreateMmlNode("mrow",node);node.appendChild(result[0]);return[node,result[1]];}else{//the"|"isa \midnode=AMcreateMmlNode("mo",document.createTextNode(symbol.output));node=AMcreateMmlNode("mrow",node);return[node,str];}default://alert("default");str=AMremoveCharsAndBlanks(str,symbol.input.length);return[AMcreateMmlNode(symbol.tag,//itsaconstantdocument.createTextNode(symbol.output)),str];}}functionAMparseIexpr(str){varsymbol,sym1,sym2,node,result,underover;str=AMremoveCharsAndBlanks(str,0);sym1=AMgetSymbol(str);result=AMparseSexpr(str);node=result[0];str=result[1];symbol=AMgetSymbol(str);if(symbol.ttype==INFIX&&symbol.input!="/"){str=AMremoveCharsAndBlanks(str,symbol.input.length);//if(symbol.input=="/")result=AMparseIexpr(str);else...result=AMparseSexpr(str);if(result[0]==null)// show box in place of missing argument
result[0] = AMcreateMmlNode("mo",document.createTextNode("\u25A1"));
else AMremoveBrackets(result[0]);
str = result[1];
//if(symbol.input=="/")AMremoveBrackets(node);if(symbol.input=="_"){sym2=AMgetSymbol(str);underover=(sym1.ttype==UNDEROVER);if(sym2.input=="^"){str=AMremoveCharsAndBlanks(str,sym2.input.length);varres2=AMparseSexpr(str);AMremoveBrackets(res2[0]);str=res2[1];node=AMcreateMmlNode((underover?"munderover":"msubsup"),node);node.appendChild(result[0]);node.appendChild(res2[0]);node=AMcreateMmlNode("mrow",node);//sosumdoesnotstretch}else{node=AMcreateMmlNode((underover?"munder":"msub"),node);node.appendChild(result[0]);}}else{node=AMcreateMmlNode(symbol.tag,node);node.appendChild(result[0]);}}return[node,str];}functionAMparseExpr(str,rightbracket){varsymbol,node,result,i,nodeList=[],newFrag=document.createDocumentFragment();do{str=AMremoveCharsAndBlanks(str,0);result=AMparseIexpr(str);node=result[0];str=result[1];symbol=AMgetSymbol(str);if(symbol.ttype==INFIX&&symbol.input=="/"){str=AMremoveCharsAndBlanks(str,symbol.input.length);result=AMparseIexpr(str);if(result[0]==null)// show box in place of missing argument
result[0] = AMcreateMmlNode("mo",document.createTextNode("\u25A1"));
else AMremoveBrackets(result[0]);
str = result[1];
AMremoveBrackets(node);
node = AMcreateMmlNode(symbol.tag,node);
node.appendChild(result[0]);
newFrag.appendChild(node);
symbol = AMgetSymbol(str);
}
else if (node!=undefined) newFrag.appendChild(node);
} while ((symbol.ttype != RIGHTBRACKET &&
(symbol.ttype != LEFTRIGHT || rightbracket)
|| AMnestingDepth == 0) && symbol!=null && symbol.output!="");
if (symbol.ttype == RIGHTBRACKET || symbol.ttype == LEFTRIGHT) {
//if(AMnestingDepth>0)AMnestingDepth--;varlen=newFrag.childNodes.length;if(len>0&&newFrag.childNodes[len-1].nodeName=="mrow"&&len>1&&newFrag.childNodes[len-2].nodeName=="mo"&&newFrag.childNodes[len-2].firstChild.nodeValue==","){//matrixvarright=newFrag.childNodes[len-1].lastChild.firstChild.nodeValue;if(right==")"||right=="]"){varleft=newFrag.childNodes[len-1].firstChild.firstChild.nodeValue;if(left=="("&&right==")"&&symbol.output!="}"||left=="["&&right=="]"){varpos=[];//positionsofcommasvarmatrix=true;varm=newFrag.childNodes.length;for(i=0;matrix&&i<m;i=i+2){pos[i]=[];node=newFrag.childNodes[i];if(matrix)matrix=node.nodeName=="mrow"&&(i==m-1||node.nextSibling.nodeName=="mo"&&node.nextSibling.firstChild.nodeValue==",")&&node.firstChild.firstChild.nodeValue==left&&node.lastChild.firstChild.nodeValue==right;if(matrix)for(varj=0;j<node.childNodes.length;j++)if(node.childNodes[j].firstChild.nodeValue==",")pos[i][pos[i].length]=j;if(matrix&&i>1)matrix=pos[i].length==pos[i-2].length;}if(matrix){varrow,frag,n,k,table=document.createDocumentFragment();for(i=0;i<m;i=i+2){row=document.createDocumentFragment();frag=document.createDocumentFragment();node=newFrag.firstChild;//<mrow>(-,-,...,-,-)mrow>
n = node.childNodes.length;
k = 0;
node.removeChild(node.firstChild); //remove(for(j=1;j<n-1;j++){if(typeofpos[i][k]!="undefined"&&j==pos[i][k]){node.removeChild(node.firstChild);//remove,row.appendChild(AMcreateMmlNode("mtd",frag));k++;}elsefrag.appendChild(node.firstChild);}row.appendChild(AMcreateMmlNode("mtd",frag));if(newFrag.childNodes.length>2){newFrag.removeChild(newFrag.firstChild);//remove<mrow>)mrow>
newFrag.removeChild(newFrag.firstChild); //remove<mo>,mo>
}
table.appendChild(AMcreateMmlNode("mtr",row));
}
node = AMcreateMmlNode("mtable",table);
if (typeof symbol.invisible == "boolean" && symbol.invisible) node.setAttribute("columnalign","left");
newFrag.replaceChild(node,newFrag.firstChild);
}
}
}
}
str = AMremoveCharsAndBlanks(str,symbol.input.length);
if (typeof symbol.invisible != "boolean" || !symbol.invisible) {
node = AMcreateMmlNode("mo",document.createTextNode(symbol.output));
newFrag.appendChild(node);
}
}
return [newFrag,str];
}
function AMparseMath(str) {
var result, node = AMcreateElementMathML("mstyle");
if (mathcolor != "") node.setAttribute("mathcolor",mathcolor);
if (displaystyle) node.setAttribute("displaystyle","true");
if (mathfontfamily != "") node.setAttribute("fontfamily",mathfontfamily);
AMnestingDepth = 0;
node.appendChild(AMparseExpr(str.replace(/^\s+/g,""),false)[0]);
node = AMcreateMmlNode("math",node);
if (showasciiformulaonhover) node.setAttribute("title",str);
if (mathfontfamily != "" && (isIE || mathfontfamily != "serif")) {
var fnode = AMcreateElementXHTML("font");
fnode.setAttribute("face",mathfontfamily);
fnode.appendChild(node);
return fnode;
}
return node;
}
function AMstrarr2docFrag(arr, linebreaks) {
var newFrag=document.createDocumentFragment();
var expr = false;
for (var i=0; i\n\n") : [arr[i]]);
newFrag.appendChild(AMcreateElementXHTML("span").
appendChild(document.createTextNode(arri[0])));
for (var j=1; j/\r\n\r\n/g,"\n\n");if(doubleblankmathdelimiter){str=str.replace(/\x20\x20\./g,""+AMdelimiter1+".");str=str.replace(/\x20\x20,/g,""+AMdelimiter1+",");str=str.replace(/\x20\x20/g,""+AMdelimiter1+"");}str=str.replace(/\x20+/g,"");str=str.replace(/\s*\r\n/g,"");mtch=false;str=str.replace(newRegExp(AMescape2,"g"),function(st){mtch=true;return"AMescape2"});str=str.replace(newRegExp(AMescape1,"g"),function(st){mtch=true;return"AMescape1"});str=str.replace(newRegExp(AMdelimiter2regexp,"g"),AMdelimiter1);arr=str.split(AMdelimiter1);for(i=0;i<arr.length;i++)arr[i]=arr[i].replace(/AMescape2/g,AMdelimiter2).replace(/AMescape1/g,AMdelimiter1);if(arr.length>1||mtch){if(checkForMathML){checkForMathML=false;varnd=AMisMathMLavailable();AMnoMathML=nd!=nullif(AMnoMathML&¬ifyIfNoMathML)AMbody.insertBefore(nd,AMbody.childNodes[0]);}if(!AMnoMathML){frg=AMstrarr2docFrag(arr,n.nodeType==8);varlen=frg.childNodes.length;n.parentNode.replaceChild(frg,n);returnlen-1;}elsereturn0;}}}elsereturn0;}elseif(n.nodeName!="math"){for(i=0;i<n.childNodes.length;i++)i+=AMprocessNodeR(n.childNodes[i],linebreaks);}return0;}functionAMprocessNode(n,linebreaks,spanclassAM){varfrag,st;if(spanclassAM!=null){frag=document.getElementsByTagName("span")for(vari=0;i<frag.length;i++)if(frag[i].className=="AM")AMprocessNodeR(frag[i],linebreaks);}else{try{st=n.innerHTML;}catch(err){}if(st==null||st.indexOf(AMdelimiter1)!=-1||st.indexOf(AMdelimiter2)!=-1)AMprocessNodeR(n,linebreaks);}if(isIE){//neededtomatchsizeandfontofformulatosurroundingtextfrag=document.getElementsByTagName('math');for(vari=0;i<frag.length;i++)frag[i].update()}}varAMbody;varAMnoMathML=false,AMtranslated=false;functiontranslate(spanclassAM){if(!AMtranslated){//runthisonlyonceAMtranslated=true;AMinitSymbols();AMbody=document.getElementsByTagName("body")[0];AMprocessNode(AMbody,false,spanclassAM);}}if(isIE){//avoidaddingMathPlayerinfoexplicitlytoeachwebpagedocument.write("mathplayer\"\
classid=\"clsid:32F66A20-7614-11D4-BD11-00104BD3F987\">");document.write("\"m\" implementation=\"#mathplayer\"?>");}//GO1.1GenericonloadbyBrothercake// http://www.brothercake.com///onloadfunction(replacestheonload="translate()"inthe<body>tag)functiongeneric(){translate();};//setuponloadfunctionif(typeofwindow.addEventListener!='undefined'){//..gecko,safari,konquerorandstandardwindow.addEventListener('load',generic,false);}elseif(typeofdocument.addEventListener!='undefined'){//..opera7document.addEventListener('load',generic,false);}elseif(typeofwindow.attachEvent!='undefined'){//..win/iewindow.attachEvent('onload',generic);}//**removethisconditiontodegradeolderbrowserselse{//..mac/ie5andanythingelsethatgetsthisfar//ifthere's an existing onload function
if(typeof window.onload == 'function')
{
//store it
var existing = onload;
//add new onload handler
window.onload = function()
{
//call existing onload function
existing();
//call generic onload function
generic();
};
}
else
{
//setup onload function
window.onload = generic;
}
}