function convertTemperature() {
	var fromValue, toValue, fromUnitType, toUnitType, usersValue;

	usersValue = document.MainForm.userInput.value;
	usersValue = stripBad(usersValue);
	usersValue = parseFloat(usersValue);
	if (isNaN(usersValue)) {
		usersValue = 0;
	}
	document.MainForm.userInput.value = usersValue;

	fromValue = document.MainForm.convertFrom[document.MainForm.convertFrom.selectedIndex].value;
	toValue = document.MainForm.convertTo[document.MainForm.convertTo.selectedIndex].value;
	fromUnitType = document.MainForm.convertFrom.options[document.MainForm.convertFrom.selectedIndex].text;
	toUnitType = document.MainForm.convertTo.options[document.MainForm.convertTo.selectedIndex].text;

	var ConvertedTemp = convertToNewTemp(usersValue, fromValue, toValue);

	if (ConvertedTemp == "Below Absolute Zero"){
		var value = "Error: Your input cannot be below absolute zero";
	} else {
		var value = usersValue + " " + fromUnitType + " = " + ConvertedTemp + " " + toUnitType;
	}
	var answer = document.getElementById("answer");
	emptyDiv (answer);
	var para = document.createElement("p");
	answer.appendChild(para);
 	var txt = document.createTextNode(value);
 	para.appendChild(txt);
}


//-------------------------------------------------------------------------------------------------------//

function emptyDiv (divToClear){
	var i;
	while (i=divToClear.childNodes[0]){
		if (i.nodeType == 1 || i.nodeType == 3){
			divToClear.removeChild(i);
		}
	}
}

function resetAnswer() {
  	var answer = document.getElementById("answer");
	emptyDiv (answer)
	var para = document.createElement("p");
	
	answer.appendChild(para);
	var value = "";
	var txt = document.createTextNode(value);

	para.appendChild(txt);
}


function convertToNewTemp(usersInput,from_value,to_value){	

// Converts everything to kelvin first
	if (from_value == 0){
   		usersInput = usersInput + 273.15;
	} else if (from_value == 1){
		usersInput = ((usersInput - 32)/ 1.8) + 273.15;
	} else if (from_value == 2){
		usersInput = usersInput / 1.8;
	} else if (from_value == 3){
   		usersInput = (usersInput * 1.25) + 273.15;
	}

 	if (usersInput < 0){
	   	// Below absolute zero
   		return "Below Absolute Zero";
 	}

	 // Converts kelvin to requested unit
 	if (to_value == 0){
   		usersInput = usersInput - 273.15;
	} else if (to_value == 1){
   		usersInput = (1.8 * (usersInput -273.15)) + 32;
 	} else if (to_value == 2){
   		usersInput = usersInput * 1.8;
 	} else if (to_value == 3){
   		usersInput = (usersInput - 273.15) / 1.25;
 	}
 
 	// round off value
 	if (Number.prototype.toFixed) {
   		usersInput = usersInput.toFixed(7);
   		usersInput = parseFloat(usersInput);
 	}
 	else {
   		var leftSide = Math.floor(usersInput);
   		var rightSide = usersInput - leftSide;
   		usersInput = leftSide + Math.round(rightSide *10000000)/10000000;
 	}

	return usersInput;
}

function stripBad(string) {
    	for (var i=0, output='', valid="eE-0123456789."; i<string.length; i++)
 	      	if (valid.indexOf(string.charAt(i)) != -1)
    	    	output += string.charAt(i)
    	return output;
} 
