var NJS = NJS || {};

NJS.kkLinkList = new Class({
	initialize: function(element) {
		animationRunning = false;
		var that = this;
		this.element = $(element);
		var linkItems = this.element.getElements('a');
		
		linkItems.each(function(el){
			
			if(el.getParent('li').hasClass('active')) {
				el.activeItem = true;
			} else {
				el.activeItem = false;
			}
			
			el.subHeadline = el.getElement('span[class=subheadline]');
			el.glowingImg = el.getElement('span[class=image-glow]');
			
			//el.position = that.setPosition(el.subHeadline);
			el.animationRunning = false;
			
			el.move = new Fx.Morph(el.subHeadline, {duration: 'short', link: 'cancel', transition: Fx.Transitions.Sine.easeInOut});
			el.glow = new Fx.Morph(el.glowingImg, {duration: 'short', link: 'cancel', transition: Fx.Transitions.Sine.easeOut});
			
			if(el.activeItem == true) {
				el.glowingImg.setStyle('opacity', 1);
				//el.subHeadline.setStyle('bottom', el.position.old.y)
			}
			
			if(el.activeItem == false) {
				el.addEvent('mouseenter', function(event) {
					//that.move(el, 'in');
					that.glow(el, 'in');
				});
				el.addEvent('mouseleave', function(event) {
					//that.move(el, 'out');
					that.glow(el, 'out');
				});
			}
		});
	},
	setPosition: function(element) {
		var position = [];
		position.old = []; 
		position.actual = []; 
		
		position.old.y = element.getStyle('bottom');
		position.actual.y = -(element.getSize().y);
		
		element.setStyle('bottom', position.actual.y);
		return position;
	},
	move: function(element, direction) {
		if(direction == 'in') {
			if(element.delayed) {
				$clear(element.delayed);
			}
			element.move.start({'bottom': [element.subHeadline.getStyle('bottom').toInt(), element.position.old.y]});
		} else if (direction == 'out') {
			element.delayed = (function() {
				element.move.start({'bottom': [element.subHeadline.getStyle('bottom').toInt(), element.position.actual.y]});
			}).delay(500);
		}
	},
	glow: function(element, direction) {
		element.glowingImg.setStyle('visibility', 'visible');
	
		
			if(direction == 'in' && !element.animationRunning) {
				
				// Abfrage für den Internet Explorer, der die Opacity des PNGs nicht animieren kann.
				if (navigator.appName != "Microsoft Internet Explorer") {
					element.glow.start({'opacity': [element.glowingImg.getStyle('opacity'), 1]});
				}
			} else if (direction == 'out' && !element.animationRunning) {
				// Abfrage für den Internet Explorer, der die Opacity des PNGs nicht animieren kann.
				
				if (navigator.appName != "Microsoft Internet Explorer") {
					element.glow.start({'opacity': [element.glowingImg.getStyle('opacity'), 0]});
				} else { 
					element.glowingImg.setStyle('visibility', 'hidden');
				}
			}
	}
});

NJS.kkNavigation = new Class({
	initialize: function(element) {
		var that = this;
		this.element = $(element);
		var linkItems = this.element.getChildren('li');
		
		linkItems.each(function(el, index) {
			
			el.noBackground = el.getElement('a').getStyle('background-image');
			el.hoBackground = el.noBackground.replace(/no.gif/g, "ho_withoutsubnav.gif");
			
			el.setStyle('z-index', index);
			el.indexZ = el.getStyle('z-index');
			
			that.addSeperatorClass(el);
			
			el.addEvent('mouseenter', function(event) {
				that.hover(el, 'in');
			});
			el.addEvent('mouseleave', function(event) {
				that.hover(el, 'out');
			});
			el.addEvent('onfocus', function(event) {
				that.hover(el, 'in');
			});
			/*
			el.addEvent('blur', function(event) {
				that.hover(el, 'out');
			});
			*/
		});
	},
	hover: function(el, direction) {
		if(el.getElement('ul')) {
			el.toggleClass('hover');
		
			if(direction == 'in') {
				el.setStyle('z-index', 999);
			} else if (direction == 'out') {
				el.setStyle('z-index', el.indexZ);
			}
		}
	},
	addSeperatorClass: function(el) {
		if(el.getElement('ul')) {
			var subNavList = el.getElement('ul').getChildren('li');
			var toplinks = []
			var subNavListLink = subNavList.each(function(el,index) {
				if (index != (subNavList.length - 1)) {
					if (el.getElement('a').hasClass('toplink') == true) {
						toplinks.push(el.getElement('a[class=toplink]').getParent('li'));
					}
				}
			});
			if(!toplinks.getLast('li').getNext('li').hasClass('last')) {
				toplinks.getLast('li').getNext('li').getElement('a').addClass('seperator');
			}
		}
	}
});

window.addEvent('domready', function() {
	if($('linklist')) {
		linkList = new NJS.kkLinkList('linklist');
	}
	if($('offer')) {
		linkList = new NJS.kkLinkList('offer');
	}
	if($('news')) {
		linkList = new NJS.kkLinkList('news');
	}
	navigationList = new NJS.kkNavigation('navigation');
}
);