ÿþ<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>>=25@B>@ D878G5A:8E 25;8G8=</title> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <style type="text/css"> <!-- body { margin-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; background-color: #f4f3f0; } --> </style> <link href="../css/style.css" rel="stylesheet" type="text/css"> <script language="javascript1.1"> function fnBodyOnLoad() { document.frm1.txt1.focus(); document.frm1.txt1.select(); // Clear text fields document.frm1.txt1.value = ""; document.frm1.txt2.value = ""; // Ensure something is selected document.frm1.slct1.options[0].selected = true; document.frm1.slct2.options[0].selected = true; } function fnSlctOnChange(nSlct) { resultPlace = document.getElementById("resultPlh"); if( false == fnIsStrNum(document.frm1.txt1.value) ) { fnDispInvalidNum(); resultPlace.innerHTML = "n/a"; document.frm1.txt1.focus(); document.frm1.txt1.select(); } else { resultPlace.innerHTML = fnConvert(document.frm1.slct1.options[document.frm1.slct1.selectedIndex].value, document.frm1.txt1.value, document.frm1.slct2.options[document.frm1.slct2.selectedIndex].value); } } function fnTxtOnChange(nTxt) { if(1 == nTxt) { // txt1 changed fn_setLastEditedTxt(1); fnSlctOnChange(1); } else if(2 == nTxt) { // txt2 changed fn_setLastEditedTxt(2); fnSlctOnChange(2); } } --> </script> <script language="JavaScript" type="text/javascript"> <!-- var unitTypes = new Array( // format: eng name, russian name "length",";8=0", "area",";>I04L", "mass","0AA0", "volume","1J5<", "time","@5<O", "velocity","!:>@>ABL", "force","!8;0", "energy","-=5@38O", "power",">I=>ABL", "density",";>B=>ABL", "pressure","02;5=85", "current","!8;0 B>:0", "potential",">B5=F80;", "resistance","!>?@>B82;5=85", "frequency","'0AB>B0", "_temperature",""5<?5@0BC@0" ); var garrUnits = new Array( // format: name, value, category // 84 entries "m (<5B@)", 1, "length", "cm (A0=B8<5B@)", 0.01, "length", "mm (<8;;8<5B@)", 0.001, "length", "um (<8:@><5B@)", 0.000001, "length", "km (:8;><5B@)", 1000, "length", "n mile (<>@A:0O <8;O)", 1852, "length", "in (4N9<)", 0.0254, "length", "ft (DCB)", 0.3048, "length", "yd (O@4)", 0.9144, "length", "<8;O", 1609.3, "length", "kg (:8;>3@0<<)", 1, "mass", "mg (<8;;83@0<<)", 0.000001, "mass", "g (3@0<<)", 0.001, "mass", "t (B>==0)", 1000, "mass", "oz (C=F8O)", 0.02835, "mass", "lb (DC=B)", 0.454, "mass", "s (A5:C=40)", 1, "time", "min (<8=CB0)", 60, "time", "h (G0A)", 3600, "time", "d (45=L)", 86400, "time", "m2 (:204@0B=K9 <5B@)", 1, "area", "mm2 (:204@0B=K9 <8;;8<5B@)", 0.000001, "area", "cm2 (:204@0B=K9 A0=B8<5B@)", 0.0001, "area", "ha (35:B0@)", 10000, "area", "km2 (:204@0B=K9 :8;><5B@)", 1000000, "area", "in2 (:204@0B=K9 4N9<)", 0.000645, "area", "ft2 (:204@0B=K9 DCB)", 0.0929, "area", "yd2 (:204@0B=K9 O@4)", 0.836, "area", "ac (0:@)", 4050, "area", "<8;O2 (:204@0B=0O <8;O)", 2590000, "area", "m3 (:C18G5A:89 <5B@)", 1, "volume", "cm3 (:C18G5A:89 A0=B8<5B@)", 0.000001, "volume", "in3 (:C18G5A:89 4N9<)", 0.0000164, "volume", "ft3 (:C18G5A:89 DCB)", 0.0283, "volume", "yd3 (:C18G5A:89 O@4)", 0.765, "volume", "bushel (1CH5;L)", 0.0364, "volume", "l (;8B@)", 0.001, "volume", "ml (<8;;8;8B@)", 0.000001, "volume", "kl (:8;>;8B@)", 1000 , "volume", "fl oz (684:0O C=F8O)", 0.0000284, "volume", "pint (?8=B0)", 0.000568, "volume", "gallon (30;;>=)", 0.00455, "volume", "m/s (<5B@/A5:C=40)", 1, "velocity", "km/h (:8;><5B@/G0A)", 0.27, "velocity", "kn (C75;)", 0.514, "velocity", "mph (<8;L/G0A)", 0.4347, "velocity", "N (=LNB>=)", 1, "force", "kN (:8;>=LNB>=)", 1000, "force", "MN (<530=LNB>=)", 1000000, "force", "lbf (DC=B-A8;0)", 4.45, "force", "J (46>C;L)", 1, "energy", "kJ (:8;>46>C;L)", 1000, "energy", "MJ (<53046>C;L)", 1000000, "energy", "Btu (1@8B0=A:0O B5?;>20O 548=8F0)", 1060, "energy", "W (20BB)", 1, "power", "kW (:8;>20BB)", 1000, "power", "MW (<53020BB)", 1000000, "power", "Btu/G0A", 0.2930711, "power", "hp (;>H048=0O A8;0)", 746, "power", "kg/m3 (:8;>3@0<</:C18G5A:89 <5B@)", 1, "density", "t/m3 (B>==0/:C18G5A:89 <5B@)", 1000, "density", "g/m3 (3@0<</:C18G5A:89 <5B@)", 0.001, "density", "kg/l (:8;>3@0<</;8B@)", 1000, "density", "Pa (?0A:0;L)", 1, "pressure", "kPa (:8;>?0A:0;L)", 1000, "pressure", "MPa (<530?0A:0;L)", 1000000, "pressure", "mb (<8;;810@)", 100, "pressure", "psi (DC=B>2/:204@0B=K9 4N9<)", 6890, "pressure", "A (0<?5@)", 1, "current", "mA (<8;;80<?5@)", 0.001, "current", "V (2>;LB)", 1, "potential", "uV (<8:@>2>;LB)", 0.000001, "potential", "mV (<8;;82>;LB)", 0.001, "potential", "kV (:8;>2>;LB)", 1000, "potential", "MV (<5302>;LB)", 1000000, "potential", "ohm (><)", 1, "resistance", "uOhm (<8:@>><)", 0.000001, "resistance", "MOhm (<530><)", 1000000, "resistance", "Hz (35@F)", 1, "frequency", "kHz (:8;>35@F)", 1000, "frequency", "MHz (<53035@F)", 1000000, "frequency", "GHz (383035@F)", 1000000000, "frequency", "K (5;L28=)", /*k=*/"x", "_temperature", "C (&5;LA8O)", /*k=*/"x + 273.15", "_temperature", "F ($0@5=359B)", /*k=*/"( (5/9) * (x-32) ) + 273.15", "_temperature" ); function fnUnits_InitNames() { if(0 == garrstrNames) { var nLenUnits = garrUnits.length; var nNumNames = nLenUnits / 3; garrstrNames = new Array(nNumNames); for(var i = 0; i < nNumNames; i++) { garrstrNames[i] = garrUnits[i*3]; } } } function fnUnits_getValue(nNameIndex) { if( nNameIndex <= fnUnits_getNames().length && nNameIndex >= 0 ) { return garrUnits[3*nNameIndex+1]; } else { return 0; } } function fnUnits_getName(nNameIndex) { if( nNameIndex <= fnUnits_getNames().length && nNameIndex >= 0 ) { return garrUnits[3*nNameIndex]; } else { return 0; } } function fnUnits_getCat(nNameIndex) { return document.frm1.uTypes.options[document.frm1.uTypes.selectedIndex].value; } function fnUnits_IsCatSpec(nNameIndex) { if( "_" == fnUnits_getCat(nNameIndex).charAt(0) ) { return true; } else { return false; } } function fnUnits_getNames() { if(0 == garrstrNames) { fnUnits_InitNames(); } return garrstrNames; } function fn_getLastEditedTxt() { return gnLastEditedTxt; } function fn_setLastEditedTxt(nTxt) { if(1 == nTxt) { gnLastEditedTxt = 1; } if(2 == nTxt) { gnLastEditedTxt = 2; } } function fnConvert(nNameIndexOrig, strTxtOrig, nNameIndexDest) { var nfOrig = parseFloat(strTxtOrig); if(isNaN(nfOrig)) { return "n/a"; } var nTxtDest = 0; if(false == fnUnits_IsCatSpec(nNameIndexOrig) ) { nTxtDest = nfOrig * nNameIndexOrig / nNameIndexDest; } else { // Special handling category if( "_temperature" == fnUnits_getCat(nNameIndexOrig) ) { var x = nfOrig; var nKelvin = eval(nNameIndexOrig); // Ensure nKelvin >= 0 for real life constraint if(0 > nKelvin) { return "n/a"; } var chNum = fn_getLastEditedTxt() == 1 ? 2 : 1; eval("var strTempName = document.frm1.slct" + chNum + ".options[document.frm1.slct" + chNum + ".selectedIndex].text;"); if("K (5;L28=)" == strTempName) { nTxtDest = nKelvin; } else if("C (&5;LA8O)" == strTempName) { // k=x + 273.15 // k - 273.15 =x nTxtDest = nKelvin - 273.15; } else if("F ($0@5=359B)" == strTempName) { // k=((5/9)*(x-32)) + 273.15 // (k - 273.15)/(5/9)=(x-32) // ((k - 273.15)/(5/9))+32=x nTxtDest = ((nKelvin - 273.15)/(5/9)) + 32; } } } nTxtDest = fnRndToDecPlaces(nTxtDest); if(nTxtDest <= Number.POSITIVE_INFINITY && nTxtDest >= Number.NEGATIVE_INFINITY) { return nTxtDest; } else { return "n/a"; } } function fnIsCharNum(charNum) { var chararrValidNum = new Array("+", "-", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ".", "E", "e"); var narrValidNumLen = chararrValidNum.length; for(var i=0; i < narrValidNumLen; i++) { if(charNum == chararrValidNum[i]) { return true; } } return false; } function fnIsStrNum(strNum) { var nLen = strNum.length; for(var i=0; i < nLen; i++) { if(false == fnIsCharNum(strNum.charAt(i)) ) { return false; } } return true; } function fnDispInvalidNum() { alert("525@=> 7040==K9 =><5@"); } /* Used to compensate for javascript math errors due to IEEE floating-point math standards hard coded for: 6 decimal places */ function fnRndToDecPlaces(nNumber) { var nNumDecPlaces = 6; return Math.round(nNumber*Math.pow(10,nNumDecPlaces)) / Math.pow(10,nNumDecPlaces); } function fnTestConversions() { var arrstrNames = fnUnits_getNames(); var nNamesLen = arrstrNames.length; for(var i=0; i < nNamesLen; i++) { for(var j=0; j < nNamesLen; j++) { var nTextDest = fnConvert(i, "1", j); if("n/a" != nTextDest) { document.write("1 " + arrstrNames[i] + " is equal to "); document.write(fnRndToDecPlaces(nTextDest)); document.write(" " + arrstrNames[j]); document.write("<br>"); } nTextDest = null; } document.write("<br>"); } } // main() var gnLastEditedTxt = 0; var garrstrNames = 0; fnUnits_InitNames(); // fnTestConversions(); // alert("fnUnits_getNames().length=" + fnUnits_getNames().length); // --> </script> </head> <body oncontextmenu="return false" oncontext="return false"> <form name=frm1> <br> <table width="95%" border="0" align="center" cellpadding="5" cellspacing="1"> <tr bgcolor="#f4f3f0"> <td bgcolor="#f4f3f0" class="blue">"8? 25;8G8=K</td> <td><span id=uTypesPlace></span></td> </tr> <tr bgcolor="#f4f3f0"> <td colspan="2" bgcolor="#f4f3f0" class="blue"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td bgcolor="#FFFFFF"><img src="../images/spacer.gif" width="1" height="1"></td> </tr> </table></td> </tr> <tr bgcolor="#f4f3f0"> <td bgcolor="#f4f3f0" class="blue">AE>4=0O 25;8G8=0 </td> <td><input type="text" name="txt1" size="10" maxlength="20" value="" onChange="fnTxtOnChange(1);"><br><span id=typesSel1></span></td> </tr> <tr bgcolor="#f4f3f0"> <td colspan="2" class="blue"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td bgcolor="#FFFFFF"><img src="../images/spacer.gif" width="1" height="1"></td> </tr> </table></td> </tr> <tr bgcolor="#f4f3f0"> <td class="blue"> 0AG5B=0O 25;8G8=0</td> <td><span id=typesSel2></span></td> </tr> <tr bgcolor="#f4f3f0"> <td colspan="2" class="blue"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td bgcolor="#FFFFFF"><img src="../images/spacer.gif" width="1" height="1"></td> </tr> </table></td> </tr> <tr bgcolor="#f4f3f0"> <td class="blue"> 0AG5B:</td> <td bgcolor="#f4f3f0" class="blue"><span id=resultPlh></span></td> </tr> <tr bgcolor="#f4f3f0"> <td colspan="2"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td bgcolor="#FFFFFF"><img src="../images/spacer.gif" width="1" height="1"></td> </tr> </table></td> </tr> <tr bgcolor="#f4f3f0"> <td>&nbsp;</td> <td><table border="0" cellspacing="0" cellpadding="4"> <tr> <td><input name="Submit" class="button" value=" 0AAG8B0BL" type="button" onClick="fnTxtOnChange(1);"></td> <td><input name="Submit2" type="reset" class="button" value="!1@>A" onClick="fnResetVals();"></td> </tr> </table></td> </tr> </table> </form> <script language=Javascript> function fnResetVals() { document.frm1.txt1.value = ""; resultPlace = document.getElementById("resultPlh"); resultPlace.innerHTML = "n/a"; } function fnShowTypes() { var output; selName = document.getElementById("uTypesPlace"); output = "<select name=uTypes onChange=\"fnBuildTypes(this.options[this.selectedIndex].value);\">"; for(i = 0; i < unitTypes.length;i++) { output += "<option value=\"" + unitTypes[i] + "\">" + unitTypes[++i]; } output += "</select>"; selName.innerHTML = output; document.frm1.uTypes.options[0].selected; fnBuildTypes(document.frm1.uTypes.options[document.frm1.uTypes.selectedIndex].value); } function fnBuildTypes(typeName) { if(typeName == "0") return; var output; output = "<select name=\"slct%s\" size=\"1\" onChange=\"fnSlctOnChange(%s);\">"; for(i = 0; i < garrUnits.length; i+=3) { if(garrUnits[i+2] != typeName) continue; output += "<option value=\"" + garrUnits[i+1] + "\">" + garrUnits[i]; } output += "</select>"; fnBuildTypesEntity(1,output); fnBuildTypesEntity(2,output); fnTxtOnChange(1); } function fnBuildTypesEntity(num,txt) { selName = document.getElementById("typesSel" + num); selName.innerHTML = txt.replace(/%s/g,num); eval("document.frm1.slct" + num + ".options[0].selected;"); } fnShowTypes(); </script> </body> </html>