/**
<div class="accordion">
	<h3 class="accordion-headline">Standardkurs I/II/III - 15 Wochenstunden à 50 min</h3>
	<div class="accordion-block">
		Wochenstunden: 15 à 50 min<br />
		Unterricht Standardkurs I: 15.30–18.30 Uhr<br />
		Unterricht Standardkurs II: 12.30–15.30 Uhr<br />
		Unterricht Standardkurs III: 09.00–12.00 Uhr<br />
		Gruppengröße: Ø 10, max. 14
	</div>
	<h3 class="accordion-headline">Intensivkurs - 30 Wochenstunden à 50 min</h3>
	<div class="accordion-block">
		Wochenstunden: 15 à 50 min<br />
		Unterricht Standardkurs I: 15.30–18.30 Uhr<br />
		Unterricht Standardkurs II: 12.30–15.30 Uhr<br />
		Unterricht Standardkurs III: 09.00–12.00 Uhr<br />
		Gruppengröße: Ø 10, max. 14
	</div>
	<h3 class="accordion-headline">Business English - 30 Wochenstunden à 50 min</h3>
	<div class="accordion-block">
		Wochenstunden: 15 à 50 min<br />
		Unterricht Standardkurs I: 15.30–18.30 Uhr<br />
		Unterricht Standardkurs II: 12.30–15.30 Uhr<br />
		Unterricht Standardkurs III: 09.00–12.00 Uhr<br />
		Gruppengröße: Ø 10, max. 14
	</div>
	<h3 class="accordion-headline">Cambridge-Examenskurs - 30 Wochenstunden à 50 min</h3>
	<div class="accordion-block">
		Wochenstunden: 15 à 50 min<br />
		Unterricht Standardkurs I: 15.30–18.30 Uhr<br />
		Unterricht Standardkurs II: 12.30–15.30 Uhr<br />
		Unterricht Standardkurs III: 09.00–12.00 Uhr<br />
		Gruppengröße: Ø 10, max. 14
	</div>
</div>
**/
var Accordion = Class.create({
	effects: true,
	nodes: [],
	initialize: function(root){
		this.effects = (typeof Effect == 'OBJECT' || typeof Effect == 'object');
		root.cleanWhitespace();
		this.setObserver(root);
	},
	setObserver: function(root){
		this.nodes = root.select(".accordion-headline");
		this.nodes.each(function(node, index){
			node.observe("click", this.clickNode.bind(this));
			node.observe("mouseover", this.overNode.bind(this));
			node.observe("mouseout", this.outNode.bind(this));
			var contentNode = this._getBlockNode(node);
			if(contentNode.visible()){
				node.addClassName("accordion-aktiv");
			}
		}.bind(this));
	},
	_getHeadlineNode: function(node){
		if(!node.hasClassName("accordion-headline")){
			node = node.up(".accordion-headline");
		}
		return node;
	},
	_getBlockNode: function(node){
		if(!node.hasClassName("accordion-block")){
			node = node.next(".accordion-block");
		}
		return node;
	},
	overNode: function(event){
		var node = event.element();
		node = this._getHeadlineNode(node);
		if(!node.hasClassName("accordion-over")){
			node.addClassName("accordion-over");
		}
		node.stopObserving("mouseover");
		node.observe("mouseout", this.outNode.bind(this));
	},
	outNode: function(event){
		var node = event.element();
		node = this._getHeadlineNode(node);
		if(node.hasClassName("accordion-over")){
			node.removeClassName("accordion-over");
		}
		node.stopObserving("mouseout");
		node.observe("mouseover", this.overNode.bind(this));
	},
	clickNode: function(event){
		var node = event.element();
		var headline = this._getHeadlineNode(node);
		node = this._getBlockNode(node);
		if(node.visible()){
			headline.removeClassName("accordion-aktiv");
			this.closeNode(node);
		}else{
			headline.addClassName("accordion-aktiv");
			this.openNode(node);
		}
	},
	openNodes: function(){
		this.nodes.each(function(node){
			this.openNode(node);
		}.bind(this));
	},
	closeNodes: function(){
		this.nodes.each(function(node){
			this.coseNode(node);
		}.bind(this));
	},
	openNode: function(node){
		if(this.effects){
			Effect.BlindDown(node);
		}else{
			node.show();
		}
	},
	closeNode: function(node){
		if(this.effects){
			Effect.BlindUp(node);
		}else{
			node.hide();
		}
	}
});
Event.observe(window, "load", function(){
	$$('.accordion').each(function(n){
		new Accordion(n);
	});
});
