/********************************************************************************
*  Script per la gestione della rotazione delle immagini di testata             *
********************************************************************************/

//var pTotalCount = 2;

// Parametri di configurazione
var delta           = new Array(0.02, 1.00); // VariFazione del valore Alfa ad ogni passo

var pDurataPausa    = new Array(4000, 5000); // Durata della fase di pausa

var pDurataTrans    = new Array( 100,  100); // Durata della fase di transizione

var pImageCount     = new Array(   4,    5); // Numero di immagini coinvolte

var pNomeDiv        = new Array('testata', 'news');


// 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à

var pIndexCurrent   = new Array(1, 1);        // Indice dell'immagine correntemente visualizzata

var pIndexNext      = new Array(2, 2);        // Indice della prossima immagine che apparirà

var pOpacityCurrent = new Array(1, 1);        // Valore Alfa dell'immagine correntemente visualizzata

var pOpacityNext    = new Array(0, 0);        // Valore Alfa della prossima immagine che apparirà


/*
*  Funzione cross-browser per l'impostazione del valore Alfa di una immagine
*/
function setOpacity(parElement, parOpacity)
{        
    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) + ")";
}


/*
* Funzione di inizializzazione della rotazione
*/
function imageUpdateStart()
{
    var i;    
    
    pIndexCurrent[0] = Math.floor(Math.random() * pImageCount[0]) + 1;
    pIndexNext[0] = pIndexCurrent[0] + 1;
    if(pIndexNext[0] > pImageCount[0])
        pIndexNext[0] = 1;      
        
    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 è finita..
    if(pOpacityNext[i] == 1)
    {
		
	    // .. nasconde l'immagine corrente
        pImageCurrent[i].style.display = 'none';
        
        // .. determina la prossima immagine che dovrà 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]);
}

