pro save_document,windowstorage=windowstorage,filename=filename,statuscode=statuscode,statusmsg=statusmsg
catch,Error_status
if (Error_status NE 0) then begin
statusmsg = !ERROR_STATE.MSG
statuscode = -3
catch,/cancel
return
endif
spd_ui_validate_file,filename=filename,statusmsg=statusmsg,statuscode=statuscode,/write
if statuscode lt 0 then return
document_to_save=obj_new('SPD_UI_DOCUMENT',windowstorage)
xml_document=obj_new('IDLffXMLDOMDocument')
root_element=xml_document->CreateElement('body')
document_to_save->AppendXMLNewline,root_element
result = xml_document->AppendChild(root_element)
document_to_save->AppendXMLNewline,root_element
element = document_to_save->GetDOMElement(root_element)
document_to_save->AppendXMLNewline,root_element
result = root_element->AppendChild(element)
document_to_save->AppendXMLNewline,root_element
xml_document->Save,filename=filename
obj_destroy, xml_document
obj_destroy, document_to_save
statuscode=0
statusmsg=STRING(filename,format='("Document successfully saved to ",A)')
return
end