Jump to content

total panier ne se modifie pas lorsque l’on change les quantités


Recommended Posts

Bonjour, merci pour votre réponse, je n'ai qu'un fichier ajax-cart.js dans le dossier Blockcart du thème dont voici le contenu (Qu'est ce qui bloque selon vous?, merci) :

 

/*
* 2007-2012 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to [email protected] so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <[email protected]>
*  @copyright  2007-2012 PrestaShop SA
*  @license    http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*/

// Retrocompatibility with 1.4
if (typeof baseUri === "undefined" && typeof baseDir !== "undefined")
    baseUri = baseDir;

//JS Object : update the cart by ajax actions
var ajaxCart = {
    nb_total_products: 0,

    //override every button in the page in relation to the cart
    overrideButtonsInThePage : function(){
        //for every 'add' buttons...
        $('.ajax_add_to_cart_button').unbind('click').click(function(){
            var idProduct =  $(this).attr('rel').replace('ajax_id_product_', '');
            if ($(this).attr('disabled') != 'disabled')
                ajaxCart.add(idProduct, null, false, this);
            return false;
        });
        //for product page 'add' button...
        $('#add_to_cart input').unbind('click').click(function(){
            ajaxCart.add( $('#product_page_product_id').val(), $('#idCombination').val(), true, null, $('#quantity_wanted').val(), null);
            return false;
        });

        //for 'delete' buttons in the cart block...
        $('#cart_block_list .ajax_cart_block_remove_link').unbind('click').click(function(){
            // Customized product management
            var customizationId = 0;
            var productId = 0;
            var productAttributeId = 0;
            if ($($(this).parent().parent()).attr('name') == 'customization')
                // Reverse two levels: a >> div >> li
                var customizableProductDiv = $($(this).parent().parent()).find("div[id^=deleteCustomizableProduct_]");
            else
                var customizableProductDiv = $($(this).parent()).find("div[id^=deleteCustomizableProduct_]");
            if (customizableProductDiv && $(customizableProductDiv).length)
            {
                $(customizableProductDiv).each(function(){
                    var ids = $(this).attr('id').split('_');
                    if (typeof(ids[1]) != 'undefined')
                    {
                        customizationId = parseInt(ids[1]);
                        productId = parseInt(ids[2]);
                        if (typeof(ids[3]) != 'undefined')
                            productAttributeId = parseInt(ids[3]);
                        return false;
                    }
                });
            }

            // Common product management
            if (!customizationId)
            {
                //retrieve idProduct and idCombination from the displayed product in the block cart
                var firstCut = $(this).parent().parent().attr('id').replace('cart_block_product_', '');
                firstCut = firstCut.replace('deleteCustomizableProduct_', '');
                ids = firstCut.split('_');
                productId = parseInt(ids[0]);
                if (typeof(ids[1]) != 'undefined')
                    productAttributeId = parseInt(ids[1]);
            }

            var idAddressDelivery = $(this).parent().parent().attr('id').match(/.*_\d+_\d+_(\d+)/)[1];

            // Removing product from the cart
            ajaxCart.remove(productId, productAttributeId, customizationId, idAddressDelivery);
            return false;
        });
    },

    // try to expand the cart
    expand : function(){
        if ($('#cart_block_list').hasClass('collapsed'))
        {
            $('#cart_block_summary').slideUp(200, function(){
                $(this).addClass('collapsed').removeClass('expanded');
                $('#cart_block_list').slideDown({
                    duration: 450,
                    complete: function(){$(this).addClass('expanded').removeClass('collapsed');}
                });
            });
            // toogle the button expand/collapse button
            $('#block_cart_expand').fadeOut('slow', function(){
                $('#block_cart_collapse').fadeIn('fast');
            });

            // save the expand statut in the user cookie
            $.ajax({
                type: 'GET',
                url: baseDir + 'modules/blockcart/blockcart-set-collapse.php',
                async: true,
                data: 'ajax_blockcart_display=expand' + '&rand=' + new Date().getTime()
            });


        }
    },
    // Fix display when using back and previous browsers buttons
    refresh : function(){
        $.ajax({
            type: 'GET',
            url: baseUri,
            async: true,
            cache: false,
            dataType : "json",
            data: 'controller=cart&ajax=true&token=' + static_token,
            success: function(jsonData)
            {
                ajaxCart.updateCart(jsonData);
            }
        });
    },

    // try to collapse the cart
    collapse : function(){

        if ($('#cart_block_list').hasClass('expanded'))
        {
            $('#cart_block_list').slideUp('slow', function(){
                $(this).addClass('collapsed').removeClass('expanded');
                $('#cart_block_summary').slideDown(450, function(){
                    $(this).addClass('expanded').removeClass('collapsed');
                });
            });
            $('#block_cart_collapse').fadeOut('slow', function(){
                $('#block_cart_expand').fadeIn('fast');
            });

            // save the expand statut in the user cookie
            $.ajax({
                type: 'GET',
                url: baseDir + 'modules/blockcart/blockcart-set-collapse.php',
                async: true,
                data: 'ajax_blockcart_display=collapse' + '&rand=' + new Date().getTime()
            });
        }
    },

    // Update the cart information
    updateCartInformation : function (jsonData, addedFromProductPage)
    {
        ajaxCart.updateCart(jsonData);

        //reactive the button when adding has finished
        if (addedFromProductPage)
            $('#add_to_cart input').removeAttr('disabled').addClass('exclusive').removeClass('exclusive_disabled');
        else
            $('.ajax_add_to_cart_button').removeAttr('disabled');
    },

    // add a product in the cart via ajax
    add : function(idProduct, idCombination, addedFromProductPage, callerElement, quantity, whishlist){
        if (addedFromProductPage && !checkCustomizations())
        {
            alert(fieldRequired);
            return ;
        }
        emptyCustomizations();
        //disabled the button when adding to do not double add if user double click
        if (addedFromProductPage)
        {
            $('#add_to_cart input').attr('disabled', true).removeClass('exclusive').addClass('exclusive_disabled');
            $('.filled').removeClass('filled');
        }
        else
            $(callerElement).attr('disabled', true);

        if ($('#cart_block_list').hasClass('collapsed'))
            this.expand();
        //send the ajax request to the server
        $.ajax({
            type: 'POST',
            url: baseUri,
            async: true,
            cache: false,
            dataType : "json",
            data: 'controller=cart&add=1&ajax=true&qty=' + ((quantity && quantity != null) ? quantity : '1') + '&id_product=' + idProduct + '&token=' + static_token + ( (parseInt(idCombination) && idCombination != null) ? '&ipa=' + parseInt(idCombination): ''),
            success: function(jsonData,textStatus,jqXHR)
            {
                // add appliance to whishlist module
                if (whishlist && !jsonData.errors)
                    WishlistAddProductCart(whishlist[0], idProduct, idCombination, whishlist[1]);

                // add the picture to the cart
                var $element = $(callerElement).parent().parent().find('a.product_image img,a.product_img_link img');
                if (!$element.length)
                    $element = $('#bigpic');
                var $picture = $element.clone();
                var pictureOffsetOriginal = $element.offset();

    // add custom
if ($(document.body).width() < 751){
                if ($picture.size())
                        $picture.css({'position': 'absolute', 'width':40, 'height':61});
    }
if ($(document.body).width() > 751){
                if ($picture.size())
                    $picture.css({'position': 'absolute', 'width':100, 'height':153 , 'top': pictureOffsetOriginal.top, 'left': pictureOffsetOriginal.left});
    }
    // end custom
    
                var pictureOffset = $picture.offset();
                if ($('#cart_block').offset().top && $('#cart_block').offset().left)
                    var cartBlockOffset = $('#cart_block').offset();
                else
                    var cartBlockOffset = $('#shopping_cart').offset();

                // Check if the block cart is activated for the animation
                
                if (cartBlockOffset != undefined && $picture.size())
                
                // add custom
                if ($(document.body).width() > 751){
                {
                    
                    $picture.appendTo('body');
                    $picture.css({ 'position': 'absolute', 'top': $picture.css('top'), 'left': $picture.css('left'), 'z-index': 4242 })
                
                // add custom
                    .animate({ 'width': $element.attr('width')*0.66, 'height': $element.attr('height')*0.66, 'opacity':1, 'top': cartBlockOffset.top + 50, 'left': cartBlockOffset.left + 1 }, 1500, 'linear')
                    .fadeOut(400, function() {
                    ajaxCart.updateCartInformation(jsonData, addedFromProductPage);
                    });  
                    $('.blockuserinfo-cart').addClass('close-cart');
                    $(this).find(".blockuserinfo-cart").toggle(
                    $('#cart_block').stop(true, true).slideDown(400),{
                    duration:1500,
                    easing: 'linear'
                }
);
$('html, body').animate({scrollTop:0},1000)
}
return false
}
                
                if ($(document.body).width() < 751){
                {
                    
            
                    $picture.css({ 'position': 'absolute', 'top': $picture.css('top'), 'left': $picture.css('left'), 'z-index': 4245 })

                    .fadeOut(400, function() {
                    ajaxCart.updateCartInformation(jsonData, addedFromProductPage);
                    }); 

var timer;


$('body').append('<div class="alert_cart" style=" display:none;"><a class="mas_cart"  href="index.php?controller=order">Your product has been successfully added to your cart!</a></div>');

    

$picture.appendTo('.alert_cart');
$('.alert_cart img').slideDown(400);
$('.alert_cart').append('<span title="Close" class="alert_cart_close"></span>');
                $('.alert_cart span').click(function () {
               $('.alert_cart').slideUp(400);
                 });

  var msg = $('.alert_cart').slideDown(400);
  timer = setTimeout(function() { msg.slideUp(400); }, 7000);


 
}     

}
                
                else
                    ajaxCart.updateCartInformation(jsonData, addedFromProductPage);
            },
            error: function(XMLHttpRequest, textStatus, errorThrown)
            {
                alert("Impossible to add the product to the cart.\n\ntextStatus: '" + textStatus + "'\nerrorThrown: '" + errorThrown + "'\nresponseText:\n" + XMLHttpRequest.responseText);
                //reactive the button when adding has finished
                if (addedFromProductPage)
                    $('#add_to_cart input').removeAttr('disabled').addClass('exclusive').removeClass('exclusive_disabled');
                else
                    $(callerElement).removeAttr('disabled');
            }
        });
    },

    //remove a product from the cart via ajax
    remove : function(idProduct, idCombination, customizationId, idAddressDelivery){
        //send the ajax request to the server
        $.ajax({
            type: 'POST',
            url: baseUri,
            async: true,
            cache: false,
            dataType : "json",
            data: 'controller=cart&delete=1&id_product=' + idProduct + '&ipa=' + ((idCombination != null && parseInt(idCombination)) ? idCombination : '') + ((customizationId && customizationId != null) ? '&id_customization=' + customizationId : '') + '&id_address_delivery=' + idAddressDelivery + '&token=' + static_token + '&ajax=true',
            success: function(jsonData)    {
                ajaxCart.updateCart(jsonData);
                if ($('body').attr('id') == 'order' || $('body').attr('id') == 'order-opc')
                    deleteProductFromSummary(idProduct+'_'+idCombination+'_'+customizationId+'_'+idAddressDelivery);
            },
            error: function() {alert('ERROR: unable to delete the product');}
        });
    },

    //hide the products displayed in the page but no more in the json data
    hideOldProducts : function(jsonData) {
        //delete an eventually removed product of the displayed cart (only if cart is not empty!)
        if ($('#cart_block_list dl.products').length > 0)
        {
            var removedProductId = null;
            var removedProductData = null;
            var removedProductDomId = null;
            //look for a product to delete...
            $('#cart_block_list dl.products dt').each(function(){
                //retrieve idProduct and idCombination from the displayed product in the block cart
                var domIdProduct = $(this).attr('id');
                var firstCut =  domIdProduct.replace('cart_block_product_', '');
                var ids = firstCut.split('_');

                //try to know if the current product is still in the new list
                var stayInTheCart = false;
                for (aProduct in jsonData.products)
                {
                    //we've called the variable aProduct because IE6 bug if this variable is called product
                    //if product has attributes
                    if (jsonData.products[aProduct]['id'] == ids[0] && (!ids[1] || jsonData.products[aProduct]['idCombination'] == ids[1]))
                    {
                        stayInTheCart = true;
                        // update the product customization display (when the product is still in the cart)
                        ajaxCart.hideOldProductCustomizations(jsonData.products[aProduct], domIdProduct);
                    }
                }
                //remove product if it's no more in the cart
                if (!stayInTheCart)
                {
                    removedProductId = $(this).attr('id');
                    if (removedProductId != null)
                    {
                        var firstCut =  removedProductId.replace('cart_block_product_', '');
                        var ids = firstCut.split('_');

                        $('#'+removedProductId).addClass('strike').fadeTo('slow', 0, function(){
                            $(this).slideUp('slow', function(){
                                $(this).remove();
                                // If the cart is now empty, show the 'no product in the cart' message and close detail
                                if($('#cart_block dl.products dt').length == 0)
                                {
                                    $('#cart_block_no_products:hidden').removeClass('no_products').addClass('cart_no_products').slideDown(450);
                                    $('#cart_block dl.products').remove();
                                }
                            });
                        });
                        $('#cart_block_combination_of_' + ids[0] + (ids[1] ? '_'+ids[1] : '') + (ids[2] ? '_'+ids[2] : '')).fadeTo('fast', 0, function(){
                            $(this).slideUp('fast', function(){
                                $(this).remove();
                            });
                        });
                    }
                }
            });
        }
    },

    hideOldProductCustomizations : function (product, domIdProduct)
    {
        var customizationList = $('#customization_' + product['id'] + '_' + product['idCombination']);
        if(customizationList.length > 0)
        {
            $(customizationList).find("li").each(function(){
                $(this).find("div").each(function() {
                    var customizationDiv = $(this).attr('id');
                    var tmp = customizationDiv.replace('deleteCustomizableProduct_', '');
                    var ids = tmp.split('_');
                    if ((parseInt(product.idCombination) == parseInt(ids[2])) && !ajaxCart.doesCustomizationStillExist(product, ids[0]))
                        $('#' + customizationDiv).parent().addClass('strike').fadeTo('slow', 0, function(){
                            $(this).slideUp('slow');
                            $(this).remove();
                        });
                });
            });
        }
        var removeLinks = $('#cart_block_product_' + domIdProduct).find('a.ajax_cart_block_remove_link');
        if (!product.hasCustomizedDatas && !removeLinks.length)
            $('#' + domIdProduct + ' span.remove_link').html('<a class="ajax_cart_block_remove_link" rel="nofollow" href="' + baseUri + '?controller=cart&amp;delete&amp;id_product=' + product['id'] + '&amp;ipa=' + product['idCombination'] + '&amp;token=' + static_token + '"> </a>');
        if (parseFloat(product.price_float) <= 0)
            $('#' + domIdProduct + ' span.remove_link').html('');
    },

    doesCustomizationStillExist : function (product, customizationId)
    {
        var exists = false;

        $(product.customizedDatas).each(function() {
            if (this.customizationId == customizationId)
            {
                exists = true;
                // This return does not mean that we found nothing but simply break the loop
                return false;
            }
        });
        return (exists);
    },

    //refresh display of vouchers (needed for vouchers in % of the total)
    refreshVouchers : function (jsonData) {
        if (typeof(jsonData.discounts) == 'undefined' || jsonData.discounts.length == 0)
            $('#vouchers').hide();
        else
        {
            $('#vouchers tbody').html('');
        
            for (i=0;i<jsonData.discounts.length;i++)
            {
                if (parseFloat(jsonData.discounts.price_float) > 0)
                {
                    var delete_link = '';
                    if (jsonData.discounts.code.length)
                        delete_link = '<a class="delete_voucher" href="'+jsonData.discounts.link+'" title="'+delete_txt+'"><img src="'+img_dir+'icon/delete.gif" alt="'+delete_txt+'" class="icon" /></a>';
                    $('#vouchers tbody').append($(
                        '<tr class="bloc_cart_voucher" id="bloc_cart_voucher_'+jsonData.discounts.id+'">'
                        +'    <td class="quantity">1x</td>'
                        +'    <td class="name" title="'+jsonData.discounts.description+'">'+jsonData.discounts.name+'</td>'
                        +'    <td class="price">-'+jsonData.discounts.price+'</td>'
                        +'    <td class="delete">' + delete_link + '</td>'
                        +'</tr>'
                    ));
                }
            }

            $('#vouchers').show();
        }

    },

    // Update product quantity
    updateProductQuantity : function (product, quantity) {

        $('#cart_block_product_' + product.id + '_' + (product.idCombination ? product.idCombination : '0')+ '_' + (product.idAddressDelivery ? product.idAddressDelivery : '0') + ' .quantity').fadeTo('fast', 0, function() {
            $(this).text(quantity);
            $(this).fadeTo('fast', 1, function(){
                $(this).fadeTo('fast', 0, function(){
                    $(this).fadeTo('fast', 1, function(){
                        $(this).fadeTo('fast', 0, function(){
                            $(this).fadeTo('fast', 1);
                        });
                    });
                });
            });
        });
    },


    //display the products witch are in json data but not already displayed
    displayNewProducts : function(jsonData) {

        //add every new products or update displaying of every updated products
        $(jsonData.products).each(function(){
            //fix ie6 bug (one more item 'undefined' in IE6)
            if (this.id != undefined)
            {
                //create a container for listing the products and hide the 'no product in the cart' message (only if the cart was empty)
                if ($('#cart_block dl.products').length == 0)
                {
                    $('#cart_block_no_products').before('<dl class="products"></dl>');
                    $('#cart_block_no_products').removeClass('cart_no_products').addClass('no_products').hide();
                }
                //if product is not in the displayed cart, add a new product's line
                var domIdProduct = this.id + '_' + (this.idCombination ? this.idCombination : '0') + '_' + (this.idAddressDelivery ? this.idAddressDelivery : '0');

                var domIdProductAttribute = this.id + '_' + (this.idCombination ? this.idCombination : '0');
                if ($('#cart_block_product_'+ domIdProduct ).length == 0)
                {
                    var productId = parseInt(this.id);
                    var productAttributeId = (this.hasAttributes ? parseInt(this.attributes) : 0);
                    var content =  '<dt class="hidden clearfix" id="cart_block_product_' + domIdProduct + '">';
                    content += '<a class="cart-images" href="' + this.link + '" title="' + this.name.substring(0, 12) + '"><img  src="' + this.id_image + '" alt="' + this.name +'"></a>';
                    content += '<span class="quantity-formated"><span class="quantity">' + this.quantity + '</span>x</span>';
                    var name = (this.name.length > 12 ? this.name.substring(0, 10) + '...' : this.name);
                    content += '<a class="product_link" href="' + this.link + '" title="' + this.name + '">' + name + '</a>';
                
                    if (parseFloat(this.price_float) > 0)
                        content += '<span class="remove_link"><a rel="nofollow" class="ajax_cart_block_remove_link" href="' + baseUri + '?controller=cart&amp;delete&amp;id_product=' + productId + '&amp;token=' + static_token + (this.hasAttributes ? '&amp;ipa=' + parseInt(this.idCombination) : '') + '"> </a></span>';
                    else
                        content += '<span class="remove_link"></span>';
                                    if (typeof(freeShippingTranslation) != 'undefined')        
                    content += '<span class="price">' + (parseFloat(this.price_float) > 0 ? this.priceByLine : freeProductTranslation) + '</span>';
                    content += '</dt>';
                    if (this.hasAttributes)
                          content += '<dd id="cart_block_combination_of_' + domIdProduct + '" class="hidden"><a href="' + this.link + '" title="' + this.name + '">' + this.attributes + '</a>';
                    if (this.hasCustomizedDatas)
                        content += ajaxCart.displayNewCustomizedDatas(this);
                    if (this.hasAttributes) content += '</dd>';

                    $('#cart_block dl.products').append(content);
                }
                //else update the product's line
            else
                {
                    var jsonProduct = this;
                    if($('#cart_block_product_' + domIdProduct + ' .quantity').text() != jsonProduct.quantity || $('dt#cart_block_product_' + domIdProduct + ' .price').text() != jsonProduct.priceByLine)
                    {
                        // Usual product
                        if (parseFloat(this.price_float) > 0)
                            $('#cart_block_product_' + domIdProduct + ' .price').text(jsonProduct.priceByLine);
                        else
                            $('#cart_block_product_' + domIdProduct + ' .price').html(freeProductTranslation);
                        ajaxCart.updateProductQuantity(jsonProduct, jsonProduct.quantity);

                        // Customized product
                        if (jsonProduct.hasCustomizedDatas)
                        {
                            customizationFormatedDatas = ajaxCart.displayNewCustomizedDatas(jsonProduct);
                            if (!$('#customization_' + domIdProductAttribute).length)
                            {
                                if (jsonProduct.hasAttributes)
                                    $('#cart_block_combination_of_' + domIdProduct).append(customizationFormatedDatas);
                                else
                                    $('#cart_block dl.products').append(customizationFormatedDatas);
                            }
                            else
                            {
                                $('#customization_' + domIdProductAttribute).html('');
                                $('#customization_' + domIdProductAttribute).append(customizationFormatedDatas);
                            }
                        }
                    }
                }
                $('#cart_block dl.products .hidden').slideDown(450).removeClass('hidden');

            var removeLinks = $('#cart_block_product_' + domIdProduct).find('a.ajax_cart_block_remove_link');
            if (this.hasCustomizedDatas && removeLinks.length)
                $(removeLinks).each(function() {
                    $(this).remove();
                });
            }
        });
    },

    displayNewCustomizedDatas : function(product)
    {
        var content = '';
        var productId = parseInt(product.id);
        var productAttributeId = typeof(product.idCombination) == 'undefined' ? 0 : parseInt(product.idCombination);
        var hasAlreadyCustomizations = $('#customization_' + productId + '_' + productAttributeId).length;

        if (!hasAlreadyCustomizations)
        {
            if (!product.hasAttributes)
                content += '<dd id="cart_block_combination_of_' + productId + '" class="hidden">';
            if ($('#customization_' + productId + '_' + productAttributeId).val() == undefined)
                content += '<ul class="cart_block_customizations" id="customization_' + productId + '_' + productAttributeId + '">';
        }

        $(product.customizedDatas).each(function(){
            var done = 0;
            customizationId = parseInt(this.customizationId);
            productAttributeId = typeof(product.idCombination) == 'undefined' ? 0 : parseInt(product.idCombination);
            content += '<li name="customization"><div class="deleteCustomizableProduct" id="deleteCustomizableProduct_' + customizationId + '_' + productId + '_' + (productAttributeId ?  productAttributeId : '0') + '"><a  rel="nofollow" class="ajax_cart_block_remove_link" href="' + baseUri + '?controller=cart&amp;delete&amp;id_product=' + productId + '&amp;ipa=' + productAttributeId + '&amp;id_customization=' + customizationId + '&amp;token=' + static_token + '"> </a></div><span class="quantity-formated"><span class="quantity">' + parseInt(this.quantity) + '</span>x</span>';

            // Give to the customized product the first textfield value as name
            $(this.datas).each(function(){
                if (this['type'] == CUSTOMIZE_TEXTFIELD)
                {
                    $(this.datas).each(function(){
                        if (this['index'] == 0)
                        {
                            content += ' ' + this.truncatedValue.replace(/<br \/>/g, ' ');
                            done = 1;
                            return false;
                        }
                    })
                }
            });

            // If the customized product did not have any textfield, it will have the customizationId as name
            if (!done)
                content += customizationIdMessage + customizationId;
            if (!hasAlreadyCustomizations) content += '</li>';
            // Field cleaning
            if (customizationId)
            {
                $('#uploadable_files li div.customizationUploadBrowse img').remove();
                $('#text_fields input').attr('value', '');
            }
        });

        if (!hasAlreadyCustomizations)
        {
            content += '</ul>';
            if (!product.hasAttributes) content += '</dd>';
        }
        return (content);
    },


    //genarally update the display of the cart
    updateCart : function(jsonData) {
        //user errors display
        if (jsonData.hasError)
        {
            var errors = '';
            for(error in jsonData.errors)
                //IE6 bug fix
                if(error != 'indexOf')
                    errors += jsonData.errors[error] + "\n";
            alert(errors);
        }
        else
        {
            ajaxCart.updateCartEverywhere(jsonData);
            ajaxCart.hideOldProducts(jsonData);
            ajaxCart.displayNewProducts(jsonData);
            ajaxCart.refreshVouchers(jsonData);

            //update 'first' and 'last' item classes
            $('#cart_block .products dt').removeClass('first_item').removeClass('last_item').removeClass('item');
            $('#cart_block .products dt:first').addClass('first_item');
            $('#cart_block .products dt:not(:first,:last)').addClass('item');
            $('#cart_block .products dt:last').addClass('last_item');

            //reset the onlick events in relation to the cart block (it allow to bind the onclick event to the new 'delete' buttons added)
            ajaxCart.overrideButtonsInThePage();
        }
    },

    //update general cart informations everywhere in the page
    updateCartEverywhere : function(jsonData) {
        $('.ajax_cart_total').text(jsonData.productTotal);
        
        if (parseFloat(jsonData.shippingCostFloat) > 0 || jsonData.nbTotalProducts < 1)
            $('.ajax_cart_shipping_cost').text(jsonData.shippingCost);
        else if (typeof(freeShippingTranslation) != 'undefined')
            $('.ajax_cart_shipping_cost').html(freeShippingTranslation);
        $('.ajax_cart_tax_cost').text(jsonData.taxCost);
        $('.cart_block_wrapping_cost').text(jsonData.wrappingCost);
        $('.ajax_block_cart_total').text(jsonData.total);

        this.nb_total_products = jsonData.nbTotalProducts;
        
        if (parseInt(jsonData.nbTotalProducts) > 0)
        {
            $('.ajax_cart_no_product').hide();
            $('.ajax_cart_quantity').text(jsonData.nbTotalProducts);
            $('.ajax_cart_quantity').fadeIn('slow');
            $('.ajax_cart_total').fadeIn('slow');

            if (parseInt(jsonData.nbTotalProducts) > 1)
            {
                $('.ajax_cart_product_txt').each( function () {
                    $(this).hide();
                });

                $('.ajax_cart_product_txt_s').each( function () {
                    $(this).show();
                });
            }
            else
            {
                $('.ajax_cart_product_txt').each( function () {
                    $(this).show();
                });

                $('.ajax_cart_product_txt_s').each( function () {
                    $(this).hide();
                });
            }
        }
        else
        {
            $('.ajax_cart_quantity, .ajax_cart_product_txt_s, .ajax_cart_product_txt, .ajax_cart_total').each(function(){
                $(this).hide();
            });
            $('.ajax_cart_no_product').show('slow');
        }
    }
};

function HoverWatcher(selector){
    this.hovering = false;
    var self = this;

    this.isHoveringOver = function() {
        return self.hovering;
    }

    $(selector).hover(function() {
        self.hovering = true;
    }, function() {
        self.hovering = false;
    })
}

//when document is loaded...
$(document).ready(function(){
    // expand/collapse management
    $('#block_cart_collapse').click(function(){
            ajaxCart.collapse();
    });
    $('#block_cart_expand').click(function(){
            ajaxCart.expand();
    });
    ajaxCart.overrideButtonsInThePage();
    ajaxCart.refresh();

    /* roll over cart */
    var cart_block = new HoverWatcher('#cart_block');
    var shopping_cart = new HoverWatcher('#shopping_cart');

    
    $('.delete_voucher').live('click', function() {
        $.ajax({url:$(this).attr('href')});
        $(this).parent().parent().remove();
        if ($('body').attr('id') == 'order' || $('body').attr('id') == 'order-opc')
        {
            if (typeof(updateAddressSelection) != 'undefined')
                updateAddressSelection();
            else
                location.reload();
        }
        return false;
    });
});

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...