// creo l'oggetto che gestisce il menÃ¹
// si occupa delle posizioni delle voci e dello stato selezionato/non selezionato

var MenuObj = new Class({

initialize: function(){

	// flag e variabili dell'oggetto
	//elementi HTML list item del menÃ¹
	this.primo=$('menu_azienda');
	this.secondo=$('menu_prodotti');
	this.terzo=$('menu_news_eventi');
	this.quarto=$('menu_designer');
	this.quinto=$('menu_press');
	this.sesto=$('menu_cataloghi');
	this.settimo=$('menu_contatti');
	this.ottavo=$('menu_ricerca');

	this.primo.fx=new Fx.Style(this.primo.id, 'top', {duration:800,transition: Fx.Transitions.Expo.easeOut});
	this.secondo.fx=new Fx.Style(this.secondo.id, 'top', {duration:800,transition: Fx.Transitions.Expo.easeOut,onComplete: 
		(function(){
			this.moovin=false;
			}).bind(this)
		});
	this.terzo.fx=new Fx.Style(this.terzo.id, 'top', {duration:800,transition: Fx.Transitions.Expo.easeOut});
	this.quarto.fx=new Fx.Style(this.quarto.id, 'top', {duration:800,transition: Fx.Transitions.Expo.easeOut});
	this.quinto.fx=new Fx.Style(this.quinto.id, 'top', {duration:800,transition: Fx.Transitions.Expo.easeOut});
	this.sesto.fx=new Fx.Style(this.sesto.id, 'top', {duration:800,transition: Fx.Transitions.Expo.easeOut});
	this.settimo.fx=new Fx.Style(this.settimo.id, 'top', {duration:800,transition: Fx.Transitions.Expo.easeOut});
	this.ottavo.fx=new Fx.Style(this.ottavo.id, 'top', {duration:800,transition: Fx.Transitions.Expo.easeOut});

	this.voci=new Array(this.primo,this.secondo,this.terzo,this.quarto,this.quinto,this.sesto,this.settimo,this.ottavo);
	// stato ->
	//		riposo: menÃ¹ in fase iniziale
	//		2up: sottovoci c e hs visibili
	//		sottomenu_c_hs: sottomenÃ¹ contract o home selection visibili
	//		contract_up: voce contract selezionata
	//		home_selection_up: voce home_selection selezionata
	this.stato='riposo';

	// stato dei movimenti
	this.moovin=false;

	// in questo ciclo assegno la proprietÃ  di "selezionato" (selected) a quell'elemento che si ritrova una classe 'selected'
	// inoltre assegno le proprietÃ  mouseover e mouseout
	this.voci.each(function(element){
		element.selected=(element.hasClass('selected'))?true:false;
		if(!element.selected) element.addEvent('mouseover',function(){
			if(!element.selected) element.addClass('selected');
		});
		if(!element.selected) element.addEvent('mouseout',function(){
			if(!element.selected) element.removeClass('selected');
		});
	});

	// array con le posizioni iniziali delle voci di menÃ¹
	this.reset_pos=new Array(34,68,102,136,397,431,465,499);
	this.prodotti_pos=new Array(0,34,102,136,397,431,465,499);
	this.sottomenu_c_hs_pos=new Array(0,17,393,421,449,477,505,533);
}

});

MenuObj.implement({
	reset: function(){
		for(i=0;i<8;i++){
			this.voci[i].fx.set(this.reset_pos[i]);
		}
	},
	
	// metodo che deve ricevere in input un array con 8 posizioni
	// immediato -> booleano
	//			true: il posizionamento Ã¨ istantaneo Ã¨ immediata
	//			false: il posizionamento avviene attraverso effetto Transition
	setPosition: function(array,immediato){
		for(i=0;i<8;i++){
			if(immediato) {
				this.voci[i].fx.set(array[i]);
				this.moovin=false;
				}
			else this.voci[i].fx.start(array[i]);
		}
	},
	setStatusRiposo: function(immediato){
		if ((this.stato!='riposo')&&(!this.moovin)){
			this.moovin=true;
			this.setPosition(this.reset_pos,immediato);
			this.stato='riposo';
			// se "prodotti" non era selezionato dall'inizio, allora lo deseleziono
			this.secondo.selected=false;
			this.secondo.removeClass('selected');
		}
	},
	setStatus2up: function(immediato){
		if ((this.stato!='2up')&&(!this.moovin)){
			this.moovin=true;
			this.setPosition(this.prodotti_pos,immediato);
			this.stato='2up';
		}
	},
	setStatusSottomenuUp: function(immediato){
		if ((this.stato!='sottomenu_c_hs')&&(!this.moovin)){
			this.moovin=true;
			this.setPosition(this.sottomenu_c_hs_pos,immediato);
			this.stato='sottomenu_c_hs';
		}
	}
});


// oggetto sottomenÃ¹ contract e home selection
// apparizione e sparizione delle due voci, singoarmente o assieme
// gestione dello stato
var SottoMenuObj = new Class({

initialize: function(){
	this.contract=$('menu_contract');
	this.home_selection=$('menu_home_selection');
	this.contract.fx=new Fx.Styles(this.contract.id, {duration:800,wait: false,transition: Fx.Transitions.Expo.easeOut,onComplete: 
		(function(){
			this.moovin=false;
			}).bind(this)
		});
	this.home_selection.fx=new Fx.Styles(this.home_selection.id, {duration:800,wait: false,transition: Fx.Transitions.Expo.easeOut,onComplete: 
		(function(){
			this.moovin=false;
			}).bind(this)
		});
	// stato ->
	//		hidden: sottomenÃ¹ nascosto
	//		2up: menÃ¹ visibile con entrambe le voci
	//		contract_up: voce contract selezionata
	//		home_selection_up: voce home_selection selezionata
	this.stato='hidden';

	// stato dei movimenti
	this.moovin=false;
	
	this.voci=new Array(this.contract,this.home_selection);
	this.voci.each(function(element){
		element.selected=(element.hasClass('sub_selected'))?true:false;
		if(!element.selected) element.addEvent('mouseover',function(){
			if(!element.selected) element.addClass('sub_selected');
		});
		if(!element.selected) element.addEvent('mouseout',function(){
			if(!element.selected) element.removeClass('sub_selected');
		});
	});

}
});

SottoMenuObj.implement({

	// immediato -> booleano
	//			true: il posizionamento Ã¨ istantaneo Ã¨ immediata
	//			false: il posizionamento avviene attraverso effetto Transition
	appear:function(immediato){
		if((this.stato!='2up')&&(!this.moovin)){
			this.moovin=true;
			if(!immediato){
				this.contract.fx.start({'top': 51});
				this.home_selection.fx.start({'top': 68});
			}else{
				this.contract.fx.set({'top': 51});
				this.home_selection.fx.set({'top': 68});
				this.moovin=false;
			}
			this.stato='2up';
		}
	},
	disappear:function(immediato){
		if((this.stato!='hidden')&&(!this.moovin)){
			this.moovin=true;
			if(!immediato){
				this.contract.fx.start({'top': 68});
				this.home_selection.fx.start({'top': 68});
			}else{
				this.contract.fx.set({'top': 68});
				this.home_selection.fx.set({'top': 68});
				this.moovin=false;
			}
			this.stato='hidden';
		}
	},
	set_contract: function(immediato){
		if((this.stato!='contract_up')&&(!this.moovin)){
			this.moovin=true;
			this.contract.style.zIndex='10';
			this.home_selection.style.zIndex='5';
			if(!immediato){
				this.contract.fx.start({'top': 34});
				this.home_selection.fx.start({'top':17});
			}else {
				this.contract.fx.set({'top': 34});
				this.home_selection.fx.set({'top':17});
				this.moovin=false;
			}
			this.stato='contract_up';
		}
	},
	set_home_selection: function(immediato){
		if((this.stato!='home_selection_up')&&(!this.moovin)){
			this.moovin=true;
			this.contract.style.zIndex='5';
			this.home_selection.style.zIndex='10';
			if(!immediato){
				this.home_selection.fx.start({'top': 34});
				this.contract.fx.start({'top': 17});
			} else {
				this.home_selection.fx.set({'top': 34});
				this.contract.fx.set({'top': 17});
				this.moovin=false;
			}
			this.stato='home_selection_up';
		}
	}

});


// OGGETTI PER LE DUE SOTTOVOCI TIPOLOGIE CONTRACT E HOME SELECTION
var SottomenuTipologieObj = new Class({
initialize: function(){

this.position_contract=$('elenco_contract');
this.position_home_selection=$('elenco_home_selection');
this.contract_height=$('elenco_contract').getSize().size.y;
this.home_selection_height=$('elenco_home_selection').getSize().size.y;
this.fx_contract= new Fx.Styles(this.position_contract.id, {duration:800,wait: false,transition: Fx.Transitions.Expo.easeOut,onComplete: 
		(function(){
			this.moovin=false;
			}).bind(this)
		});
this.fx_home_selection= new Fx.Styles(this.position_home_selection.id, {duration:800,wait: false,transition: Fx.Transitions.Expo.easeOut,onComplete: 
		(function(){
			this.moovin=false;
			}).bind(this)
		});
// stato ->
//		hidden: sottomenÃ¹ nascosto
//		contract_up: sottomenÃ¹ contract visibile
//		home_selection_up: sottomenÃ¹ home_selection visibile
this.stato='hidden';

// stato dei movimenti
this.moovin=false;

this.voci=$$('#elenco_contract li');
this.voci.extend($$('#elenco_home_selection li'));

this.voci.each(function(element){
	element.selected=(element.hasClass('selected'))?true:false;
	if(!element.selected) element.addEvent('mouseover',function(){
		if(!element.selected) element.addClass('selected');
	});
	if(!element.selected) element.addEvent('mouseout',function(){
		if(!element.selected) element.removeClass('selected');
	});
});



this.fx_contract.set({'opacity':0,'height':0});
this.fx_home_selection.set({'opacity':0,'height':0});
}
});

SottomenuTipologieObj.implement({

	appear_contract:function(immediato){
		if((this.stato!='contract_up')&&(!this.moovin)){
			$('elenco_contract').style.zIndex='1';
			this.disappear_home_selection();
			this.stato='contract_up';
			this.moovin=true;
			if(!immediato){
				this.fx_contract.start({
						'top':51,
						'opacity': 1,
						'height':this.contract_height
				});
			} else {
				this.fx_contract.set({
					'top':51,
					'opacity': 1,
					'height':this.contract_height
				});
			this.moovin=false;
		}
	this.stato='contract_up';
	}
},

	appear_home_selection:function(immediato){
		if((this.stato!='home_selection_up')&&(!this.moovin)){
			$('elenco_home_selection').style.zIndex='1';
			this.disappear_contract();
			this.stato='home_selection_up';
			this.moovin=true;
			if(!immediato){
				this.fx_home_selection.start({
					'top':51,
					'opacity': 1,
					'height':this.home_selection_height
				});
			}else {
				this.fx_home_selection.set({
					'top':51,
					'opacity': 1,
					'height':this.home_selection_height
				});
			this.moovin=false;
		}
	this.stato='home_selection_up'
	}
},
	disappear_contract:function(){
		if((this.stato=='contract_up')&&(!this.moovin)){
			$('elenco_contract').style.zIndex='0';
			this.fx_contract.start({
				'top':68,
				'height':1
			});
		this.stato='hidden';
	}
},

	disappear_home_selection:function(){
		if((this.stato=='home_selection_up')&&(!this.moovin)){
			$('elenco_home_selection').style.zIndex='0';
			this.fx_home_selection.start({
				'top':68,
				'height':1
			});
		this.stato='hidden';
	}
},
	disappear_all: function(){
		if(this.stato!='hidden'){
			this.disappear_contract();
			this.disappear_home_selection();
			this.stato='hidden';
		}
}

});

var STOP_MENU=($('black_strip'))?true:false;
var MENU;
var SOTTOVOCI_C_HS;
var SOTTOMENU_C_HS;

function nascondi_sottovoci(){
	if($('menu_nome_tipologia')) $('menu_nome_tipologia').effect('opacity', {
		duration: 800,wait:false,
			transition: Fx.Transitions.Expo.easeOut,
			onComplete: function(){
				$('menu_nome_tipologia').remove();
			}
		}).start(0);
	if($('menu_nome_famiglia')) $('menu_nome_famiglia').effect('opacity', {
		duration: 800,wait:false,
			transition: Fx.Transitions.Expo.easeOut,
			onComplete: function(){
				$('menu_nome_famiglia').remove();
			}
		}).start(0);
	if($('menu_link_flash')) $('menu_link_flash').effect('opacity', {
		duration: 800,wait:false,
			transition: Fx.Transitions.Expo.easeOut,
			onComplete: function(){
				$('menu_link_flash').remove();
			}
		}).start(0);
}

function comandi_nascondi_sottovoci(){
	//MENU.secondo.addEvent('click',function(){
	//	nascondi_sottovoci();
	//});

if(SOTTOVOCI_C_HS.contract.getElement('a').rel=='stop'){
	SOTTOVOCI_C_HS.contract.addEvent('click',function(){
		nascondi_sottovoci();
	});
}
if(SOTTOVOCI_C_HS.home_selection.getElement('a').rel=='stop'){
	SOTTOVOCI_C_HS.home_selection.addEvent('click',function(){
		nascondi_sottovoci();
	});
}

}

window.addEvent('domready',function(){

// istanzio gli oggetti per il menÃ¹
MENU=new MenuObj();
SOTTOVOCI_C_HS=new SottoMenuObj();
SOTTOMENU_C_HS=new SottomenuTipologieObj();

// metto le voci nella posizione iniziale
MENU.reset();

// CLICK ALLA VOCE PRODOTTI
/*MENU.secondo.addEvent('click',function(e){
	if(!STOP_MENU){
		if(!MENU.secondo.selected){
			MENU.secondo.addClass('selected');
			MENU.secondo.selected=true;
		}
		if(MENU.stato!='riposo') {
			MENU.setStatusRiposo(false);
			SOTTOMENU_C_HS.disappear_all();
			SOTTOVOCI_C_HS.disappear(false);
		}else {
			MENU.setStatus2up(false);
			SOTTOVOCI_C_HS.appear(false);
		}
		
	} else new Event(e).stop();
});*/

// CLICK CONTRACT E HOME SELECTION
// le faccio muovere solo se non i link all'interno non puntano a niente
if(SOTTOVOCI_C_HS.contract.getElement('a').rel=='stop'){
	SOTTOVOCI_C_HS.contract.addEvent('click',function(){
		if(!SOTTOVOCI_C_HS.moovin){
			if(SOTTOVOCI_C_HS.stato=='2up'){
				SOTTOVOCI_C_HS.set_contract(false);
				SOTTOMENU_C_HS.appear_contract(false);
				MENU.setStatusSottomenuUp(false);
			} else {
				MENU.setStatus2up(false);
				SOTTOVOCI_C_HS.appear(false);
				SOTTOMENU_C_HS.disappear_contract();
			}
		}
	});
}

if(SOTTOVOCI_C_HS.home_selection.getElement('a').rel=='stop'){
	SOTTOVOCI_C_HS.home_selection.addEvent('click',function(){
		if(!SOTTOVOCI_C_HS.moovin){
			if(SOTTOVOCI_C_HS.stato=='2up'){
				SOTTOVOCI_C_HS.set_home_selection(false);
				SOTTOMENU_C_HS.appear_home_selection(false);
				MENU.setStatusSottomenuUp(false);
			} else {
				MENU.setStatus2up(false);
				SOTTOVOCI_C_HS.appear(false);
				SOTTOMENU_C_HS.disappear_home_selection();
			}
		}
	});
}

window.fireEvent('menuready');	// lancio un evento che mi indica che il menÃ¹ Ã¨ pronto

});
