code: function ( e ) {
  
      	var type = e.type;
  
      	var change = false;
      	var targetChange = false;
  
      	var name = this.testZone( e );
  
          
  
      	if( type === 'mouseup' && this.isDown ) this.isDown = false;
      	if( type === 'mousedown' && !this.isDown ) this.isDown = true;
  
      	if( !name ) return;
  
      	switch( name ){
  
      		case 'content':
  
                  e.clientY = this.isScroll ?  e.clientY + this.decal : e.clientY;
  
                  if( Roots.isMobile && type === 'mousedown' ) this.getNext( e, change );
  
  	    		if( this.target ) targetChange = this.target.handleEvent( e );
  
  	    		if( type === 'mousemove' ) change = this.mode('def');
                  if( type === 'wheel' && !targetChange && this.isScroll ) change = this.onWheel( e );
                 
  	    		if( !Roots.lock ) this.getNext( e, change );
  
      		break;
      		case 'bottom':
  
  	    		this.clearTarget();
  	    		if( type === 'mousemove' ) change = this.mode('bottomOver');
  	    		if( type === 'mousedown' ) {
  	    			this.isOpen = this.isOpen ? false : true;
  		            this.bottom.textContent = this.isOpen ? 'close' : 'open';
  		            this.setHeight();
  		            this.mode('def');
  		            change = true;
  	    		}
  
      		break;
      		case 'scroll':
  
  	    		this.clearTarget();
  	    		if( type === 'mousemove' ) change = this.mode('scrollOver');
  	    		if( type === 'mousedown' ) change = this.mode('scrollDown'); 
                  if( type === 'wheel' ) change = this.onWheel( e ); 
  	    		if( this.isDown ) this.update( (e.clientY-this.zone.y)-(this.sh*0.5) );
  
      		break;
  
  
      	}
  
      	if( this.isDown ) change = true;
      	if( targetChange ) change = true;
  
      	if( change ) this.draw();
  
      }
docs: ---------------------- EVENTS ----------------------