function formatCurrency(value)
{
	var i = parseFloat(value);
	if(isNaN(i)) {
		i = 0.00;
	}
	var minus = '';
	if(i < 0) {
		minus = '-';
	}
	i = Math.abs(i);
	i = parseInt((i + .005) * 100);
	i = i / 100;
	s = new String(i);
	if(s.indexOf('.') < 0) {
		s += '.00';
	}
	if(s.indexOf('.') == (s.length - 2)) {
		s += '0';
	}
	s = minus + s;
	return s;
}

function emptyCart() {
	$('.product-list select').val('0').parents('tr').removeClass('incart');
	updateTotal();
}

function enableSubmit(enable) {
	if(enable) {
		$('[type="submit"]').removeAttr('disabled');
	} else {
		$('[type="submit"]').attr('disabled', 'disabled');
	}
}

function updateBoxes(bottles, jars, breads, bags) {
	var boxes = 0;		// numero totale di scatole
	var shipping = 0;
	var i;
	var canSubmit = true;
	
	// bottiglie
	var bottleBoxes = new Array(0,0);
	var bottleBoxTypes = new Array(12, 6);
	var remainingBottles = bottles;	// bottiglie non ancora sistemate

	for(i=0;i<bottleBoxTypes.length;i++) {
		while(remainingBottles >= bottleBoxTypes[i]) {
			remainingBottles -= bottleBoxTypes[i];
			bottleBoxes[i]++;
		}
	}

	for(i=0;i<bottleBoxTypes.length;i++) { boxes += bottleBoxes[i]; }
	
	if(remainingBottles > 0) {
		var data = $.metadata.get(document.getElementById('remainingbottles'));
		var bottlesAlert = data.msg.replace(/{remainingBottles}/, remainingBottles)
			.replace(/{exceedingBottles}/, (bottleBoxTypes[bottleBoxTypes.length-1]-remainingBottles));
		$('#remainingbottles').text(bottlesAlert).show();
		canSubmit &= false;
	} else {
		$('#remainingbottles').hide();
		canSubmit &= true;
	}	
	
	// vasetti
	var jarBoxes = new Array(0,0,0,0,0);
	var jarBoxTypes = new Array(12,8,6,4,3);
	var remainingJars = jars;
	
	for(i=0;i<jarBoxTypes.length;i++) {
		while(remainingJars >= jarBoxTypes[i]) {
			remainingJars -= jarBoxTypes[i];
			jarBoxes[i]++;
		}
	}
	
	for(i=0;i<jarBoxTypes.length;i++) { boxes += jarBoxes[i]; }
	
	if(remainingJars > 0) {
		var data = $.metadata.get(document.getElementById('remainingjars'));
		var jarsAlert = data.msg.replace(/{remainingJars}/, remainingJars)
			.replace(/{exceedingJars}/, (jarBoxTypes[jarBoxTypes.length-1]-remainingJars));
		$('#remainingjars').text(jarsAlert).show();
		canSubmit &= false;
	} else {
		$('#remainingjars').hide();
		canSubmit &= true;
	}	
	
	// schiacce
	var breadBoxes = 0;
	var breadBoxCapacity = 5; // un solo tipo di cartone da 5
	var remainingBreads = breads;
	
	while(remainingBreads >= breadBoxCapacity) {
		remainingBreads -= breadBoxCapacity;
		breadBoxes++;
	}
	
	boxes += breadBoxes;	
	
	if(remainingBreads > 0) {
		var data = $.metadata.get(document.getElementById('remainingbreads'));
		var breadsAlert = data.msg.replace(/{remainingBreads}/, (breadBoxCapacity-remainingBreads))
			.replace(/{exceedingBreads}/, remainingBreads);
		$('#remainingbreads').text(breadsAlert).show();
		canSubmit &= false;
	} else {
		$('#remainingbreads').hide();
		canSubmit &= true;
	}	
	
	// sacchetti di spezie
	var bagBoxes = 0;
	var bagBoxCapacity = 3; // un solo tipo di cartone da 3
	var remainingBags = bags;
	
	while(remainingBags >= bagBoxCapacity) {
		remainingBags -= bagBoxCapacity;
		bagBoxes++;
	}
	
	boxes += bagBoxes;	
	
	if(remainingBags > 0) {
		var data = $.metadata.get(document.getElementById('remainingbags'));
		var bagsAlert = data.msg.replace(/{remainingBags}/, (bagBoxCapacity-remainingBags))
			.replace(/{exceedingBags}/, remainingBags);
		$('#remainingbags').text(bagsAlert).show();
		canSubmit &= false;
	} else {
		$('#remainingbags').hide();
		canSubmit &= true;
	}		
	
	$('#boxes').html(String(boxes));
	
	// spese di spedizione
	if(boxes <= 5) {
		shipping = boxes*10;
	} else {
		shipping = 50 + (boxes-5)*5;
	}
	$('#shippingvalue').html(formatCurrency(shipping));
	enableSubmit(canSubmit);
	return shipping;
}

function updateTotal() {
	var quantities = $('.product-list select');
	var total = 0.0;
	
	var bottles = 0;
	var jars = 0;
	var breads = 0;
	var bags = 0;

	var paymentType = $('#paymenttype').val();
	
	quantities.each(function() {
		var price = parseFloat($(this).siblings('.productprice').val());
		var container = parseInt($(this).siblings('.containertype').val());
			
		if($(this).val() != "0") {
			$(this).parents('tr').addClass('incart');
			switch(container) {
				case 1:
					bottles += parseInt($(this).val());
					break;
				case 3:
					jars += parseInt($(this).val());
					break;
				case 4:
					breads += parseInt($(this).val());
					break;
				case 7:
					bags += parseInt($(this).val());
					break;
			}			
		} else {
			$(this).parents('tr').removeClass('incart');
		}
		total += price * parseInt($(this).val());
	});
	
	$('#productstotalvalue').html(formatCurrency(total));
	
	if(paymentType == "early") {
		var discount = (total * 5 / 100);
		total -= discount;
		$('#discountvalue').html(discount);
		$('#earlyrow').css('display', '');
		$('#delayedrow').css('display', 'none');
	} else {
		total += 10.00;
		$('#earlyrow').css('display', 'none');
		$('#delayedrow').css('display', '');
	}
	
	var shipping = updateBoxes(bottles, jars, breads, bags);
	
	total += total > 0 ? shipping : 0.00;
	$('#total').val(total);
	$('#totalvalue').html(formatCurrency(total));
}