Using forms and templates and _submit callback
Many questions here:


Your form function function should return the form array and doesn't need an argument unless you need it for something specific.
You should at least have an element of type 'submit' (not button) in your form.
Chances are good your submit function will get called if you implement it this way.
If the form fails validation, FAPI will restore it to the values submitted, keeping what was typed by the user.
You shoudn't try to embed business logic in your template, but rather in your module and/or a preprocess function.