
  function ajax_add_to_cart(pID,check_attributes, url)
  {
    allow_add_to_cart = true;
    
    if(check_attributes==1)
    {
      if(!check_mandatory_attributes())
      {
        allow_add_to_cart = false;
      }
    }

    if(allow_add_to_cart)
    {
      show_add_to_cart_process(pID);

      hide_cart_tip(pID)

      new Ajax.Updater('shopping_cart_box', url, { parameters:  $('products_form_'+pID).serialize(), asynchronous:true, evalScripts:true,
          onComplete: function(transport) { hide_add_to_cart_process(pID); show_cart_tip(pID);}
          });
    }
  }

  function ajax_update_cart_product_qty(pID, action, url)
  {
   new Ajax.Updater('shopping_cart_box', url, { parameters:  {action: 'update_cart_product_qty', pID: pID, qty_action: action}, asynchronous:true, evalScripts:true});
  }

  function ajax_cart_remove_product(pID, url)
  {
   new Ajax.Updater('shopping_cart_box', url, { parameters:  {action: 'remove_cat_product', pID: pID}, asynchronous:true, evalScripts:true});
  }

  function show_add_to_cart_process(pID)
  {
  
    buttonX = absPosition($('button_add_to_cart_'+pID)).x;
    buttonY = absPosition($('button_add_to_cart_'+pID)).y;

    buttonY -=20;

    element = Builder.node('div',{id:'add_to_cart_process_'+pID, style: 'position: absolute; top:' + buttonY + 'px; left:'+buttonX+'px;'},[

        Builder.node('img',{src:'lib/ajax_add_to_cart/img/spinner.gif'}),

    ]);
    

    document.body.insertBefore(element, document.body.childNodes[0]);
  }
  
  function hide_add_to_cart_process(pID)
  {
    $('add_to_cart_process_'+pID).style.display = 'none';
    
    show_add_to_cart_success(pID);
  }
  
  function hide_add_to_cart_success(pID)
  {
    $('add_to_cart_success_'+pID).style.display = 'none';

  }
  
  function show_add_to_cart_success(pID)
  {

    buttonX = absPosition($('button_add_to_cart_'+pID)).x;
    buttonY = absPosition($('button_add_to_cart_'+pID)).y;

    buttonY -=20;

    element = Builder.node('div',{id:'add_to_cart_success_'+pID, style: 'position: absolute; top:' + buttonY + 'px; left:'+buttonX+'px;'},[

        Builder.node('img',{src:'lib/ajax_add_to_cart/img/success.png'}),

    ]);


    document.body.insertBefore(element, document.body.childNodes[0]);
    
    setTimeout("hide_add_to_cart_success("+pID+")",500);

  }
  
  function absPosition(obj) {
      var x = y = 0;
      while(obj) {
            x += obj.offsetLeft;
            y += obj.offsetTop;
            obj = obj.offsetParent;
      }
      return {x:x, y:y};
  }

  function show_cart_tip(pID)
  {

    jQuery('#button_add_to_cart_img_'+pID).bt($('cartContentTipText').value,{
      fill: '#98938b',
      trigger: '',
      strokeStyle: '#c6c6c4',
      spikeLength: 10,
      spikeGirth: 10,
      padding: 8,
      width: 250,
      cornerRadius: 0,
      cssStyles: {
        fontFamily: '"lucida grande",tahoma,verdana,arial,sans-serif',
        fontSize: '11px'
      }
    });

    jQuery('#button_add_to_cart_img_'+pID).btOn();
  }
  
  function show_cart_tip_button(pID)
  {

    jQuery('#button_add_to_cart_img_'+pID).bt($('cartContentTipTextButton').value,{
      fill: '#98938b',
      trigger: ['mouseover', 'click'],
      strokeStyle: '#c6c6c4',
      spikeLength: 10,
      spikeGirth: 10,
      padding: 8,
      width: 250,
      cornerRadius: 0,
      cssStyles: {
        fontFamily: '"lucida grande",tahoma,verdana,arial,sans-serif',
        fontSize: '11px'
      }
    });

    jQuery('#button_add_to_cart_img_'+pID).btOn();
  }

  function hide_cart_tip(pID)
  {
    jQuery('#button_add_to_cart_img_'+pID).btOff();
  }
  

