I see you've fixed up the events to get bound to the viewmodel, but the following binding does not work correctly:
<div data-bind="dialog: { isOpen: $root.isEditMode, buttons: { Save: $root.save} }"></div>
In the save function, this is bound to the jquery dialog, not the viewmodel.