this is because of the trigger used for the validation.
when you change the input from type="submit" to type ="image" you need to edit the server validation behavior to have the trigger code regenerated.
with the submit element type, there is a value attribute, so the trigger code will look like this:
if (isset($_POST["Appointment_submit"])) {
an image element though, does not include a value attribute, it cannot pass a value, it does pass x and y coordinates of where it was clicked though, so the trigger code for an image element would look like this:
if (isset($_POST["Appointment_submit_x"])) {
if you change the submit element type, you will need to edit the server validation behavior to have the code regenerated.