JavaScript DHTML/Page Components/Calculator

Материал из Web эксперт
Перейти к: навигация, поиск

A JavaScript Calculator

   <source lang="html4strict">

/* Mastering JavaScript, Premium Edition by James Jaworski ISBN:078212819X Publisher Sybex CopyRight 2001

  • /

<HTML> <HEAD> <TITLE>Doing Math</TITLE> <SCRIPT LANGUAGE="JavaScript"></SCRIPT> </HEAD> <BODY> <SCRIPT LANGUAGE="JavaScript"></SCRIPT>

Doing Math

<FORM NAME="calculator">

<INPUT TYPE="TEXT" NAME="total" VALUE="0" SIZE="44">
<INPUT TYPE="BUTTON" NAME="n0" VALUE=" 0 " ONCLICK="addDigit(0)"> <INPUT TYPE="BUTTON" NAME="n1" VALUE=" 1 " ONCLICK="addDigit(1)"> <INPUT TYPE="BUTTON" NAME="n2" VALUE=" 2 " ONCLICK="addDigit(2)"> <INPUT TYPE="BUTTON" NAME="equals" VALUE=" = " ONCLICK="calc()"> <INPUT TYPE="BUTTON" NAME="clearField" VALUE=" Clear " ONCLICK="clearDisplay()"> <INPUT TYPE="BUTTON" NAME="ln2" VALUE=" ln2 " ONCLICK="setTo(Math.LN2)">
<INPUT TYPE="BUTTON" NAME="n3" VALUE=" 3 " ONCLICK="addDigit(3)"> <INPUT TYPE="BUTTON" NAME="n4" VALUE=" 4 " ONCLICK="addDigit(4)"> <INPUT TYPE="BUTTON" NAME="n5" VALUE=" 5 " ONCLICK="addDigit(5)"> <INPUT TYPE="BUTTON" NAME="sign" VALUE=" +/- " ONCLICK="changeSign()"> <INPUT TYPE="BUTTON" NAME="sqrt2" VALUE=" sqrt(2) " ONCLICK="setTo(Math.SQRT2)"> <INPUT TYPE="BUTTON" NAME="ln10" VALUE=" ln10 " ONCLICK="setTo(Math.LN10)">
<INPUT TYPE="BUTTON" NAME="n6" VALUE=" 6 " ONCLICK="addDigit(6)"> <INPUT TYPE="BUTTON" NAME="n7" VALUE=" 7 " ONCLICK="addDigit(7)"> <INPUT TYPE="BUTTON" NAME="n8" VALUE=" 8 " ONCLICK="addDigit(8)"> <INPUT TYPE="BUTTON" NAME="pi" VALUE=" pi " ONCLICK="setTo(Math.PI)"> <INPUT TYPE="BUTTON" NAME="sqrt12" VALUE="sqrt(1/2) " ONCLICK="setTo(Math.SQRT1_2)"> <INPUT TYPE="BUTTON" NAME="log2e" VALUE=" log2(e) " ONCLICK="setTo(Math.LOG2E)">
<INPUT TYPE="BUTTON" NAME="n9" VALUE=" 9 " ONCLICK="addDigit(9)"> <INPUT TYPE="BUTTON" NAME="decimal" VALUE=" . " ONCLICK="addDecimalPoint()"> <INPUT TYPE="BUTTON" NAME="plus" VALUE=" + " ONCLICK="performOp("+")"> <INPUT TYPE="BUTTON" NAME="e" VALUE=" e " ONCLICK="setTo(Math.E)"> <INPUT TYPE="BUTTON" NAME="random" VALUE="Random" ONCLICK="setTo(Math.random())"> <INPUT TYPE="BUTTON" NAME="log10e" VALUE="log10(e) " ONCLICK="setTo(Math.LOG10E)">
<INPUT TYPE="BUTTON" NAME="minus" VALUE=" - " ONCLICK="performOp("-")"> <INPUT TYPE="BUTTON" NAME="multiply" VALUE=" X " ONCLICK="performOp("*")"> <INPUT TYPE="BUTTON" NAME="divide" VALUE=" / " ONCLICK="performOp("/")"> Functions:

<SELECT NAME="functions" SIZE="1"> <OPTION VALUE="abs" SELECTED="SELECTED">abs(x)</OPTION> <OPTION VALUE="acos">acos(x)</OPTION> <OPTION VALUE="asin">asin(x)</OPTION> <OPTION VALUE="atan">atan(x)</OPTION> <OPTION VALUE="ceil">ceil(x)</OPTION> <OPTION VALUE="cos">cos(x)</OPTION> <OPTION VALUE="exp">exp(x)</OPTION> <OPTION VALUE="floor">floor(x)</OPTION> <OPTION VALUE="log">log(x)</OPTION> <OPTION VALUE="sin">sin(x)</OPTION> <OPTION VALUE="sqrt">sqrt(x)</OPTION> <OPTION VALUE="tan">tan(x)</OPTION> </SELECT> <INPUT TYPE="BUTTON" NAME="apply" VALUE="Apply"

onClick="applyFunction()">

</FORM> </BODY> </HTML>

      </source>
   
  


JavaScript Calculator - sCal

   <source lang="html4strict">

<HEAD> <SCRIPT LANGUAGE="JavaScript">

</script> </HEAD>



<BODY onLoad="setDefaultMenus()">


<form name="sCal">

</FORM>


<script language="JavaScript" type="text/javascript"> </script>
<large> JavaScript Calculator . sCal-1ce</large>
Place Constants, Functions Apply
<input type="button" value="JS "
   onClick="JSwork(document.sCal.group1.options[document.sCal.group1.selectedIndex].value)">
<select name="group1"><option value="Math.PI">General convert x}. Pi .</option> </select> <input type="button" Value=">x "
   onClick="Xwork(document.sCal.group1.options[document.sCal.group1.selectedIndex].value)">
<input type="button" value="JS "
   onClick="JSwork(document.sCal.group2.options[document.sCal.group2.selectedIndex].value)">
<SELECT name="group2"><option value="Math.pow(x,2)">Ordinary Math x} . (x)² .</option> </select> <input type="button" Value=">x "
   onClick="Xwork(document.sCal.group2.options[document.sCal.group2.selectedIndex].value)">
<input type="button" value="JS "
   onClick="JSwork(document.sCal.group3.options[document.sCal.group3.selectedIndex].value)">
<SELECT name="group3"><option value="Math.sqrt(x)">Special: *} . root (x)½</option> </select> <input type="button" Value=">x "
   onClick="Xwork(document.sCal.group3.options[document.sCal.group3.selectedIndex].value)">
Display - x
Memory - m
<input type="button" Value="x›m" onClick="XtoM()"> <input type="button" Value="m›x" onClick="MtoX()">

<script language="JavaScript" type="text/javascript">

</script>

<input type="button" Value="m+" onClick="Mplus()"> <input type="button" Value="mc" onClick="Mclear()">
.
<input type="button" Value=" 7 " onClick="xPlusEq(7)"> <input type="button" Value=" 8 " onClick="xPlusEq(8)"> <input type="button" Value=" 9 " onClick="xPlusEq(9)"> <input type="button" Value=" ( " onClick="xPlusEq("(")"> <input type="button" Value=" ) " onClick="xPlusEq(")")"> <input type="button" Value=" C " onClick="Clear()">
<input type="button" Value=" 4 " onClick="xPlusEq(4)"> <input type="button" Value=" 5 " onClick="xPlusEq(5)"> <input type="button" Value=" 6 " onClick="xPlusEq(6)"> <input type="button" Value=" * " onClick="xPlusEq("*")"> <input type="button" Value=" / " onClick="xPlusEq("/")"> <input type="button" Value=" < " onClick="BkSpace()">
<input type="button" Value=" 1 " onClick="xPlusEq(1)"> <input type="button" Value=" 2 " onClick="xPlusEq(2)"> <input type="button" Value=" 3 " onClick="xPlusEq(3)"> <input type="button" Value=" + " onClick="xPlusEq("+")"> <input type="button" Value=" - " onClick="xPlusEq("-")"> <input type="button" Value=" ^ " onClick="xPlusEq("^")">
<input type="button" Value=" 0 " onClick="xPlusEq("0")"> <input type="button" Value=" • " onClick="xPlusEq(".")"> <input type="button" Value=" +/- " onClick="xMultEq("-1")"> <input type="button" Value="1/x " onClick="recip()"> <input type="button" Value="=, Enter" onClick="xEval()">
Civil Engr. vers. r.m.02


<script language="JavaScript" type="text/javascript">

</script>

<script language="JavaScript" type="text/javascript">

</script>

<script language="JavaScript" type="text/javascript">

</script>

<script language="JavaScript" type="text/javascript">

</script>

<script language="JavaScript" type="text/javascript">

</script>

<script language="JavaScript" type="text/javascript">

</script>

<script language="JavaScript" type="text/javascript">

</script>

<script language="JavaScript" type="text/javascript">

</script>

<script language="JavaScript" type="text/javascript">

</script>

<script language="JavaScript" type="text/javascript">

</script>

<large>sCal2 Data Handling Expansion </large>
1/Do CATAGORY of Const, Fcn. n[ ]
<input type="button" value="1/x"
   onClick="DoRecip(document.sCal.group1.options[document.sCal.group1.selectedIndex].value)">
<select name="catagory1"

onChange="populateGroup(document.sCal.group1,document.sCal.catagory1.options[document.sCal.catagory1.selectedIndex].text)">

   <option selected value="Math.PI">General: convert x}. Pi .</option>
   <option value="">Length_convert x} ft>m</option>
   <option value="">Area_convert x} ft² >m²</option>
   <option value="">Volume_conv.x} ft&sup3 >m³</option>
   <option value="">Time_Velocity x} hr > s.</option>
   <option value="">Mass_Force x} lb > kg</option>
   <option value="">Pressure x} p.s.i. > Pa</option>
   <option value="">Density x} p/cf > kg/m³</option>
   <option value="">Energy_or work s} Def.</option>
   <option value="">Power_rate of Work s}</option>
   <option value="">Heat_Temperature: s}</option>
   <option value="">Angular x} . . deg > rad</option>
   <option value="">Electric, Magnetism x}</option>
   <option value="">Light_Rad. lux>lum./sm</option>
   <option value="">Misc_Units each >doz.</option>
   <option value=""></option>
   <option value="">Materials, Elements s}</option>
   <option value="">Math_Science cnst. s}</option>
   <option value="">Geo_Physical cnst. s}</option>
   <option value="">Prefixes to Units s}</option>
   <option value="">Charts_Series, misc.s}</option>
   <option value=""></option>
   <option value=""></option>
   
</select>
<input type="button" value="nx " onClick="setNflag2()">
<input type="button" value="1/x"
   onClick="DoRecip(document.sCal.group2.options[document.sCal.group2.selectedIndex].value)">
<SELECT name="catagory2"

onChange="populateGroup(document.sCal.group2,document.sCal.catagory2.options[document.sCal.catagory2.selectedIndex].text)">

   <option selected value="Math.pow(x,2)">Ordinary Math x} . (x)² .</option>
   <option value="Math.pow(x,y)">Esoteric Math *} .(x)^y</option>
   <option value="">Algebra . . . . . s} . terms</option>
   <option value="">Analytic Geometry . . s}</option>
   <option value="">Mensuration .s} . terms</option>
   <option value="">*</option>
   <option value="">Finance *} . . . . . . $ > € .</option>
   <option value="">Physics . . . . . s} . terms</option>
   <option value="">Probability, Statistic s}</option>
   <option value="">Time_Function: x}Now</option>
   <option value="">*</option>
   <option value="">JavaScript samples</option>
   <option value="">*</option>
   <option value="">*</option>
   <option value="">*</option>
   
</select>
<input type="button" value="n[ ]" onClick="setNflag1()">
<input type="button" value="1/x"
   onClick="DoRecip(document.sCal.group3.options[document.sCal.group3.selectedIndex].value)">
<SELECT name="catagory3"

onChange="populateGroup(document.sCal.group3,document.sCal.catagory3.options[document.sCal.catagory3.selectedIndex].text)">

   <option selected value="Math.sqrt(x)">Special: pg} . . root (x)½</option>
   <option value="">User_01 . . . . . blank set</option>
   <option value="">User_02 . . . . . blank set</option>
   <option value="">User_03 . . . . . blank set</option>
   <option value="">*</option>
   <option value="">Civ_Highway-Survey</option>
   <option value="">Civ_Hydro-Hydraulics</option>
   <option value="">Civ_Structures . . . s} . .</option>
   <option value="">*</option>
   <option value="">Data_Management s}</option>
   <option value="">*</option>
   <option value="">Strategic Planning . s}</option>
   <option value="">*</option>
   <option value="">*</option>
   <option value="">*</option>
   
</select>
<input type="button" value="nc " onClick="Nclear()">
<input type="button" value="n 0" onClick="nData(0)"> <input type="button" value="10 " onClick="nData(10)">
<input type="button" value="n 1" onClick="nData(1)"> <input type="button" value="11 " onClick="nData(11)">
<input type="button" value="n 2" onClick="nData(2)"> <input type="button" value="12 " onClick="nData(12)">
<input type="button" value="n 3" onClick="nData(3)"> <input type="button" value="13 " onClick="nData(13)">
<input type="button" value="n 4" onClick="nData(4)"> <input type="button" value="14 " onClick="nData(14)">
<input type="button" value="n 5" onClick="nData(5)"> <input type="button" value="15 " onClick="nData(15)">
<input type="button" value="n 6" onClick="nData(6)"> <input type="button" value="16 " onClick="nData(16)">
<input type="button" value="n 7" onClick="nData(7)"> <input type="button" value="17 " onClick="nData(17)">
<input type="button" value="n 8" onClick="nData(8)"> <input type="button" value="18 " onClick="nData(18)">
<input type="button" value="n 9" onClick="nData(9)"> <input type="button" value="19 " onClick="nData(19)">


Notes on JavaScript Calculator - sCal
   Operation on lowest level = a simple calculator: click on-screen buttons 
or use keyboard -- best for inserting values or programming.  On a higher level, 
some functions are available as buttons or from drop-down select menus: designated by 
x}. These operate directly on entire value in x-display, not just last 
term, when the [>x] clicked. (The [^] takes all values left of it as 
base, all to the right as exponent.) Trade values in and out of Memory to control.
-Experiment-. Test on known data.
   *} Programs invoked with the [JS] button, give much more control: replace alpha-characters with numeric, or insert after /*com"nt-prompt*/ ) before closing ")". Write legitimate JavaScript expressions --evaluated according to interpreter"s parser. NaN is Not a Number, can often correct.
   Programming is on the highest level. Definitely view source code. Programming experience is desireable, but with minimal effort, one"s most-used functions can be inserted in the source (well commented for the purpose). Copy - Paste from any TEXT file. s} comments can be set to display.
   GNU General Public License Free, user-modifiable, NO WARANTEE. (c) 2003
R. Mohaupt. <a href="http://scal-2.sourceforge.net">http://scal-2.sourceforge.net</a>


JavaScript Calculator Expansion - sCal2
Basic sCal is designed for a small window, (floating over larger screens with other 
programs running, or alone on PDAs) to perform simple scientific calculations with a limited
library of add-on procedures.
&nbsp &nbsp sCal2 is no vast increase in computing power but, doubling the footprint, adds: Catagories to systematically handle many times the conversion/procedure selection; [1/x] buttons to reciprocate conversions, eg. ft>m [>x] gets m>ft with [1/x], tan(x) becomes cotan(x), etc --but sometimes makes no sense, eg. 1/deg.C != deg.F;
n[0..19] array of additional variables for 20 more memory slots {click the desired [n-] button to put x to it} or programming input prompts and output labels. Procedures using this feature are designated by n}, invoke with the [JS] button, occasionally w/[=], run/rerun with new values [=, Enter], usually [c] clear between programs;
[nx] followed by the desired [n-] cell-button, moves that cell value to the x-disp. Similarly, [n[]] puts the next [n-] name in x, and [nc] clears all.
* sCal needs a JS-enabled browser and no additional files, for maximum portability.
* More documentation may be created.
* Compact display and file size are goals.

</body> </html>


      </source>
   
  


JavaScript (sCal-05m) Calculator

   <source lang="html4strict">

<HEAD>


<SCRIPT LANGUAGE="JavaScript">

</script> </HEAD>

<BODY>


<form name="sCal">

<large> JavaScript Calculator . sCal-1ce</large>
Place Constants, Functions Apply
<input type="button" value="JS" onClick="xPlusEq(document.sCal.FSET1.value)"> <SELECT name="FSET1">
 <option selected value="Math.PI">[convert, constant] . Pi .</option>
 <option value="x/25.4">x}[length] . . mm -> inch</option>
 <option value="25.4*x">x}[length] . . inch -> mm</option>
 <option value="x/0.3048">x}[length] meter -> feet</option>
 <option value="0.3048*x">x}[length] feet -> meter</option>
 <option value="x/5280">x}[length] . . feet -> mile</option>
 <option value="0.62137*x">x}[len.] kilometer->mile</option>
 <option value="1.609344*x">x}[len.] mile->kilometer</option>
 <option value="10.76391*x">x}[area] meter² -> feet²</option>
 <option value="0.092903*x">x}[area] feet² -> meter²</option>
 <option value="x/43560">x}[area] . . feet² ->acre</option>
 <option value="43560*x">x}[area] . . acre ->feet²</option>
 <option value="2.471054*x">x}[area] hectare->acre</option>
 <option value="0.404686*x">x}[area] acre->hectare</option>
 <option value="x/640">x}[area] . . acre-> mile²</option>
 <option value="35.314725*x">x}[volume] meter³ -> ft³</option>
 <option value="0.0283168*x">x}[volume] ft³ -> meter³</option>
 <option value="7.4805*x">x}[volume] ft³ -> gallon</option>
 <option value="0.764555*x">x}[vol.] . . yd³ ->meter³</option>
 <option value="4.44822*x">x}[force] lb(f)->Newton</option>
 <option value="0.45359*x">x}[mass] . lb.US -> kg</option>
 <option value="9*x/5+32">x}[temperature] C°->F°</option>
 <option value="5*(x-32)/9">x}[temperature] F°->C°</option>
<option value="x-273.15">x}[temperature] C°->K°</option></select>
<input type="button" Value="Do" onClick="Xwork(document.sCal.FSET1.value)">
<input type="button" value="JS" onClick="xPlusEq(document.sCal.FSET2.value)"> <SELECT name="FSET2">
 <option selected value="Math.pow(x,2)">[power, trig, log] . . . (x)²</option>
 <option value="for(j=x;j>2;j--){x*=j-1;} //x<2 undefined">x}pgm.eg.} factorial . x!</option>
 <option value="Math.round(x*10000)/10000">x} 4-dec.places: round</option>
 <option value="Math.sin(x*Math.PI/180)">x}opp/hyp, deg) sin(x°)</option>
 <option value="Math.cos(x*Math.PI/180)">x}adj/hyp, deg) cos(x°)</option>
 <option value="Math.tan(x*Math.PI/180)">x}opp/adj, deg) tan(x°)</option>
 <option value="Math.PI/180 *x">x} . degrees to radians</option>
 <option value="180/Math.PI *x">x} . radians to degrees</option>
 <option value="Math.asin(x)*180/Math.PI">x}for deg.)  .  . arc sin(x)</option>
 <option value="Math.acos(x)*180/Math.PI">x}for deg.)  .  . arc cos(x)</option>
 <option value="Math.atan(x)*180/Math.PI">x}for deg.)  .  . arc tan(x)</option>
 <option value="Math.log(x)">x} natural log (base e)</option>
 <option value="Math.exp(x)">x}exponentiation: e^x</option>
 <option value="Math.log(x)*Math.LOG10E">x}common log(bse10)</option>
 <option value="Math.pow(10,x)">x}anti-log(com"n)10^x</option>
 <option value="Math.E">base of natural logs,e</option>
 <option value="Math.LOG10E">common log (10) of e</option>
<option value="Math.random()">Random Num. (0 to 1)</option></select>
<input type="button" Value="Do" onClick="Xwork(document.sCal.FSET2.value)">
<input type="button" value="JS" onClick="xPlusEq(document.sCal.FSET3.value)"> <SELECT name="FSET3">
 <option selected value="Math.sqrt(x)">[ - other - ] . sq.root (x)½</option>
 <option value="Actual bank values can vary on pay date vs. interest posting, etc.">
s} . . . . FINANCE</option>
 <option value="I=(/*int.rate%/per.*/ ); N=(/*no. of periods*/ ); P=(/*Principal $*/ ); /*CLICK[ = ]*/ var i=I/100; var y=Math.pow(1+i,N); /*eg: 9%APR (=0.75%/mo.) for 36mo, repay $10000 @ $318/mo.*/ x="REPAY/PERIOD $"+ Mr(P*i*y/(y-1),2)">
  *}Cap.Recov: loan pay</option> 
 <option value="I=(/*int.rate%/per.*/ ); N=(/*no. of periods*/ ); P=(/*$ banked*/ ); /*CLICK[ = ]*/ var i=I/100; var y=Math.pow(1+i,N); /*eg: $1000 invested @9%APR for 10 yrs. becomes $2367*/ x="TOTAL AFTER "+N+ " PERIODS $"+ Mr(P*y,2)">
  *} sgl.pay: Comp.Amt.</option>
 <option value="I=(/*int.rate%/per.*/ ); N=(/*no. of periods*/ ); R=(/*bank $/per*/ ); /*CLICK[ = ]*/ var i=I/100; var y=Math.pow(1+i,N); /*eg: @9%APR, $1000 invested/year for 10yrs, yields $15193*/ x="TOTAL AFTER "+N+ " PERIODS $"+ Mr(R*(y-1)/i,2)">
  *} unif.pay: Comp.Amt.</option>
 <option value="I=(/*int.rate%/per.*/ ); N=(/*no. of periods*/ ); S=(/*Needed $ in n-periods*/ ); /*CLICK[ = ]*/ var i=I/100; var y=Math.pow(1+i,N); /*eg: @9%APR, $1000 needed in 10yrs; bank $422 now.*/ x="BANK NOW $"+ Mr(S/y,2)">
  *} sgl.pay: Pres.Worth</option>
 <option value="I=(/*int.rate%/per.*/ ); N=(/*no. of periods*/ ); R=(/*Needed $/period*/ ); /*CLICK[ = ]*/ var i=I/100; var y=Math.pow(1+i,N); /*eg: @9%APR, $1000 needed annually for 10yrs; bank $6418 now*/ x="BANK NOW $"+ Mr(R*(y-1)/(y*i),2)">
  *}unif.pay: Pres.Worth</option>
 <option value="I=(/*int.rate%/per.*/ ); N=(/*no. of periods*/ ); S=(/*Needed $ in n-periods*/ ); /*CLICK[ = ]*/ var i=I/100; var y=Math.pow(1+i,N); /*eg: @9%APR, $1000 needed in 10yrs; bank $66 annually*/ x="BANK/PERIOD $"+ Mr(S*i/(y-1),2)">
  *} unif.pay: Sink.Fund</option>
 <option value="Only for simplest cases with knowledge of assumptions, coefficients, etc.">
s} . . OPEN CHAN. Q</option>
 <option value="3.1*(/*weirLength,ft*/ )*Math.pow((/*head,ft*/ ),1.5)">
  *}BrdCrest Weir, Q,cfs</option>  
 <option value="h=(/*Orifice height,ft*/ ); 0.6*(/*width, ft*/ )*h*Math.sqrt(((/*total Head, ft*/ )-h/2)*2*g)">
  *}Rectang.Orifice Q,cfs</option>
 <option value="d=(/*Orif.Dia,ft*/ ); Math.sqrt(((/*total Head,ft*/ )-d/2)*2*g)*0.6*3.1416*d*d/4">
  *} Circular Orifice Q,cfs</option>
 <option value="d=(/*Pipe Dia. ft*/ ); s=(/*long.slope,%*/ ); N=(/*Manning n*/ ); /*CLICK[ = ]*/ a=3.1416*d*d/4; m="A, s.f="+a; Om(); 1.486*Math.sqrt(s/100)*Math.pow(d/4,0.667)*a/N">
  *} Pipe normal flo Q,cfs</option>  
 <option value="l=(/*left.side.sl:1*/ ); b=(/*bottom width,ft*/ ); r=(/*rt.side.sl:1*/ ); y=(/*flow depth,ft*/ ); s=(/*long.slope,%*/ ); N=(/*Manning n*/ ); /*CLICK[ = ]*/ var tw=l*y+b+r*y; a=y*(tw+b)/2; var wp=Math.sqrt(l*y*l*y+y*y)+b+Math.sqrt(r*y*r*y+y*y); v=1.486*Math.sqrt(s/100)*Math.pow(a/wp,0.667)/N; f=v/Math.sqrt(g*a/tw); x="top wid.ft=" +Mr(tw,1) +" area s.f.=" +Mr(a,1) +" Froude#=" +Mr(f,2) +" Vel.f/s=" + Mr(v,1) +" Q, cfs=" +Mr(a*v,1); // Note: if side.slope=0, vertical wall; if bottom width=0, V-ditch; velocity shown in memory box">
  *} \_/ Channel norm. Q</option>  
 <option value="">

s} . . . MISC. </option>

 <option value="d=(/*BEAM depth,in*/ ); b=(/*width,in*/ ); l=(/*length,ft*/ ); w=(/*unif.load,lb/ft*/ ); h=(/*max.deflect,in*/ ); /*CLICK[ = ]*/ a=b*d; S=a*d/6; I=S*d/2; M=w*l*l*12/8; x="A,sq.in="+Mr(a,3)+" I,in4="+Mr(I,2)+" M.max,in.lb="+Mr(M,-1)+" f.b.min,psi="+Mr(M/S,-1)+" E.min,psi="+Mr(5*M*l*l*144/(48*h*I),-3); //etc. eg. shear f.v=V/A esp. short beams">
  *} Simple Rect. Beam</option>
 <option value="">*}</option>
 <option value="">*}</option>
<option value="186300">light speed c, mile/sec</option></select>
<input type="button" Value="Do" onClick="Xwork(document.sCal.FSET3.value)">
Display - x
<TextArea name="IOx" rows=4 COLS=26></TextArea>
Memory - m
<input type="button" Value="x›m" onClick="XtoM()"> <input type="button" Value="m›x" onClick="MtoX()"> <input type="text" name="IOm" size=8> <input type="button" Value=" m+" onClick="Mplus()"> <input type="button" Value="mc" onClick="Mclear()">
.
<input type="button" Value=" 7 " onClick="xPlusEq(7)"> <input type="button" Value=" 8 " onClick="xPlusEq(8)"> <input type="button" Value=" 9 " onClick="xPlusEq(9)"> <input type="button" Value=" ( " onClick="xPlusEq("(")"> <input type="button" Value=" ) " onClick="xPlusEq(")")"> <input type="button" Value=" C " onClick="Clear()">
<input type="button" Value=" 4 " onClick="xPlusEq(4)"> <input type="button" Value=" 5 " onClick="xPlusEq(5)"> <input type="button" Value=" 6 " onClick="xPlusEq(6)"> <input type="button" Value=" * " onClick="xPlusEq("*")"> <input type="button" Value=" / " onClick="xPlusEq("/")"> <input type="button" Value=" < " onClick="BkSpace()">
<input type="button" Value=" 1 " onClick="xPlusEq(1)"> <input type="button" Value=" 2 " onClick="xPlusEq(2)"> <input type="button" Value=" 3 " onClick="xPlusEq(3)"> <input type="button" Value=" + " onClick="xPlusEq("+")"> <input type="button" Value=" - " onClick="xPlusEq("-")"> <input type="button" Value=" ^ " onClick="xPlusEq("^")">
<input type="button" Value=" 0 " onClick="xPlusEq("0")"> <input type="button" Value=" • " onClick="xPlusEq(".")"> <input type="button" Value=" +/- " onClick="xMultEq("-1")"> <input type="button" Value="1/x " onClick="recip()"> <input type="button" Value=". . = . ." onClick="xEval()">
Civil Engr. vers. r.m.03

</form>

Notes on JavaScript Calculator - sCal
   Operation on lowest level = a simple calculator: click on-screen buttons 
or use keyboard -- best for inserting values or programming. On a higher level, 
some functions are available as buttons or from drop-down select menus: designated by 
x}. These operate directly on entire value in x-display, not just last 
term, when the [Do] clicked. (The [^] takes all values left of it as 
base, all to the right as exponent.) Trade values in and out of Memory to control.
-Experiment-. Test on known data.
   *} Programs invoked with the [JS] button, gives much more control: replace alpha-characters with numeric, or insert after /*com"nt-prompt*/ ) before closing ")". Write legitimate Java Script expressions --evaluated according to interpreter"s parser. NaN is Not a Number, can often correct.
   Programming is on the highest level. Definitely view source code. Programming experience is desireable, but with minimal effort, one"s most-used functions can be inserted in the source (well commented for the purpose). Copy - Paste from any TEXT file. s} comments can be set to display.
   Public Domain. All code user modifiable, responsible. Original: R. Mohaupt, P.E. Feb, 2003. -<a href="http://scal-2.sourceforge.net">http://scal-2.sourceforge.net</a>-
* More documentation may be created.
* Compact display and file size are goals.

</body> </html>

      </source>
   
  


Reverse Polish Notation Calculator

   <source lang="html4strict">

<html>

 <head>
   <title>rpnjcalc a javascript RPN Calculator</title>

<style type="text/css"> input.btn {align:center;color:#000000;width:50;height:22;vertical-align:middle;font-size:12} input.bigbtn {align:center;color:#000000;width:100;height:22;vertical-align:middle;font-size:12} </style> <script type="text/javascript" language="JavaScript">

</script>

 </head>
 <body>

Reverse Polish Notation Calculator

This calculator uses postfix notation also known as Reverse Polish Notation (RPN). This notation has many advantages over Algebraic notation. One advantage is that you can calculate even complicated terms without braces.

An example: Suppose you want calculate 5 * (3 + 4)
Press the following keys on the calculator: 5, enter, 3, enter. The 3 and 5 did go into the calculator"s memory, the stack. Now you type 4 and press + to add. After this you just press * to multiply.

You can either operate this calculator with mouse clicks or you can use the keyboard. However some web-browsers have keyboard shortcuts which may conflict with the keys used by this calculator. Therefore you need to place the mouse over the text area below as this avoids the browsers keyboard shortcuts to take effect. The keyboard interface was tested with Mozilla, MS IE and Opera. It does not work with Netscape 4.

rpnjcalc comes with a small manual which you can find here: <a href="rpnjcalc-help-0.1.html">rpnjcalc-help-0.1.html</a>


     <form name="rpncal" method="post">
rpnjcalc version 1.6
<input type="button" value="stoX"
           onclick="sto4(this.form)"> <input name="mem4" value="0"
           size="14"> <input type="button" value="rclX" onclick=
"rcl4(this.form)">
C:<input name= "stack3" value="0" size="23" readonly> 
<input type="button" value="stoX"
           onclick="sto3(this.form)"> <input name="mem3" value="0"
           size="14"> <input type="button" value="rclX" onclick=
"rcl3(this.form)">
B:<input name= "stack2" value="0" size="23" readonly> 
<input type="button" value="stoX"
           onclick="sto2(this.form)"> <input name="mem2" value="0"
           size="14"> <input type="button" value="rclX" onclick=
"rcl2(this.form)">
A:<input name= "stack1" value="0" size="23" readonly> 
<input type="button" value="stoX"
           onclick="sto1(this.form)"> <input name="mem1" value="0"
           size="14"> <input type="button" value="rclX" onclick=
"rcl1(this.form)">
Y:<input name="stack" value="0" size="23" readonly> 
<input type="button" class="btn" value="undo" onclick= "undoall(this.form)"> <input type="button" class="btn" value="lastX" onclick= "lastx(this.form)"> <input type="button" class="btn" value="swap" onclick= "swapxy(this.form)">   X:<input name= "display" value="0" size="23"> 
<input type="button" class="btn" value=" sin " onclick= "sin(this.form)"> <input type="button" class="btn" value="asin " onclick= "asin(this.form)"> <input type="button" class="btn" value=" PI " onclick= "pix(this.form)"> <input type="button" class="btn" value=" 1/x " onclick= "onebyx(this.form)"> <input type="button" class="btn" value=" y^x " onclick= "powxy(this.form)"> <input type="button" class="btn" value=" log " onclick= "log10(this.form)"> <input type="button" class="btn" value=" E " onclick= "addChar(this.form, "E")">
<input type="button" class="btn" value=" cos " onclick= "cos(this.form)"> <input type="button" class="btn" value="acos" onclick= "acos(this.form)"> <input type="button" class="btn" value=" 7 " onclick= "addChar(this.form, "7")"> <input type="button" class="btn" value=" 8 " onclick= "addChar(this.form, "8")"> <input type="button" class="btn" value=" 9 " onclick= "addChar(this.form, "9")"> <input type="button" class="btn" value=" / " onclick= "divide(this.form)"> <input type="button" class="btn" value=" E- " onclick= "addChar(this.form, "E-")">
<input type="button" class="btn" value=" tan " onclick= "tan(this.form)"> <input type="button" class="btn" value="atan " onclick= "atan(this.form)"> <input type="button" class="btn" value=" 4 " onclick= "addChar(this.form, "4")"> <input type="button" class="btn" value=" 5 " onclick= "addChar(this.form, "5")"> <input type="button" class="btn" value=" 6 " onclick= "addChar(this.form, "6")"> <input type="button" class="btn" value=" * " onclick= "multiply(this.form)"> <input type="button" class="btn" value=" x! " onclick= "factx(this.form)">
<input type="button" class="btn" value=" ^2 " onclick= "square(this.form)"> <input type="button" class="btn" value=" sqrt " onclick= "sqrtx(this.form)"> <input type="button" class="btn" value=" 1 " onclick= "addChar(this.form, "1")"> <input type="button" class="btn" value=" 2 " onclick= "addChar(this.form, "2")"> <input type="button" class="btn" value=" 3 " onclick= "addChar(this.form, "3")"> <input type="button" class="btn" value=" - " onclick= "subtract(this.form)">  
<input type="button" class="btn" value=" e^x " onclick= "expx(this.form)"> <input type="button" class="btn" value=" ln " onclick= "lnx(this.form)"> <input type="button" class="btn" value=" 0 " onclick= "addChar(this.form, "0")"> <input type="button" class="btn" value=" . " onclick= "addChar(this.form, ".")"> <input type="button" class="btn" value=" +/- " onclick= "changeSign(this.form)"> <input type="button" class="btn" value=" + " onclick= "add(this.form)">  
mode: <input type="button" class="btn" name="mode" value=" rad " onclick="changedegrad(this)"> <input type="button" class="btn" value=" C " onclick= "cx(this.form)"> <input type="button" class="btn" value=" <- " onclick= "deleteChar(this.form)"> <input type="button" class="btn" value=" pop " onclick= "popStackDisplay(this.form)"> <input type="button" class="bigbtn" value=" Enter " name=" enter " onclick="enterx(this.form)">
     </form>
     
<form name="kbdfrom" onkeypress="javascript:chkkey(event)"> <textarea cols="76" rows="4" name="dummy" readonly onclick="this.style.backgroundColor="#BDBDBD"" onmouseout= "this.style.backgroundColor="#FFFFFF""> For keyboard usage leave mouse cursor on this field and click once. Keys: 0-9.=numbers, return=enter, c=+/-, C=clear, s=swap, d=<-, p=pop, ^=y^x, l=ln, e=e^x, r=1/x </textarea> </form>
   

   
rpnjcalc was written by Guido Socher, guido at linuxfocus dot org, Copyright: GPL </body>

</html>


      </source>