// Known bugs:
//	- kilo to nano returns 9999.999999 or something. Relates to value of CTn?
//	- one foot 'approx' 12 inches?

aWeight = [
	['Metric'],
	['nanograms','nanogram',0.000000001],
	['micrograms','microgram',0.000001],
	['milligrams','milligram',0.001],
	['grams','gram',1],
	['kilograms','kilogram',1000,0],
	['tonnes','tonne',1000000],
	[''],
	['Imperial'],
	['ounces','ounce',28.3495],
	['pounds','pound',453.6,1],
	['stones','stone',6350],
	['short tons','short ton',1102500],
	['long tons','long ton',984300]
	]

aLength = [
	['Metric'],
	['nanometres','nanometre',0.000000001],
	['micrometres','micrometre',0.000001],
	['millimetres','millimetre',0.001],
	['centimetres','centimetre',0.01],
	['metres','metre',1,0],
	['kilometres','kilometre',1000],
	[''],
	['Imperial'],
	['inches','inch',0.0254],
	['feet','foot',0.3048,1],
	['yards','yard',0.9144],
	['miles','mile',1609.3]
	]

function convert(){
	var CF = document.getElementById('convertFrom');
	var CT = document.getElementById('convertTo');
	var CFn = oArray[CF.selectedIndex][2];
	var CTn = oArray[CT.selectedIndex][2];


	if(!CFn){
		CF.focus();
		return(alert('Please select a unit to convert from.'));
		}

	if(!CTn){
		CT.focus();
		return(alert('Please select a unit to convert to.'));
		}

	var nInput = document.getElementById('num')
	var numbers = /^\d+(\.\d+)?$/

	if(!numbers.test(nInput.value)){
		nInput.focus()
		return(alert('Please enter a number (no commas) to convert.\n\nExample:\n\t3.14'))
		}
	else	{
		var n = parseFloat(nInput.value)
		}

	var rawResult = n * CFn / CTn

	var result = rawResult * 1000000
	result = Math.round(result)
	result = result / 1000000

	var approx = (rawResult == result) ? '' + result : 'approximately ' + result

	var CFunit = oArray[CF.selectedIndex][(n != 1) ? 0 : 1]

	if(result == 0){
		approx = 'to small an amount to convert to'
		}

	var CTunit = oArray[CT.selectedIndex][(result != 1) ? 0 : 1]

	var resultNode = document.createTextNode(n + ' ' + CFunit + ' is ' + approx + ' ' + CTunit + '.')

	var rh = document.getElementById('resultHere')

	while(rh.childNodes.length > 0){
		rh.removeChild(rh.childNodes[0])
		}

	if(CTunit == CFunit){
		var pre1 = document.createTextNode('Perhaps unsurprisingly, ')
		var post1 = document.createTextNode(' Do you really need a computer to work this out?')

		rh.appendChild(pre1)
		rh.appendChild(resultNode)
		rh.appendChild(post1)
		}
	else	{
		rh.appendChild(resultNode)
		}
	}

function populate(){
	which = document.getElementById('dealing').selectedIndex
	oArray = [aWeight,aLength][which]

	for(i = 0; i < 2; i ++){
		var CFT = document.getElementById(i == 0 ? 'convertFrom' : 'convertTo')

		while(CFT.childNodes.length > 0){
			CFT.removeChild(CFT.childNodes[0])
			}

		for(j in oArray){
			var tOption = document.createElement('option')

			if(oArray[j][3] == i){
				tOption.selected = 'selected'
				}

			var spacer = oArray[j][1] ? '     ' : ''

			var tNode = document.createTextNode(spacer + oArray[j][0])

			tOption.appendChild(tNode)

			CFT.appendChild(tOption)
			}
		}
	}
