	var NaNMM = false
	var NaNXppm = false
	var NaNXmgm3 = false

function convert(form) {
	var outputField = document.outputForm.elements[0]
	var defined = form.defined.value
	var measuredIn = form.measuredIn.value
	var Nav = 22.71108 // dm3/mol
	var densityAmbientAir = 1.2929 // kg/m3
	var densityWater = 1.0 // kg/m3
	var MMh2o = 18.02 // g/mol
	var significanceMM = 0
	var significanceXppm = 0
	var significanceXmgm3 = 0
	var significance = 0
	var MM = document.getElementById("txtFieldMM").value
	var Xppm = document.getElementById("txtFieldXppm").value
	var Xmgm3 = document.getElementById("txtFieldXmgm3").value
	var emptyField

	significanceMM = countSignificantDigits(MM)
	if (MM.length == 0) {emptyField = true}
	else {emptyField = false}
	var MM = NumberPlus(MM)
	if((NaNMM==false && isNaN(MM)) && !emptyField) {
		spotWrongInput('MM', 'ON')
		NaNMM = true
	}
	else if((NaNMM==true && !isNaN(MM)) || (emptyField && NaNMM==true)) {
		spotWrongInput('MM', 'OFF')
		NaNMM = false
	}
	
	significanceXppm = countSignificantDigits(Xppm)
	if (Xppm.length == 0) {emptyField = true}
	else {emptyField = false}
	var Xppm = NumberPlus(Xppm)
	if(!NaNXppm && isNaN(Xppm) && !emptyField) {
		spotWrongInput('Xppm', 'ON')
		NaNXppm = true
	}
	else if(NaNXppm && !isNaN(Xppm) || emptyField) {
		spotWrongInput('Xppm','OFF')
		NaNXppm = false
	}
	
	significanceXmgm3 = countSignificantDigits(Xmgm3)
	if (Xmgm3.length == 0) {emptyField = true}
	else {emptyField = false}
	var Xmgm3 = NumberPlus(Xmgm3)
	if(!NaNXmgm3 && isNaN(Xmgm3) && !emptyField) {
		spotWrongInput('Xmgm3', 'ON')
		NaNXmgm3 = true
	}
	else if(NaNXmgm3 && !isNaN(Xmgm3) || emptyField) {
		spotWrongInput('Xmgm3','OFF')
		NaNXmgm3 = false
	}

//	document.getElementById("txtFieldXmgm3").value = 
	
	if (defined=="Weight") {
		if (significanceXppm) significance = significanceXppm
		else if (significanceXmgm3) significance = significanceXmgm3
	}	
	else if (significanceMM) {
		if (significanceXppm) significance = Math.min(significanceMM, significanceXppm)
		else if (significanceXmgm3) significance = Math.min(significanceMM, significanceXmgm3)
	}
	
	if (significance < 3 || isNaN(significance)) significance = 3

	if(MM || (defined == 'Weight')) {
		if(Xppm) {
			if((defined == 'Volume' || defined == 'Mole') && (measuredIn == 'Air')) {
				var Xmgm3 =	Xppm * MM / Nav
				outputField.value = Xmgm3.toPrecision(significance)
			}
			else if(defined == 'Weight' && measuredIn == 'Air') {
				var Xmgm3 = Xppm * densityAmbientAir
				outputField.value = Xmgm3.toPrecision(significance)
			}
			else if(defined == 'Volume' && measuredIn == 'Water') {
				var Xmgm3 = Xppm * MM / Nav / 1.0e11 
				outputField.value = Xmgm3.toPrecision(significance)
			}
			else if(defined == 'Mole' && measuredIn == 'Water') {
				var Xmgm3 = Xppm * MM * densityWater * 1000 / MMh2o
				outputField.value = Xmgm3.toPrecision(significance)
			}
			else if(defined == 'Weight' && measuredIn == 'Water') {
				var Xmgm3 = Xppm * densityWater * 1000
				outputField.value = Xmgm3.toPrecision(significance)
			}
		}
		else if(Xmgm3) {
			if((defined == 'Volume' || defined == 'Mole') && (measuredIn == 'Air')) {
				var Xppm = Xmgm3 * Nav / MM
				outputField.value = Xppm.toPrecision(significance)
			}
			else if(defined == 'Weight' && measuredIn == 'Air') {
				var Xppm = Xmgm3 / densityAmbientAir 
				outputField.value = Xppm.toPrecision(significance)
			}
			else if(defined == 'Volume' && measuredIn == 'Water') {
				var Xppm = Xmgm3 * Nav * 1.0e11 / MM
				outputField.value = Xppm.toPrecision(significance)
			}
			else if(defined == 'Mole' && measuredIn == 'Water') {
				var Xppm = Xmgm3 * MMh2o / MM / densityWater / 1000
				outputField.value = Xppm.toPrecision(significance)
			}
			else if(defined == 'Weight' && measuredIn == 'Water') {
				var Xppm = Xmgm3 / densityWater / 1000
				outputField.value = Xppm.toPrecision(significance)
			}
		}
		else {
			outputForm.elements[0].value = ""
		}
	}
	else {
		outputForm.elements[0].value = ""
	}
}

function spotWrongInput(input, spotSwitch){
	if (spotSwitch=='ON') {
		document.getElementById("labelSymbol" + input).style.color = 'red'
		document.getElementById("labelUnit" + input).style.color = 'red'
		document.getElementById("txtField" + input).style.borderColor = "red"
		document.getElementById("txtField" + input).style.color = "red"
	}
	else if (spotSwitch=='OFF'){
		document.getElementById("labelSymbol" + input).style.color = 'black'
		document.getElementById("labelUnit" + input).style.color = 'black'
		document.getElementById("txtField" + input).style.borderColor = "black"
		document.getElementById("txtField" + input).style.color = "black"
	}
}


function disableMM() {
	var defined = document.entryForm.defined.value
	if(defined == "Weight") {
		document.getElementById("selectGas").disabled = true
		document.getElementById("labelMM").style.color = 'gray'
		document.getElementById("labelSymbolMM").style.color = 'gray'
		document.getElementById("labelSymbolMM").style.cursor = 'text'
		document.getElementById("labelUnitMM").style.color = 'gray'
		document.getElementById("txtFieldMM").style.borderColor = "gray"
		document.getElementById("txtFieldMM").disabled = true
	}
	else if(defined!="Weight" && !NaNMM) {
		document.getElementById("selectGas").disabled = false
		document.getElementById("labelMM").style.color = 'black'
		document.getElementById("labelSymbolMM").style.color = 'black'
		document.getElementById("labelSymbolMM").style.cursor = 'pointer'
		document.getElementById("labelUnitMM").style.color = 'black'
		document.getElementById("txtFieldMM").style.borderColor = "black"
		document.getElementById("txtFieldMM").disabled = false
	}
	else if(defined!="Weight" && NaNMM) {
		document.getElementById("selectGas").disabled = false
		document.getElementById("labelMM").style.color = 'black'
		document.getElementById("labelSymbolMM").style.color = 'red'
		document.getElementById("labelSymbolMM").style.cursor = 'pointer'
		document.getElementById("labelUnitMM").style.color = 'red'
		document.getElementById("txtFieldMM").style.borderColor = "red"
		document.getElementById("txtFieldMM").disabled = false
	}	
}

function showProperUnits(unitToConvert) {
	var Xppm = document.entryForm.elements[5]
	var Xmgm3 = document.entryForm.elements[7]
	if (unitToConvert == "ppm" && Xppm.value !== "") {
		var newText = document.createTextNode("mg/m")
		var newSup = document.createTextNode("3")
		var newTextElem = document.createElement("span")
		var newSupElem = document.createElement("sup")
		newSupElem.appendChild(newSup)
		newTextElem.appendChild(newText)
		newTextElem.appendChild(newSupElem)
		var oldChild = document.getElementById("units").childNodes[0]
		document.getElementById("units").replaceChild(newTextElem, oldChild)
		document.entryForm.radio1.checked=true

		document.getElementById('txtFieldXmgm3').value = ""
		spotWrongInput('Xmgm3', 'OFF')
		NaNXmgm3 = false
	}
	if (unitToConvert == "mgm3" && Xmgm3.value !== "") {
		var newText = document.createTextNode("ppm")
		var newTextElem = document.createElement("span")
		newTextElem.appendChild(newText)
		var oldChild = document.getElementById("units").childNodes[0]
		document.getElementById("units").replaceChild(newTextElem, oldChild)
		document.entryForm.radio2.checked=true
		
		document.getElementById('txtFieldXppm').value = ""
		spotWrongInput('Xppm', 'OFF')
		NaNXppm = false
	}
}

function NumberPlus(string) {
	if (!string) return null
	stringLength = string.length
	stringUpperCase = string.toUpperCase()
	if (stringUpperCase.charAt(stringLength-1)=='E' && stringUpperCase.lastIndexOf('E',stringLength-2)==-1) {
		string = string.substring(0, string.length-1)
	}
	if (!(isNaN(Number(string)))) {return Number(string)}
	else if (string == ".") return 0
	else if (string == "+") return 0
	else if (string == "-") return 0
	return Number.NaN
}

function countSignificantDigits(string) {
	if (!string) return null	
	var counterSignificance = 0
	var prefixZero = true
	var numDigits = string.length
	for (i=0; i<numDigits; i++) {
		if (string.charAt(i).toUpperCase()=="E") {return counterSignificance}
		else if	(!(isNaN(Number(string.charAt(i))))) {
			counterSignificance++
			if (prefixZero==true) {
				if (Number(string.charAt(i))>0) {prefixZero = false}
				else {counterSignificance = 0}
			}
		}
	}
	return counterSignificance
}

function selectValue(e) {
	var target
	if (!e) var e = window.event
	if (e.target) target = e.target
	else if (e.srcElement) target = e.srcElement
	if (target.nodeType == 3) // defeat Safari bug
		target = target.parentNode
	while (!(target.tagName=="TD"||target.tagName=="TH")){
		if (target.tagName=="BODY") return null;
		target = target.parentNode
	}
	if (target.tagName=="TD"||target.tagName=="TH") {
		var nextToTarget = target.nextSibling
		if (nextToTarget.tagName=="TD"){
			for(i=0; i<nextToTarget.childNodes.length; i++) {
				if (nextToTarget.childNodes[i].tagName=="INPUT") {
					nextToTarget = nextToTarget.childNodes[i]
					nextToTarget.select()
					break
				}
			}
		}
	}
}