This is not anywhere near a general purpose solution.
- I can't enter my US address as I am forced to choose from your predefined list.
- Javascript? No way.
- You didn't answer my questions above
I have also in the past tried to normalize everything to death. It doesn't work. The reason it doesn't work is that there is NO international standard for addresses.
There is not even a way to get all the locale info even if I wanted to use your solution.
This is why I suggest using HR-XML's basic premise. They have a standard used by a lot of companies and have thought this through for a long time. It is the closest thing I have found to a universal format.
Again, I would suggest that you load up 50,000 locations (that isn't even the whole US) and make a real ACS app where permissions are called and see what happens. This has already been proven to not scale at all, both at AD when I worked there and with some other private companies attempting to use places.
acs-reference already has what is needed so building acs-location should go on top of that.