Esto ahora se hace con CSS3 puro. Javascript se limita a meter o quitar clases nada mas.
Para la animacion se usa el animatin: height, para que la capa pinchaza aparezca por encima, he usado el z-index, y para que los submenus no desplacen el contenido de abajo, solo había que meterl divs positon absolute en un div position relativo de dentro del menú.
http://jsfiddle.net/marlanga/z990se9o/2/