We use Control.Modal, which is based on Prototype and can easily be
configure for 1 & 2 and works fine with forms (e.g. login form on
http://autopendium.com).
Re, integration with Rails, I'm not the best person to comment (though
the Prototype integration gives it a smaller footprint than if it was
stand-alone), as we use it unobtrusively with behaviours attached via
LowPro.