Agent IQ
Informing web servers about device capabilities
...When a request is received, it looks at the User Agent String of the incoming header and matches it against the database. If there is a match, the device capabilities are stored as PHP and Javascript variables for you to use in shaping how your site is served out.
If there is no match, the request is re-directed to a javascript 'learning page' where the database is updated with the client capabilities and is redirected back. This happens in a flash.
The 'learning page' uses Javascript and Modernizr. There is a learning logic built in to avoid incorrect records. ...