Building dynamic client-side forms: HTML, Javascript, DOM and CSS