Initial draft of vanilla-JS version
No need to JSON.decode a javascript object
Use dash as default blank option label