// JavaScript Document
    function p3_sidebar_drawers() {       
        var is_ipad = ( navigator.platform == "iPad" );
        var is_iphone = ( navigator.platform == "iPhone" );
                               
        var drawer_padding = 40;
 
        // set initial opacity and height of drawers
        jQuery('.drawer_content, .tab').css('opacity', 0.95);
        jQuery('.drawer_content').css('height', (jQuery(window).height() - 40) + 'px' );
 
        // function-scoped timeout var object
        var p3_close_drawer_timeout = new Object();
 
        // instrument each drawer
        jQuery('.drawer').each(function(){
            var drawer = jQuery(this);
            var id     = drawer.attr('id');
            var tab    = jQuery('.tab', this);
            var width  = parseInt( jQuery('.drawer_content', drawer).css( 'width' ) ) + 40;
            var speed  = parseInt( width * 0.75 );
 
            // show the drawer on tab mouseover
            tab.mouseover(function(){
                drawer
                    .css( 'z-index', '10000' )
                    .animate( { left:'0px' }, speed, 'swing' )
                    .addClass( 'open' );
            });
 
            // handle iphone/ipad show/hides
            if ( is_ipad || is_iphone ) {
                jQuery('#inner-wrap').unbind('touchstart').bind('touchstart',function(){
                    drawer.mouseleave();
                });
                tab.bind('touchstart',function(){
                    if ( drawer.hasClass('open') ) drawer.trigger('mouseleave');
                });
            }
 
            // set the timeout to close drawer on mouseleave
            drawer.mouseleave(function(){
                var delay = ( is_ipad || is_iphone ) ? 1 : 1000;
                clearTimeout( p3_close_drawer_timeout[id] );
                p3_close_drawer_timeout[id] = setTimeout( function(){
                    drawer.animate( { left:'-' + width + 'px' }, speed, 'swing', function(){
                        drawer.css( 'z-index', '5000' ).removeClass('open');
                    } );
                }, delay );
            });
 
            // restart the close drawer timout on mouseenter
            drawer.mouseenter(function(){
                clearTimeout( p3_close_drawer_timeout[id] );
            });
        });
    }
