var unitArray = new Array();
unitArray[0] = new setArrayData('8_fluid ounce', '2.957353e-05');
unitArray[1] = new setArrayData('8_pint', '0.0004731765');
unitArray[2] = new setArrayData('8_quart', '0.000946353');
unitArray[3] = new setArrayData('8_gallon', '0.003785412');
unitArray[4] = new setArrayData('2_milliliter', '1e-06');
unitArray[5] = new setArrayData('2_liter', '0.001');
unitArray[6] = new setArrayData('8_pound', '0.0004731765');
unitArray[7] = new setArrayData('8_fluid dram', '1.8483e-06');

function getX(obj) {
	var x = obj.offsetLeft;
	var tmp = obj.offsetParent;
	while (tmp != null) {
		x += tmp.offsetLeft;
		tmp = tmp.offsetParent;
	}
	return x;
}

function getY(obj) {
	var y = obj.offsetTop;
	var tmp = obj.offsetParent;
	while (tmp != null) {
		y += tmp.offsetTop;
		tmp = tmp.offsetParent;
	}
	return y;
}

function roundOff(value, significantFigures) {
	var scientificNotation = false;
	var display = displaySigFigs(value, significantFigures, -999, scientificNotation);
	var sigFig = new SignificantFigures(display);
	return display;
}

function setArrayData(categoryUniqueName, referenceFactor, offset) {
	this.categoryUniqueName = categoryUniqueName;
	this.referenceFactor = referenceFactor;
	this.offset = offset;
}

function compute(unitArray, categoryUniqueName, value) {
	var value = value.toString();
	var factor = 1;
	var significantFigures = 4;
	for ( var i = 0; i < unitArray.length; i++ ) {
		if ( categoryUniqueName == unitArray[i].categoryUniqueName ) {
			factor = (unitArray[i].referenceFactor)*value;
		}
	}
	for( i = 0; i < unitArray.length; i++ ) {
		value = factor/unitArray[i].referenceFactor;
		value = roundOff(value, significantFigures);
		valStrTmp = value.toString();
		if(valStrTmp.charAt(valStrTmp.length - 1) == '.' || valStrTmp.charAt(valStrTmp.length - 1) == ',') {
			valStrTmp = valStrTmp.substring(0, valStrTmp.length - 1);
			value = valStrTmp;
		}
		value = value.toString();
		document.forms["convertForm"].elements[i].value = value;
	}
}

function numeralsOnly(evt) {
	 evt = (evt) ? evt : event;
	 var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode : ((evt.which) ? evt.which : 0));
	 if (charCode > 31 && (charCode < 48 || charCode > 57) && (charCode != 13 && charCode != 3 && charCode != 46 && charCode != 45)) {
		  alert("You can only enter numbers and decimal separator in this field.");
		  return false;
	 }
	 return true;
}

function refresh(unitArray) {
	if(unitArray[0].categoryUniqueName == '29_kelvin') 	{
		categoryUniqueName = 'celsius';
		computeTemperature(categoryUniqueName, document.forms["convertForm"].elements[1].value);
	} else if(unitArray[0].categoryUniqueName == '2_liter per kilometer') {
		categoryUniqueName = '2_liter per kilometer';
		computeFuelConsumption(categoryUniqueName, document.forms["convertForm"].elements[0].value);
	} else {
		compute(unitArray, unitArray[0].categoryUniqueName, document.forms["convertForm"].elements[0].value);
	}
}

function checkKeyPressed(evt) {
	if(numeralsOnly(evt)) {
		evt = (evt) ? evt : event;
		var charCode = (evt.charCode) ? evt.charCode : ((evt.which) ? evt.which : evt.keyCode);
		if (charCode == 13 ) { return false; }
	} else {
		return false;
	}
}


