function addCarrello()
{
	if (loggato)
	{
		$$('.carr').each(function(img)
		{
			Event.observe(img, 'click', updateCarrello.bindAsEventListener(img,"N"));
		});
		$$('.carr_p').each(function(img)
		{
			Event.observe(img, 'click', updateCarrello.bindAsEventListener(img,"+"));
		});
		$$('.carr_m').each(function(img)
		{
			Event.observe(img, 'click', updateCarrello.bindAsEventListener(img,"-"));
		});
	}
}

function switcha(idCarrello,idOffertaNew)
{
	var source = '/carrello.php?mode=ajax&target=switch&idCarrello='+idCarrello+'&idOffertaNew='+idOffertaNew;

	new Ajax.Request(
		source,
		{
			asynchronous:true,
			onSuccess: function(transport)
			{
				try
				{
					var info = transport.responseText.evalJSON(true);

					// Se mi ha passato il prezzo del carrello, aggiorno
					if ((info.totale != null) && ($('prezzoCarrello')))
						$('prezzoCarrello').update("&euro; "+info.totale);


					$$('.'+info.idCarrello).each(
						function (elem)
						{
							if (elem.id.indexOf('cs_') != -1)
							{
								var nome = ('cs_'+info.idOfferta);
								// Switch, mostro lo switch a tutti, tranne a quello attualmetne scelto
								if (elem.id == nome)
									elem.hide();
								else
									elem.show();
							}
							else if (elem.id.indexOf('cq_') != -1)
							{
								var nome = ('cq_'+info.idOfferta);
								// Quantità/Prezzo, lo mostro solo a quello attualemnte scelto
								if (elem.id == nome)
								{
									elem.show();
									elem.down('span',0).update(info.quantita);
									elem.down('span',1).update("(&euro; "+info.prezzo+")");
									elem.down('span',2).update(info.peso+" "+info.misura);
								}
								else
									elem.hide();
							}
							else if (elem.id.indexOf('cc_') != -1)
							{
								var nome = ('cc_'+info.idOfferta);
								// Tabella, aggiungo la class 'ca' ( carrello ) solo al prodotto che se lo merita
								if (elem.id == nome)
									elem.addClassName('ca');
								else
									elem.removeClassName('ca');
							}
							else
								alert('non riconosciuto '+elem.id);
						}
					);
				}
				catch (e)
				{
					alert(e.message);
					if (e.message.indexOf('formed JSON string') > 0)
						alert("Anomalia nella risposta: "+transport.responseText);
					else
						throw(e);
				}
			}
		});
}

function updateCarrello(e)
{
	var data = $A(arguments);
  data.shift();
	var funz = data[0];

	var carr = this;
	var idOff = carr.parentNode.id.substr(3);

	var source = '/carrello.php?mode=ajax&target=addCart&idOfferta='+idOff;
	if (funz != 'N')
	{
		var quantita = 1;
		if ($('cq_'+idOff))
			quantita = $('cq_'+idOff).down('span',0).innerHTML;

		if (funz == '+')
			quantita++;
		else
			quantita--;
		source += '&quantita='+quantita;
	}


	if (quantita < 0)
	{
		cssAlert("Hai gi&agrave; 0 prodotti nel carrello, non puoi toglierne altri");

		Event.stop(e);
    throw $break;

		return;
	}

	var img = getLoader();
	this.parentNode.appendChild(img);

	new Ajax.Request
	(
		source,
		{
			onSuccess: function(transport)
			{
				img.remove();
				try
				{
					var info = transport.responseText.evalJSON(true);

					// Ottengo l'id dell'offerta dall'id del suo contenitore
					var idOff = carr.parentNode.id.substr(3);

					// Se mi ha passato il prezzo del carrello, aggiorno
					if ((info.totale != null) && ($('prezzoCarrello')))
					{
						if (info.totale > 0)
						{
							$('carrello').show();
							$('carbor').show();
						}
						else
						{
							$('carrello').hide();
							$('carbor').hide();
						}

						$('prezzoCarrello').update("&euro; "+info.totale);
					}

					// Verifico se attualmente è segnato come 'nel carrello'
					if (info.quantita > 0)
					{
						// Mostro i carrelli per mostrare/togliere
						$('cp_'+idOff).show();
						$('cn_'+idOff).hide();

						// Mostro il prezzo
						if ($('cq_'+idOff))
						{
							$('cq_'+idOff).show();
							$('cq_'+idOff).down('span',0).update(info.quantita);
							$('cq_'+idOff).down('span',1).update("(&euro; "+info.prezzo+")");
						}

						// Aggiungo la class 'ca' che indica che ho 1 oggetto nel carrello
						if ($('cc_'+idOff))
							$('cc_'+idOff).addClassName('ca');


						// Mostro lo switch ( se c'è da mostrarlo )
						if ($('cs_'+idOff) && (info.switchProd > 0))
							$('cs_'+idOff).show();
					}
					else
					{
						// Mostro un solo carrellino
						$('cp_'+idOff).hide();
						$('cn_'+idOff).show();

						// Nascondo il prezzo
						if ($('cq_'+idOff))
							$('cq_'+idOff).hide();

						// Tolgo la class 'ca' che indica che ho 1 oggetto nel carrello
						if ($('cc_'+idOff))
							$('cc_'+idOff).removeClassName('ca');

						// Nascondo lo switch
						if ($('cs_'+idOff))
							$('cs_'+idOff).hide();
					}
				}
				catch (e)
				{
					if (e.message.indexOf('formed JSON string') > 0)
						alert("Anomalia nella risposta: "+transport.responseText);
					else
						throw(e);
				}
			},
			asynchronous:true
		}
	);
}

function effettuaReplace(e,idOffertaNew,idCarrello)
{
	var source = 'carrello.php?mode=ajax&target=switchSupermercato&idCarrello='+idCarrello+'&idOffertaNew='+idOffertaNew;
	var img = getLoader();
	var span = this;
	this.parentNode.appendChild(img);

	new Ajax.Request
	(
		source,
		{
			onSuccess: function(transport)
			{
				try
				{
					var info = transport.responseText.evalJSON(true);

					if (info.redirect)
						refresh();

					img.remove();

					// Elimino la scritta "Scambia?"
					span.hide();

					// Faccio comparire i carrellini
					$('cp_'+idOffertaNew).show();

					// Aggiungo la class che indica che è nel carrello
					$('cc_'+idOffertaNew).addClassName('ca');

					//cssAlert("Scambio Effettuato.");
					$('insegne').innerHTML = '';
					var newImg = getLoader();
					$('insegne').appendChild(newImg);
					var source = 'carrello.php?mode=ajax&target=insegne&idZona='+idZona;
					new Ajax.Updater($('insegne'), source,
					{
						onComplete: function()
						{
							$(newImg).remove();
						},asynchronous:true
					});
				}
				catch (e)
				{
					if (e.message.indexOf('formed JSON string') > 0)
						alert("Anomalia nella risposta: "+transport.responseText);
					else
						throw(e);
				}
			},
			asynchronous:true
		}
	);
}

function aggiornaCarrello(e,enter,heightBase)
{
	if (enter)
	{
		var prezzo = $('prezzoCarrello').innerHTML;
		if ((prezzo.indexOf(" 0") == -1) || (prezzo.indexOf(" 0.") != -1))
		{
			$('carrello').style.height = '';

			$('dettagliCarrello').show();
			$('dettagliCarrello').innerHTML = '';
			var img = getLoader();
			$('dettagliCarrello').appendChild(img);

			// Carico i dati del carrello
			var source = '/carrello.php?mode=ajax&target=dettagli';
			new Ajax.Request
			(
				source,
				{
					onSuccess: function(transport)
					{
						img.remove();
						$('dettagliCarrello').update(transport.responseText);
					},
					asynchronous:true
				}
			);
		}
	}
	else
	{
		$('dettagliCarrello').hide();
		$('carrello').style.height = heightBase;
	}
}

function addEstensioneCarrello()
{
	if ($('carrello'))
	{
		var altBase = $('carrello').style.height;
		Event.observe($('carrello'), 'mouseenter', aggiornaCarrello.bindAsEventListener('',true,altBase));
		Event.observe($('carrello'), 'mouseleave', aggiornaCarrello.bindAsEventListener('',false,altBase));
	}
}

function addReplaceOfferta()
{
	$$('.replace').each(function(span)
  {
    var idReplace = span.readAttribute('idReplace');
		var idOld = span.readAttribute('idOld');
		var idCarr = span.readAttribute('idCarr');
		new Control.AjaxTip(span,'carrello.php?mode=ajax&target=replace&idReplace='+idOld+'&idCarr='+idCarr);
		Event.observe(span, 'click', effettuaReplace.bindAsEventListener(span,idReplace,idCarr));
	});
}

function onLoadCarrello()
{
	addCarrello();
	addEstensioneCarrello();
	addReplaceOfferta();
}

if(FastInit)
	FastInit.addOnLoad(onLoadCarrello);
else
	Event.observe(window, 'load', onLoadCarrello);
