//
// Vertical accordions for left menu
//
document.observe("dom:loaded", function() {
	// Level 1 display. One or two lines ?
	$$('.left-menu-level1-title').each(function(r){
		var titleLink = r.firstDescendant();
		
		if (titleLink.getHeight() > r.getHeight()) {
			r.setStyle({
				fontSize: '1.1em'
			});
		}
		
		if (titleLink.getHeight() > r.getHeight()) {
			r.setStyle({
				lineHeight: '13px'
			});
			
			titleLink.setStyle({
				paddingTop: '3px'
			});
		}
	});
	
	// init
	$$('.accordion-toggle').each(function(r){
		if (!r.hasClassName($w(r.className)[0] + '-active')) {
			var accordionContent = r.up().next('.accordion-content');
			if (!accordionContent) {
				return;
			}
			else {
				if (!accordionContent.select('[class*="active"]').length) {
					accordionContent.hide();
				}
			}
		}
	});
	
	// Click behaviours
	$$('.accordion-toggle').invoke('observe', 'click', function(event) {
		var accordionToggle = event.element(event).up('.accordion-toggle');
		var accordionTitle = accordionToggle.next();
		var accordionContent = accordionToggle.up().next('.accordion-content');
		var accordionOncles = accordionToggle.up('.accordion-level').adjacent('.accordion-level');
		
		if (!accordionContent) {
			accordionToggle.toggleClassName($w(accordionToggle.className)[0] + '-active');
			accordionTitle.toggleClassName($w(accordionTitle.className)[0] + '-active');
			return;
		}
		else {
			if (accordionContent.visible()) {
				new Effect.BlindUp(accordionContent, {
					duration: 0.3
				});
			}
			else {
				new Effect.BlindDown(accordionContent, {
					duration: 0.8,
					beforeStart: function() {
						accordionOncles.each(function(s) {
							var currentContent = s.down('.accordion-content');
							var currentToggle = s.down('.accordion-toggle');
							var currentTitle = currentToggle.next();
							
							if (!currentContent) {
								currentToggle.removeClassName($w(currentToggle.className)[0] + '-active');
								currentTitle.removeClassName($w(currentTitle.className)[0] + '-active');
								return;
							}
							else {
								new Effect.BlindUp(currentContent, {
									duration: 0.3,
									beforeStart: function() {
										currentContent.descendants().each(function(t) {
											if (t.hasClassName('accordion-toggle')) {
												t.removeClassName($w(t.className)[0] + '-active');
												t.next().removeClassName($w(t.next().className)[0] + '-active');
											}
											else if (t.hasClassName('accordion-content')) {
												new Effect.BlindUp(t, {
													duration: 0.3
												});
											}
										});
									}
								});
								currentToggle.removeClassName($w(currentToggle.className)[0] + '-active');
								currentTitle.removeClassName($w(currentTitle.className)[0] + '-active');
							}
						});
					}
				});
			}
			
			accordionToggle.toggleClassName($w(accordionToggle.className)[0] + '-active');
			accordionTitle.toggleClassName($w(accordionTitle.className)[0] + '-active');
		}
	});
});

