/* **************************************************

Variabile globale a livello di pagina

************************************************** */





var _pageVarMenuCollection





/* **************************************************

Metodo invocato dall'evento mouse over

************************************************** */





function over_delay( id )
	{	
		document.getElementById(id).open_dropdown_r_runtime = 0
		document.getElementById(id).open_dropdown_t_runtime = 0
		document.getElementById(id).open_dropdown_h_runtime = -document.getElementById(id).dropdownT.offsetTop
		document.getElementById(id).dropdownD.style.visibility="visible"
		document.getElementById(id).open_tmp = 0
		clearInterval(document.getElementById(id).interval2)			
		document.getElementById(id).interval2 = setInterval("document.getElementById('" + id + "').open_dropdown('"+ id +"')",10)
	}





/* **************************************************

Metodo invocato dall'evento mouse out

************************************************** */





function out_delay( id )
	{
		
	if (!document.getElementById(id).mouse_over_status){
		document.getElementById(id).close_dropdown_r_runtime = 0
		document.getElementById(id).close_dropdown_t_runtime = 0
		document.getElementById(id).close_dropdown_h_runtime = ( document.getElementById(id).dropdownT.offsetTop + document.getElementById(id).dropdownT.clientHeight)-(document.getElementById(id).offsetTop+document.getElementById(id).clientHeight)	
		document.getElementById(id).close_tmp = "Infinity"
		clearInterval(document.getElementById(id).interval2)
		document.getElementById(id).interval2 = setInterval("document.getElementById('" + id + "').close_dropdown('"+ id +"')",10)
		}
	}





/* **************************************************

Apertura dropdown con decelarazione lineare

************************************************** */





function open_dropdown( ID )
	{

	document.getElementById(ID).open_dropdown_t_runtime += 1
	document.getElementById(ID).open_dropdown_r_runtime += ( document.getElementById(ID).openSpeed / 2 ) / ( ( document.getElementById(ID).open_dropdown_h_runtime / document.getElementById(ID).openSpeed ) * 2 )

	if ( ( document.getElementById(ID).open_dropdown_t_runtime * document.getElementById(ID).openSpeed ) - (document.getElementById(ID).open_dropdown_t_runtime * document.getElementById(ID).open_dropdown_r_runtime )  <= document.getElementById(ID).open_tmp || document.getElementById(ID).open_dropdown_h_runtime == 0 || document.getElementById(ID).open_dropdown_h_runtime > document.getElementById(ID).dropdownD.clientHeight){
	document.getElementById(ID).dropdownT.style.top = "0px"
	clearInterval(document.getElementById(ID).interval2)
	return}

	document.getElementById(ID).dropdownT.style.top = -document.getElementById(ID).open_dropdown_h_runtime + (document.getElementById(ID).open_dropdown_t_runtime * document.getElementById(ID).openSpeed )-(document.getElementById(ID).open_dropdown_t_runtime * document.getElementById(ID).open_dropdown_r_runtime) + "px"
	document.getElementById(ID).open_tmp = ( document.getElementById(ID).open_dropdown_t_runtime * document.getElementById(ID).openSpeed ) - (document.getElementById(ID).open_dropdown_t_runtime * document.getElementById(ID).open_dropdown_r_runtime )
	}





/* **************************************************

Chiusura dropdown con decelarazione lineare

************************************************** */





function close_dropdown( ID )
	{
	document.getElementById(ID).close_dropdown_t_runtime += 1
	document.getElementById(ID).close_dropdown_r_runtime += ( document.getElementById(ID).closeSpeed / 2 ) / ( ( document.getElementById(ID).close_dropdown_h_runtime / document.getElementById(ID).closeSpeed ) * 2 )

	if (  document.getElementById(ID).close_dropdown_h_runtime - ( ( document.getElementById(ID).close_dropdown_t_runtime * document.getElementById(ID).closeSpeed ) - ( document.getElementById(ID).close_dropdown_t_runtime * document.getElementById(ID).close_dropdown_r_runtime ) ) >= document.getElementById(ID).close_tmp ){
		document.getElementById(ID).dropdownD.style.visibility = "hidden"
		document.getElementById(ID).dropdownT.style.top =  -document.getElementById(ID).dropdownD.offsetHeight + "px"
		clearInterval(document.getElementById(ID).interval2)
		return}

		document.getElementById(ID).dropdownT.style.top  = - (document.getElementById(ID).dropdownT.clientHeight - document.getElementById(ID).close_dropdown_h_runtime) - ( ( document.getElementById(ID).close_dropdown_t_runtime * document.getElementById(ID).closeSpeed ) - ( document.getElementById(ID).close_dropdown_t_runtime * document.getElementById(ID).close_dropdown_r_runtime ) ) + "px"
		document.getElementById(ID).close_tmp = document.getElementById(ID).close_dropdown_h_runtime - ( ( document.getElementById(ID).close_dropdown_t_runtime * document.getElementById(ID).closeSpeed ) - ( document.getElementById(ID).close_dropdown_t_runtime * document.getElementById(ID).close_dropdown_r_runtime ) )
	}





/* **************************************************

Procedura iniziale invocata al load del documento

************************************************** */





function initialize( menuCollection )
{
_pageVarMenuCollection = menuCollection

window.onload = function(){
	
for(i=0;i< _pageVarMenuCollection.length;i++){
for(ii=0;ii< _pageVarMenuCollection[i].length;ii++){

// Tabella del menù
document.getElementById("menu_"+i+"_div_"+ii).menuT						= document.getElementById("menu_"+i)
// Tabella della dropdown
document.getElementById("menu_"+i+"_div_"+ii).dropdownT					= document.getElementById("menu_"+i+"_panel_table_"+ii)
// Layer della dropdown usato da maschera
document.getElementById("menu_"+i+"_div_"+ii).dropdownD 				= document.getElementById("menu_"+i+"_panel_div_"+ii)
// Assegno alla tabella un riferimento all'oggetto voce di menù
document.getElementById("menu_"+i+"_div_"+ii).dropdownT.parent			= document.getElementById("menu_"+i+"_div_"+ii)
// Velocità di apertura della dropdown
document.getElementById("menu_"+i+"_div_"+ii).openSpeed					= (document.getElementById("menu_"+i+"_div_"+ii).dropdownT.clientHeight / 100) * _pageVarMenuCollection[i][ii].openSpeed
// Velocità di chiusura della dropdown
document.getElementById("menu_"+i+"_div_"+ii).closeSpeed				= (document.getElementById("menu_"+i+"_div_"+ii).dropdownT.clientHeight / 100) * _pageVarMenuCollection[i][ii].closeSpeed
// Variabile temporanea utilizzata per calcolare il punto
// di arrivo della decelerazione in chiusura
document.getElementById("menu_"+i+"_div_"+ii).close_tmp					= 0
// Variabile temporanea utilizzata per calcolare il punto
// di arrivo della decelerazione in apertura
document.getElementById("menu_"+i+"_div_"+ii).open_tmp					= 0
// Variabili utilizzate in runtime, altezza, timing, resistenza
document.getElementById("menu_"+i+"_div_"+ii).close_dropdown_h_runtime	= 0
document.getElementById("menu_"+i+"_div_"+ii).close_dropdown_t_runtime	= 0
document.getElementById("menu_"+i+"_div_"+ii).close_dropdown_r_runtime	= 0
document.getElementById("menu_"+i+"_div_"+ii).open_dropdown_h_runtime	= 0
document.getElementById("menu_"+i+"_div_"+ii).open_dropdown_t_runtime	= 0
document.getElementById("menu_"+i+"_div_"+ii).open_dropdown_r_runtime	= 0
// Timer per il delay e per le animazioni
document.getElementById("menu_"+i+"_div_"+ii).interval1					= 0
document.getElementById("menu_"+i+"_div_"+ii).interval2					= 0
// Stato del puntatore del mouse
document.getElementById("menu_"+i+"_div_"+ii).mouse_over_status			= false
// Ritardo in apertura della dropdown
document.getElementById("menu_"+i+"_div_"+ii).over_delay				= over_delay
// Ritardo in chiusura della dropdown
document.getElementById("menu_"+i+"_div_"+ii).out_delay					= out_delay
// Funzione di apertura dropdown con decelarazione lineare
document.getElementById("menu_"+i+"_div_"+ii).open_dropdown				= open_dropdown
// Funzione di chiusura dropdown con decelarazione lineare
document.getElementById("menu_"+i+"_div_"+ii).close_dropdown			= close_dropdown





// Metodo dell'evento mouseover sulla dropdown
document.getElementById("menu_"+i+"_div_"+ii).dropdownT.onmouseover = function(){
this.parent.mouse_over_status = true
clearInterval(this.interval1)
}





// Metodo dell'evento mouseout sulla dropdown
document.getElementById("menu_"+i+"_div_"+ii).dropdownT.onmouseout = function(){
this.parent.mouse_over_status = false
clearInterval(this.interval1)
this.parent.interval1 = setTimeout("this.parent.out_delay('" + this.parent.id + "')",10)}





// Metodo dell'evento mouseover sulla voce di menù
document.getElementById("menu_"+i+"_div_"+ii).onmouseover = function(){
this.mouse_over_status = true
clearInterval(this.interval1)
this.interval1 = setTimeout("this.over_delay('" + this.id + "')",10)}





// Metodo dell'evento mouseout sulla voce di menù
document.getElementById("menu_"+i+"_div_"+ii).onmouseout = function(){
this.mouse_over_status = false
clearInterval(this.interval1)
this.interval1 = setTimeout("this.out_delay('" + this.id + "')",10)}





// Metodo dell'evento mouseover, mouseout per le sottovoci di menù
for (iii=0;iii<_pageVarMenuCollection[i][ii].dropdown_text.length;iii++){
document.getElementById("menu_"+i+"_panel_"+ii+"_td_"+iii).onmouseover	= function(){this.className = 'dropdownTD_over'}
document.getElementById("menu_"+i+"_panel_"+ii+"_td_"+iii).onmouseout	= function(){this.className = 'dropdownTD'}}
// Posizione iniziale della dropdown rispetto la maschera
document.getElementById("menu_"+i+"_panel_table_"+ii).style.top = -document.getElementById("menu_"+i+"_panel_div_"+ii).clientHeight+"px"}}}}