var aktLevel = 0;
var pos1 = '5px';
var pos2 = '-240px';
var pos3 = '-240px';
var widthTop = 250;
var widthSub = 250;
var opac = 0.7;
var colorBlue = '#02A7E7';
var colorWhite = '#ffffff';
var colorGrey = '#666666';
var durFadeOut = 20;
var durFadeIn = 20;
var durSlideIn = 30;
var durSlideOut = 30;
var durMoveLeft = 50;
/*
var durFadeOut = 200;
var durFadeIn = 200;
var durSlideIn = 300;
var durSlideOut = 300;
var durMoveLeft = 500;
*/
var prevElement = null;
var transitionSlideIn = Fx.Transitions.linear.easeOut;
var transitionSlideOut = Fx.Transitions.linear.easeOut;
var transitionMoveLeft = Fx.Transitions.linear.easeOut;


function getAktLevel(){
	var aktLi = $('sub').getElement('strong');
	if (aktLi) {
		if (aktLi.hasClass('s_1')) {
			aktLevel = 1;
		}
		if (aktLi.hasClass('s_2')) {
			aktLevel = 2;
		}
		if (aktLi.hasClass('s_3')) {
			aktLevel = 3;
		}
		if (aktLi.hasClass('s_4')) {
			aktLevel = 4;
		}
	}	
}



function makeBackLink(){
	var teaser = $('teaser');
	var rootLine = teaser.getFirst();
	var back = rootLine.getLast();
	var backLink = back.clone()
	var text = backLink.get('text');
	backLink.set('text','zurück zu '+text);
	backLink.injectInside('backmenu');
	$('backmenu').setStyle('visibility', 'visible');	
}

function getElementLevel(element){
	if (element) {
		var className = element.getProperty('class');
		var level = className.substring(className.length - 1);
	}else{
		level = 0;
	}
	return level.toInt();
}

function setAktOpacity(ulAkt){
	var liChilds = ulAkt.getChildren();
	liChilds.each(function(liElement){
		var aChilds = liElement.getChildren();
		aChilds.each(function(aElement){
			if(aElement.match('a')){
				aElement.setStyle('opacity', opac);
			}
		});
	});		
}

function setSelectedStyle(){
	var aktStrong = $('sub').getElement('strong');
	var aktA = aktStrong.getElement('a');
	aktA.setStyle('opacity', '1.0');
	aktA.setStyle('background-color', colorBlue);
	var aktIcon = aktStrong.getElement('span.li_mark');
	aktIcon.setStyle('color', colorWhite);
}

function showATagHigh(aTag){
	if(aTag.match('a')){
		aTag.set('morph', {});
		aTag.setStyle('opacity', 1);
		aTag.setStyle('background-color', colorBlue);
		var aktIcon = aTag.getElement('span.li_mark');
		aktIcon.set('morph', {});
		aktIcon.setStyle('opacity', 1);
		aktIcon.setStyle('color', colorWhite);
	}
}

function showATagLow(aTag){
	if(aTag.match('a')){
		aTag.set('morph', {});
		aTag.setStyle('opacity', opac);
		aTag.setStyle('background-color', colorGrey);
		var aktIcon = aTag.getElement('span.li_mark');
		aktIcon.set('morph', {});
		aktIcon.setStyle('opacity', opac);
		aktIcon.setStyle('color', colorBlue);
	}
}

function moveLevelIn(ul,ulWidth){
	ul.setStyle('width', ulWidth);
	/*
	ul.setStyle('width', 0);
	ul.morph({
		'transition': transitionSlideIn,	 
		'duration': durSlideIn,
		'width': ulWidth		
	});
	*/
}



function positionAktLevel(){
	var ul1 = $('sub').getElement('ul'); //$E('ul', 'sub');
	var ul2 = $('sub').getElement('ul ul'); //$E('ul ul', 'sub');
	var ul3 = $('sub').getElement('ul ul ul'); //$E('ul ul ul', 'sub');
	var ul4 = $('sub').getElement('ul ul ul ul'); //$E('ul ul ul ul', 'sub');
	var level = aktLevel.toInt();
	switch(level){
		case 1:
			if(ul2){
				ul1.setStyle('visibility', 'hidden');
				//*** Nur aktives ul sichtbar
				var aktStrong = $('sub').getElement('strong');
				var aktLi = aktStrong.getParent();
				var subUl = aktLi.getParent();
				if(subUl){
					subUl.setStyle('visibility', 'visible');
					subUl.setStyle('left',pos1);	
					setAktOpacity(subUl);
					moveLevelIn(subUl,widthTop);
				}
				if(ul3){
					ul3.setStyle('visibility', 'hidden');
				}
				makeBackLink();
			}else{
				ul1.setStyle('visibility', 'visible');
				setAktOpacity(ul1);
				setSelectedStyle();
				moveLevelIn(ul1,widthSub);
			}
			break
		case 2:
			ul1.setStyle('visibility', 'hidden');
			ul2.setStyle('visibility', 'hidden');
			//*** Nur aktives ul sichtbar
			var aktStrong = $('sub').getElement('strong');
			var aktLi = aktStrong.getParent();
			var subUl = aktLi.getParent();
			if(subUl){
				subUl.setStyle('visibility', 'visible');
				subUl.setStyle('left',pos1);	
				setAktOpacity(subUl);
				moveLevelIn(subUl,widthSub);
			}
			makeBackLink();
			break
		case 3:
			ul1.setStyle('visibility', 'hidden');
			ul2.setStyle('visibility', 'hidden');
			//*** Nur aktives ul sichtbar
			var aktStrong = $('sub').getElement('strong');
			var aktLi = aktStrong.getParent();
			var subUl = aktLi.getParent();
			if(subUl){
				subUl.setStyle('visibility', 'visible');
				subUl.setStyle('left',pos2);	
				setAktOpacity(subUl);
				moveLevelIn(subUl,widthSub);
			}
			makeBackLink();
			break
		default:
			// 0
			ul1.setStyle('visibility', 'visible');
			moveLevelIn(ul1,widthTop);
			setAktOpacity(ul1);
			if(ul2){
				ul2.setStyle('visibility', 'hidden')
			}
			if(ul3){
				ul3.setStyle('visibility', 'hidden')
			}
			if(ul4){
				ul1.setStyle('left', pos1);
			}
			$('backmenu').setStyle('visibility', 'hidden');
	}	
}

/*
 * @param: element is the link who fires the event
 */
function showSubLevel(overElement){
	if(overElement){
		var overLevel = getElementLevel(overElement);
		var overLevel = overLevel+1;
		var liParent = overElement.getParent();
		if(liParent.match('strong')){
			liParent = liParent.getParent();
		}
		var ulChild = liParent.getElement('ul');
		if (ulChild) {
			ulChild.setStyle('width', 0);
			//ulChild.setStyle('hight', 0);
			var allChilds = ulChild.getChildren();
			liClass = 'li.li_' + overLevel;
			allChilds.each(function(subElement){	
				if(subElement.match(liClass)){
					var aChilds = subElement.getChildren();
					aClass = 'a.a_' + overLevel;
					aChilds.each(function(subLink){
						if(subLink.match(aClass)){
							subLink.setStyle('visibility', 'visible');
							subLink.setStyle('opacity', opac);
							var aktIcon = subLink.getElement('span.li_mark');
							aktIcon.setStyle('visibility', 'visible');
						} else {
							if(subLink.match('a')){
								subLink.setStyle('visibility', 'hidden');
							}
						}
					});
				}
			});
			ulChild.setStyle('width', widthSub);
			/*
			ulChild.setStyle('width', 0);
			ulChild.morph({
				'transition': transitionSlideIn,		  
				'duration': durSlideIn,
				'width': widthSub
			});
			*/
		}
	}
}

function hideAllSubLevels(overElement){
	var overLevel = getElementLevel(overElement);
	var hideLevel = overLevel+1;
	for(var i=hideLevel; i<=4; i++){
		var uls = $$('#submenu .ul_'+i);
		uls.each(function(ul){
			ul.setStyle('visibility', 'hidden');
		});
		var subLinks = $$('#submenu .a_'+i);
		subLinks.each(function(element){
			element.set('morph', {});
			element.setStyle('opacity', opac);
			element.setStyle('background-color', colorGrey);
			element.setStyle('visibility', 'hidden');
			var aktIcon = element.getElement('span.li_mark');
			aktIcon.set('morph', {});
			aktIcon.setStyle('opacity', opac);
			aktIcon.setStyle('color', colorBlue);
			aktIcon.setStyle('visibility', 'hidden');
		});		
	}	
}

function hideSubLevels(){
	var aktStrong = $('sub').getElement('strong');
	var hideLevel = 1;
	if(aktStrong){
		var hideLevel = getElementLevel(aktStrong);
	}
	hideLevel = hideLevel+1;
	for(var i=hideLevel; i<=4; i++){
		var subLinks = $$('#sub .a_'+i);
		subLinks.each(function(element){
			element.setStyle('visibility', 'hidden');
			var aktIcon = element.getElement('span.li_mark');
			aktIcon.setStyle('visibility', 'hidden');
		});		
	}	
}

function setOpacity(){
	var lvl = aktLevel+1;
	var aktLinks = $$('#submenu .a_'+lvl);
	aktLinks.each(function(element){
		element.setStyle('opacity', opac);
	});			
}

function skInit(){
  	$('submenu').setStyle('visibility', 'visible');
	$('submenu').setStyle('left', '5px');
	$('submenu').setStyle('z-index', '999');
	$('sub').setStyle('visibility', 'visible');
	//alert('Menu aktiv!');
	getAktLevel();
	positionAktLevel();
	if(aktLevel == 0){
		setOpacity();
	}
	var list = $$('#submenu a');
	list.each(function(element) {
		element.addEvents({
			'mouseleave': function(){
				prevElement = element;
				if(element.getStyle('visibility') == 'visible'){
					strongParent = element.getParent();
					if(!strongParent.match('strong')){
						showATagLow(element);
					}
				}
			},
			'mouseenter': function(){	
				//e.stop();
				showATagHigh(element);
				hideAllSubLevels(element);
				showSubLevel(element);
			},
			'click': function(event){
				event.stop();
				linkTarget = this.get('href');
				var overLevel = getElementLevel(this);
				var aUp1Class = 'a.a_' + (overLevel-1);
				var aTopClass = 'a.a_' + (overLevel-2);
				var liParent = this.getParent();
				var ulParent  = liParent.getParent(); //Das nach links fahren
				var ul1 = $('sub').getElement('ul');	
				var ulParentDistance = liParent.getPosition(ul1);
				var x = ulParentDistance['x'];
				if(x < 150){
					//**** Ist schon links ****	
					ulParent.morph({
						'transition': transitionSlideOut,		  
						'duration': durSlideOut,
						'width': 0,
						'opacity': 0,
						onComplete: function(){ top.location.replace(linkTarget); }
					});
				}else { 
					if( (x > 200) && (x < 400) ){
						//**** Ist Mitte ****
						var ulUp1 = ulParent.getParent().getParent();
						var liUp1Array = ulUp1.getChildren();
						liUp1Array.each(function(liElement){	
							var aUp1Array = liElement.getChildren();
							aUp1Array.each(function(aElement){
								if(aElement.match('strong')){
									aElement = aElement.getChildren();
								}
								if(aElement.match(aUp1Class)){
									aElement.morph({
										'transition': transitionSlideOut,		  
										'duration': durSlideOut,
										'width': 0,
										'opacity': 0
									});
								}	
							});
						});
						if (ulParent.match('ul')) {
							ulParent.morph({
								'transition': transitionMoveLeft,		  
								'duration': durMoveLeft,
								'left': 0,
								onComplete: function(){ top.location.replace(linkTarget); }
							});
						}
					}else{
						//**** Ist Rechts ****
						var ulUp1 = ulParent.getParent().getParent();
						var ulTop = ulUp1.getParent().getParent();
						var liTopArray = ulTop.getChildren();
						liTopArray.each(function(liTopElement){	
							var aTopArray = liTopElement.getChildren();
							aTopArray.each(function(aTopElement){
								if(aTopElement.match('strong')){
									aTopElement = aTopElement.getChildren();
								}
								if(aTopElement.match(aTopClass)){
									aTopElement.morph({
										'transition': transitionSlideOut,		  
										'duration': durSlideOut,
										'width': 0,
										'opacity': 0
									});
								}	
							});
						});
						var liUp1Array = ulUp1.getChildren();
						liUp1Array.each(function(liElement){	
							var aUp1Array = liElement.getChildren();
							aUp1Array.each(function(aElement){
								if(aElement.match('strong')){
									aElement = aElement.getChildren();
								}
								if(aElement.match(aUp1Class)){	
									aElement.morph({
										'transition': transitionSlideOut,		  
										'duration': durSlideOut,
										'width': 0,
										'opacity': 0
									});
								}	
							});
						});
						if (ulParent.match('ul')) {
							ulParent.morph({
								'transition': transitionMoveLeft,		  
								'duration': durMoveLeft,
								'left': pos3,
								onComplete: function(){ top.location.replace(linkTarget); }
							});
						}
					}
				}
			

				
			}

		});
 
	});
	var area = $('sub');
	area.addEvent(
		'mouseleave', function(){
			hideSubLevels.delay(550);
		}
	);

}

/********* Flash *****/
var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

function flashMSIE(){
	var axo;
	var e;
	var hasFlash;
	hasFlash = false;
	// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry
	try {
		// version will be set for 7.X or greater players
		axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
		hasFlash = true;
	} catch (e) {
	}
	if (!hasFlash)
	{
		try {
			// version will be set for 6.X players only
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
			hasFlash = true;
		} catch (e) {
		}
	}
	if (!version)
	{
		try {
			// version will be set for 4.X or 5.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			hasFlash = true;
		} catch (e) {
		}
	}
	if (!version)
	{
		try {
			// version will be set for 3.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			hasFlash = true;
		} catch (e) {
		}
	}
	if (!version)
	{
		try {
			// version will be set for 2.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			hasFlash = true;
		} catch (e) {
			hasFlash = false;
		}
	}
	return hasFlash;
}

function checkFlash(){
	// NS/Opera version >= 3 check for Flash plugin in plugin array
	var hasFlash = false;
	
	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			hasFlash = true;
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) hasFlash = true;
	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) hasFlash = true;
	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) hasFlash = true;
	else if ( isIE && isWin && !isOpera ) {
		hasFlash = flashMSIE();
	}	
	return hasFlash;
}


window.addEvent('load', function(){
	if(!checkFlash()){								 
		skInit();
	}else{
		$('submenu').setStyle('visibility', 'hidden');
		$('sub').setStyle('visibility', 'hidden');
	}
});

