/**
 * @author Marcel Fiedrich
 */

window.addEvent('domready',function(){
	
	var mainNavContainer = $('mainNav');
	var productNavContainer = $('productNav');
	var productNavCategories = productNavContainer.getElements('li.navObj');
	var selectNavFd = $('selectNavFd');
	var selectNavEl = $('selectNav');
	var slideContainer = $('navContainer');
	var slideElChildEls = 'li';
	var slideActorLeft = $('leftNavArrow');
	var slideActorRight = $('rightNavArrow');
	
	var myScroll;
	
	var loeweMainNavigation = function() {
		if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPad/i))) {
			var navElWidth = 138;
			var navLength = selectNavEl.getElements('li').length;
			var navWidth = navElWidth * navLength;
			selectNavEl.setStyles({
				'width': navWidth + 120,
				'height': 120,
				'left': 0,
				'position': 'relative'
			});
			myScroll = new iScroll('selectNav', {
				fadeScrollbar: false,
				shrinkScrollbar: false
			});
			
		} else {
			loeweElementSlider(slideContainer, selectNavEl, slideElChildEls, slideActorLeft, slideActorRight);
		}
		
		selectNavFd.setStyle('display', 'none');
		selectNavFd.setStyle('visibility', 'visible');
		var fxSlideListener = true;
		var mainNavFxSlider = new Fx.Slide('navContainer', {
			//wrapper: 'selectNavFd',
			duration: 300,
			transition: 'sine:in:out',
			onStart: function() {
				fxSlideListener = false;
			},
			onComplete: function() {
				fxSlideListener = true;
			}
		}).hide();
		
		var navSlideInOut = function() {
			var navSlideOut = null;
			var navDisplayOut = null;
			var navSlideIn = null;
			var navDisplayIn = null;
			var periodicalTimer = null;
			var setActObjs = null;
			var navFirstPos = null;
			var navObjAct = null;
			var flashRemote = null;
			
			$$('li.selectObj').each(function(obj, index) {
				obj.setStyle('opacity', '0.3');
			});
			
			var getSetActProduct = function(actObj) {
				
				//console.log(actObj);
				//selectNavEl.getElement('a.'+actObj);
				$$('li.selectObj').each(function(obj, index) {
					obj.setStyle('opacity', '0.3');
				});
				var loeweFx = new Fx.Tween(selectNavEl, {
					fps: 300,
					unit: 'px',
					link: 'chain',
					duration: 500,
					transition: 'back:out'
				});
				productNavCategories.each(function(obj, index){
					obj.removeClass('actObj');
				});
				$(actObj).getParent('li').addClass('actObj');
				
				grpPos = $(actObj).getPosition(productNavContainer).x;
				itemPos = (($(document.body).getElement('a.'+actObj).getProperty('rel') == null) ? '' : $(document.body).getElement('a.'+actObj).getProperty('rel').toInt());
				
				navPos = $(document.body).getElement('a.'+actObj).getParent('li').getPosition(selectNavEl).x;
				applePos = navPos + grpPos;
				navPos = navPos-grpPos;
				navPos = (itemPos == '' ? navPos : navPos+itemPos);
				
				$$('li.selectObj').each(function(obj, index) {
					obj.removeEvents();
					obj.addEvents({
						'mouseenter': function(e){
							this.setStyle('opacity', '1');
						},
						'mouseleave':  function(e){
							this.setStyle('opacity', '0.3');
						}
					});
					if(obj.getFirst('a').hasClass(actObj)) {
						obj.setStyle('opacity', '1');
						obj.removeEvents();
					}
				});
				
				if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPad/i))) {
					myScroll.scrollToElement($(document.body).getElement('a.'+actObj), '300ms');
					myScroll.scrollTo(-navPos, 0, '400ms');
				} else {
					loeweFx.start('left', -navPos);
				}
				
			};
			
			var setActProductAppleMobile = function(actObj) {
				//myScroll.scrollTo(-navPos);
			}
			
			var flashControl = function(flashEl, action) {
				if(Browser.Plugins.Flash.version) {
					if($defined(flashEl)) {
						if(homeAnimation == true)
							//console.log(action);
							Swiff.remote(flashEl, action);
					}
					//Swiff.remote(this, action);
				}
			}
			
			productNavCategories.each(function(navObj, index) {
				
				if(navObj.get('id')!='agNavObj') {
						navObj.addEvents({
							'click': function(e) {
								e.stop();
								var checkListener = function(actObj) {
										//console.log(actObj.getElement('a').get('id'));
										$clear(periodicalTimer);
										setActObjs = getSetActProduct.delay(275, getSetActProduct, actObj.getElement('a').get('id'));
									
								}
								if(!mainNavFxSlider.open) {
									//fxSlideListener == true
									e.stopPropagation();
									navDisplayIn = selectNavFd.setStyle.delay(20, selectNavFd, ['display', 'block']);
									flashRemote = flashControl.delay(25, $('flashConLarge'), [$('flashConLarge'), 'playAnimation']);
									navSlideIn = mainNavFxSlider.slideIn.delay(25, mainNavFxSlider);
									periodicalTimer = checkListener.periodical(100, this, this);
									
								} else {
									checkListener(this);
								}
								
							},
							'mouseenter' : function(e) {
								var checkListener = function(actObj) {
									//console.log(actObj.getElement('a').get('id'));
									$clear(periodicalTimer);
									setActObjs = getSetActProduct.delay(275, getSetActProduct, actObj.getElement('a').get('id'));
								
								}
								if(mainNavFxSlider.open) {
									checkListener(this);
								}
							},
							'mouseleave': function(e) {
								$clear(navDisplayIn);
								$clear(flashRemote);
								$clear(navSlideIn);
								$clear(periodicalTimer);
								$clear(setActObjs);
								if(fxSlideListener && !mainNavFxSlider.open)
								this.removeClass('actObj');
							}
						})
				}
			});
			if(fxSlideListener == true) {
				mainNavContainer.addEvents({
					'mouseenter': function(e) {
						if(mainNavFxSlider.open) {
							$clear(navDisplayOut);
							$clear(flashRemote);
							$clear(navSlideOut);
							$clear(navFirstPos);
							$clear(navObjAct);
						}
					},
					'mouseleave': function(e) {
						if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPad/i))) {
							mainNavFxSlider.slideOut();
							var setUnActive = function() {
								$$('li.selectObj').each(function(obj, index) {
									obj.setStyle('opacity', '0.3');
								});
								productNavCategories.each(function(navObj, index) {
									navObj.removeClass('actObj');
								});
								navDisplayOut = selectNavFd.setStyle.delay(800, selectNavFd, ['display', 'none']);
							}
							setUnActive();
							
						} else {
							if(mainNavFxSlider.open) {
								navSlideOut = mainNavFxSlider.slideOut.delay(500, mainNavFxSlider);
								flashRemote = flashControl.delay(650, $('flashConLarge'), [$('flashConLarge'), 'stopAnimation']);
								navFirstPos = selectNavEl.setStyle.delay(800, selectNavEl, ['left', 20]);
								var setUnActive = function() {
									$$('li.selectObj').each(function(obj, index) {
										obj.setStyle('opacity', '0.3');
									});
									productNavCategories.each(function(navObj, index) {
										navObj.removeClass('actObj');
									});
								}
								navObjAct = setUnActive.delay(800, setUnActive);
							}
							navDisplayOut = selectNavFd.setStyle.delay(800, selectNavFd, ['display', 'none']);
						}
					}
				});
			}
		}
		navSlideInOut();
		
	} 
	
	loeweMainNavigation();
	
});