/* fix IE6 flicker*/
try {
  document.execCommand("BackgroundImageCache", false, true);
} 
catch(err) {
}
/* fix IE6 flicker*/


//individua l'oggetto da cui e' partito l'evento
function individuaOggetto(e)
{ 
	// questa prima parte serve per avere una gestione degli oggetti comune
	if(!e) var e = window.event;
	// e gives access to the event in all browsers

	//questa seconda parte individua l'elemento che ha scatenato l'oggetto
	var targ;

	if(e.target) targ = e.target;
	else if(e.srcElement) targ = e.srcElement;

	if(targ.nodeType == 3) // defeat Safari bug
		targ = targ.parentNode;

	//restituisce l'elemento
	return targ;

}


/***************************** funzione che crea i menu   *****************/

//creo una classe menu
function Menu(menu_id, attivaClick, position, attivaOver, defaultGroup) 
{ 
	/** proprieta' della classe
	menu_id e' il nome del menu: sempre obbligatorio
	attivaClick, attiva l'evidenziazione del menu al click del moude
	attivaOver, attiva l'effetto di visualizzione contenuto al mouse over
	position, indica la posizione del tab attivo
	**/
	this.menu_id = menu_id;
	this.attivaClick = attivaClick;
	this.position = position;
	this.attivaOver = attivaOver;
	this.defaultGroup = defaultGroup;


	/*** metodi della classe ***/

	this.Menu = function Menu() 
	{ 
		//costruttore
		/*** lancio funzioni che costruiscono la classe ***/
		this.inizializzaMenu();
	}


	this.inizializzaMenu = function inizializzaMenu() 
	{
		//se il click e' attivato ed e' il primo elemento, all'inzializzazione del menu,
		//evidenzio il primo tab
		//con position specifico, l'elemento che deve essere attivato

		var elementoEvidenziato = 0; //di default l'elemento evidenzato e' il primo
		
		if(this.position) 
			elementoEvidenziato = this.position;

		varGlobMenu = eval(this.menu_id + 'varGlob = new Array()');
		//creo una variabile globale che ha come nome
		//il nome del menu, e contiene la posizione dell'elemento evidenziato

		//se il menu non necessita mouse over la variabile globale e' settata a 'no'

		varGlobMenu[0] = this.position;		//posizione iniziale
		varGlobMenu[1] = 'no';				//elemento evidenziato
		varGlobMenu[2] = 'no';				//gruppo di default

		if(this.attivaOver) 
		{
			varGlobMenu[1] = this.position;
			
			if(this.defaultGroup) 
				varGlobMenu[2] = this.defaultGroup;
		}

		ancore = document.getElementById(this.menu_id).getElementsByTagName('a');
		lunAncore = ancore.length;


		for (var n=0;n<lunAncore;n++) 
		{
			/***gestione mouse over e mouse out ***/
			if((this.attivaClick) && (n == elementoEvidenziato)) 
			{
				ancore.item(elementoEvidenziato).onmouseover = null;
				ancore.item(elementoEvidenziato).onmouseout = null;
				separaGruppi(ancore.item(elementoEvidenziato).id); //evidenzia il gruppo corrispondente al tab

				if(ancore.item(elementoEvidenziato).className.indexOf('_over') == -1) 
				{
					//se l'elemento e' instato mouse out, lo coloro
					cambiaOver(ancore.item(elementoEvidenziato));
				}
			}
			else 
			{ 
				//se non c'e' il click e si tratta degli altri elementi
				//variabile per vedere se c'e' da attivare il mouse over

				if((((this.attivaClick) && (this.attivaOver)) && ((ancore.item(n).id != '')) || ((ancore.item(n).id == '') && (varGlobMenu[2] != 'no')))) 
				{ 
					//se c'e' da visualizzare gli elementi al mous eover
					ancore.item(n).onmouseover = tabClick;
				}
				else 
				{
					a = ancore.item(n).onmouseover;
					ancore.item(n).onmouseover = tabOver;
				}

				ancore.item(n).onmouseout = tabOut;
			}
			
			/***gestione click ***/
			if(this.attivaClick)
				ancore.item(n).onclick = tabClick;
		}


	  	function tabOver(e)
		{
			//el e' elemento che ha fatto partire l'evento
			//la funzione individuaOggetto(e) e' esterna a questa classe
			var el = individuaOggetto(e); 
			cambiaOver(el);
		}


		function cambiaOver(el) 
		{
			if((el.previousSibling != null) && (el.previousSibling.tagName.toLowerCase() == 'span') && (el.className.indexOf('_over') == -1)) 
			{
				el.className = el.className + '_over';
				el.previousSibling.className = el.previousSibling.className + '_over';
				el.nextSibling.className = el.nextSibling.className + '_over';
			}
			else if(el.id.indexOf('_over') == -1)
				el.id = el.id + '_over';
		}


		function tabOut(e) 
		{
			var el = individuaOggetto(e); //el e' elemento che ha fatto partire l'evento
			cambiaOut(el);
		}


		function cambiaOut(el) 
		{
			//se e' un menu con tab di tre elementi..
			if((el.previousSibling != null) && (el.previousSibling.tagName.toLowerCase() == 'span') && (el.className.indexOf('_over') > 0)) 
			{ 
				el.className = el.className.replace('_over', '');
				el.previousSibling.className = el.previousSibling.className.replace('_over', '');
				el.nextSibling.className = el.nextSibling.className.replace('_over', '');
			}
			else if(el.id.indexOf('_over') > 0) 		//se e' un menu con tab img...
				el.id = el.id.replace('_over', '');
		}


		function controllaClick(e, el, id_menu)
		{
			if(!e) var e = window.event;
				
			var varGlobMenu = eval(id_menu + 'varGlob');
			
			if((varGlobMenu[1] != 'no') && (el.id != ''))
			{
				var anch = document.getElementById(id_menu).getElementsByTagName('a');
				var lunAnch = anch.length;
				for(var m=0;m<lunAnch;m++)
				{
					if(anch.item(m).id == el.id)
						varGlobMenu[1] = m;
				}
			}
		}


		function tabClick(e) 
		{
			var el = individuaOggetto(e); 	//el e' elemento che ha fatto partire l'evento

			controllaClick(e, el, el.parentNode.parentNode.id);
			
			var varGlobMenu = eval(el.parentNode.parentNode.id + 'varGlob');

			//rimuovo mouse over e mouse out dall'elemento:
			el.onmouseover = null;
			el.onmouseout = null;

			cambiaOver(el);

			//la struttura del documento e' UL > LI > A -- noi siamo nell'A

			var ancore = document.getElementById(el.parentNode.parentNode.id).getElementsByTagName('a');
			var lunAncore = ancore.length;

			for(var n=0;n<lunAncore;n++) 
			{
				if(ancore.item(n) != el) 
				{
					//riassegno gli eventi agli altri elementi

					cambiaOut(ancore.item(n)); //riassegno lo stato mout
					
					//controllo che la visualizzazione dei contenuti all'over
					if(((varGlobMenu[1] != 'no') && ((ancore.item(n).id != '')) || ((ancore.item(n).id == '' && varGlobMenu[2] != 'no')))) 
					{	
						//non sia disabilitata e che l'id dell'elemento non sia vuoto
						ancore.item(n).onmouseover = tabClick;
					}
					else
						ancore.item(n).onmouseover = tabOver;

					ancore.item(n).onmouseout = tabOut;
				}
			}

			var elemento = '';

			if(el.id.indexOf('_over') > 0) 
			{ 
				//se l'id dell'elmento contiene '_over'.
				//non puo' succedere per il cambio di classe
				//ma puo' succedere per il cambio di ID.
				//Quindi questo controllo e' utile per la classe MenuID
				//che erdita da questa.
				elemento = el.id.replace('_over', '');
			}
			else if(el.id == '' && varGlobMenu[2] != 'no') 
				elemento = varGlobMenu[2];
			else 
				elemento = el.id;
			
			return separaGruppi(elemento); //funzione che verifica se ci sono da visualizzare dei contenuti
		}
	}

	//lancio il costruttore
	this.Menu(); 
}


/**************************** funzione per la gestione dei gruppi  **************/


function separaGruppi(el_id) 
{
	if(el_id != null) 
	{ 
		//se e' settato l'elemento id
		var temp = (el_id).split('||'); //se all'interno dell'id c'e' || --> i gruppi da ricaricare sono 2 alla volta
		var tempL = temp.length;

		for(var n=0;n<tempL;n++) 
		{
			var ritorno = visualizzaContent(temp[n]);
			
			if(n == tempL - 1)  // se e' l'ultimo elemento dell'id
				return ritorno; // restituisco il valore
		}
	}
	else 
		return true; //se non e' settato l'ID si prosegue con il link
}


function visualizzaContent(el_id) 
{
	//la funzione deve restituire true o false
	//true fa proseguire il link; false ferma il link

	/*** se e' settato l'ID faccio partire le funzioni che cambiano il blocco ***/
	if(el_id.indexOf('-') > 0) 
	{ 
		//se e' settato l'id e se contiene il trattino
		var temp = (el_id).split('-'); //ricavo due parti con: gruppo-blocco

		//gruppo e' un oggetto quindi va trasformato da stringa a oggetto

		var gruppo = eval(temp[0]);
		var blocco = temp[1];

		if(gruppo) 
		{ 
			//se l'oggetto gruppo e' stato creato, rimando al link statico
			gruppo.mostraBlocco(blocco); 	// visualizzo il blocco
			//return false;					// fermo il link
		}
		else 	//se l'oggetto gruppo non e' stato creato proseguo con il link statico
			return true;
	}
}


function overGruppo(gruppo, el_id)
{
	var elementoEvidenziato = el_id;
	
	ancore = document.getElementById(gruppo).getElementsByTagName('a');
	lunAncore = ancore.length;
	//alert(lunAncore);

	for(var n=0;n<lunAncore;n++) 
	{
		/***gestione mouse over e mouse out ***/
		if(n == elementoEvidenziato)
		{
			ancore.item(elementoEvidenziato).onmouseover = null;
			ancore.item(elementoEvidenziato).onmouseout = null;

			if(ancore.item(elementoEvidenziato).className.indexOf('_over') == -1)
			{
				//se l'elemento e' instato mouse out, lo coloro
				//cambiaOver(ancore.item(elementoEvidenziato));
				var el = ancore.item(elementoEvidenziato);
				
				el.className = el.className + '_over';
				/*el.previousSibling.className = el.previousSibling.className + '_over';
				el.nextSibling.className = el.nextSibling.className + '_over';*/
			}
		}
	}	
}


/***************************** funzione che precarica tutte le imgs   *****************/


(function(){
	/*Use Object Detection to detect IE6*/
	var  m = document.uniqueID /*IE*/
	&& document.compatMode  /*>=IE6*/
	&& !window.XMLHttpRequest /*<=IE6*/
	&& document.execCommand ;

	try {
		if(!!m) m("BackgroundImageCache", false, true) /* = IE6 only */
	}
	catch(oh) {};
})();


function preloadImgs(args) 
{
	for(var n=0;n<arguments.length;n++) 
	{
		preloadImg(arguments[n]);
	}

	//funzione che precarica un immagine
	function preloadImg(percorso) 
	{
		var temp = new Image();
		temp.src = percorso;
	}

}


/***************************** funzione per la visualizzazione blocchi   *****************/


function Gruppo(args) 
{
	this.blocchi = Gruppo.arguments;			// assegno all'array "blocchi" i valori passati
	this.lunBlocchi = this.blocchi.length; 		// conto quanti blocchi sono
	
	this.bloccoEsiste = function bloccoEsiste(blocco) 
	{
		//verifico che il blocco faccia parte del gruppo
		//restituisce true se il blocco eiste, false se non esiste
		var esiste = false;
	
		for(var n=0; n < this.lunBlocchi; n++) 
		{
			if(blocco == this.blocchi[n]) 
			{
				esiste = true;
				break;
			}
		}
	
		return esiste;
	}


	this.mostraBlocco = function mostraBlocco(blocco) 
	{
		if(this.bloccoEsiste(blocco) == false) 
			void(0); //se il blocco non esiste non fare niente
		else 
		{
			for(var n=0;n<this.lunBlocchi;n++) 
			{
				if(blocco == this.blocchi[n])
					document.getElementById(this.blocchi[n]).style.display = 'block';
				else
					document.getElementById(this.blocchi[n]).style.display = 'none';
			}
		}
	}
}


/**********************************************************************************************************************/


function inizializzaOverSito(args) 
{
	for(var n=0;n<arguments.length;n++) 
		assegnaStati(arguments[n]);
}


function assegnaStati(elemento) 
{
	var img = document.getElementById(elemento);
	
	if (img != null)
		assegnaQuestoEl(img);
	else
	{
		var imgs = document.getElementsByTagName('img');
		var lunImg = imgs.length;
		
		if(lunImg > 0) 
		{
			for(var i=0;i<lunImg;i++) 
			{
				if(imgs.item(i).className == elemento) 
					assegnaQuestoEl(imgs.item(i));
			}
		}
	}
	
	
	function assegnaQuestoEl(parImg) 
	{
		parImg.onmouseover = cambiaOver();
		parImg.onmouseout = cambiaOut();
	}
}


function cambiaOver() 
{
	swapImg(this, 'over');
}


function cambiaOut() 
{
	swapImg(this, 'out');
}


function swapImg(el, status) 
{
	var pathOver = '/static/img/common/over/on/';
	var pathOut = '/static/img/common/over/off/';
	
	var path = (status == 'out'? pathOut : pathOver);
	var name = (el.id == ''? el.className : el.id);
	el.src = path+name+'.gif';
}


/***** funzione per il discalimer ***/

function controllaCheck() 
{
	if(document.getElementById('disclaBox').checked == false) 
	{
		alert("Ricordati di leggere e accettare il disclaimer");
		return false;
	}
	else
		return true;
}


/******************* funzioni di preload *****************/

function preloadImgs(args) 
{
	for(var n=0;n<arguments.length;n++) 
	{
		preloadImg(arguments[n]);
	}	
	
	//funzione che precarica un immagine
	function preloadImg(percorso) 
	{
		var temp = new Image();
		temp.src = percorso;
	}
}


preloadImgs(
'/static/manzoni/img/common/tabSx.gif',
'/static/manzoni/img/common/tabDx.gif',
'/static/manzoni/img/common/tabSx_over.gif',
'/static/manzoni/img/common/tabDx_over.gif',
'/static/manzoni/img/common/tab_sfondo.gif',
'/static/manzoni/img/common/tab_sfondo_over.gif'
);


function apriFinestra(nomeFinestra,larghezza,altezza,collegamento) 
{
  larghFinestra=larghezza;
  altezFinestra=altezza; 
  sinistra=screen.width-larghFinestra+20;

  alto=(screen.height-larghFinestra)/2; 

  window.open(collegamento,nomeFinestra,'left='+sinistra+',top='+alto+',width='+larghFinestra+',height='+altezFinestra+',location=no, directories=no,menubar=no,toolbar=no,resizable=no');
}
