/*
Fade-Routine für Scriptacoulous.
Entnommen aus:
http://www.dustindiaz.com/collapsable-effects-with-scriptaculous/

Gepatchted von ISL:
#5838 Shop Design Umsetzung
*/
var lastFaded = null;
		
function fadeIn(el)
{
	new Effect.Parallel(
			[
				new Effect.SlideDown(el,{sync:true}),
				new Effect.Appear(el,{sync:true})
			],
			{
				duration:1.0,
				fps:40
			}
		);
	Element.removeClassName(el,'closed');
}

function fadeOut(el)
{
	new Effect.Parallel(
			[
				new Effect.SlideUp(el,{sync:true}),
				new Effect.Fade(el,{sync:true})
			],
			{
				duration:1.0,
				fps:40
			}
		);
	Element.addClassName(el,'closed');
}

cd = {
	codes : Array,
	contents : Array,
	init : function() {
		cd.codes = document.getElementsByClassName('fadeHeading');
		cd.contents = document.getElementsByClassName('fadeContent');
		cd.attach();
	},
	attach : function() {
		var i;
		for ( i=0;i<cd.codes.length;i++ ) {
			Event.observe(cd.codes[i],'click',cd.collapse,false);
			Element.cleanWhitespace(cd.codes[i].parentNode);
		}
		
//		Entfernt leere DIVs und wrappt ansonsten den Inhalt der DIVs um ein anderes DIV 		
		for ( i=0;i<cd.contents.length;i++ ) {
			Element.cleanWhitespace(cd.contents[i]);
			if (cd.contents[i].innerHTML == '')
			{
				Element.remove(cd.contents[i]);
			}
			else
			{
				cd.contents[i].innerHTML = '<div>'+cd.contents[i].innerHTML+'</div>';
				Element.removeClassName(cd.contents[i],'fadeContentFirstClosed');
				cd.contents[i].style.display = 'none';
			}
		}
	},
	getEventSrc : function (e) {
		if (!e) e = window.event;
		if (e.originalTarget)
			return e.originalTarget;
		else if (e.srcElement)
		return e.srcElement;
	},
	collapse : function(e) {
		var el = cd.getEventSrc(e);
		
//		FadeContent suchen		
		while (
				(el = el.nextSibling)
				&& (!Element.hasClassName(el,'fadeContent'))
				)
		{
			//
		}
		
		if (!Element.hasClassName(el,'fadeContent'))
		{
			return(false);
		}
		
		if ( Element.hasClassName(el,'closed') ) {
//			Letzten Eintrag schließen
//			Einstellung wird in closeOpenFadeContent-Variable vorgenommen			
			if (
				(closeOpenFadeContent)
				&& (lastFaded != null)
				&& (lastFaded != el)
				)
			{				
				fadeOut(lastFaded);
			}
			
			fadeIn(el);			
						
			lastFaded = el;
		} else {
			fadeOut(el);	
		}
	}
};
Event.observe(window,'load',cd.init,false); 