﻿

IEMenuManagerClass = new Class({

    initialize: function() 
    {    
        /* Get all the list items within the menu */
        $$(".atl_menu li.withchildren").each(function (li) {
        
            var subUl = li.getFirst('ul');
                          
            /* assign the function to the LI */
            li.onmouseover = function() {
                /* display the inner menu */
                subUl.setStyle('display', 'block');
            };
            				
            li.onmouseout = function() {
                subUl.setStyle('display', 'none');
            };

            
        }.bind(this));
    }
});

var IEMenuManager = null;
if ($isIE()) {
    window.addEvent('domready', function() {
        //IEMenuManager = new IEMenuManagerClass();
    });
}

MenuManagerClass = new Class({

    _menu: null,

    initialize: function()
    {
        this._menu = $('nav_tabs');
        
        if (this._menu) {
            this._createHoverBehaviour();
            if (!$isIE6()) {
                this._createSeperators();
            }
        }
    },
    
    _createHoverBehaviour: function()
    {
   
        /* Get all the list items within the menu */
        
         $$(".atl_menu li.withchildren").each(function (li) {        
         
            var subUl = li.getFirst('ul');
            
            subUl.setStyle('display', 'none');
            
            var ths = this;
                      
            li.onmouseover = ths._onSubMenuLiHover.bind(this, [li, subUl]);
            li.onmouseout = ths._onSubMenuLiLeave.bind(this, [li, subUl]);
            
           
            
        }.bind(this));        
    },

    _onSubMenuLiHover: function(li, subUl)
    {    
        if ($defined(subUl.delay)) {
            $clear(subUl.delay);
        }
        subUl.delay = this._makeSubMenuAppear.delay(150, this, [subUl]);
    },
    
    _onSubMenuLiLeave: function(li, subUl)
    {
        if ($defined(subUl.delay)) {
            $clear(subUl.delay);
        }
        
        subUl.delay = this._makeSubMenuDisappear.delay(500, this, [subUl]);
    },
    
    _isFresh: true,
    _makeSubMenuAppear: function(ul)
    {
        if (this._isFresh) {
            this._isFresh = false;
            this._makeOtherMenusDisappear(ul);            
        }

        if (!ul.visible()) {
        
            ul.setStyle('opacity', 0);
            ul.setStyle('overflow', 'hidden');
            ul.setStyle('display', 'block');
            
            var size = ul.getSize();
            
            ul.setStyle('height', '0px');
            
            if (!ul.hasClass('level_1')) {
                ul.setStyle('width', '0px');
            }
            
            var myEffect = new Fx.Morph(
                ul, {
                    duration: 300,
                    transition: 'quart:in',
                    onComplete: function(ele) {
                        ul.setStyle('overflow', 'visible');
                    }
                });
             
            myEffect.start({
                'height': size.y,
                'width': size.x,
                'opacity': 1
            });
        }
              
        if (ul.hasClass('level_1')) {
            this._isFresh = true;
        }        
    },
    
    _makeSubMenuDisappear: function(ul)
    {    
        $clear(ul.delay);
        if (ul.visible()) {
            ul.setStyle('display', 'none');
        }
    }, 
    
    _makeOtherMenusDisappear: function(keepUl)
    {
        var allowedUls = keepUl.getParents('ul');
    
        this._menu.getElements('li.withchildren ul').each(function(ul) {
        
            if ((ul != keepUl) && !allowedUls.contains(ul)) {
                this._makeSubMenuDisappear(ul);
            }
        
        }.bind(this));
    },
    
    _createSeperators: function()
    {
        this._menu.getElements('ul').each(function(ul) {
        
            var level = 0;
            var parents = ul.getParents('ul');
            if (parents) level = parents.length;
            
            if (level > 0) {
            
                ul.getChildren().each(function(li, idx) {
                    
                    if ((idx > 0) || (level == 1)) {
                    
                        var seperator = new Element('li');
                        seperator.addClass('seperator');
                        
                        seperator.inject(li, 'before');
                    }

                }.bind(this));
                        
            }               
        
        }.bind(this));    
    }
    
    /*
    _getUlPositionPath: function(ul)
    {
        var path = this._getUlPositionText(ul);
        while (ul = ul.getParent('ul')) {
        
            path = this._getUlPositionText(ul) + ' - ' + path;
        }
        
        return path;               
    },
    
    _getUlPositionText: function(ul)
    {
        var a = ul.getParent().getFirst('a');
        return a ? a.innerHTML.trim() : '';
    }
    */


});

var MenuManager = null;
window.addEvent('domready', function() {    
    MenuManager = new MenuManagerClass();
});
