var minHeight=650;
var minWidth=980;
var footerHeight=40;

function aggiorna_mediabox(){
	if(!Browser.Engine.webkit){
		var links = $$("a").filter(function(el) {
			return el.rel && el.rel.test(/^lightbox/i);
		});
		$$(links).each(function(item){
			item.mediabox({}, null, function(el) {
				var rel0 = this.rel.replace(/[[]|]/gi," ");
				var relsize = rel0.split(" ");
				return (this == el) || ((this.rel.length > 8) && el.rel.match(relsize[1]));
			});
		});
	}
}

window.addEvent('domready', function(){
 	add_loading();
	inizialize();
	slider();
	boxContenuti();	
	aggiorna_mediabox();
	gallery();
	window.addEvent('resize', function(){ resize();});
	remove_loading();
});

function resize(){
	add_loading();
	var container=$('ContainerMain');
	var darsena = $('darsena');
	var ajaxBox = $('ajaxBox');
	var testo = $('ajaxresult').getElement('.testo');
	var	boxFooter=$('boxFooter');
	boxFooter.setStyle('display','none');
	[container,$('colonna1'),$('colonna1').getElement('.padColonna')].each(function(item){item.removeProperty('style')});
	if($('colonna1').getElement('.padColonna').getFirst()!=null)$('colonna1').getElement('.padColonna').getFirst().removeProperty('style');
	if($('scroller'))$('scroller').destroy();
	
	var heightWindow=(document.getElement('body').getSize().y>minHeight)?document.getElement('body').getSize().y:minHeight;
	container.setStyle('height',heightWindow);
	$('colonna1').setStyle('height',heightWindow);
	$('colonna2').setStyle('height',heightWindow);
	$('ajaxresult').setStyle('height', heightWindow);
	boxFooter.setStyle('display','block');
	var widthWindow = (document.getElement('body').getSize().x>minWidth)?document.getElement('body').getSize().x:minWidth;
	darsena.setStyles({	'height': heightWindow,'width': widthWindow, 'overflow': 'hidden', 'position': 'relative'});
	ajaxBox.setStyles({	'height': heightWindow,'width': 1800});
		
	slider();
	
	if(testo!=null){
		testo.removeProperty('style');
		testo.removeClass('ajaxTesto');
		if($('menuFogli'))$('menuFogli').destroy();
		if($('sliderTesto')){
			var sliderTesto=$('sliderTesto');
			sliderTesto.removeProperty('style');
		}			
		var dettaglio = new Element('div', {'class': 'dettaglio foglio'	});
		var fogli=container.getElements('.foglio');		
		fogli.each(function(item,i){
			dettaglio.adopt(item.getChildren());
			item.destroy();
		});
		dettaglio.inject(sliderTesto,'top');
		paginazione(dettaglio);
		postpaginazione(testo,sliderTesto);
	}
	remove_loading();
}

function gestioneTesti(){
	if($('ajaxresult') && $('ajaxresult').getElement('.testo')!=null && !$('ajaxresult').getElement('.testo').hasClass('ajaxTesto')){
		var testo =$('ajaxresult').getElement('.testo');
		testo.addClass('ajaxTesto');
		testo.setStyles({'widht': 495, 'overflow': 'hidden'});
		testo.getElement('.dettaglio').addClass('foglio');
		var sliderTesto = new Element('div', {	'id': 'sliderTesto'	}).inject(testo,'top');
		sliderTesto.adopt(testo.getElement('.dettaglio'));
		
		
		paginazione(testo.getElement('.dettaglio'));
		postpaginazione(testo,sliderTesto);
	}
}
function postpaginazione(testo,sliderTesto){
	var menuFogli = new Element('div', {'id': 'menuFogli' });
	var content1 = new Element('div', {'id': 'content1' }).inject(menuFogli);
	var fogli=testo.getElements('.foglio');
	sliderTesto.setStyle('width',fogli.length*550);
	var fxSliderTesto= new Fx.Tween(sliderTesto,{link : 'cancel'});
	var active=null;
	var classe=null;
	if(fogli.length>1){
		fogli.each(function(item,i){
			classe="voceMenu";
			if(i==0) classe="voceMenu active";
			var voceMenu = new Element('a', {'href': '#','class': classe,'html': '<span>'+(i+1)+'</span>' }).inject(content1);
			if(i==0)	active=voceMenu;
			voceMenu.addEvent('click',function(e){
				new Event(e).stop();
				active.removeClass('active');
				this.addClass('active');
				active=this;
				fxSliderTesto.start('margin-left',-i*530);
			});
		});
		menuFogli.inject(testo,'top');
		//content1.setStyle('margin-top',((menuFogli.getSize().y-content1.getSize().y)/2).toInt());
	}
}
function paginazione(testo){
	var container= [];
	var totale=0;
	var salta=false;
	testo.getChildren().each(function(item){
		var height =item.getSize().y;
		totale += height;
		
		if(totale > $('colonna2').getSize().y-20) salta=true;
		if(item.get('text')=='[--break--]' ) salta=true;
		if(salta==false){
			container.push(item);
		}else{
			var sliderTesto = new Element('div', {'class': 'foglio'	});
			sliderTesto.inject(testo,'before');
			sliderTesto.adopt(container);
			totale=height;
			if(item.get('text')=='[--break--]' )item.setStyle('display','none');//destroy();
			container=[item];
			salta=false;
		}
	});	
}

function slider(){
	var container=$('ContainerMain');
	var slider=$('colonna1').getElement('.padColonna').getFirst();
	if(slider!=null){
		var heightCol=$('colonna1').getSize().y-footerHeight;
		var heightBox=$('colonna1').getElement('.padColonna').getSize().y;
		var numBox=$('colonna1').getElements('.box').length;
		var fxSlider= new Fx.Tween(slider,{link: 'cancel', transition: Fx.Transitions.Linear, duration: 250});
		var steps= numBox*10;
		if(heightBox>heightCol){
			$('colonna1').setStyle('overflow','hidden');
			$('colonna1').getElement('.padColonna').setStyles({'height':heightCol, 'padding-bottom': 0, 'overflow': 'hidden'})
			if($('scroller')==null){
				var scroller = new Element('div', {
					'id': 'scroller',
					'styles': {
						'height': heightCol/2-40,
						'position': 'absolute',
						'top': (heightCol-(heightCol/2-40))/2
					}
				}).inject(container,'bottom');
			}else var scroller = $('scroller');
			var knob = new Element('div', {'id': 'knob'	}).inject(scroller);
			knob.addEvent('mouseenter',function(){ this.addClass('over')});
			knob.addEvent('mouseleave',function(){ this.removeClass('over')});
			var mySlide = new Slider(scroller,knob, {
				steps: steps,
				//wheel : true,
				mode: 'vertical',	
				onChange: function(step){	fxSlider.start('margin-top',-((heightBox-heightCol)/steps*step));}
			}).set(0);
		}
	}
}

function gallery(){
	if($('ajaxresult') && $('ajaxresult').getElement('.gallery')!=null && !$('ajaxresult').getElement('.gallery').hasClass('ajaxGallery')){
		var gallery=$('ajaxresult').getElement('.gallery');
		gallery.addClass('ajaxGallery');
		var immagini= new Hash();
		var loadedImages = [];
		var load_img=false;
		var actual_img=null;
		var bigImg = gallery.getElements('.bigImg');
		gallery.getElements('.img a').each(function(item,i){
			if(i==0)	actual_img=item;
			immagini.set(item.getProperty('href'),item);
			item.addEvent('click',function(e){
				new Event(e).stop();
				if(load_img==false && actual_img!=item){
					load_img=true;
					actual_img.getParent().removeClass('active');
					item.getParent().addClass('active');
					var imgNew=new Asset.image(item.getProperty('href'), {
						onload: function() {
							var actual_Bigimg=bigImg.getElement('img');
							imgNew.setStyle('opacity',0);
							bigImg.adopt(imgNew);
							var myFx = new Fx.Tween(imgNew).start('opacity',[0,1]).chain(function(){
								actual_Bigimg.destroy();
								actual_img=item;
								load_img=false;
							});
						}
					});
				}
			});
		});	
	}
}

function boxContenuti(){
	if($('colonna1') && $('colonna1').getElements('.box')!=null){
		if(!$('ajaxresult')){
			var ajaxresult = new Element('div', {
				'id': 'ajaxresult',
				'styles': {
					'float': 'left',
					'height': '100%',
					'width': 0,
					'overflow': 'hidden',
					'position': 'relative'
				}
			}).inject($('colonna1'),'after');
		}
		var myFx = new Fx.Tween($('ajaxresult'));

		var myHTMLRequest = new Request.HTML({
			onRequest:function(){
									
			},
			onSuccess: function(responseTree,responseXML){
				var ajaxresult=$('ajaxresult');
				var width= $('colonna2').getSize().x;
				for (i=0;i<responseXML.length;i++){
					if(responseXML[i] && responseXML[i].get('id')=='colonna2'){
						var target=responseXML[i].getFirst();
						break;
					}
				} 
				
				// Effetto apertura chiusra
				if(ajaxresult.getStyle('width').toInt()>0){ 
					remove_loading();
					myFx.start('width', 0).chain(function(){
						ajaxresult.empty();
						ajaxresult.adopt(target);
						aggiorna_mediabox();
						gestioneTesti();
						gallery();
						myFx.start('width', [0, width]);
						// Imposta indietro per chiusura
						indietroContent(ajaxresult,myFx,active_box);
					}).chain(function(){
						if(ajaxresult.getElement('.map')!=null) initialize(ajaxresult.getElement('.map'));
						if(ajaxresult.getElement('form.info')!=null) ajaxform(ajaxresult.getElement('form.info'));
						lock=false;
					});
				}else{
					ajaxresult.adopt(target);
					aggiorna_mediabox();
					gestioneTesti();
					gallery();
					remove_loading();
					myFx.start('width', width).chain(function(){
						if(ajaxresult.getElement('.map')!=null) initialize(ajaxresult.getElement('.map'));
						if(ajaxresult.getElement('form.info')!=null) ajaxform(ajaxresult.getElement('form.info'));
						lock=false;
					});
					// Imposta indietro per chiusura
					indietroContent(ajaxresult,myFx,active_box);
				}
			}
		});
		var active_box=null;
		var lock=false;
		$('colonna1').getElements('.box a').each(function(item){
			if(item.getParent().getParent().hasClass('active')) active_box=item.getParent().getParent();
			var maFx2 =new Fx.Tween(item.getParent().getParent(),{link: 'cancel', duration: 500});
			item.addEvent('click',function(e){
				new Event(e).stop();
				if(lock==false){
					add_loading();
					lock=true;
					var href=this.getProperty('href');
					if(active_box!=null){
						active_box.tween('margin-left',20);
						active_box.removeClass('active');
					}
					active_box=item.getParent().getParent();
					active_box.addClass('active');
					myHTMLRequest.get(href);
				}
			});
			item.getParent().getParent().addEvent('mouseenter',function(){
				if(!this.hasClass('active')){
					maFx2.start('margin-left',30);
				}
			});
			item.getParent().getParent().addEvent('mouseleave',function(){
				if(!this.hasClass('active')){
					maFx2.start('margin-left',20);
				}
			});
		});
	}	
}

function indietroContent(ajaxresult,myFx,active_box){
	var indietro=ajaxresult.getElement('.indietro');
	indietro.addClass('ajaxIndietro');
	indietro.addEvent('click',function(e){
		new Event(e).stop();
		this.destroy();
		myFx.start('width', 0).chain(function(){ajaxresult.empty();	});
		active_box.removeClass('active');
		active_box.tween('margin-left',20);
	});	
}
function inizialize(){
	var	boxFooter=$('boxFooter');
	var menuHeight= boxFooter.getSize().y;
	boxFooter.setStyles({
		'position': 'absolute',
		'bottom': 0,
		'left': 0,
		'height': 20
	});
	var menuFx=new Fx.Tween(boxFooter,{link: 'cancel'})
	boxFooter.addEvent('mouseenter', function(){menuFx.start('height',menuHeight);});
 	boxFooter.addEvent('mouseleave', function(){menuFx.start('height',20);});

	var container=$('ContainerMain');
	var heightWindow=(document.getElement('body').getSize().y>minHeight)?document.getElement('body').getSize().y:minHeight;
	container.setStyle('height',heightWindow);
	var widthWindow = (document.getElement('body').getSize().x>minWidth)?document.getElement('body').getSize().x:minWidth;
	
	var figli=container.getChildren();
	var darsena = new Element('div', {
		'id': 'darsena',
		'styles': {
			'height': heightWindow,
			'width': widthWindow,
			'overflow': 'hidden',
			'position': 'relative'
		}
	}).inject(container,'before');
	darsena.adopt(container);
	
	var ajaxBox = new Element('div', {
		'id': 'ajaxBox',
		'styles': {
			'height': heightWindow,
			'width': 1800
		}
	}).inject(container,'top');
	ajaxBox.adopt(figli);
	
	var myURI = new URI(window.location.href);
	if(myURI.get('query')){ 
		var width= $('colonna2').getSize().x;
		var active_box=null;
		$('colonna1').getElements('.box .titolo a').each(function(item){
			if(item.toString()==myURI.toString()){
				active_box=item.getParent().getParent();
				active_box.addClass('active');				
			}
		});
		if($('colonna1') && $('colonna1').getElements('.box')!=null){
			if(!$('ajaxresult')){
				var ajaxresult = new Element('div', {
					'id': 'ajaxresult',
					'styles': {
						'float': 'left',
						'height': '100%',
						'width': 0,
						'overflow': 'hidden',
						'position': 'relative'
					}
				}).inject($('colonna1'),'after');
			}
			var myFx = new Fx.Tween($('ajaxresult'));
	
			var target=$('colonna2').getFirst();
			ajaxresult.adopt(target);
			aggiorna_mediabox();
			gestioneTesti();
			gallery();
			var myHTMLRequest = new Request.HTML({
				onSuccess: function(responseTree,responseXML){
					var ajaxresult=$('ajaxresult');
					var width= $('colonna2').getSize().x;
					for (i=0;i<responseXML.length;i++){
						if(responseXML[i].get('id')=='colonna2'){
							var target=responseXML[i].getFirst();
							break;
						}
					} 
					$('colonna2').adopt(target);
				}	
			}).get(myURI.toString().replace('?'+myURI.get('query'),''));

			myFx.start('width', width).chain(function(){
				if(ajaxresult.getElement('.map')!=null) initialize(ajaxresult.getElement('.map'));
				if(ajaxresult.getElement('form.info')!=null) ajaxform(ajaxresult.getElement('form.info'));
			});
			// Imposta indietro per chiusura
			if(active_box)	indietroContent(ajaxresult,myFx,active_box);
		}
	}
}

function ajaxform(form){
	var ajaxresult=$('ajaxresult');
	form.addEvent('submit', function(e) {
		e.stop();
		var myHTMLRequest = new Request.HTML({
			url: this.getProperty('action'),
			onRequest:function(){
				form.getElement('.submit').destroy();
			},
			onSuccess: function(responseTree,responseXML){
				for (i=0;i<responseXML.length;i++){
					if(responseXML[i].get('id')=='boxForm'){
						var target=responseXML[i];
						break;
					}
				} 
				ajaxresult.getElement('#boxForm').empty().adopt(target.getChildren());
				ajaxform(ajaxresult.getElement('form.info'));
			}
		}).post(this);
	});
}
function add_loading(){
	if(!$('loading')) 	document.getElement('body').adopt(new Element('div',{'id':'loading'}).adopt(new Element('div',{'id':'text_loading','text':'Loading...'})));
}

function remove_loading(){
	if($('loading')) $('loading').destroy();
}

