// Функция создает cookie.
function cookie_create(name)
{
  document.cookie = name + "=;path=/";
}

// Функция удаляет cookie.
function cookie_delete(name)
{
  expireDate = new Date;
  expireDate.setDate(expireDate.getDate() - 1);
  document.cookie = name + "=;expires=" + expireDate.toGMTString() + ";path=/";
}

// Функция чистит cookie.
function cookie_clean(name)
{
  cookie_set_value(name, '');
}

// Функция устанавливает значение cookie.
function cookie_set_value(name, value)
{
  document.cookie = name + "=" + value + ";path=/";
}

// Функция устанавливает значение элемента cookie по индексу.
function cookie_set_value_by_index(name, index, value)
{
  all_value = cookie_get_value(name);
  if (all_value == null || all_value == "")
    return;
  all_value_mas = all_value.split('|');
  all_value_mas[index] = value;
  new_all_value = "";
  for (var i = 0; i < all_value_mas.length; i++)
    new_all_value += "|" + all_value_mas[i];
  new_all_value = new_all_value.substr(1, new_all_value.length - 1);
  cookie_set_value(name, new_all_value);
}

// Функция возвращает значение cookie.
function cookie_get_value(name)
{
  var cookie = " " + document.cookie;
  var search = " " + name + "=";
  var value = null;
  var offset = 0;
  var end = 0;
  if (cookie.length > 0)
  {
    offset = cookie.indexOf(search);
    if (offset != -1)
    {
      offset += search.length;
      end = cookie.indexOf(";", offset)
      if (end == -1)
        end = cookie.length;
      value = unescape(cookie.substring(offset, end));
    }
  }
  return value;
}

// Функция возвращает значение элемента cookie по индексу.
function cookie_get_value_by_index(name, index)
{
  all_value = cookie_get_value(name);
  all_value_mas = all_value.split('|');
  return all_value_mas[index];
}

// Функция удаляет значение элемента cookie по индексу.
function cookie_delete_value_by_index(name, index)
{
  all_value = cookie_get_value(name);
  if (all_value == null || all_value == "")
    return;
  all_value_mas = all_value.split('|');
  new_all_value = "";
  for (var i = 0; i < all_value_mas.length; i++)
    if (i != index)
      new_all_value += "|" + all_value_mas[i];
  new_all_value = new_all_value.substr(1, new_all_value.length - 1);
  cookie_set_value(name, new_all_value);
}

// Функция удаляет значение элемента cookie по значению.
function cookie_delete_value_by_name(name, value_name)
{
  all_value = cookie_get_value(name);
  if (all_value == null || all_value == "")
    return;
  all_value_mas = all_value.split('|');
  new_all_value = "";
  for (var i = 0; i < all_value_mas.length; i++)
    if (all_value_mas[i] != value_name)
      new_all_value += "|" + all_value_mas[i];
  new_all_value = new_all_value.substr(1, new_all_value.length - 1);
  cookie_set_value(name, new_all_value);
}

// Функция возвращает количество элементов в cookie.
function cookie_get_count(name)
{
  all_value = cookie_get_value(name);
  if (!all_value)
    return 0;
  all_value_mas = all_value.split('|');
  return all_value_mas.length;
}

// Функция добавляет новый элемент в cookie.
function cookie_add_value(name, value, check_uniq)
{
  old_value = cookie_get_value(name);
  if (old_value == null || old_value == "")
    cookie_set_value(name, value);
  else
  {
    if (check_uniq)
    {
      all_value_mas = old_value.split('|');
      for (var i = 0; i < all_value_mas.length; i++)
        if (all_value_mas[i] == value)
          return;
    }
    cookie_set_value(name, old_value + "|" + value);
  }
}
