	/*
	Classe Gallery()
	
	metodi pubblici: init(
		wrapperImmagini (String): selettore css per raggiungere il contenitore delle foto con jquery
		labelContatore (String) : selettore css per raggiungere l'indicatore dell'immagine corrente
		labelTotale (String)    : selettore css per raggiungere l'indicatore del totale immagini
		linkAvanti (String)     : selettore css per raggiungere il link avanti
		linkIndietro (String)   : selettore css per raggiungere il link indietro
	)
	*/
	function Gallery() {
		var istance; //da usare come alias di "this" quando richiamo i callback con jquery
	
		var wrapperImmagini;
		var labelContatore;
		var labelTotale;
		var linkAvanti;
		var linkIndietro;
		
		var contatore;
		var totale;
		var immagini;
	
		this.init = function init(wrapperImmagini, labelContatore, labelTotale, LinkAvanti, LinkIndietro) {
			//inizializzo tutti gli oggetti jquery di cui ho bisogno...
			this.wrapperImmagini = $(wrapperImmagini);
			this.labelContatore  = $(labelContatore);
			this.labelTotale     = $(labelTotale);
			this.linkAvanti      = $(LinkAvanti);
			this.linkIndietro    = $(LinkIndietro);
			
			//popolo i primi attributi...
			this.immagini  = $('a', this.wrapperImmagini);
			
			if (this.immagini.length > 0) {
				this.contatore = 1;
				this.totale    = this.immagini.length;

				//nascondo tutte le immagini tranne la prima...
				this.immagini.not(':first').hide();
				
				//aggiorno le labels...
				this.updateLabels();
				this.updateLinks();
				
				istance = this;
				
				//ora aggiungo gli eventi di click...
				this.linkAvanti.click(function() {
					istance.next();
				});
				
				this.linkIndietro.click(function() {
					istance.prev();
				});			
			} else {
				//ora potrei nascondere la gallery, tanto è vuota... ma lo lascio sennò il mago si arrabbia
				//this.wrapperImmagini.parent().hide();
			}
		}
		
		//aggiorna gli indicatori
		this.updateLabels = function updateLabels() {
			this.labelContatore.html(this.contatore);		
			this.labelTotale.html(this.totale);			
		}
		
		//disabilita i link se ho raggiunto gli estremi
		this.updateLinks = function updateLinks() {
			if (this.contatore == this.totale) {
				//devo disabilitare il link avanti...
				this.linkAvanti.addClass('disabled');
			} else {
				this.linkAvanti.removeClass('disabled');
			}
			if (this.contatore == 1) {
				//devo disabilitare il link indietro...
				this.linkIndietro.addClass('disabled');
			} else {
				this.linkIndietro.removeClass('disabled');
			}
		}
		
		//metodo per avanzare di una foto
		this.next = function next() {
			currentImg = this.immagini.filter(':visible');
			if (this.contatore < this.totale) {
				nextImg = currentImg.next();
				this.transition(currentImg, nextImg);
				this.contatore++;
				this.updateLabels();
				this.updateLinks();
			}
		}
		
		//metodo per arretrare di una foto
		this.prev = function prev() {
			currentImg = this.immagini.filter(':visible');
			if (this.contatore > 1) {
				nextImg = currentImg.prev();
				this.transition(currentImg, nextImg);
				this.contatore--;
				this.updateLabels();
				this.updateLinks();
			}
		}
		
		//funzione che si occupa della transizione
		this.transition = function transition(currentImg, nextImg) {
			nextImg.fadeIn('fast');
			currentImg.fadeOut('fast');
		}
	}
