
// -----------------------------------------------
//
// Initialize all Effects
//
// -----------------------------------------------

function initAllMenuEffects() {
	try {
		initializeMenuFadeInAndOutEffects("#mainMenu li a", ".menuEffectsNO", ".menuEffectsCUR");
		initializeMenuSlideOutEffect(".CUR > ul");
	} catch(e) {}

	try {
		initializeLanguageMenuSlideEffect();
	} catch(e) {
		//console.log(e);
	}
	
	try {
		initializeAccordionEffect();
	} catch(e) {
		//console.log(e);
	}
	try {
		initializeAccordionEffectContact();
	} catch(e) {
		console.log(e);
	}
}



// -----------------------------------------------
//
// Fade In/Out Effect for the Menu
//
// -----------------------------------------------

/**
 * Initializes the menue-fading effects
 *
 * @param string 	Expects the css-selector (eg: #menu a) to select elemens that act as event-listener elements
 * @param string	The css-class-name of the default menu state (eg: .menuNormal)
 * @param string	The css-class-ame of the hover menu state (eg: .menuHover)
 */
function initializeMenuFadeInAndOutEffects(listenerElSelector, classNameNo, classNameCur) {
	var listenerElements = $$(listenerElSelector);
	for(var i=0; i < listenerElements.length; i++) {
		var listenerElement = listenerElements[i];
		var effectElement = listenerElement.getFirst();
		try {
			effectElement.setStyle("opacity", 0);
			listenerElement.addEvent("mouseover", attachMorphEffect.bind(effectElement, classNameCur));
			listenerElement.addEvent("mouseout", attachMorphEffect.bind(effectElement, classNameNo));
		} catch(e) {}
	}
}

function attachMorphEffect(className) {
	this.set('morph', {duration: 250});
	this.morph(className);
}



// -----------------------------------------------
//
// Slide In/Out Effect for mainMenu level 2
//
// -----------------------------------------------

/**
 * Applies the slide-out effect for the html-element that is selected
 * using the css-selector syntax: eg. <code>#menu li.Active.</code>
 * Selected Element(s) will be hidden first (on domready event) before the
 * fade-out event triggers
 * 
 * @param string	The css-selector to apply the slide-out effect
 */
function initializeMenuSlideOutEffect(elSelector) {
	var element = $$(elSelector);
	element.addEvent("domready", function() {
		new Fx.Slide(this).hide().slideIn();		
	});
}



// -----------------------------------------------
//
// Slide In/Out Effect for the language Menu
//
// -----------------------------------------------

/**
 * Initializes the language-selector slide-out effect
 */
function initializeLanguageMenuSlideEffect() {
	var listenerElement = $("language");
	//var slideElement = $("uMenuSubmenu");
	var slideElement = $("lang1");
	var slideElement2 = $("lang2");
	attachSlideEffect(listenerElement, slideElement);
	attachSlideEffect(listenerElement, slideElement2);
}



// -----------------------------------------------
//
// Accordion for portal page
//
// -----------------------------------------------

/**
 * Initializes the accordion on the portal page
 */
function Hinweis (myFx) {
	
}



 
 
function initializeAccordionEffect() {
	
	attachSlideEffect($("maschinePortal"), $("maschineSlide"));
	attachSlideEffect($("fertigungPortal"), $("fertigungSlide"));
	attachSlideEffect($("anlagenPortal"), $("anlagenbauSlide"));
	attachSlideEffect($("fassadenPortal"), $("fassadenSlide"));
	attachSlideEffect($("imageAn"), $("imageAnFull"));
}

function attachSlideEffect(listenerElement, slideElement) {
	//window.setTimeout("Hinweis()", 2000);
	
	var myFx = new Fx.Slide(slideElement, {duration:1000}).hide();
	listenerElement.setStyle("cursor", "pointer");
	listenerElement.addEvents({
		'mouseenter' : function(){
			myFx.cancel();
			myFx.slideIn();
		},
		'mouseleave' : function(){
			myFx.cancel();
			myFx.slideOut();
		}
	});	
}

function initializeAccordionEffectContact() {
	var listenerElements = $$(".imageAn");
	var slideElements = $$(".imageAnFull");

	for(var i=0; i < listenerElements.length; i++) {
		var listenerElement = listenerElements[i].getFirst();
		var slideElement = slideElements[i].getFirst();
		attachSlideEffectContact(listenerElement, slideElement);
	}
	
}



function attachSlideEffectContact(listenerElement, slideElement) {
		var myFx = new Fx.Slide(slideElement).hide();
		var myFx1 = new Fx.Slide(listenerElement).show();
		
		listenerElement.setStyle("cursor", "pointer");
		listenerElement.addEvents({
			'click' : function(){
				myFx.cancel();
				myFx1.cancel();
				myFx1.slideOut();
				myFx.slideIn();
				
			}
		});
		slideElement.setStyle("cursor", "pointer");
		slideElement.addEvents({
			'click' : function(){
				myFx.cancel();
				myFx1.cancel();
				myFx.slideOut();
				myFx1.slideIn();
	
			}
		});
}

