/** @class
@readonly
@desc Instantiates a hash of properties derived from environment.
@property {Number} #Platform
@property {Number} #Architecture
@property {Boolean} #IsOrion
@property {String} #Version
@property {Boolean} #IsZoomed
@property {Number} #Zoom
@example // Example user agent strings:
"Orion/1.5.0 (mac; x86_64; zoom 100)"
"Orion/2.0.0 (mac; x86_64; zoom 100)"
@todo Convert to constants.
*/
var Browser =
{
__init: function (userAgent)
{
this.Platform = BrowserPlatform.Unknown;
this.Architecture = BrowserArchitecture.Unknown;
var agent = userAgent ? userAgent : navigator.userAgent;
// if other browser
if (agent.indexOf('Orion') == -1)
{
this.IsOrion = false;
this.Version = '';
this.IsZoomed = false;
this.Zoom = 1;
}
else
{
this.IsOrion = true;
// version
this.Version = agent.substring(0, agent.indexOf(' ')).replace('Orion/', '');
// platform
if (agent.indexOf('mac') >= 0)
this.Platform = BrowserPlatform.Mac;
else if (agent.indexOf('windows') >= 0)
this.Platform = BrowserPlatform.Windows;
else if (agent.indexOf('linux') >= 0)
this.Platform = BrowserPlatform.Linux;
// zoom factor
if (agent.indexOf('zoom 100') >= 0)
{
// normal zoom
this.IsZoomed = false;
this.Zoom = 1;
}
else
{
// is zoomed
this.IsZoomed = true;
this.Zoom = parseFloat(agent.substring(agent.indexOf('zoom ') + 5)) / 100;
}
// architecture
if (agent.indexOf('x86_64') >= 0)
this.Architecture = BrowserArchitecture.x86_64;
else if (agent.indexOf('x86') >= 0)
this.Architecture = BrowserArchitecture.x86;
}
return this;
}
}.__init();