// JavaScript Document

(function($){//funzione ricorsiva			
	
	var tmo = 0;//timeout della pulsazione	
	var pag_corrente = 'home';//pagina corrente
	var l, t;//valori di left e top
	
	//Valori di default della home, box, pulsanti ed animazioni (->anima_div)
	var def = {btn : {'width':85,'height':25},//dimensione dei pulsanti deve essere uguale al css (bordo e boxes)
							box1 : {'width':484,'height':300,'w-close':30,'pos':0,'left':470,'top':140},//dimensioni del box1-chiuso
							//box2 : {'width':275,'height':135,'left':532,'top':460},//dimensione posizione dei boxX e... (width & height)
							box2 : {'width':350,'height':350,'left':532,'top':460},//dimensione posizione dei boxX e... (width & height)
							box3 : {'width':300,'height':270,'left':632,'top':460},//...posizione iniziale pulsanti (left & top)
							box4 : {'width':120,'height':288,'left':732,'top':460},
							box5 : {'width':472,'height':384,'left':832,'top':460},
							aniniz : 70//movimento iniziale del pulsante
			};//fine dim_boxes
			
	$.fn.anidivs = function(options){//inizializzazione del controllo
		//opzioni del controllo
		var config = {time_puls:1200};
		
		//estensione del settaggio del controllo
		if (options) $.extend(config,options)
		
		//distanza dai bordi del div page
		def.box1['pos'] = (($(window).width() - $('#page').width()) /2) + $('#page').width() - def.box1['w-close'];
		
		//metodi del controllo
		$.extend({
			eventi : function(){//eventi del controllo				
				
				$('.boxes').bind('click',function(){

					clearInterval(tmo);//interrompo la pulsazione
					
					$.anima_div($(this));//avvio la funzione di gestione dell'animazione
										
				});//fine click
							
				$('.actived').bind('mouseenter',function(){
					if(!$(this).hasClass('actived')) return -1;//se non č attivo esce dalla function
					
					var	tm= 0,//timeout
							$bordo = $(this).find('.bordo');//oggetto bordo
					
					if (tm == 0){//animazione della pulsazione
						$bordo.animate({width:'+=4px',height:'+=4px','margin-left':'-=2px','margin-top':'-=2px'});
						$bordo.animate({width:'-=4px',height:'-=4px','margin-left':'+=2px','margin-top':'+=2px'});
					}//fine if
					
					tm = config.time_puls;//valore del timeout
					
					tmo = setInterval(function(){//imposto l'intervallo per le animazioni
						$bordo.animate({width:'+=4px',height:'+=4px','margin-left':'-=2px','margin-top':'-=2px'});
						$bordo.animate({width:'-=4px',height:'-=4px','margin-left':'+=2px','margin-top':'+=2px'});
					},tm);//fine intervallo
				})//fine mouse enter
				
				.bind('mouseleave',function(){
					clearInterval(tmo);//interrompe la pulsazione
				});//fine mouse leave
				
			},//fine eventi
			index_box_open : function(){//rileva il box aperto
				var index = null;// indice del div
				
				index = $('.boxes').index($('.boxes').filter('.open'))
				
					/*$('.boxes').each(function(i,el){//ciclo i divs
						if ($(el).hasClass('open')) index = i;//rilevo il box aperto
					});//fine each*/
				
				return index;//restituisco l'index
			},//fine indice del menu aperto
			anima_div : function($this){//animazioni dei div
				switch (pag_corrente){
					case 'home'://menu: home
						var index = $('.boxes').index($this),//indice del box cliccato
								$bordo = null,//oggetto bordo del box cliccato
								$btn = null,//oggetto button
								p = null,//posizione del button
								index_open = $.index_box_open(),//l'index del box aperto
								flag = false;//flag box aperto
						
						var dim = $.extend(dim,def);//memorizzo i valori di default

						if (index_open == index) return -1;//se clicco sul box aperto esce dalla funzione
						
						//se c'č un div aperto...(default Box 1)
						if (index_open != -1){//...prima chiude quello ed attiva un "callback" per l'animazione corrente (box cliccato)
							var new_index = index;//memorizza l'index del box cliccato
							
							flag = true;//imposta il flag (callback)
							
							index = index_open;//imposta l'index del box aperto
							$this = $('.boxes').eq(index_open);//il box aperto
						}//fine if
													
						//alert(index)
																
						if (index > 0){
							$btn = $this.parents('.buttons');//imposta l'oggetto button
							$btn.stop(true,false).toggleClass('actived');//applica/rimuove la classe "actived"
							p = $btn.position();//posizione del btn rispetto al suo contenitore
							
							$bordo = $btn.find('.bordo');//bordo del box cliccato
							$bordo.hide();//nascondo il bordo del pulsante
						}//fine if
						
						$this.stop(true,false);
						
							switch (index){
								case 0://box 1 - PRESENTAZIONE
									if (!$this.hasClass('open')){//se č chiuso...
										$('#v_label').fadeOut('normal',function(){
											$this.animate({'width':dim.box1['width'],'left':dim.box1['left']},'slow','linear',function(){
												$this.find('div.content').fadeIn('normal');
											});//fine animate
										});//fine fadeOut
									}else{//...se č aperto...
										if (!dim.box1['pos']) dim.box1['pos'] = 1087.5;//fix bug
										
										$this.find('div.content').fadeOut('normal', function(){
											$this.animate({'width':dim.box1['w-close'],'left':dim.box1['pos']},'slow','linear', function(){
												if (flag){//anima il box cliccato
													$('#v_label').fadeIn('normal');
													$.anima_div($('.boxes').eq(new_index));
												}//fine if																																						 
											});//fine animate
										});//fine fade Out
									}//fine if
									break;
								case 1://box 2 - NEWS
									if (!$this.hasClass('open')){//se č chiuso...
										$this.width(dim.box2['width']).height(dim.box2['height'])
											.find('div').fadeOut('normal')
											
											$btn.css({'overflow':'hidden'})
												.animate({'height':dim.aniniz,'top': p.top - (dim.aniniz - dim.btn['height'])},'slow','linear')
												.animate({'height':dim.btn['height']},'slow','linear')
												.animate({'height':dim.box2['height'],'top':p.top - dim.box2['height'] - dim.btn['height']},'slow','linear')
												.animate({'width':dim.box2['width'],'left':p.left - (dim.box2['width'] - dim.btn['width'])},'slow','linear',function(){
													$this.find('div.content').fadeIn('normal');
												});//fine animate
									}else{//se č aperto...
										$this.find('div.label').fadeOut('normal');
										$this.find('div.content').fadeOut('normal',function(){
											$btn.animate({'width':dim.btn['width'],'left':dim.box2['left']},'slow','linear')
												.animate({'height':dim.btn['height'],'top': dim.box2['top'] - (dim.aniniz - dim.btn['height'])},'slow','linear')
												.animate({'height':dim.aniniz},'slow','linear')
												.animate({'height':dim.btn['height'],'top':dim.box2['top']},'slow','linear',function(){
													$bordo.show();
													$this.width(dim.btn['width']).height(dim.btn['height'])
														.find('div.label').fadeIn('normal');
												
													$btn.css({'overflow':''});
												
														if (flag){//anima il box cliccato
															$.anima_div($('.boxes').eq(new_index));
														}//fine if
												});//fine animate
										});//fine fade out
									}//fine if
									break;
								case 2://box 3 - MENU
									if (!$this.hasClass('open')){			
										$this.width(dim.box3['width']).height(dim.box3['height'])
											.find('div').fadeOut('normal')
										
										$btn.css({'overflow':'hidden'})
											.animate({'height':dim.aniniz,'top': p.top - (dim.aniniz - dim.btn['height'])},'slow','linear')
											.animate({'height':dim.btn['height']},'slow','linear')
											.animate({'height':dim.box3['height'],'top': p.top - dim.box3['height'] - dim.btn['height'],
																'width':dim.box3['width'],'left': p.left - (dim.box3['width'] - dim.btn['width'])},'slow','linear',function(){
												$this.find('div.content').fadeIn('normal');
											});//fine animate
									}else{//...se č aperto...
										$this.find('div.label').fadeOut('normal');
										$this.find('div.content').fadeOut('normal',function(){
											$btn.animate({'height':dim.btn['height'],'top': dim.box3['top'] - (dim.aniniz - dim.btn['height']),
																			'width':dim.btn['width'],'left':dim.box3['left']},'slow','linear')
												.animate({'height':dim.aniniz},'slow','linear')
												.animate({'height':dim.btn['height'],'top':dim.box3['top']},'slow','linear',function(){
													$bordo.show();
													$this.width(dim.btn['width']).height(dim.btn['height'])
														.find('div.label').fadeIn('normal');
													
													$btn.css({'overflow':''});
													
														if (flag){//anima il box cliccato
															$.anima_div($('.boxes').eq(new_index));
														}//fine if
												});//fine animate
										});//fine fade out
									}//fine if
									break;
								case 3://box 4 - FOTO
									if (!$this.hasClass('open')){	
										$this.width(dim.box4['width']).height(dim.box4['height'])
											.find('div').fadeOut('normal');
											
										$btn.css({'overflow':'hidden'})
											.animate({'height':dim.aniniz,'top': p.top - (dim.aniniz - dim.btn['height'])},'slow','linear')
											.animate({'height':dim.btn['height']},'slow','linear')
																			
											.animate({'height':dim.box4['height'],'top': p.top - dim.box4['height'] - dim.btn['height']},'slow','linear')
											.animate({'width':dim.box4['width'],'left': p.left - ((dim.box4['width'] / 2) - (dim.btn['width'] / 2))},'slow','linear',function(){
												$this.find('div.content').fadeIn('normal');
											});//fine animate
									}else{//...se č aperto...
										$this.find('div.label').fadeOut('normal');
										$this.find('div.content').fadeOut('normal',function(){
											$btn.animate({'width':dim.btn['width'],'left':dim.box4['left']},'slow','linear')
												.animate({'height':dim.btn['height'],'top': dim.box4['top'] - (dim.aniniz - dim.btn['height'])},'slow','linear')
			
												.animate({'height':dim.aniniz},'slow','linear')
												.animate({'height':dim.btn['height'],'top':dim.box4['top']},'slow','linear',function(){
													$bordo.show();
													$this.width(dim.btn['width']).height(dim.btn['height'])
														.find('div.label').fadeIn('normal');
													
													$btn.css({'overflow':''});
													
														if (flag){//anima il box cliccato
															$.anima_div($('.boxes').eq(new_index));
														}//fine if
														
												});//fine animate
										});//fine fade out
									}//fine if
									break; 
								case 4://box 5 - VIDEO
									if (!$this.hasClass('open')){
										l = p.left - dim.box5['width'] / 2 - 100;
										t = p.top - dim.box5['height'] / 2 - 25;

										$this.width(dim.box5['width']).height(dim.box5['height'])
											.find('div').fadeOut('normal');
										
										$btn.css({'overflow':'hidden'})
											.animate({'height':dim.aniniz,'top': p.top - (dim.aniniz - dim.btn['height'])},'slow','linear')
											.animate({'height':dim.btn['height']},'slow','linear')
											
											.animate({'left': l},'slow','swing')
											.animate({'top': t},'slow','swing')
											
											.animate({'height':dim.box5['height'],'top': t - dim.box5['height'] / 2},'slow','linear')
											.animate({'width':dim.box5['width'],'left': l - dim.box5['width'] / 2},'slow','linear',function(){
												$this.find('div.content').fadeIn('normal');
										});//fine animate
									}else{//...se č aperto...
										//p = $btn.position();//aggiorno la posizione del box
										
										$this.find('div.label').fadeOut('normal');
										$this.find('div.content').fadeOut('normal',function(){
											$btn.animate({'width':dim.btn['width'],'left': l + dim.btn['width'] / 2},'slow','linear')
												.animate({'height':dim.btn['height'],'top': t + dim.btn['height'] / 2},'slow','linear', function(){$btn.css({'overflow':'hidden'});})
												
												
												.animate({'left':dim.box5['left']},'slow','swing')
												.animate({'top':dim.box5['top'] - (dim.aniniz - dim.btn['height'])},'slow','linear')
												
												.animate({'height':dim.aniniz},'slow','linear')
												.animate({'height':dim.btn['height'],'top':dim.box5['top']},'slow','linear',function(){
													$bordo.show();
													$this.width(dim.btn['width']).height(dim.btn['height'])
														.find('div.label').fadeIn('normal');
													
													$btn.css({'overflow':''});
													
														if (flag){//anima il box cliccato
															$.anima_div($('.boxes').eq(new_index));
														}//fine if
														
												});//fine animate
										});//fine fade out
									}//fine if
								break;
							}//fine switch index
								
					$this.toggleClass('open');//applica/rimuove la classe open dal box
					break;
				}//fine switch pagina
			},//fine anima divs
			/*tutti i menu con le animazioni
				switch (pag_corrente){
					case 'home'://menu: home
					case 'krug'://menu partnership: sottomenu -> krug
					case 'cavaliere'://- sottomenu -> cavaliere dello champagne
					case 'archifood'://- sottomenu -> archifood
					case 'birra_e'://menu: eventi - sottomenu -> serata birra
					case 'krug_e'://- sottomenu -> krug
					case 'ristorante_g'://menu: attivitā -> sottomenu ristorante
					case 'chef'://- sottomenu chef a domicilio
					case 'crudo'://- sottomenu non solo crudo
				}//fine switch
			//fine menu*/
			refresh_page : function(id){//aggiorna la pagina corrente con quella selezionata
				//se la pagina č diversa da quella corrente viene aggiornata
				if (id != pag_corrente){
				
					pag_corrente = id;//memorizzo la pagina corrente
					//nascondo tutti i contenuti dei box
					
					$('.boxes div').each(function(i,el){
						$(el).fadeOut('fast')
					});//fine each
					
					$.posiziona_boxes();//ri-posiziona i box nella pagina
				}//fine if
			},//fine set pagina corrente
			get_page: function(){//restiruisce la pagina corrente
				return pag_corrente;
			},//fine get page
			gestione_box : function(){
			//Mostra/Nasconde i box che non dovranno comparire o meno nella pagina
				
				switch (pag_corrente){//menu / sotto-menu...
					case 'kmvero'://menu: km vero
					case 'krug'://menu: partnership -> sottomenu krug
					case 'cavaliere'://- sottomenu cavaliere dello champagne
					case 'archifood'://- sottomenu archifood
						/*$('#box4, #box5').addClass('hide');
						break;*/
					case 'birra_e'://menu: eventi -> sottomenu serata birra
					case 'krug_e'://- krug
					case 'cavaliere_e'://- sottomenu cavaliere dello champagne
					case 'video'://menu: video
					case 'tavolo'://menu: menu -> sottomenu tavolo
					case 'cantina'://menu: menu -> sottomenu cantina
					case 'ristorante_g'://menu: attivitā -> sottomenu ristorante
					case 'chef'://- sottomenu chef a domicilio
					case 'crudo'://- sottomenu non solo crudo
					case 'dove'://menu: dove trovarci
					case 'birra'://- sottomenu birra
						$('#box3, #box4, #box5').addClass('hide');
						break;
					case 'ristorante'://menu: gallery -> sottomenu ristorante
					case 'piatti'://- sottomenu piatti
					case 'amici'://- sottomenu amici
					case 'eventi'://- sottomenu eventi
					case 'champagne'://- sottomenu cavalierato dello champagne
						$('#box2, #box3, #box4, #box5').addClass('hide');
						break;
				}//fine switch
				
					$('div[id^="box"]').each(function(i,el){
						if (!$(el).hasClass('hide')){
							$(el).fadeIn('slow').find('.content').html('').end();//azzero tutti i contenuti dei boxes;
						}else{
							$(el).hide();
						}//fine if
					})//fine each
					
					.removeClass('hide');//rimuove la classe
				
			},//fine gestione box
			posiziona_boxes : function(){//ri-posiziona le finestre nella pagina corrente
				
				$.gestione_box();//nasconde/mostra i div necessari per il menu selezionato 																								
				
				$('.buttons').stop(true,true).removeClass('actived');//rimuove la classe da tutti i buttons
				$('.boxes').stop(true,true).removeClass('open');//rimuove la classe da tutti i boxes
				
				$('.bordo').hide();//nasconde tutti i bordi
				
				switch (pag_corrente){//menu / sotto-menu...
					case 'home'://menu: home
						var id = '';
							//ripristina le impostazioni iniziali (Pagina -> Home)
							$('.buttons').each(function(i,el){
								$(el).addClass('actived').find('.boxes').animate({'width':def.btn['width'],'height':def.btn['height']})
								id = 'box' + (i + 2);
								$(el).animate({'left':def[id]['left'],'top':def[id]['top']})
							});//fine each
							
						$('.bordo').show();//mostra i bordi di tutti i pulsanti
						break;
					case 'kmvero'://menu: km vero
						//dimensioni e posizione dei box
						var vals = {//box1 : {'width':484,'height':300,'w-close':30,'pos':0,'left':470,'top':140},
												box2 : {'width':100,'height':50,'left':532,'top':460},
												box3 : {'width':100,'height':50,'left':672,'top':460}
								};//fine dim_boxes
						
						$('#box2').animate({'left':vals.box2['left'],'top':vals.box2['top']})
							.find('.boxes').addClass('open').animate({'width':vals.box2['width'],
																																				'height':vals.box2['height']},'normal','linear');
						$('#box3').animate({'left':vals.box3['left'],'top':vals.box3['top']})
							.find('.boxes').addClass('open').animate({'width':vals.box3['width'],
																															'height':vals.box3['height']},'normal','linear');
						break;
					case 'video'://menu: video
						//dimensioni e posizione dei box
						var vals = {box1 : {'width':472,'height':384,'left':482,'top':140},
												box2 : {'width':205,'height':130,'left':257,'top':140}
						};//fine dim_boxes
						
						$('#box2').animate({'left':vals.box2['left'],'top':vals.box2['top']})
							.find('.boxes').addClass('open').animate({'width':vals.box2['width'],
																												'height':vals.box2['height']},'normal','linear');
						break;
					case 'ristorante'://menu: gallery -> sottomenu ristorante
					case 'piatti'://- sottomenu piatti
					case 'amici'://- sottomenu amici
					case 'eventi'://- sottomenu eventi
					case 'champagne'://- sottomenu cavalierato dello champagne
						//re-imposta le dimensioni del box1
						var vals = {box1 : {'width':484,'height':405,'left':470,'top':100}};//fine dim_boxes
						
						break;
					case 'tavolo'://menu: menu -> sottomenu tavolo
					case 'cantina'://- sottomenu cantina
						//dimensioni e posizione dei box
						var vals = {box1 : {'width':484,'height':400,'left':470,'top':100},
												box2 : {'width':160,'height':52,'left':470,'top':520}
								};//fine dim_boxes						
						
						$('#box2').animate({'left':vals.box2['left'],'top':vals.box2['top']})
							.find('.boxes').addClass('open').animate({'width':vals.box2['width'],
																												'height':vals.box2['height']},'normal','linear');
						break;
					case 'birra'://sottomenu birra
						//dimensioni e posizione dei box
						var vals = {box2 : {'width':120,'height':300,'left':330,'top':140}
								};//fine dim_boxes						
						
						$('#box2').animate({'left':vals.box2['left'],'top':vals.box2['top']})
							.find('.boxes').addClass('open').animate({'width':vals.box2['width'],
																												'height':vals.box2['height']},'normal','linear');
						break;
					case 'krug'://menu: partnership -> sottomenu krug
					//case 'cavaliere'://- sottomenu cavaliere dello champagne
					//case 'archifood'://- archifood
						//dimensioni e posizione dei box
						var vals = {box1 : {'width':442,'height':400,'left':512,'top':140},
												box2 : {'width':120,'height':300,'left':372,'top':140}//,//dimensione posizione dei boxX
												//box3 : {'width':60,'height':25,'left':632,'top':460}
								};//fine dim_boxes
						
						$('#box2').animate({'left':vals.box2['left'],'top':vals.box2['top']})
							.find('.boxes').addClass('open').animate({'width':vals.box2['width'],
																												'height':vals.box2['height']},'normal','linear');
						/*$('#box3').animate({'left':vals.box3['left'],'top':vals.box3['top']})
							.find('.boxes').animate({'width':vals.box3['width'],
																												'height':vals.box3['height']},'normal','linear');*/

						//$('#box2, #box3').addClass('actived').find('.bordo').fadeIn('fast');
						$('#box2').addClass('actived');//.find('.bordo').fadeIn('fast');
						break;
					case 'birra_e'://menu: eventi -> sottomenu serata birra
					case 'krug_e'://- krug
					case 'cavaliere_e'://- sottomenu cavaliere dello champagne
						break;
					case 'ristorante_g'://menu: attivitā -> sottomenu ristorante
					case 'chef'://- sottomenu chef a domicilio
					case 'crudo'://- non solo crudo
						//dimensioni e posizione dei box
						var vals = {box2 : {'width':120,'height':300,'left':330,'top':140}};//fine dim_boxes
						
						$('#box2').animate({'left':vals.box2['left'],'top':vals.box2['top']})
							.find('.boxes').addClass('open').animate({'width':vals.box2['width'],
															  												'height':vals.box2['height']},'normal','linear');
								
								//In caso di animazione applico anche la classe actived e visualizzo il bordo
								//$('#box2').addClass('actived').find('.bordo').fadeIn('fast');//mostra il bordo del pulsante
						break;
					case 'dove'://menu: dove trovarci
						//dimensioni e posizione dei box
						var vals = {box1 : {'width':515,'height':333,'left':440,'top':140},
												box2 : {'width':200,'height':382,'left':220,'top':140}//,
												//box3 : {'width':200,'height':130,'left':459,'top':460}//dimensione posizione dei boxX
								};//fine dim_boxes
						
						$('#box2').animate({'left':vals.box2['left'],'top':vals.box2['top']})
							.find('.boxes').addClass('open').animate({'width':vals.box2['width'],
																												'height':vals.box2['height']},'normal','linear');
						/*$('#box3').animate({'left':vals.box3['left'],'top':vals.box3['top']})
							.find('.boxes').addClass('open').animate({'width':vals.box3['width'],
																												'height':vals.box3['height']},'normal','linear');*/
						break;
				}//fine switch
				
				//creo un nuovo oggetto
				var pos = $.extend({},def,vals);//se non specificato diversamente le opzioni sono quelle di dim
				
				//eseguo l'animazione del box1 che di default č sempre aperto nella pagina
				$('#box1').addClass('open').removeClass('actived')//aggiungo/rimuovo le classi
					.animate({'width':pos.box1['width'],'height':pos.box1['height'],
										'left':pos.box1['left'],'top':pos.box1['top']},'normal','linear',function(){
					});//fine animate
				
			}//fine posiziona boxes
		})//fine extend
		
		$.eventi();//richiama gli eventi del controllo
		
	}//fine anidivs
	
})(jQuery)//fine funzione ricorsiva

