	function verify(f)
		{
		var msg;
		var empty_fields = "";
		var errors = "";

		// Microsoft Internet Explorer 3.0x can't determine if field contains number,
		// can only determine if field is blank or not.
		if (is_msie())
			{
			var field;

			for (var i = 0; i < f.elements.length; i++)
				{
				field = f.elements[i];
				if (field.kind == "text")
					{
					if (isblank(field.value) == true)
						{
						alert("The \"" + field.name + "\" field requires a number.");
						field.focus();
						return false;
						}
					}
				}
			msg = "";
			return CalcLosses(f);
			}

		// Netscapes' handling is more elegant, so continue below.
//		for (var i = 0; i < f.elements.length; i++)
		for (var i = 0; i < f.length; i++)
			{
			var e = f.elements[i];
			if (((e.type == "text") || (e.type == "textarea")) && !e.optional)
				{
				if ((e.value == null) || (e.value == "") || isblank(e.value))
					{
					empty_fields += "\n      " + e.name;
					continue;
					}
				if (e.numeric || (e.min != null) || (e.max != null))
					{
					var v = parseFloat(e.value);
					if (isNaN(v) ||
						((e.min != null) && (v < e.min)) ||
						((e.max != null) && (v > e.max)))
						{
						errors += "- The field " + e.name + " must be a number";
						if (e.min != null)
							errors += " that is greater than " + e.min;
						if (e.max != null)
							errors += " and less than " + e.max;
						else if (e.max != null)
							errors += " that is less than " + e.max;
						errors += ".\n";
						}
					}
				}
			} // for
		if (!empty_fields && !errors)
			{
			// No errors in fields so can go ahead and calculate the form.
			return CalcLosses(f);
			}
		msg  = "_____________________________________________________________\n\n";
		msg += "The form was not submitted because of the following error(s).\n";
		msg += "Please correct these error(s) and click calculate again.\n";
		msg += "_____________________________________________________________\n\n";
		if (empty_fields)
			{
			msg += "- The following required field(s) are empty:"
				+ empty_fields + "\n";
			if (errors)
				msg += "\n";
			}
		msg += errors;
		alert(msg);
		return false;
		}

	function is_msie()
		{
		var BrowserType=navigator.userAgent;
		if (BrowserType.indexOf("MSIE") == 25)
			{
			if (BrowserType.indexOf("4.") == 8)
				return false;
			else
				return true;
			}
		return false;
		}

	function isblank(s)
		{
		for (var i = 0; i < s.length; i++)
			{
			var c = s.charAt(i);
			if ((c != ' ') && (c != '\n') && (c != '\t') )
				return false;
			}
		return true;
		}

	function GetOption(f, n)
		{
		for (var i = 0; i < f.elements.length; i++)
			{
			var field = f.elements[i];
			if (field.name == n)
				{
				for (var j = 0; j < field.length; j++)
					{
					if (field.options[j].selected)
						return field.options[j].value;
					}
				}
			}
		return -1;
		}

	function CalcLosses(f)
		{
		var CostPerKeg = parseFloat(f.CostPerKeg.value);
		var NumKegsWk = parseFloat(f.NumKegsWk.value);
		var RetailPrice = parseFloat(f.RetailPrice.value);
		var LostSold = parseFloat(f.LostSold.value);
		var CostPerOz = CostPerKeg / 1984;
		var LossPerKeg = 1984 - (1984 * (parseFloat(f.PercentYield.value) / 100));

		f.WholeLossKeg.value = RoundToNearestCent(LossPerKeg * CostPerOz);
		f.WholeLossWeek.value = RoundToNearestCent(NumKegsWk * parseFloat(f.WholeLossKeg.value));
		f.WholeLossMonth.value = RoundToNearestCent(4.3 * parseFloat(f.WholeLossWeek.value));
		f.RetailLossKeg.value = RoundToNearestCent(RetailPrice * LostSold);
		f.RetailLossWeek.value = RoundToNearestCent(NumKegsWk * parseFloat(f.RetailLossKeg.value));
		f.RetailLossMonth.value = RoundToNearestCent(4.3 * parseFloat(f.RetailLossWeek.value));
		f.TotalLossMonth.value = RoundToNearestCent(parseFloat(f.RetailLossMonth.value) + parseFloat(f.WholeLossMonth.value));
		f.TotalLossYear.value = RoundToNearestCent(12 * parseFloat(f.TotalLossMonth.value));
		}

	function RoundToNearestCent(num)
		{
//			var fl = Math.floor(100 * num) / 100;
//			var ce = Math.ceil(100 * num) / 100;
//			return (fl == ce) ? num :
//				((num - fl) < (num - ce)) ? fl : ce;
		return Math.round(100 * num) / 100;
//		return Math.round(num);
		}

	// -->
