/**
 * GlobalBuy is a class that allows for putting stuff into the basket with Ajax.
 * It also allows for adding or subtracting products currently in basket
 */
var GlobalBuy = Class.extend({

  topBuyContainerButtons: null,
  listBuyContainerButtons: null,
  boxBuyContainerButtons: null,
  detailed: null,
  
  init: function () {
    this.setup();
  },

  setup: function () {
    this.findBuyContainers();
    if (this.topBuyContainerButtons != null) {
      this.findTopBuyButtons();
    }
    if (this.listBuyContainerButtons != null) {
      this.findListBuyButtons();
    }
    if (this.boxBuyContainerButtons != null) {
      this.findBoxBuyButtons();
    }
    if (this.detailed != null) {
      this.findDetaileds();
    }
  },

  findBuyContainers: function () {
    this.topBuyContainerButtons = jQuery('#top_buyed_products > li > form > button');
    this.listBuyContainerButtons = jQuery('.webshop-category-products-container-inner > form > div.product_list_box > table.product_list_table > tbody');
    //this.boxBuyContainerButtons = jQuery('.webshop-category-products-container-inner > form > div.product_box_box > table.product_box_table');

    /* FOR THE FRONTPAGE */ this.boxBuyContainerButtons = jQuery('div.box-holder > div.holder > div.frame > div.box > form.product-form > fieldset');
    if (this.boxBuyContainerButtons.length === 0) {
      //this.boxBuyContainerButtons = jQuery('.webshop-category-products-container-inner > div#grid_list > div.box-holder > div.holder > div.frame > form.webshop-product-loop > div.box > fieldset');
      this.boxBuyContainerButtons = jQuery('div#grid_list > div.box-holder > div.holder > div.frame > form.webshop-product-loop > div.box > fieldset');
    }

    this.detailed = jQuery('span.buy_cell');
    //
  },

  findTopBuyButtons: function () {
    for (var i = 0; i < this.topBuyContainerButtons.length; i++) {
      var btn = $(this.topBuyContainerButtons[i]);
      var hidden = btn.next();
      this.addEvents(btn, hidden);
    }
  },

  findListBuyButtons: function () {
    for (var i = 0; i < this.listBuyContainerButtons.length; i++) {
      var ta = $(this.listBuyContainerButtons[i]).getElementsByTagName("td");
      var btn = null;
      for (var j = 0; j < ta.length; j++) {
        if (ta[j].className == 'button_td') {
          var btns = ta[j].getElementsByTagName('button');
          btn = btns[0];
        }
      }
      var tr = $(btn.parentNode.parentNode); // tr
      var tds = tr.getElementsByTagName('td');
      var td = tds[1];
      var inputs = td.getElementsByTagName('input');
      var vis = inputs[0];
      var hidden = inputs[1];
      this.addListEvents(btn, vis, hidden);
    }
  },

  findBoxBuyButtons: function () {

    for (var i = 0; i < this.boxBuyContainerButtons.length; i++) {

      //var ta = $(this.boxBuyContainerButtons[i]).getElementsByTagName("td");

      var ins = $(this.boxBuyContainerButtons[i]).getElementsByTagName("input");
      var btns = $(this.boxBuyContainerButtons[i]).getElementsByTagName("button");

      var btn = btns[0];
      var vis = ins[0];
      var hidden = ins[1];

      this.addListEvents(btn, vis, hidden);
    }
  },

  findDetaileds: function () {
    for (var i = 0; i < this.detailed.length; i++) {
      var ins = $(this.detailed[i]).getElementsByTagName("input");
      var btns = $(this.detailed[i]).getElementsByTagName("button");

      var btn = btns[0];
      var vis = ins[0];
      var hidden = ins[1];

      this.addListEvents(btn, vis, hidden);
    }
  },

  addListEvents: function (btn, vis, hid) {
    jQuery(vis).bind('keyup', function() {
      var val = hid.value;
      var n = vis.name;
      var id = n.replace('p[', '');
      id = id.replace('][qty2]', '');
      var s = val.split('::');
      s[0] = id;
      s[2] = vis.value;
      s[3] = s[3].replace(',', '.');
      hid.value = s[0] + '::' + s[1] + '::' + s[2] + '::' + s[3];
    });

    jQuery(btn).bind('click', function() {
      gb.parse(hid);
      //return false;
    });
  },

  addEvents: function (btn, hidden) {
    jQuery(btn).bind('click', function() {
      gb.parse(hidden);
    });
  },

  parse: function (hiddenElement) {

    var val = hiddenElement.value;
    var splits = val.split("::");
    var pId = splits[0];
    var pName = splits[1];
    var pAmount = splits[2];
    var pPrice = splits[3];
    var splitted = pPrice.split(',');
    if (splitted.length == 2) {
      var split2 = splitted[1];
      if (split2.length <= 2) {
        pPrice = splitted[0] + '.' + splitted[1];
      }
    }

    ab.addToBasket(pId, pAmount, pName, pPrice);

  }

});



