reliable, cross-browser html form => javascript object serializer