// Lang

Cart = new (function() {
   var _this = this
   var _data = {};
   
   _this.constructor = undefined;

   /* TODO: Deprecated. */
   _this.getObject = function() {
      Utils.log('Use of deprecated function Cart.getObject()');
      return _data;
   }
   
   _this.setData = function(obj) {
      _data = obj;
   }
   
   _this.getData = function() {
      return _data;
   }

   _this.activateBox = function(form) {
      Utils.log('Use of deprecated function Cart.activateBox()');
      Box.activate(form);
   }
      
   _this.hasGiftVoucher = function() {
      if ((typeof _data == 'object') && (typeof _data.products == 'object')) {
         var products = _data.products;
         for (var i = 0; i < products.length; i++) {
            if (products[i].ptype == 4)
               return true;
         }
      }
      return false;
   }
      
   _this.redraw = function() {
      $('#cartBoxTbl thead, #cartBoxTbl tbody').empty();
      
      if ((typeof Page == 'object') && (typeof Page.redrawCart == 'function')) {
         //alert('before Page.redrawCart');
         Page.redrawCart(_data);
      }
         
      if (_data.products.length == 0 && _data.vouchers.length == 0) {
         $('#cart thead').append('<tr><td colspan="2" align="left">'+ L('TXT_CART_IS_EMPTY') +'</td></tr>');
      }
      
      var num = 0;
      
      for(var i in _data.products)
      {
         var descr, product = _data.products[i];
          
         if (product.ptype == Config.ITEM_TYPE_GENERIC || product.ptype == Config.ITEM_TYPE_EXTENSION)
            continue; /* Do not show DUMMY boxes */
         
         if(num++ > 9) break;
         
         if (product.descr.length > 11)
            descr = product.descr.substr(0, 11) + '...';
         else
            descr = product.descr;
         
         $('#cartBoxTbl tbody').append(
            '<tr>'+
            '<td>'+ product.qty +'x '+ descr +'</td>'+
            '<td align="right">' + Lang.price(product.price, 2, false) +'</td>'+
            '</tr>');
      }
      
      for(var i in _data.vouchers)
      {
         var descr, product = _data.vouchers[i];
         
         if(num++ > 9) break;
          
         if (product.descr.length > 11)
            descr = product.descr.substr(0, 11) + '...';
         else
            descr = product.descr;
         
         $('#cartBoxTbl tbody').append(
            '<tr>'+
            '<td> 1 x '+ descr +'</td>'+
            '<td align="right">' + Lang.price(product.price, 2, false) +'</td>'+
            '</tr>');
      }
      
      $('#cartBoxTbl tfoot tr:nth-child(2) td:last-child').text(Lang.price(_data.total, 2, false));
      
      $('#cartBox').css('display', (num ? 'block' : 'none'));
      $('#loginBox').css('display', (num ? 'none' : 'block'));
   },
      
   _this.update = function() {
      Utils.request({
         url: '/backend/get_cart.php',
         success: function(data) {
            _data = data;
            _this.redraw();
         }
      });
   }
      
   _this.removeProduct = function(id, type) {
      Utils.request({
         url: '/backend/remove_from_cart.php',
         type: 'GET',
         data: { id : id, type : type },
         success: function(cart) {
            if ((typeof Page == 'object') && (typeof Page.removeFromCart == 'function'))
               Page.removeFromCart(id, cart);
             
             _data = cart;
            _this.redraw();
         }
      });
   }

   _this.updateProduct = function(id, quantity) {
      Utils.request({
         url: '/backend/update_cart.php',
         type: 'GET',
         data: { id: id, quantity: quantity },
         success: function(cart) {
            _data = cart;
            _this.redraw();
         },
         error: function(errno, error) {
            alert(error);
         }
      });
   },
      
   _this.addProduct = function(type) {
      var data;

      switch(type) {
      case 'standard':
         if (arguments.length != 3) {
            return;
         }
         data = { tag: 'standard', id: arguments[1], quantity: arguments[2] }
         break;
            
      case 'voucher':
         if (arguments.length != 3) {
            return;
         }
         data = { tag: 'voucher', value: arguments[1], quantity: arguments[2] }
         break;
            
      case 'ocb':
         if (arguments.length != 3) {
            return;
         }
            
         data = { tag: 'ocb', id: arguments[1], quantity: arguments[2] }
         break;
            
      case 'campaign':
         if (arguments.length != 2) {
            return;
         }
            
         data = { tag: 'campaign', code: arguments[1] }
         break;
           
      default:
         return;
      }
      
      Utils.request({
         url: '/backend/add_to_cart.php',
         data: data,
         type: 'GET',
         success: function(cart)
         {
            if (cart != null)
            {
               if ((typeof Page == 'object') && (typeof Page.addToCart == 'function'))
                  Page.addToCart(cart);
            }
            
            _data = cart;
            _this.redraw();
            
            if(type == 'campaign') return;
            
            Utils.showDialog({
               title   : L('TTL_DIALOG_ADD_CART'),
               text    : L('TXT_DIALOG_ADD_CART'),
               icon    : '/images/ico/clean.png',
               buttons : [ L('BTN1_DIALOG_ADD_CART'), L('BTN2_DIALOG_ADD_CART') ],
               handler : function(n) {
                  if (n == 1) {
                     location = 'https://www.liveit.dk/shoppingcart';
                  } 
                  $(this).remove();
               }
            });
         },
         error: function(errno, error) {
            Utils.alert(error);
         }
      });
   }

});

