
function haveSelectedFood_old()
{
	var have_food = false;
	for (var i = 0; i<document.food_log.elements.length; i++)
	{
		if (!isNaN(i) && document.food_log.elements[i].type == 'checkbox' && document.food_log.elements[i].name.indexOf('select_food[') == 0)
		{
			if (document.food_log.elements[i].checked)
			{
				have_food = true;
				break;
			}
		}
	}
	return have_food;
}

function haveSelectedFood()
{
	var have_food = false;
	for (var i = 0; i<document.food_log.elements.length; i++)
	{
		//if (!isNaN(i) && document.food_log.elements[i].type == 'checkbox' && document.food_log.elements[i].name.indexOf('select_food[') == 0)
		if (!isNaN(i) && document.food_log.elements[i].type == 'hidden' && document.food_log.elements[i].name.indexOf('select_food[') == 0)
		{
			//if (document.food_log.elements[i].checked)
			if (document.food_log.elements[i].value == 'on' || document.food_log.elements[i].value == 'checked')
			{
				have_food = true;
				break;
			}
		}
	}
	return have_food;
}

function showAddGroup(event)
{
	event.stopPropagation();
	var layerID = 'layer_add_group';
	var element = $('#'+layerID);
	if (element.css('visibility') == 'visible')
	{
		element.css('visibility', 'hidden');
	}
	else
	{
		element.css('visibility', 'visible');
		if (document.add_group)
			document.add_group.group_name.focus();
		addShowLayer(layerID, 0);
	}
}

function showAddFavorite(event, alert_text)
{
	event.stopPropagation();
	var layerID = 'layer_add_favorite';
	var e1 = document.getElementById(layerID);
	if (e1.style.visibility == 'visible')
	{
		e1.style.visibility = 'hidden';
	}
	else
	{
		if (haveSelectedFood())
		{
			e1.style.visibility = 'visible';
			addShowLayer(layerID, 0);
			//addShowLayer(layerID, 1);
			document.add_favorite.favorite_name.focus();
		}
		else
		{
			alert(alert_text);
		}
	}
}

function showAddDayFavorite(event, alert_text)
{
	event.stopPropagation();
	var layerID = 'layer_add_day_favorite';
	var e1 = document.getElementById(layerID);

	if (e1.style.visibility == 'visible')
	{
		e1.style.visibility = 'hidden';
	}
	else
	{
		if (haveSelectedFood())
		{
			e1.style.visibility = 'visible';
			addShowLayer(layerID, 0);
			document.add_day_favorite.favorite_name.focus();
		}
		else
		{
			alert(alert_text);
		}
	}
}

function submitAddToClipboard(alert_text)
{
	if (haveSelectedFood())
	{
		//document.food_log.action.value = 'add_to_clipboard';
		document.food_log.site_action.value = 'add_to_clipboard';
		document.food_log.submit();
	}
	else
	{
		alert(alert_text);
	}
}

function submuitShowOnlySelected(alert_text)
{
	if (haveSelectedFood())
	{
		document.food_log.show_selected.value = 1;
		//document.food_log.action.value = '';
		document.food_log.site_action.value = '';
		document.food_log.submit();
	}
	else
	{
		alert(alert_text);
	}
}

function deleteSelected(alert_text)
{
	if (haveSelectedFood())
	{
		//document.food_log.action.value = 'delete_selected';
		document.food_log.site_action.value = 'delete_selected';
		//alert(document.food_log.site_action.value);
		document.food_log.submit();
	}
	else
	{
		alert(alert_text);
	}
}

function submitFavoriteForm()
{
	if (haveSelectedFood())
	{
		if (document.add_favorite.favorite_name.value == '')
		{
			alert('Favorite Name Not Set');
		}
		else
		{
			//document.food_log.action.value = 'add_favorite';
			document.food_log.site_action.value = 'add_favorite';
			document.food_log.favorite_name.value = document.add_favorite.favorite_name.value;
			document.food_log.submit();
		}
	}
	else
	{
		alert('Please select food first!');
	}
}

function submitDayFavoriteForm()
{
	if (haveSelectedFood())
	{
		if (document.add_day_favorite.favorite_name.value == '')
		{
			alert('Favorite Name Not Set');
			return false;
		}
		else
		{
			//document.food_log.action.value = 'add_day_favorite';
			document.food_log.site_action.value = 'add_day_favorite';
			document.food_log.favorite_name.value = document.add_day_favorite.favorite_name.value;
			document.food_log.submit();
		}
	}
	else
	{
		alert('Please select food first!');
		return false;
	}
	return false;
}

/**
 * Запрос на подтверждение удаления пользовательской группы в фудлоге
 * @param group_id
 * @param group_name
 * @param date
 */
function confirmDeleteGroup(event, group_id, group_name, date)
{
	var url = 'select.php?group_id='+group_id+'&group_name='+group_name+'&page=confirm_delete_group&date='+date;
	
	var targetLayerID = 'delete_group_confirm';

	loadURL(url, targetLayerID, function(){
		var targetLayer = $('#'+targetLayerID);
		targetLayer.css('top', ($('body').height() - targetLayer.height()) / 2);
		targetLayer.css('left', ($('body').width() - targetLayer.width()) / 2);
		addShowLayer(targetLayerID);
	});
	event.stopPropagation();
}

function deleteFoodLog(food_log_id, food_name, date, user_id)
{
	$.post('/index.php?page=food_log', {
		action: 'delete_food_log',
		id: food_log_id,
		date: date,
		user_id: user_id
	}, function(data){
		if (data.match(/ok$/)) {
			window.location.reload();
		}
	});
	return false;
}

function deleteDemoFoodLog(food_log_id, food_name, date)
{
	$.post('/index.php', {
		action: 'delete_food_log',
		id: food_log_id,
		date: date
	}, function(data){
		if (data.match(/ok$/)) {
			window.location.reload();
			//window.location.href=window.location.href;
		}
	});
	return false;
}

var all_food_checked = false;
function checkAllFood_old()
{
	var elements = document.food_log.elements;

	for (var i = 0; i < elements.length; i++)
	{
		var el = elements[i];
		if (el.name.indexOf('select_food') == 0 && el.type == 'checkbox')
		{
			if (all_food_checked)
			{
				el.checked = false;
			}
			else
			{
				el.checked = true;
			}
		}
	}
	all_food_checked = !all_food_checked;
}

function checkAllFood()
{
	for (var i in foodLogGroups)
	{
		for (var j in foodLogGroups[i].content)
		{
			$('#select_food\\['+foodLogGroups[i].content[j].id+'\\]').change();
		}
	}
	all_food_checked = !all_food_checked;
}

var food_group_checked = [];
function checkAllFoodInGroup_old(group_id)
{
	var elements = document.food_log.elements;
	
	for (var i = 0; i < elements.length; i++)
	{
		var element = elements[i];
		if (element.name.indexOf('select_food') == 0 && element.type == 'checkbox' && element.id == group_id)
		{
			if (food_group_checked[group_id])
			{
				element.checked = false;
			}
			else
			{
				element.checked = true;
			}
		}
	}
	food_group_checked[group_id] = !food_group_checked[group_id];
}

function checkAllFoodInGroup(group_id)
{
	for (var i in foodLogGroups)
	{
		if (foodLogGroups[i].group_id == group_id)
		{
			for (var j in foodLogGroups[i].content)
			{
				$('#select_food\\['+foodLogGroups[i].content[j].id+'\\]').change();
			}
			break;
		}
	}
	food_group_checked[group_id] = !food_group_checked[group_id];
}

function addFromClipboard(group_id)
{
	document.food_log.site_action.value = 'add_from_clipboard';
	document.food_log.group_id.value = group_id;
	document.food_log.submit();
}

var timer_value = 750;
var timer_period = 50;
var timer = timer_value;
var t_event;
var t_link;
var t_layer;
var t_type = 'html'; 
var t_params;
var t_callback;
var t_keyCode;
var show = 0;

function selectTimer()
{
	if (timer >= timer_period)
	{
		timer -= timer_period;
	}
	else
	{
		if (timer == 0 && show == 1)
		{
			var n_event = new Object();
			n_event.keyCode = t_keyCode;
			if (t_type == 'json') {
				showSelectJSON(n_event, 1, t_params, t_layer);
			}
			else {
				showSelect(n_event, 1, t_link, t_layer);
			}
			show = 0;
		}
	}
}

var select_timer = setInterval("selectTimer()", timer_period);
var selectAction = undefined;
function moveSelected(event, layer, group_id, link)
{
	k = event.keyCode;
	// Enter
	if (k == 13)
	{
		if (document.getElementById(layer).style.visibility == 'visible')
		{
			$('#list_row_'+selectedRow).click();
			document.getElementById(layer).style.visibility = 'hidden';
		}
		else
		{
			document.food_log.group_id.value = group_id;
			checkForm(event, group_id);
		}
		return false;
	}
	// Up
	else if (k == 38)
	{
		if (selectedRow > 0)
		{
			selectedRow--;
		}
		setSelected(selectedRow);
		return false;
	}
	// Down
	else if (k == 40)
	{
		selectedRow++;
		if (!document.getElementById('list_row_'+selectedRow))
		{
			selectedRow--;
		}
		setSelected(selectedRow);
		return false;
	}
	else
	{
		// Устанавливаем данные для обработки таймером, который покажет селектор, если что
		selectedRow = 0;
		t_event = event;

		t_keyCode = event.keyCode;
		t_link = link;
		t_type = 'html';
		t_layer = layer;
		timer = timer_value;
		show = 1;
	}
}

function moveSelectedJSON(event, layer, group_id, params, callback)
{
	k = event.keyCode;
	// Enter
	if (k == 13)
	{
		if (document.getElementById(layer).style.visibility == 'visible')
		{
			$('#list_row_'+selectedRow).click();
			document.getElementById(layer).style.visibility = 'hidden';
		}
		else
		{
			document.food_log.group_id.value = group_id;
			checkForm(event, group_id)
		}
		return false;
	}
	// Up
	else if (k == 38)
	{
		var selectedRowNew = selectedRow;
		document.getElementById('list_row_'+selectedRow).className = 'list_row';
		if (selectedRowNew > 0)
		{
			selectedRowNew--;
		}
		document.getElementById('list_row_'+selectedRow).className = 'list_row_selected';
		setSelected(selectedRowNew);
		return false;
	}
	// Down
	else if (k == 40)
	{
		var selectedRowNew = selectedRow;
		document.getElementById('list_row_'+selectedRow).className = 'list_row';
		selectedRowNew++;
		if (!document.getElementById('list_row_'+selectedRow))
		{
			selectedRowNew--;
		}
		document.getElementById('list_row_'+selectedRow).className = 'list_row_selected';
		setSelected(selectedRowNew);
		return false;
	}
	else
	{
		onFoodNameChange(group_id);
		//alert(group_id);
		var field = $('#s_'+group_id);
		//alert(field.val().length);
		//if (field.val().length > 1)
		if (1==1)
		{
			// Устанавливаем данные для обработки таймером, который покажет селектор, если что
			selectedRow = 0;
			t_event = event;
	
			t_keyCode = event.keyCode;
			t_type = 'json';
			t_params = params;
			t_layer = layer;
			timer = timer_value;
			t_callback = callback
			show = 1;
		}
	}
}

/**
 * Заполнение селектора выбора продукта, собственно, продуктами, получеными с сервера в виде json структуры 
 */
function fillFoods(layer, params, data) {
	var layer = $("#"+layer);

	data['by_category_link:onClick'] = "loadURL('select.php?page=food&type=browse&group_id="+data.group_id+"&name_id="+data.name_id+"&name_name="+data.name_name+"&word="+data.word+"', 'search_food_"+data.group_id+"')";
	
	var isAdmin = data.is_admin;
	
	// Найденные продукты в истрии
	for (var i in data.history) {
		var item = data.history[i];
		data.history[i]['row:class'] = item['class'];
		data.history[i]['row:onMouseOver'] = 'setSelected('+item.row_num+')';
		var actionStr = "setData('"+item.name_id+"', '"+item.name_name+"', '"+item.id+"', '"+item.name_quote+"', '"+item.group_id+"', '"+item.measure_id+"', '"+item.measure_name+"')";
		data.history[i]['row:onClick'] = actionStr;
		data.history[i]['row:id'] = 'list_row_'+item.row_num;
	}
	
	// Найденные продукты в фаворитах
	for (var i in data.favorite) {
		var item = data.favorite[i];
		data.favorite[i]['row:class'] = item['class'];
		data.favorite[i]['row:onMouseOver'] = 'setSelected('+item.row_num+')';
		var actionStr = "document.location='index.php?page=food_log&action=add_from_favorite&date='+document.food_log.date.value+'&group_id="+item.group_id+"&favorite_id="+item.id+"'";
		data.favorite[i]['row:onActivate'] = actionStr;
		data.favorite[i]['row:onChange'] = actionStr;
		data.favorite[i]['row:id'] = 'list_row_'+item.row_num;
		
		data.favorite[i]['see_content:onClick'] = "seeFavoriteContent(event, '"+data.favorite[i].id+"')";
		
		data.favorite[i]['name:onMouseDown'] = actionStr;
	}
	
	// Найденные пользовательские продукты. Не используется
	for (var i in data.food_user) {
		var item = data.food_user[i];
		data.food_user[i]['row:class'] = item['class'];
		data.food_user[i]['row:onMouseOver'] = 'setSelected('+item.row_num+')';
		var actionStr = "setDataUser('"+item.name_id+"', '"+item.name_name+"', '"+item.id+"', '"+item.name_quote+"', '"+item.group_id+"', '"+item.measure_id+"', '"+item.measure_name+"')"; 
		data.food_user[i]['row:onActivate'] = actionStr;
		data.food_user[i]['row:onChange'] = actionStr;
		data.food_user[i]['row:id'] = 'list_row_'+item.row_num;
		
		data.food_user[i]['name:onMouseDown'] = actionStr;
	}

	// Найденные продукты
	for (var i in data.food)
	{
		var item = data.food[i];
		data.food[i]['row:class'] = item['class'];
		data.food[i]['row:onMouseOver'] = 'setSelected('+item.row_num+')';

		data.food[i]['row:onClick'] = "setData('"+item.name_id+"', '"+item.name_name+"', '"+item.id+"', '"+item.name_quote+"', '"+item.group_id+"', '"+item.measure_id+"', '"+item.measure_name+"')";
		data.food[i]['row:id'] = 'list_row_'+item.row_num;
		if (data.food[i].type_food)
		{
			var tips = 'Food';
			if (data.food[i].approved_by_admin)
			{
				tips = '@@Approved food@@';
				data.food[i]['type'] = '<img src="/images/food_food_approved_02.png" border="0" width="16" height="16" title="'+tips+'" />';
			}
			else
			{
				if (data.food[i].food_table_code == 'US')
				{
					tips = 'USDA';
				}
				else if (data.food[i].food_table_code == 'NO')
				{
					tips = 'Matvaretabellen 2006';
				}
				else if (data.food[i].food_table_code == 'RU')
				{
					tips = 'Химический состав Российских продуктов питания';
				}
				data.food[i]['type'] = '<img src="/images/food_food_02.png" border="0" width="16" height="16" title="'+tips+'" />';
			}
			//data.food[i]['type'] = '<img src="/images/food_food_01.gif" border="0" width="16" height="18" title="'+tips+'" />';
			//data.food[i]['type'] = '<img src="/images/food_food_02.png" border="0" width="16" height="16" title="'+tips+'" />';
			data.food[i]['see_nutrition'] = ' (@@see nutrition info@@)';
			data.food[i]['see_nutrition:class'] = 'see_recipe_content';
			data.food[i]['see_nutrition:onClick'] = "seeNutrition(event, '"+data.food[i].id+"', false)";
			data.food[i]['name:title'] = tips;
		}
		else if (data.food[i].type_user_food)
		{
			//data.food[i]['type'] = '<img src="/images/food_user_food_01.gif" border="0" width="16" height="18" title="@@User Food@@" />';
			data.food[i]['type'] = '<img src="/images/food_user_food_02.png" border="0" width="16" height="16" title="@@User Food@@" />';
			data.food[i]['name:class'] = 'select_user_food_title';
			data.food[i]['name:title'] = '@@User Food@@';

			if (isAdmin == '1')
			{
				if (data.food[i].hidden == 0)
				{
					data.food[i]['hide'] = ' <span style="color:green">hide</span>';
					var actionName = 'hide_food';
				}
				else
				{
					data.food[i]['hide'] = ' <span style="color:red">unhide</span>';
					var actionName = 'unhide_food';
				}

				var food_id = data.food[i].id;
				(function(food_id, actionName){
					data.food[i]['hide:onClick'] = function(event){
						$.post('/ajax.php', {
							module: 'food_log',
							action: actionName,
							id: food_id
						}, function(data){
							alert(actionName);
							if (data == 'ok')
							{
								reloadPage();
							}
						});
						event.stopPropagation();
						return false;
					};
				})(food_id, actionName);
			}
			
			if (data.food[i].votes && (data.food[i].votes.accurate || data.food[i].votes.wrong))
			{
				data.food[i]['votes'] = '&nbsp;&nbsp<span style="color:green" title="@@Votes accurate@@">'+data.food[i].votes.accurate+'&#8593;</span>&nbsp;<span style="color:red" title="@@Votes wrong@@">'+data.food[i].votes.wrong+'&#8595;</span>';
			}
			else
			{
				data.food[i]['votes'] = '';
			}
			data.food[i]['see_nutrition'] = ' (@@see nutrition info@@)';
			data.food[i]['see_nutrition:class'] = 'see_recipe_content';
			data.food[i]['see_nutrition:onClick'] = "seeNutrition(event, '"+data.food[i].id+"', true)";
			//data.food[i]['see_nutrition:onClick'] = "alert('"+data.food[i].id+"');seeNutrition(event, '"+data.food[i].id+"', false)";
		}
		else if (data.food[i].type_keyhole)
		{
			data.food[i]['type'] = '<img src="/images/food_keyhole_01.png" border="0" width="16" height="18" title="Nøkkelhullet" />';
			
			data.food[i]['see_nutrition'] = ' (@@see nutrition info@@)';
			data.food[i]['see_nutrition:class'] = 'see_recipe_content';
			data.food[i]['see_nutrition:onClick'] = "seeNutrition(event, '"+data.food[i].id+"', false)";
		}
		else if (data.food[i].type_recipe)
		{
			//data.food[i]['type'] = '<img src="/images/food_recipe_01.gif" border="0" width="16" height="18" title="Recipe" />';
			data.food[i]['type'] = '<img src="/images/food_recipe_02.png" border="0" width="16" height="16" title="Recipe" />';
			data.food[i]['see_recipe'] = ' (@@see recipe content@@)';
			data.food[i]['see_recipe:class'] = 'see_recipe_content';
			data.food[i]['see_recipe:onClick'] = "seeRecipeContent(event, '"+data.food[i].id+"')";
		}
	}

	// Если ничего не найдено
	if (data.not_found)
	{
		data['select_food_not_found:class'] = 'visible';
	}
	else
	{
		data['select_food_not_found:class'] = 'hidden';
	}

	// Продуктов найдено в других таблицах
	for (var i in data.add_food_table_found) {
		var item = data.add_food_table_found[i];
		data.add_food_table_found[i]['text'] = item.count + ' @@Results Found in@@ ' + item.name + ' @@Food Table@@';
		var actionStr = "loadURLJSON({page: 'food', group_id: '"+data.group_id+"', name_id: '"+data.name_id+"', name_name: '"+data.name_name+"', word: '"+data.word+"', food_table_id: '"+item.food_table_id+"', original_food_table_id: '"+item.original_food_table_id+"'}, 'search_food_"+data.group_id+"', fillFoods)";
		data.add_food_table_found[i]['link:onClick'] = actionStr;
	}

	if (data.have_more) {
		var item = data.have_more[0];
		data['have_more:class'] = 'visible';
		data['have_more_link:onClick'] = "loadURLJSON({page: 'food', group_id: '"+item.group_id+"', name_id: '"+item.name_id+"', name_name: '"+item.name_name+"', word: '"+item.word+"', limit: 'all'}, 'search_food_"+item.group_id+"', fillFoods)";
		data['have_more_link'] = 'Show all results ('+item.result_count+')';
	}
	else {
		data['have_more:class'] = 'hidden';
	}

	if (data.have_big_more) {
		data['have_big_more:class'] = 'visible';
		data['have_big_more'] = 'Here very much results. Please make more exact ('+data.have_more[0].result_count+')';
	}
	else {
		data['have_big_more:class'] = 'hidden';
	}

	// Сколько продуктов найдено
	if (data.food_count) {
		var item = data.food_count[0];
		data['food_count:class'] = 'visible';
		data['food_count'] = 'Foods <b>'+item.list_num_first+'-'+item.list_num_last+'</b> of <b>'+item.result_count+'</b> for <b>'+item.word+'</b>';
	}
	else {
		data['food_count:class'] = 'hidden';
	}

	// Ссылка на предыдущую страницу
	if (data.previous_page != undefined) {
		var item = data.previous_page[0];
		data['previous_page:class'] = 'visible';
		data['previous_page:onClick'] = "loadURLJSON({page: 'food', group_id: '"+item.group_id+"', name_id: '"+item.name_id+"', name_name: '"+item.name_name+"', word: '"+item.word+"', offset: '"+item.offset+"', food_table_id: '"+item.food_table_id+"', original_food_table_id: '"+item.original_food_table_id+"'}, 'search_food_"+item.group_id+"', fillFoods)";
	}
	else {
		data['previous_page:class'] = 'hidden';
	}

	// Страницы
	for (var i in data.page) {
		if (data.page[i].normal) {
			var item = data.page[i].normal[0];
			data.page[i]['link:class'] = 'select_food_page_normal';
			data.page[i]['link:onClick'] = "loadURLJSON({page: 'food', group_id: '"+data.group_id+"', name_id: '"+data.name_id+"', name_name: '"+data.name_name+"', word: '"+data.word+"', offset: '"+item.offset+"', food_table_id: '"+item.food_table_id+"', original_food_table_id: '"+item.original_food_table_id+"'}, 'search_food_"+data.group_id+"', fillFoods)";
			data.page[i]['number'] = item.number;
		}
		else {
			data.page[i]['link:class'] = 'select_food_page_current';
			data.page[i]['number'] = data.page[i].current[0].number;
		}
	}

	// Ссылка на следующую страницу
	if (data.next_page != undefined) {
		var item = data.next_page[0];
		data['next_page:class'] = 'visible';
		data['next_page:onClick'] = "loadURLJSON({page: 'food', group_id: '"+item.group_id+"', name_id: '"+item.name_id+"', name_name: '"+item.name_name+"', word: '"+item.word+"', offset: '"+item.offset+"', food_table_id: '"+item.food_table_id+"', original_food_table_id: '"+item.original_food_table_id+"'}, 'search_food_"+item.group_id+"', fillFoods)";
	}
	else {
		data['next_page:class'] = 'hidden';
	}

	var html = $('#tpl_select_food').html();
	
	html = html.replace(/##/g, '');

	layer.html(html);

	tplFill('select_food', data);
}

// Отображение всплывающего окошечка с данными рецепта
function seeRecipeContent(event, recipeID) {
	event.stopPropagation();
	$.getJSON('/ajax.php', {module: 'info_recipe', recipe_id: recipeID}, function(data){
		var layer = $('#food_info_container');

		var html = $('#tpl_recipe_info').html();

		html = html.replace(/##/g, '');

		layer.css('visibility', 'visible');

		layer.html(html);
		
		if (data.photo) {
			data.photo = '<img src="/images/recipe/'+data.photo.name+'" width="'+(data.photo.width / 2)+'" height="'+(data.photo.height / 2)+'" />';
		}
		
		data['link:href'] = '/index.php?page=user_recipe&recipe_id='+recipeID;
		
		data['close:onClick'] = '$("#food_info_container").css("visibility", "hidden");event.stopPropagation();';

		tplFill('recipe_info', data);

		layer.css('top', event.pageY - layer.outerHeight());
		layer.css('left', event.pageX);

		// Чтобы при клике на окошке с инфой ничего лишнего не происходило, событие останавливаем
		layer.click(function(event){ event.stopPropagation(); });

		addShowLayer(layer.attr('id'));
	});
}

//Отображение всплывающего окошечка с составом продукта
function seeNutrition(event, foodID, showVotesBlock) {
	event.stopPropagation();
	
	//alert($('#food_nutrition_info_container').css('visibility'));
	if ($('#food_nutrition_info_container').css('visibility') != 'visible')
	{
		$.getJSON('/ajax.php', {module: 'info_food_nutrition', food_id: foodID}, function(data){
			var layer = $('#food_nutrition_info_container');
	
			var html = $('#tpl_food_nutrition_info').html();
	
			html = html.replace(/##/g, '');
	
			layer.css('visibility', 'visible');
	
			layer.html(html);
	
			data['close:onClick'] = '$("#food_nutrition_info_container").css("visibility", "hidden");event.stopPropagation();';
			
			data['accurate_yes:onClick'] = "confirmFoodNutrition('"+foodID+"','1')";
			data['accurate_no:onClick'] = "confirmFoodNutrition('"+foodID+"','0')";
			
			if (data.nutrients_other && data.nutrients_other.length > 0)
			{
				$('#food_nutrition_info\\.nutrients_other_table_switch').show();
			}
			else
			{
				$('#food_nutrition_info\\.nutrients_other_table_switch').hide();
			}
	
			tplFill('food_nutrition_info', data);
	
			layer.css('top', event.pageY - layer.outerHeight());
			//layer.css('top', event.pageY);
			layer.css('left', event.pageX);
	
			var votesBlock = $('#food_nutrition_info\\.votes_block');
			if (showVotesBlock)
			{
				votesBlock.show();
			}
			else
			{
				votesBlock.hide();
			}
			
			if (data.self_votes > 0)
			{
				$('#food_nutrition_info\\.votes_block').hide();
			}
			
			layer.css('top', event.pageY - layer.height() - 23);
	
			// Чтобы при клике на окошке с инфой ничего лишнего не происходило, событие останавливаем
			layer.click(function(event){ event.stopPropagation(); });
	
			addShowLayer(layer.attr('id'));
		});
	}
	else
	{
		$("#food_nutrition_info_container").css("visibility", "hidden");
		event.stopPropagation();
	}
}

function confirmFoodNutrition(foodID, value)
{
	$.get('/ajax.php', {module: 'info_food_nutrition', action: 'add', food_id: foodID, value: value}, function(data){
		if (data == 'ok')
		{
			$('#food_nutrition_info\\.votes_block').hide();
		}
	});
}

function seeFavoriteContent(event, favoriteID)
{
	event.stopPropagation();
	$.getJSON('/ajax.php', {module: 'info_favorite', favorite_id: favoriteID}, function(data){
		var layer = $('#favorite_info_container');

		var html = $('#tpl_favorite_info').html();

		html = html.replace(/##/g, '');

		layer.css('visibility', 'visible');

		layer.html(html);

		
		data['close:onClick'] = '$("#favorite_info_container").css("visibility", "hidden");event.stopPropagation();';

		tplFill('favorite_info', data);

		layer.css('top', event.pageY - layer.outerHeight());
		layer.css('left', event.pageX);

		// Чтобы при клике на окошке с инфой ничего лишнего не происходило, событие останавливаем
		layer.click(function(event){ event.stopPropagation(); });

		addShowLayer(layer.attr('id'));
	});
}

/* page */

function changeNutrientRow(name)
{
	var user_id = document.calendar.user_id.value;
	document.location.href = '/index.php?page=food_log&date='+document.food_log.date.value+'&nutrient_row='+name+'&user_id='+user_id;
}

function changeFoodTable()
{
	var list = document.food_table.food_table;
	var value = list.options[list.selectedIndex].value;
	document.food_table.food_table_change_to.value = value;
	document.food_table.submit();
}



/**
 * Сворачивание/разворачивание групп в фудлоге и активити
 * @param string id ID группы
 * @return
 */
function switchGroupVisibility(id)
{
	var div = document.getElementById('group_content_'+id);
	var sw = document.getElementById('group_visibility_switch_'+id);
	var expire = new Date();
	var vis = 1;
	// 1 month cookie
	expire.setMonth(expire.getMonth() + 1);
	if (div.style.visibility == 'hidden')
	{
		div.style.visibility = 'visible';
		if (navigator.appName.indexOf('Microsoft') == 0)
		{
			div.style.display = 'block';
		}
		else
		{
			div.style.display = 'table-row-group';
		}
		sw.className = 'group_visibility_open';
		vis = 1;
	}
	else
	{
		div.style.visibility = 'hidden';
		div.style.display = 'none';
		sw.className = 'group_visibility_closed';
		vis = 0;
	}
	document.cookie = "group_visibility_"+id+"="+vis+";expires="+expire.toGMTString()+";";
}




function checkKeyCodeNumeric(code)
{
	//alert(code);
	//$('body').append('<div>'+code+'</div>');
	return true;
	var codesAllow = [
	  0,
      8, // Backspace
      13, // Enter
      37, // Left Arrow
      39, // Right Arrow
      44, // ,
      46, // Delete
      48, // 0
      49, // 1
      50, // 2
      51, // 3
      52, // 4
      53, // 5
      54, // 6
      55, // 7
      56, // 8
      57, // 9
      96, // Num0
      97, // Num1
      98, // Num2
      99, // Num3
      100, // Num4
      101, // Num5
      102, // Num6
      103, // Num7
      104, // Num8
      105, // Num9
      110, // Num.
      188, // ,
      190, // .
      116 // F5
	];
	var result = false;
	for (var i = 0; i < codesAllow.length; i++)
	{
		if (code == codesAllow[i])
		{
			//alert(code);
			result = true;
			break;
		}
	}
	return result;
}

function checkKeyCodeFunctional(code)
{
	//alert(code);
	var codesAllow = [
	  0, // for FF
	  9, // Tab
	  13, // Enter
	  38, // Up
	  40, // Down
      116 // F5
	];
	var result = false;
	for (var i = 0; i < codesAllow.length; i++)
	{
		if (code == codesAllow[i])
		{
			result = true;
			break;
		}
	}
	return result;
}

function onFoodTimeKey(e)
{
	var input = $('#'+e.target.id);
	var val = input.val();
	if (e.which == 8)
	{
		if (val.length == 3)
		{
			//input.val(val.replace(/^(\d{2}):$/, '$1'));
		}
	}
	else
	{
		
		if (val.match(/^\d{2}$/))
		{
			input.val(val+':');
		}
	}
}

var currentEditFoodLog = 0;
var currentEditFoodLogAmount = 0;

function editFoodLog(id)
{
	if (id == currentEditFoodLog)
	{
		setFoodLogNormalMode(id);
		currentEditFoodLog = 0;
	}
	else
	{
		if (currentEditFoodLog != 0)
		{
			setFoodLogNormalMode(currentEditFoodLog);
		}
		setFoodLogEditMode(id);
		currentEditFoodLog = id;
	}
}

function setFoodLogEditMode(id)
{
	var fieldBGColor = '#c7fec7';

	var blockNutrient = $('#nutrient_value_block_'+id);

	currentEditFoodLogAmount = blockNutrient.html();

	blockNutrient.html('<span class="button_edit_food_log" id="button_edit_food_log_'+id+'" title="Save">&nbsp;</span>');
	blockNutrient.css('margin', '0');

	var inputFields = [
		'food_log_time\\['+id+'\\]',
		'food_log_amount\\['+id+'\\]',
		'food_log_measure_name\\['+id+'\\]',
		'food_log_measure_select_arrow\\['+id+'\\]'
	];

	for (var i in inputFields)
	{
		var field = $('#'+inputFields[i]);
		field.css('background-color', fieldBGColor);
	}

	(function(id){
		var buttonSave = $('#button_edit_food_log_'+id);
		buttonSave.click(function(event){
			changeFoodLog(id);
		});
	})(id);
}

function setFoodLogNormalMode(id)
{
	var fieldBGColor = 'white';
	
	var blockNutrient = $('#nutrient_value_block_'+id);
	blockNutrient.html(currentEditFoodLogAmount);
	blockNutrient.css('margin', '0 auto');
	
	var inputFields = [
   		'food_log_time\\['+id+'\\]',
   		'food_log_amount\\['+id+'\\]',
   		'food_log_measure_name\\['+id+'\\]',
   		'food_log_measure_select_arrow\\['+id+'\\]'
   	];
   	
   	for (var i in inputFields)
   	{
   		var field = $('#'+inputFields[i]);
   		field.css('background-color', fieldBGColor);
   	}
}

// onReady
$(function(){
	// Инициализируем поля добавления продуктов
	var statusGroup = {};
	if (typeof window.foodLogGroups != 'undefined') {
		for (var groupIndex in foodLogGroups)
		{
			//var groupID = foodLogGroups[groupIndex];
			var groupID = foodLogGroups[groupIndex].group_id;

			var amountField = $('#amount_'+groupID);
			var measureField = $('#form_measure_id_'+groupID);
			var measureButton = $('#form_measure_button_'+groupID);

			(
				function(groupID, measureField, amountField)
				{
					statusGroup[groupID] = {
						clicked:   false,
						passEvent: false
					};
					log('Set handlers to groupID: '+groupID);
					
					// measure selector
	
					measureField.mousedown( function(event) {
						log("field groupID: "+groupID+" mousedown");
						selectorMousedownGroup(event, groupID);
					});
					
					measureField.click(function(event){event.stopPropagation();});
					measureButton.click(function(event){event.stopPropagation();});

					measureField.focus( function(event) {
						log("field "+groupID+" focus");
						if (!statusGroup[groupID].clicked && !statusGroup[groupID].passEvent)
						{
							showSelectorGroup(event, groupID);
						}
						statusGroup[groupID].clicked = false;
					});
	
					measureField.blur( function(event) {
						if (!statusGroup[groupID].clicked) lock_select = 0;
						log("field "+groupID+" blur");
						if (document.getElementById('search_measure_'+groupID).style.visibility == 'visible' && !statusGroup[groupID].clicked) {
							log('blur '+groupID+' hide select');
							hideSelect('search_measure_'+groupID);
						}
						else {
							if (statusGroup[groupID].clicked) {
								statusGroup[groupID].passEvent = true;
								document.getElementById('form_measure_id_'+groupID).focus();
								statusGroup[groupID].passEvent = false;
						    }
						}
						statusGroup[groupID].clicked = false;
						event.stopPropagation();
					});

					measureButton.mousedown( function(event) {
						selectorMousedownGroup(event, groupID);
					});

					measureField.keydown( function(event) {
						if (checkKeyCodeFunctional(event.which))
						{
							return moveSelected(event, 'search_measure_'+groupID, groupID, 'select.php?group_id='+groupID+'&name_id=measure_id&name_name=form_measure_id_'+groupID+'&page=measure&word='+document.getElementById('form_measure_id_'+groupID).value+'&layer=search_measure_'+groupID);
						}
						return false;
					});

					measureField.keyup( function(event) {
						if (!checkKeyCodeFunctional(event.which))
						{
							event.stopPropagation();
							return false;
						}
					});

					measureField.keypress( function(event) {
						if (!checkKeyCodeFunctional(event.which))
						{
							event.stopPropagation();
							return false;
						}
					});
					
					// amount field

					amountField.keypress( function(event) {
						//return checkKeyCodeNumeric(event.keyCode);
						return checkKeyCodeNumeric(event.which);
					});
					amountField.keydown( function(event) {
						//return checkKeyCodeNumeric(event.keyCode);
						return checkKeyCodeNumeric(event.which);
					});
					amountField.keyup( function(event) {
						//return checkKeyCodeNumeric(event.keyCode);
						return checkKeyCodeNumeric(event.which);
					});
					
					showSelectorGroup = function(event, groupID) {
						if (document.getElementById('search_measure_'+groupID).style.visibility != 'visible') {
							log('showSelectorGroup '+groupID+' show select');
							showMeasure(event, 0, groupID);
							statusGroup[groupID].passEvent = true;
							document.getElementById('form_measure_id_'+groupID).focus();
							statusGroup[groupID].passEvent = false;
							selectedRowPrevious = 0;
						}
						else {
							log('showSelectorGroup '+groupID+' hide select');
							hideSelect('search_measure_'+groupID);
						}
					};
					
					selectorMousedownGroup = function(event, groupID) {
						showSelectorGroup(event, groupID);
						statusGroup[groupID].clicked = true;
						setTimeout(function(){statusGroup[groupID].clicked=false;}, 0);
					};
					
					// Иконки
					$('#ico_category_'+groupID).click(function(event){
						if ($('#search_food_'+groupID).css('visibility') == 'hidden') {
							$('#s_'+groupID).val('');
							$('#s_'+groupID).focus();
							showSelect(event, 0, 'select.php?group_id='+groupID+'&name_id=food_id&name_name=s_'+groupID+'&page=food&type=browse', 'search_food_'+groupID);
							return false;
						}
						event.preventDefault();
					});
	
				}
			)(groupID, measureField, amountField);
			//groupID++;
		}
	}
	
	// Инициализируем поля уже добавленных продуктов
	var arr = document.getElementsByTagName('input');
	var ids = [];
	var status = {};
	for (var i in arr)
	{
		if (arr[i].id && arr[i].id.indexOf('food_log_measure_name') == 0)
		{
			var m = arr[i].id.match(/\[(\d+)\]/);
			ids[ids.length] = m[1];
		}
	}

	for (var i in ids)
	{
		var foodLogID = ids[i];
		var measureField = $('#food_log_measure_name\\['+foodLogID+'\\]');
		var measureButton = $('#food_log_measure_name_button\\['+foodLogID+'\\]');
		var amountField = $('#food_log_amount\\['+foodLogID+'\\]');
		var foodID = $('#value_food_log_food_id\\['+foodLogID+'\\]').val();
		var groupID = $('#value_food_log_group_id\\['+foodLogID+'\\]').val();
	
		(
			function(foodLogID, measureField, amountField, measureButton, foodID, groupID)
			{
				status[foodLogID] = {
					clicked:   false,
					passEvent: false
				};
				log('Set handlers to foodLogID: '+foodLogID);

				measureField.mousedown( function(event) {
					log("field foodLogID: "+foodLogID+" mousedown");
					selectorMousedown(event, foodID, foodLogID, groupID);
				});
				
				measureField.click(function(event){event.stopPropagation();});
				measureButton.click(function(event){event.stopPropagation();});

				measureField.focus( function(event) {
					log("field "+foodLogID+" focus");
					if (!status[foodLogID].clicked && !status[foodLogID].passEvent)
					{
						showSelector(event, foodID, foodLogID, groupID);
					}
					status[foodLogID].clicked = false;
				});

				measureField.blur( function(event) {
					if (!status[foodLogID].clicked) lock_select = 0;
					log("field "+foodLogID+" blur");
					if (document.getElementById('search_measure_food_log_'+foodLogID).style.visibility == 'visible' && !status[foodLogID].clicked) {
						log('blur '+foodLogID+' hide select');
						hideSelect('search_measure_food_log_'+foodLogID);
					}
					else {
						if (status[foodLogID].clicked) {
							status[foodLogID].passEvent = true;
							document.getElementById('food_log_measure_name['+foodLogID+']').focus();
							status[foodLogID].passEvent = false;
					    }
					}
					status[foodLogID].clicked = false;
					event.stopPropagation();
				});

				measureButton.mousedown( function(event) {
					selectorMousedown(event, foodID, foodLogID, groupID);
				});

				/*
				measureField.keydown( function(event) {
					if (document.getElementById('search_measure_food_log_'+foodLogID).style.visibility=='hidden' && event.keyCode==13) {
						changeFoodLog(foodLogID);
					}
					else
					{
						return moveSelected(event, 'search_measure_food_log_'+foodLogID, groupID);
					}
				});
				*/
				measureField.keydown( function(event) {event.stopPropagation();return false;});
				measureField.keyup( function(event) {event.stopPropagation();return false;});
				measureField.keypress( function(event) {event.stopPropagation();return false;});
				
				
				
				amountField.keypress( function(event) {
					return checkKeyCodeNumeric(event.keyCode);
				});
				amountField.keydown( function(event) {
					return checkKeyCodeNumeric(event.keyCode);
				});
				amountField.keyup( function(event) {
					return checkKeyCodeNumeric(event.keyCode);
				});
				
				showSelector = function(event, foodID, foodLogID, groupID) {
					if (document.getElementById('search_measure_food_log_'+foodLogID).style.visibility != 'visible') {
						log('showSelector '+foodLogID+' show select');
						document.food_log.food_id.value = foodID;
						showSelect(event, 0, 'select.php?group_id='+groupID+'&name_id=measure_id&name_name=food_log_measure_name['+foodLogID+']&page=measure&word='+document.getElementById('food_log_measure_name['+foodLogID+']').value+'&food_id='+document.food_log.food_id.value+'&layer=search_measure_food_log_'+foodLogID, 'search_measure_food_log_'+foodLogID);
						status[foodLogID].passEvent = true;
						document.getElementById('food_log_measure_name['+foodLogID+']').focus();
						status[foodLogID].passEvent = false;
					}
					else {
						log('showSelector '+foodLogID+' hide select');
						hideSelect('search_measure_food_log_'+foodLogID);
					}
				};
				
				selectorMousedown = function(event, foodID, foodLogID, groupID) {
					showSelector(event, foodID, foodLogID, groupID);
					status[foodLogID].clicked = true;
					setTimeout(function(){status[foodLogID].clicked=false;}, 0);
				};

			}
		)(foodLogID, measureField, amountField, measureButton, foodID, groupID);
	}
});
