Client side form validation, asynchronous submission and file upload