var unitLabel;
var form;
var ENGLISH_UNIT = "english";
var STANDARD_UNIT = "metric";
var UNITS_DIV_LABLE = "units_label";
var FORM_NAME = "calculator_form";
var INCH_DIV = "inch_field";
var WEIGHT_UNIT_DIV = "weight_units";
var WEIGHT_LOSS_UNIT_DIV = "weight_loss_units";
var HEIGHT_UNIT_DIV = "height_units";
var FEET_DIMENSION = "feet";
var CM_DIMENSION = "cm";
var KG_DIMENSION = "kg";
var LBS_DIMENSION = "lbs";
var ERROR_MESSAGE_DIV = "error_message";
var BLANK = "";
var weight_dimension = LBS_DIMENSION;

/**
 * Convert weight from one dimension to another.
 * <p>
 * Works just on <code>weight_loss_calculator</code> screen.
 */
function toggleWeightLossUnits() {
	commonInit();

	var weight = form.weight;
	var weightLoss = form.weightLoss;
	if (unitLabel == ENGLISH_UNIT) {
		setDimension(true);

		if (!isBlank(weight.value) && isNum(weight.value)) {
			var num = parseFloat(form.weight.value) / 0.45359237;
			weight.value = num.toFixed(2);
		}
		if (!isBlank(weightLoss.value) && isNum(weightLoss.value)) {
			num = parseFloat(form.weightLoss.value) / 0.45359237;
			weightLoss.value = num.toFixed(2);
		}
		document.getElementById(UNITS_DIV_LABLE).innerHTML = STANDARD_UNIT;
	} else {

		setDimension(false);
		if (!isBlank(weight.value) && isNum(weight.value)) {
			num = parseFloat(form.weight.value) * 0.45359237;
			weight.value = num.toFixed(2);
		}

		if (!isBlank(weightLoss.value) && isNum(weightLoss.value)) {
			num = parseFloat(form.weightLoss.value) * 0.45359237;
			weightLoss.value = num.toFixed(2);
		}
		document.getElementById(UNITS_DIV_LABLE).innerHTML = ENGLISH_UNIT;
	}
}

/**
 * Convert weight from one dimension to another.
 * <p>
 * Works just on <code>metabolic_calculator</code> screen.
 */
function toggleMetabolicUnits() {
	commonInit();

	if (unitLabel == ENGLISH_UNIT) {

		setDimension(true);
		if (!isBlank(form.weight.value)) {
			if (isNum(form.weight.value)) {
				var num = parseFloat(form.weight.value) / 0.45359237;
				form.weight.value = num.toFixed(2);
			}
		}
		if (!isBlank(form.height.value)) {
			if (isNum(form.height.value)) {
				if (form.height.value != 0) {
					var num_tot_in = parseFloat(form.height.value) / 2.54;
					form.height.value = num_tot_in.toFixed(2);
					;
				}
			}
		}
		document.getElementById(UNITS_DIV_LABLE).innerHTML = STANDARD_UNIT;
	} else {

		setDimension(false);
		if (!isBlank(form.weight.value)) {
			if (isNum(form.weight.value)) {
				num = parseFloat(form.weight.value) * 0.45359237;
				form.weight.value = num.toFixed(2);
			}
		}
		if (!isBlank(form.height.value)) {
			if (isNum(form.height.value)) {
				if (form.height.value != 0) {
					num_tot_in = parseFloat(form.height.value) * 2.54;
					form.height.value = num_tot_in.toFixed(2);
				}
			}
		}
		document.getElementById(UNITS_DIV_LABLE).innerHTML = ENGLISH_UNIT;
	}
}

function clearErrorMessage() {
	document.getElementById(ERROR_MESSAGE_DIV).innerHTML = BLANK;
}

function commonInit() {

	unitLabel = document.getElementById(UNITS_DIV_LABLE).innerHTML;
	form = document.forms[FORM_NAME];
}

function setDimension(standardDimension) {

	var heightUnit = document.getElementById(HEIGHT_UNIT_DIV);
	var weightLossUnit = document.getElementById(WEIGHT_LOSS_UNIT_DIV);
	if (standardDimension == true) {
		document.getElementById(WEIGHT_UNIT_DIV).innerHTML = LBS_DIMENSION;
		weight_dimension = LBS_DIMENSION;
		if (heightUnit != null)
			heightUnit.innerHTML = FEET_DIMENSION;
		if (weightLossUnit != null)
			weightLossUnit.innerHTML = LBS_DIMENSION;
	} else {

		document.getElementById(WEIGHT_UNIT_DIV).innerHTML = KG_DIMENSION;
		weight_dimension = KG_DIMENSION;
		if (heightUnit != null)
			heightUnit.innerHTML = CM_DIMENSION;
		if (weightLossUnit != null)
			weightLossUnit.innerHTML = KG_DIMENSION;
	}

}

function toggleBMIUnits() {
	commonInit();

	if (unitLabel == ENGLISH_UNIT) {

		setDimension(true);
		if (!isBlank(form.weight.value)) {
			if (isNum(form.weight.value)) {
				var num = parseFloat(form.weight.value) / 0.45359237;
				form.weight.value = num.toFixed(2);
			}
		}
		if (!isBlank(form.height1.value)) {
			if (isNum(form.height1.value)) {
				if (form.height1.value != 0) {
					var num_tot_in = parseFloat(form.height1.value) / 2.54;
					var num_in = num_tot_in % 12;
					var num_ft = (num_tot_in - num_in) / 12;
					form.height2.value = num_in.toFixed(2);
					form.height1.value = num_ft.toFixed(1);
				}
			}
		}
		document.getElementById(UNITS_DIV_LABLE).innerHTML = STANDARD_UNIT;
		showID(INCH_DIV);
	} else {
		setDimension(false);

		if (!isBlank(form.weight.value)) {
			if (isNum(form.weight.value)) {
				num = parseFloat(form.weight.value) * 0.45359237;
				form.weight.value = num.toFixed(2);
			}
		}
		if (!isBlank(form.height1.value) || !isBlank(form.height2.value)) {
			if (isNum(form.height1.value) && isNum(form.height2.value)) {
				num = (parseFloat(form.height1.value) * 12 + parseFloat(form.height2.value)) * 2.54;
				form.height1.value = num.toFixed(2);
				form.height2.value = '';
			}
		}
		document.getElementById(UNITS_DIV_LABLE).innerHTML = ENGLISH_UNIT;
		document.getElementById(ERROR_MESSAGE_DIV).innerHTML = BLANK;
		hideID(INCH_DIV);
	}
}

function isNum(x) {
	filter = /(^\-?\d+\.?$)|(^\-?\d*\.\d+$)/;
	if (filter.test(x)) {
		return true;
	}
	return false;
}

function isBlank(val) {
	if (val == null) {
		return true;
	}
	for ( var i = 0; i < val.length; i++) {
		if ((val.charAt(i) != ' ') && (val.charAt(i) != "\t")
				&& (val.charAt(i) != "\n") && (val.charAt(i) != "\r")) {
			return false;
		}
	}
	return true;
}
