Javascript form validation made simple, unobtrusive and extensible