//------------------------------------------------------
// This function applies the appropriate conversion factor
// to the input value and displays the result. Also fills
// the unit name boxes with the appropriate values.
//------------------------------------------------------
function Convert(form) {
// get the indexes of the selected options
var i = form.toUnits.selectedIndex;
var j = form.fromUnits.selectedIndex;
// Get the selected from- and to-units names
var toUnits = form.toUnits.options[i].text;
var fromUnits = form.fromUnits.options[j].text;
// Get the input value to convert
var fromValue = form.fromValue.value;
// Catenate the from- and to-units strings to form the conversion factor index
var conversionFactor = conversionFactors[fromUnits + toUnits];
// Do the conversion
var tmpValue = fromValue * conversionFactor;
// Split the result into its integer and decimal fraction parts
tmpString = new String(tmpValue);
tmpValues = new Array();
tmpValues = tmpString.split (".");
// Just display the integer if there's no decimal fraction
if (tmpValues[1] == null) {
// Display a "tiny value" string if the integer contains e-notation
if (tmpValues[0].lastIndexOf("e") != -1) {
form.toValue.value = '0.000000...';
} else {
form.toValue.value = tmpValues[0];
}
} else {
// Display a "tiny value" string if the fraction contains e-notation
if (tmpValues[1].lastIndexOf("e") != -1) {
form.toValue.value = '0.000000...';
} else {
// Get rid of tiny fractions (probably just floating point noise)
var fracLength = tmpValues[1].length;
if (fracLength > 8) {
tmpValues[1] = tmpValues[1].substring(0, 8);
}
// If the fraction is now zero, just display the integer
if (tmpValues[1] == '00000000') {
form.toValue.value = tmpValues[0];
} else {
// Truncate trailing zeroes from the fraction
while (tmpValues[1].substring(tmpValues[1].length - 1, tmpValues[1].length) == 0) {
tmpValues[1] = tmpValues[1].substring(0, tmpValues[1].length - 1);
}
// Display integer.fraction
form.toValue.value = tmpValues[0] + "." + tmpValues[1];
}
}
}
// Display the from- and to-units strings
FillToUnitsBox(form, i);
FillFromUnitsBox(form, j);
return true;
}
//---------------------------------------------------------
// Adds elements to the select list. Uses the values
// hash in the appropriate conversions_xxxxx.js file
//---------------------------------------------------------
function CreateList(form) {
var counter = 0;
for (var key in values) {
oNewOption = new Option();
oNewOption.text = key;
oNewOption.value = values[key];
if (counter > 0) {
document.write("");
}
else {
document.write("");
}
counter += 1;
}
}
//----------------------------------------------------------------------------
// Standard Functions
//----------------------------------------------------------------------------
function ClearValues(form) {
form.toValue.value = "";
var i = form.toUnits.selectedIndex;
var j = form.fromUnits.selectedIndex;
FillToUnitsBox(form, i);
FillFromUnitsBox(form, j);
}
function FillFromUnitsBox(form, selectedIndex) {
var fromUnitName = "";
form.fromUnitName.value = form.fromUnits.options[selectedIndex].text;
}
function FillToUnitsBox(form, selectedIndex) {
var toUnitName = "";
form.toUnitName.value = form.toUnits.options[selectedIndex].text;
}
function CopyValue() {
window.alert("in here");
window.clipboardData.setData('Text', YahooConvert.toValue.value);
}