var kwAkkordeon = new Class({
	getOptions: function(){
		return {
			elemWidth:164,
			className: false,
			startLeft: 0,
			morphDuration: 300,
			morphStyle: Fx.Transitions.Quad.easeInOut
		};
	},
	
	initialize: function(options){
		this.setOptions(this.getOptions(), options);
		
		this.openClosePos = {};
		this.contentObj = {};
		
		this.opened = false;
		
		this.index = 0;
		this.oldIndex = 0;
		
		this.content = $$('.'+this.options.className);
		this.container = $$('.kw_overlay')[0];
		this.underlay = $$('.kw_underlay')[0]; 
		
		this.options.elemWidth = Math.round(this.container.getWidth()/2);
		
		if((this.options.startLeft+this.underlay.getWidth()) > (this.container.getWidth()-2)){
			this.moveUnderlay(this.options.startLeft);
		}
		else{
			var newLeft = this.container.getWidth() - this.underlay.getWidth() -2;
			this.moveUnderlay(newLeft);
		}
		
		if($$('.kw_forward')[0]){
			var nextButton = $$('.kw_forward')[0].addEvent('click',function(el){ 
				new Event(el).stop();
				this.next(); 
			}.bind(this));
		}
		
		if($$('.kw_back')[0]){
			var previousButton = $$('.kw_back')[0].addEvent('click',function(el){
				new Event(el).stop(); 
				this.previous(); 
			}.bind(this));
		}
	},
	
	next: function(){
		//console.log(this.underlay.getWidth());
		//console.log(this.container.getWidth());
		
		var newLeft = parseFloat(this.underlay.getStyle('left'))-this.options.elemWidth;
		//console.log(newLeft+' + '+this.underlay.getWidth()+' ?> '+(this.container.getWidth()-2));
		if((newLeft+this.underlay.getWidth()) > (this.container.getWidth()-2)){
			this.moveUnderlay(newLeft);
		}
		else{
			var newLeft = this.container.getWidth() - this.underlay.getWidth() + 26;
			//console.log('new left: '+newLeft);
			this.moveUnderlay(newLeft);
		}
	},
	
	previous: function(){
		var newLeft = parseFloat(this.underlay.getStyle('left'))+this.options.elemWidth;
		if(newLeft > 0){
			var newLeft = 0;
		}
		this.moveUnderlay(newLeft);
	},

	
	moveUnderlay: function(newLeft){
				
		this.contentEffects = new Fx.Morph(this.underlay, {
			duration: this.options.morphDuration, transition: this.options.morphStyle			
		});
				
		this.contentEffects.start({
			left: newLeft
		});
	}
		
});

kwAkkordeon.implement(new Options);
kwAkkordeon.implement(new Events);

var zustaende = Array();
var contenthoehen = Array();
var teaserhoehen = Array();
var morphing = 0;

function replaceUmlaute(curText) {
	 if (typeof curText != 'number' && typeof curText != 'string' ) {
	  alert('Sie versuchen Text auszugeben, der kein Text ist sondern: '+typeof curText);
	  return 'err';
	 }
	 if (curText == '') return '';
	 if (typeof curText == 'number') curText = String(curText);
	 var result = curText;
	 result=result.replace(/\u00fc/g, 'ue');
	 result=result.replace(/\u00f6/g, 'oe');
	 result=result.replace(/\u00e4/g, 'ae');
	 result=result.replace(/\u00dc/g, 'Ue');
	 result=result.replace(/\u00d6/g, 'Oe');
	 result=result.replace(/\u00c4/g, 'Ae');
	 result=result.replace(/\u00df/g, 'ss');
	 result=result.replace(/ü/g, 'ue');
	 result=result.replace(/ö/g, 'oe');
	 result=result.replace(/ä/g, 'ae');
	 result=result.replace(/Ü/g, 'Ue');
	 result=result.replace(/Ö/g, 'Oe');
	 result=result.replace(/Ä/g, 'Ae');
	 result=result.replace(/ß/g, 'ss');
	 result=result.replace(/ /g, '_');
	 return result;
}

onloadHooks.push(function stichwortaccordion_init(){
	var stichworte = $$('.stichwort');
	var suchwort = '';
	var suchwortteile = location.search.split("?");
	if(suchwortteile[1]){
		var variablen = suchwortteile[1].split("&");
	}else{
		var variablen = Array();
	}
	
	for(var count = 0; count < variablen.length; count++){
		var wertepaar = variablen[count].split("=");
		if(wertepaar[0] == 'w'){
			suchwort = wertepaar[1];
		}
	}
	
	for(var i = 0; i < stichworte.length; i++){
		zustaende[i] = 'open';
		contenthoehen[i] = stichworte[i].getChildren()[3].getStyle('height').toInt();
		teaserhoehen[i] = stichworte[i].getChildren()[2].getStyle('height').toInt();
		stichworte[i].getChildren()[4].addEvent('click', function(){
			toggle_acc(this.getParent());
		});
		stichworte[i].getChildren()[3].setStyles({
			'height'		: 0,
			'overflow'	: 'hidden'
		});
		zustaende[i] = 'closed';
		
		
		
		if ( replaceUmlaute(stichworte[i].getChildren()[1].getChildren()[0].get('text')) == suchwort ) {
			var ankername = stichworte[i].getChildren()[0].getProperty('name');
			
			var myElement = $(document.body);
			var meineanker = $$('.'+ankername);
			for (var anc = 0; anc < meineanker.length; anc++){
				var meinoffset = meineanker[anc].getCoordinates()['top'].toInt()-50;
			}
			var myFx = new Fx.Scroll(myElement).set(0, meinoffset);
			toggle_acc(stichworte[i]);
		}
	}
	
	new kwAkkordeon({
		className: 'kws',
		startLeft: start_Left
	});
	
	
});

function toggle_acc(elem){
	if(!morphing){
		
		morphing = 1;
		var elemid = elem.getChildren()[2].getProperty('id').split('id')[1];
		var stichworte = $$('.stichwort');
		var ankername = stichworte[elemid].getChildren()[0].getProperty('name');
		
		if(zustaende[elemid] == 'open'){
			// Contentmorph
			var meinMorphContent = new Fx.Morph(
				stichworte[elemid].getChildren()[3], 
				{
					duration:250,
					transition:'sine:in',
					fps: 50
				}
			);
			meinMorphContent.addEvent('complete', function(){
				zustaende[elemid] = 'closed';
				stichworte[elemid].getChildren()[4].set('text', weiter_text);
			});
			meinMorphContent.start({
				'height': [contenthoehen[elemid], 0],
				'overflow' : ['visible', 'hidden']
			});
			
			// Teasermorph
			var meinMorphTeaser = new Fx.Morph(
				stichworte[elemid].getChildren()[2], 
				{
					duration:50,
					transition:'sine:in',
					fps: 50
				}
			);
			meinMorphTeaser.addEvent('complete', function(){
				var myElement = $(document.body);
				var meineanker = $$('.'+ankername);
				for (var anc = 0; anc < meineanker.length; anc++){
					var meinoffset = meineanker[anc].getCoordinates()['top'].toInt()-50;
				}
				var myFx = new Fx.Scroll(myElement).set(0, meinoffset);
				
				morphing = 0;
			});
			meinMorphTeaser.start({
				'height': [0, teaserhoehen[elemid]],
				'overflow' : ['hidden', 'visible']
			});
		}else{
			// Teasermorph
			var meinMorphTeaser = new Fx.Morph(
				stichworte[elemid].getChildren()[2], 
				{
					duration:0,
					transition:'sine:in',
					fps: 50
				}
			);
			meinMorphTeaser.addEvent('complete', function(){
			});
			meinMorphTeaser.start({
				'height': [teaserhoehen[elemid], 0],
				'overflow' : ['visible', 'hidden']
			});
			
			// Contentmorph
			var meinMorphContent = new Fx.Morph(
				stichworte[elemid].getChildren()[3], 
				{
					duration:250,
					transition:'sine:in',
					fps: 50
				}
			);
			meinMorphContent.addEvent('complete', function(){
				zustaende[elemid] = 'open';
				stichworte[elemid].getChildren()[4].set('text', schliessen_text);
				
				var myElement = $(document.body);
				var meineanker = $$('.'+ankername);
				for (var anc = 0; anc < meineanker.length; anc++){
					var meinoffset = meineanker[anc].getCoordinates()['top'].toInt()-50;
				}
				var myFx = new Fx.Scroll(myElement).set(0, meinoffset);
				
				morphing = 0;
			});
			meinMorphContent.start({
				'height': [0, contenthoehen[elemid]],
				'overflow' : ['hidden', 'visible']
			});
		}
	}
}


/*
var kwAkkordeon = new Class({
	getOptions: function(){
		return {
			elemWidth:164,
			className: false,
			startLeft: 0,
			morphDuration: 300,
			morphStyle: Fx.Transitions.Quad.easeInOut
		};
	},
	
	initialize: function(options){
		this.setOptions(this.getOptions(), options);
		
		this.openClosePos = {};
		this.contentObj = {};
		
		this.opened = false;
		
		this.index = 0;
		this.oldIndex = 0;
		
		this.content = $$('.'+this.options.className);
		this.container = $$('.kw_overlay')[0];
		this.underlay = $$('.kw_underlay')[0]; 
		
		this.options.elemWidth = Math.round(this.container.getWidth()/2);
		
		if((this.options.startLeft+this.underlay.getWidth()) > (this.container.getWidth()-2)){
			this.moveUnderlay(this.options.startLeft);
		}
		else{
			var newLeft = this.container.getWidth() - this.underlay.getWidth() -2;
			this.moveUnderlay(newLeft);
		}
		
		if($$('.kw_forward')[0]){
			var nextButton = $$('.kw_forward')[0].addEvent('click',function(el){ 
				new Event(el).stop();
				this.next(); 
			}.bind(this));
		}
		
		if($$('.kw_back')[0]){
			var previousButton = $$('.kw_back')[0].addEvent('click',function(el){
				new Event(el).stop(); 
				this.previous(); 
			}.bind(this));
		}
	},
	
	next: function(){
		var newLeft = parseFloat(this.underlay.getStyle('left'))-this.options.elemWidth;
		if((newLeft+this.underlay.getWidth()) > (this.container.getWidth()-2)){
			this.moveUnderlay(newLeft);
		}
		else{
			var newLeft = this.container.getWidth() - this.underlay.getWidth() -2;
			this.moveUnderlay(newLeft);
		}
	},
	
	previous: function(){
		var newLeft = parseFloat(this.underlay.getStyle('left'))+this.options.elemWidth;
		if(newLeft > 0){
			var newLeft = 0;
		}
		this.moveUnderlay(newLeft);
	},

	
	moveUnderlay: function(newLeft){
				
		this.contentEffects = new Fx.Morph(this.underlay, {
			duration: this.options.morphDuration, transition: this.options.morphStyle			
		});
				
		this.contentEffects.start({
			left: newLeft
		});
	}
		
});

kwAkkordeon.implement(new Options);
kwAkkordeon.implement(new Events);


onloadHooks.push(function(){
	var j;
	var lastone;
	$$('.open_close').each(function(el,i,els){

		var id_n = el.getParent().getChildren('.teaser')[0].getProperty('id');
		var id_name = id_n.substr(5);
		
		var kwteaser = '#kw_id'+id_name;
		
		el.myAccordion2 = new Accordion(
			$$('a.mlid'+id_name),
			$$('div.teaser#kw_id'+id_name),
			{
				opacity: true,
				display: 0,
				alwaysHide: true,
				initialDisplayFx: true,
				onComplete: function(){
					if (el.mySmoothScroll){
					 (function(){
					 		el.mySmoothScroll.start();
					 	}).delay(1000);
					}
				}
			}
		);
		
		el.myAccordion = new Accordion(
			$$('a.mlid'+id_name),
			$$('div.element#kwh_id'+id_name),
			{
				opacity: true,
				display: -1,
				alwaysHide: true,
				initialDisplayFx: true
			}
		);
	});
	

	$$('.open_close').addEvent('click',function(){
		
		var id_n = this.getParent().getChildren('.teaser')[0].getProperty('id');
		var id_name = id_n.substr(5);

	
		if (this.get('text')==weiter_text) {
			if (!Browser.Engine.trident) {
				if (lastone && lastone.getParent().getChildren('div')[0].getStyle('visibility') == 'hidden') {
					lastone.myAccordion2.display(0);
					lastone.myAccordion.display(-1);
					lastone.set('text',weiter_text);
				}
			}
			this.set('text',schliessen_text);
			lastone = this;
		} else{
			this.set('text',weiter_text);
		}
	
		this.mySmoothScroll = new Fx.SmoothScroll({
		    links: '.'+id_n,
		    wheelStops: false,
			offset: {'x': 0, 'y': -50}
		});
		this.myAccordion2.start();
	});

	new kwAkkordeon({
		className: 'kws',
		startLeft: start_Left
	});
});

*/
