var widgets = {
    addToCart: function(shop_id, product_id, price, obj) {//{{{
        var amount   = 1;
        product_id   = Number(product_id);
        price    = Number(price);

    // Get price dynamically
    $.post('/my/s3/export/shop/product.php', {
        'mode'       : 'json',
        'action'     : 'get-product',
        'shop_id'     : shop_id,
        'product_id'   : product_id
      },
      function (data) {//{{{
        if (data && data.product_price != undefined) {
          price = Number(data.product_price);
        };
        var result = true, amount_limit = amount;

        /* If window._shop.products.PRODUCT_ID.amount is set, then we must limit
        * amount to that value */
        var has_amount_limit = (data.product_amount_limit == '1' ? true : false);
        if (has_amount_limit) {
          amount_limit = 99;
          if (amount_limit < amount) {
            amount = amount_limit;
          }
        };

        // Input is valid?
        if (!isNaN(shop_id)&&(shop_id>0) && !isNaN(product_id) && (product_id>0)
          &&!isNaN(price)&&!isNaN(amount)&&(amount>0)) {     
          // Temporary variables
          var cart_new = "", cart_item_split, found = false, total_amount = 0, ta, e;

          // Read cookies  
          var total = readCookie('CART_TOTAL_'+shop_id);
          var cart = unescape(readCookie('CART_'+shop_id));

          // Split cart cookie into product_id=amount chunks
          var cart_split = cart.split(';');

          // Ensure total is of number data type
          if (isNaN(total)) total = Number(total);

          // Loop though cart item chunks  
          for (var i=0; i < cart_split.length; i++){
            // Split into product_id, amount
            cart_item_split = cart_split[i].split("=");

            // Valid?
            if (cart_item_split.length == 2){
              if (!found && cart_item_split[0] == product_id) {
                if (! (has_amount_limit && cart_item_split[1] >= amount_limit))
                  total = Number(total) + price * amount;
                ta = amount + Number(cart_item_split[1]);
                 //Amount check
                //if (ta > amount_limit)  {
                 // ta = amount_limit;
                 // result = false;
                 // widgets.msg(window._s3Lang['JS_SHOP_PRODUCT_AMOUNT_TOTAL']
                 //       + ': ' + amount_limit, obj);
               // }

                found = true;

                if (cart_new!="") cart_new = cart_new + ";";                    
                cart_new = cart_new + product_id + "=" + ta;

                // Update total amount
                total_amount += ta;
              } else { // This is another product_id. So keep it w/out modifications
                if (cart_new!="") cart_new = cart_new + ";";                    
                cart_new = cart_new + cart_item_split[0] + "=" + cart_item_split[1];

                // Update total amount
                total_amount += Number(cart_item_split[1]);
              }
            } // ## if valid chunk
          } // ## for

          // The product_id is not found in the cart  
          if (!found) {
            if (cart_new!="") cart_new = cart_new + ";";                    
            cart_new = cart_new + product_id + "=" + amount;
            total = Number(total) + price * amount;

            // Update total amount
            total_amount += amount;
          }   

          // Round total price          
          total = Math.round(total*100)/100;          

          // Write cookies         
          createCookie('CART_'+shop_id,cart_new,10);
          createCookie('CART_TOTAL_'+shop_id,total,10);
          createCookie('CART_TOTAL_AMOUNT_'+shop_id,total_amount,10);

          // Update DOM nodes
          e = document.getElementById('cart_total');
          if (e) e.innerHTML = total;
          e = document.getElementById('cart_total1');
          if (e) e.innerHTML = total;
          e = document.getElementById('cart_total_amount');
          if (e) e.innerHTML = total_amount;

          
          
          if (result)
            widgets.msg('Добавлено в корзину', obj);
            e=document.getElementById('empty_cart');
            if(e)e.style.display = 'none';
            e=document.getElementById('full_cart');
            if(e)e.style.display = 'block';
            
            e=document.getElementById('cart_total');
            if(e)e.innerHTML=formatPrice(total);
            e=document.getElementById('cart_total1');
            if(e)e.innerHTML=formatPrice(total);
          return true; 
        }
      },//}}}
      'json'
    );
    
        return false;    
   },//}}}
  
   formatPrice : function(str, ts, dot) {
       if (typeof str!='string') str = String(str);
       if (ts == null) ts = ' ';
       if (dot == null) dot = '.';
    if (dot != '.') str = str.replace('.', dot);
       
       var parts = str.split(dot), res = [], i;
    
    if (parts[0].length >= 4) {
        for (i = (parts[0].length - 1), j=1; i>=0; --i, ++j) {
            res.unshift(parts[0].charAt(i));
            if (j % 3 == 0 && i>0)
                res.unshift(ts);
        }
       
        return res.join('') + (parts[1] ? dot + parts[1] : '');
    }
    return str;
  },

  addOnloadEvent : function (func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
      window.onload = func;
    } else {
      window.onload = function() {
        if (oldonload) {
          oldonload();
        }
        func();
      }
    }
  },

  msg: function(text, obj) {
    if (!obj) return;
    var pos = findPos(obj);
    var d = document.createElement("DIV");
    if (d) {
      d.style.position = 'absolute';
      d.innerHTML = text;
      d.style.display = 'block';
      d.className = 'added-to-cart';
      d.style.left = (pos.x+obj.offsetWidth) + 'px';
      d.style.top = (pos.y+obj.offsetHeight) + 'px';
      document.body.appendChild(d);

      window.setTimeout(function() {
        if (d && d.parentNode) d.parentNode.removeChild(d);
        delete d;
      }, 1500);
    }  
  }
};

function findPos(obj) {
    var result = {x:0, y:0};

    if (obj.offsetParent) {
        while (obj.offsetParent) {
            result.y += obj.offsetTop;
            result.x += obj.offsetLeft;
            obj = obj.offsetParent;
        }
    } else {
        if (obj.x) result.x += obj.x;
        if (obj.y) result.y += obj.y;
    }

    return result;
}



// vim: noet fdm=marker
