//var e = document.getElementById('layer_add_group');

function haveSelectedFood()
{
  var have_food = 0;
  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++;
      }
    }
  }
  return have_food;
}


function showAddGroup(event)
{
	event.stopPropagation();
	var layerID = 'layer_add_group';
	var e = document.getElementById(layerID);
	if (e.style.visibility == 'visible')
	{
		e.style.visibility = 'hidden';
	}
	else
	{
		e.style.visibility = 'visible';
		document.add_group.group_name.focus();
		addShowLayer(layerID, 0);
		//alert(1);
	}
}

function hideAddGroup()
{
  var e = document.getElementById('layer_add_group');
  e.style.visibility = 'hidden';
}


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
	{
		var have_food = haveSelectedFood();
		if (have_food > 0)
		{
			e1.style.visibility = 'visible';
			addShowLayer(layerID, 0);
			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
	{
		var have_food = haveSelectedFood();
		if (have_food > 0)
		{
			e1.style.visibility = 'visible';
			addShowLayer(layerID, 0);
			document.add_day_favorite.favorite_name.focus();
		}
		else
		{
			alert(alert_text);
		}
	}
}

function hideAddFavorite()
{
  var e1 = document.getElementById('layer_add_favorite');
  e1.style.visibility = 'hidden';
}

function hideAddDayFavorite()
{
  var e1 = document.getElementById('layer_add_day_favorite');
  e1.style.visibility = 'hidden';
}

function submitAddToClipboard(alert_text)
{
  var have_food = haveSelectedFood();
  if (have_food > 0)
  {
    document.food_log.action.value = 'add_to_clipboard';
    document.food_log.submit();
  }
  else
  {
    alert(alert_text);
  }
}

function submuitShowOnlySelected(alert_text)
{
  var have_food = haveSelectedFood();
  if (have_food > 0)
  {
    document.food_log.show_selected.value=1;
    document.food_log.action.value='';
    document.food_log.submit();
  }
  else
  {
    alert(alert_text);
  }
}

function deleteSelected(alert_text)
{
  var have_food = haveSelectedFood();
  if (have_food > 0)
  {
    document.food_log.action.value = 'delete_selected';
    document.food_log.submit();
  }
  else
  {
    alert(alert_text);
  }
}


function submitFavoriteForm()
{
  var have_food = haveSelectedFood();
  if (have_food > 0)
  {
    if (document.add_favorite.favorite_name.value == '')
    {
      alert('Favorite Name Not Set');
    }
    else
    {
      document.food_log.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()
{
  var have_food = haveSelectedFood();
  if (have_food > 0)
  {
    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.favorite_name.value = document.add_day_favorite.favorite_name.value;
      document.food_log.submit();
    }
  }
  else
  {
    alert('Please select food first!');
    return false;
  }
  return false;
}

function confirmDeleteGroup(group_id, group_name, date)
{
  if (confirm('You Really Want To Delete Group \''+group_name+'\'?'))
  {
    window.location='index.php?page=food_log&action=delete_group&id='+group_id+'&date='+date;
  }
  return false;
}

function confirmDeleteFoodLog(food_log_id, food_name, date)
{
  // Currently disabled
  //if (confirm('You Really Want To Delete Food \''+food_name+'\'?'))
  if (1==1)
  {
    window.location='index.php?page=food_log&action=delete_food_log&id='+food_log_id+'&date='+date;
    //loadURL('window.php?page=food_log&action=delete_food_log&id='+food_log_id+'&date='+date, 'windowContent2');
  }
  return false;
}

var all_food_checked=0;
function checkAllFood()
{
  if(all_food_checked==0)
  {
    for(var i=0;i<document.food_log.elements.length;i++)
    {
      if(document.food_log.elements[i].name.indexOf('select_food') == 0 && document.food_log.elements[i].type == 'checkbox')
      {
        document.food_log.elements[i].checked=true;
      }
    }
    all_food_checked=1;
  }
  else
  {
    for(var i=0;i<document.food_log.elements.length;i++)
    {
      if(document.food_log.elements[i].name.indexOf('select_food') == 0 && document.food_log.elements[i].type == 'checkbox')
      {
        document.food_log.elements[i].checked=false;
      }
    }
    all_food_checked=0;
  }
}

var food_group_checked=new Array();
function checkAllFoodInGroup(group_id)
{
  if(food_group_checked[group_id]==1)
  {
    for(var i=0;i<document.food_log.elements.length;i++)
    {
      if(document.food_log.elements[i].name.indexOf('select_food') == 0 &&
         document.food_log.elements[i].type == 'checkbox' &&
         document.food_log.elements[i].id == group_id)
      {
        document.food_log.elements[i].checked=false;
      }
    }
    food_group_checked[group_id]=0;
  }
  else
  {
    for(var i=0;i<document.food_log.elements.length;i++)
    {
      
      if(document.food_log.elements[i].name.indexOf('select_food') == 0 &&
         document.food_log.elements[i].type == 'checkbox' &&
         document.food_log.elements[i].id == group_id)
      {
        document.food_log.elements[i].checked=true;
      }
    }
    food_group_checked[group_id]=1;
  }
}

function addFromClipboard(group_id)
{
  document.food_log.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)
	{
		//document.getElementById('list_row_'+selectedRow).className = 'list_row';
		if (selectedRow > 0)
		{
			selectedRow--;
		}
		//document.getElementById('list_row_'+selectedRow).className = 'list_row_selected';
		setSelected(selectedRow);
		return false;
	}
	// Down
	else if (k == 40)
	{
		//document.getElementById('list_row_'+selectedRow).className = 'list_row';
		selectedRow++;
		if (!document.getElementById('list_row_'+selectedRow))
		{
			selectedRow--;
		}
		//document.getElementById('list_row_'+selectedRow).className = 'list_row_selected';
		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;
	//alert(k);
	// 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
	{
		// Устанавливаем данные для обработки таймером, который покажет селектор, если что
		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.group_id = params.group_id;
	//data.name_id = params.name_id;
	//data.name_name = params.name_name;
	//data.word = params.word;
	
	//alert(data.food[0].name);

	//data['by_category_link:onClick'] = "loadURLJSON({page: 'food', group_id: '"+data.group_id+"', name_id: '"+data.name_id+"', name_name: '"+data.name_name+"', word: '"+data.word+"'}, 'search_food_"+data.group_id+"', fillFoods)";
	//data['by_category_link:onClick'] = "loadURLJSON({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+"', fillFoods)";
	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+"')";
	
	// Найденные продукты в истрии
	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:onActivate'] = actionStr;
		//data.history[i]['row:onChange'] = actionStr;
		data.history[i]['row:onClick'] = actionStr;
		data.history[i]['row:id'] = 'list_row_'+item.row_num;
		
		//data.history[i]['name:onMouseDown'] = actionStr;
	}
	
	// Найденные продукты в фаворитах
	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) {
			data.food[i]['type'] = '<img src="/images/food_food_01.gif" border="0" width="16" height="18" title="Food" />';
		}
		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" />';
		}
		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]['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_old(event, recipeID) {
	event.stopPropagation();
	window.open('/index.php?page=user_recipe&recipe_id='+recipeID);
}

// Отображение всплывающего окошечка с данными рецепта
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 seeFavoriteContent(event, favoriteID) {
	//alert(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)
{
	document.location='index.php?page=food_log&date='+document.food_log.date.value+'&nutrient_row='+name;
}

/**
 * изменение параметров уже введенной записи фудлога (единица измерения и количество)
 * @param integer id идентификатор записи
 * @return void
 */
function changeFoodLog(id)
{
	var name = 'food_log_'+id+'_measure_id';
	document.food_log.action.value = 'change_food_log';
	document.food_log.food_log_id.value = id;
	if (document.food_log.measure_id.value == '')
	{
		document.food_log.measure_id.value = document.getElementById(name).value;
	}
	document.food_log.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()+";";
}


/**
 * Запрос на подтверждение удаления пользовательской группы в фудлоге
 * @param group_id
 * @param group_name
 * @param date
 */
function confirmDeleteGroup2(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();
}


// onReady
$(function(){
	// Инициализируем поля добавления продуктов
	var groupID = 1;
	var statusGroup = {};
	while (document.getElementById('form_measure_id_'+groupID))
	{
		var measureField = $('#form_measure_id_'+groupID);
		var measureButton = $('#form_measure_button_'+groupID);
	
		(
			function(groupID, measureField)
			{
				statusGroup[groupID] = {
					clicked:   false,
					passEvent: false
				};
				log('Set handlers to groupID: '+groupID);

				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) {
					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);
				});
				
				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;
					}
					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);
		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 foodID = $('#value_food_log_food_id\\['+foodLogID+'\\]').val();
		var groupID = $('#value_food_log_group_id\\['+foodLogID+'\\]').val();
	
		(
			function(foodLogID, measureField, 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);
					}
				});
				
				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, measureButton, foodID, groupID);
	}
});