$(document).ready(function(){	

	$(".espandiTesto").click(function () { // Mostra il testo nascosto in una destrizione (es. last minute)
		var idSpan = $(this).attr("href");
		$(this).hide();
		$(idSpan).show();
		return false;
	});
	

	
	/* --- elementi asincroni e iframe sotto gli elementi --- */

	var idDivPrecedente;	// variabile in cui è memorizzato il div appena usato
	var tipoClassePrecedente;	// variabile in cui è memorizzato il tipo di classe aperta (mappa, euro, prenota ecc)
	
	function generaContenuto(idDiv,urlPagina,tipoClasse) { // funzione per generare e far comparire contenuto asincrono sotto un elemento
		$(idDiv).css('height', 'auto'); // resetta l'altezza del div principale (casomai fosse stata modificata da qualche script precedente)
		$(idDiv).html('<div class=\"loadingAjax\"><div>loading...</div></div>');
		// controlla i diversi comportamenti della funzione a seconda del link cliccato:
		if(tipoClasse=="mappa") { // .mappa (carica un iframe)

			$(idDiv).html("<iframe src=\"" + urlPagina + "\" frameborder=\"0\" width=\"100%\" height=\"400\" style=\"height: 400px;\"></iframe>");

		} else if(tipoClasse=="prenota" || tipoClasse=="bt_prenota_info") { // .prenota, .bt_prenota_info (carica il modulo in asincrono della richiesta informazioni + il datepicker

			$(idDiv).load(urlPagina, function() {
				var dates = $("#from, #to").datepicker({
					defaultDate: 0,
					minDate: 0,
					changeMonth: true,
					dateFormat: 'dd/mm/yy',
					numberOfMonths: 1,
					onSelect: function( selectedDate ) {
						var option = this.id == "from" ? "minDate" : "maxDate",
							instance = $( this ).data( "datepicker" ),
							date = $.datepicker.parseDate(
								instance.settings.dateFormat ||
								$.datepicker._defaults.dateFormat,
								selectedDate, instance.settings );
						dates.not( this ).datepicker( "option", option, date );
					}
				});
			});

		} else if(tipoClasse=="foto") { // .foto (carica le foto tramite json

			urlFoto = new Array();
			$.getJSON(urlPagina, function(data) {
				var totale = data.length;
				for(i=0;i<data.length;i++){
					urlFoto[i] = data[i].foto;
				}
			}).complete(function() {
				var imgCurrent = 0;
				var imgTotale = urlFoto.length;
				var misuraBarraPaginazione = 80 + 80 + (25* imgTotale); // calcola la misura esatta della barra di paginazione, in modo da centrarla
				
					function visualizzaFoto(imgCurrent) { // funzione per visualizzare una foto e i comandi avanti/indietro
						var htmlGenerato = "<div class=\"fotoAsincrono\"><img src=\"" + urlFoto[imgCurrent] + "\" alt=\"\" /></div>";
						htmlGenerato = htmlGenerato + "<div class=\"barraAvantiIndietroFoto\" style=\"width: " + misuraBarraPaginazione + "px\">";
						if(imgCurrent!=0) {
							htmlGenerato = htmlGenerato + "<a href=\"#\" class=\"fotoIndietro\">&laquo; indietro</a>";
						} else {
							htmlGenerato = htmlGenerato + "<div class=\"spazioThumbs\">&laquo; indietro</div>";							
						}
						for(i=0;i<urlFoto.length;i++){ // thumb di ogni foto
							if (i==imgCurrent) { 
								var thumbAttivo = " thumbAttivo"; // aggiunge la classe attiva se siamo nel thumb visualizzato
							} else {
								var thumbAttivo = ""; // nessuna classe aggiuntiva
							}
							htmlGenerato = htmlGenerato + "<a href=\"#\" rel=\"" + i + "\" class=\"thumbAsincrono" + thumbAttivo + "\">" + (i+1) + "</a>";
						}						
						if(imgCurrent!=imgTotale-1) {
							htmlGenerato = htmlGenerato + "<a href=\"#\" class=\"fotoAvanti\">avanti &raquo;</a>";
						} else {
							htmlGenerato = htmlGenerato + "<div class=\"spazioThumbs\">avanti &raquo;</div>";							
						}
						// htmlGenerato = htmlGenerato + " | " + (imgCurrent+1) + " / " + imgTotale; // counter
						htmlGenerato = htmlGenerato + "</div>";
						$(idDiv).html(htmlGenerato);
					}
				
				$('.fotoAvanti').live('click', function() { // funzione per scorrere le immagini in avanti
					imgCurrent = imgCurrent +1;
					visualizzaFoto(imgCurrent);
					return false;
				});
				$('.fotoIndietro').live('click', function() { // funzione per scorrere le immagini indietro
					imgCurrent = imgCurrent -1;
					visualizzaFoto(imgCurrent);
					return false;
				});
				$('.thumbAsincrono').live('click', function() { // funzione per prelevare un'immagine direttamente da un thumb
					imgCurrent = parseInt($(this).attr("rel"));
					visualizzaFoto(imgCurrent);
					return false;
				});				
				
				if(imgTotale!=0) {
					$(idDiv).css('height', '478px'); // aggiunge un'altezza fissa (in modo da non dare sempre l'impressione di apri-chiudi quando si cambia foto					
					visualizzaFoto(imgCurrent);
				} else {
					$(idDiv).html('<div class=\"boxContenutoAsincrono\" style=\"text-align: center;\">Nessuna foto trovata.</div>');	
				}
				
			});;
			

		} else { // gli altri link (caricamento asincrono)

			$(idDiv).load(urlPagina);

		} // fine if 

		$(idDiv).show();
	}
	
	$(".localita, .info, .foto, .euro, .mappa, .prenota, .bt_prenota_info").click(function () { // Mostra l'elenco località, descrizioni, euro ecc 
		var idDiv = "#" + $(this).attr("rel");
		var idDivLista = "#lista_" + $(this).attr("rel");
		var urlPagina = $(this).attr("href");
		var tipoClasse = $(this).attr("class");
		$(idDivPrecedente).hide(""); // nasconde un eventuale modulo aperto prima
		$(idDivPrecedente).html(""); // svuota un eventuale modulo aperto prima			
		if(idDiv == idDivPrecedente && tipoClasse == tipoClassePrecedente) { // vuol dire che si è cliccato per due volte lo stesso link e quindi va chiuso quello appena a perto
			idDivPrecedente = ""; // reinizializza
			tipoClassePrecedente =  ""; // reinizializza
		} else { // si è cliccato un altro link o un'altra lista
			generaContenuto(idDiv,urlPagina,tipoClasse);	// chiama la funzione per generare il nuovo contenuto asincrono
			idDivPrecedente = idDiv;
			tipoClassePrecedente =  tipoClasse;			
			window.location.hash= idDivLista; // va all'ancora della lista corrente			
		}
		return false;
	});

});	
