// JavaScript Document


//		Settings: Define in Template
var setAFM = {						// paarNav Settings
	'startPos':			            0,			    // px
	'incrementPos':			        160,			// px
	'level2Height':			        160,			// px
	'verticalPos':        	        20,		        // px
	'startVerticalPos':             0,		        // px
	'startshiftVerticalPos':        140,		    // px
	'incrementVerticalPos':			40,			    // px
	'colorLow': 					'#000000',
	'colorHigh': 					'#9e2f37',
	/*
	'colorLow': 					new Color('#9e2f37'),
	'colorHigh': 					new Color('#000'),
	*/
    'level1Class':          '#navContainer ul.nav li.level1',       // string 
    'activeClass':          'active',               // string
    'activeSubSelect':      'a.level1',                // string
    'activeMenuItem':       ''  
}; 

var activeFirstMenu = {
    showSub: function(toShow){ 
        if (setAFM.activeMenuItem.parent) {                     
            setAFM.activeMenuItem.ulLevel2.each(function(elA){
                elA.subEffect.stop();
                if (toShow) {
                    elA.subEffect.set({'color':setAFM.colorHigh});
                    if (elA.hasClass('active')) {
                        elA.subEffect.start({'opacity':'100'});
                    } else elA.subEffect.start({'opacity':'100', 'color':setAFM.colorLow});     
                } else elA.subEffect.set({'opacity':'0'});
            });
        }
    },
    
	ifShift: function(){
        if (setAFM.entry) {  
            setAFM.entry = false;
            setAFM.posDiff = setAFM.activeMenuItem.pos - setAFM.startPos;
            setAFM.posNegDiff = setAFM.posDiff - setAFM.posMax - setAFM.incrementPos;
		    menuItemsLevel1.each(function(liLevel1){
		        setAFM.posNow = (liLevel1.pos-setAFM.posDiff<setAFM.startPos) ? liLevel1.pos-setAFM.posNegDiff : liLevel1.pos-setAFM.posDiff; 
                liLevel1.shiftBehindEffect.start({ 'left':setAFM.posNow, 'top':setAFM.verticalPos }).chain(function() {
                    menuTotal.addClass('bewegt');
                    menuTotal.removeClass('steht');
                    activeFirstMenu.showSub(true); 
                }, this);
                liLevel1.pos = setAFM.posNow;
                setAFM.posNow += setAFM.incrementPos;  
    		}, this);
        } else if (setAFM.activeMenuItem.pos != setAFM.startPos) activeFirstMenu.shiftPos();
        else activeFirstMenu.showSub(true);
	},
	
    // shift behind (simple version)
    shiftPos: function(){
     menuItemsLevel1.each(function(liLevel1){
         liLevel1.pos -= setAFM.incrementPos; 
         if (liLevel1.pos == setAFM.startPos - setAFM.incrementPos) {            
             liLevel1.pos = setAFM.posMax;
             liLevel1.shiftBehindEffect.start({ 'left':liLevel1.pos, 'top':setAFM.verticalPos }).chain(
                 activeFirstMenu.ifShift.pass(activeFirstMenu.ifShift)
                 );
         } else {
             liLevel1.shiftEffect.start(liLevel1.pos);   
         }
     });
    },
    clickIt: function(el) {
         if (menuItemsLevel1.test(el.parent = el.getParent().getParent().getParent())) {
            if (setAFM.activeSubMenuItem != el) {
                setAFM.activeSubMenuItem = el;
                $ES('a', el.getParent().getParent()).each(function(elAb){
                    elAb.subEffect.stop();
                    elAb.subEffect.set({'color':setAFM.colorLow});
                    
                    elAb.removeClass('active'); 
                    elAb.subEffect.stop; 
                    if (elAb != setAFM.activeSubMenuItem && elAb.subEffect) {
                        elAb.subEffect.set({'color':setAFM.colorLow});
                    } else if (elAb == setAFM.activeSubMenuItem && elAb.subEffect) {
                        elAb.subEffect.set({'color':setAFM.colorHigh});
                    };
                });                            
                el.addClass('active');    
            }
        } else {
            el.parent = el.getParent()
            if (menuItemsLevel1.test(el.parent)) $ES('li a', el.parent).each(function(elA){
                if ($defined(elA.subEffect)) elA.subEffect.set({'color':setAFM.colorLow}); 
            });
        }
        
        if (menuItemsLevel1.test(el.parent)) {
            if (setAFM.activeMenuItem != el.parent) {
                if (!setAFM.entry) { 
                    setAFM.activeMenuItem.a.removeClass('active');
                    setAFM.activeSubMenuItem = false;
                    setAFM.activeMenuItem.ulLevel2.each(function(elA) { elA.removeClass('active'); });  
                    activeFirstMenu.showSub(false);     
                }
                setAFM.activeMenuItem = el.parent;
                this.ifShift();
                setAFM.activeMenuItem.a.addClass('active');
            }
        }
    },
    clickMain: function(){
        
    }, 
    clickSub: function(){
        
    },     
	init: function(){
        menuItemsLevel1 = $$(setAFM.level1Class);
        menuTotal = $E('#navContainer ul.nav');
        setAFM.posNow = 'false';
        setAFM.posMax = setAFM.startPos - setAFM.incrementPos;
        
        menuItemsLevel1.each(function(liLevel1){
            setAFM.posMax += setAFM.incrementPos;
            if (setAFM.posNow != 'false') setAFM.posNow += setAFM.incrementPos;
		    if (liLevel1.getProperty('class').indexOf(setAFM.activeClass) != -1) {
		        setAFM.posNow = setAFM.startPos;
		        setAFM.activeMenuItem = liLevel1;
		    }
		    if (setAFM.posNow != 'false') {
		        liLevel1.setStyles({
                	'position':'absolute',
                	'left':setAFM.posNow,
                	'top':setAFM.verticalPos
                });   
            }
            liLevel1.pos = setAFM.posNow;
            
            
            // shift effect
            liLevel1.shiftEffect = new Fx.Style( liLevel1, 'left', {
            	duration: 1000,
            	wait: false,
            	transition: Fx.Transitions.linear
            });
            
            liLevel1.shiftBehindEffect = new Fx.Styles( liLevel1, {
            	duration: 1000,
            	wait: false,
            	transition: Fx.Transitions.Expo.easeInOut
            });
            
            liLevel1.a = liLevel1.getElement('a');                  
            
            // move on click
            liLevel1.a.onclick = function(evt) {
                activeFirstMenu.clickIt(liLevel1.a);
            }.bind(this);
   

            liLevel1.ulLevel2 = liLevel1.getElements('ul a');
            if (liLevel1.ulLevel2) {                     
                liLevel1.parent = true;
                liLevel1.ulLevel2.each(function(elA){
                    elA.subEffect = new Fx.Styles( elA, {
                	    duration: 4000,
                	    wait: false
                    });
                    if (setAFM.activeMenuItem == liLevel1) elA.subEffect.set({'opacity':'100'}); 
                    else elA.subEffect.set({'opacity':'0'}); 
                    elA.onclick = function(evt) {
                        activeFirstMenu.clickIt(elA);
                    }.bind(this);
                    
                    // highlight on mouse-over
                    elA.addEvent('mouseenter', function(evt){
                        elA.subEffect.stop();
                        elA.setStyles({'opacity':'100', 'color':setAFM.colorHigh});
                    });
                    elA.addEvent('mouseleave', function(evt){
                        if (setAFM.activeSubMenuItem != elA && elA.subEffect) {
                            elA.subEffect.stop();
                            elA.setStyles({'opacity':'100', 'color':setAFM.colorLow}); 
                        }
                    });
                });
            }
		}, this);            
		
		setAFM.entry = false; 
	    if (setAFM.posNow == 'false') {
	        setAFM.entry = true;
		    setAFM.posNow = setAFM.startPos;
		    setAFM.verticalPosNow = setAFM.startshiftVerticalPos;
		    menuItemsLevel1.each(function(liLevel1){    
		        liLevel1.setStyle('position','absolute');
        //        liLevel1.shiftBehindEffect.start({ 'left':setAFM.startPos, 'top':setAFM.verticalPosNow }); 
                liLevel1.shiftBehindEffect.start({ 'left':[0, setAFM.startPos], 'top':[-100,setAFM.verticalPosNow] });
                setAFM.verticalPosNow += setAFM.incrementVerticalPos;
                liLevel1.pos = setAFM.posNow; 
                setAFM.posNow += setAFM.incrementPos;  
    		}, this);
		} else {
		    menuTotal.addClass('bewegt'); 
		    menuTotal.removeClass('steht'); 
		    menuItemsLevel1.each(function(liLevel1){    
        		setAFM.posNow += setAFM.incrementPos;
                if (liLevel1.pos == 'false') {
    		        liLevel1.setStyles({
                    	'position':'absolute',
                    	'left':setAFM.posNow,
                    	'top':setAFM.verticalPos 
                    });
                    liLevel1.pos = setAFM.posNow;
                }  
    		}, this);    
		}	
    }     
};