/************************************************************************
 * 		Accordion mit erweiterten Funktionen							*
 * 		C 2008 by René Lange & Thomas Müller & Steve Rohrlack @ mindbox	*
 ************************************************************************/
 
 var Accordions = new Class({
 	sliders : '',
	
 	initialize : function(accElSelector,container, limiter) {
		this.sliders = new Array();
 		this.createAccordions(accElSelector,container, limiter);
 	},
 	
	// Erstellung der Accordions
 	createAccordions : function(accElSelector,container, limiter) {
		var selected = $('MSelected');
		var current = (selected) ? selected.getParent() : false;

		if (limiter != '') {
			var mycon = $E('#'+limiter, $('#'+container));		
		} else {
			var mycon = $(container.toString()); 
		}
		
		// Jeden Header greifen
		(mycon.getElements('div').filterBy('.'+accElSelector)).each(function(div){ 			
			var parentSlider;	
			if(div.getParent().hasClass('accContent')) {
//				var parentSlider = div.getParent().getParent();
			}
				
			var link = div.getElement('h5');
			if ((link.getProperty('id') != 'accEl_key')) {

				link.setStyle('cursor','pointer');
				var block = link.getNext();
				var last = '';
				if(block.getNext()) {
					last = block.getNext();
				}
			
				// An H5 hängen und FX Klasse anhängen
				var fx = new Fx.Slide(block);			
				var slider = block.getParent();	
				fx.hide();
			
				// Accordion verfügbar machen
				var obj = new Array();
				obj['obj'] = fx;
				obj['isOpen'] = false;			
				obj['link'] = link;	
				this.sliders.push(obj);
				// Event anhängen
				link.addEvent('click', function(ev){
					var event = new Event(ev);
					// Switchen eintragen
					this.sliders.each(function(slider) {
						if(slider['obj'] == fx) {
							slider['isOpen'] = !slider['isOpen'];
						}
					}.bind(this));	

					fx.toggle().chain(function(){
						if (slider.getSize().y <= 1) {
							slider.setStyle('height', '0px');
						}
					});
					if(parentSlider) {
						parentSlider.setStyle('height','auto');
					}
					
					if(slider.getStyle('height') != '0px') {
						link.removeClass("active");
						if(last && last.removeClass) {
							last.removeClass("lastactive");
						}
					} else {
						link.addClass("active");
						if(last && last.removeClass) {
							last.addClass("lastactive");
						}
					}
					
				}.bind(this));	
			}
		}.bind(this));
		if (Browser.Engine.trident) {
			this.updateHeight.delay(100);
		}
		new SmoothScroll({}, mycon.getProperty('id'));
 	},
	
	updateHeight: function(){
		$('dayEntrys').getElements('h5').each(function(sl){
			sl.setStyle('height', Number(sl.getElement('span').getSize().y));
		});
	},
	
	// Einen Slider öffnen - Funktioniert nicht (oder nur im IE)
	openSlider : function () {
		this.sliders.each(function(slider) {
			if (slider['link'].getProperty('id') == 'accEl_notepad') {
				slider['obj'].toggle();
			}
		}.bind(this));	
	},
		
	// offnene Slider an Änderungen anpassen - Funktioniert nicht (oder nur im IE)
	resize : function (sliderName) {
		switch(sliderName) {
			case null:		
				this.sliders.each(function(slider) {
					if (!slider['isOpen']) {
						return false; // Slider ist zu
					}
					slider['obj'].hide(); // Zu
					slider['obj'].toggle();	// Und wieder auf
				}.bind(this));	
			break;
			default:
				this.sliders.each(function(slider) {
					if ((sliderName == slider['link'].getProperty('id')) ||(sliderName == slider['link'].getProperty('class'))) {
						if (!slider['isOpen']) {
							return false; // Slider ist zu
						}
						slider['obj'].hide(); // Zu
						slider['obj'].toggle();	// Und wieder auf
					}
				}.bind(this));	
			break;
		}
	},

	// Alle Slider öffnen - Funktioniert nicht (oder nur im IE)
	openAll : function () {
		this.sliders.each(function(slider) {
			if (!slider['isOpen']) {
				slider['obj'].show();
			}
		}.bind(this));	
	},
	
	// Alle Slider schliessen - Funktioniert nicht (oder nur im IE)
	closeAll : function () {
		this.sliders.each(function(slider) {
			if (slider['isOpen']) {
				slider['obj'].toggle();
			}
		}.bind(this));	
	}
 });
 
 