var diCart =
{
  add: function(id, count)
  {
    this.btn_action(id, 'wait');

    var url = '/xml/cart.php';
    var query = 'action=add&id='+escape(id)+'&type=items&count='+escape(count);
    diXMLRequest.get(url+'?'+query, diCart.response);

    return false;
  },

  update: function(id, count)
  {
    this.btn_action(id, 'hold');

    var url = '/xml/cart.php';
    var query = 'action=update&id='+escape(id)+'&type=items&count='+escape(count);
    diXMLRequest.get(url+'?'+query, diCart.response);

    return false;
  },

  add_more: function(id, difference)
  {
    this.btn_action(id, 'hold');

    var url = '/xml/cart.php';
    var query = 'action=add_more&id='+escape(id)+'&type=items&difference='+escape(difference);
    diXMLRequest.get(url+'?'+query, diCart.response);

    return false;
  },

  response: function(xml)
  {
    var rs = xml.documentElement.getElementsByTagName('result');
    var cart_rs = xml.documentElement.getElementsByTagName('cart');

    if (rs.length)
    {
      var ok = rs[0].getAttribute('ok') * 1;
      var id = rs[0].getAttribute('id');
      var count = rs[0].getAttribute('count') * 1;
      var price = rs[0].getAttribute('price') * 1;
      var action = rs[0].getAttribute('action');

      switch (action)
      {
        case 'add_more':
          var e = _ge('cart_count['+id+']');
          var e2 = _ge('cart_cost['+id+']');
          if (e) e.innerHTML = count;
          if (e2) e2.innerHTML = count * price;
          break;
      }

      diCart.btn_action(id, 'release');
    }

    if (cart_rs)
    {
      var total_count = cart_rs[0].getAttribute('total_count');
      var total_cost = cart_rs[0].getAttribute('total_cost');

      diCart.refresh(total_count, total_cost);
    }
  },

  refresh: function(total_count, total_cost)
  {
    var cart_total_count = _ge('head_cart[total_count]');
    var cart_total_cost = _ge('head_cart[total_cost]');

    if (cart_total_count) cart_total_count.innerHTML = total_count;
    if (cart_total_cost) cart_total_cost.innerHTML = divide3dig(total_cost, '.');

    var cart_total_cost = _ge('cart[total_cost]');
    if (cart_total_cost) cart_total_cost.innerHTML = divide3dig(total_cost, ' ');
  },

  btn_action: function(id, action)
  {
    var btn = _ge('add_to_cart_btn['+id+']');

    if (btn)
    {
      switch (action)
      {
        case 'hold':
          //btn.value = 'Подождите...';
          //btn.src = '/img/addingbask.gif';
          btn.disabled = true;
          break;

        case 'release':
          //btn.value = 'Подождите...';
          //btn.src = '/img/addingbask.gif';
          btn.disabled = false;
          break;
      }
    }
  }
}

