/*
example
input = {
	"unit": "st,lbs",
	"unitTexbox1": "box1",
	"unitTexbox2": "box2",
	"unitTexbox3": ""
}

outputs = {
	"list": [
		{
			"unit": "lbs",
			"unitTexbox1": "box3",
			"unitTexbox2": "",
			"unitTexbox3": ""
		},
		{
			"unit": "kgs",
			"unitTexbox1": "box4",
			"unitTexbox2": "",
			"unitTexbox3": ""
		}
	]
}

*/

function UnitConverter(input, outputs)
{
	this.unit = input.unit;
	this.inputTextBoxes = [];
	this.outputs = outputs;

	var inputIDs = input.ids;
	for (x in inputIDs)
	{
		this.inputTextBoxes.push(document.getElementById(inputIDs[x]));
		
		var unitConverter = this;
		this.inputTextBoxes[x].onchange =
		this.inputTextBoxes[x].onkeyup = function (event)
		{
			if (!event)
			{
				event = window.event;
			}
			unitConverter.convert();
		};
	}
}

UnitConverter.prototype.convert = function ()
{
	for (x in this.outputs)
	{
		if (this.unit != this.outputs[x].unit)
		{
			var conversionKey = this.unit + '=>' + this.outputs[x].unit;
			convertUnit(this.inputTextBoxes, this.outputs[x], conversionKey);
		}
	}
}

function convertUnit(input, output, conversionKey)
{
	var inputValue1 = 0;
	if (input[0].value.length > 0)
		inputValue1 = parseFloat(input[0].value);
	var inputValue2 = 0;
	if (input.length > 1 && input[1].value.length > 0)
		inputValue2 = parseFloat(input[1].value);
	var outputValue1;
	var outputValue2;
	
	if (inputValue1 != 0 || inputValue2 != 0)
	{
		switch (conversionKey)
		{
			case "ft,in=>m":
				outputValue1 = Math.round(((inputValue1 / 3.2808399) + (inputValue2 / 39.3700787)) * 10)/10;
				document.getElementById(output.ids[0]).value = outputValue1;
				break;
			case "m=>ft,in":
				outputValue1 = Math.floor(inputValue1 * 3.2808399);
				outputValue2 = Math.round((inputValue1 - (outputValue1 / 3.2808399)) * 39.3700787);
				document.getElementById(output.ids[0]).value = outputValue1;
				document.getElementById(output.ids[1]).value = outputValue2;
				break;
			case "st,lbs=>kgs":
				outputValue1 = Math.round(((inputValue1 * 6.35029318) + (inputValue2 * 0.45359237)) * 10)/10;
				document.getElementById(output.ids[0]).value = outputValue1;
				break;
			case "st,lbs=>lbs":
				outputValue1 = (inputValue1 * 14) + inputValue2;
				document.getElementById(output.ids[0]).value = outputValue1;
				break;
			case "kgs=>st,lbs":
				outputValue1 = Math.floor(inputValue1 / 6.35029318);
				outputValue2 = Math.round((inputValue1 - (outputValue1 * 6.35029318)) / 0.45359237);
				document.getElementById(output.ids[0]).value = outputValue1;
				document.getElementById(output.ids[1]).value = outputValue2;
				break;
			case "kgs=>lbs":
				outputValue1 = Math.round(inputValue1 / 0.45359237);
				document.getElementById(output.ids[0]).value = outputValue1;
				break;
			case "lbs=>st,lbs":
				outputValue1 = Math.floor(inputValue1 / 14);
				outputValue2 = inputValue1 - (outputValue1 * 14);
				document.getElementById(output.ids[0]).value = outputValue1;
				document.getElementById(output.ids[1]).value = outputValue2;
				break;
			case "lbs=>kgs":
				outputValue1 = Math.round(inputValue1 * 0.45359237 * 10)/10;
				document.getElementById(output.ids[0]).value = outputValue1;
				break;
		}
	}
}
