/********************************************************************************
*  Script per la gestione della rotazione delle immagini di testata             *
********************************************************************************/

// Numero di rotazioni abilitate
var pTotalCount     = 1;

// Parametri di configurazione
var delta           = new Array(0.02, 0); // Variazione del valore Alfa ad ogni passo

var pDurataPausa    = new Array(4000, 0); // Durata della fase di pausa

var pDurataTrans    = new Array( 100, 0); // Durata della fase di transizione

var pImageCount     = new Array(   0, 0); // Numero di immagini coinvolte

var pNomeDiv        = new Array('testata_', '');

var pSorgenteImg    = new Array('images/testata/testataImmagine', '');


// Varaibili per la gestione delle transizioni
var pImageCurrent   = new Array(null, null);  // Riferimento all'immagine correntemente visualizzata

var pImageNext      = new Array(null, null);  // Riferimento alla prossima immagine che apparir&agrave;

var pIndexNext      = new Array(2, 0);     // Indice della prossima immagine che apparir&agrave;

var pOpacityCurrent = new Array(1, 0);     // Valore Alfa dell'immagine correntemente visualizzata

var pOpacityNext    = new Array(0, 0);     // Valore Alfa della prossima immagine che apparir&agrave;


/*
*  Funzione cross-browser per l'impostazione del valore Alfa di una immagine
*/
function setOpacity(parElement, parOpacity, parAlphaSupported)
{
    if (!parAlphaSupported) 
    {
        if (parOpacity > 0.5)
            parOpacity = 1.0;
        else
            parOpacity = 0.0;
    }

    if(typeof parElement.style.opacity != "undefined")        
        parElement.style.opacity = parOpacity;         
    else if(typeof parElement.style.MozOpacity != "undefined")
        parElement.style.MozOpacity = parOpacity; 
    else if (typeof parElement.style.filter != "undefined")
        parElement.style.filter = "alpha(opacity=" + Math.round(parOpacity * 100) + ")";

    if (parOpacity == 1.0)
        parElement.style.filter = "";
    
}


/*
* Funzione di inizializzazione della rotazione
*/
function imageUpdateStart()
{
    var i;    	
	
	for(i = 0; i < pTotalCount; ++i)
	{
		pImageCount[i] = 0;
		while(document.getElementById(pNomeDiv[i] + (pImageCount[i] + 1)) != null)
			pImageCount[i] = pImageCount[i] + 1;
	}
	
	if(document.addEventListener)
		document.addEventListener('contextmenu', function(e) { e.stopPropagation(); }, false);
	else if(document.attachEvent)
		document.attachEvent('oncontextmenu', function() { event.cancelBubble = true; return false; });
		
	for(i = 0; i < pTotalCount; ++i)
	{
		pIndexNext[i] = pIndexCurrent[i] + 1;
		if(pIndexNext[i] > pImageCount[i])
			pIndexNext[i] = 1;      
	}
	
	// Imposta il "src" delle immagini	
	for(i = 0; i < pTotalCount; ++i)
	{
		for(j = 1; j <= pImageCount[i]; ++j)
		{
			if(pSorgenteImg[i] != "")
				document.getElementById(pNomeDiv[i] + j).src = pSorgenteImg[i] + j + ".jpg";
		}
	}	
	
    for(i = 0; i < pTotalCount; ++i)
    {
    
        // Recupera i riferimenti alle prime due immagini da visualizzare
        pImageCurrent[i] = document.getElementById(pNomeDiv[i] + pIndexCurrent[i]);
        pImageNext[i] = document.getElementById(pNomeDiv[i] + pIndexNext[i]);
                
        // Imposta il valore Alfa iniziale sulle prime due immagini
        if(delta[i] < 1.00)
        {
			setOpacity(pImageCurrent[i], pOpacityCurrent[i]);
            setOpacity(pImageNext[i], pOpacityNext[i]);
        }
        
        // Imposta a visibili le prime due immagini
        pImageCurrent[i].style.display = 'block';
        if(delta[i] < 1.00)
            pImageNext[i].style.display = 'block';
			
        // Attiva il timer per eseguire la transizione
        window.setTimeout("imageUpdate(" + i + ")", pDurataPausa[i]);
    }        
}


/*
*   Funzione che effettua la transizione
*/
function imageUpdate(i)
{    
    var tPausa = 0;
    var tCambiaImmagine = 0;
    
    // Aggiorna i valori Alfa delle immagini visualizzate
    pOpacityCurrent[i] -= delta[i];
    pOpacityNext[i] += delta[i];
    
    if(pOpacityNext[i] >= 1)
    {
        pOpacityCurrent[i] = 0;
        pOpacityNext[i] = 1;
    }
	
    // Imposta i valori Alfa determinati
    if(delta[i] < 1.00)
    {
        setOpacity(pImageCurrent[i], pOpacityCurrent[i]);
        setOpacity(pImageNext[i], pOpacityNext[i]);
    }
	
    // Se la transizione &egrave; finita..
    if(pOpacityNext[i] == 1)
    {
		
	    // .. nasconde l'immagine corrente
        pImageCurrent[i].style.display = 'none';
        
        // .. determina la prossima immagine che dovr&agrave; comparire
        pIndexCurrent[i] = pIndexNext[i];
        if(++pIndexNext[i] > pImageCount[i])
            pIndexNext[i] = 1;
        
        // .. e si predispone per iniziare la prossima transizione
        pImageCurrent[i] = document.getElementById(pNomeDiv[i] + pIndexCurrent[i]);
        pImageNext[i] = document.getElementById(pNomeDiv[i] + pIndexNext[i]);
        pOpacityCurrent[i] = 1;
        pOpacityNext[i] = 0;
        if(delta[i] < 1.00)
        {
            setOpacity(pImageNext[i], pOpacityNext[i]);
            pImageNext[i].style.display = 'block';
        }
        else
            pImageCurrent[i].style.display = 'block';        

        tPausa = 1;	
    }
    
    // Imposta il prossimo timeout
    window.setTimeout("imageUpdate(" + i + ")", tPausa == 1 ? pDurataPausa[i] : pDurataTrans[i]);
}
