<!--

var BASICMATH = "<tr><td><a class=mnu href='javascript:showbasiccalc();'>Basic Math</a></td></tr>";
var ROUNDING = "<tr><td><a class=mnu href='javascript:showspecialcalc(2);'>Rounding</a></td></tr>";
var LCM = "<tr><td><a class=mnu href='javascript:showspecialcalc(3);'>Least Common Multiple</a></td></tr>";
var GCD = "<tr><td><a class=mnu href='javascript:showspecialcalc(4);'>Greatest Common Divisor</a></td></tr>";
var PERCENTAGE = "<tr><td><a class=mnu href='javascript:showperccalc();'>Percentage</a></td></tr>";
var RATIO = "<tr><td><a class=mnu href='javascript:showratiocalc();'>Ratio/Proportion</a></td></tr>";
var STATISTICS = "<tr><td><a class=mnu href='javascript:showspecialcalc(7);'>Mean/Median/Mode/Range</a></td></tr>";

var BLANK = "<td class=tde>&nbsp;</td>";
var CLRH = "<tr>" + BLANK + BLANK + "<td><input type=button value=\"Help\" class=c6 onClick=\"showHelp();\" onmouseover=\"chngclr(this, '#0000ff')\" onmouseout=\"chngclr(this, '#000000')\"></td><td><input type=button value=\"C\" class=c4 onClick=\"clearall();\" onmouseover=\"chngclr(this, '#0000ff')\" onmouseout=\"chngclr(this, '#000000')\"></td></tr>";
var CLR = "<tr>" + BLANK + BLANK + BLANK + "<td><input type=button value=\"C\" class=c4 onClick=\"clearall();\" onmouseover=\"chngclr(this, '#0000ff')\" onmouseout=\"chngclr(this, '#000000')\"></td></tr>";
var CLRPH = "<tr>" + BLANK + "<td><input type=button value=\"Help\" class=c6 onClick=\"showHelp();\" onmouseover=\"chngclr(this, '#0000ff')\" onmouseout=\"chngclr(this, '#000000')\"></td><td><input title=\"Percent Increase/Decrease\" type=button value=\"&plusmn;\" class=c2 onClick=\"showPrec(4);\" onmouseover=\"chngclr(this, '#0000ff')\" onmouseout=\"chngclr(this, '#000000')\"></td><td><input type=button value=\"C\" class=c4 onClick=\"clearall();\" onmouseover=\"chngclr(this, '#0000ff')\" onmouseout=\"chngclr(this, '#000000')\"></td></tr>";
var N1  = "<tr><td><input type=button value=\"7\" class=c2 onClick=\"clk('7');\" onmouseover=\"chngclr(this, '#0000ff')\" onmouseout=\"chngclr(this, '#000000')\"></td><td><input type=button value=\"8\" class=c2 onClick=\"clk('8');\" onmouseover=\"chngclr(this, '#0000ff')\" onmouseout=\"chngclr(this, '#000000')\"></td><td><input type=button value=\"9\" class=c2 onClick=\"clk('9');\" onmouseover=\"chngclr(this, '#0000ff')\" onmouseout=\"chngclr(this, '#000000')\"></td>";
var N2  = "<tr><td><input type=button value=\"4\" class=c2 onClick=\"clk('4');\" onmouseover=\"chngclr(this, '#0000ff')\" onmouseout=\"chngclr(this, '#000000')\"></td><td><input type=button value=\"5\" class=c2 onClick=\"clk('5');\" onmouseover=\"chngclr(this, '#0000ff')\" onmouseout=\"chngclr(this, '#000000')\"></td><td><input type=button value=\"6\" class=c2 onClick=\"clk('6');\" onmouseover=\"chngclr(this, '#0000ff')\" onmouseout=\"chngclr(this, '#000000')\"></td>";
var N3  = "<tr><td><input type=button value=\"1\" class=c2 onClick=\"clk('1');\" onmouseover=\"chngclr(this, '#0000ff')\" onmouseout=\"chngclr(this, '#000000')\"></td><td><input type=button value=\"2\" class=c2 onClick=\"clk('2');\" onmouseover=\"chngclr(this, '#0000ff')\" onmouseout=\"chngclr(this, '#000000')\"></td><td><input type=button value=\"3\" class=c2 onClick=\"clk('3');\" onmouseover=\"chngclr(this, '#0000ff')\" onmouseout=\"chngclr(this, '#000000')\"></td>";
var N4  = "<tr><td><input type=button value=\"0\" class=c2 onClick=\"clk('0');\" onmouseover=\"chngclr(this, '#0000ff')\" onmouseout=\"chngclr(this, '#000000')\"></td>";
var DEC = "<td><input type=button value=\".\" class=c2 onClick=\"chkdot();\" onmouseover=\"chngclr(this, '#0000ff')\" onmouseout=\"chngclr(this, '#000000')\"></td>";
var EQ  = "<td><input type=button value=\"=\" class=c2 onClick=\"showresult();\" onmouseover=\"chngclr(this, '#0000ff')\" onmouseout=\"chngclr(this, '#000000')\"></td>";
var COMMA  = "<td><input type=button value=\",\" class=c4 onClick=\"clk(',');\" onmouseover=\"chngclr(this, '#0000ff')\" onmouseout=\"chngclr(this, '#000000')\"></td>";
var QST  = "<td><input type=button value=\"?\" class=c4 onClick=\"clk('?');\" onmouseover=\"chngclr(this, '#0000ff')\" onmouseout=\"chngclr(this, '#000000')\"></td>";

var DA  = "<td><input type=button value=\"/\" class=c2 onClick=\"clk('/');\" onmouseover=\"chngclr(this, '#0000ff')\" onmouseout=\"chngclr(this, '#000000')\"></td></tr>";
var DAD  = "<td><input disabled=\"disabled\" type=button value=\"/\" class=c2d></td></tr>";
var MA  = "<td><input type=button value=\"x\"  class=c2 onClick=\"clk('x');\" onmouseover=\"chngclr(this, '#0000ff')\" onmouseout=\"chngclr(this, '#000000')\"></td></tr>";
var MAD  = "<td><input disabled=\"disabled\" type=button value=\"x\" class=c2d></td></tr>";
var SA  = "<td><input type=button value=\"-\"  class=c2 onClick=\"clk('-');\" onmouseover=\"chngclr(this, '#0000ff')\" onmouseout=\"chngclr(this, '#000000')\"></td></tr>";
var SAD  = "<td><input disabled=\"disabled\" type=button value=\"-\" class=c2d></td></tr>";
var AA  = "<td><input type=button value=\"+\" class=c2 onClick=\"clk('+');\" onmouseover=\"chngclr(this, '#0000ff')\" onmouseout=\"chngclr(this, '#000000')\"></td></tr>";
var AAD  = "<td><input disabled=\"disabled\" type=button value=\"+\" class=c2d></td></tr>";
var OKBTN = "<input type=button value=\"ok\" class=ok onClick=\"gocalc();\" onmouseover=\"chngclr(this, '#0000ff')\" onmouseout=\"chngclr(this, '#000000')\">";

var PERCEQ  = "<td><input title=\"Percent Of\" type=button value=\"%=\" class=c2 onClick=\"showPrec(1);\" onmouseover=\"chngclr(this, '#0000ff')\" onmouseout=\"chngclr(this, '#000000')\"></td></tr>";
var EQPERC  = "<td><input title=\"What Percent?\" type=button value=\"=%\" class=c2 onClick=\"showPrec(2);\" onmouseover=\"chngclr(this, '#0000ff')\" onmouseout=\"chngclr(this, '#000000')\"></td></tr>";
var EQFRACT  = "<td><input title=\"To Fraction\" type=button value=\"=&#190;\" class=c2 onClick=\"showPrec(3);\" onmouseover=\"chngclr(this, '#0000ff')\" onmouseout=\"chngclr(this, '#000000')\"></td></tr>";

var LCMGCDTR = "<tr><td class=gcd1>FACTOR</td><td class=gcd2>NUM1,NUM2</td></tr>";
var GCDTR = "<tr><td class=gcd1>FACTOR</td><td class=gcd3>NUM1,NUM2</td></tr>";
var LCMTR = "<tr><td class=gcd1>FACTOR</td><td class=gcd1>NUM1,NUM2</td></tr>";

var curcmd = 1;
var calcobj = null;

var helpText = new Array(10);
helpText[0] = "No help";
helpText[1] = "No Help";
helpText[2] = "Example:<br>To round the number 645 to the nearest 100's enter 645 <b>,</b> 100 and then select '<b>=</b>' sign.";
helpText[3] = "Example:<br>To find the least common multiple (LCM) of 2 numbers 15 and 18 enter 15 <b>,</b> 18 and select '<b>=</b>' sign.";
helpText[4] = "Example:<br>To find the greatest common divisor (GCD) of 2 numbers 15 and 18 enter 15 <b>,</b> 18 and select '<b>=</b>' sign.";
helpText[5] = "<span class=sbtn>%=</span>To find 25% of 50 enter 25 <b>,</b> 50 and then select this button.";
helpText[5] = helpText[5] + "<br><br><span class=sbtn>=%</span>To find 25 is what percent of 50 enter 25 <b>,</b> 50 and then select this button.";
helpText[5] = helpText[5] + "<br><br><span class=sbtn>=&#190;</span>To convert 25% to a fraction enter 25 and select this button.<br>OR<br>To convert 0.25 to a fraction enter 0.25 and select this button.";
helpText[5] = helpText[5] + "<br><br><span class=sbtn>&nbsp;&plusmn;&nbsp;</span>To find the percentage increase of decrease use this button.<br>Example:If the original price is $70 and the sale price is $60, to find percentage decrease enter 70,60 and then select this button.";
helpText[6] = "Example 1:<br> If the boys to girls ratio in a class is 2 to 3 and if there are 25 students in that class, then how many boys are there and how many girls are there?<br>To solve this problem enter 2/3,25 and select '<b>=</b>' sign.";
helpText[6] += "<br><br>Example 2:<br> If the boys to girls ratio in a class is 3 to 4 and if there are 15 boys in that class then how many girls are there?<br>To solve this problem enter 3/4,15/? and select '<b>=</b>' sign.";
helpText[6] += "<br><br>Example 3:<br> If the boys to girls ratio in a class is 4 to 5 and if there are 15 girls in that class then how many boys are there?<br>To solve this problem enter 4/5,?/15 and select '<b>=</b>' sign.";
helpText[7] = "Example:<br>To find mean, median, mode and range of numbers enter 3,5,2,3,5,3,1 and select '<b>=</b>' sign.";
var caltitle = new Array(10);
caltitle[0] = "";caltitle[0] = "";caltitle[1] = "Basic Math";caltitle[2] = "Rounding";caltitle[3] = "Least Common Multiple";caltitle[4] = "Greatest Common Divisor";caltitle[5] = "Percentage";
caltitle[6] = "Ratio/Proportion";caltitle[7] = "Mean/Median/Mode/Range";

function clk(ch)
{
    var o = document.getElementById("numdsp");
    if (o != null)
    {    	
        var str = o.innerHTML;
        if (str.length == 0 && (ch == '/' || ch == 'x' || ch == '+' || ch == ','))
        {
            return;
        }
        else if (ch == '-' || ch == '+' || ch == 'x' || ch == '/' || ch == ',')
        {
            var prevch = str.charAt(str.length-1);
            if (prevch == '-' || prevch == '+' || prevch == 'x' || prevch == '/' || prevch == ',')
            {
                if (ch != '-') { return; }
                else if (prevch == '-' || prevch == '+') {return;}
            }
        }
        
        o.innerHTML = str + ch;
    }
}

function clearall()
{
    var o = document.getElementById("numdsp");
    if (o != null)
    {    	
        o.innerHTML = "";
    }
    var p = document.getElementById("txtdsp");
    if (p != null)
    {    	
        p.innerHTML = "";
    }
}

function getRoundGraph(num,rnd,rnum)
{
    if (num == rnum) {return "";}
    var grphstr = "<center><table border=0 cellspacing=1 cellpadding=1 width=200 bgcolor=#000000 style='border:1px solid #afffaf;'>";
    var pct = Math.round(Math.abs(rnum-num)*100/rnd);
    if (rnum > num) { pct = 100 - pct;}
    
    var x = rnum-rnd;
    var y = rnum;
    var xclr = "#ff0000";
    var yclr = "#0000ff";
    if (rnum < num) {x = rnum; y = rnum+rnd;xclr = "#0000ff";yclr="#ff0000"}
    grphstr = grphstr + "<tr><td style='height:14px; width:" + pct + "%; font-size:12px;text-align:center;background-color:" + xclr + ";color:#ffffff'>" + (num-x) + "</td><td style='height:14px; width:100%; font-size:12px;text-align:center;background-color:" + yclr + ";color:#ffffff'>" + (y-num) + "</td></tr>";
    grphstr = grphstr + "</table></center>";
    grphstr += "<center><table border=0 cellspacing=1 cellpadding=1 width=200 bgcolor=#000000>";
    grphstr = grphstr + ("<tr><td class=c5>" + x + "</td><td class=c5 align=right>" + y + "</td></tr>");
    grphstr = grphstr + "</table></center>";
    return grphstr;
}


function calcRounding(dspobj)
{
    var str = dspobj.innerHTML;
    var strarr = str.split(",");
    var num = eval(strarr[0]);
    var rnd = 100;
    if (strarr.length > 1) {rnd = eval(strarr[1]); if (rnd < 2) {rnd = 100;}}
    rnum = num + rnd/2.0;
    rnum = rnd * Math.floor(rnum/rnd);
    dspobj.innerHTML = rnum;
    var grph = getRoundGraph(num,rnd,rnum);
    var restxt = "<b>" + num + "</b> rounded to the nearest <b>" + rnd + "</b> is <b>" + rnum + "</b><br><br>" + grph;
    showresulttext(restxt);
}

function getGCD(n1, n2)
{
    var min = Math.min(n1,n2);
    if (min == 1 || min == 0) 
    {
        return min;
    }
    
    var max = Math.max(n1,n2);
    if (min == max) 
    {
        return min;
    }
    
    while (min != 0)
    {
        q = max % min;
        max = min;
        min = q;
    }
    
    return max;
    
}


function showFactors(n1,n2,gcd, suptr)
{    
    var d = 2;    
    var str = ""; if (gcd < 2) {str = "1,";}
    while (gcd > 1)
    { 
        if (gcd % d == 0) {gcd = gcd/d; str = str + d + ",";}
        else d++;
    }
    
    var strarr = str.split(",");
    var tblstr = "<table border=0 cellpadding=2 cellspacing=2>";
    var factstr = "";
    for (var i = 0; i < strarr.length;i++)
    {
        var x = LCMGCDTR;
        if (i == strarr.length-1) {x=suptr;}
        x = x.replace("FACTOR", strarr[i]);
        x = x.replace("NUM1", n1);
        x = x.replace("NUM2", n2);
        tblstr += x;
        n1 = n1/strarr[i];
        n2 = n2/strarr[i];
        if (i == strarr.length-2)
        {
            factstr += strarr[i];
            if(curcmd == 3)
            {
                factstr += ("x" + n1 + "x" + n2 );
            }
        }
        else if (i < strarr.length-1)
        {
            factstr += (strarr[i] + "x");
        }
    }
    tblstr += "<tr><td colspan=2 class=gcd1>" + factstr + "</td></tr>";
    tblstr += "</table>";
    
    return tblstr;
    
}


function calcGCD(dspobj)
{
    var str = dspobj.innerHTML;
    var strarr = str.split(",");
    var n1 = eval(strarr[0]);
    var n2 = 1;
    if (strarr.length > 1) {n2 = eval(strarr[1]);}
    rnum = getGCD(n1,n2);
    dspobj.innerHTML = rnum;
    var restxt = "Greatest common divisor of <b>" + n1 + "</b> and <b>" + n2 + "</b> is <b>" + rnum + "</b>";
    restxt += "<br>" + showFactors(n1,n2,rnum, GCDTR);
    showresulttext(restxt);
}

function calcLCM(dspobj)
{
    var str = dspobj.innerHTML;
    var strarr = str.split(",");
    var n1 = eval(strarr[0]);
    var n2 = 1;
    if (strarr.length > 1) {n2 = eval(strarr[1]);}
    var gcd = getGCD(n1,n2);
    var rnum=gcd;
    if (rnum != 0) {rnum = (n1 * n2)/rnum;}
    dspobj.innerHTML = rnum;
    var restxt = "Least common multiple of <b>" + n1 + "</b> and <b>" + n2 + "</b> is <b>" + rnum + "</b>";
    restxt += "<br>" + showFactors(n1,n2,gcd, LCMTR);
    showresulttext(restxt);
}


function calcHowmany(dspobj, r1, r2, r3)
{
    var grp = 1;
    r3 = eval(r3);r1=eval(r1);r2=eval(r2);
    grp = r3/(r1+r2);
    var n1 = r1*grp;
    var n2 = r2*grp;
    dspobj.innerHTML = n1 + "," + n2;
    var restxt = "We know the ratio is " + r1 + " to " + r2 + "<br>";
    restxt += ("Add them to find the sum: i.e. ratiosum: " + r1 + "+" + r2 + " = <b>" + (r1+r2) + "</b><br>");
    restxt += ("Divide the total with the ratiosum: i.e. <span class=gcd1>" + r3 + "/" + (r1+r2) + " = " + grp + "</span><br>");
    restxt += ("Now multiply this number with each of the ratios to get how many of each are there:<br>");
    restxt += ("First items: <span class=gcd1>" + r1 + "x" + grp + " = " + (r1*grp) + "</span><br>");
    restxt += ("Second items: <span class=gcd1>" + r2 + "x" + grp + " = " + (r2*grp) + "</span><br>");
    showresulttext(restxt);
}

function calcRatio(dspobj)
{
    var str = dspobj.innerHTML;
    var strarr = str.split(",");
    if (strarr.length < 2) {showresulttext("Invalid input.<br>Please see the help.");return;}
    else if (strarr[1].length < 1) {showresulttext("Invalid input.<br>Please see the help.");return;}
    
    var n1arr = strarr[0].split("/");
    var r1 = n1arr[0];
    var r2 = n1arr[1];
    
    var n2arr = strarr[1].split("/");
    var r3 = n2arr[0];
    var r4 = "";
    if (n2arr.length > 1) {r4 = n2arr[1];}
    else if (str.indexOf('?') >= 0) {showresulttext("Invalid input.<br>Please see the help.");return;}
    
    if (r4.length == 0) {return calcHowmany(dspobj, r1,r2,r3);}
    if (str.indexOf('?') == -1) {showresulttext("Invalid input.<br>Please see the help.");return;}
    
    var ans = "";
    var restxt = "The ratios can be solved as shown below:<br>";
    restxt += (r1 + "/" + r2 + " = " + r3 + "/" + r4 + "<br>");
    restxt += "Cross multiply<br>";
    restxt += (r1 + " x " + r4 + " = " + r2 + " x " + r3 + "<br>");
    if (r2 == "?" || r3 == "?")
    {
        restxt += ("Rewrite as : " +  + r2 + " x " + r3 + " = " + r1 + " x " + r4 +"<br>");
        if (r2 == "?")
        {
           restxt += (r2 + " = " + r1 + " x " + r4 + " / " + r3 + "<br>");
           ans = eval(r1 + "*" + r4 + "/" + r3);
           restxt += ("? = <span class=gcd1>" + ans + "</span>");
        }
        else
        {
           restxt += (r3 + " = " + r1 + " x " + r4 + " / " + r2 + "<br>");
           ans = eval(r1 + "*" + r4 + "/" + r2);
           restxt += ("? = <span class=gcd1>" + ans + "</span>");
        }
    }
    else
    {
        if (r1 == "?")
        {
           restxt += (r1 + " = " + r2 + " x " + r3 + " / " + r4 + "<br>");
           ans = eval(r2 + "*" + r3 + "/" + r4);
           restxt += ("? = <span class=gcd1>" + ans + "</span>");
        }
        else
        {
           restxt += (r4 + " = " + r2 + " x " + r3 + " / " + r1 + "<br>");
           ans = eval(r2 + "*" + r3 + "/" + r1);
           restxt += ("? = <span class=gcd1>" + ans + "</span>");
        }
    }
    
    dspobj.innerHTML = ans;
    showresulttext(restxt);
}

function sortnum(a,b)
{
return a - b
}

function calcMean(dspobj)
{
    var str = dspobj.innerHTML;
    var numarr = str.split(",");
    numarr.sort(sortnum);
    var sum = 0;
    var numbers = "";
    var narr = new Array(numarr.length);
    for (var i = 0; i < numarr.length;i++)
    {
        sum += eval(numarr[i]);
        numbers += (numarr[i] + ",");
        narr[i] = 0;
    }
    
    var prevnum = numarr[0];
    var previdx = 0;
    for (var k = 1; k < numarr.length;k++)
    {
        if (prevnum == numarr[k]) {narr[previdx] += 1;}
        else {previdx = k; prevnum = numarr[k];}
    }
    
    var max = narr[0];
    previdx = 0;
    for (k = 1; k < narr.length;k++)
    {
        if (max < narr[k]) {previdx = k; max=narr[k];}
    }
    
    numbers = numbers.substr(0,numbers.length-1);
    var mean = sum/numarr.length; mean=Math.round(mean*100);mean=mean/100;
    var range = eval(numarr[numarr.length-1] - numarr[0]);
    var median = 0;
    if (numarr.length % 2 == 1) {median = numarr[Math.floor(numarr.length/2)];}
    else {median = (eval(numarr[numarr.length/2]) + eval(numarr[numarr.length/2 - 1]))/2;}
    dspobj.innerHTML = mean;
    var restxt = "First step is to arrange the numbers from least to greatest order.<br>";
    restxt += ("<span class=gcd1>" + numbers + "</span><br>");
    restxt += ("<br>Mean is the sum of numbers/number of items: <span class=gcd1>" + sum + "/" + numarr.length + " = " + mean + "</span><br>");
    restxt += ("<br>Range is the difference between least and greatest numbers: <span class=gcd1>" +  numarr[numarr.length-1] + "-" + numarr[0] + " = " + range + "</span><br>");
    if (numarr.length % 2 == 1)
    {
    restxt += ("<br>Median is the middle number: <span class=gcd1>" + median + "</span><br>");
    }
    else
    {
    restxt += ("<br>Median is the sum of 2 middle numbers/2: <span class=gcd1>" + median + "</span><br>");
    restxt += "(as there are even number of items)<br>";
    }
    
    if (max >= 1)
    {
        restxt += ("<br>Mode is the most occurring number: <span class=gcd1>" +  numarr[previdx] + "</span><br>");
    }
    else
    {
        restxt += ("<br>Mode is the most occuring number and there is none here.<br>");
    }
    
    showresulttext(restxt);
}


function calcSpecial(cmd, dspobj)
{
    switch(cmd)
    {
        case 2: calcRounding(dspobj); break;
        case 3: calcLCM(dspobj); break;
        case 4: calcGCD(dspobj); break;
        case 6: calcRatio(dspobj); break;
        case 7: calcMean(dspobj); break;
    }
}

function toPerc(p,w, obj)
{
    var r = (p * w)/100;
    obj.innerHTML = r;
    var txt = p + "% of " + w + " is <b>" + r + "</b>";
    txt += "<br>" + p + "% is equal to " + p + "/100";
    txt += "<br>" + p + "/100 is equal to " + (p/100);
    txt += "<br> so, " + p + "% of " + w + " is " + (p/100) + " x " + w;
    return txt;
}

function whatPerc(p,w, obj)
{
    var r = (p * 100)/w;
    r = Math.round(r*100); r = r/100;
    obj.innerHTML = r;
    var txt = p + " is <b>" + r + "%</b> of " + w;
    txt += "<br>P% of " + w + " is " + p;
    txt += "<br>P/100 x " + w + " = " + p;
    txt += "<br>P/100 = " + p + "/" + w;
    txt += "<br> P = " + p + "/" + w + " x 100";
    return txt;
}

function percIncrDecr(n1, n2, obj)
{
    var diff = Math.abs(n1-n2);
    var pct = (diff/n1)*100;
    pct = Math.round(pct*100);pct = pct/100;
    obj.innerHTML = pct;
    var txt = "Original value = " + n1 + "<br>";
    txt += "New value = " + n2 + "<br>";
    if (n1 > n2)
    {
        txt += "Decrease in value is " + n1 + " - " + n2 + " = " + (n1-n2) + "<br>";
        txt += "Percent Decrease is <span class=gcd1>" + diff + "/" + n1 + " x 100 = " + pct + "%</span><br>";
    }
    else
    {
        txt += "Increase in value is " + n2 + " - " + n1 + " = " + (n2-n1) + "<br>";
        txt += "Percent Increase is <span class=gcd1>" + diff + "/" + n1 + " x 100 = " + pct + "%</span><br>";
    }
    
    return txt;
}

function toFract(p, obj)
{
    var pstr = "" + p + "";
    var pos = pstr.indexOf(".");
    var d = 100;
    var pn = p;
    var pct = "";
    if (pos >= 0)
    {
        pstr = pstr.substr(pos+1);
        var pow = pstr.length; 
        d = Math.pow(10,pow);
        pn = p * d;
    }
    else
    {
        pct = "%";
    }
    
    var gcd = getGCD(pn, d);
    var num = pn/gcd;
    var dnm = d/gcd;
    
    obj.innerHTML = num + "/" + dnm;
    var txt = p + pct + " can be written as " + pn + "/" + d;
    txt += "<br>i.e. " + p + pct + " is equal to " + pn + "/" + d;
    txt += "<br>Reduce " + pn + "/" + d + " to get " + num + "/" + dnm;
    return txt;
}


function showPrec(btn)
{
    var dspobj = document.getElementById("numdsp");
    if (dspobj == null) {return;}
    var str = dspobj.innerHTML;
    var strarr = str.split(",");
    var n1 = eval(strarr[0]);
    var n2 = 100;
    if (strarr.length > 1) {n2 = eval(strarr[1]);}       
    var restxt = "";
    switch(btn)
    {
        case 1: restxt = toPerc(n1,n2, dspobj);break;
        case 2: restxt = whatPerc(n1,n2, dspobj);break;
        case 3: restxt = toFract(n1, dspobj);break;
        case 4: restxt = percIncrDecr(n1, n2, dspobj);break;
        default:
        break;
    }
    showresulttext(restxt);
}


function showresult()
{
    var o = document.getElementById("numdsp");
    if (o != null)
    {  
        if (curcmd > 1) {calcSpecial(curcmd, o);return;}
        
        var str = o.innerHTML;
        str = str.replace(/x/g, '*');
        var ch = str.charAt(str.length-1);
        if (ch == '-' || ch == '+' || ch == '*' || ch == '/')
        {
            str = str.substring(0, str.length-1);
        }
        var val = eval(str);
        o.innerHTML = val;
    }
}


function chkdot()
{
    var o = document.getElementById("numdsp");
    if (o != null)
    {    
    	var pidx = -1;
    	var opstr = "+-x/";
        var str = o.innerHTML;
        for (var i = 0; i < 4; i++)
        {
            var idx = str.lastIndexOf(opstr.charAt(i));
            if (idx > pidx) {pidx = idx;}
        }
        
        if (pidx > 0) { str = str.substr(pidx+1); }
        
        if (str.indexOf('.') == -1)
        {
            o.innerHTML += ".";
        }
    }
}



function chngclr(element, color) {
element.style.background=color;
}



function showMainMenu()
{
    var mnuobj = document.getElementById("menudsp");
    if (mnuobj != null)
    {
        mnuobj.innerHTML ="";
        mnuobj.innerHTML = "<table border=0 cellspacing=1 cellpadding=1 bgcolor=#000000>" + BASICMATH + ROUNDING + LCM + GCD + PERCENTAGE + RATIO + STATISTICS + "</table>";
        showslow(mnuobj);
    }    
}

function showbasiccalc()
{
    curcmd = 1;
    var mnuobj = document.getElementById("menudsp");
    if (mnuobj != null)
    {
        mnuobj.innerHTML ="";
        mnuobj.innerHTML = "<table border=0 width=100%><tr><td class=help colspan=4>" + caltitle[curcmd] + "</td></tr>" + CLR + N1 + DA + N2 + MA + N3 + SA + N4 + DEC + EQ + AA + "</table>";
        showslow(mnuobj);
    }    
}

function showspecialcalc(cmd)
{
    curcmd = cmd;
    var mnuobj = document.getElementById("menudsp");
    if (mnuobj != null)
    {
        mnuobj.innerHTML ="";
        mnuobj.innerHTML = "<table border=0 width=100%><tr><td class=help colspan=4>" + caltitle[cmd] + "</td></tr>" + CLRH + N1 + DAD + N2 + MAD + N3 + SAD + N4 + COMMA + EQ + AAD + "</table>";
        showslow(mnuobj);
    }    
}

function showperccalc()
{
    curcmd = 5;
    var mnuobj = document.getElementById("menudsp");
    if (mnuobj != null)
    {
        mnuobj.innerHTML ="";
        mnuobj.innerHTML = "<table border=0 width=100%><tr><td class=help colspan=4>" + caltitle[curcmd] + "</td></tr>" + CLRPH + N1 + DA +  N2 + PERCEQ + N3 + EQPERC + N4 + DEC +  COMMA + EQFRACT + "</table>";
        showslow(mnuobj);
    }    
}

function showratiocalc()
{
    curcmd = 6;
    var mnuobj = document.getElementById("menudsp");
    if (mnuobj != null)
    {
        mnuobj.innerHTML ="";
        mnuobj.innerHTML = "<table border=0 width=100%><tr><td class=help colspan=4>" + caltitle[curcmd] + "</td></tr>" + CLRH + N1 + DA + N2 + MAD + N3 + SAD + N4 + COMMA + EQ + QST + "<tr></table>";
        showslow(mnuobj);
    }    
}

function showHelp()
{
    var mnuobj = document.getElementById("menudsp");
    if (mnuobj != null)
    {
        mnuobj.innerHTML ="";
        mnuobj.innerHTML = "<table width=100% cellspacing=3 cellpadding=3><tr><td class=help>" + helpText[curcmd] + "</td></tr><tr><td align=right>" + OKBTN + "</td></tr></table>";
        showslow(mnuobj);
    }    
}

function showresulttext(restxt)
{
    var mnuobj = document.getElementById("menudsp");
    if (mnuobj != null)
    {
        mnuobj.innerHTML ="";
        mnuobj.innerHTML = "<table width=100% cellspacing=3 cellpadding=3><tr><td class=c8>" + restxt + "</td></tr><tr><td align=right>" + OKBTN + "</td></tr></table>";
        showslow(mnuobj);
    }    
}

function gocalc()
{
    switch(curcmd)
    {
        case 2:
        case 3:
        case 4:
        case 7:
            showspecialcalc(curcmd);
            break;
        case 5:
            showperccalc();
            break;
        case 6:
            showratiocalc();
            break;
        default:
            showbasiccalc();
            break;
        
    }
}

var top = 0;var right=0;var bot = 200;var left = 0;
function showslow(obj)
{
    calcobj = obj;
    setTimeout(moveobj, 5);
}

function moveobj()
{
    if (calcobj != null)
    {        
        right += 2;
        clipRect = "rect(" + top + "px," + right + "px," + bot + "px," + left + "px)";
        calcobj.style.clip = clipRect;
        if (right <= 250) 
        { 
            setTimeout(moveobj, 5);
        }
        else
        {
           right=0;left = 0;
        }
    }
}

//-->