function checkAddToBasket(id) { if ($("#"+id+" .sizeSelect").attr('name') == "attr_Size") { var sizeIsSelected = false; var radios = $("#"+id+" .sizeSelect"); for (var i=0; i < radios.length; i++) { if (radios[i].selectedIndex) { sizeIsSelected = true; } } if (sizeIsSelected == false) { $("#error_"+id).html("Merci de choisir une taille"); return false; } else { return true; } } else { return true; } } function nbAvailableBySize(id) { var sizes = $('#'+id+' .sizeSelect'); var nbAvailableBySize = 0; if ($('#'+id+' .sizeSelect').attr('name') == 'attr_Size') { for (var i=0; i < sizes.length; i++) { if (sizes[i].checked) { nbAvailableBySize = $('#sizeAvailable_'+id+'_'+(sizes[i].value)).attr('value'); } } } return nbAvailableBySize; } function nbAvailableFor(id) { var nbAvailable = 0; // If the product has multi-sizes available if ($("#"+id+" .sizeSelect").attr('name') == "attr_Size") { nbAvailable = nbAvailableBySize(id); } else { nbAvailable = $("#available_"+id).attr('value'); } return nbAvailable; } function selectedSize(id) { var sizes = $('#'+id+' .sizeSelect'); if ($('#'+id+' .sizeSelect').attr('name') == 'attr_Size') { for (var i=0; i < sizes.length; i++) { if (sizes[i].checked) { return sizes[i].value; } } } return null; } function isSizeSelected(id) { var sizes = $('#'+id+' .sizeSelect'); if ($('#'+id+' .sizeSelect').attr('name') == 'attr_Size') { for (var i=0; i < sizes.length; i++) { if (sizes[i].checked) { return true; } } return false; } // There is no size to choose, so it's ok return true; } function nbWantedFor(id) { return parseInt($('#noOfItems_'+id).val()); } function checkBasketProductsQuantity() { $('.btnPlus').each(function(){ checkBasketProductQuantity($(this).attr('alt')); }); } function checkBasketProductQuantity(id) { var nbWanted = nbWantedFor(id); var nbAvailable = nbAvailableFor(id); // The buyer wants more items than those available, error message if (nbWanted > nbAvailable) { var article = 'article' + (nbWanted > 1 ? 's' : ''); var disponible = 'disponible' + (nbAvailable > 1 ? 's' : ''); var errorMessage = 'Vous souhaitiez ' + nbWanted + ' ' + article + ', mais il n\'y en a que
'+ nbAvailable + ' de ' + disponible + '.
'+ 'Merci de recalculer votre panier.'; $('#error_'+id).html(errorMessage); // We change the value to the maximum available (we can sometime end up with more than the ones available) $('#noOfItems_'+id).val(nbAvailable); } } function doPlusToBasket(id) { var article = ''; var disponible = ''; var errorMessage = ''; var nbWanted = nbWantedFor(id); var nbAvailable = nbAvailableFor(id); // 1st check if a size is selected if any if (isSizeSelected(id) == false) { $("#error_"+id).html("Merci de choisir une taille"); return false; } // The buyer wants less items than those available, then let's decrement if (nbWanted < nbAvailable) { $('#noOfItems_'+id).val(nbWanted+1); $('#error_'+id).html(' '); } // He wants more, error message else { article = 'article' + (nbAvailable > 1 ? 's' : ''); disponible = 'disponible' + (nbAvailable > 1 ? 's' : ''); errorMessage = 'Seulement ' + nbAvailable + ' ' + article + ' ' + disponible; $('#error_'+id).html(errorMessage); // We change the value to the maximum available (we can sometime end up with more than the ones available) $('#noOfItems_'+id).val(nbAvailable); } return true; } function doLessToBasket(id) { var inputValue = parseInt($('#noOfItems_'+id).val()); $('#error_'+id).html(' '); if (inputValue > 1) { $('#noOfItems_'+id).val(inputValue-1); } } $(document).ready(function() { /* BTN + - FOR USUAL BASKET */ $('.btnMinus').click(function(){ doLessToBasket($(this).attr('alt')); }); $('.btnPlus').click(function(){ doPlusToBasket($(this).attr('alt')); }); $('.sizeInput').click(function(){ id = $(this).attr('alt'); $("#error_"+id).html(" "); $('#noOfItems_'+id).val('1'); }); // If we are on the basket page, we check for quantity consistancy if ($('#basketTable').is('tr')) { checkBasketProductsQuantity(); } });