JavaScript - obtenha informações detalhadas sobre o navegador

Basicamente, estou procurando algo para me dar acesso fácil a informações comouseragentstring.com, mas em JS, sem eu analisar o agente do usuário e procurar cada bit possível de texto. O objeto pode ser algo como isto:

browser      = UserAgent.Browser;                // Chrome
browserVer   = UserAgent.BrowserVersion;         // 5.0.342.9
os           = UserAgent.OperatingSystem;        // Windows NT
osVer        = UserAgent.OperatingSystemVersion; // 6.1
layoutEng    = UserAgent.LayoutEngine;           // WebKit
layoutEngVer = UserAgent.LayoutEngineVersion;    // 533.2

Existe algo semelhante a isso ou eu mesmo tenho que escrever um? Escrever outro analisador de agente de usuário não parece tão fácil com todas essas representações que remontam à idade das trevas da web.

Especificamente, estou procurando algo que não apenas divida o agente do usuário em partes e me entregue, porque é tão inútil quanto o próprio agente do usuário; em vez disso, deve analisar o agente do usuário e reconhecer o mecanismo, o navegador, o SO, etc. e devolver apenas as peças de concreto, como no exemplo.

questionAnswers(1)

yourAnswerToTheQuestion