// JavaScript Document
//<![CDATA[ 
var ArcaBox = {
	
	start: function(){
		
		if ($('content')) ArcaBox.parseBox();
		
		if ($('content')) ArcaBox.ToolTips();
		
		if (navigator.appName == "Opera") {
			window.document.body.style.overflow = "hidden";
		}
	
	},
	
	parseBox: function(){
		
		//szSmall -> Larghezza del .BOX allo stato chiuso
		//szFull  -> Larghezza del .BOX allo stato aperto calcolata in base al contenuto
		stato = null; // veriabile che uso per sapere quale .box è aperto
		
		ListApriBox = $$('#content .box .apriBox'); // Creo L'array di elementi con classe '.box'

		///////////////////////////////////
		
		ListApriBox.each(function(element, i) {

				var parent = element.getParent()
				parent.szSmall = parent.getStyle('width'); //dimensioni allo stato "chiuso" del .box

				element.addEvent('click', function(e){
					
					ArcaBox.apriChiudi(parent)
					ArcaBox.abilitaDisabilita(true)
		
				})
		
		})

	},	// Fine ParseBox()
	
	abilitaDisabilita: function(disable) {
		
		//Funzione usata per disabilitare il click del box mentre sto aprendo un altro box. Evita di avere problemi di aperture dei box
		
		if(disable){
		
			ListApriBox.each(function(element, i) {
				element.removeEvents('click')
			})
		
		} else {
				
			ListApriBox.each(function(element, i) {
					
					element.addEvent('click', function(e){
						
						var parent = this.getParent()
						ArcaBox.apriChiudi(parent)
						ArcaBox.abilitaDisabilita(true)
			
					})
			
			})	
			
		}

	}, // Fine abilitaDisabilita()
	
	apriChiudi: function(element){
		
		var objApri = element.getChildren().filterByClass('apriBox'); // bottone Apri
		var objFoto = element.getChildren().filterByClass('fotoHidden'); // Fotografie nascoste
		var objDL = element.getChildren().filterByClass('descrizione'); // Descrizione
		var szFull = 220; // largh del DL + il suo padding
		var myImg = element.getElements('img'); // Tutte le immagini contenute nel div .BOX
		
		// Calcolo la larghezza szFull del div .box in base alle immagini contenute
		myImg.each(function(el, i){
			
			var myWidth = parseFloat(el.getProperty('width'))+40;
			szFull = szFull + myWidth

		});		
		
		var o = {}; // Oggetto che uso per il passaggio di parametri all'effetto transition "fx"
		var w = {};
		var fx = new Fx.Styles(element, {wait: false, duration: 1100, transition: Fx.Transitions.Back.easeOut});
		var fx1 = new Fx.Styles(stato, {wait: false, duration: 1100, transition: Fx.Transitions.Back.easeOut});


		if ( stato != element ){
				// Se è già aperto un altro elemento diverso da quello cliccato lo chiudo
				if(stato != null) {

					var objApri_stato = stato.getChildren().filterByClass('apriBox'); // bottone Apri
					var objFoto_stato = stato.getChildren().filterByClass('fotoHidden'); // Fotografie nascoste
					var objDL_stato = stato.getChildren().filterByClass('descrizione'); // Descrizione
					
					objApri_stato.setStyles('background-position: 0 275px; width:'+ stato.szSmall+'');
					objDL_stato.setStyle('display', 'none'); // nascondo la descrizione
					objDL_stato.setStyle('visibility', 'hidden'); // nascondo la descrizione
					objFoto_stato.each(function(foto, j) { // Ciclo e nascondo le fotografie
						foto.setStyle('display', 'none');
						foto.setStyle('visibility', 'hidden');
					});
					
					var w = {width: [stato.getStyle("width").toInt(), stato.szSmall]};
					fx1.start(w);
				
				}
				
				// Apro l'elemento cliccato
				
				objApri.setStyles('background-position: 0 0; width:32px');
				o = {width: [element.getStyle("width").toInt(), szFull]};
				fx.start(o).addEvent('onComplete', function(){ //concateno gli effetti
						
						ArcaBox.abilitaDisabilita(false) // rendo i box ancora cliccabili
						
						objFoto.each(function(foto, j) { // Clicco e mostro le fotografie
							foto.setStyle('display', 'inline');
							ArcaBox.Opacity(foto); //Rendo la foto visibile
						});
						objDL.setStyle('display', 'block');
						objDL.setStyle('visibility', 'visible');

				}); // chiudo il chain
				
				stato = element; // il box aperto è "element", ossai quello cliccato
				
		} 
		
		else {
				
	
				objApri.setStyles('background-position: 0 275px; width:'+ this.szSmall+'');
				objDL.setStyle('display', 'none'); // nascondo la descrizione
				objDL.setStyle('visibility', 'hidden'); // nascondo la descrizione
				objFoto.each(function(foto, j) { // Ciclo e nascondo le fotografie
					foto.setStyle('display', 'none');
					foto.setStyle('visibility', 'hidden');
				});
								
				o = {width: [element.getStyle("width").toInt(), stato.szSmall]};
				fx.start(o).addEvent('onComplete', function(){
						
						ArcaBox.abilitaDisabilita(false) // rendo i box ancora cliccabili
				
				});

				stato = null; // nessun box è aperto

		}
		
	}, // Fine ApriChiudi()
	
	
	Opacity: function (obj){
		
		var myVisibility = obj.getStyle('visibility');

		var fx = new Fx.Style(obj, 'opacity'); // 

		fx.start(0, 1);

	}, // Fine myOpacity()
	
	ToolTips: function() {
		
		var TipsApriBOx = new Tips($$('.apriBox'), {
			initialize: function(){
				this.fx = new Fx.Style(this.toolTip, 'opacity', {duration: 500, wait: false}).set(0);
			},
			onShow: function(toolTip) {
				this.fx.start(1);
			},
			onHide: function(toolTip) {
				this.fx.start(0);
			}
		});		

		var TipsScroll = new Tips($('TipsDrag'), {
			initialize: function(){
				this.fx = new Fx.Style(this.toolTip, 'opacity', {duration: 500, wait: false}).set(0);
			},
			onShow: function(toolTip) {
				this.fx.start(1);
			},
			onHide: function(toolTip) {
				this.fx.start(0);
			}
		});		

	}	// Fine ToolTip()
	
}

///////////////////////////////////////////////////////

window.addEvent('load', ArcaBox.start);
//]]>