Virtual Calc98
< !-- -->Sorry, you need a Javascript enabled browser to run this.
< !-- Copyright (c) Flow Simulation Limited, 2000, 2002
var A = 0;
var y = 0;
var d = 0;
var g = 0;
var u = 0;
var D = true;
var C = 0;
var L = false;
var j = 0;
var o = 14;
var t = 12;
var c = 3;
var N = 12;
var R = false;
var e = false;
var B = 'degrees';
var J = false;
var p = new V(N);
var F;
var v;
var k;
var K;
var P;
var l;
var x;
var G;
function Lb()
{
var M = location.search.substring(1, location.search.length).split('&');
for(w=0; w < M.length; w++) {
var q = M[w].split('=');
var name = q[0];
var l = q[1];
if(name == "value") {
Kb(l);
}
if(name == "bgcolor") {
if(l.charAt(0) >= '0' && l.charAt(0) <= '9') document.bgColor = "#" + l;
else document.bgColor = l;
}
if(name == "form") {
F = l;
}
if(name == "input") {
v = l;
}
}
if(F && v && opener) {
Kb(opener.document[F][v].value);
}
ob(d);
}
function Kb(sVal)
{
var l = parseFloat(sVal);
if(l == l && !isNaN(l)) d = l;
}
function gb()
{
this.l = 0;
this.op = '';
}
function V(P)
{
for (w=0; P > w; w++) this[w] = new gb();
}
function cb(l, op)
{
if(u == N) return false;
for(w=u; w>0; w--)
{
p[w].l = p[w-1].l;
p[w].op = p[w-1].op;
}
p[0].l = l;
p[0].op = op;
u++;
return true;
}
function vb(k)
{
if(0 >= u) return false;
op = p[0].op;
var b = p[0].l;
if(k && u == 1) {
if (op == '+') d = b * (1.0 + d/100);
else if(op == '-') d = b * (1.0 - d/100);
else if(op == '*') d = b * d / 100;
else if(op == '/') d = b / d * 100;
}
else {
if (op == '+') d = b + d;
else if(op == '-') d = b - d;
else if(op == '*') d = b * d;
else if(op == '/') d = b / d;
}
if (op == 'pow') d = Math.pow(b, d);
else if(op == 'root') d = Math.pow(b, 1/d);
for(w=0; u > w; w++)
{
p[w].l = p[w+1].l;
p[w].op = p[w+1].op;
}
u--;
return (op != '(');
}
function W()
{
var H = document.calc.display.value;
var O = parseFloat(H);
if(isNaN(O) || O != O)
alert('Not a valid number: "' + H + '"');
else
d = O;
ob(d);
return d;
}
function ob(l)
{
d = l;
var H = '' + d;
if( H.indexOf('N') >= 0 ||
H.indexOf('x') >= 0 ||
d != d ||
isNaN(d) ) {
eb();
return;
}
var w = H.indexOf('e');
if(w >= 0)
{
var f = H.substring(w+1, H.length);
if(w > t) w = t;
H = H.substring(0, w);
H += 'e' + f;
}
else
{
var s = Math.abs(d);
var h = Math.floor(s);
var z = s - h;
var m = o - ('' + h).length - 1;
if(!D && y > 0) m = y;
var I = '1000000000000000000000000000000000'.substring(0, m+1);
if(h < 10000000000000) h = Math.floor(Math.floor(s * I + .5) / I);
if(0 > d) H = '-' + h;
else H = ' ' + h;
var Q = '0000000000000000000000000000000000' + Math.floor(0.5 + z*I);
Q = Q.substring(Q.length - m, Q.length);
if (D || y == 0)
{
for(w=Q.length; w > 0; w--)
if(Q.charAt(w-1) != '0') break;
Q = Q.substring(0, w);
}
if(Q.length > 0) H += '.' + Q;
}
if(L)
{
if(0 > j) H += 'e' + j;
else H += 'e+' + j;
}
if(0 > H.indexOf('.') && !J)
{
if(D || C > 0) H += '.';
else H += ' ';
}
if(F && v && opener) {
opener.document[F][v].value = H;
}
document.calc.display.value = ' ' + H;
Ab(false);
e = false;
}
function eb()
{
J = true;
d = Number.NaN;
document.calc.display.value = 'Overflow eb';
Ab(false);
e = false;
}
function nb()
{
u = 0;
kb();
}
function kb()
{
J = false;
L = false;
Y();
ob(0);
}
function T()
{
Y();
if(cb(0, '(')) ob(d);
else eb();
}
function S()
{
Y();
while(vb());
ob(d);
}
function sb(op)
{
if (op=='+' || op=='-' ) return 1;
else if(op=='*' || op=='/' ) return 2;
else if(op=='pow' || op=='root') return 3;
else return 0;
}
function Ib(op)
{
Y();
if(u>0 && sb(p[0].op) >= sb(op)) vb();
if(cb(d, op)) ob(d);
else eb();
}
function Y()
{
if(L)
d = d * Math.exp(j * Math.LN10);
D = true;
L = false;
C = 0;
y = 0;
}
function Nb()
{
Y();
while(vb(R));
ob(d);
}
function Rb(x)
{
if(0 > j) x = -x;
if(A > c) return;
j = j * 10 + x;
A++;
}
function X(x)
{
if(0 > d) x = -x;
if(A > o-1) return;
if(C > 0) {
C = C * 10;
d = d + (x/C);
y++;
}
else d = d * 10 + x;
A++;
}
function mb(x)
{
if(D) {
d = 0;
A = 1;
D = false;
}
if(x==0 && A==0) {
ob(d);
return;
}
if(L) Rb(x);
else X(x);
ob(d);
}
function U()
{
if(J) return;
if (L) j = -j;
else {
Y();
d = -d;
}
ob(d);
}
function qb()
{
if(D) {
d = 0;
A = 1;
D = false;
}
if(C == 0) C = 1;
ob(d);
}
function wb()
{
if(R) { ab(); return; }
if(D || L) return;
L = true;
j = 0;
A = 0;
C = 0;
ob(d);
}
function Ob(K)
{
if (B == 'radians') return K;
else if(B == 'grads' ) return (Math.PI*K/200);
else return (Math.PI*K/180);
}
function fb(K)
{
if (B == 'radians') return K;
else if(B == 'grads' ) return (K*200/Math.PI);
else return (K*180/Math.PI);
}
function Mb()
{
Y();
if(e) {
if(R) ob(Math.log(d + Math.sqrt(d * d + 1.0)));
else ob(0.5*(Math.exp(d) - Math.exp(-d)));
}
else {
if(R) ob(fb(Math.asin(d)));
else ob(Math.sin(Ob(d)));
}
}
function ib()
{
Y();
if(e) {
if(R) ob(Math.log(d + Math.sqrt(d * d - 1.0)));
else ob(0.5*(Math.exp(d) + Math.exp(-d)));
}
else {
if(R) ob(fb(Math.acos(d)));
else ob(Math.cos(Ob(d)));
}
}
function Gb()
{
Y();
if(e) {
if(R) ob(0.5*Math.log((1.0 + d)/(1.0 - d)));
else ob((Math.exp(d) - Math.exp(-d))/(Math.exp(d) + Math.exp(-d)));
}
else {
if(R) ob(fb(Math.atan(d)));
else ob(Math.tan(Ob(d)));
}
}
function hb()
{
Y();
if(R) ob(Math.exp(d*Math.LN2));
else ob(Math.log(d)/Math.LN2);
}
function Cb()
{
Y();
if(R) ob(Math.exp(d*Math.LN10));
else ob(Math.log(d)/Math.LN10);
}
function Db()
{
Y();
if(R) ob(Math.exp(d));
else ob(Math.log(d));
}
function Ab(G)
{
R = G;
if(R)
{
document.mainkeypad.src = 'images/mainshifted__223x156.gif';
document.funckeypad.src = 'images/funcshifted__219x108.gif';
}
else
{
document.mainkeypad.src = 'images/mainkeypad__223x156.gif';
document.funckeypad.src = 'images/funckeypad__219x108.gif';
}
}
function Pb(hyper)
{
e = hyper;
}
function Hb() { Y(); g += d; ob(d); }
function Z() { Y(); ob(g); }
function Qb() { Y(); g = d; ob(d); }
function Eb() { Y(); var swap = d; ob(p[0].l); p[0].l = swap; }
function ab() { Y(); ob(Math.PI); }
function Bb() { Y(); ob(Math.random()); }
function rb() { alert('This function is not available in the web version'); }
function yb() { alert('This function is not available in the web version'); }
function db() { alert('This function is not available in the web version'); }
function tb() { alert('Units and constants are not available in the web version'); }
function jb() { alert('Units and constants are not available in the web version'); }
function xb() { alert('The backspace is not yet available in the web version'); }
function Jb() { Y(); ob(Math.sqrt(d)); }
function Sb() { Y(); ob(d * d); }
function ub()
{
if(R) { Fb(); return; }
Y();
ob(1.0/d);
}
function bb()
{
if(R) Ib('root');
else Ib('pow');
}
function Fb() {
Y();
var x = d;
d = 1;
if(0 > x || x > 200 || x != Math.floor(x)) eb();
else {
for(w=1; x >= w; w++) d *= w;
ob(d);
}
}
function lb(e)
{
var r = window.event ? e.keyCode : e.which;
if (r >= 48 && r <= 57)
{
r = r - 48;
mb(r);
}
else if (r == 40) T();
else if (r == 41) S();
else if (r == 42) Ib('*');
else if (r == 43) Ib('+');
else if (r == 45) Ib('-');
else if (r == 47) Ib('/');
else if (r == 46) qb();
else if (r == 61) Nb();
else if (r == 27) nb();
else if (r == 69) wb();
else if (r == 101) wb();
}
function zb()
{
if(R) { alert("jCalc98 - Copyright (c) Flow Simulation Limited, 2000, 2002"); Ab(false); }
else open('jcalchelp.html', 'help');
}
function pb()
{
open('http://www.calculator.org/', 'calcpage');
}
// -->
< !-- Compressed by JavaSquish -->