Файл: IPBMafia.ru_IPB_3.4.6_Final_Rus _Nulled/board/upload/public/js/ips.board.js
Строк: 196
<?php
/************************************************/
/* IPB3 Javascript                                */
/* -------------------------------------------- */
/* ips.board.js - Board index code                */
/* (c) IPS, Inc 2008                            */
/* -------------------------------------------- */
/* Author: Rikki Tissier                        */
/************************************************/
var _idx = window.IPBoard;
_idx.prototype.board = {
    _statusClick: 0,
    _statusDefaultValue: '',
    count_sbars: 0,
    count_hidden: 0,
    
    /*------------------------------*/
    /* Constructor                     */
    init: function()
    {
        Debug.write("Initializing ips.board.js");
        
        document.observe("dom:loaded", function(){
            ipb.board.setUpForumTables();
            ipb.board.initSidebar();
            
            ipb.board._statusDefaultValue = ( $('hookStatusTextField') ) ? $F('hookStatusTextField') : '';
            if( $('updateStatusForm') ){
                $('updateStatusForm').observe( 'submit', ipb.board.statusHookSubmit );
            }
        });
    },
    
    /* ------------------------------ */
    /**
     * Hook: Status update
    */
    statusHookClick: function()
    {
        if ( ! ipb.board._statusClick )
        {
            if( $('hookStatusTextField') ){
                $('hookStatusTextField').value = '';
            }
            
            ipb.board._statusClick = 1;
        }
    },
    
    /* ------------------------------ */
    /**
     * Hook: Status update
    */
    statusHookSubmit: function(e)
    {
        Event.stop(e);
        
        if ( ipb.board._statusClick && $F('hookStatusTextField') && $F('hookStatusTextField') != ipb.board._statusDefaultValue )
        { 
            $('updateStatusForm').submit();
        }
        else
        {
            return false;
        }
    },
    /* ------------------------------ */
    /**
     * Inits the forum tables ready for collapsing
    */
    setUpForumTables: function()
    {
        ipb.delegate.register(".category_block .toggle", ipb.board.toggleCat);
        var cookie            = ipb.Cookie.get('toggleCats');
        
        if( cookie )
        {
            var cookies        = cookie.split( ',' );
            var newCookies    = new Array();
            var resetCookie    = false;
                        
            for( var abcdefg=0; abcdefg < cookies.length; abcdefg++ )
            {
                if( cookies[ abcdefg ] )
                {
                    if( $( 'category_' + cookies[ abcdefg ] ) )
                    {
                        var wrapper    = $( 'category_' + cookies[ abcdefg ] ).down('.table_wrap');
                        
                        wrapper.hide();
                        $( 'category_' + cookies[ abcdefg ] ).addClassName('collapsed');
                        
                        newCookies.push( cookies[ abcdefg ] );
                    }
                    else
                    {
                        resetCookie    = true;
                    }
                }
            }
            
            if( resetCookie )
            {
                ipb.Cookie.set( 'toggleCats', newCookies.join( ',' ) );
            }
        }
    },
    
    /* ------------------------------ */
    /**
     * Show/hide a category
     * 
     * @var        {event}        e    The event
    */
    toggleCat: function(e, elem)
    {
        if( ipb.board.animating ){ return false; }
        
        var remove = $A();
        var catname = $( elem ).up('.category_block');
        var wrapper = $( catname ).down('.table_wrap');
        $( wrapper ).identify(); // IE8 fix
        var catid = catname.id.replace('category_', '');
        
        ipb.board.animating = true;
        // Get cookie
        var cookie = ipb.Cookie.get('toggleCats');
        
        if( cookie == null ){
            cookie = $A();
        } else {
            _cookie = cookie.split(',');
            cookie  = $A();
            
            _cookie.each( function( item )
            {
                if ( item )
                {
                    cookie.push( item );
                }
            } );
        }
        
        Effect.toggle( wrapper, 'blind', {duration: 0.4, afterFinish: function(){ ipb.board.animating = false; } } );
        Effect.toggle( wrapper, 'appear', {duration: 0.3});
        
        if( catname.hasClassName('collapsed') )
        {
            catname.removeClassName('collapsed');
            remove.push( catid );
        }
        else
        {
            new Effect.Morph( $(catname), {style: 'collapsed', duration: 0.4, afterFinish: function(){
                $( catname ).addClassName('collapsed');
                ipb.board.animating = false;
            } });
            
            cookie.push( catid );
        }
        /* without not so hot in Chrome */
        _cookie = cookie;
        cookie  = $A();
        
        _cookie.each( function( item )
        {
            ok = true;
            
            remove.each( function( ritem )
            {
                if ( ritem == item )
                {
                    ok = false;
                }
            } )
            
            if ( ok === true )
            {
                cookie.push( item );
            }
        } );
            
        cookie = "," + cookie.uniq().join(',') + ",";
        
        ipb.Cookie.set('toggleCats', cookie, 1);
        
        Event.stop( e );
    },
    
    /* ------------------------------ */
    /**
     * Sets up the sidebar
    */
    initSidebar: function()
    {
        if( $('toggle_sidebar') )
        {
            $('toggle_sidebar').on('click', ipb.board.toggleSidebar);
            
            if( $('index_stats').visible() ){
                $('toggle_sidebar').update( $('toggle_sidebar').readAttribute("data-open") );
            } else {
                $('toggle_sidebar').update( $('toggle_sidebar').readAttribute("data-closed") );
            }
        }
        
        ipb.board.setUpSideBarBlocks();
    },
    
    toggleSidebar: function(e){
        if( $('index_stats').visible() )
        {
            ipb.Cookie.set('hide_sidebar', 1, 1);
            
            new Effect.Fade( $('index_stats'), { duration: 0.4, afterFinish: function(){
                new Effect.Morph( $('board_index'), { duration: 0.3, style:'no_sidebar' });
            } } );
            
            $('toggle_sidebar').update("«");
        }
        else
        {
            ipb.Cookie.set('hide_sidebar', 0, 1);
            
            new Effect.Morph( $('board_index'), { duration: 0.3, style:'force_sidebar', afterFinish: function(){
                new Effect.Appear( $('index_stats'), { duration: 0.4, afterFinish: function(){
                    $('board_index').removeClassName('no_sidebar').removeClassName('force_sidebar');
                }});
            } } );
            
            $('toggle_sidebar').update("×");
        }
        
        Event.stop(e);
    },
    
    /**
     * Add in collapsable icons
     */
    setUpSideBarBlocks: function()
    {
        if ( $('index_stats') && $('index_stats').visible() )
        {
            $$('#index_stats h3').each( function(h3)
            {
                $( h3 ).identify();
                
                ipb.board.count_sbars++;
                
                /* Set title - fugly 
                   Here we run through escape first to change foreign chars to %xx with xx being latin, and then we remove % after */
                title = escape( $( h3 ).innerHTML.replace( /<(/)?([^>]+?)>/g, '' ) ).replace( /%/g, '' );
                title = title.replace( / /g, '' ).replace( /[^a-zA-Z0-9]/, '' ).toLowerCase();
                $( h3 ).up('div').addClassName( '__xX' + title );
                
                /* insert the image */
                $( h3 ).update( '<a href="#" class="ipsSidebar_trigger ipsType_smaller right desc mod_links">' + ipb.lang['hide'] + '</a>' + h3.innerHTML );
            });
            
            cookie = ipb.Cookie.get('toggleSBlocks');
        
            if( cookie )
            {
                var cookies = cookie.split( ',' );
                
                for( var abcdefg=0; abcdefg < cookies.length; abcdefg++ )
                {
                    if( cookies[ abcdefg ] )
                    {
                        var top     = $('index_stats').down('.__xX' + cookies[ abcdefg ] );
                        
                        if ( top )
                        {
                            var wrapper    = top.down('._sbcollapsable');
                            
                            if ( ! wrapper )
                            {
                                wrapper = top.down('ul');
                            }
                            
                            if ( ! wrapper )
                            {
                                wrapper = top.down('ol');
                            }
                            
                            if ( ! wrapper )
                            {
                                wrapper = top.down('div');
                            }
                            
                            if ( ! wrapper )
                            {
                                wrapper = top.down('table');
                            }
                            if ( wrapper )
                            {
                                if ( top.hasClassName('alt') )
                                {
                                    top._isAlt = true;
                                    top.removeClassName('alt');
                                }
                                
                                ipb.board.count_hidden++;
                                top.down('.ipsSidebar_trigger').update( ipb.lang['unhide'] );
                                wrapper.hide();
                            }
                        }
                    }
                }
            }
        }
        
        ipb.delegate.register(".ipsSidebar_trigger", ipb.board.toggleSideBarBlock);
    },
    
    /**
     * Toggle the block
     */
    toggleSideBarBlock: function( e, elem )
    {
        Event.stop(e);
        elem.identify();
        
        var remove = $A();
        cookie = ipb.Cookie.get('toggleSBlocks');
        
        if( cookie == null ){
            cookie = $A();
        } else {
            _cookie = cookie.split(',');
            cookie  = $A();
            
            _cookie.each( function( item )
            {
                if ( item )
                {
                    cookie.push( item );
                }
            } );
        }
        
        /* Test for known class name */
        var top   = elem.up('div');
        
        moo   = top.className.match('__xX([0-9A-Za-z]+)');
        topId = moo[1]; 
        
        block = top.down('._sbcollapsable');
        
        if ( ! $( block ) )
        {
            block = elem.up('div').down('ul');
        }
        
        if ( ! $( block ) )
        {
            block = elem.up('div').down('ol');
        }
        
        if ( ! $( block ) )
        {
            block = elem.up('div').down('div');
        }
        
        if ( ! $( block ) )
        {
            block = elem.up('div').down('table');
        }
        
        if ( $( block ) )
        {
            $( block ).identify();
            
            ipb.board.animating = true;
            
            if ( $( block ).visible() )
            {
                if ( $( top ).hasClassName('alt') )
                {
                    $( top )._isAlt = true;
                    $( top ).removeClassName('alt');
                }
                
                top.down('.ipsSidebar_trigger').update( ipb.lang['unhide'] );
                ipb.board.count_hidden--;
                Debug.write( "Adding " + topId );
                cookie.push( topId );
            }
            else
            {
                if ( $( top )._isAlt )
                {
                    $( top ).addClassName('alt');
                }
                
                top.down('.ipsSidebar_trigger').update( ipb.lang['hide'] );
                
                ipb.board.count_hidden--;
                
                Debug.write( "Removing " + topId );
                remove.push( topId );
            }
        
            Effect.toggle( block, 'blind', {duration: 0.4, afterFinish: function(){ ipb.board.animating = false; } } );
        }
        
        /* without not so hot in Chrome */
        _cookie = cookie;
        cookie  = $A();
        
        _cookie.each( function( item )
        {
            ok = true;
            
            remove.each( function( ritem )
            {
                if ( ritem == item )
                {
                    ok = false;
                }
            } )
            
            if ( ok === true )
            {
                cookie.push( item );
            }
        } );
            
        cookie = "," + cookie.uniq().join(',') + ",";
        
        ipb.Cookie.set('toggleSBlocks', cookie, 1);
    }
};
ipb.board.init();
?>