Powerful and extensible javascript form validation that doesn't suck