var Webshop = Class.create({

  initialize: function() {
    var frm = $(arguments[0]) || false;
    if (frm) {
      frm.onsubmit = function() {
        return this.submit(frm);
      }.bind(this);
    }
  },

  submit: function(frm) {
    frm.request({
      parameters:'&xhr=true',
      onComplete: function(xml) {
        this.handleResponse(xml.responseText.evalJSON());
      }.bind(this)
    });
    return false;
  },

  handleResponse: function(json) {
    if (json['error']['msg']) {
      alert('Error number: '+json['error']['number']+'\n'+json['error']['msg']);
      return;
    }
    if (json['alert']['msg']) {
      alert(json['alert']['msg']);
      return;
    }
    if (json['message']['msg']) {
      alert(json['message']['msg']);
    }
    if (json['location']['href']) {
      window.location.href = json.location.href;
    }

    for (var x in json['basket']) {
      var pro = json['basket'][x];
      var qty = new Number(pro['qty']);
      var price = new Number(pro['price']);

      var nms = $$('input[name="p['+x+'][qty_dontadd]"]');
      for (var i = 0; i < nms.length; i++) {
        var n = $(nms[i]);
        var p = n.parentNode;
        p = p.parentNode;
        var ch = p.childNodes;
        for (var ii = 0; ii < ch.length; ii++) {
          var c = ch[ii];
          var cls = c.className;
          var clss = cls.split(" ");
          for (var iii = 0; iii < clss.length; iii++) {
            if (clss[iii] == 'webshop_basket_total') {

              var newPrice = "" + (qty * price);
              newPrice = newPrice.replace('.', '_');
              newPrice = newPrice.replace(',', '.');
              newPrice = newPrice.replace('_', ',');

              var splits = newPrice.split(',');
              if (splits[1]) {
                var spl = splits[1];
                if (spl.length === 1) {
                  newPrice += '0';
                }
              } else if (!splits[1]) {
                newPrice += ',00';
              }

              newPrice += ' DKK'; // Until we have a working currency object

              $(c).update(newPrice);
            }
          }
        }


        //n.up(element, expression, index)
      }
    }

    

  }

});


var delBasketRow = function() {
  var ele = $(arguments[0]) || false;
  if (!ele) return;
  var tr = ele.up('tr');
  var op = tr.hasClassName('webshop_basket_removed') || false;
  switch (op) {
    case false:
      ele.value = 0;
//      tr.setOpacity(.5);
      tr.addClassName('webshop_basket_removed');
      break;
    case true:
      ele.value = ele.defaultValue;
//      tr.setOpacity(1);
      tr.removeClassName('webshop_basket_removed');
      break;
  }
}

var addBasketAddress = function(qty,holder,key) {
  if (holder && qty) {
    holder = $(holder);
    qty = Number(qty);
    var skel = $('webshop_basket_address_skel');
    var cur_num = holder.childNodes.length;
    var qty_all = 0;
    $A(holder.childNodes).each(function(ele){
      var qty = $(ele).select('.webshop_tmp_qty')[0];
      qty_all += Number(qty.value);
    });
    if (qty_all < qty) {
      var rest = qty - qty_all;
      var n = holder.appendChild(skel.cloneNode(true));
      n.id = '';
      $(n).style.display = 'block';
      $(n).select('select').each(function(e){e.selectedIndex = 60})
      $(n).select('.webshop_tmp_qty')[0].value = rest;
      $(n).select('input').each(function(ele){
        var name = ele.name;
        ele.name = 'addresses['+key+']['+cur_num+']['+name+']';
      });
      $(n).select('select').each(function(ele){
        var name = ele.name;
        ele.name = 'addresses['+key+']['+cur_num+']['+name+']';
      });
    }
  }
}

var basketAddressCheck = function(ele) {
  ele = $(ele);
//  ele.disabled = true;
  var v = $F(ele);
  if (Number(v)) {
    var holder = ele.up('table').up('td');
    var max = $(holder.up('tr').previousSibling).select('.webshop_basket_table_qty')[0].value;
    var qty_all = 0;
    $(holder).select('.webshop_tmp_qty').each(function(ele){
      var qty = ele;
      qty_all += Number(qty.value);
    });
    if (qty_all > max) {
      ele.value = ele.value - 1;
      basketAddressCheck(ele);
      ele.focus();
    }
  }
  //ele.disabled = false;
  return false;
}

var addOne = function (el) {
  var v = el.value;
  v++;
  el.value = v;
}

var removeOne = function (el) {
  var v = el.value;
  v--;
  el.value = v;
}