// FUNZIONE CHE CREA GLI OGGETTI http PER LE RICHIESTE CON METODOLOGIA AJAX E FACENDO RIFERIMENTO ALLE SPECIFICHE XML

// QUESTA VARIABILE LA USO PER LE TRANSAZIONI CON IL METODO POST
var http = new XMLHttpRequest();

function getHTTPObject()
	{
  var xmlhttp;

  /*@cc_on
  @if (@_jscript_version >= 5)
    try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (E) {
        xmlhttp = false;
      }
    }
  @else
  xmlhttp = false;
  @end @*/

  if (!xmlhttp && typeof XMLHttpRequest != 'undefined')
  	{
    try
    	{
      xmlhttp = new XMLHttpRequest();
	  	xmlhttp.overrideMimeType("text/xml");
    	}
    catch (e)
    	{
      xmlhttp = false;
    	}
  	}
  	return xmlhttp;
	}

// RICONOSCIMENTO DEL BROWSER
var IE = false;
var NS=false;
var browser_version = parseInt(navigator.appVersion);
var browser_type = navigator.appName;
if (browser_type == "Microsoft Internet Explorer")
	{
	IE = true;
	}
else
	{
	NS = true;
	}

function prodotto_nel_carrello( id, quantita, eliminariga )
	{
	
	// DEBUG
	/*
	alert ( id + " " + quantita)
	return;
	*/

	// CHIAMO UNA ROUTINE AJAX
	if (!AJAXisWorking && MyHttp)
		{

		// STRINGA CHE CONTERRA' I PARAMETRI DA PASSARE ALLO SCRIPT PHP, CHIAMATO CON METODO AJAX,
		// CHE EFFETTUERA' FISICAMENTE L'AGGIORNAMENTO DEI PRODOTTI PRESENTI NEL CARRELLO
		var parametri = "";

		// USO UN PARAMETRO RANDOM PER RIDURRE IL RISCHIO DI USO DELLA CACHE
		var randvalue = Math.random() * 100;
		parametri += "?rnd=" + randvalue.toString();

		// PASSO L'ID DEL PRODOTTO DA AGGIUNGERE/TOGLIERE NEL CARRELLO
		parametri += "&id=" + id;
		
		// PASSO LA QUANTITA' ( +1 / -1 ) DA AGGIUNGERE/TOGLIERE NEL CARRELLO ( 0 = TOGLI IL PRODOTTO DAL CARRELLO)
		parametri += "&qta=" + quantita;
		
		// PASSO IL PARAMETRO ELIMINA RIGA, CHE DICE ALLA PROCEDURA SE, QUALORA A SEGUITO DELLA
		// TRANSAZIONE AJAX LA QUANTITA' SIA PARI A ZERO, LA RIGA DELLA TABELLA CON L'ELENCO DEI
		// PRODOTTI VA ELIMINATA O MENO
		parametri += "&er=" + eliminariga;
		
		// IMPOSTA IL FLAG IN MODO CHE TUTTO JAVASCRIPT SAPPIA CHE E' IN CORSO UNA ELABORAZIONE SERVER-SIDE
		// E CHE DEVE ATTENDERE LA SUA CONCLUSIONE PRIMA DI POTERNE AVVIARE UN'ALTRA
		AJAXisWorking = true;
		
		// DEBUG
		// alert( parametri );
			
		// AVVIO LA TRANSAZIONE AJAX
		MyHttp.open("GET", "./ajax/prodotto_nel_carrello.php" + parametri, true);
			
		// AL CAMBIAMENTO DI STATO DELL'OGGETTO http AVVIA LA GESTIONE DELLO STESSO
		MyHttp.onreadystatechange = handle_prodotto_nel_carrello;
			
		// TERMINA LA TRANSAZIONE AJAX
		MyHttp.send(null);
		
		}
		
	}
	
function handle_prodotto_nel_carrello()
	{

	// SE L'OGGETTO MyHttp E' IN UNA SITUAZIONE CHE NE CONSENTE L'ELABORAZIONE
	if ( (MyHttp.readyState == 4) && (MyHttp.status == 200) )
		{
		
		// DETERMINO SE IL CLIENT E' I.E.
		var where = (navigator.appName == "Microsoft Internet Explorer") ? -1 : null;

		// USO XML DOM PER RICAVARE I DATI DI MIO INTERESSE DALLA RISPOSTA RICEVUTA DAL SERVER
		// CHE E' IN FORMATO XML ED E' CONTENUTA ANCHE IN MyHttp.responseText
		var xmlDocument = MyHttp.responseXML; 
		
		// DEBUG
		// alert("handle_prodotto_nel_carrello\n" + MyHttp.responseText + "\n**********");

		var AjaxState = "";
		var AjaxMessage = "";
		
		// CODICE NUMERICO PER L'ESITO DELL'ELABORAZIONE
		if ( !xmlDocument.getElementsByTagName('stato').item(0) )
			{
			AjaxState = "1";
			}
		else
			{
			AjaxState = xmlDocument.getElementsByTagName('stato').item(0).firstChild.data;
			}

		// ESITO DELL'ELABORAZIONE
		if ( !xmlDocument.getElementsByTagName('esito').item(0) )
			{
			AjaxMessage = "";
			}
		else
			{
			AjaxMessage = xmlDocument.getElementsByTagName('esito').item(0).firstChild.data;
			}

		if ( AjaxState == "1" )
			{
			alert("Errore imprevisto nella transazione Ajax!");
			}
		else
			{
			
			// SE LA RISPOSTA AJAX E' OK
			if (AjaxState == "0")
				{
				
				// ID DEL PRODOTTO PRESENTE NEL CARRELLO DOPO L'ELABORAZIONE LATO SERVER
				if ( !xmlDocument.getElementsByTagName('id').item(0) )
					{
					AjaxState = "1";
					}
				else
					{
					var id = xmlDocument.getElementsByTagName('id').item(0).firstChild.data;
					}
					
				// QUANTITA' DEL PRODOTTO PRESENTE NEL CARRELLO DOPO L'ELABORAZIONE LATO SERVER
				if ( !xmlDocument.getElementsByTagName('quantita').item(0) )
					{
					AjaxState = "1";
					}
				else
					{
					var quantita = xmlDocument.getElementsByTagName('quantita').item(0).firstChild.data;
					}
					
				// PREZZO DEL PRODOTTO PRESENTE NEL CARRELLO DOPO L'ELABORAZIONE LATO SERVER
				if ( !xmlDocument.getElementsByTagName('prezzo').item(0) )
					{
					AjaxState = "1";
					}
				else
					{
					var prezzo = xmlDocument.getElementsByTagName('prezzo').item(0).firstChild.data;
					}				

				// TROVO LA CELLA CHE CONTIENE LA QUANTITA' DEL PRODOTTO E LA AGGIORNO
				if ( document.getElementById("td_prodotto_" + id + "_quantita") )
					{
					cella = document.getElementById("td_prodotto_" + id + "_quantita");
					cella.innerHTML = quantita.toString();
					}
					
				// TROVO LA CELLA CHE CONTIENE L'IMPORTO DI RIGA PER IL  PRODOTTO E LA AGGIORNO
				if ( document.getElementById("td_prodotto_" + id + "_importo_prodotto") )
					{
					cella = document.getElementById("td_prodotto_" + id + "_importo_prodotto");
					cella.innerHTML = parseFloat(prezzo * quantita).toFixed(2);
					}

				// RICAVO IL NUMERO DI REFERENZE PRESENTI NEL CARRELLO
				var referenze = parseInt(xmlDocument.getElementsByTagName('referenze').item(0).firstChild.data);
					
				// SE E' STATO IMPOSTATO A 1 IL PARAMETRO PER L'ELIMINAZIONE DELLE RIGE CON QUANTITA' PARI A ZERO
				var eliminariga = xmlDocument.getElementsByTagName('er').item(0).firstChild.data;
				if ( eliminariga == "1" )
					{
					// LA ELIMINO
					if ( document.getElementById("tbody_prodotti") && document.getElementById("tr_prodotto_" + id)  )
						{
						var corpo = document.getElementById("tbody_prodotti");
						var riga = document.getElementById("tr_prodotto_" + id);
						
						// SE LA QUANTITA' RISULTANTE E' INFERIORE A 1...
						if ( parseInt(quantita) < 1 )
							{
							// ELIMINO LA RIGA RIGUARDANTE IL PRODOTTO
							corpo.removeChild(corpo.rows[riga.id]);
							}
					
						// SE NON SONO RIMASTE RIGHE...
						if ( referenze < 1 )
							{
							// RICARICO LA PAGINA
							document.location = "?pag=carrello";
							}
						
						}
					}
				else
					{
					// LA AGGIORNO
					if ( document.getElementById("td_prodotto_" + id + "_importo_prodotto") )
						{
						var cella = document.getElementById("td_prodotto_" + id + "_importo_prodotto");
						cella.innerHTML = (quantita * prezzo).toFixed(2);
						}
					}

				// AGGIORNO LA CHIUSURA PER L'IMPORTO MERCE
				if ( (document.getElementById("td_chiusura_carrello_importo_merce" )) && ( referenze > 0 ) )
					{

					// DEBUG
					// alert("Aggiorno la chiusura importo merce nel carrello");

					// FACCIO UN CICLO SU TUTTI I PRODOTTI PRESENTI NEL CARRELLO RESTITUITI DALLA TRANSAZIONE AJAX
					// INIZIALIZZO L'IMPORTO DELLA MERCE NEL CARRELLO
					var importo_merce = 0.00
					for ( var n = 0; n < referenze; n++)
						{	
						quantita_prodotto		= parseInt(xmlDocument.getElementsByTagName('carrello_id').item(n).firstChild.data);
						prezzo_prodotto			= parseFloat(xmlDocument.getElementsByTagName('carrello_prezzo').item(n).firstChild.data);
						importo_merce			+= (quantita_prodotto * prezzo_prodotto);
						}
					document.getElementById("td_chiusura_carrello_importo_merce").innerHTML = importo_merce.toFixed(2).toString();
					}

				// INIZIALIZZO L'IMPORTO PER IL PAGAMENTO
				var importo_pagamento = 0.00;

				// INIZIALIZZO L'IMPORTO PER LA CONSEGNA
				var importo_consegna = 0.00;
				
				// AGGIORNO LA CHIUSURA PER L'IMPORTO PER LA CONSEGNA
				if ( (document.getElementById("td_chiusura_ordine_importo_ordine" )) && ( referenze > 0 ) )
					{

					// DEBUG
					// alert("Aggiorno la chiusura importo consegna nel carrello");
					
					// TROVO QUALE MODALITA' DI CONSEGNA E' STATA SELEZIONATA
					var radio_consegne = document.getElementsByName("radio_consegna");

					// DEBUG
					// alert(radio_consegne.length);
					
					// FACCIO UN CICLO SUI RADIO BUTTON PER LE MODALITA' DI CONSEGNA
					for ( var c = 0; c < radio_consegne.length; c++ )
						{
						// TROVO QUELLO SELEZIONATO
						if ( radio_consegne[c].checked )
							{
							// IL VALUE DELL'OGGETTO RADIO E' NEL FORMATO "id:prezzo"
							aConsegna = radio_consegne[c].value.split("-") ;
							importo_consegna = parseFloat( aConsegna[1] );
							break;
							}
						}

					document.getElementById("td_chiusura_ordine_importo_ordine").innerHTML = (importo_merce + importo_pagamento + importo_consegna).toFixed(2).toString();

					}
					
				// AGGIORNO LA CHIUSURA PER L'IMPORTO PER IL PAGAMENTO
				if ( (document.getElementById("td_chiusura_ordine_importo_ordine" )) && ( referenze > 0 ) )
					{

					// DEBUG
					// alert("Aggiorno la chiusura importo pagamento nel carrello");
					
					// TROVO QUALE MODALITA' DI PAGAMENTO E' STATA SELEZIONATA
					var radio_pagamenti = document.getElementsByName("radio_pagamento");

					// DEBUG
					// alert(radio_pagamenti.length);
					
					// FACCIO UN CICLO SUI RADIO BUTTON PER LE MODALITA' DI PAGAMENTO
					for ( var c = 0; c < radio_pagamenti.length; c++ )
						{
						// TROVO QUELLO SELEZIONATO
						if ( radio_pagamenti[c].checked )
							{
							// IL VALUE DELL'OGGETTO RADIO E' NEL FORMATO "id:prezzo"
							aPagamento = radio_pagamenti[c].value.split("-") ;
							importo_pagamento = parseFloat( aPagamento[1] );
							break;
							}
						}

					document.getElementById("td_chiusura_ordine_importo_ordine").innerHTML = (importo_merce + importo_pagamento + importo_consegna).toFixed(2).toString();

					}
				
				// AGGIORNO IL RIEPILOGO DEL CARRELLO
				if ( document.getElementById("div_riepilogo_carrello") )
					{

					// RICAVO IL NUMERO DI REFERENZE PRESENTI NEL CARRELLO
					// var referenze = parseInt(xmlDocument.getElementsByTagName('referenze').item(0).firstChild.data);

					// INIZIALIZZO IL RIEPILOGO DEL CARRELLO
					var riepilogo_carrello = "";
					
					// SE LE REFERENZE PRESENTI NEL CARRELLO SONO MAGGIORI DI ZERO
					if ( referenze > 0 )
						{

						//riepilogo_carrello += "Questo &egrave; il riepilogo del carrello da aggiornare in tempo reale\n";
						//riepilogo_carrello += "<br>";
						
						riepilogo_carrello += "<table width='100%' border='1'>";
						riepilogo_carrello += "<thead>";
						riepilogo_carrello += "<tr>";
						riepilogo_carrello += "<th>";
						riepilogo_carrello += "Cod.";
						riepilogo_carrello += "</th>";
						riepilogo_carrello += "<th>";
						riepilogo_carrello += "N.";
						riepilogo_carrello += "</th>";
						riepilogo_carrello += "<th>";
						riepilogo_carrello += "Prezzo";
						riepilogo_carrello += "</th>";
						riepilogo_carrello += "</tr>";
						riepilogo_carrello += "</thead>";
						riepilogo_carrello += "<tbody>";
						
						// INIZIALIZZO L'IMPORTO TOTALE DEL CARRELLO
						var importo_carrello = 0.00;
						
						// FACCIO UN CICLO SU TUTTI I PRODOTTI PRESENTI NEL CARRELLO RESTITUITI DALLA TRANSAZIONE AJAX
						for ( var n = 0; n < referenze; n++)
							{
							// nNuovoIportoRiga = nNuovoIportoRiga.toFixed(2);
							quantita_prodotto		= parseInt(xmlDocument.getElementsByTagName('carrello_id').item(n).firstChild.data);
							descrizione_prodotto	= xmlDocument.getElementsByTagName('carrello_descrizione').item(n).firstChild.data;
							prezzo_prodotto			= parseFloat(xmlDocument.getElementsByTagName('carrello_prezzo').item(n).firstChild.data);
							importo_prodotto		= quantita_prodotto * prezzo_prodotto;
							
							// INCREMENTO L'IMPORTO TOTALE DEL CARRELLO
							importo_carrello += importo_prodotto;
						
							riepilogo_carrello += "<tr bgcolor='#FFFFFF'>";
							riepilogo_carrello += "<td>";
							riepilogo_carrello += descrizione_prodotto;
							riepilogo_carrello += "</td>";
							riepilogo_carrello += "<td class='tx-destra'>";
							riepilogo_carrello += quantita_prodotto;
							riepilogo_carrello += "</td>";
							//riepilogo_carrello += "<td>";
							//riepilogo_carrello += prezzo_prodotto.toFixed(2);
							//riepilogo_carrello += "</td>";
							riepilogo_carrello += "<td class='tx-destra'>";
							riepilogo_carrello += importo_prodotto.toFixed(2);
							riepilogo_carrello += "</td>";
							riepilogo_carrello += "</tr>";
						
							}

						riepilogo_carrello += "<tr bgcolor='#F8F8F8'>";
						riepilogo_carrello += "<td colspan='4' class='tx-destra tx-grassetto'>";
						riepilogo_carrello += "Totale " + importo_carrello.toFixed(2) + " &euro;";
						riepilogo_carrello += "</td>";
						riepilogo_carrello += "</tr>";
						
						riepilogo_carrello += "</tbody></table>";
						riepilogo_carrello += "<p class='tx-centro'><a href='?pag=carrello' title='Vai al carrello'>Vai al carrello</a></p>";
							
						}
					else
						{
						riepilogo_carrello += "Il carrello &egrave; vuoto";
						}

					var riepilogo = document.getElementById("div_riepilogo_carrello");
					riepilogo.innerHTML = riepilogo_carrello;

					}
					
				// alert("Operazione riuscita.\n" + AjaxMessage);
				
				}
			else
				{
				alert("Operazione fallita.\n" + AjaxMessage);
				}
		
			}
		
		// AJAX HA FINITO DI LAVORARE
		AJAXisWorking = false;
					
		}

	// RITORNO ALLO SCRIPT JAVASCRIPT CHIAMANTE
	return;
		
	}

function seleziona_modalita_di_consegna(oRadio)
	{
	
	// DEBUG
	// alert( "Hai selezionato " + oRadio.value );

	// RICAVO IL COSTO PER LA MODALITA' DI CONSEGNA SELEZIONATA
	var aConsegna = oRadio.value.split("-") ;
	var importo_consegna = parseFloat( aConsegna[1] );
	
	// FACCIO UN CICLO SUI RADIO BUTTON PER LE MODALITA' DI CONSEGNA
	// E AGGIORNO LE CELLE CON GLI IMPORTI PER LE SPESE DI CONSEGNA
	var radio_consegne = document.getElementsByName("radio_consegna");
	for ( var c = 0; c < radio_consegne.length; c++ )
		{
		aConsegna = radio_consegne[c].value.split("-") ;
		if ( !radio_consegne[c].checked)
			{
			document.getElementById("td_consegna_importo_" + aConsegna[0]).innerHTML = "&nbsp;";
			}
		else
			{
			document.getElementById("td_consegna_importo_" + aConsegna[0]).innerHTML = importo_consegna.toFixed(2).toString();
			}
		}

	// DEBUG
	// alert("Controllo il pagamento");
		
	// INIZIALIZZO IL COSTO PER LA MODALITA' DI PAGAMENTO
	var importo_pagamento = 0.00;
		
	// VERIFICO IL COSTO DEL PAGAMENTO GIA' SELEZIONATO
	var radio_pagamenti = document.getElementsByName("radio_pagamento");
	for ( var p = 0; p < radio_pagamenti.length; p++ )
		{
		aPagamento = radio_pagamenti[p].value.split("-") ;
		
		if ( radio_pagamenti[p].checked)
			{
			importo_pagamento = parseFloat(aPagamento[1]);
			}
		}
		
	// AGGIORNO LA CELLA CON L'IMPORTO TOTALE DELL'ORDINE
	var importo_merce = parseFloat(document.getElementById("td_chiusura_carrello_importo_merce").innerHTML);

	// DEBUG
	// alert( "Merce " + importo_merce + "\nCONSEGNA " + importo_consegna + "\nPAGAMENTO " + importo_pagamento );

	var importo_ricalcolato = importo_merce + importo_consegna + importo_pagamento; 
	document.getElementById("td_chiusura_ordine_importo_ordine").innerHTML = importo_ricalcolato.toFixed(2);
		
	}
	
function seleziona_modalita_di_pagamento(oRadio)
	{
	
	// DEBUG
	// alert( "Hai selezionato " + oRadio.value );

	// RICAVO IL COSTO PER LA MODALITA' DI PAGAMENTO SELEZIONATA
	var aPagamento = oRadio.value.split("-") ;
	var importo_pagamento = parseFloat( aPagamento[1] );
	
	// FACCIO UN CICLO SUI RADIO BUTTON PER LE MODALITA' DI PAGAMENTO
	// E AGGIORNO LE CELLE CON GLI IMPORTI PER LE SPESE DI PAGAMENTO
	var radio_pagamenti = document.getElementsByName("radio_pagamento");
	for ( var c = 0; c < radio_pagamenti.length; c++ )
		{
		aPagamento = radio_pagamenti[c].value.split("-") ;
		if ( !radio_pagamenti[c].checked)
			{
			document.getElementById("td_pagamento_importo_" + aPagamento[0]).innerHTML = "&nbsp;";
			}
		else
			{
			document.getElementById("td_pagamento_importo_" + aPagamento[0]).innerHTML = importo_pagamento.toFixed(2).toString();
			}
		}

	// DEBUG
	// alert("Controllo la consegna");
		
	// INIZIALIZZO IL COSTO PER LA MODALITA' DI CONSEGNA
	var importo_consegna = 0.00;
		
	// VERIFICO IL COSTO DELLA CONSEGNA GIA' SELEZIONATA
	var radio_consegne = document.getElementsByName("radio_consegna");
	
	for ( var p = 0; p < radio_consegne.length; p++ )
		{	
		aConsegna = radio_consegne[p].value.split("-") ;
		if ( radio_consegne[p].checked)
			{
			importo_consegna = parseFloat(aConsegna[1]);
			}
		}
		
	// AGGIORNO LA CELLA CON L'IMPORTO TOTALE DELL'ORDINE
	var importo_merce = parseFloat(document.getElementById("td_chiusura_carrello_importo_merce").innerHTML);
	
	// DEBUG
	// alert( "Merce " + importo_merce + "\nCONSEGNA " + importo_consegna + "\nPAGAMENTO " + importo_pagamento );
	
	var importo_ricalcolato = importo_merce + importo_consegna + importo_pagamento; 
	document.getElementById("td_chiusura_ordine_importo_ordine").innerHTML = importo_ricalcolato.toFixed(2);
	// questo funzia!!! document.getElementById("td_chiusura_ordine_importo_ordine").innerHTML = (importo_merce + importo_pagamento + importo_consegna).toFixed(2).toString();
		
	}

function uscitatestosenzastile(oInput,nMin,nMax,cAllowedChars,nCase,cOkStyle,cErrorStyle,cDescription,lAlert)
	{

	// DEBUG
	// alert("Controllo il campo" + oInput.id);
	
	// oInput		// OGGETTO INPUT
	
	// nMin = 0;	// NUMERO MINIMO DI CARATTERI ACCETTABILI
				// 0 = NESSUN LIMITE, OVVERO CAMPO FACOLTATIVO

	// nMax = 30;	// NUMERO MASSIMO DI CARATTERI ACCETTABILI
				// DEVE SEMPRE ESSERE VALORIZZATO MAGGIORE DI nMin

	// cAllowedChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";	// STRINGA CONTENENTE I CARATTERI PERMESSI

	// nCase = 0		// 0 = LASCIA INVARIATO IL MAIUSCOLO/MINUSCOLO
					// 1 = TRASFORMA IN MAIUSCOLO
					// 2 = TRASFORMA IN MINUSCOLO
					
	// cDescription		// Descrizione del campo soggetto a controllo, da visualizzare negli eventuali alerts
	
	// lAlert			// true = visualizza degli alerts in caso di controllo fallito
					// false = non visulazza alerts in caso di controllo fallito ma si limita a restituire false

	// VARIABILE USATA PER MEMORIZZARE IL TIPO DELLE ALTRE VARIABILI
	// USATE NEL CORSO DELLA ELABORAZIONE PER VERIFICARE SE LE STESSE
	// SONO STATE PASSATE O MENO
	var cTipoVariabile = "";

	// SE NON E' STATO PASSATO IL NUMERO MINIMO DI CARATTERI DA GESTIRE
	// TERMINA CON UN ERRORE
	cTipoVariabile = typeof(nMin);
	if (cTipoVariabile.toUpperCase() == "UNDEFINED" )
		{
		alert("Errore di chiamata javascript per il\nnumero minimo di caratteri ammessi");
		return false;
		}

	// SE NON E' STATO PASSATO IL NUMERO MASSIMO DI CARATTERI DA GESTIRE
	// TERMINA CON UN ERRORE
	cTipoVariabile = typeof(nMax);
	if (cTipoVariabile.toUpperCase() == "UNDEFINED" )
		{
		alert("Errore di chiamata javascript per il\nnumero massimo di caratteri ammessi");
		return false;
		}
		
	// SE NON E' STATO PASSATO IL FLAG PER LA GESTIONE DEL MAIUSCOLO/minuscolo
	// LO IMPOSTA DI DEFAULT A 1 (CAMBIA TUTTO IN MAIUSCOLO)
	cTipoVariabile = typeof(nCase);
	if (cTipoVariabile.toUpperCase() == "UNDEFINED" )
		{
		nCase = 1;
		}
		
	// SE NON E' STATA PASSATA LA STRINGA CON LA CLASSE OK
	// LA IMPOSTA DI DEFAULT A ""
	cTipoVariabile = typeof(cOkStyle);
	if (cTipoVariabile.toUpperCase() == "UNDEFINED" )
		{
		cOkStyle = "";
		}

	// SE NON E' STATA PASSATA LA STRINGA CON I CARATTERI AMMESSI
	// LA IMPOSTA DI DEFAULT A "" ( = ACCETTA QUALSIASI CARATTERE)
	cTipoVariabile = typeof(cAllowedChars);
	if (cTipoVariabile.toUpperCase() == "UNDEFINED" )
		{
		cAllowedChars = "";
		}
		
	// SE NON E' STATA PASSATA LA DESCRIZIONE DA VISUALIZZARE NEGLI EVENTUALI ALERTS
	// LA IMPOSTA DI DEFAULT A ""
	cTipoVariabile = typeof(cDescription);
	if (cTipoVariabile.toUpperCase() == "UNDEFINED" )
		{
		cDescription = "";
		}
		
	// SE NON E' STATO PASSATO IL FLAG PER VISUALIZZARE O NO GLI ALERST IN CASO DI CONTROLLO FALLITO
	// LO IMPOSTA DI DEFAULT A true
	cTipoVariabile = typeof(lAlert);
	if (cTipoVariabile.toUpperCase() == "UNDEFINED" )
		{
		lAlert = true;
		}

	// INIZIALIZZA A VERO IL VALORE DA RITORNARE ALLO SCRIPT CHIAMANTE
	var lRet = true;

	// MEMORIZZA IL CONTENUTO DEL CAMPO PER LE SUCCESSIVE ELABORAZIONI
	var cValore = oInput.value;

	if (nCase == 1)
		{
		cValore = oInput.value.toUpperCase();
		}

	if (nCase == 2)
		{
		cValore = oInput.value.toLowerCase();
		}

	// MEMORIZZA IL CONTENUTO DEL CAMPO PRIMA DI QUALSIASI ELABORAZIONE
	// PER POTERLO VISUALIZZARE NELL'ALERT IN CASO CHE NON SIA VALIDAMENTE VALORIZZATO
	var cOldValore = cValore;

	// SE FINORA IL CONTROLLO E' STATO OK...
	if (lRet)
		{
					
		// SE E' PRESENTE UNA STRINGA cAllowedChars
		if (cAllowedChars != "")
			{
			// PER OGNI CARATTERE CONTENUTO NEL CAMPO
			for (n=0;n<cValore.length;n++)
				{
				// SE LO STESSO NON E' PRESENTE NELLA STRINGA cAllowedChars
				if ( cAllowedChars.indexOf(cValore.charAt(n)) < 0 )
					{
					// VA IN ERRORE!
					if ( lAlert )
						{
						if ( cDescription == "" )
							{
							alert ("Il carattere " + cValore.charAt(n).toUpperCase() + " non è ammesso");
							}
						else
							{
							alert ("Il carattere " + cValore.charAt(n).toUpperCase() + " nel campo\n" + cDescription + "\nnon è ammesso");
							}
						}
					lRet = false;
					break;
					}
				}
			}
		}

	// SE FINORA IL CONTROLLO E' STATO OK...
	if (lRet)
		{
		// SE NON E' STATO IMMESSO ALCUN VALORE E IL CAMPO E' OBBLIGATORIO...
		if ( (cValore == "") && (nMin > 0) )
			{
			// VA IN ERRORE!
			if ( lAlert )
				{
				if ( cDescription == "" )
					{
					alert ("Il campo è obbligatorio!");
					}
				else
					{
					alert ("Il campo " + cDescription + "\nè obbligatorio!");
					}
				}
			lRet = false;
			}
		}

	// SE FINORA IL CONTROLLO E' STATO OK...
	if (lRet)
		{
		// LUNGHEZZA MINIMA E MASSIMA DEL CAMPO UGUALI (CAMPO DI LUNGHEZZA FISSA)
		if ( (cValore.length > 0) && (cValore.length != nMin) && (nMin == nMax) )
			{
			// VA IN ERRORE!
			if ( lAlert )
				{
				if ( cDescription == "" )
					{
					alert ("La lunghezza deve essere di " + nMin + " caratteri");
					}
				else
					{
					alert ("La lunghezza del campo " + cDescription + "\ndeve essere di " + nMin + " caratteri");
					}
				}
			lRet = false;
			}
		}
	
	if (lRet)
		{
		// LUNGHEZZA MINIMA DEL CAMPO
		if ( (cValore.length > 0) && (cValore.length < nMin) && (nMin > 0) )
			{
			// VA IN ERRORE!
			if ( lAlert )
				{
				if ( cDescription == "" )
					{
					alert ("Lunghezza minima = " + nMin);
					}
				else
					{
					alert ("Lunghezza minima del campo " + cDescription + " = " + nMin);
					}
				}
			lRet = false;
			}
		}

	// SE FINORA IL CONTROLLO E' STATO OK...
	if (lRet)
		{
		// LUNGHEZZA MASSIMA DEL CAMPO
		if ( (cValore.length > 0) && (cValore.length > nMax) )
			{
			// VA IN ERRORE!
			if ( lAlert )
				{
				if ( cDescription == "" )
					{
					alert ("Lunghezza massima = " + nMax);
					}
				else
					{
					alert ("Lunghezza massima del campo " + cDescription + " = " + nMax);
					}
				}
			lRet = false;
			}
		}

	// INFINE, SE IL CONTROLLO E' STATO OK...
	if (lRet)
		{
		// VISUALIZZA IL NUMERO CORRETTAMENTE FORMATTATO
		// E GLI APPLICA LO STILE PER CONTROLLO OK
		if (typeof(cOkStyle).toUpperCase() != "UNDEFINED")
			{
			oInput.className = cOkStyle;
			}
		oInput.value = cValore;
		}
	else
		{
		// LASCIA INALTERATO IL VALORE DEL CAMPO
		// E GLI APPLICA LO STILE PER EVIDENZIARE GLI ERRORI
		if (typeof(cErrorStyle).toUpperCase() != "UNDEFINED")
			{
			oInput.className = cErrorStyle;
			}
		oInput.value = cOldValore;
		}
	
	// RITORNA IL RISULTATO ALLO SCRIPT CHIAMANTE
	return lRet;
	}

function check_email(eEmail,nMin,nMax,cErrorStyle,cOkStyle,lAlert)
	{

	// SE NON E' STATO PASSATO IL FLAG PER VISUALIZZARE O NO GLI ALERST IN CASO DI CONTROLLO FALLITO
	// LO IMPOSTA DI DEFAULT A true
	var cTipoVariabile = typeof(lAlert);
	if (cTipoVariabile.toUpperCase() == "UNDEFINED" )
		{
		lAlert = true;
		}
	
	// IMPOSTO CHE TUTTO, PRIMA DEI CONTROLLI, E' OK
	var lRet = true;
 
	// VERIFICO L'ELEMENTO INPUT...
	if (lRet)
		{
		cTipoVariabile = typeof(eEmail);

		if (cTipoVariabile.toUpperCase() == "UNDEFINED" )
			{
			// SE NON E' STATO PASSATO L'ELEMENTO INPUT PER L'INDIRIZZO ESCE CON ERRORE
			alert("Indirizzo email non passato")
			lRet = false;
			}
		else
			{
			// ALTRIMENTI NE RICAVA IL VALORE SU CUI EFFETTUARE I SUCCESSIVI CONTROLLI
			var str = eEmail.value;
			}
		}

	// SE NON E' STATO PASSATO LO STILE DA UTILIZZARE IN CASO DI CONTROLLO SUPERATO ESCE CON ERRORE
	if (lRet)
		{
		cTipoVariabile = typeof(cOkStyle);
		if (cTipoVariabile.toUpperCase() == "UNDEFINED" )
			{
			alert("Stile OK da utilizzare non passato")
			lRet = false;
			}
		}
		
	// SE NON E' STATO PASSATO LO STILE DA UTILIZZARE IN CASO DI CONTROLLO NON SUPERATO ESCE CON ERRORE
	if (lRet)
		{
		cTipoVariabile = typeof(cErrorStyle);
		if (cTipoVariabile.toUpperCase() == "UNDEFINED" )
			{
			alert("Stile ERRORE da utilizzare non passato")
			lRet = false;
			}
		}
		
	// SE NON E' STATO PASSATO IL NUMERO MINIMO DI CARATTERI ESCE CON ERRORE
	if (lRet)
		{
		cTipoVariabile = typeof(nMin);
		if (cTipoVariabile.toUpperCase() == "UNDEFINED" )
			{
			alert("Lunghezza minima non passata")
			lRet = false;
			}
		}
		
	// SE NON E' STATO PASSATO IL NUMERO MASSIMO DI CARATTERI ESCE CON ERRORE
	if (lRet)
		{
		cTipoVariabile = typeof(nMax);
		if (cTipoVariabile.toUpperCase() == "UNDEFINED" )
			{
			alert("Lunghezza massima non passata")
			lRet = false;
			}
		}
		
	// CONTROLLA LA LUNGHEZZA MINIMA E MASSIMA DELL'INDIRIZZO EMAIL
	if (lRet)
		{
		if ( (str.length < nMin) || (str.length > nMax) )
			{
			if ( lAlert )
				{
				alert("La lunghezza dell'indirizzo email deve essere\ncompresa tra " + nMin.toString() + " e " + nMax.toString() + " caratteri!")
				}
			lRet = false;
			}
		}
 
	var at="@"
	var dot="."
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)

	if (lRet)
		{
		if (str.indexOf(at)==-1)
			{
			if ( lAlert )
				{
				alert("Indirizzo email non valido")
				}
			lRet = false;
			}
		}

	if (lRet)
		{
		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr)
			{
			if ( lAlert )
				{
				alert("Indirizzo email non valido")
				}
			lRet = false;
			}
		}

	if (lRet)
		{
		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr)
			{
			if ( lAlert )
				{
				alert("Indirizzo email non valido")
				}
			lRet = false;
			}
		}

	if (lRet)
		{
		if (str.indexOf(at,(lat+1))!=-1)
			{
			if ( lAlert )
				{
				alert("Indirizzo email non valido")
				}
			lRet = false;
			}
		}

	if (lRet)
		{
		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot)
			{
			if ( lAlert )
				{
				alert("Indirizzo email non valido")
				}
			lRet = false;
			}
		}

	if (lRet)
		{
		if (str.indexOf(dot,(lat+2))==-1)
			{
			if ( lAlert )
				{
				alert("Indirizzo email non valido")
				}
			lRet = false;
			}
		}
		
	if (lRet)
		{
		if (str.indexOf(" ")!=-1)
			{
			if ( lAlert )
				{
				alert("Indirizzo email non valido")
				}
			lRet = false;
			}
		}
	
	// CONTROLLO AGGIUNTO DA GIUSEPPE
	// VERIFICO LA LUNGHEZZA DEL TOP DOMAIN LEVEL
	if (lRet)
		{
		// RICAVO IL TOP DOMAIN LEVEL
		var tdl = str.substring(str.lastIndexOf(".") + 1);

		// DEBUG
		// alert(tdl);
		
		if ( tdl.length > 4 )
			{
			if ( lAlert )
				{
				alert("Indirizzo email non valido")
				}
			lRet = false;
			}
		}

	if (lRet)
		{
		eEmail.className = cOkStyle;
		}
	else
		{
		eEmail.className = cErrorStyle;
		}

	return lRet;
		
	}

function check_checkbox(oCheckBox,lRightStatus,cOkStyle,cErrorStyle,lAlert,cDescription)
	{
	
	// DEBUG
	// alert("PIPPO");
	
	// oCheckBox	// l'oggetto checkbox da controllare
	
	// lRightStatus	// true = deve essere selezionato
				// false = non deve essere selezionato
	
	// cOkStyle	// lo stile da applicare in caso di controllo superato
	
	// cErrorStyle	// lo stile da applicare in caso di controllo non superato
	
	// lAlert		// true = visualizza degli alerts in caso di controllo fallito
				// false = non visulazza alerts in caso di controllo fallito ma si limita a restituire false
				
	// cDescription	// Descrizione del campo soggetto a controllo, da visualizzare negli eventuali alerts

	// SE NON E' STATO PASSATO IL FLAG PER VISUALIZZARE O NO GLI ALERST IN CASO DI CONTROLLO FALLITO
	// LO IMPOSTA DI DEFAULT A true
	var cTipoVariabile = typeof(lAlert);
	if (cTipoVariabile.toUpperCase() == "UNDEFINED" )
		{
		lAlert = true;
		}
		
	// SE NON E' STATO PASSATO IL FLAG PER VISUALIZZARE O NO GLI ALERST IN CASO DI CONTROLLO FALLITO
	// LO IMPOSTA DI DEFAULT A true
	var cTipoVariabile = typeof(lRightStatus);
	if (cTipoVariabile.toUpperCase() == "UNDEFINED" )
		{
		// ESCO CON ERRORE
		alert( "Stato della checkbox non passato" );
		return false;
		}
		
	// SE NON E' STATA PASSATA LA STRINGA CON LA CLASSE DA APPLICARE IN CASO DI CONTROLLO SUPERATO
	// LA IMPOSTA DI DEFAULT A ""
	cTipoVariabile = typeof(cOkStyle);
	if (cTipoVariabile.toUpperCase() == "UNDEFINED" )
		{
		cOkStyle = "";
		}
		
	// SE NON E' STATA PASSATA LA STRINGA CON LA CLASSE DA APPLICARE IN CASO DI CONTROLLO NON SUPERATO
	// LA IMPOSTA DI DEFAULT A ""
	cTipoVariabile = typeof(cErrorStyle);
	if (cTipoVariabile.toUpperCase() == "UNDEFINED" )
		{
		cErrorStyle = "";
		}

	// SE NON E' STATA PASSATA LA DESCRIZIONE DA VISUALIZZARE NEGLI EVENTUALI ALERTS
	// LA IMPOSTA DI DEFAULT A ""
	cTipoVariabile = typeof(cDescription);
	if (cTipoVariabile.toUpperCase() == "UNDEFINED" )
		{
		cDescription = "";
		}
		
	// IMPOSTO CHE TUTTO, PRIMA DEI CONTROLLI, E' OK
	var lRet = true;
	
	// VALORIZZO UNA VARIABILE STRINGA PER GLI ALERTS
	var cStatus = "";
	if ( lRightStatus )
		{
		cStatus = "selezionata";
		}
	else
		{
		cStatus = "non selezionata";
		}
	
	if ( lRet )
		{
		if ( oCheckBox.checked != lRightStatus )
			{
			if ( lAlert )
				{
				if ( cDescription == "" )
					{
					alert ( "La checkbox deve essere " + cStatus)
					}
				else
					{
					alert ( "La checkbox " + cDescription + "\ndeve essere " + cStatus)
					}
				}
			lRet = false;
			}
		}

	if ( !lRet)
		
	return lRet;
		
	}

function invia_ordine(cOkStyle,cErrorStyle)
	{
	
	// SE NON E' STATA PASSATA LA STRINGA CON LA CLASSE DA APPLICARE IN CASO DI CONTROLLO SUPERATO
	// LA IMPOSTA DI DEFAULT A ""
	var cTipoVariabile = typeof(cOkStyle);
	if (cTipoVariabile.toUpperCase() == "UNDEFINED" )
		{
		alert("E' obbligatorio passare lo stile da usare in caso di controllo superato");
		return false;
		}
		
	// SE NON E' STATA PASSATA LA STRINGA CON LA CLASSE DA APPLICARE IN CASO DI CONTROLLO NON SUPERATO
	// LA IMPOSTA DI DEFAULT A ""
	cTipoVariabile = typeof(cErrorStyle);
	if (cTipoVariabile.toUpperCase() == "UNDEFINED" )
		{
		alert("E' obbligatorio passare lo stile da usare in caso di controllo non superato");
		return false;
		}
	
	// INIZIALIZZO UN FLAG PER EVENTUALI CONDIZIONI DI ERRORE O CONTROLLI NON SUPERATI
	// E DI DEFAULT LO IMPOSTO CHE TUTTO E' OK
	var lRet = true;
	
	// DICHIARO UN FLAG PER GLI ERRORI CAMPO PER CAMPO
	var lCheck;
	
	// INIZIALIZZO UN MESSAGGIO DA VISUALIZZARE IN CASO DI ERRORE
	var error_message = "";
	
	// INIZIALIZZO UNA VARIABILE STRINGA PER I CARATTERI PERMESSI
	var caratteri_permessi = "";
	
	// DICHIARO MA NON INIZIALIZZO UNA VARIABILE CHE CONTERRA' GLI OGGETTI INPUT DA CONTROLLARE
	var e;
	
	// CONTROLLO CHE NON CI SIANO CAMPI DI INPUT POPOLATI IN MODO ERRATO DALL'UTENTE
	
	// CHECKBOX INFORMATIVA PRIVACY
	if ( document.getElementById("input_checkbox_privacy") )
		{
		e = document.getElementById("input_checkbox_privacy");
		if ( (e.className == cErrorStyle) || !e.checked )
			{
			error_message += "Devi accettare l'informativa sulla privacy\n";
			lRet = false;
			}
		}
		
	// CHECKBOX INFORMATIVA COMMERCIALE
	if ( document.getElementById("input_checkbox_commerciale") )
		{
		e = document.getElementById("input_checkbox_commerciale");
		if ( ( e.className == cErrorStyle ) || !e.checked )
			{
			error_message += "Devi accettare l'informativa sulla privacy\n";
			lRet = false;
			}
		}
		
	// TEXT RAGIONE SOCIALE
	if ( document.getElementById("input_text_sociale") )
		{
		e = document.getElementById("input_text_sociale");
		
		// CARATTERI AMMESSI NELLA INPUT RAGIONE SOCIALE
		caratteri_permessi = ""; // "" = TUTTI AMMESSI
		
		lCheck = uscitatestosenzastile(e,ragionesociale_min_length,ragionesociale_max_length,caratteri_permessi,1,cOkStyle,cErrorStyle,'Ragione+Sociale',false);
		if ( !lCheck )
			{
			error_message += "Errore sulla Ragione Sociale\n";
			lRet = false;
			}
		}

	// TEXT PARTITA IVA
	if ( document.getElementById("input_text_partita") )
		{
		e = document.getElementById("input_text_partita");
		
		// CARATTERI AMMESSI NELLA INPUT PARTITA IVA
		caratteri_permessi = "0123456789"; // "" = TUTTI AMMESSI
		
		lCheck = uscitatestosenzastile(e,partitaiva_min_length,partitaiva_max_length,caratteri_permessi,1,cOkStyle,cErrorStyle,'PARTITA+Iva',false);
		if ( !lCheck )
			{
			error_message += "Errore sulla Partita Iva\n";
			lRet = false;
			}
		}
	
	// TEXT NOME
	if ( document.getElementById("input_text_nome") )
		{
		e = document.getElementById("input_text_nome");

		// CARATTERI AMMESSI NELLA INPUT NOME
		caratteri_permessi = ""; // "" = TUTTI AMMESSI
		
		lCheck = uscitatestosenzastile(e,nome_min_length,nome_max_length,caratteri_permessi,1,cOkStyle,cErrorStyle,'Nome',false);
		if ( !lCheck )
			{
			error_message += "Errore sul Nome\n";
			lRet = false;
			}
		}
		
	// TEXT COGNOME
	if ( document.getElementById("input_text_cognome") )
		{
		e = document.getElementById("input_text_cognome");
		
		// CARATTERI AMMESSI NELLA INPUT COGNOME
		caratteri_permessi = ""; // "" = TUTTI AMMESSI
		
		lCheck = uscitatestosenzastile(e,cognome_min_length,cognome_max_length,caratteri_permessi,1,cOkStyle,cErrorStyle,'Cognome',false);
		if ( !lCheck )
			{
			error_message += "Errore sul Cognome\n";
			lRet = false;
			}
		}

	// TEXT INDIRIZZO
	if ( document.getElementById("input_text_indirizzo") )
		{
		e = document.getElementById("input_text_indirizzo");

		// CARATTERI AMMESSI NELLA INPUT INDIRIZZO
		caratteri_permessi = ""; // "" = TUTTI AMMESSI
		
		lCheck = uscitatestosenzastile(e,indirizzo_min_length,indirizzo_max_length,caratteri_permessi,1,cOkStyle,cErrorStyle,'Indirizzo',false);
		if ( !lCheck )
			{
			error_message += "Errore sull' Indirizzo\n";
			lRet = false;
			}
		}
	
	// TEXT TELEFONO
	if ( document.getElementById("input_text_telefono") )
		{
		e = document.getElementById("input_text_telefono");
		
		// CARATTERI AMMESSI NELLA INPUT TELEFONO
		caratteri_permessi = "0123456789 .,+-/"; // "" = TUTTI AMMESSI
		
		lCheck = uscitatestosenzastile(e,telefono_min_length,telefono_max_length,caratteri_permessi,1,cOkStyle,cErrorStyle,'Telefono',false);
		if ( !lCheck )
			{
			error_message += "Errore sul Telefono\n";
			lRet = false;
			}
		}
		
	// TEXT EMAIL
	if ( document.getElementById("input_text_email") )
		{
		e = document.getElementById("input_text_email");
		
		lCheck = check_email(e,email_min_length,email_max_length,cErrorStyle,cOkStyle,false);
		if ( !lCheck )
			{
			error_message += "Errore sull'indirizzo email\n";
			lRet = false;
			}
		}
		
	// SE SI SONO VERIFICATI FALLIMENTI NEI CONTROLLI
	if ( !lRet )
		{
		alert(error_message);
		return lRet;
		}

	if ( !confirm("Confermi la spedizione dell'ordine?") )
		{
		return;
		}
		
	// CHIAMO UNA ROUTINE AJAX
	if (!AJAXisWorking && MyHttp)
		{

		// STRINGA CHE CONTERRA' I PARAMETRI DA PASSARE ALLO SCRIPT PHP, CHIAMATO CON METODO AJAX,
		// CHE EFFETTUERA' FISICAMENTE L'AGGIORNAMENTO DEI PRODOTTI PRESENTI NEL CARRELLO
		var parametri = "";

		// USO UN PARAMETRO RANDOM PER RIDURRE IL RISCHIO DI USO DELLA CACHE
		var randvalue = Math.random() * 100;
		parametri += "?rnd=" + randvalue.toString();
		
		// FACCIO UN CICLO SUI RADIO PER LA CONSEGNA
		if ( document.getElementsByName("radio_consegna") )
			{
			var aConsegne = document.getElementsByName("radio_consegna");
			for ( a = 0; a < aConsegne.length; a++)
				{
				e = aConsegne[a];
				if ( e.checked )
					{
					parametri += "&con=" + e.value;
					break;
					}
				}
			}
			
		// FACCIO UN CICLO SUI RADIO PER IL PAGAMENTO
		if ( document.getElementsByName("radio_pagamento") )
			{
			var aPagamenti = document.getElementsByName("radio_pagamento");
			for ( a = 0; a < aPagamenti.length; a++)
				{
				e = aPagamenti[a];
				if ( e.checked )
					{
					parametri += "&pag=" + e.value;
					break;
					}
				}
			}
			
		// CHECKBOX PRIVACY
		if ( document.getElementById("input_checkbox_privacy") )
			{
			var e = document.getElementById("input_checkbox_privacy");
			if ( e.checked )
				{
				parametri += "&prv=" + e.value;
				}
			}
			
		// CHECKBOX COMMERCIALE
		if ( document.getElementById("input_checkbox_commerciale") )
			{
			var e = document.getElementById("input_checkbox_commerciale");
			if ( e.checked )
				{
				parametri += "&com=" + e.value;
				}
			}
			
		// TEXT RAGIONE SOCIALE
		if ( document.getElementById("input_text_sociale") )
			{
			var e = document.getElementById("input_text_sociale");
			parametri += "&rs=" + escape(e.value);
			}
			
		// TEXT PARTITA IVA
		if ( document.getElementById("input_text_partita") )
			{
			var e = document.getElementById("input_text_partita");
			parametri += "&pi=" + escape(e.value);
			}
			
		// TEXT NOME
		if ( document.getElementById("input_text_nome") )
			{
			var e = document.getElementById("input_text_nome");
			parametri += "&nm=" + escape(e.value);
			}

		// TEXT COGNOME
		if ( document.getElementById("input_text_cognome") )
			{
			var e = document.getElementById("input_text_cognome");
			parametri += "&cg=" + escape(e.value);
			}

		// TEXT INDIRIZZO
		if ( document.getElementById("input_text_indirizzo") )
			{
			var e = document.getElementById("input_text_indirizzo");
			parametri += "&nd=" + escape(e.value);
			}

		// TEXT CAP
		if ( document.getElementById("input_text_cap") )
			{
			var e = document.getElementById("input_text_cap");
			parametri += "&ca=" + escape(e.value);
			}
			
		// TEXT TELEFONO
		if ( document.getElementById("input_text_telefono") )
			{
			var e = document.getElementById("input_text_telefono");
			parametri += "&tl=" + escape(e.value);
			}
			
		// TEXT EMAIL
		if ( document.getElementById("input_text_email") )
			{
			var e = document.getElementById("input_text_email");
			parametri += "&em=" + escape(e.value);
			}
			
		// IMPOSTA IL FLAG IN MODO CHE TUTTO JAVASCRIPT SAPPIA CHE E' IN CORSO UNA ELABORAZIONE SERVER-SIDE
		// E CHE DEVE ATTENDERE LA SUA CONCLUSIONE PRIMA DI POTERNE AVVIARE UN'ALTRA
		AJAXisWorking = true;
		
		// DEBUG
		// alert( parametri );
			
		// AVVIO LA TRANSAZIONE AJAX
		MyHttp.open("GET", "./ajax/invia_ordine.php" + parametri, true);
			
		// AL CAMBIAMENTO DI STATO DELL'OGGETTO http AVVIA LA GESTIONE DELLO STESSO
		MyHttp.onreadystatechange = handle_invia_ordine;
			
		// TERMINA LA TRANSAZIONE AJAX
		MyHttp.send(null);
		
		}
	
	}

function handle_invia_ordine()
	{

	// SE L'OGGETTO MyHttp E' IN UNA SITUAZIONE CHE NE CONSENTE L'ELABORAZIONE
	if ( (MyHttp.readyState == 4) && (MyHttp.status == 200) )
		{
		
		// DETERMINO SE IL CLIENT E' I.E.
		var where = (navigator.appName == "Microsoft Internet Explorer") ? -1 : null;

		// USO XML DOM PER RICAVARE I DATI DI MIO INTERESSE DALLA RISPOSTA RICEVUTA DAL SERVER
		// CHE E' IN FORMATO XML ED E' CONTENUTA ANCHE IN MyHttp.responseText
		var xmlDocument = MyHttp.responseXML; 
		
		// DEBUG
		// alert("handle_invia_ordine\n" + MyHttp.responseText + "\n**********");

		var AjaxState = "";
		var AjaxMessage = "";
		
		// CODICE NUMERICO PER L'ESITO DELL'ELABORAZIONE
		if ( !xmlDocument.getElementsByTagName('stato').item(0) )
			{
			AjaxState = "1";
			}
		else
			{
			AjaxState = xmlDocument.getElementsByTagName('stato').item(0).firstChild.data;
			}

		// ESITO DELL'ELABORAZIONE
		if ( !xmlDocument.getElementsByTagName('esito').item(0) )
			{
			AjaxMessage = "";
			}
		else
			{
			AjaxMessage = xmlDocument.getElementsByTagName('esito').item(0).firstChild.data;
			}

		if ( AjaxState == "1" )
			{
			alert("Errore imprevisto nella transazione Ajax!");
			}
		else
			{
			
			// SE LA RISPOSTA AJAX E' OK
			if (AjaxState == "0")
				{
				
				// COSTRUISCO UNA TABELLA CHE SARA' IL NUOVO CONTENUTO DELLA PAGINA
				if ( document.getElementById("div_carrello") )
					{
					
					// SVUOTO IL DIV CHE CONTIENTE IL CARRELLO
					document.getElementById("div_carrello").innerHTML = "";
					
					// INIZIALIZZO ILNUOVO CONTENUTO
					var html_code = "";
					
					// LEGGO I DATI DELL'INTESTAZIONE ORDINE
					var codice_ordine	= xmlDocument.getElementsByTagName('codice_ordine').item(0).firstChild.data;
					var data_ordine		= xmlDocument.getElementsByTagName('data_ordine').item(0).firstChild.data;
					var ora_ordine		= xmlDocument.getElementsByTagName('ora_ordine').item(0).firstChild.data;
					var ragione_sociale	= xmlDocument.getElementsByTagName('ragione_sociale').item(0).firstChild.data;
					var partita_iva		= xmlDocument.getElementsByTagName('partita_iva').item(0).firstChild.data;
					var nome			= xmlDocument.getElementsByTagName('nome').item(0).firstChild.data;
					var cognome			= xmlDocument.getElementsByTagName('cognome').item(0).firstChild.data;
					var indirizzo		= xmlDocument.getElementsByTagName('indirizzo').item(0).firstChild.data;
					var cap				= xmlDocument.getElementsByTagName('cap').item(0).firstChild.data;
					var telefono		= xmlDocument.getElementsByTagName('telefono').item(0).firstChild.data;
					var email			= xmlDocument.getElementsByTagName('email').item(0).firstChild.data;

					// APRO LA TABELLA DI INTESTAZIONE ORDINE
					html_code += "<table border='1' cellspacing='0' cellpagging='3'>";
					html_code += "<tbody>";
					
					html_code += "<tr>";
					html_code += "<td>";
					html_code += "Ordine";
					html_code += "</td>";
					html_code += "<td>";
					html_code += "Nr. <b>" + codice_ordine + "</b> del <b>" + data_ordine + "</b> ore <b>" + ora_ordine + "</b>";
					html_code += "</td>";
					html_code += "</tr>";
					
					html_code += "<tr>";
					html_code += "<td>";
					html_code += "Ragione Sociale";
					html_code += "</td>";
					html_code += "<td>";
					html_code += "<b>" + ragione_sociale + "</b>";
					html_code += "</td>";
					html_code += "</tr>";

					html_code += "<tr>";
					html_code += "<td>";
					html_code += "Partita Iva";
					html_code += "</td>";
					html_code += "<td>";
					html_code += "<b>" + partita_iva + "</b>";
					html_code += "</td>";
					html_code += "</tr>";
				
					html_code += "<tr>";
					html_code += "<td>";
					html_code += "Nome";
					html_code += "</td>";
					html_code += "<td>";
					html_code += "<b>" + nome + "</b>";
					html_code += "</td>";
					html_code += "</tr>";
					
					html_code += "<tr>";
					html_code += "<td>";
					html_code += "Cognome";
					html_code += "</td>";
					html_code += "<td>";
					html_code += "<b>" + cognome + "</b>";
					html_code += "</td>";
					html_code += "</tr>";

					html_code += "<tr>";
					html_code += "<td>";
					html_code += "Indirizzo";
					html_code += "</td>";
					html_code += "<td>";
					html_code += "<b>" + indirizzo + "</b>";
					html_code += "</td>";
					html_code += "</tr>";

					html_code += "<tr>";
					html_code += "<td>";
					html_code += "Cap";
					html_code += "</td>";
					html_code += "<td>";
					html_code += "<b>" + cap + "</b>";
					html_code += "</td>";
					html_code += "</tr>";

					html_code += "<tr>";
					html_code += "<td>";
					html_code += "Telefono";
					html_code += "</td>";
					html_code += "<td>";
					html_code += "<b>" + telefono + "</b>";
					html_code += "</td>";
					html_code += "</tr>";

					html_code += "<tr>";
					html_code += "<td>";
					html_code += "Email";
					html_code += "</td>";
					html_code += "<td>";
					html_code += "<b><a href='mailto:" + email + "'>" + email + "</a></b>";
					html_code += "</td>";
					html_code += "</tr>";
					
					// CHIUDO LA TABELLA DI INTESTAZIONE ORDINE
					html_code += "</tbody>";
					html_code += "</table>";
					
					html_code += "<br>";
					html_code += "<br>";
					
					// APRO LA TABELLA DI DETTAGLIO ORDINE
					html_code += "<table border='1' cellspacing='0' cellpagging='3'>";
					html_code += "<tbody>";

					// INTESTO LA TABELLA
					html_code += "<tr>";
					html_code += "<td>";
					html_code += "Articolo";
					html_code += "</td>";
					html_code += "<td align='right'>";
					html_code += "Q.t&agrave;";
					html_code += "</td>";
					html_code += "<td align='right'>";
					html_code += "Prz. unitario";
					html_code += "</td>";
					html_code += "<td align='right'>";
					html_code += "Importo";
					html_code += "</td>";
					html_code += "</tr>";

					// RICAVO IL NUMERO DI REFERENZE IN ORDINE
					var referenze = parseInt(xmlDocument.getElementsByTagName('referenze').item(0).firstChild.data);
					
					// FACCIO UN CICLO SULLE REFERENZE IN ORDINE
					for ( var r = 0; r < referenze; r++ )
						{
						html_code += "<tr>";
						html_code += "<td>";
						html_code += xmlDocument.getElementsByTagName('a').item(r).firstChild.data;
						html_code += "</td>";
						html_code += "<td align='right'>";
						html_code += xmlDocument.getElementsByTagName('q').item(r).firstChild.data;
						html_code += "</td>";
						html_code += "<td align='right'>";
						html_code += xmlDocument.getElementsByTagName('p').item(r).firstChild.data;
						html_code += "</td>";
						html_code += "<td align='right'>";
						html_code += xmlDocument.getElementsByTagName('i').item(r).firstChild.data;
						html_code += "</td>";
						html_code += "</tr>";
						}

					// IMPORTO MERCE
					html_code += "<tr>";
					html_code += "<td colspan='3'>";
					html_code += "Importo merce";
					html_code += "</td>";
					html_code += "<td align='right'>";
					html_code += xmlDocument.getElementsByTagName('importo_merce').item(0).firstChild.data;
					html_code += "</td>";
					html_code += "</tr>";

					// SE SONO GESTITE LE MODALITA' DI CONSEGNA
					if ( xmlDocument.getElementsByTagName('descrizione_consegna').item(0) )
						{
						// IMPORTO SPESE DI CONSEGNA
						html_code += "<tr>";
						html_code += "<td colspan='3'>";
						html_code += "Spese per consegna con <b>" + xmlDocument.getElementsByTagName('descrizione_consegna').item(0).firstChild.data + "</b>";
						html_code += "</td>";
						html_code += "<td align='right'>";
						html_code += xmlDocument.getElementsByTagName('importo_consegna').item(0).firstChild.data;
						html_code += "</td>";
						html_code += "</tr>";
						}
						
					// SE SONO GESTITE LE MODALITA' DI PAGAMENTO
					if ( xmlDocument.getElementsByTagName('descrizione_pagamento').item(0) )
						{
						// IMPORTO SPESE DI PAGAMENTO
						html_code += "<tr>";
						html_code += "<td colspan='3'>";
						html_code += "Spese per pagamento con <b>" + xmlDocument.getElementsByTagName('descrizione_pagamento').item(0).firstChild.data + "</b>";
						html_code += "</td>";
						html_code += "<td align='right'>";
						html_code += xmlDocument.getElementsByTagName('importo_pagamento').item(0).firstChild.data;
						html_code += "</td>";
						html_code += "</tr>";
						}

					// IMPORTO TOTALE
					html_code += "<tr>";
					html_code += "<td colspan='3'>";
					html_code += "Importo a pagare";
					html_code += "</td>";
					html_code += "<td align='right'>";
					html_code += "<font color='#FF0000'>";
					html_code += "<b>";
					html_code += xmlDocument.getElementsByTagName('importo_totale').item(0).firstChild.data;
					html_code += "</b>";
					html_code += "</font>";
					html_code += "</td>";
					html_code += "</tr>";
					
					// CHIUDO LA TABELLA DI DETTAGLIO ORDINE
					html_code += "</tbody>";
					html_code += "</table>";

					html_code += "<br>";
					html_code += "L'ordine &egrave; stato inviato correttamente.";
					html_code += "<br>";
					html_code += "Per evitare il suo reinvio accidentale il carrello &egrave; stato svuotato.";
					html_code += "<br>";
					html_code += "Ti consigliamo di <a href='javascript:window.print()'>stampare</a> questo riepilogo in quanto per prevenire possibile spam non ti &egrave; stata inviata alcuna email di conferma.";
					
					html_code += "<br>";
					html_code += "<br>";
					html_code += "Qui eventuali note tipo: sarai ricontattato... etc etc";
					
					html_code += "<br>";
					html_code += "<br>";
					html_code += "Torna alla <a href='index.php'>selezione dei prodotti</a>";

					// POPOLO IL DIV
					document.getElementById("div_carrello").innerHTML = html_code;
								
					// PROPONGO IN AUTOMATICO DI STAMPARE
					alert("Ordine inviato correttamente.\n\nTi consigliamo di stampare questo riepilogo in quanto\nper evitare possibile spam\nnon vengono inviate copie degli ordini via email");
					window.print();
					
					}
				else
					{
					alert("Operazione riuscita.\n\nIl div_carrello per la visualizzazione\ndell'ordine non trovato nel documento");
					}
					
				}
			else
				{
				alert("Operazione fallita.\n" + AjaxMessage);
				}
		
			}
		
		// AJAX HA FINITO DI LAVORARE
		AJAXisWorking = false;
					
		}

	// RITORNO ALLO SCRIPT JAVASCRIPT CHIAMANTE
	return;
		
	}
	
// DICHIARO L'OGGETTO NECESSARIO PER LE TRANSAZIONI AJAX
var MyHttp = getHTTPObject();

// DICHIARO UN FLAG DI CONTROLLO CHE IMPOSTERO' A true O A false IN FUNZIONE DEL FATTO
// CHE UNA TRANSAZIONE AJAX E' IN CORSO OPPURE NO. INIZIALMENTE VALE OVVIAMENTE false
var AJAXisWorking = false;


