// JavaScript for Web-UI-library

GST = 0.125

Events['.cart-item'] = function() {
  var inc = this.$('.increment');
  var dec = this.$('.decrement');
  var addbtn = this.$('.add-button');
  if (inc) inc.addEvent('click', incitem);
  if (dec) dec.addEvent('click', decitem);
  if (addbtn) addbtn.addEvent('click', addbutton);
}

/* === Shopping cart === */

function addbutton() {
  var item = this.ancestor('.cart-item');
  var qtychanger = item.$('.quantity');
  var itemid = item.id.substr(5);
  var numincart = parseInt(qtychanger.getAttribute('val'), 10);
  qtychanger.style.display = 'block';
  this.style.display = 'none';
  item.addClass('disabled');
  this.disabled = true;
  qtychanger.ajaxseq = ajax(BASEURL + 'cart-add?format=json', {'item': itemid, 'num': numincart + 1}, itemhandler);
}

function incitem() {
  var item = this.ancestor('.cart-item');
  var qtychanger = item.$('.quantity');
  var bulk = qtychanger.getAttribute('bulk') ? 1 : '';
  var numincart = parseInt(qtychanger.getAttribute('val'), 10);
  var itemid = item.id.substr(5);
  item.addClass('disabled');
  this.disabled = true;
  qtychanger.ajaxseq = ajax(BASEURL + 'cart-add?format=json',
                            {'item': itemid, 'num': numincart + 1, 'bulk': bulk},
                            itemhandler);
}

function decitem() {
  var item = this.ancestor('.cart-item');
  var qtychanger = item.$('.quantity');
  var bulk = qtychanger.getAttribute('bulk') ? 1 : '';
  var numincart = parseInt(qtychanger.getAttribute('val'), 10);
  var itemid = item.id.substr(5);
  item.addClass('disabled');
  this.disabled = true;
  qtychanger.ajaxseq = ajax(BASEURL + 'cart-add?format=json',
                            {'item': itemid, 'num': numincart - 1, 'bulk': bulk},
                            itemhandler);
}

Cartdata = {
  'numtotal': null,
  'basediscounted': null,
  'totaldiscounted': null,
  'pnp': null
};

function itemhandler(data, stat, req, ajaxseq_) {
  var item = $('#item-' + data['item']);
  var qtychanger = item.$('.quantity');
  if (ajaxseq_ != qtychanger.ajaxseq) return;
  qtychanger.setAttribute('val', data['num']);
  item.removeClass('disabled');
  var inc = item.$('.increment');
  var dec = item.$('.decrement');
  inc.disabled = false;
  dec.disabled = false;
  qtychanger.fireEvent('change');
  Cartdata = data;
  updatecartinfo();
}

function updatecartdata() {
  var req = ajax(BASEURL + 'cart?format=json');
  Cartdata = req[0];
}

function updatecartinfo() {
  var toupdate = $$("#cart-info-items, #cart-info-price, #cart-table-price");
  for (var i=0; i<toupdate.length; i++) {
    toupdate[i].updatevalue();
  }
}

function numincart() {
  return Cartdata['numtotal'];
}

function cartbasediscounted() {
  /* Total price in cart, including P&P and GST
   */
  return Cartdata['basediscounted'];
}

function carttotaldiscounted() {
  /* Total price in cart, including P&P and GST
   */
  return Cartdata['totaldiscounted'];
}

function pnpincart() {
  return Cartdata['pnp'];
}
