/* -*- coding: utf-8 tab-width: 3 -*- */

function onCartAsyncUpdate(e) {
	var arrFields = e.asyncResponse["values"];
	if (arrFields["qty"]["changed"])
		updateCartAndFees(e.asyncResponse["retval"]["shmodes"]);
}


function onRemProd(e) {
	e.preventDefault();
	var tr = $(this).getAncestor("tr");
	PaLeg.asyncExec(
		null,
		{
			"a":      "ar_remove",
			"idprod": this.getAttribute("href").match(/&idprod=(\d+)/)[1]
		},
		function(bSuccess, oResult) {
			if (bSuccess && tr.parentNode && tr.parentNode.parentNode)
				tr.parentNode.parentNode.items.animRemove(tr.sectionRowIndex, function() {
					updateCartAndFees(oResult["shmodes"]);
				});
		}
	);
}


// Aggiorna tutto.
//
var updateCartAndFees = function(arrShModes) {
	var frmCart_culProds = $("frmCart_culProds"),
		 arrQty = $("frmCart").getFieldValue("qty"),
		 cyTotal = 0.0;
	if (!frmCart_culProds.isEmpty())
		// Aggiorna i parziali.
		Array.forEach(frmCart_culProds.items.rows, function(tr) {
			var iIDProd = tr.getDescendants("input", "class", "frmCart_qty")[0].getAttribute("id").match(/_(\d+)$/)[1];
			cyTotal += g_frmCart_aaProds[iIDProd][0] * arrQty[iIDProd];
		});
	if (!g_bNoVATlessPrices) {
		// Aggiorna imponibile e IVA.
		$("oProdPriceTot").firstChild.nodeValue = Number.formatCy(cyTotal);
		$("oProdPriceVAT").firstChild.nodeValue = Number.formatCy(cyTotal * g_iVAT / 100);
	}
	// Aggiorna il totale.
	$("oProdPriceTotVAT").firstChild.nodeValue = Number.formatCy(cyTotal * (1 + g_iVAT / 100));

	// Aggiorna i costi di spedizione.
	arrShModes.forEach(function(aaShMode) {
		var dtShippingMode = $("dtShippingMode_" + aaShMode["id"]),
			 ddShippingMode = $("ddShippingMode_" + aaShMode["id"]),
			 oShippingFee   = $("oShippingFee_"   + aaShMode["id"]);
		if (aaShMode["fee"] === false || frmCart_culProds.isEmpty()) {
			if (aaShMode["fee"] === false) {
				dtShippingMode.setStyle("display", "none");
				ddShippingMode.setStyle("display", "none");
			}
			oShippingFee.firstChild.nodeValue = "-";
		} else {
			if (aaShMode["fee"] > 0)
				oShippingFee.firstChild.nodeValue = Loc.PL_LOC_CUR_SYM + " " + Number.formatCy(aaShMode["fee"]);
			else
				oShippingFee.firstChild.nodeValue = Loc.PL_ECOMM_LOC_FLD_SHIPPINGFEE_NONE;
			dtShippingMode.removeStyle("display");
			ddShippingMode.removeStyle("display");
		}
	});
}


document.addEventListener("earlyload", function(e) {
	$("frmCart").addEventListener("asyncupdate", onCartAsyncUpdate, false);

	var frmCart_culProds = $("frmCart_culProds");
	frmCart_culProds.enableSortHeaders();
	frmCart_culProds.getDescendants("a", "class", "aRemProd").forEach(function(aRemProd) {
		aRemProd.addEventListener("click", onRemProd, false);
	});
}, false);
