       $('body').removeClass "resize-in-action"
 
   ### PUBLIC METHODS ###
-  isVertical : -> @getOptions().type is "vertical"
+
+  isVertical:-> @getOptions().type is "vertical"
+
+  getPanelIndex:(panel)->
+
+    for p,i in @panels
+      if p.getId() is panel.getId()
+        return i
+
+  hidePanel:(panelIndex,callback = noop)=>
+
+    panel = @panels[panelIndex]
+    panel._lastSize = panel._getSize()
+    @resizePanel 0,panelIndex,()=>
+      callback.call @,(panel : panel, index : panelIndex )
+
+  showPanel:(panelIndex,callback = noop)=>
+
+    panel = @panels[panelIndex]
+    newSize = panel._lastSize or @getOptions().sizes[panelIndex] or 200
+    panel._lastSize = null
+    @resizePanel newSize,panelIndex,()->
+      callback.call @,(panel : panel, index : panelIndex )
 
   resizePanel:(value = 0,panelIndex = 0,callback = noop)=>
+
     @_resizeDidStart()
 
     value     = @_sanitizeSize value

    totalOccupied = 0
    splitSize     = @_getSize()

    newSizes = for size,i in (if @sizes.length > 0 then @sizes else o.sizes)
      if size is null
        nullCount++
        null


    no

  _panelIsBeingDestroyed:(panel)->

    index         = @getPanelIndex panel
    o             = @getOptions()
    @panels       = @panels.slice(0,index).concat(@panels.slice(index+1))
    @sizes        = @sizes.slice(0,index).concat(@sizes.slice(index+1))
    @panelsBounds = @panelsBounds.slice(0,index).concat(@panelsBounds.slice(index+1))

    o.minimums.splice index, 1
    o.maximums.splice index, 1
    o.views.splice    index, 1 if o.views[index]?

  # CREATE RESIZERS

  _createResizers:->

    @resizers = for i in [1...@sizes.length]
