function validatebmi() {

	var f = document.getElementById('toolform');

	// If the inches and pounds fields are empty, then insert a zero
	if (f.iheight2 && f.iheight2.value == '' && !document.getElementById('ms_metric').checked) { f.iheight2.value = "0"; }
	if (f.iweight2 && f.iweight2.value == '' && !document.getElementById('ms_metric').checked) { f.iweight2.value = "0"; }

	preparebmi();

	if (document.getElementById('ms_metric').checked) {
		if (f.mheight1.value == '' || f.mweight1.value == '') {
			document.getElementById("toolError").style.display = 'inline';
			return false;
		} else {
			return true;
		}
	} else {
		if (f.iheight1.value == '' || f.iweight1.value == '') {
			document.getElementById("toolError").style.display = 'inline';
			return false;
		} else {
			return true;
		}
	}
}

function preparebmi() {
	// Populate height and weight hidden fields in the form for calculation
	// of bmi. Height in cm and weight in kg.
	var f = document.getElementById('toolform');
	var bmiheight;
	var bmiweight;
	if (document.getElementById('ms_metric').checked) {
		if (f.mheight1) { bmiheight = f.mheight1.value; }
		if (f.mweight1) { bmiweight = f.mweight1.value; }
		if (f.selected) { f.selected.value = "metric"; }
	} else {	
		if (f.iheight1 && f.iheight2) { bmiheight = 2.54 * ((12 * parseInt(f.iheight1.value)) + parseInt(f.iheight2.value)); }
		if (f.iweight1 && f.iweight2) { bmiweight = ((14 * parseInt(f.iweight1.value)) + parseInt(f.iweight2.value))/2.2; }
		if (f.selected) { f.selected.value = "imperial"; }
	}
	f.height.value = bmiheight;
	f.weight.value = bmiweight;
}

function validateLogActivity() {
	document.getElementById("error1").style.display = "none";
	document.getElementById("error2").style.display = "none";
	document.getElementById("error3").style.display = "none";
	document.getElementById("error4").style.display = "none";
	document.getElementById("error5").style.display = "none";

	if(document.logactivityform.time.value == "0" || document.logactivityform.time.value == "")
	{
		document.getElementById("error2").style.display = "block";
		return false;
	}
	if(document.logactivityform.activity.value == "0" || document.logactivityform.activity.value == "")
	{
		document.getElementById("error3").style.display = "block";
		return false;
	}
	if(document.logactivityform.activity.value == "0" || document.logactivityform.duration.value == "")
	{
		document.getElementById("error5").style.display = "block";
		return false;
	}
	
	if(document.logactivityform.mweight1 != null)
	{
		if(document.logactivityform.mweight1.value == "")
		{
			document.getElementById("error4").style.display = "block";
			return false;
		}
	}
	if(document.logactivityform.iweight1 != null && document.logactivityform.iweight2 != null)
	{
		if(document.logactivityform.iweight1.value == "" && document.logactivityform.iweight2.value == "")
		{
			document.getElementById("error4").style.display = "block";
			return false;
		}		
	}
	if(document.logactivityform.day == null || document.logactivityform.month == null || document.logactivityform.year == null)
	{
		document.getElementById("error1").style.display = "block";
		alert("test");
		return false;	
	}	
	return validateDate(document.logactivityform);
}

function validateLogWeight() {
	document.getElementById("error1").style.display = "none";
	document.getElementById("error2").style.display = "none";

	if(document.logweightform.mweight1 != null)
	{
		if(document.logweightform.mweight1.value == "")
		{
			document.getElementById("error2").style.display = "block";
			return false;
		}
	}
	if(document.logweightform.iweight1 != null && document.logweightform.iweight2 != null)
	{
		if(document.logweightform.iweight1.value == "" && document.logweightform.iweight2.value == "")
		{
			document.getElementById("error2").style.display = "block";
			return false;
		}		
	}
	if(document.logweightform.day == null || document.logweightform.month == null || document.logweightform.year == null)
	{
		document.getElementById("error1").style.display = "block";
		return false;	
	}
	return validateDate(document.logweightform);
}

function validateDateRange() {
	var selectedStartDay = document.timeperiodform.start_day.value;
	var selectedStartMonth = document.timeperiodform.start_month.value;
	var selectedStartYear = document.timeperiodform.start_year.value;
	var selectedEndDay = document.timeperiodform.end_day.value;
	var selectedEndMonth = document.timeperiodform.end_month.value;
	var selectedEndYear = document.timeperiodform.end_year.value;

	if(document.timeperiodform.timeperiod.value != ""){
		document.timeperiodform.timeperiod_text.value = document.timeperiodform.timeperiod[document.timeperiodform.timeperiod.selectedIndex].text;
		return true;
	}


	if(selectedStartMonth == "" || selectedStartDay == "" || selectedStartYear == "") {
		document.getElementById("date_range_error1").style.display = "block";
		return false;
	}


	if (selectedStartMonth == '4' || selectedStartMonth == '6' || selectedStartMonth == '9' || selectedStartMonth == '11') {
		if (selectedStartDay > 30) {
			document.timeperiodform.start_day.selectedIndex = 0;
			document.getElementById("date_range_error1").style.display = "block";
			return false;
		}
	} else if (selectedStartMonth == '2') {
		if (selectedStartYear % 4 == 0) {
			// leap year
			if (selectedStartDay > 29) {
				document.timeperiodform.start_day.selectedIndex = 0;
				document.getElementById("date_range_error1").style.display = "block";
				return false;
			}
		} else {
			if (selectedStartDay > 28) {
				document.timeperiodform.start_day.selectedIndex = 0;
				document.getElementById("date_range_error1").style.display = "block";
				return false;
			}
		}
	}


	if(selectedEndMonth == "" || selectedEndDay == "" || selectedEndYear == "") {
		document.getElementById("date_range_error1").style.display = "block";
		return false;
	}


	if (selectedEndMonth == '4' || selectedEndMonth == '6' || selectedEndMonth == '9' || selectedEndMonth == '11') {
		if (selectedEndDay > 30) {
			document.timeperiodform.end_day.selectedIndex = 0;
			document.getElementById("date_range_error1").style.display = "block";
			return false;
		}
	} else if (selectedEndMonth == '2') {
		if (selectedEndYear % 4 == 0) {
			// leap year
			if (selectedEndDay > 29) {
				document.timeperiodform.end_day.selectedIndex = 0;
				document.getElementById("date_range_error1").style.display = "block";
				return false;
			}
		} else {
			if (selectedEndDay > 28) {
				document.timeperiodform.end_day.selectedIndex = 0;
				document.getElementById("date_range_error1").style.display = "block";
				return false;
			}
		}
	}
}

// not related to validateDateOnFly below - which is called after an onchange
function validateDate(dateForm) {
	
	var selectedMonth = dateForm.month.value;
	var selectedDay = dateForm.day.value;
	var selectedYear = dateForm.year.value;

	if(selectedMonth == "" || selectedDay == "" || selectedYear == "") {
		document.getElementById("error1").style.display = "block";
	}


	if (selectedMonth == '4' || selectedMonth == '6' || selectedMonth == '9' || selectedMonth == '11') {
		if (selectedDay > 30) {
			dateForm.day.selectedIndex = 0;
			document.getElementById("error1").style.display = "block";
			return false;
		}
	} else if (selectedMonth == '2') {
		if (selectedYear % 4 == 0) {
			// leap year
			if (selectedDay > 29) {
				dateForm.day.selectedIndex = 0;
				document.getElementById("error1").style.display = "block";
				return false;
			}
		} else {
			if (selectedDay > 28) {
				dateForm.day.selectedIndex = 0;
				document.getElementById("error1").style.display = "block";
				return false;
			}
		}
	}
	return true;
}

function switchMeasure(selectedMeasure) {

	// Disable and enable the form fields based on the metric selection.
	var f = document.getElementById("toolform");
	if (f.metric) { 
		f.metric.value = null;
	}
	if (f.imperial) {
		f.imperial.value = null;
	}
	if (selectedMeasure == "metric") {
		// use metric measurement
		if (f.mheight1) { f.mheight1.disabled = false ; f.mheight1.className = "" ; }
		if (f.mweight1) { f.mweight1.disabled = false ; f.mweight1.className = "" ; }
		if (f.iheight1) { f.iheight1.value = "" ; f.iheight1.disabled = true ; f.iheight1.className = "disabled" ; }
		if (f.iheight2) { f.iheight2.value = "" ; f.iheight2.disabled = true ; f.iheight2.className = "disabled" ; }
		if (f.iweight1) { f.iweight1.value = "" ; f.iweight1.disabled = true ; f.iweight1.className = "disabled" ; }
		if (f.iweight2) { f.iweight2.value = "" ; f.iweight2.disabled = true ; f.iweight2.className = "disabled" ; }
		f.metric.value = "yes";
		if (f.iheight1) {
			f.imperial.value = "yes";
		} else {
			f.imperial.value = "no";
		}
		if (f.mheight1) { f.mheight1.focus(); } else { f.mweight1.focus() ; }
	}
	if (selectedMeasure == "imperial") {
		// must be imperial measurement
		if (f.iheight1) { f.iheight1.disabled = false ; f.iheight1.className = "" ; }
		if (f.iheight2) { f.iheight2.disabled = false ; f.iheight2.className = "" ; }
		if (f.iweight1) { f.iweight1.disabled = false ; f.iweight1.className = "" ; }
		if (f.iweight2) { f.iweight2.disabled = false ; f.iweight2.className = "" ; }
		if (f.mheight1) { f.mheight1.value = "" ; f.mheight1.disabled = true ; f.mheight1.className = "disabled" ; }
		if (f.mweight1) { f.mweight1.value = "" ; f.mweight1.disabled = true ; f.mweight1.className = "disabled" ; }
		if (f.mheight1) {
			f.metric.value = "yes";
		} else {
			f.metric.value = "no";
		}
		f.imperial.value = "yes";
		if (f.iheight1) { f.iheight1.focus() ; } else { f.iweight1.focus() ;  }
	}
}

function validatehwr() {
	var f = document.getElementById('toolform');

	// If the inches and pounds fields are empty, then insert a zero
	if (f.iheight2 && f.iheight2.value == '' && !document.getElementById('ms_metric').checked ) { f.iheight2.value = "0"; }

	preparehwr();

	if (document.getElementById('ms_metric').checked) {
		if (f.mheight1.value == '') {
			document.getElementById("toolError").style.display = 'inline';
			return false;
		} else {
			return true;
		}
	} else {
		if (f.iheight1.value == '') {
			document.getElementById("toolError").style.display = 'inline';
			return false;
		} else {
			if ( f.iheight2.value == '' ) { f.iheight2.value = "0" ;}
			return true;
		}
	}
}

function preparehwr() {

	// Populate the height hidden field in the form for calculation
	// of the healthy weight range. Height in cm.
	var f = document.getElementById('toolform');
	var hwrheight;
	var hwrweight;
	if (document.getElementById('ms_metric').checked) {
		if (f.mheight1) { hwrheight = f.mheight1.value; }
		if (f.selected) { f.selected.value = "metric"; }
	} else {
		if (f.iheight1 && f.iheight2) { hwrheight = 2.54 * ((12 * parseInt(f.iheight1.value)) + parseInt(f.iheight2.value)); }
		if (f.selected) { f.selected.value = "imperial"; }
	}
	f.height.value = hwrheight;
}

function primary(catnum)
{
	genericPrimary(catnum, "toolform");
}

function genericPrimarySelected(catnum, formId, valueSelected)
{
	form = document.getElementById(formId);
	// Clear subcategory dropdown
	while ( form.activity.length > 0 ) { form.activity[0] = null ; }
	if ( form.category.selectedIndex == 0 ) { return ; }
	if ( catnum == 0 )
	{
		form.activity.className = "readonly" ;
		form.activity.disabled = true ;
		return ;
	} else {
		form.activity.className = "" ;
		form.activity.disabled = false ;
	}

	// Populate subcategory dropdown with selected category's subcategories
	if ( catnum > 0 ) {
		category = eval("category"+catnum);
		for ( c = 1 ; c < category.length ; c++ ) {
			form.activity[c-1] = new Option(category[c][0], category[c][1]); 
			if(valueSelected == category[c][0]) {
				form.activity[c-1].selected = true;
			}
		}
	} else {
		form.activity[0] = new Option("Please choose...", "0");
	}
}

function genericPrimary(catnum, formId)
{
	form = document.getElementById(formId);
	// Clear subcategory dropdown
	while ( form.activity.length > 0 ) { form.activity[0] = null ; }
	if ( form.category.selectedIndex == 0 ) { return ; }
	if ( catnum == 0 )
	{
		form.activity.className = "readonly" ;
		form.activity.disabled = true ;
		return ;
	} else {
		form.activity.className = "" ;
		form.activity.disabled = false ;
	}

	// Populate subcategory dropdown with selected category's subcategories
	if ( catnum > 0 ) {
		category = eval("category"+catnum);
		for ( c = 1 ; c < category.length ; c++ ) {
			form.activity[c-1] = new Option(category[c][0], category[c][1]); 
		}
	} else {
		form.activity[0] = new Option("Please choose...", "0");
	}
}

function restrictToNumber(e) {
	var val;
	if(typeof e.which != 'undefined') {
		val = e.which;
	} else {
		val = e.keyCode;
	}
	switch (val) {
		case 0:  //navigation keys in Mozilla
		case 8:  //backspace in Firefox
		case 13: //enter
		case 48: //0
		case 49: //1
		case 50: //2
		case 51: //3
		case 52: //4
		case 53: //5
		case 54: //6
		case 55: //7
		case 56: //8
		case 57: //9
			return true;
		default:
			return false;
	}
}

