var ingredients = new Array();

function Ingredient(rank, unscaledAmount, unscaledUnit) {
	this.rank = rank;
	this.unscaledAmount = unscaledAmount;
	this.unscaledUnit = unscaledUnit;
	return this;
}

function scaleIngredients() {
	var servings = parseFloat(document.getElementById("servings").value);
	var scaler = servings/unscaledServings;

	for (var i = 0; i < ingredients.length; i++) {
		var ingredient = ingredients[i];
		document.getElementById("amount" + ingredient.rank).innerHTML = formatAmount(ingredient.unscaledAmount * scaler);
	}
}

function formatAmount(amount) {
	var result = "";
	var fractionalPortion = amount - parseInt(amount);
	if (parseInt(amount) >= 1)
		result = Math.floor(amount);
	// Since there's no way to round it to two decimal places, multiply it by 100 and cut off the remaining decimals.
	if (fractionalPortion != 0)
		switch (Math.round(fractionalPortion * 100)) {
			case 6:
				result += " 1/16";
				break;
			case 13:
				result += " 1/8";
				break;
			case 17:
				result += " 1/6";
				break;
			case 25:
				result += "&frac14;";
				break;
			case 33:
				result += " 1/3";
				break;
			case 38:
				result += " 3/8";
				break;
			case 50:
				result += "&frac12;";
				break;
			case 63:
				result += " 5/8";
				break;
			case 67:
				result += " 2/3";
				break;
			case 75:
				result += "&frac34;";
				break;
			case 83:
				result += " 5/6";
				break;
			case 88:
				result += " 7/8";
				break;
			default:
				if (amount < 1) {
					var s = fractionalPortion.toString();
					if (s.indexOf(".") + 3 < s.length)
						s = s.substring(0, s.indexOf(".") + 3);
					result += s;
				} else
					result += "." + Math.round(fractionalPortion * 100);
				break;
		}
	return result;
}

