
// INIZIO FUNZIONI AJAX

	// funzione per prendere un elemento con id univoco
		function prendiElementoDaId(id_elemento) {
			var elemento;
			if(document.getElementById)
				elemento = document.getElementById(id_elemento);
			else
				elemento = document.all[id_elemento];
			return elemento;
		};
	
	// funzione per assegnare un oggetto XMLHttpRequest
		function assegnaXMLHttpRequest() {
			var
				XHR = null,
				browserUtente = navigator.userAgent.toUpperCase();
			if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object")
				XHR = new XMLHttpRequest();
			else if(window.ActiveXObject && browserUtente.indexOf("MSIE 4") < 0) {
				if(browserUtente.indexOf("MSIE 5") < 0)
					XHR = new ActiveXObject("Msxml2.XMLHTTP");
				else
					XHR = new ActiveXObject("Microsoft.XMLHTTP");
			}
			return XHR;
		};

/** OGGETTI / ARRAY */

	// oggetto di verifica stato
		var readyState = {
			INATTIVO:	0,
			INIZIALIZZATO:	1,
			RICHIESTA:	2,
			RISPOSTA:	3,
			COMPLETATO:	4
		};

	// array descrittivo dei codici restituiti dal server
	// [la scelta dell' array è per evitare problemi con vecchi browsers]
		var statusText = new Array();
		statusText[100] = "Continue";
		statusText[101] = "Switching Protocols";
		statusText[200] = "OK";
		statusText[201] = "Created";
		statusText[202] = "Accepted";
		statusText[203] = "Non-Authoritative Information";
		statusText[204] = "No Content";
		statusText[205] = "Reset Content";
		statusText[206] = "Partial Content";
		statusText[300] = "Multiple Choices";
		statusText[301] = "Moved Permanently";
		statusText[302] = "Found";
		statusText[303] = "See Other";
		statusText[304] = "Not Modified";
		statusText[305] = "Use Proxy";
		statusText[306] = "(unused, but reserved)";
		statusText[307] = "Temporary Redirect";
		statusText[400] = "Bad Request";
		statusText[401] = "Unauthorized";
		statusText[402] = "Payment Required";
		statusText[403] = "Forbidden";
		statusText[404] = "Not Found";
		statusText[405] = "Method Not Allowed";
		statusText[406] = "Not Acceptable";
		statusText[407] = "Proxy Authentication Required";
		statusText[408] = "Request Timeout";
		statusText[409] = "Conflict";
		statusText[410] = "Gone";
		statusText[411] = "Length Required";
		statusText[412] = "Precondition Failed";
		statusText[413] = "Request Entity Too Large";
		statusText[414] = "Request-URI Too Long";
		statusText[415] = "Unsupported Media Type";
		statusText[416] = "Requested Range Not Satisfiable";
		statusText[417] = "Expectation Failed";
		statusText[500] = "Internal Server Error";
		statusText[501] = "Not Implemented";
		statusText[502] = "Bad Gateway";
		statusText[503] = "Service Unavailable";
		statusText[504] = "Gateway Timeout";
		statusText[505] = "HTTP Version Not Supported";
		statusText[509] = "Bandwidth Limit Exceeded";
		
function caricaTesto(link) {
	 
  var  
    ajax = assegnaXMLHttpRequest(),
    elemento = prendiElementoDaId("id_corpo_shop"),
    usaLink = true,

    // variabili di controllo del tempo
  
    // data di inizio interazione
    dataChiamata = new Date(),
    // tempo in millisecondi dell'inizio
    inizioChiamata = dataChiamata.getTime(),
    // secondi di attesa prima di fermare l'interazione 
    massimaAttesa = 10,
    // variabile cui assegnare la funzione di verifica
    verificaTempoTrascorso;

  if(ajax) {
    usaLink = false;

    // parametro fittizio all'elemento link 
    // per evitare un doppio click
    if(!link.clicked) {
	elemento.innerHTML = "<font style='color:#F4637B;font-size:9pt; font-weight:bold;'>Caricamento in corso...</font>"
      // se il parametro è risultato undefined o false
      // entriamo e gli assegnamo true 
      link.clicked = true;

      // NOTA. Qualora l'elemento dovesse essere parte di un form si potrebbe
      // sfruttare il parametro "disabled", assegnandolo solo quando necessario.

      // effettuiamo la chiamata sul parametro href     
      ajax.open("GET", link.href, true);      
      ajax.setRequestHeader("connection", "close");

      ajax.onreadystatechange = function() {

        // se la richiesta è già stata completata
        if(ajax.readyState === readyState.COMPLETATO) {
          // annulliamo la funzione di verifica tempo
          verificaTempoTrascorso = function(){};

          // e continuiamo con i normali controlli
          if(statusText[ajax.status] === "OK") 
          {
          	elemento.innerHTML = unescape(ajax.responseText);
          	
          }
          else
          {
            elemento.innerHTML =
              "<BR><BR>Impossibile effettuare l'operazione richiesta.<br />" +
              "Errore riscontrato: " + statusText[ajax.status] + "<br />";
            
	  }
          // se il link non dovesse esser sovrascritto, come invece accade in questo esempio,
          // è importante ricordarsi di riabilitarlo reimpostando il parametro fittizio
         link.clicked = false;
        }

        // se la richiesta non è stata ancora ultimata
        // è possibile sfruttare la variabile massimaAttesa
        // per verificare se il controllo sul tempo trascorso
        // sia stato creato o meno.
        // Essendo tale valore un intero rappresentante i secondi
        // ma non essendo ancora stato riassegnato nel corrispettivo
        // in millesimi, questo else if può garantire che
        // il codice al suo interno verrà eseguito una sola volta
        else if(massimaAttesa < 1000) {

          // conversione di massimaAttesain millisecondi
          massimaAttesa = massimaAttesa * 1000;

          // il controllo sul tempo trascorso deve essere
          // asincrono a questa funzione poichè non è detto
          // che il cambio di stato della richiesta
          // venga effettuato in tempi utili.
          // Una funzione apposita per la verifica
          // è la soluzione più indicata
          verificaTempoTrascorso = function() {

            // ogni chiamata asincrona a questa funzione
            // dovrà verificare la durata dell'interazione
            // è necessario quindi ridichiarare la variabile
            // al fine di ottenere il nuovo oggetto Date
            dataChiamata = new Date();

            // Se il tempo trascorso è maggiore della
            // massima attesa ...
            if((dataChiamata.getTime() - inizioChiamata) > massimaAttesa) {

              // ... interrompiamo la richiesta ed 
              // informarmiamo l'utente di quanto avvenuto.

              // Quindi riassegnamo onreadystatechange ad una
              // funzione vuota, poichè quest'evento sarà
              // sollevato chiamando il metodo abort()
              ajax.onreadystatechange = function(){return;};

              // è possibile a questo punto richiamare il metodo abort
              // ed annullare le operazioni dell'oggetto XMLHttpRequest
              ajax.abort();

              // creiamo un elemento per avvertire l'utente
              // del fallimento della richiesta da aggiungere 
              // a quello predisposto per mostrare il risultato.
              // Usiamo il metodo createElement() del document e
              // non innerHTML,che potrebbe riscrivere il link selezionato
              // annullando l'assegnazione del parametro fittizio.
              // Avendo annullato l'utilità dell'oggetto XMLHttpRequest
              // è possibile anche riciclare la variabile 'ajax'.
              ajax = document.createElement("p");
              ajax.innerHTML =
                 "<center>Spiacente, richiesta fallita.<br />" +
                 "La prego di ritentare tra qualche istante.</center>";

              elemento.appendChild(ajax);
       
       
              // è possibile ripristinare il parametro fittizio del link
              // su 'false' sia subito che con qualche istante di latenza,
              // Infatti l'attuale situazione può essere generata dalla
              // risposta lenta di un server sovraccarico e qualche attimo
              // di tranquillità in più non guasta.
              // Tuttavia per semplificare il codice ripristiniamo il link qui.
              link.clicked = false;
            }

            // se invece il tempo è inferiore al timeout
            else
              // si richiama questa stessa funzione, con un tempo
              // che non dovrà essere ne alto ne troppo basso.
              setTimeout(verificaTempoTrascorso, 100);
          };

          // definita la funzione non resta che avviarla
          verificaTempoTrascorso();
        };
      };
      ajax.send(null);
    };
  };
  return usaLink;
}; 
// **** FINE FUNZIONI AJAX

// **** Inizio Elenco Prodotti
function Logout ( )
{
	if (confirm("Si desidera effettuare il Log out?"))
	{
		window.location.href = "./ExecShop.asp?azione=LOGOUT"
	}
}

function AnnullaPrenota (obj, id_prodotto)
{
	if (confirm("Si desidera annullare la prenotazione?"))
	{
 		obj.href = "./ExecShop.asp?azione=DEL_PRENOTA&id_prodotto=" + id_prodotto 

		caricaTesto (obj) 	
	}
 
}

function AddCarrelloAll (obj)
{
	 
	arrProdotti = id_prodotti.value.split(";")
	sQta = ";"
	for (i=1; i<arrProdotti.length-1; i++) 
	{ 
	 
		var Qta = prendiElementoDaId("txtQta_" + arrProdotti[i])
		if (!IsNumeric(Qta.value))
		{
			alert("Inserire un valore numerico intero per la Qta.")
			Qta.focus()
			return  
		}	
		sQta = sQta + Qta.value + ";"
	}
	 
 	obj.href = "./ExecShop.asp?azione=ADD_ALL_PROD_CARRELLO&id_prodotti=" +id_prodotti.value+ "&quantita=" + sQta
	 
 	caricaTesto (obj) 
 	 
}

	
function AddCarrello(obj,id_prodotto)
{  
 
	var url_carrello
	var Qta = prendiElementoDaId("txtQta_" + id_prodotto)
	 
 
	if (Qta.value=="") 
	{
		alert("Inserire la Qta.")
		Qta.focus()
		return  
	}
	
	if (!IsNumeric(Qta.value))
	{
		alert("Inserire un valore numerico intero per la Qta.")
		Qta.focus()
		return  
	}	
 	obj.href = "./ExecShop.asp?azione=ADD_PROD_CARRELLO&qta=" + Qta.value + "&id_prodotto=" + id_prodotto 	
	
 	caricaTesto (obj) 
  	 
 
 	
 
}
// **** FINE Elenco Prodotti
// **** Inizio Menu Prodotti
var prec_id = "";
function ShowTipologie(obj,id_tipo, id_categoria_tipo)
{
	
	obj.href = "./getHtmlShop.asp?pagina=1&tipo_elenco=TIPOLOGIE&id_tipo=" + id_tipo + "&id_categoria_tipo=" + id_categoria_tipo 
	
	caricaTesto (obj) 
	
	if (prec_id != "")
	{
		elemento = prendiElementoDaId(prec_id)	 
		elemento.className = ""	
	}
	
	prec_id = obj.id
	
	SetVoceSel(obj.id);

	
}

function ShowMarche(obj, id_tipo, id_marca, id_categoria_marca)
{
	
	obj.href = "./getHtmlShop.asp?pagina=1&tipo_elenco=MARCHE&id_tipo=" + id_tipo + "&id_marca=" + id_marca + "&id_categoria_marca=" + id_categoria_marca
	
	caricaTesto (obj) 
	
	if (prec_id != "")
	{
		elemento = prendiElementoDaId(prec_id)	 
		elemento.className = ""	
	}
	
	prec_id = obj.id
	
	SetVoceSel(obj.id);

}


function ShowProdotto(id_prodotto, qta, azione)
{

	url = "./Prodotto.asp?id_prodotto=" + id_prodotto + "&qta=" + qta + "&azione=" + azione
	 
	 
	
	var finestra ;
	finestra = window.open(url, '','left=170,top=20,width=640,height=640,toolbar=0,status=0,resizable=0,scrollbars=1');
	finestra.focus();
	
}




function CambiaElenco()
{
	var tipo_elenco_marche = prendiElementoDaId("elenco_marche")
	if (tipo_elenco_marche.checked )
	{ 
		ShowObj("id_prodotti_marche",true)
		ShowObj("id_prodotti_tipologie",false)
	}
	else 
	{ 
		ShowObj("id_prodotti_marche",false)
		ShowObj("id_prodotti_tipologie",true)
	}	
 
 

	
}
function UltimeNovita( )
{   
	window.location.href = "/Flash/ShowNovita.asp"
}

function Scontati(obj)
{   
 
 
		
	obj.href = "./getHtmlShop.asp?tipo_elenco=SCONTATI&pagina=1"
	
	caricaTesto (obj) 
	
	if (prec_id != "")
	{
		elemento = prendiElementoDaId(prec_id)	 
		elemento.className = ""	
	}
	
	prec_id = ""
	 
}

function Cerca(obj)
{   
	/**
	var txtCerca;
	txtCerca = prendiElementoDaId ("id_cerca") 
	alert("TEST 1 " + txtCerca.value)
	**/
	
	if (Trim(txtCerca.value) == "" )
	{
		alert ("Inserire il testo per la ricerca.")
		txtCerca.focus()
	}
	else
	{ 
		
		obj.href = "./getHtmlShop.asp?cerca=" + txtCerca.value + "&tipo_elenco=RICERCA&pagina=1"
		
		caricaTesto (obj) 
		
		if (prec_id != "")
		{
			elemento = prendiElementoDaId(prec_id)	 
			elemento.className = ""	
		}
		
		prec_id = ""
	}
}


function CercaNews(obj)
{ 
	obj.href = "./getHtmlShop.asp?tipo_elenco=NEWS&pagina=1"
	
	caricaTesto (obj) 
	
	if (prec_id != "")
	{
		elemento = prendiElementoDaId(prec_id)	 
		elemento.className = ""	
	}
	
	prec_id = ""
}

 

function LoginUtente ()
{ 

	if (Trim(login_utente.value) == "" )
	{
		alert ("Inserire l'username.")
		login_utente.focus()
		return
	}	
 	
	if (Trim(password.value) == "" )
	{
		alert ("Inserire la password.")
		password.focus()
		return
	}		
	parent.frames["centro"].location.href = "./ExecLogin.asp?login_utente=" + login_utente.value + "&password=" + password.value
}



 

function UsaBuonoRegalo()
{
 	password_buono = prendiElementoDaId("id_codice_buono_regalo")	 
 	if ( Trim(password_buono.value) == "") 
 		alert("Codice obbligatorio.")
 	else
 		window.location.href = "./ExecShop.asp?azione=USA_BUONO_REGALO&password="  + password_buono.value
 	 		
}

function AcquistaBuoniRegalo(username)
{
	if (username == "") 
	{
		if (confirm("Per poter effettuare acquisti è necessario essere un utente registrato.\nSi desidera registrarsi ora?"))
		{
			url_dest = "./GestioneUtente.asp?azione=login&provenienza=shop"
			window.location.href = url_dest	
		}
	}	
	else
	{
		url_dest = "./BuoniRegalo.asp"
		window.location.href = url_dest	
	}
}
 

function Acquista(username)
{
	if (username == "") 
	{
		if (confirm("Per poter effettuare acquisti è necessario essere un utente registrato.\nSi desidera registrarsi ora?"))
		{
			url_dest = "./GestioneUtente.asp?azione=login&provenienza=shop"
			window.location.href = url_dest	
		}	
	}
	else
	{
			url_dest = "./ConfermaAcquisto.asp"
			window.location.href = url_dest	
	 
	}
}



//  ** elimina il carattere '.' e rimpiazza la ',' con '.'
function formatScript(numero) 
{ 
	var num = new String(numero)

	return num.replace(/\./g,'').replace(/,/g,".");
}

 
function formatCurrency(numero) 
{

	var num = new String(numero)
	 
	num =  num.replace(".",",");	 
 
	num = num.replace(/\./g,'').replace(",",".");
 
	if(isNaN(num))	num = "0";


	segno = (num == (num = Math.abs(num )));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();

	if(cents<10)	cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
		{num = num.substring(0,num.length-(4*i+3))+'.'+	num.substring(num.length-(4*i+3));}

 
 
	return (((segno)?'':'-')  + num + ',' + cents);
}

/***************************/

function CollapseNotOpen(mID) {
	var uls = document.getElementsByTagName("ul");
	for (i=0;i<uls.length;i++) {	
		
		if(uls[i].className=="submenu")
		{

			if ( mID.indexOf(uls[i].id,0) == -1 && uls[i].id.indexOf(mID,0) == -1 ) 
			{
				uls[i].style.display = "none";
				var menu = prendiElementoDaId(uls[i].id);
				menu.parentNode.style.listStyleImage = "url(./immagini/collapse.gif)"
	
			 	
			}
		}
	}
}

function mmenu(mID) {
	CollapseNotOpen(mID)
	var menu = prendiElementoDaId(mID);
	var display = menu.style.display;
	menu.style.display = (display == "block") ? "none" : "block";
	menu.parentNode.style.listStyleImage = (display == "block") ? "url(./immagini/collapse.gif)" : "url(./immagini/expand.gif)";
 
}

function CollapseAll() {

	
	var uls = document.getElementsByTagName("ul");
	for (i=0;i<uls.length;i++) {
		if(uls[i].className=="submenu") uls[i].style.display = "none";
	}
}



/***************************/