//		Script per la gestione di una photogallery composta da:
//		immagine principale, anteprime o pulsanti di scorrimento.


//	immagini da caricare
var images = [];
//	valori iniziali dei contatori di step
var fadeInStepCounter = 0;
var fadeOutStepCounter = 0;
//	valori iniziali degli intervalli
var fadeInInterval = null;
var fadeOutInterval = null;
var fadeInImage = null;
var fadeOutImage = null;
//	index dell'immagine da caricare
var images_index_to_loading = null;
//	id dell'ultima thumb attiva
var last_active_thumb_id = null;


// Funzione per l'aggiunta di un'immagine nella lista delle immagini
function add_image(url,thumb_id){
	images[images.length] = [url,thumb_id];
}

// Funzione che permette il preloading delle immagini
function preloadImages() {
    var img_loader = new Array;
    for (var picNum=0; picNum<images.length; picNum++) {
        img_loader[picNum] = new Image();
        img_loader[picNum].src = (images[picNum][0]);
        if(picNum==0){
        	//	Ho appena caricato la prima immagine: la mostro
			show_image(0, first_thumb_id);
        }else{
	        //	effetto sbiadito sulle thumb laterali
	        setOpacity(images[picNum][1], 65);
		}
    }
}

function show_image(index_image, thumb_id){

	if(index_image==images_index_to_loading){
		return null;
	}

	// visualizzo gif di caricamento
	document.getElementById(loader_id).style.display = 'block';

	if(browse_type == "thumb"){
		// tolgo la cornice a tutte le immagini
		if (images.length>1 && document.getElementById(last_active_thumb_id)) {
			document.getElementById(last_active_thumb_id).className = normal_thumb_class;
			setOpacity(last_active_thumb_id, 65);
		}
		// memorizzo l'id dell'immagine attiva
		last_active_thumb_id = thumb_id;
		// aggiungo la cornice all'immagine attiva
		if (document.getElementById(last_active_thumb_id)) {
			document.getElementById(last_active_thumb_id).className = active_thumb_class;
			setOpacity(last_active_thumb_id, 90);
		}
	}else{
		// Controllo sui pulsanti che cambiano l'immagine
		if (images.length == 1) {
			document.getElementById(prevButton_id).style.display = 'none';
			document.getElementById(nextButton_id).style.display = 'none';
		}else if(index_image == 0){
			document.getElementById(prevButton_id).style.display = 'none';
		}
	}

	//	Interrompo eventule fade in attivo

	if(fadeInImage!=null){
		interrompi_fade_in();
	}

	//	Interrompo eventule fade out attivo
	if(fadeOutImage!=null){
		interrompi_fade_out();
	}



	//	Caricamento nuova immagine
	var imgPreloader = new Image;

	imgPreloader.onload=function(){
		//	La nuova immagine è stata caricata in memoria


		// nascondo gif di caricamento
		document.getElementById(loader_id).style.display = 'none';


		if(fadeInImage==null && fadeOutImage==null){
			//	Caricamento prima immagine
			fadeInImage = first_main_image;
			fadeOutImage = null;
		}else if(fadeInImage==first_main_image){
			//	Devo far scomparire la prima immagine e comparire la seconda
			fadeInImage = second_main_image;
			fadeOutImage = first_main_image;
		}else{
			//	Devo far scomparire la seconda immagine e comparire la prima
			fadeInImage = first_main_image;
			fadeOutImage = second_main_image;
		}

		images_index_to_loading = index_image;
		if (browse_type == "button") {
			// Settaggio didascalia
			layerCounter_show();
		}


		//	Faccio partire la transizione
		fadeInInterval = setInterval("fade_in_image()", 70);
		//	Se sono alla prima immagine non faccio il fade out
		if(fadeOutImage!=null){
			fadeOutInterval = setInterval("fade_out_image()", 70);
		}

	}

	//	Avvio il caricamento
	imgPreloader.src = images[index_image][0];
}





function setOpacity(image_id, value){
	document.getElementById(image_id).style.filter = 'alpha(opacity='+value+')';
	document.getElementById(image_id).style.moz_opacity = '.'+value;
	document.getElementById(image_id).style.opacity = '.'+value;
}





function fade_out_image(){
	//	Incremento il contatore degli step del fade out
	fadeOutStepCounter++;

	var opacity = 100-(fadeOutStepCounter*10);
	if(opacity==0){
		//document.getElementById('image_'+fadeOutImage).style.visibility = 'hidden';
		setOpacity(fadeOutImage, 1);
	}else{
		setOpacity(fadeOutImage, opacity);
	}

	if(fadeOutStepCounter==10){
		//	Ho finito il fade out
		interrompi_fade_out();
	}
}





function fade_in_image(){
	//	Incremento il contatore degli step del fade in
	fadeInStepCounter++;

	if(fadeInStepCounter==1){
		//	Inserisco l'immagine da caricare
		setOpacity(fadeInImage, 1);
		document.getElementById(fadeInImage).src = images[images_index_to_loading][0];
		document.getElementById(fadeInImage).style.visibility = 'visible';
	}

	var opacity = fadeInStepCounter*10;
	if(opacity==100){
		opacity = 99;
	}
	setOpacity(fadeInImage, opacity);

	if(fadeInStepCounter==10){
		//	Ho finito il fade in
		interrompi_fade_in();
	}
}


function interrompi_fade_in(){
	clearInterval(fadeInInterval);
	fadeInStepCounter = 0;
	setOpacity(fadeInImage, 99);
	document.getElementById(fadeInImage).style.visibility = 'visible';
}

function interrompi_fade_out(){
	//	Intorrompo il fade out
	clearInterval(fadeOutInterval);
	//	Azzero il contatore
	fadeOutStepCounter = 0;
	//	Nascondo l'immagine
	setOpacity(fadeOutImage, 1);
	document.getElementById(fadeOutImage).style.visibility = 'hidden';
}

// effetto al passaggio del mouse sulle anteprime laterali
function onmouseover_thumb(image_id){
	setOpacity(image_id, 99);
}

// effetto stato standard sulle anteprime laterali
function onmouseout_thumb(image_id){
	if(image_id != last_active_thumb_id){
		setOpacity(image_id, 65);
	}
}

// effetto al click del mouse sulle anteprime laterali
function onclick_thumb(image_id){
	if (image_id != last_active_thumb_id) {
		setOpacity(image_id, 90);
		setOpacity(last_active_thumb_id, 65);
	}
}

function layerCounter_show(){
	document.getElementById(layerCounter_id).innerHTML = (images_index_to_loading + 1)+" / "+images.length;
}

// Funzione che permette di visualizzare l'immagine precedente a quella attiva
function prevImage(){
	if (images[images_index_to_loading - 1]) {
		show_image(images_index_to_loading - 1);
		document.getElementById(nextButton_id).style.display = 'inline';
	}
	if (images_index_to_loading - 2==-1) {
		document.getElementById(prevButton_id).style.display = 'none';
	}
}

// Funzione che permette di visualizzare l'immagine successiva a quella attiva
function nextImage(){
	if (images[images_index_to_loading + 1]) {
		show_image(images_index_to_loading + 1);
		document.getElementById(prevButton_id).style.display = 'inline';
	}
	if (images_index_to_loading + 2== images.length) {
		document.getElementById(nextButton_id).style.display = 'none';
	}
}

