<html> <head> <!-- author: Keith Jenci --> <!-- http://www.mredkj.com --> <title>Pace Calculator</title> <script language="JavaScript"> <!-- // constants var TIME = 0; var DISTANCE = 1; var PACE = 2; var MILES = 0; var METERS = 1; var KILOMETERS = 2; // preload images var distOff = new Image; distOff.src="../images/runDistOff.gif"; var distOn = new Image; distOn.src="../images/runDistOn.gif"; var paceOff = new Image; paceOff.src="../images/runPaceOff.gif"; var paceOn = new Image; paceOn.src="../images/runPaceOn.gif"; var timeOff = new Image; timeOff.src="../images/runTimeOff.gif"; var timeOn = new Image; timeOn.src="../images/runTimeOn.gif"; function changePics(calculateFor) { document.Calc.timePic.src=timeOn.src; document.Calc.distPic.src=distOn.src; document.Calc.pacePic.src=paceOn.src; if (calculateFor==TIME) { document.Calc.timePic.src=timeOff.src; } else if (calculateFor==DISTANCE) { document.Calc.distPic.src=distOff.src; } else if (calculateFor==PACE) { document.Calc.pacePic.src=paceOff.src; } } // --> </script> <script language="JavaScript"> <!-- function calcIT() { // Time var min=document.Calc.timeM.value; var sec=document.Calc.timeS.value; var t= (min*1) + (sec/60); // Distance var d=document.Calc.distance.value; // Pace var minP=document.Calc.paceM.value; var secP=document.Calc.paceS.value; var p = (minP*1) + (secP/60); // Which result var resultValue=document.Calc.CalcWhat.options[document.Calc.CalcWhat.selectedIndex].value; if (resultValue==TIME) { // conversions (both to meters) d = distConversion(d, true); p = paceConversion(p, true); // calculate TIME and round t=d*p; min=Math.floor(t); sec=Math.round(60*(t-min)); if (sec == 60) { // to prevent 60 seconds from showing up in the seconds field min++; sec=0; } document.Calc.timeM.value=min; document.Calc.timeS.value=sec; } else if (resultValue==DISTANCE) { // conversion before (pace to meters) p = paceConversion(p, true); // calculate DISTANCE d=t/p; // conversion after (distance to desired) d = distConversion(d, false); // rounding document.Calc.distance.value=decimalPlaces(d,2); } else if (resultValue==PACE) { // conversion before (distance to meters) d = distConversion(d, true); // calculate PACE p=t/d; // conversion after (pace to desired) p = paceConversion(p, false); // rounding minP=Math.floor(p); secP=Math.round(60*(p-minP)); if (secP == 60) { // to prevent 60 seconds from showing up in the seconds field minP++; secP = 0; } document.Calc.paceM.value=minP; document.Calc.paceS.value=secP; } } // when converting distance to meters, multiply by conversion constant function distConversion(d, toMeters) { if (document.Calc.optDist[MILES].checked) { // convert miles d = (toMeters) ? (d*1609) : (d/1609); } else if (document.Calc.optDist[METERS].checked) { // already in meters } else if (document.Calc.optDist[KILOMETERS].checked) { // convert kilometers d = (toMeters) ? (d*1000) : (d/1000); } return d; } // when converting pace to meters, divide by conversion constant function paceConversion(p, toMeters) { if (document.Calc.optPace[MILES].checked) { // convert miles p = (toMeters) ? (p/1609) : (p*1609); } else if (document.Calc.optPace[METERS].checked) { // convert 400 meters p = (toMeters) ? (p/400) : (p*400); } else if (document.Calc.optPace[KILOMETERS].checked) { // convert kilometers p = (toMeters) ? (p/1000) : (p*1000); } return p; } function clearNums() { document.Calc.timeM.value=0; document.Calc.timeS.value=0; document.Calc.distance.value=0; document.Calc.paceM.value=0; document.Calc.paceS.value=0; } function decimalPlaces(val, places) { // This function returns the value // with the number of decimal places requested factor = 1; for (i=0; i<places; i++) { factor *= 10; } val *= factor; val = Math.round(val); val /= factor; return val; } // --> </script> <script language="JavaScript"> <!-- /* * defaultStuff sets the defaults. It is called by the onLoad event. */ function defaultStuff() { // set list box default to PACE document.Calc.CalcWhat.selectedIndex=2; // set option buttons to defaults document.Calc.optDist[0].checked=true; document.Calc.optPace[0].checked=true; } // --> </script> </head> <body onLoad="defaultStuff()"> <form name="Calc"> <center> <table border=1 cellpadding=10> <tr><td bgcolor=white> <!-- Embedded table --> <table border=0 cellpadding=0 cellspacing=0> <tr> <td bgcolor="#aacccc" colspan=2 align=center> <br> <font size=+1><b>Calculate for: </b></font> <select name=CalcWhat onChange="changePics(document.Calc.CalcWhat.selectedIndex)"> <option value=0>Time <option value=1>Distance <option value=2 selected>Pace </select> </td> </tr> <tr> <td bgcolor="#aacccc" colspan=2> </td> </tr> <tr> <td bgcolor=white> <img src="../images/runTimeOn.gif" name=timePic width=118 height=24 alt="TIME"> </td> <td bgcolor=white> </td> </tr> <tr> <td bgcolor=white> <input type=text name=timeM size=9> minutes </td> <td bgcolor=white> <input type=text name=timeS size=9> seconds </td> </tr> <tr> <td bgcolor="#aacccc" colspan=2> </td> </tr> <tr> <td bgcolor=white> <img src="../images/runDistOn.gif" name=distPic width=118 height=24 alt="DISTANCE"> </td> <td bgcolor=white> in <input type=radio name="optDist" value="miles" checked>Miles <input type=radio name="optDist" value="meters">Meters <input type=radio name="optDist" value="kilometers">Kilometers </td> </tr> <tr> <td bgcolor=white> <input type=text name=distance size=9> </td> <td bgcolor=white> </td> </tr> <tr> <td bgcolor="#aacccc" colspan=2> </td> </tr> <tr> <td bgcolor=white> <img src="../images/runPaceOff.gif" name=pacePic width=118 height=24 alt="PACE"> </td> <td bgcolor=white> time per <input type=radio name="optPace" value="miles" checked>Mile <input type=radio name="optPace" value="400meters">400m <input type=radio name="optPace" value="kilometers">Kilometer </td> </tr> <tr> <td bgcolor=white> <input type=text name=paceM size=9> minutes </td> <td bgcolor=white> <input type=text name=paceS size=9> seconds </td> </tr> <tr> <td bgcolor="#aacccc" colspan=2> </td> </tr> <tr> <td bgcolor=white> </td> <td bgcolor=white> </td> </tr> <tr> <td colspan=2 align=center> <input type=button value="Calculate" onClick="calcIT()"> <input type=button value="Clear" onClick="clearNums()"> </td> </tr> </table> <!-- End embedded table --> </td></tr> </table> </center> <p> </form> </body> </html>