function $E(tag,el){return $(el||document).getElement(tag)}

window.addEvents({
	domready:function(){
		$extend(kina,{bg:$E('img',$E('#bg',db=$(document.body))),timer:(Browser.Engine.gecko||Browser.Engine.webkit)?null:setInterval(kina.fix,200),menu:$('menu')});gal.call(gal);
		if($$('dl')[0]){var hs=$$('dt'),fx=hs.map(function(el){return new Fx.Morph(el,{wait:false})});new Accordion(hs,hs.getNext(),{opacity:false,onActive:function(head,box){if($chk(this.active))fx[this.active].start({'color':'#000','backgroundColor':'#fff'});fx[this.active=this.togglers.indexOf(head)].start({'color':'#fff','backgroundColor':'#000'})}})}
	},
	keypress:function(e){var e=new Event(e);if(e.key=='down'||e.key=='right')e.stop()}
});

kina={
	doc:{x:0,y:0},
	fix:function(){if(kina.bg.complete&&(db.offsetWidth!=kina.doc.x||db.offsetHeight!=kina.doc.y||kina.fix.src!=kina.bg.src)){var bg=kina.bg.getSize();kina.doc={x:db.offsetWidth,y:db.offsetHeight};kina.fix.src==kina.bg.src||$extend(kina.fix,{p:bg.x/bg.y,src:kina.bg.src});kina.bg.setStyles({width:(bg.y=kina.doc.x>(bg.x=Math.round(kina.doc.y*kina.fix.p)))?kina.doc.x:bg.x,height:bg.y?Math.round(kina.doc.x/kina.fix.p):kina.doc.y})}}
}

$extend(gal=function(){
	if(gal.el=$('photos')){$extend(this,{fx:new Fx.Tween(kina.menu,'bottom'),float:$('float').addEvent('click',gal.key)}).el.getElements('a').addEvent('click',this.swap)[0].addClass('cur');document.addEvents({mousemove:gal.mouse,keydown:gal.key})}
},{
	mouse:function(e){var w=db.offsetWidth/2,x=e.client.x,y=db.offsetHeight-e.client.y,el=gal.float;if(y<(gal.menu?85:20)){$clear(gal.timer);gal.menu||(gal.menu=gal.fx.start(20))}else{if(gal.menu)gal.menu=!(gal.timer=setTimeout(function(){gal.fx.start(-55)},700));else{if(y<85&&el.className)el.className=el.style.display='';else if(y>85){if(!el.className)el.style.display='block';if(x>w&&el.className!='nxt')el.className='nxt';else if(x<w&&el.className!='prv')el.className='prv';with(el.style){left=x-20+'px';top=e.client.y-10+'px'}}}}},
	swap:function(){$E('.cur',gal.el).removeClass('cur');kina.bg.src=this.addClass('cur').getElement('img').src},
	key:function(e){var nxt=e.key?(e.code==39):(gal.float.className=='nxt');return (e.key&&e.code!=37&&e.code!=39)?false:gal.swap.call($E('.cur',gal.el)[nxt?'getNext':'getPrevious']()||gal.el[nxt?'getFirst':'getLast']())},
	menu:true
});

window.addEvent('load', function() {
	// Altezza div centrale
	var col2h = $('content').getElement('.col-2').getCoordinates().height;
	var col3h = $('content').getElement('.col-3').getCoordinates().height;
	
	if (col3h > col2h) $('content').getElement('.col-2').setStyle('height', col3h+'px');
});

window.addEvent('domready', function() {
	
	$$('#menu_top li ul').each(function(el) {
		el.store('init_height', el.getDimensions().height);
		el.set('morph', {
			'transition': 'linear',
			'duration': 250
		});
		el.setStyles({
			'opacity' : 0,
			'height' : '0px',
			'display': 'block',
			'visibility': 'visible'
					 });
	});
	
	var funShow = function() {
		var ul = this.get('tag') == 'a' ? this.getParent('li').getElement('ul') : this;
		if (ul) {
			$clear( ul.retrieve('hide_timer') );
			ul.morph({
				'opacity' : 1,
				'height' : ul.retrieve('init_height')+'px'
			});
		}
	}
	
	var funHide = function() {
		var ul = this.get('tag') == 'a' ? this.getParent('li').getElement('ul') : this;
		if (ul)	ul.store('hide_timer', funHideNow.delay(200, ul));
	}
	
	var funHideNow = function() {
		this.morph({
			'opacity' : 0,
			'height' : '0px'
		});
	}
	
	$$('#menu_top li ul, #menu_top > li > a').addEvent('mouseover', funShow);
	$$('#menu_top li ul, #menu_top > li > a').addEvent('mouseout', funHide);
	
	
	// -------------------------- Calendar -------------------------- //
	
	// Initializzazione calendario
	var calendar_tips = new Tips('#calendar_container a', {className: 'calendar-tip'});
	var curr_mese = parseInt($('calendar_container').getElement('.curr_mese').get('value'));
	var curr_anno = parseInt($('calendar_container').getElement('.curr_anno').get('value'));
	var cal_width = $('calendar_window').getCoordinates().width;
	var requesting = false;
	// Fine inizializzazione
	var cal_recieved = function (resp) {
		if (resp != 'ERROR') {
			var el = Elements.from(resp.trim())[0];
			var curr_el = $('calendar_container').getElement('.calendar');
			var now = String(curr_anno)+(curr_mese<10?'0':'')+String(curr_mese);
			var next_mese = parseInt(el.getElement('.curr_mese').get('value'));
			var next_anno = parseInt(el.getElement('.curr_anno').get('value'));
			var next = String(next_anno)+(next_mese<10?'0':'')+String(next_mese);
			
			var myScroll = new Fx.Scroll($('calendar_window') , {
							link: 'cancel',
							duration: 500,
							transition: Fx.Transitions.Quad.easeOut
						});
			$('calendar_container').setStyle('width', (cal_width*2)+'px');
			if (parseInt(next) > parseInt(now)) {
				el.setStyle('left', cal_width+'px');
				el.inject($('calendar_container'));
				myScroll.start(cal_width, 0).chain(function() {
					curr_el.destroy();
					el.setStyle('left', '0px');
					myScroll.set(0,0);
				});
			}
			else {
				curr_el.setStyle('left', cal_width+'px');
				myScroll.set(cal_width,0);
				el.setStyle('left', '0px');
				el.inject($('calendar_container'));
				myScroll.start(0, 0).chain(function() {
					curr_el.destroy();
				});
			}
			curr_mese = next_mese;
			curr_anno = next_anno;
			calendar_tips.attach(el.getElements('a'));
			el.getElement('.frPrev').addEvent('click', funCalendarPrev);
			el.getElement('.frNext').addEvent('click', funCalendarNext);
			requesting = false;
		}
	}
	
	function switchCalendar(n) {
		if (requesting) return;
		var mese = curr_mese+n;
		requesting = true;
		var req = new Request({
			'url' : 'ajax.php?op=calendar',
			'method':'post',
			onSuccess : cal_recieved
		});
		req.send('mese='+mese+'&anno='+curr_anno);
	}
	var funCalendarPrev = function() {
		switchCalendar(-1);
	}
	var funCalendarNext = function() {
		switchCalendar(1);
	}
	$('calendar_container').getElement('.frPrev').addEvent('click', funCalendarPrev);
	$('calendar_container').getElement('.frNext').addEvent('click', funCalendarNext);
	
	
});

