/*
 * Menu 0.0.4
 * OmegaScorp
 */
jQuery.fn.extend({
    menu: function(json){
        
        var timeout    = 500;
        var closetimer = 0;
        var menuitem = 0;
        var type=0;
        var speed=1000;
        if(json!=undefined){
            switch(json.effect){
                case 'none': type=0; break;
                case 'fade': type=1; break;
                case 'slide': type=2; break;
                case 'size': type=3; break;
                default: type=0;
            }
            if(json.speed) speed=json.speed;
        }
        function open(){
            canceltimer();
            if($(this).find('ul').html()==null){
                close();
                return;
            }
            if((menuitem==0||$(this).find('ul').html()!=menuitem.html())&&$(this).find('ul').queue().length<=1){
                close();
                switch(type){
                    case 0: menuitem = $(this).find('ul').css({'display':'block'}); break;
                    case 1: menuitem = $(this).find('ul').fadeIn(speed); break;
                    case 2: menuitem = $(this).find('ul').slideDown(speed); break;
                    case 3: menuitem = $(this).find('ul').show(speed); break;
                }
            }
        }
        function close(){
            if(menuitem){
                switch(type){
                    case 0: menuitem.css({'display':'none'}); break;
                    case 1: menuitem.fadeOut(speed); break;
                    case 2: menuitem.slideUp(speed); break;
                    case 3: menuitem.hide(speed); break;
                }
            }
            menuitem=0;
        }
        function timer(){
            closetimer = window.setTimeout(close, timeout);
        }
        function canceltimer(){
            if(closetimer){
                window.clearTimeout(closetimer);
                closetimer = null;
            }
        }
        $(this).find('li:not(li ul li)').bind('mouseover', open);
        $(this).find('li:not(li ul li)').bind('mouseout',  timer);
        document.onclick = close;
    },
    menu_tree: function(json){
        var empty='empty';
        var display='block';
        var type=0;
        var speed=1000;
        if(json!=undefined){
            switch(json.effect){
                case 'none': type=0; break;
                case 'fade': type=1; break;
                case 'slide': type=2; break;
                case 'size': type=3; break;
                default: type=0;
            }
            if(json.speed) speed=json.speed;
        }
        $(this).find('.'+empty).click(function(){
            if($(this).parent().find('ul').css('display')==display){
                switch(type){
                    case 0: menuitem = $(this).parent().find('ul').css({'display':'none'}); break;
                    case 1: menuitem = $(this).parent().find('ul').fadeOut(speed); break;
                    case 2: menuitem = $(this).parent().find('ul').slideUp(speed); break;
                    case 3: menuitem = $(this).parent().find('ul').hide(speed); break;
                }
            }
            else{
                switch(type){
                    case 0: menuitem = $(this).parent().find('ul:first').css({'display':'block'}); break;
                    case 1: menuitem = $(this).parent().find('ul:first').fadeIn(speed); break;
                    case 2: menuitem = $(this).parent().find('ul:first').slideDown(speed); break;
                    case 3: menuitem = $(this).parent().find('ul:first').show(speed); break;
                }
            }
            return false;
        });
    }
});
