Now that the Contribution Status field is exposed on CRM/Contribute/Form/Contribute.php - users are likely to wind up w/ contributions that have a Cancel Date BUT have status = Completed when they attempt to cancel a contribution. Previously, this wasn't a problem because we forced the status to Cancelled if a Cancel Date was entered.
Move the Cancel Date and Cancel Reason fields from the collapsible fieldset at the bottom of the form to a table nested in the second cell of a hidden row below the Contribution Status. By default, this row (with the 2 fields) is hidden. If the user changes the Contribution Status field value to Cancelled, we SHOW the row (and hence the 2 fields). Also, when the form is loaded, if the status is Cancelled, set the row to "show".
NOTE: The current postProcess behavior is to set and save the Cancel Date as today's date IF it is not set by the user. This behavior can be retained as is.