// # # # # # # ANIMAZIONE LOGO elastiko IN HOMEPAGE # # # # # #
// ARRAY IMMAGINI "img_anm" e "img_name" INIZIALIZZATI nel file "logo_img.js"

//VARIABILI GLOBALI
var intvl = 600;				//intervallo millisecondi di animazione
var intvl_clr;					//intervallo millisecondi di ripristino logo
var intvl_clr_min =  6000;			//minimo
var intvl_clr_max = 12000;			//massimo

var ids = new Array(5);			//array ultime 5 immagini sostituiti
var srcs = new Array(8);		//array immagini in posizione
	for (i=0;i<8;i++) {
		srcs[i] = i;
	}

var hdl_anm = false;			//ID handle intervallo animazione
var hdl_clear = false;			//ID handle timeout di ripristino logo
var hdl_rpr = false;			//ID handle timeout avanzamento ripristino logo
var hdl_ctrl = false;			//ID handle timeout controllo precaricamento immagini

var prld_flg = false;
var ctrl_flg = false;

//FUNZIONE INIZIO ANIMAZIONE
function start_anm() {
	clear_hdl();
	if (!prld_flg) {				//precaricamento immagini
		preload_anm();
	} else if (!ctrl_flg) {			//controllo fine precaricamento
		ctrl_flg = ctrl_prld();
		hdl_ctrl = window.setTimeout("start_anm();",1000);
	} else {						//inizio animazione
		hdl_anm = window.setInterval("logo_anm();",intvl);
		
		intvl_clr = Math.floor(Math.random() * (intvl_clr_max - intvl_clr_min)) + intvl_clr_min;
		hdl_clear = window.setTimeout("rpr_logo(1);",intvl_clr);
	}
}

//FUNZIONE STOP ANIMAZIONE
function stop_anm() {
	clear_hdl();
	rpr_logo(0);
}

//FUNZIONE RESET TUTTI I HANDLE
function clear_hdl() {
	if (hdl_anm) {
		window.clearInterval(hdl_anm);
		hdl_anm = false;
	}
	if (hdl_clear) {
		window.clearTimeout(hdl_clear);
		hdl_clear = false;
	}
	if (hdl_rpr) {
		window.clearTimeout(hdl_rpr);
		hdl_rpr = false;
	}
	if (hdl_ctrl) {
		window.clearTimeout(hdl_ctrl);
		hdl_ctrl = false;
	}
}

//FUNZIONE PRECARICAMENTO IMMAGINI LOGO
function preload_anm() {
	for (i=0;i<img_anm.length;i++) {
		var src;
		if (i<8) src = dir_img + "/elastiko/" + img_name[i] + ".png";
		else src = ".." + img_anm[i];
		img_anm[i] = new_img(src,48,52);
	}
	prld_flg = true;
	start_anm();
}

//FUNZIONE CONTROLLO PRECARICAMENTO IMMAGINI LOGO
function ctrl_prld() {
	for (i=0;i<img_anm.length;i++) {
		if (!img_anm[i].complete) return false;
	}
	return true;
}

//FUNZIONE SOSTITUZIONE IMMAGINE
var ids_x = 0;						//numero indice array "ids"
function logo_anm() {
	//ID NUOVA IMMAGINE
	var z = num_id(img_anm.length,srcs);
	if (z<img_name.length) {
		if (srcs[z]!=z) x = z;
		else return;
	}
	else {
		var x = num_id(img_name.length,ids);		//posizione immagine da sostituire

		ids[ids_x] = x;
		if (ids_x < (ids.length - 1)) ids_x++;
		else ids_x = 0;
	}


	//SOSTITUZIONE IMMAGINE
	d.images[img_name[x]].src = img_anm[z].src;
	srcs[x] = z;
}

//FUNZIONE RIPRISTINO LOGO
var id_orig = 0;
function rpr_logo(rpr_anm) {
	//ARGOMENTO rpr_anm = procedere o meno con animazione (0 oppure 1)

	clear_hdl();
	if (id_orig<8) {
		if (srcs[id_orig]!=id_orig) {
			var let_logo = img_name[id_orig];
			d.images[let_logo].src = img_anm[id_orig].src;
			srcs[id_orig] = id_orig;
		}
		
		id_orig++;
		if (rpr_anm && id_orig==8) msc = 2400;	//timeout millisecondi ripresa animazione
		else msc = 240;							//timeout millisecondi avanzamento ripristino logo

		hdl_rpr = window.setTimeout("rpr_logo(" + rpr_anm + ");",msc);
	} else {
		id_orig = 0;
		ids = new Array(5);
		clear_hdl();	
		if (rpr_anm) start_anm();
	}
}

//FUNZIONE GENARAZIONE NUMERO RANDOM
function num_id(max,array) {
	var x;
	do {
		x = Math.floor((Math.random() * max)/1000*999);
	} while (array_search(x,array));

	return x;
}

//FUNZIONE RICERCA ARRAY
function array_search(ago,array) {
	for (i=0;i<array.length;i++) {
		if (array[i]==ago) return true;
	}
	return false;
}

//CONTROLLO ANIMAZIONE
window.onblur = clear_hdl;
window.onunload = clear_hdl;
