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<br>'+ nbAvailable + ' de ' + disponible + '.<br />'+
						   '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('&nbsp;');
	}
	// 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('&nbsp;');
	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("&nbsp;");
	   $('#noOfItems_'+id).val('1');
	});


	// If we are on the basket page, we check for quantity consistancy
	if ($('#basketTable').is('tr')) {
		checkBasketProductsQuantity();
	}
});
