function validateFiends(oForm) {
	var serving = document.getElementsByName('f[persons]');
	var ing_amounts = document.getElementsByName('f[ingredients][amount][]');
	var ing_serv = document.getElementsByName('f[ingredients][serving][]');
	var prep_h = document.getElementsByName('f[preparation_time][hours]');
	var prep_m = document.getElementsByName('f[preparation_time][minutes]');
	var cook_h = document.getElementsByName('f[cooking_time][hours]');
	var cook_m = document.getElementsByName('f[cooking_time][minutes]');
	var msg = Array();


	if (!serving || !ing_amounts) {
		return true;
	}

	serving = serving[0];
	if (!validateNumber(trim(serving.value))) {
		msg.push('Number of servings is not valid');
	}
	// Time validation
	prep_h = trim(prep_h[0]);
	prep_m = trim(prep_m[0]);
	cook_h = trim(cook_h[0]);
	cook_m = trim(cook_m[0]);
	if ((prep_h.value && !validateTime(prep_h.value)) || !validateTime(prep_m.value)) {
		msg.push('Preparation time is not valid');
	}
	if ((cook_h.value && !validateTime(cook_h.value)) || !validateTime(cook_m.value)) {
		msg.push('Cooking time is not valid');
	}

	var ing_count = ing_amounts.length;
	var k = 1;
	for (var i=0;i<ing_count;i++) {
		var a = ing_amounts[i];
		var s = ing_serv[i];
		if (!validIngredientAmount(trim(a.value))) {
			a.style.color="#FF0000";
			msg.push('Amount of ingredient ' + k + ' is not valid');
		}else{
			a.style.color="#000000";
		}
		if (s.selectedIndex == 0 && trim(a.value).length > 0){
//			s.options[0].text = 'Empty';
//			s.style.color="#FF0000";
//			for (var l=1; l<s.length; l++){
//				s.options[l].style.color = "#000000";
//			}
//			msg.push('Serving of ingredient ' + k + ' is empty');
		}else{
//			if (s.selectedIndex !== 0){
//				s.style.color="#000000";
//			}
		}
		k++;
	}

	if (msg.length) {
		msg = msg.join("\r\n");
		alert(msg);
		return false;
	} else {
		return true;
	}
}

function restoreColor(pos){
	var ing_serv = document.getElementsByName('f[ingredients][serving][]');
	ing_serv = ing_serv[pos];
	ing_serv.style.color = "#000000";
	ing_serv.options[0].text = "";
}

function trim(str){
	if (parseInt(str) > 0){
		return str.replace(/^\s+|\s+$/g,"");
	}else{
		return str;
	}
}

function validateNumber (val) {
	var num = /^[0-9]+$/;
	return num.test(val);
}

function validateTime (val) {
	var num = /^[0-9]+$/;
	return num.test(val);
}

function validIngredientAmount(val) {
	if (!val) {
		return true;
	}
	var amount = /^(([0-9]+(\.[0-9]+)?)|([1-9]+\s(1\/[234]|2\/[3]|3\/4))|(1\/[234]|2\/[3]|3\/4))$/;
	return amount.test(val);
}