/*--------------------------------------------------------------------------------------------------
MoodyKiosk v1.0 Javascript Suite: Funzioni per la gestione dello screenSaver e dei banner
Release 1.0
Autore: Garelli Fabio, Savioli Massimiliano
Copyright 2009 www.ombreinluce.it - www.3pix.it     Tutti i diritti sono riservati
---------------------------------------------------------------------------------------------------*/ 


/*
NB: per ogni spazio disponibile occorre configurare correttamente e definire la relativa sequenza (matrice bidimensionale)
        il numero di elementi deve essere necessariamente essere indicato o la sequenza non sarà inizializzata
        di seguito la descrizione delle colonne della matrice
        colonna 1: percorso completo dell'immagine
        colonna 2: numero di ripetizioni
        colonna 3: durata di ogni ripetizione (espressa in numero di controlli)
        colonna 4: numero di ripetizioni già eseguite

        INDICE DELLE FUNZIONI
        1)    calcolaDurata()
        2)    caricaContenuto(idTagContenuto, indirizzo, larghezza, altezza)
        3)    controllo()
        4)    gestisciSpazio1()
        5)    gestisciSpazio2()
        6)    gestisciSpazio3()
        7)    gestisciSpazio4()
        8)    gestisciSpazio5()
        9)    riprendi(spazio)
        10)    sospendi(spazio)
*/

// CALCOLA DURATA: calcola la durata complessiva sommando il numero di impressioni e la durata di ciascuna impressione di ogni elemento della sequenza
function calcolaDurata()
{
	if (fl_screen_saver)
    {
        // spazio 1
	    for (i = 0; i < sp1_numeroElementi; i++)
	    {
		    sp1_numeroControlliPrevisti = sp1_numeroControlliPrevisti + (sp1_sequenza[i][1] * sp1_sequenza[i][2]) + (sp1_sequenza[i][1] * 1);
	    }
    }
    if (fl_banners)
    {
	    // spazio 2
	    for (i = 0; i < sp2_numeroElementi; i++)
	    {
		    sp2_numeroControlliPrevisti = sp2_numeroControlliPrevisti + (sp2_sequenza[i][1] * sp2_sequenza[i][2]) + (sp2_sequenza[i][1] * 1);
	    }
	    // spazio 3
	    for (i = 0; i < sp3_numeroElementi; i++)
	    {
		    sp3_numeroControlliPrevisti = sp3_numeroControlliPrevisti + (sp3_sequenza[i][1] * sp3_sequenza[i][2]) + (sp3_sequenza[i][1] * 1);
	    }
	    // spazio 4
	    for (i = 0; i < sp4_numeroElementi; i++)
	    {
		    sp4_numeroControlliPrevisti = sp4_numeroControlliPrevisti + (sp4_sequenza[i][1] * sp4_sequenza[i][2]) + (sp4_sequenza[i][1] * 1);
	    }
	    // spazio 5
	    for (i = 0; i < sp5_numeroElementi; i++)
	    {
		    sp5_numeroControlliPrevisti = sp5_numeroControlliPrevisti + (sp5_sequenza[i][1] * sp5_sequenza[i][2]) + (sp5_sequenza[i][1] * 1);
	    }
    }
}



// CARICA CONTENUTO: carica un contenuto all'interno del relativo spazio discriminando in base alla tipologia
function caricaContenuto(idTagContenuto, indirizzo, larghezza, altezza)
{
    var codiceHtml = "";
    if (idTagContenuto=='sp1_contenuto' )
    {
        if (loadedFlvScreen) 
        {  
            swfobject.removeSWF(idTagContenuto + "_ply");
            loadedFlvScreen=false; // il file flv è stato scaricato
            flashVideoPlayer=null; // l'oggetto flashVideoPlayer non esiste più
        }
    }
	if (document.getElementById(idTagContenuto))
	{
		// immagine jpg
		if (indirizzo.substr(indirizzo.indexOf("."), 4).toLowerCase() == ".jpg")
		{
			codiceHtml = "<img src='" + indirizzo + "' style='width: " + larghezza + "px; height: " + altezza + "px;'></img>";
		}
        // immagine gif
        else if (indirizzo.substr(indirizzo.indexOf("."), 4).toLowerCase() == ".gif")
        {
            codiceHtml = "<img src='" + indirizzo + "' style='width: " + larghezza + "px; height: " + altezza + "px;'></img>";
        }
        // immagine png
        else if (indirizzo.substr(indirizzo.indexOf("."), 4).toLowerCase() == ".png")
        {
            codiceHtml = "<img src='" + indirizzo + "' style='width: " + larghezza + "px; height: " + altezza + "px;'></img>";
        }
		// flash
		else if (indirizzo.substr(indirizzo.indexOf("."), 4).toLowerCase() == ".swf")
		{
			codiceHtml = codiceHtml + "<object id='" + idTagContenuto + "_swf' type='application/x-shockwave-flash' width='" + larghezza + "' height='" + altezza + "' data='" + indirizzo + "'>\n";
			codiceHtml = codiceHtml + "<param name='movie' value='" + indirizzo + "'>\n";
			codiceHtml = codiceHtml + "<param name='wmode' value='transparent'>\n";
			codiceHtml = codiceHtml + "<param name='loop' value='false'>\n";
			codiceHtml = codiceHtml + "</object>\n";     
		}
		// quicktime
		else if (indirizzo.substr(indirizzo.indexOf("."), 4).toLowerCase() == ".mov")
		{
            if (idTagContenuto!='sp1_contenuto' || (idTagContenuto=='sp1_contenuto' && screenBigFlag!=0))
            { 
                codiceHtml = codiceHtml + "<object id='" + idTagContenuto + "_mov' classid='clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B' codebase='http://www.apple.com/qtactivex/qtplugin.cab' width='" + larghezza + "' height='" + altezza + "'>\n";
			    codiceHtml = codiceHtml + "<param name='bgcolor' value='black'>\n";
                codiceHtml = codiceHtml + "<param name='src' value='" + indirizzo + "'>\n";
                codiceHtml = codiceHtml + "<param name='autoplay' value='true'>\n";      
                codiceHtml = codiceHtml + "<param name='loop' value='false'>\n";
                codiceHtml = codiceHtml + "<param name='enablejavascript' value='true'>\n";
                codiceHtml = codiceHtml + "<param name='kioskmode' value='true'>\n"; 
                codiceHtml = codiceHtml + "<param name='href' value='false'>\n";
                codiceHtml = codiceHtml + "<param name='enablehref' value='false'>\n";      
                codiceHtml = codiceHtml + "<param name='controller' value='false'>\n";
                codiceHtml = codiceHtml + "<param name='wmode' value='transparent'>\n";
                codiceHtml = codiceHtml + "<param name='showlogo' value='false'>\n";
                codiceHtml = codiceHtml + "<param name='scale' value='aspect'>\n";
                if (browserInfo[0]=="Opera")
                {
                    // wmode non supportato in Opera
                    codiceHtml = codiceHtml + "<embed id='" + idTagContenuto + "_mov' scale='aspect' bgcolor='black' name='" + idTagContenuto + "_mov'  autoplay='true' loop='false' enablejavascript='true' href='false' wmode='opaque' kioskmode='true' enablehref='false' controller='false' type='video/quicktime' pluginspage='/quicktime/download/'  showlogo='false' width='" + larghezza + "' height='" + altezza + "' src='" + indirizzo + "'></embed>\n";
                }
                else
                {
                    codiceHtml = codiceHtml + "<embed id='" + idTagContenuto + "_mov' scale='aspect' bgcolor='black' name='" + idTagContenuto + "_mov'  autoplay='true' loop='false' enablejavascript='true' href='false' wmode='transparent' kioskmode='true' enablehref='false' controller='false' type='video/quicktime' pluginspage='/quicktime/download/'  showlogo='false' width='" + larghezza + "' height='" + altezza + "' src='" + indirizzo + "'></embed>\n";    
                }
                
			    codiceHtml = codiceHtml + "</object>\n";
            }
            else
            {
                codiceHtml="<div id='" + idTagContenuto + "_movI'></div>";  
            }
		}
        // flv
        else if (indirizzo.substr(indirizzo.indexOf("."), 4).toLowerCase() == ".flv")
        {        
            codiceHtml="<div id='" + idTagContenuto + "_ply'></div>"; 
            document.getElementById(idTagContenuto).innerHTML = codiceHtml;
            if (idTagContenuto!='sp1_contenuto' || (idTagContenuto=='sp1_contenuto' && screenBigFlag!=0))
            {  
                var flashvars = {
                  file: "../" + indirizzo,
                  autostart: "true",
                  autorewind: "false",
                  bufferlength: "10",
                  flvWidth: ""+larghezza+"", 
                  flvHeight: ""+altezza +""
                };
                var params = {
                    menu : "false",
                    allowfullscreen: "false",
                    allowscriptaccess: "always",
                    wmode: "transparent"    
                };
                var attributes = {
                  id: idTagContenuto + "_ply",
                  name: idTagContenuto + "_ply"
                };
                
                if (idTagContenuto=='sp1_contenuto')
                {
                    // utilizzo la libreria swfobject per embeddare il file swf e ritorno la funzione outputStatus
                    swfobject.embedSWF("scripts/maxFlvPlayer.swf", idTagContenuto + "_ply",larghezza, altezza, "9.0.0","",flashvars, params, attributes,outputStatus);
                }
                else
                {
                    // utilizzo la libreria swfobject per embeddare il file swf
                    swfobject.embedSWF("scripts/maxFlvPlayer.swf", idTagContenuto + "_ply",larghezza, altezza, "9.0.0","",flashvars, params, attributes);    
                }
            }
        }
		// carica codice all'interno del tag bersaglio
        if (indirizzo.substr(indirizzo.indexOf("."), 4).toLowerCase() != ".flv")
        {
           document.getElementById(idTagContenuto).innerHTML = codiceHtml;	
        }
	}
}



// FUNZIONI DI GESTIONE LETTORE FLV

// flvMan: Setta a true o false la variabile "playingFlvScreen", che indica se c'è un file flv in esecuzione nello screenSaver. Invocata in actionscript dal lettore flv
function flvMan(p)
{
    playingFlvScreen=p;
}

// outputStatus: Setta a true o false la variabile loadedFlvScreen che indica se l'oggetto swf è stato inizializzato correttamente. Utilizzata nella funzione "caricaContenuto" che embedda il file swf relativo al lettore flv. 
function outputStatus(e) 
{
    // l'evento e contiene i seguenti dati:
    //alert("e.success = " + e.success +"\ne.id = "+ e.id +"\ne.ref = "+ e.ref);
    
    loadedFlvScreen= e.success;
    if (loadedFlvScreen)
    {
        flashVideoPlayer=e.ref;
    }  
}

// callFlashPlayVideo: Chiama la funzione playVideo() nel file swf relativo al lettore flv
function callFlashPlayVideo() 
{
    if (flashVideoPlayer!=null)
    {
        // external interface call
        flashVideoPlayer.playVideo();
    }
   
}
// callFlashPlayPauseVideo: Chiama la funzione pauseResume() nel file swf relativo al lettore flv 
function callFlashPlayPauseVideo() 
{ 
    if (flashVideoPlayer!=null)
    {
        // external interface call
        flashVideoPlayer.pauseResume();
    }
}

// FINE FUNZIONI DI GESTIONE LETTORE FLV



// CONTROLLO: aggiorna lo stato dei diversi elementi effettuando una serie di controlli e rilanciandosi automaticamente ad intervalli regolari
function controllo()
{
	if (fl_screen_saver)
    {
        // gestione spazio 1
	    if (sp1_sospendiRiproduzione == false)
	    {
		    gestisciSpazio1();	
	    }
    }
    if (fl_banners)
    {
	    // gestione spazio 2
	    if (sp2_sospendiRiproduzione == false)
	    {
		    gestisciSpazio2();	
	    }
	    // gestione spazio 3
	    if (sp3_sospendiRiproduzione == false)
	    {
		    gestisciSpazio3();	
	    }	
	    // gestione spazio 4
	    if (sp4_sospendiRiproduzione == false)
	    {
		    gestisciSpazio4();	
	    }
	    // gestione spazio 5
	    if (sp5_sospendiRiproduzione == false)
	    {
		    gestisciSpazio5();	
	    }
    }
    if (fl_screen_saver || fl_banners)
    {	
	    // rilancia la funzione di controllo
	    setTimeout("controllo()", frequenzaControlli);
    }
}



// GESTISCI SPAZIO 1: gestisci il primo spazio calcolando i cambi di contenuto, lo stato della sequenza e tutte le altre opzioni
function gestisciSpazio1()
{
    if (sp1_numeroElementi>0)
    {
        // verifica se l'elemento corrente ha completato la sua impressione e passa al successivo
	    if (sp1_elementiVisualizzati == 0 || sp1_elementoCorrente > -1)
	    {
		    if (sp1_elementiVisualizzati == 0 || ((sp1_numeroControlliEseguiti - sp1_ultimoControlloConCambio) > sp1_sequenza[sp1_elementoCorrente][2]))
		    {
			    // riparti dal primo elemento se la sequenza si è conclusa precedentemente
			    if ((sp1_elementoCorrente + 1) == sp1_numeroElementi)
			    {
				    sp1_sottoSequenzeConcluse = sp1_sottoSequenzeConcluse + 1;
				    sp1_elementoCorrente = -1;
			    }
			    // passa all'elemento successivo verificando se il numero di ripetizioni assegnato supera il numero di sotto sequenze concluse  
			    var elementoAssegnato = false;
			    for (i = 0; i < sp1_numeroElementi; i++)
			    {
				    if (sp1_sequenza[i][1] > sp1_sottoSequenzeConcluse)
				    {
					    if (i > sp1_elementoCorrente && elementoAssegnato == false)
					    {
						    sp1_elementoCorrente = i;
						    sp1_sequenza[sp1_elementoCorrente][3] = sp1_sequenza[sp1_elementoCorrente][3] + 1;
						    elementoAssegnato = true;
					    }
				    }
			    }
  		    // carica contenuto dell'elemento corrente
			    caricaContenuto("sp1_contenuto", sp1_sequenza[sp1_elementoCorrente][0], sp1_larghezza, sp1_altezza);
			    // memorizza l'ultimo cambio effettuato e aggiorna il numero di elementi già visualizzati
  		    sp1_ultimoControlloConCambio = sp1_numeroControlliEseguiti;
  		    sp1_elementiVisualizzati = sp1_elementiVisualizzati + 1;
		    }
	    }
	    // notifica stato della funzione
	    if (sp1_elementoCorrente > -1)
	    {
		    //elCorTxt=sp1_elementoCorrente + 1;
            //document.getElementById("sp1_stato").innerHTML = "Controllo: " + sp1_numeroControlliEseguiti + " di " + sp1_numeroControlliPrevisti + ".<br />Elemento corrente: " + sp1_elementoCorrente + ". Ripetizioni eseguite (in corso compresa): " + sp1_sequenza[sp1_elementoCorrente][3] + " di " + sp1_sequenza[sp1_elementoCorrente][1] + ". Durata prevista: " + sp1_sequenza[sp1_elementoCorrente][2] + ".<br />Ultimo controllo con cambio: " + sp1_ultimoControlloConCambio + ". Elementi visualizzati: " + sp1_elementiVisualizzati + ". Sottosequenze concluse: " + sp1_sottoSequenzeConcluse + "." + " Numero elementi: " + sp1_numeroElementi + "." + " Indice elemento corrente:" + sp1_elementoCorrente + "." + " Numero di esecuzioni Screen:" + screenBigFlag;
	    }
	    // verifica se la sequenza è terminata, aggiorna il valore del numero di controlli effettuati e rilancia la funzione
	    if ((sp1_numeroControlliPrevisti - 1) > sp1_numeroControlliEseguiti)
	    { 
		    sp1_numeroControlliEseguiti = sp1_numeroControlliEseguiti + 1;
	    }
	    else
	    {
		    sp1_numeroControlliEseguiti = 0;
		    sp1_ultimoControlloConCambio = 0
		    sp1_elementoCorrente = -1;
		    sp1_elementiVisualizzati = 0; 
		    sp1_sottoSequenzeConcluse = 0;
		    for (i = 0; i < sp1_numeroElementi; i++)
		    {
			    sp1_sequenza[i][3] = 0;
		    }
	    }
    }
}



// GESTISCI SPAZIO 2: gestisci il secondo spazio calcolando i cambi di contenuto, lo stato della sequenza e tutte le altre opzioni
function gestisciSpazio2()
{
    if (sp2_numeroElementi>0)
    {
        // verifica se l'elemento corrente ha completato la sua impressione e passa al successivo
	    if (sp2_elementiVisualizzati == 0 || sp2_elementoCorrente > -1)
	    {
		    if (sp2_elementiVisualizzati == 0 || ((sp2_numeroControlliEseguiti - sp2_ultimoControlloConCambio) > sp2_sequenza[sp2_elementoCorrente][2]))
		    {
			    // riparti dal primo elemento se la sequenza si è conclusa precedentemente
			    if ((sp2_elementoCorrente + 1) == sp2_numeroElementi)
			    {
				    sp2_sottoSequenzeConcluse = sp2_sottoSequenzeConcluse + 1;
				    sp2_elementoCorrente = -1;
			    }
			    // passa all'elemento successivo verificando se il numero di ripetizioni assegnato supera il numero di sotto sequenze concluse  
			    var elementoAssegnato = false;
			    for (i = 0; i < sp2_numeroElementi; i++)
			    {
				    if (sp2_sequenza[i][1] > sp2_sottoSequenzeConcluse)
				    {
					    if (i > sp2_elementoCorrente && elementoAssegnato == false)
					    {
						    sp2_elementoCorrente = i;
						    sp2_sequenza[sp2_elementoCorrente][3] = sp2_sequenza[sp2_elementoCorrente][3] + 1;
						    elementoAssegnato = true;
					    }
				    }
			    }
  		    // carica contenuto dell'elemento corrente
  		    caricaContenuto("sp2_contenuto", sp2_sequenza[sp2_elementoCorrente][0], sp2_larghezza, sp2_altezza);
			    // memorizza l'ultimo cambio effettuato e aggiorna il numero di elementi già visualizzati
  		    sp2_ultimoControlloConCambio = sp2_numeroControlliEseguiti;
  		    sp2_elementiVisualizzati = sp2_elementiVisualizzati + 1;
		    }
	    }
	    // notifica stato della funzione
	    if (sp2_elementoCorrente > -1)
	    {
		    //document.getElementById("sp2_stato").innerHTML = "Controllo: " + sp2_numeroControlliEseguiti + " di " + sp2_numeroControlliPrevisti + ".<br />Elemento corrente: " + sp2_elementoCorrente + ". Ripetizioni eseguite (in corso compresa): " + sp2_sequenza[sp2_elementoCorrente][3] + " di " + sp2_sequenza[sp2_elementoCorrente][1] + ". Durata prevista: " + sp2_sequenza[sp2_elementoCorrente][2] + ".<br />Ultimo controllo con cambio: " + sp2_ultimoControlloConCambio + ". Elementi visualizzati: " + sp2_elementiVisualizzati + ". Sottosequenze concluse: " + sp2_sottoSequenzeConcluse + ".";
	    }
	    // verifica se la sequenza è terminata, aggiorna il valore del numero di controlli effettuati e rilancia la funzione
	    if ((sp2_numeroControlliPrevisti - 1) > sp2_numeroControlliEseguiti)
	    { 
		    sp2_numeroControlliEseguiti = sp2_numeroControlliEseguiti + 1;
	    }
	    else
	    {
		    sp2_numeroControlliEseguiti = 0;
		    sp2_ultimoControlloConCambio = 0
		    sp2_elementoCorrente = -1;
		    sp2_elementiVisualizzati = 0; 
		    sp2_sottoSequenzeConcluse = 0;
		    for (i = 0; i < sp2_numeroElementi; i++)
		    {
			    sp2_sequenza[i][3] = 0;
		    }
	    }
    }
}



// GESTISCI SPAZIO 3: gestisci il terzo spazio calcolando i cambi di contenuto, lo stato della sequenza e tutte le altre opzioni
function gestisciSpazio3()
{
    if (sp3_numeroElementi>0)
    {
        // verifica se l'elemento corrente ha completato la sua impressione e passa al successivo
	    if (sp3_elementiVisualizzati == 0 || sp3_elementoCorrente > -1)
	    {
		    if (sp3_elementiVisualizzati == 0 || ((sp3_numeroControlliEseguiti - sp3_ultimoControlloConCambio) > sp3_sequenza[sp3_elementoCorrente][2]))
		    {
			    // riparti dal primo elemento se la sequenza si è conclusa precedentemente
			    if ((sp3_elementoCorrente + 1) == sp3_numeroElementi)
			    {
				    sp3_sottoSequenzeConcluse = sp3_sottoSequenzeConcluse + 1;
				    sp3_elementoCorrente = -1;
			    }
			    // passa all'elemento successivo verificando se il numero di ripetizioni assegnato supera il numero di sotto sequenze concluse  
			    var elementoAssegnato = false;
			    for (i = 0; i < sp3_numeroElementi; i++)
			    {
				    if (sp3_sequenza[i][1] > sp3_sottoSequenzeConcluse)
				    {
					    if (i > sp3_elementoCorrente && elementoAssegnato == false)
					    {
						    sp3_elementoCorrente = i;
						    sp3_sequenza[sp3_elementoCorrente][3] = sp3_sequenza[sp3_elementoCorrente][3] + 1;
						    elementoAssegnato = true;
					    }
				    }
			    }
  		    // carica contenuto dell'elemento corrente
  		    caricaContenuto("sp3_contenuto", sp3_sequenza[sp3_elementoCorrente][0], sp3_larghezza, sp3_altezza);
			    // memorizza l'ultimo cambio effettuato e aggiorna il numero di elementi già visualizzati
  		    sp3_ultimoControlloConCambio = sp3_numeroControlliEseguiti;
  		    sp3_elementiVisualizzati = sp3_elementiVisualizzati + 1;
		    }
	    }
	    // notifica stato della funzione
	    if (sp3_elementoCorrente > -1)
	    {
		    //document.getElementById("sp3_stato").innerHTML = "Controllo: " + sp3_numeroControlliEseguiti + " di " + sp3_numeroControlliPrevisti + ".<br />Elemento corrente: " + sp3_elementoCorrente + ". Ripetizioni eseguite (in corso compresa): " + sp3_sequenza[sp3_elementoCorrente][3] + " di " + sp3_sequenza[sp3_elementoCorrente][1] + ". Durata prevista: " + sp3_sequenza[sp3_elementoCorrente][2] + ".<br />Ultimo controllo con cambio: " + sp3_ultimoControlloConCambio + ". Elementi visualizzati: " + sp3_elementiVisualizzati + ". Sottosequenze concluse: " + sp3_sottoSequenzeConcluse + ".";
	    }
	    // verifica se la sequenza è terminata, aggiorna il valore del numero di controlli effettuati e rilancia la funzione
	    if ((sp3_numeroControlliPrevisti - 1) > sp3_numeroControlliEseguiti)
	    { 
		    sp3_numeroControlliEseguiti = sp3_numeroControlliEseguiti + 1;
	    }
	    else
	    {
		    sp3_numeroControlliEseguiti = 0;
		    sp3_ultimoControlloConCambio = 0
		    sp3_elementoCorrente = -1;
		    sp3_elementiVisualizzati = 0; 
		    sp3_sottoSequenzeConcluse = 0;
		    for (i = 0; i < sp3_numeroElementi; i++)
		    {
			    sp3_sequenza[i][3] = 0;
		    }
	    }
    }
}



// GESTISCI SPAZIO 4: gestisci il quarto spazio calcolando i cambi di contenuto, lo stato della sequenza e tutte le altre opzioni
function gestisciSpazio4()
{
    if(sp4_numeroElementi>0)
    {
        // verifica se l'elemento corrente ha completato la sua impressione e passa al successivo
	    if (sp4_elementiVisualizzati == 0 || sp4_elementoCorrente > -1)
	    {
		    if (sp4_elementiVisualizzati == 0 || ((sp4_numeroControlliEseguiti - sp4_ultimoControlloConCambio) > sp4_sequenza[sp4_elementoCorrente][2]))
		    {
			    // riparti dal primo elemento se la sequenza si è conclusa precedentemente
			    if ((sp4_elementoCorrente + 1) == sp4_numeroElementi)
			    {
				    sp4_sottoSequenzeConcluse = sp4_sottoSequenzeConcluse + 1;
				    sp4_elementoCorrente = -1;
			    }
			    // passa all'elemento successivo verificando se il numero di ripetizioni assegnato supera il numero di sotto sequenze concluse  
			    var elementoAssegnato = false;
			    for (i = 0; i < sp4_numeroElementi; i++)
			    {
				    if (sp4_sequenza[i][1] > sp4_sottoSequenzeConcluse)
				    {
					    if (i > sp4_elementoCorrente && elementoAssegnato == false)
					    {
						    sp4_elementoCorrente = i;
						    sp4_sequenza[sp4_elementoCorrente][3] = sp4_sequenza[sp4_elementoCorrente][3] + 1;
						    elementoAssegnato = true;
					    }
				    }
			    }
  		    // carica contenuto dell'elemento corrente
  		    caricaContenuto("sp4_contenuto", sp4_sequenza[sp4_elementoCorrente][0], sp4_larghezza, sp4_altezza);
			    // memorizza l'ultimo cambio effettuato e aggiorna il numero di elementi già visualizzati
  		    sp4_ultimoControlloConCambio = sp4_numeroControlliEseguiti;
  		    sp4_elementiVisualizzati = sp4_elementiVisualizzati + 1;
		    }
	    }
	    // notifica stato della funzione
	    if (sp4_elementoCorrente > -1)
	    {
		    //document.getElementById("sp4_stato").innerHTML = "Controllo: " + sp4_numeroControlliEseguiti + " di " + sp4_numeroControlliPrevisti + ".<br />Elemento corrente: " + sp4_elementoCorrente + ". Ripetizioni eseguite (in corso compresa): " + sp4_sequenza[sp4_elementoCorrente][3] + " di " + sp4_sequenza[sp4_elementoCorrente][1] + ". Durata prevista: " + sp4_sequenza[sp4_elementoCorrente][2] + ".<br />Ultimo controllo con cambio: " + sp4_ultimoControlloConCambio + ". Elementi visualizzati: " + sp4_elementiVisualizzati + ". Sottosequenze concluse: " + sp4_sottoSequenzeConcluse + ".";
	    }
	    // verifica se la sequenza è terminata, aggiorna il valore del numero di controlli effettuati e rilancia la funzione
	    if ((sp4_numeroControlliPrevisti - 1) > sp4_numeroControlliEseguiti)
	    { 
		    sp4_numeroControlliEseguiti = sp4_numeroControlliEseguiti + 1;
	    }
	    else
	    {
		    sp4_numeroControlliEseguiti = 0;
		    sp4_ultimoControlloConCambio = 0
		    sp4_elementoCorrente = -1;
		    sp4_elementiVisualizzati = 0; 
		    sp4_sottoSequenzeConcluse = 0;
		    for (i = 0; i < sp4_numeroElementi; i++)
		    {
			    sp4_sequenza[i][3] = 0;
		    }
	    }
    }
}



// GESTISCI SPAZIO 5: gestisci il secondo spazio calcolando i cambi di contenuto, lo stato della sequenza e tutte le altre opzioni
function gestisciSpazio5()
{
    if (sp5_numeroElementi>0)
    {
        // verifica se l'elemento corrente ha completato la sua impressione e passa al successivo
	    if (sp5_elementiVisualizzati == 0 || sp5_elementoCorrente > -1)
	    {
		    if (sp5_elementiVisualizzati == 0 || ((sp5_numeroControlliEseguiti - sp5_ultimoControlloConCambio) > sp5_sequenza[sp5_elementoCorrente][2]))
		    {
			    // riparti dal primo elemento se la sequenza si è conclusa precedentemente
			    if ((sp5_elementoCorrente + 1) == sp5_numeroElementi)
			    {
				    sp5_sottoSequenzeConcluse = sp5_sottoSequenzeConcluse + 1;
				    sp5_elementoCorrente = -1;
			    }
			    // passa all'elemento successivo verificando se il numero di ripetizioni assegnato supera il numero di sotto sequenze concluse  
			    var elementoAssegnato = false;
			    for (i = 0; i < sp5_numeroElementi; i++)
			    {
				    if (sp5_sequenza[i][1] > sp5_sottoSequenzeConcluse)
				    {
					    if (i > sp5_elementoCorrente && elementoAssegnato == false)
					    {
						    sp5_elementoCorrente = i;
						    sp5_sequenza[sp5_elementoCorrente][3] = sp5_sequenza[sp5_elementoCorrente][3] + 1;
						    elementoAssegnato = true;
					    }
				    }
			    }
  		    // carica contenuto dell'elemento corrente
  		    caricaContenuto("sp5_contenuto", sp5_sequenza[sp5_elementoCorrente][0], sp5_larghezza, sp5_altezza);
			    // memorizza l'ultimo cambio effettuato e aggiorna il numero di elementi già visualizzati
  		    sp5_ultimoControlloConCambio = sp5_numeroControlliEseguiti;
  		    sp5_elementiVisualizzati = sp5_elementiVisualizzati + 1;
		    }
	    }
	    // notifica stato della funzione
	    if (sp5_elementoCorrente > -1)
	    {
		    //document.getElementById("sp5_stato").innerHTML = "Controllo: " + sp5_numeroControlliEseguiti + " di " + sp5_numeroControlliPrevisti + ".<br />Elemento corrente: " + sp5_elementoCorrente + ". Ripetizioni eseguite (in corso compresa): " + sp5_sequenza[sp5_elementoCorrente][3] + " di " + sp5_sequenza[sp5_elementoCorrente][1] + ". Durata prevista: " + sp5_sequenza[sp5_elementoCorrente][2] + ".<br />Ultimo controllo con cambio: " + sp5_ultimoControlloConCambio + ". Elementi visualizzati: " + sp5_elementiVisualizzati + ". Sottosequenze concluse: " + sp5_sottoSequenzeConcluse + ".";
	    }
	    // verifica se la sequenza è terminata, aggiorna il valore del numero di controlli effettuati e rilancia la funzione
	    if ((sp5_numeroControlliPrevisti - 1) > sp5_numeroControlliEseguiti)
	    { 
		    sp5_numeroControlliEseguiti = sp5_numeroControlliEseguiti + 1;
	    }
	    else
	    {
		    sp5_numeroControlliEseguiti = 0;
		    sp5_ultimoControlloConCambio = 0
		    sp5_elementoCorrente = -1;
		    sp5_elementiVisualizzati = 0; 
		    sp5_sottoSequenzeConcluse = 0;
		    for (i = 0; i < sp5_numeroElementi; i++)
		    {
			    sp5_sequenza[i][3] = 0;
		    }
	    }
    }
}



// RIPRENDI: riprendi la riproduzione di uno spazio dal punto in cui era stata interrotta
function riprendi(spazio)
{
	// spazio 1
	if (spazio == 1)
	{
		sp1_sospendiRiproduzione = false;
		if (screenBigFlag>1) // non è la prima volta che parte
        {   
            if (document.getElementById("sp1_contenuto_swf"))
		    {
                eval("document.sp1_contenuto_swf.Play()"); 
		    }
		    if (document.getElementById("sp1_contenuto_mov"))
		    {
                eval("document.sp1_contenuto_mov.Play()"); 
		    }
            
            if (document.getElementById("sp1_contenuto_ply"))
            {
                if (fl_intro)
                {
                    document.getElementById("sp1_contenuto_ply").style.visibility="visible";
                }
                callFlashPlayVideo();
            }
        }
        else
        {
            // prima esecuzione di ScreenSaver
            
            if (document.getElementById("sp1_contenuto_movI")) // il primo file da eseguire è un filmato mov
            {
                // carica contenuto del primo elemento
                caricaContenuto("sp1_contenuto", sp1_sequenza[0][0], sp1_larghezza, sp1_altezza);
                
            }
            else if (document.getElementById("sp1_contenuto_ply")) // il primo file da eseguire è un filmato flv
            {
                // carica contenuto del primo elemento
                caricaContenuto("sp1_contenuto", sp1_sequenza[0][0], sp1_larghezza, sp1_altezza);
            }
            
        }
		//document.getElementById("sp1_riprendi").style.display = "none";
		//document.getElementById("sp1_sospendi").style.display = "inline";
	}
	// spazio 2
	else if (spazio == 2)
	{
		sp2_sospendiRiproduzione = false;
        
		//document.getElementById("sp2_riprendi").style.display = "none";
		//document.getElementById("sp2_sospendi").style.display = "inline";
	}
	// spazio 3
	else if (spazio == 3)
	{
		sp3_sospendiRiproduzione = false;
        
		//document.getElementById("sp3_riprendi").style.display = "none";
		//document.getElementById("sp3_sospendi").style.display = "inline";
	}
	// spazio 4
	else if (spazio == 4)
	{
		sp4_sospendiRiproduzione = false;
        
		//document.getElementById("sp4_riprendi").style.display = "none";
		//document.getElementById("sp4_sospendi").style.display = "inline";
	}
	// spazio 5
	else if (spazio == 5)
	{
		sp5_sospendiRiproduzione = false;
        
		//document.getElementById("sp5_riprendi").style.display = "none";
		//document.getElementById("sp5_sospendi").style.display = "inline";
	}
}



// SOSPENDI: sospendi temporaneamente la riproduzione di uno spazio mantenendo in memoria il punto di arrivo della stessa
function sospendi(spazio)
{
	// spazio 1
	if (spazio == 1)
	{
  	    sp1_sospendiRiproduzione = true;
        if (screenBigFlag>=1) // lo ScreenSaver è partito almeno una volta
        {
		    
            if (document.getElementById("sp1_contenuto_swf"))
		    {
                eval("document.sp1_contenuto_swf.StopPlay()"); 
		    }
            if (document.getElementById("sp1_contenuto_mov"))
		    {
                eval("document.sp1_contenuto_mov.Stop()"); 
		    }
            
            if (document.getElementById("sp1_contenuto_ply"))
            {
                if (fl_intro)
                {
                    document.getElementById("sp1_contenuto_ply").style.visibility="hidden";
                } 
                callFlashPlayPauseVideo();
            }
  	        //document.getElementById("sp1_riprendi").style.display = "inline";
  	        //document.getElementById("sp1_sospendi").style.display = "none";
        }
	}
	// spazio 2
	else if (spazio == 2)
	{
  	    sp2_sospendiRiproduzione = true;
		
  	    //document.getElementById("sp2_riprendi").style.display = "inline";
  	    //document.getElementById("sp2_sospendi").style.display = "none";
	}
	// spazio 3
	else if (spazio == 3)
	{
  	    sp3_sospendiRiproduzione = true;
		
  	    //document.getElementById("sp3_riprendi").style.display = "inline";
  	    //document.getElementById("sp3_sospendi").style.display = "none";
	}
	// spazio 4
	else if (spazio == 4)
	{
  	    sp4_sospendiRiproduzione = true;
		
  	    //document.getElementById("sp4_riprendi").style.display = "inline";
  	    //document.getElementById("sp4_sospendi").style.display = "none";
	}
	// spazio 5
	else if (spazio == 5)
	{
  	    sp5_sospendiRiproduzione = true;
		
  	    //document.getElementById("sp5_riprendi").style.display = "inline";
  	    //document.getElementById("sp5_sospendi").style.display = "none";
	}
}