var min_height = 38;
var normal_height = 38;
var item_min_height = 30;
var item_normal_height;

var Menu = {
    go: function() {
        if($('menu')) {
            Menu.addEffects();
        }
        
    },

    addEffects: function() {
        var entries = $$('#menu li.activator div');
        var menuitems = $$('#menu li.activator a.menuitem');
        
        
        
        var slider = new Fx.Elements(entries, {wait: false, duration: 300, transition: Fx.Transitions.quadOut});
        var blender = new Fx.Elements(menuitems, {wait: false, duration: 300, transition: Fx.Transitions.quadOut});
        
        item_normal_height = menuitems[0].getStyle('height').toInt();
        
        
        entries.each(function(entry, i) {
            
            entry.addEvent('mouseover', function(e) {
            
                
                if (entry.getElements('ul li').length > 0) {

                    e = new Event(e).stop();            

                    var ents = {};
                    var subs = {};
                    var sub;
                    
                    var entry_height = min_height + 3 + entry.getElements('ul')[0].getSize()['size']['y'];
                
                
                    ents[i] = {
                        'height': [entry.getStyle('height').toInt(), entry_height]
                    };
                    
                    
                    if (entry.getParent().getElements('ul')) {
                        sub = entry.getElements('a.menuitem')[0];
                        var index = menuitems.indexOf(sub);
                        if (index > -1) {
                            subs[index] = {
                                'height': [sub.getStyle('height').toInt(), item_min_height]
                            };
                        }
                    }

                    entries.each(function(ent, i) {
                        if (ent != entry) {
                            var h = ent.getSize()['size']['y'];

                            if (h != min_height) {
                                ents[i] = { 
                                    'height': [h, min_height] 
                                };
                            }
                        }                    
                    });
                    
                    menuitems.each(function(item, i) {
                        if (sub != item) {
                            subs[i] = {
                                'height': [item.getStyle('height').toInt(), item_normal_height]
                            };
                        }
                    });
                
                    slider.start(ents);
                    blender.start(subs);
                }
            });
        });


        var acts = $$('#menu *');                   
            
        document.addEvent('mouseover', function(e) {
            e = new Event(e);
            var rel = e.relatedTarget;
            
            
            
            if (acts.indexOf(rel) > -1) {
                var ents = {};
                var subs = {};


                entries.each(function(entry, i) {
                    if (entry.getSize()['size']['y'] !=normal_height) {
                        ents[i] = {
                            'height': [entry.getSize()['size']['y'], normal_height]
                        };
                    }
                });
                
                menuitems.each(function(item, i) {
                    subs[i] = {
                        'height': [item.getStyle('height').toInt(), item_normal_height]
                    };
                });

                slider.start(ents);
                blender.start(subs);
            };

        });           

    }
}

window.addEvent('domready', Menu.go);
