// Browser version report - Copyright (C) 1998-2010 Charles A Upsdell, All Rights Reserved; www.upsdell.com


cBrowserInfo.prototype.setDetails = function ( )
{
var ua = this.UA;

// Engine name?
this.engine = '';
if ( this.isA ) this.engine = 'KHTML AppleWebKit';
else if ( this.isK ) this.engine = 'KHTML';
else if ( this.isO )
  {
	this.browser = this.engine = 'Opera';
	var ix = ua.indexOf( 'presto/' );
	if ( ix >= 0 )
		this.engine = 'Presto';
  }
else if ( this.isG ) this.engine = 'Gecko';
else if ( this.isIE ) this.browser = this.engine = 'Internet Explorer';
else if ( this.isW ) this.engine = 'WebTV';
if ( this.isT ) this.engine = 'Trident';

// Browser name?
this.isKonqueror = this.isK && (ua.indexOf('konqueror') != -1);
if ( this.isKonqueror )
	this.browser = 'Konqueror';
else
  { this.isChrome = this.isA && ( ua.indexOf('chrome/') != -1 );
	if ( this.isChrome )
		this.browser = 'Chrome';
	else
	  {	this.isSafari = this.isA && ( ua.indexOf('safari/') != -1 );
		if ( this.isSafari )
			this.browser = 'Safari';
		else if ( this.isA )
			this.browser = 'Safari compatible';
		else if ( this.isWebtv )
			this.browser = 'WebTV / MSN-TV';
	  }
  }

// Version and generation number?
if ( this.isKonqueror )
  {
	var i = ua.indexOf('khtml');
	if ( i >= 0 )
		this.verEngine = new cVersion( ua.substring(6+i) );
	this.verBrowser = new cVersion( ua.substring(10+ua.indexOf('konqueror')) );
  }
else if ( this.isChrome )
  {
	var i = ua.indexOf('chrome/');
	if ( i >= 0 )
		this.verBrowser = new cVersion( ua.substring(7+i) );
	else
		this.verBrowser = new cVersion( ua.substring(7+ua.indexOf('safari/')) );
	i = ua.indexOf('applewebkit/');
	if ( i >= 0 )
		this.verEngine = new cVersion( ua.substring(12+i) );
  }
else if ( this.isSafari )
  {
	var i = ua.indexOf('version/');
	if ( i >= 0 )
		this.verBrowser = new cVersion( ua.substring(8+i) );
	else
		this.verBrowser = new cVersion( ua.substring(7+ua.indexOf('safari/')) );
	i = ua.indexOf('applewebkit/');
	if ( i >= 0 )
		this.verEngine = new cVersion( ua.substring(12+i) );
  }
else if ( this.isA )
  {
	this.verBrowser = new cVersion( '0' );
	var i = ua.indexOf('applewebkit/');
	if ( i >= 0 )
		this.verEngine = new cVersion( ua.substring(12+i) );
	var oddBrowser = { 'omniweb/':1 };
	for ( property in oddBrowser )
	  {
		var i = ua.indexOf( property );
		if ( i == -1 )
			continue;
		else
		  {
			this.browser = this.nav_ua.substring( i, i + property.length );
			this.verBrowser = new cVersion( ua.substring(i+property.length+oddBrowser[property]) );
			break;
		  }
	  }
  }
else
  {
	if ( this.browser == '' )
		this.browser = '?';
	var oddBrowser = { 'amaya':1, 'icab':1, 'lynx':1 };
	for ( property in oddBrowser )
	  {
		var i = ua.indexOf( property );
		if ( i == -1 )
			continue;
		else
		  {
			this.browser = this.engine = this.nav_ua.substring( i, i + property.length );
			this.verBrowser = new cVersion( ua.substring(i+property.length+oddBrowser[property]) );
			break;
		  }
	  }
  }

this.browserGeneration = this.verBrowser.v[0];
}

cBrowserInfo.prototype.toHTML = function ( )
{
var verBrowser = '';
if ( this.verBrowser.comp('0') != 0 )
	verBrowser = this.verBrowser.toString();
var sHTML = '<ul class="slist"><li>Browser is likely: ' + this.browser + ' ' + verBrowser;
if ( this.engine )
  {
	var verEngine = '';
	if ( this.verEngine.comp('0') != 0 )
		verEngine = this.verEngine.toString();
	sHTML += ' (using ' + this.engine + ' ' + verEngine + ' engine)';
  }
if ( this.isOld )
  {
	sHTML += '<li>You can update to ' + this.newer + ' ' + ((this.isDanger)?', which is more secure':'') + '</li>';
  }
if ( window.screen )
	sHTML += '</li><li>Display resolution: '  + window.screen.width + 'x' + window.screen.height +
		'</li><li>Colour depth: ' + Math.pow(2,window.screen.colorDepth) + ' (2<sup>' + window.screen.colorDepth + '</sup>)';
sHTML += '&nbsp;</li><li>userAgent = ' + this.nav_ua + '</li></ul>\n';
return( sHTML );
}

myBrowserInfo.setDetails();

function myBrowserDetected ( )
{
var oInsert = getElement( 'ins_BrowserDetected' );
if ( oInsert == null )
	return;
oInsert.innerHTML = myBrowserInfo.toHTML();
}

