var contenutoAttivo;
var uot;
function init()
{
    /* funzione chiamata dall'evento DOM READY, cioè non appena l'html è stato caricato, prima di immagini e stile */
    
    /* cerca, verifica e visualizza un contenuto specifico */
    getPage();  
    
    /* centra la pagina nella finestra del browser */
    adjustByScreenSize();
    
}

function getPage()
{   
    /*     verifica se nella pagina ci sono più contenuti da visualizzare alternativamente oppure no */
    var url = String(window.location);
    var contenutiNellaPagina = new Array();
        contenutiNellaPagina = cercaContenuti();
        contenutoAttivo = contenutiNellaPagina[0];
        
   if ((contenutiNellaPagina.length == 0) || (contenutiNellaPagina[0] == null) || (String(contenutiNellaPagina[0]).length <2))
   {
        alert("deve essere specificato un ID per il DIV di classe content in highlight");
   }
   else
   {
        if (contenutiNellaPagina.length < 2)  /* se c'è un solo contenuto [oppure si è in una pagina con chiamata Ajax] */
        {    
            /*  ...mostra quello.  */
            
            showContent_inLeftPane(contenutiNellaPagina[0]);
        }
        else /* se ci sono più contenuti..*/
        {
            if (url.indexOf("page=") == -1) /* ..ma non è specificato alcun contenuto nell'url.. */
            {
                    /* ..lo aggiunge, selezionando il primo contenuto trovato nel codice */
                    /* spostato nel ready() */
            }
            else  /* se invece è stato specificato un contenuto nell'url.. */
            {   
                    /* ...ne controlla la validità */
                    if (document.getElementById(url.substr(url.indexOf("page=") +5)) == null)
                    {
                         /* se non corrisponde ai contenuti presenti nella pagina, lo rimuove dall'url e ricarica la pagina. */
                         alert("Il contenuto richiesto (\"" + url.substr(url.indexOf("page=") +5) + "\") non è presente in questa pagina" );
                         window.location = url.substr(0,url.indexOf("#"))
                    }       
                    else
                    {
                    	//alert("essìCheCiSta");
                         /* lascia fare a ready(); */
                    }
            }; 
        }    
    }
}



function ready()
{
    
    /* funzione chiamata quando la pagina è completamente caricata (onload) */

    var url = String(window.location);

    /* visualizza il contenuto suggerito nell'url dopo 300 millisecondi (necessario per dare tempo a flexscroll di intervenire su tutti i contenuti.. */ 
    if (url.indexOf("notizie-da-alphabeti") == -1){
	    if (url.indexOf("page=") > -1)
	    {
		setTimeout('showContent_inLeftPane(String(window.location).substr(String(window.location).indexOf("page=") +5))', 300);
	    }
	    else
	    {
		setTimeout("showContent_inLeftPane(contenutoAttivo)", 300);
	    }
    } else {
	if (url.indexOf("page=") != -1) uot = String(window.location).substr(String(window.location).indexOf("page=") +5);
	else uot = "direct_from_menu";
	setTimeout("sendRequest(uot)", 100);
	estraiPrimoLink();
	//setTimeout("estraiPrimoLink()",100);
    }
    /* assegna un listener sul ridimensionamento della finestra del browser per ricentrare il sito */
    if (typeof window.addEventListener != 'undefined') 
    {
        window.addEventListener('resize', adjustByScreenSize, false);
    }
    else
    {
        document.body.onresize = adjustByScreenSize;
    };
    /* centra la pagina nella finestra */
    adjustByScreenSize();
    
    /* dopo 600 millisecondi attiva le finestre modali (necessario per non litigare con gli altri script */
    setTimeout('Shadowbox.init()', 600 );             
}


function adjustByScreenSize()
{  

    /* PRIMO: impostiamo i parametri iniziali, a piacere */
    
    var minWidth = 950;                 /* larghezza minima della finestra, al disotto della quale non vi è alcuna operazione di centratura */
    var minWidth_shrinkedMode = 500;    /* come sopra, nel caso il sito sia in modalità compatta (verticale) */
    var minHeight = 670;                /* altezza minima della finestra, al disotto della quale non vi è alcuna operazione di centratura */

    var minOffsetH = 20;                /* l'operazione di centratura aggiunge o toglie dei margini dai bordi della finestra            */
    var maxOffsetH = 1000;              /* questi parametri servono a stabilire i limiti minimi e massimi dei margini orizzontali       */ 
    var minOffsetV = 18;                /* e verticali. se i minimi sono diversi da zero, sarà cmq aggiunto il margine minimo.                                                                                */
    var maxOffsetV = 70;

    /* SECONDO: inizializzazione variabili interne.. niente da impostare qui, parte tutto da zero    */ 
    var newOffsetH = 0;                 
    var newOffsetV = 0;
    var currentWidth = 0;
    var currentHeight = 0;
    
    
    /* TERZO: quanto è grande la finestra? */

    if ( typeof( window.innerWidth ) == 'number' ) 
    {
        /*  lettura delle dimensioni della finestra ( browser diversi da IE ) */
        currentWidth  = window.innerWidth;
        currentHeight = window.innerHeight;
    } 
    else if ( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeigth ) ) 
        {
        /*  lettura delle dimensioni della finestra ( IE 6 e 7 ) */
            currentWidth  = document.documentElement.clientWidth;
            currentHeight = document.documentElement.clientHeight;           
        } 
        else if ( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) 
            {
                /*  lettura delle dimensioni della finestra ( IE 4 ) */
                currentWidth  = document.body.clientWidth;
                currentHeight = document.body.clientHeight;
            };   
                         
    /*  QUARTO: iniziamo a fare un po' di ragionamenti... */
    
    /* ...prima con la LARGHEZZA:  */   
        
    if (currentWidth > minWidth)    // se la finestra corrente è più grande del minimo necessario (cioè c'è posto per aggiungere dei margini e centrare)...
    {
        newOffsetH = Math.floor((currentWidth - minWidth)/2) + minOffsetH;  // calcolo il margine per centrare..
        if (newOffsetH > maxOffsetH)  // ..se il margine è più del consentito..
        {
            newOffsetH = maxOffsetH;    // ..uso direttamente il massimo consentito.
        }
    } 
    else    // se invece la finestra non consente un margine perché è troppo piccola..
    {
        if (currentWidth > minWidth_shrinkedMode)   //provo a vedere se è abbastanza piccola da aver innescato lo shrinked mode 
        {
            newOffsetH = Math.floor((currentWidth - minWidth_shrinkedMode)/2) + minOffsetH; //calcolo il margine, come prima
            if (newOffsetH > maxOffsetH)
            {
                newOffsetH = maxOffsetH;
            }            
        }
        else    //se non c'è spazio per margini, imposto il minimo (che può essere 0 ma anche un numero di pixel minimi di margine)
        {
            newOffsetH = minOffsetH;
        }
        
    };
    
    /* ...poi con l'ALTEZZA:  */ 

    if (currentHeight > minHeight)
    {
        newOffsetV = Math.floor((currentHeight - minHeight)/2 + minOffsetV);
        if (newOffsetV > maxOffsetV)
        {
            newOffsetV = maxOffsetV;
        }
    } 
    else
    {
            newOffsetV = minOffsetV;       
    };
    
    
    /* QUINTO E ULTIMO: infine applichiamo i margini calcolati.. */
    
    document.getElementById("top").style.paddingLeft = newOffsetH + "px";          
    document.getElementById("mid").style.paddingLeft = newOffsetH + "px";  
    document.getElementById("footer").style.marginRight = newOffsetH - newOffsetH/5 + "px"; 
    document.getElementById("container").style.marginTop = newOffsetV + "px";    
    
}


function hideAllContents_inLeftPane()
{

    /* nasconde tutti i contenuti alternativi nella pagina */

    //  definiamo l'elemento contenitore in cui tutti i contenuti sono raccolti
    var oDiv = document.getElementById('highlight');
    var ids = "";
    
    // contiene a sua volta dei DIV? 
    if(oDiv.firstChild) // ..se sì,,,,
    { 
        var oChild = oDiv.firstChild;
        while(oChild) // ...e li passiamo tutti, uno per uno finchè ce n'è..
        { 
            // l'elemento contenuto può essere di tutto: un DIV, un paragrafo... 
            // bisogna capire se è uno dei contenuti da nascondedere
            // un buon modo è verificare il livello di annidamento e la classe
            // In questo caso indexOf valida sia "content" che "contentshort" che "content flexcroll" (doppia classe CSS)
            
            if(oChild.nodeType==1 && oChild.className.indexOf("content") > -1 ) // corrisponde?
            { 
                /* bene, ora lo nascondo */
                if (oChild.id != "approfondimentismi") {
                	oChild.style.display = "none";    
                	ids = oChild.id;
                } else {
                	ids = oChild.title;
                }
                /* ha anche una voce di menu associata? se sì, andrà deselezionata.. */
                if (document.getElementById("link_"+ids) != null)
                {
                    document.getElementById("link_"+ids).className = null;
                }
            }
            //  ok, avanti il prossimo...
            oChild = oChild.nextSibling;    
       }
    }
 
}


function hideAllContents_inRightPane()
{

    /* cambia la classe dei link a destra */

    var oDiv = document.getElementById('elenco');
    
    if(oDiv.firstChild) 
    { 
        var oChild = oDiv.firstChild;
        while(oChild) 
        { 
		if (oChild.firstChild) {
		  oChild.firstChild.className = null;
		}
            oChild = oChild.nextSibling;    
       }
    }
 
}



function showContent_inLeftPane(quale)
{   
    var scrollDiv = document.getElementById("approfondimentismi");

    /* mostra selettivamente uno dei contenuti tra loro alternativi (quello con id = variabile "quale" )*/

    /* prima di tutto, siccome deve esserne attivo uno solo per volta, li nascondo tutti */
    hideAllContents_inLeftPane();
    if (String(quale).length >= 1)
    {
	/* e poi rendo visibile quello richiesto */
	if (document.getElementById(quale))
	{   
	    document.getElementById(quale).style.display = "block";   
	    if (quale != "scrollingdiv"){
	    	parent.location.hash = "page="+quale;
	    } else {
	    	quale = document.getElementById("approfondimentismi").title;
	    }
	    //alert(quale);
	    /* se ha una voce di menu correlata, la imposto come selezionata.. */
	    if (document.getElementById("link_"+quale) != null)
	    {        
		document.getElementById("link_"+quale).className = "link_visualizzato";

	    }

	    /* se è una delle voci "contentshort" (ad es. nella pagina "chi siamo" occorre che sia visualizzato anche il contenuto introshort.. */
	    if (document.getElementById(quale) != null && document.getElementById(quale).className == "contentshort")
	    {
		document.getElementById("introshort").style.display = "block";
	    };   
	}
	else
	{

	}
    }
    
}


function cercaContenuti()
{
    /* cerca nell'elemento contenitore specificato se sono presenti contenuti, e se sì restituisce un'array  con gli id

    /* specifico l'elemento contenitore (potrei passarlo come parametro, ma per ora serve sempre e solo per highlight.. */
    var oDiv = document.getElementById('highlight');
    
    /* inizializzo l'array.. */
    var conts = new Array();
    
    if (oDiv.firstChild.id == "scrollingdiv") oOdiv = oDiv.firstChild;
    
    /* lo scorro tutto in cerca di contenuti validi, come ho fatto con la funzione hideAllContents.. */
    if(oDiv.firstChild) 
    { 
        var oChild = oDiv.firstChild;
        while(oChild) 
        { 
            if(oChild.nodeType==1 && oChild.className.indexOf("content") > -1)
            { 
                conts.push(oChild.id);  // quando ne trovo uno, lo infilo all'array
            }
            oChild = oChild.nextSibling;
       }
       
       if ((conts.length == 0) || (conts[0] == null) || (String(conts[0]).length <2))
       {
            alert("deve essere specificato un ID per il DIV di classe content in highlight");
       }
       
       return(conts);
    }
}

function estraiPrimoLink(){
    var oDiv = document.getElementById('elenco');
    var oChild = oDiv.firstChild;
    
    if(oDiv.firstChild) 
    { 
        var oChild = oDiv.firstChild;
        oChild = oChild.nextSibling;
     	parent.location.hash = "page="+oChild.firstChild.id.substr(5);
        oChild.firstChild.className = "link_visualizzato";
    }
    
}