How are you getting the uniqueness? Would it benefit from a DB lookup rather than a set of .js files?
It performs a binary search through the pre-sorted placename list to see if the placename exists at all, and if so, it then does a local linear search to see if the name is unique. The last time I did any DB development work was during my IT GCSE in the late 80's, so I've got no idea if storing the names in a DB would be better
How's that for starters http://waze.cartwright.tv/gaz_gb.php
(for the purposes of the demo it asks permission for your browser to provide lat/long. you can decline and type them in or provide a url with them in instead)
It should save you and each user a bit of time and bandwith (a few bytes per query v. 1.1mb gazetter.js file
It does the same lookup as you're doing I think, 5km either side of the given northings and eastings, but I've also calculated & stored the number of duplicates in each DB record, so it doesn't have to do subsequent lookups
I'm just showing the raw data for review currently. not limiting it to ten records, or creating the picklist yet, but they're easy do add.
Happy to hand over the DB and php if it's useful, or host it for you if you can't get a MySQL/php host running.
I'll be reusing/hosting the shell of it anyway as I want to do something similar for Australian wazers.
AM: Cambs, Northants, Beds, Reading -> Princes Risborough - England: wiki
AM: Central Coast - Australia: wiki