
RBjs_Menu = function( owner )
{
    this.owner = owner;
    var me = this;
    
    this.menuAB = [];
    this.menu_line_equivalence = {};
    
    this.visibleA_cnt = 4; // связанна с серверным скриптом - менять синхронно
    
    this.escho1 = null;
    this.escho2 = null;
    
    this.menuB_div = null;
    this.menuB_container_div = null;
    
    this.escho_close_interval = null;
    
    this.sel_menuA_id = 0; 
    this.sel_menuB_id = 0;
    
    this.menuA_changed_li = 0;
    
    this.iniMenu = function( menuAB, menu_line_equivalence )
    {
        this.menuAB = menuAB;
        this.menu_line_equivalence = menu_line_equivalence;
        
        this.escho1 = $j( '#escho' );
        this.escho2 = $j( '#escho_' );
        
        this.escho2.bind( 'mouseover', me.eschoOnMouseOver );
        this.escho2.bind( 'mouseout', me.eschoOnMouseOut );
        
        this.menuB_div = $j( '#submenu_line' );
        this.menuB_container_div = $j( '#submenu_line_container' );
        
        this.undermenu_div = $j( '#undermenu' );
        
    }
    
    this.hideSubMenu = function()
    {
        me.menuB_div.hide();
        me.undermenu_div.show();
    }
    
    this.showSubMenu = function()
    {
        me.undermenu_div.hide();
        me.menuB_div.show();
    }
    
    this.selectLevels = function( idA, idB )
    {
        // исключение для сообщества - справа добавляется поиск людей
        if( idA == 117 ) {
            $j( '#submenu_opponent' ).show();
        } else {
            $j( '#submenu_opponent' ).hide();
        }
        
        if( !me.menuAB[idA] ) {
            me.setDefaultSelection();
            return;
        }
        
        var tmp = null;
        for( tmpA_id in me.menuAB ) { 
            /*
            if( tmpA_id == idA ) {
                $j( '#menuA_li_' + me.menuAB[tmpA_id]['ord'] ).html( me.menuAB[tmpA_id]['name'] ).removeClass( 'tut' );         
            } else {
                $j( '#menuA_li_' + me.menuAB[tmpA_id]['ord'] ).html( '<a href="'+ me.menuAB[tmpA_id]['url'] +'">' + me.menuAB[tmpA_id]['name'] + '</a>' ).removeClass( 'tut' );
            }
            */
            
            // исключение для туризма/отдыха - добавляем зонтик
            if( tmpA_id == 647 ) {
                $j( '#menuA_li_' + me.menuAB[tmpA_id]['ord'] ).html( '<div class="menu_point_tour"><a href="'+ me.menuAB[tmpA_id]['url'] +'">' + me.menuAB[tmpA_id]['name'] + '</a></div>' ).removeClass( 'tut' );
            } else {
                $j( '#menuA_li_' + me.menuAB[tmpA_id]['ord'] ).html( '<a href="'+ me.menuAB[tmpA_id]['url'] +'">' + me.menuAB[tmpA_id]['name'] + '</a>' ).removeClass( 'tut' );
            }
        }
        
        if( me.menuAB[idA]['ord'] > me.visibleA_cnt ) {
            var tmp1 = $j( '#menuA_li_' + me.visibleA_cnt );
            var tmp2 = $j( '#menuA_li_' + me.menuAB[idA]['ord'] );
            tmp = tmp1.html();
            tmp1.html( tmp2.html() );
            tmp2.html( tmp );
            
            $j( '#menuA_li_' + me.visibleA_cnt ).addClass( 'tut' ); 
        } else {
            $j( '#menuA_li_' + me.menuAB[idA]['ord'] ).addClass( 'tut' );
        }
        
        this.sel_menuA_id = idA;

        //create sub menu
        
        if( !me.menuAB[idA]['children'][idB] ) {
            //me.hideSubMenu();
            this.sel_menuB_id = 0;
        } else {
            this.sel_menuB_id = idB;  
        }
        
        var html_menuB = '';     
        for( ckey in me.menuAB[idA]['children'] ) {        
            if( ckey == me.sel_menuB_id ) {
                html_menuB += '<span><a href="'+ me.menuAB[idA]['children'][ckey]['url'] +'" class="menuB_sel">' + me.menuAB[idA]['children'][ckey]['name'] + '</a></span>';
            } else {
                html_menuB += '<span><a href="'+ me.menuAB[idA]['children'][ckey]['url'] +'">' + me.menuAB[idA]['children'][ckey]['name'] + '</a></span>';
            }    
        }
        
        me.menuB_container_div.html( html_menuB );  
        me.showSubMenu();
    }
    
    /**
    для ЛЕНТ. выделение пунктов меню по установленным portal, type, chapter 
    **/
    this.selectLevelsByPTC = function( portal_id, type_id, chapter_id )
    {
        var key =  '' + me.owner.intval( portal_id ) + '_' + 
                        me.owner.intval( type_id )+ '_' +
                        me.owner.intval( chapter_id );   

        // default selection
        if( me.menu_line_equivalence[ key ] == null ) {
            // stub key
            var key = '' + me.owner.intval( portal_id ) + '_' + me.owner.intval( type_id )+ '_0';  
            if( me.menu_line_equivalence[ key ] == null ) {
                me.setDefaultSelection();
                return;
            }
        } 
        
        var menuA = me.owner.intval( me.menu_line_equivalence[ key ][ 'menuA' ] );
        var menuB = me.owner.intval( me.menu_line_equivalence[ key ][ 'menuB' ] );
        
        me.selectLevels( menuA, menuB );
    }
    
    /**
    активируем метод тогда когда не можем определить какой пункт меню верхнего уровня необходимо выбрать
    **/
    this.setDefaultSelection = function()
    {
        me.hideSubMenu();
        for( tmpA_id in me.menuAB ) {
            if( me.menuAB[tmpA_id]['ord'] == 1 ) {
                $j( '#menuA_li_1' ).html( me.menuAB[tmpA_id]['name'] ).addClass( 'tut' );         
                me.sel_menuA_id = tmpA_id; 
                me.sel_menuB_id = 0;
            } else {
                $j( '#menuA_li_' + me.menuAB[tmpA_id]['ord'] ).html( '<a href="'+ me.menuAB[tmpA_id]['url'] +'">' + me.menuAB[tmpA_id]['name'] + '</a>' ).removeClass( 'tut' );
            }
        }
    }    
    
    this.eschoOpen = function()
    {
        window.clearTimeout( me.escho_close_interval );
        me.escho1.hide();
        me.escho2.show();
    }
    
    this.eschoClose = function()
    {
        window.clearTimeout( me.escho_close_interval );
        me.escho2.hide();
        me.escho1.show();
    }
    
    this.eschoOnMouseOut = function()
    {
        me.escho_close_interval = window.setTimeout( me.eschoClose, 600 );
    }
    
    this.eschoOnMouseOver = function()
    {
        window.clearTimeout( me.escho_close_interval );
    }
}



RBjs.Menu = new RBjs_Menu( RBjs );