var shipment_cost = 0;

function add_to_cart(id, type)
{
  var e = _ge('cart_count['+type+']['+id+']');
  var btn = _ge('add_to_cart_btn['+type+']['+id+']');

  if (!e) return;

  if (btn)
  {
    btn.value = 'Подождите...';
    //btn.src = '/img/addingbask.gif';
    btn.disabled = true;
  }

  var url = '/xml/add_to_cart.php';
  var query = 'id='+escape(id)+'&type='+escape(type)+'&count='+escape(e.value);
  diXMLRequest.get(url+'?'+query, add_to_cart_response);
}

function add_to_cart_response(xmlDoc)
{
  var rs = xmlDoc.documentElement.getElementsByTagName('result');

  if (!rs.length) return;

  var ok = rs[0].getAttribute('ok');
  var id = rs[0].getAttribute('id');
  var type = rs[0].getAttribute('type');
  var count = rs[0].getAttribute('count');
  var cart_count = rs[0].getAttribute('cart_count');
  var cart_cost = rs[0].getAttribute('cart_cost');
  var cart_weight = rs[0].getAttribute('cart_weight');
  var cart_volume = rs[0].getAttribute('cart_volume');

  var btn = _ge('add_to_cart_btn['+type+']['+id+']');
  if (btn)
  {
    //btn.src = count ? '/i/cart.gif' : '';
    btn.value = count ? 'Изменить кол-во в корзине' : 'Добавить в корзину';
    btn.disabled = false;
  }

  update_cart_data(cart_count, cart_cost, cart_weight, cart_volume);
}

function add_to_cart2(id, type)
{
  var e = _ge('cart_count['+type+']['+id+']');
  var btn = _ge('add_to_cart_btn2['+type+']['+id+']');

  if (!e) return;

  if (btn)
  {
    //btn.value = 'Подождите...';
    //btn.src = '/img/addingbask.gif';
    btn.disabled = true;
  }

  if(type == 'item_package'){
  for (var i = 0; i < cart_items_ar.length; i++)
  {
    if (cart_items_ar[i].on && cart_items_ar[i].id == id)
    {
      cart_items_ar[i].count = e.value;
    }
  }
  }

  if(type == 'service'){
  for (var i = 0; i < cart_services_ar.length; i++)
  {
    if (cart_services_ar[i].on && cart_services_ar[i].id == id)
    {
      cart_services_ar[i].count = e.value;
    }
  }
  }

  var url = '/xml/add_to_cart.php';
  var query = 'id='+escape(id)+'&type='+escape(type)+'&count='+escape(e.value);
  diXMLRequest.get(url+'?'+query, add_to_cart2_response);
}

function add_to_cart2_response(xmlDoc)
{
  var rs = xmlDoc.documentElement.getElementsByTagName('result');

  if (!rs.length) return;

  var ok = rs[0].getAttribute('ok');
  var id = rs[0].getAttribute('id');
  var type = rs[0].getAttribute('type');
  var count = rs[0].getAttribute('count');
  var price = rs[0].getAttribute('price');
  var cart_count = rs[0].getAttribute('cart_count');
  var cart_cost = rs[0].getAttribute('cart_cost');
  var items_and_counts = rs[0].getAttribute('items_and_counts');
  var item_packages_cost = rs[0].getAttribute('item_packages_cost');
  var services_cost = rs[0].getAttribute('services_cost');
  var item_packages_count = rs[0].getAttribute('item_packages_count');
  var services_count = rs[0].getAttribute('services_count');
  var cart_weight = rs[0].getAttribute('cart_weight');
  var cart_volume = rs[0].getAttribute('cart_volume');

  var btn = _ge('add_to_cart2_btn['+type+']['+id+']');
  if (btn)
  {
    //btn.src = count ? '/i/cart.gif' : '';
    //btn.value = count ? 'Изменить кол-во в корзине' : 'Добавить в корзину';
    btn.disabled = false;
  }

  show_add_to_cart_div(id,type,0);

  update_cart2_data(cart_count, cart_cost, cart_weight, cart_volume);

  //
  if (items_and_counts)
  {
    var a = items_and_counts.split('-');
    var a_ids = a[0].split(',');
    var a_counts = a[1].split(',');
    var a_prices = a[2].split(',');

    price = 0;

    for (var i = 0; i < a_ids.length; i++)
    {
      var item_id = a_ids[i];
      var item_count = a_counts[i];
      var item_price = a_prices[i];

      if (isNaN(item_count) || item_count === '') item_count = 1;

      price += item_count * item_price;

      var e_count = _ge('item_'+id+'_'+item_id+'_count');
      var e_cost = _ge('item_'+id+'_'+item_id+'_cost');

      if (e_count && e_cost)
      {
        e_count.innerHTML = item_count * count;
        e_cost.innerHTML = item_price * item_count * count;
      }
    }
  }
  //

  var e = _ge('cart_cost['+type+']['+id+']');
  if (e) e.innerHTML = count * price;

  _ge('cart_item_packages_count').innerHTML = item_packages_count;
  _ge('cart_item_services_count').innerHTML = services_count;
  _ge('cart_item_packages_cost').innerHTML = item_packages_cost;
  _ge('cart_item_services_cost').innerHTML = services_cost;

  _ge('cart_bottom_cost').innerHTML = cart_cost;
  shipment_onchange();
}

function show_add_to_cart_div(id, type, on)
{
  var e = _ge('add_to_cart_div['+type+']['+id+']');
  if (e)
  {
    e.style.display = on ? 'inline' : 'none'; //block
    //e.style.visibility = on ? 'visible' : 'hidden';
  }
}

function update_cart_data(cart_count, cart_cost, cart_weight, cart_volume)
{
  _ge('cart_total_count').innerHTML = arguments[0];
  _ge('cart_total_cost').innerHTML = Math.round(arguments[1]) + shipment_cost;
}

function update_cart2_data(cart_count, cart_cost, cart_weight, cart_volume)
{
  _ge('cart_total_count').innerHTML = arguments[0];
  _ge('cart_total_cost').innerHTML = Math.round(arguments[1]) + shipment_cost;
  if (typeof arguments[2] != 'undefined' && arguments[2])
    _ge('cart_item_packages_weight').innerHTML = arguments[2];
  if (typeof arguments[3] != 'undefined' && arguments[3])
    _ge('cart_item_packages_volume').innerHTML = arguments[3];
}

function remove_from_cart()
{
  var btn = _ge('remove_from_cart_btn');
  var cart_status_msg = _ge('cart_status_msg');

  if (btn)
  {
    btn.value = 'Подождите...';
    //btn.src = '';
    btn.disabled = true;
  }

  var ar = document.getElementsByTagName('input');
  var ids_ar = [];

  for (var i = 0; i < ar.length; i++)
  {
    if (ar[i].id.substr(0,9) == 'selected[' && ar[i].checked)
      ids_ar[ids_ar.length] = ar[i].id.substr(9,ar[i].id.length - 10).replace('][','-');
  }

  if (!ids_ar.length)
  {
    cart_status_msg.innerHTML = 'Не выделено ни одной позиции';

    btn.value = 'Удалить выделенные позиции';
    //btn.src = '';
    btn.disabled = false;

    return;
  }
  else
  {
    cart_status_msg.innerHTML = '';
  }

  var url = '/xml/remove_from_cart.php';
  var query = 'ids='+escape(ids_ar.join(','));

  diXMLRequest.get(url+'?'+query, remove_from_cart_response);
}

function remove_from_cart_response(xmlDoc)
{
  var rs = xmlDoc.documentElement.getElementsByTagName('result');

  if (!rs.length) return;

  var ok = rs[0].getAttribute('ok');
  var ids = rs[0].getAttribute('ids');
  var cart_count = rs[0].getAttribute('cart_count');
  var cart_cost = rs[0].getAttribute('cart_cost');
  var cart_weight = rs[0].getAttribute('cart_weight');
  var cart_volume = rs[0].getAttribute('cart_volume');

  var ids_ar = ids.split(',');
  for (var i = 0; i < ids_ar.length; i++)
  {
    if (ids_ar[i].substr(0,7) == 'service')
    {
      remove_from_cart_ar(ids_ar[i].substr(8), 'service');
    }
    else if (ids_ar[i].substr(0,12) == 'item_package')
    {
      remove_from_cart_ar(ids_ar[i].substr(13), 'item_package');
    }

    var row_id = ids_ar[i].replace('-','_')+'_row';
    var e = _ge(row_id);
    while (e)
    {
      var e2 = e.nextSibling;
      if (!e2 || !e2.id) e2 = e.nextSibling.nextSibling;
      e.parentNode.removeChild(e);

      e = e2.id && e2.id.substr(0,5) == 'item_' && e2.id.substr(0,13) != 'item_package_' ? e2 : false;
    }
  }

  var btn = _ge('remove_from_cart_btn');
  if (btn)
  {
    btn.value = 'Удалить выделенные позиции';
    //btn.src = '';
    btn.disabled = false;
  }

  var btn2 = _ge('cart_auto_add_services_btn');
  if (btn2)
  {
    //btn2.src = count ? '/i/cart.gif' : '';
    //btn2.value = count ? 'Изменить кол-во в корзине' : 'Добавить в корзину';
    //btn.disabled = false;
    btn2.style.visibility = 'visible';
  }

  check_if_no_services();

  update_cart_data(cart_count, cart_cost, cart_weight, cart_volume);
  update_cart_items_and_services_total();

  cart_check_address();
}

function cart_select_all(type)
{
  var e = _ge('selected_all_'+type+'s');
  var ar = document.getElementsByTagName('input');

  for (var i = 0; i < ar.length; i++)
  {
    if (ar[i].id.substr(0,9+type.length) == 'selected['+type) ar[i].checked = e.checked;
  }
}

function cart_services_exist()
{
  var a = cart_services_ar.length;
  if (a)
  {
    for (var i = 0; i < cart_services_ar.length; i++)
    {
      if (!cart_services_ar[i].on)
        a--;
    }
  }

  return a;
}

function cart_check_address()
{
  if (typeof ur_form == 'undefined') return;

  if (cart_services_exist())
  {
    ur_form.setInputProperty('address', 'necessary', true);
  }
  else
  {
    ur_form.setInputProperty('address', 'necessary', false);
  }

  ur_form.check('address');

  return true;
}

function cart_auto_add_services()
{
  var btn2 = _ge('cart_auto_add_services_btn');

  if (!btn2) return;

  if (cart_services_exist() && !confirm('Вы уверены? При этом все ранее добавленные услуги будут удалены.')) return;

  btn2.value = 'Подождите...';
  //btn2.src = '/img/addingbask.gif';
  btn2.disabled = true;

  var url = '/xml/auto_add_services.php';
  var query = '';
  diXMLRequest.get(url, cart_auto_add_services_response);
}

function cart_auto_add_services_response(xmlDoc)
{
  var rs = xmlDoc.documentElement.getElementsByTagName('result');

  if (!rs.length) return;

  var ok = rs[0].getAttribute('ok');
  var cart_count = rs[0].getAttribute('cart_count');
  var cart_cost = rs[0].getAttribute('cart_cost');
  var removed_services_ar = rs[0].getAttribute('removed_services_list').split(',');

  var btn2 = _ge('cart_auto_add_services_btn');
  if (btn2)
  {
    //btn2.src = count ? '/i/cart.gif' : '';
    btn2.value = 'Автоматически подобрать услуги';
    btn2.disabled = false;
    //btn2.style.visibility = 'hidden';
  }

  // removing old services
  for (var i = 0; i < removed_services_ar.length; i++)
  {
    var e = _ge('service_'+removed_services_ar[i]+'_row');
    if (e) e.parentNode.removeChild(e);
  }

  var no_services_row = _ge('no_services_row');
  if (no_services_row) no_services_row.parentNode.removeChild(no_services_row);

  cart_services_ar = new Array;
  //

  // adding new services
  var rs2 = xmlDoc.documentElement.getElementsByTagName('service');
  var tr, td1, td2, td3, td4, td5;
  var a = _ge('cart_services_footer');

  for (var i = 0; i < rs2.length; i++)
  {
    var id = rs2[i].getAttribute('id');

    try {
      tr = document.createElement('<tr id="service_'+id+'_row" class="service">');
    } catch (e) {
      tr = document.createElement('tr');
      tr.setAttribute('id','service_'+id+'_row');
      tr.setAttribute('class','service');
    }

    td1 = document.createElement('td');
    td1.innerHTML = '<input type="checkbox" id="selected[service]['+id+']" name="selected[service]['+id+']" value="1" />';

    td2 = document.createElement('td');
    td2.innerHTML = '<label for="selected[service]['+id+']">'+rs2[i].getAttribute('title')+' (арт. '+rs2[i].getAttribute('marking')+')</label>'; // <a href="'+rs2[i].getAttribute('href')+'">Описание &raquo;</a>

    td3 = document.createElement('td');
    td3.style.textAlign = 'right';
    td3.innerHTML = rs2[i].getAttribute('price')+' руб.';

    /*
    td4 = document.createElement('td');
    td4.style.textAlign = 'center';
    td4.innerHTML = rs2[i].getAttribute('count');
    */

    td4 = document.createElement('td');
    td4.style.textAlign = 'center';
    td4.innerHTML = '<input type="text" id="cart_count[service]['+id+']" value="'+rs2[i].getAttribute('count')+'" size="2" style="width:85%; text-align: right;" onfocus="show_add_to_cart_div('+id+',\'service\',1);" onblur="setTimeout(\'show_add_to_cart_div('+id+',\\\'service\\\',0)\', 500)" onkeypress="return filter_digit(event);" />';

    td5 = document.createElement('td');
    td5.style.textAlign = 'right';
    td5.innerHTML = '<div class="save_cart_cnt_div" id="add_to_cart_div[service]['+id+']"><input type="button" value="OK" onclick="add_to_cart2('+id+',\'service\');" id="add_to_cart2_btn[service]['+id+']" /></div>'+
      '<span id="cart_cost[service]['+id+']">'+rs2[i].getAttribute('cost')+'</span> руб.';

    tr.appendChild(td1);
    tr.appendChild(td2);
    tr.appendChild(td3);
    tr.appendChild(td4);
    tr.appendChild(td5);

    a.parentNode.insertBefore(tr, a);

    cart_services_ar[cart_services_ar.length] = {id:id,count:rs2[i].getAttribute('count'),price:rs2[i].getAttribute('price'),on:1};
  }
  //

  check_if_no_services();

  update_cart_data(cart_count, cart_cost);
  update_cart_items_and_services_total();

  cart_check_address();
}

function check_if_no_services()
{
  var ok = 0;
  for (var i = 0; i < cart_services_ar.length; i++)
  {
    if (cart_services_ar[i].on)
    {
      ok = 1;
      break;
    }
  }

  if (!ok && !_ge('no_services_row'))
  {
    var a = _ge('cart_services_footer');
    var tr,td1;

    try {
      tr = document.createElement('<tr id="no_services_row">');
    } catch (e) {
      tr = document.createElement('tr');
      tr.setAttribute('id','no_services_row');
    }

    try {
      td1 = document.createElement('<td colspan="5">');
    } catch (e) {
      td1 = document.createElement('td');
      td1.setAttribute('colspan','5');
    }
    td1.innerHTML = '<b>Услуги не заказаны</b>';

    tr.appendChild(td1);

    a.parentNode.insertBefore(tr, a);
  }
}

function remove_from_cart_ar(id, type)
{
  if (type == 'item_package') type = 'item';

  for (var i = 0; i < eval('cart_'+type+'s_ar').length; i++)
  {
    if (eval('cart_'+type+'s_ar')[i].id == id)
    {
      //eval('cart_'+type+'s_ar').splice(i, 1);
      eval('cart_'+type+'s_ar')[i].on = 0;
      return;
    }
  }
}

function update_cart_items_and_services_total()
{
  if (typeof cart_el_ar == 'undefined') return;

  var call_shipment_onchange = typeof arguments[0] == 'undefined' ? true : arguments[0];

  p_count = 0;
  p_cost = 0;

  for (var i = 0; i < cart_items_ar.length; i++)
  {
    if (cart_items_ar[i].on)
    {
      p_count += cart_items_ar[i].count * 1;
      p_cost += cart_items_ar[i].count * cart_items_ar[i].price;
    }
  }

  s_count = 0;
  s_cost = 0;

  for (var i = 0; i < cart_services_ar.length; i++)
  {
    if (cart_services_ar[i].on)
    {
      s_count += cart_services_ar[i].count * 1;
      s_cost += cart_services_ar[i].count * cart_services_ar[i].price;
    }
  }

  sh_cost = get_shipment_cost();

  cart_el_ar.p_count.innerHTML = p_count;
  cart_el_ar.p_cost.innerHTML = p_cost;
  cart_el_ar.s_count.innerHTML = s_count;
  cart_el_ar.s_cost.innerHTML = s_cost;
  cart_el_ar.sh_cost.innerHTML = sh_cost;
  cart_el_ar.bottom_cost.innerHTML = p_cost + s_cost + sh_cost;

  _ge('cart_total_count').innerHTML = p_count + s_count;
  _ge('cart_total_cost').innerHTML = p_cost + s_cost + sh_cost;

  // shipment
  var e = _ge('shipment');
  if (s_count)
  {
    e.disabled = true;
    e.checked = true;
  }
  else
  {
    e.disabled = false;
  }

  cart_el_ar.shipment_type_str.innerHTML = shipment_types_ar[get_shipment_type()];

  if (call_shipment_onchange) shipment_onchange();
  //
}

function make_order()
{
  var i = confirm('Сделать заказ? Вы уверены?');

  if (!i)
  {
    ur_form.inputs.order_submit.disabled = false;
  }
  else
  {
    _ge('shipment').disabled = false;
  }

  return i;
}

function shipment_onchange()
{
  var e = _ge('shipment');

  toggle_shipment(e.checked);
  update_cart_items_and_services_total(false);
}

function toggle_shipment(state)
{
  var e = _ge('shipment_details_span');

  if (state)
  {
    e.style.visibility = 'visible';
  }
  else
  {
    e.style.visibility = 'hidden';
  }

  ur_form.setInputProperty('address', 'necessary', state);

  var date = new Date();
  date.setFullYear(date.getFullYear() + 1);
  setCookie('shipment_on', state ? 1: 0, date, '/');
}

function shipment_zone_onchange()
{
  var e = _ge('shipment_zone_id');

  var date = new Date();
  date.setFullYear(date.getFullYear() + 1);
  setCookie('shipment_zone_id', e.value, date, '/');

  shipment_map_over(e.value);

  update_cart_items_and_services_total(false);
}

function shipment_map_over(id)
{
  var e = _ge('shipment_map_img');

  if (e && id >= 1 && id <= 4) e.src = 'i/shipment/map'+id+'.gif';
}

function shipment_map_onclick(id)
{
  var e = _ge('shipment_zone_id');
  e.value = id;
  e.selectedIndex = id - 1;
  shipment_zone_onchange();

  show_shipment_map_div(0);

  return false;
}

function show_shipment_map_div(on)
{
  var e = _ge('shipment_map_div');

  if (e)
  {
    if (on == -1) e.style.display = e.style.display != 'block' ? 'block' : 'none';
    else e.style.display = on ? 'block' : 'none';
  }

  return false;
}

function get_shipment_type()
{
  p_weight = 0;

  for (var i = 0; i < cart_items_ar.length; i++)
  {
    if (cart_items_ar[i].on)
    {
      p_weight += cart_items_ar[i].weight * 1;
    }
  }

  return (p_weight > max_weight_for_car) ? 2 : 1;
}

function get_shipment_cost()
{
  var e = _ge('shipment_zone_id');
  var e2 = _ge('shipment');

  shipment_cost = 0;

  if (!e || !e2 || !e2.checked || !shipment_zones_ar[e.value]) return 0;

  var s_count = 0;

  for (var i = 0; i < cart_services_ar.length; i++)
  {
    if (cart_services_ar[i].on)
    {
      s_count += cart_services_ar[i].count * 1;
    }
  }

  if (e.value == 1 && s_count > 5) return 0;

  shipment_cost = shipment_zones_ar[e.value]['price'+get_shipment_type()];
  return shipment_cost;
}
