
var Convert = {};

Convert.init = function() {
	//used for debugging - set to true in debugging mode
	try {	
		//reset selects 
		Convert.resetFormFields(); 
		
		Convert.addConvertFunctionality();	
		
		Convert.addConvertTempFunctionality();	
		
		Convert.addConvertCubicFunctionality();
	} 
	catch (ex){ Lib.errHandler(ex); }	
}

Convert.resetFormFields = function () {
	try {
		var selects = document.getElementsByTagName("select");
		for(var i=0;i< selects.length; i++) {
			selects[i].selectedIndex=0;		
		}
		
		var inputs = document.getElementsByTagName("input");
		for(var i=0;i< inputs.length; i++) {
			if(inputs[i].getAttribute("type") =="text") { inputs[i].value="";	}
		}
	} 
	catch (ex){ Lib.errHandler(ex); }	
}

Convert.addConvertFunctionality = function() {
	var allConversionForms = Lib.getElementsByClassName("convertor", "div");
	  
  	for (var i=0;i<allConversionForms.length; i++) {
		var thisButton = document.getElementById(allConversionForms[i].id + "_button");
		thisButton.parentId = allConversionForms[i].id; 
		thisButton.onclick = function () { Convert.doConversion (this); return false; };
	    Lib.eventCache.add(thisButton, "click", function () { Convert.doConversion (this); return false; }, false);
  	}
}

Convert.addConvertTempFunctionality= function() {
	var thisButton = document.getElementById("temperature_button");
	thisButton.onclick = function () { Convert.temperature(); return false; };
	Lib.eventCache.add(thisButton, "click", function () { Convert.temperature(); return false; }, false);
}

Convert.addConvertCubicFunctionality= function() {
	var thisButton = document.getElementById("volume_button");
	thisButton.onclick = function () { Convert.cubicConvert(); return false; };
	Lib.eventCache.add(thisButton, "click", function () { Convert.cubicConvert(); return false; }, false);
}

Convert.doConversion = function(myButton) {
	try {
		var id = myButton.parentId;
	
		var inputValue = document.getElementById(id+'_value').value;
		var baseUnit = document.getElementById(id+'_from').value;
		var targetUnit = document.getElementById(id+'_to').value;
		var resultField = document.getElementById(id+'_results');
	
		if(baseUnit=="notSelected" || targetUnit == "notSelected") { resultField.value=""; return; }
		var theAnswer = (inputValue * baseUnit)/targetUnit;
	
	    if (isNaN(theAnswer)) { resultField.value = Convert.invalidInputText;  } 
		else {  resultField.value = Math.round(theAnswer*100)/100; }
	} 
	catch (ex){ Lib.errHandler(ex); }	
}

Convert.temperature = function() {
	try{
		var answer;
		//determine what we're converting to
	  	if (document.getElementById('temperature_to_c').checked) { var convertTo = "celsius";  }
	   	else if (document.getElementById('temperature_to_f').checked) {  var convertTo = "fahrenheit";  }
		else { return; }
	    var inputValue = document.getElementById('temperature_value').value;
	 	
		//check if a radio button has been selected and a value has been entered
	 	 if (convertTo && inputValue) {	
		 	//convert celsius to fahrenheit
		 	if (convertTo == "celsius")	{ answer = (inputValue/5) *9 +32; }
			//convert fahrenheit to celsius
			else { answer = (inputValue -32) /9 *5; }
	  		//round out the answer
	  		var roundedAnswer = (Math.round(answer * 100) / 100);
			var invalidOutput = isNaN(roundedAnswer);
			
			//write the answer to the result field
	    	if (invalidOutput) {  document.getElementById('temperature_results').value = Convert.invalidInputText; } 
			else {  document.getElementById('temperature_results').value = roundedAnswer; }
	 	}
	} 
	catch (ex){ Lib.errHandler(ex); }	
}

Convert.cubicConvert = function () {
	try {
		var whatToDo = document.getElementById('volume_from').value;
		var inputValue = parseFloat(document.getElementById('volume_value').value);
		var answer; 
		if (whatToDo=="feet")	{ answer = inputValue * 0.0283168; }
	 	else if (whatToDo=="meter") { answer = inputValue * 35.31472482; }
		else { document.getElementById('volume_results').value="";  return; }
	
		var roundedAnswer = (Math.round(answer * 100) / 100);
		var invalidOutput = isNaN(roundedAnswer);
			
		//write the answer to the result field
		 if (invalidOutput) {  document.getElementById('volume_results').value = Convert.invalidInputText; } 
		else {  document.getElementById('volume_results').value = roundedAnswer; }
	} 
	catch (ex){ Lib.errHandler(ex); }	
}


Lib.addEvent(window, "load", Convert.init);
Lib.eventCache.add(window, "load", Convert.init, false);


