//****************************************************************************
// PUBLIC FUNCTION:  browser_name();
//
// PARAMETERS:
//  none
//
// DESCRIPTION:
//  Returns the browser name of the browser currently being used.
//****************************************************************************
function browser_name()
{
  var nVer = navigator.appVersion;
  var nAgt = navigator.userAgent;
  
  var theBrowserName  = navigator.appName;
  var theFullVersion  = ''+parseFloat(navigator.appVersion); 
  var theMajorVersion = parseInt(navigator.appVersion,10);
  var nameOffset,verOffset,ix;
  
  // In MSIE, the true version is after "MSIE" in userAgent
  // User-agent header: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB6.6; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MDDS; .NET4.0C)
  if ((verOffset=nAgt.indexOf("MSIE"))!=-1) {
   theBrowserName = "Microsoft Internet Explorer";
   theFullVersion = nAgt.substring(verOffset+5);
  }
  // In Opera, the true version is after "Opera" 
  else if ((verOffset=nAgt.indexOf("Opera"))!=-1) {
   theBrowserName = "Opera";
   theFullVersion = nAgt.substring(verOffset+6);
  }
  // In Chrome, the true version is after "Chrome" 
  // User-agent header: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.107 Safari/534.13
  else if ((verOffset=nAgt.indexOf("Chrome"))!=-1) {
   theBrowserName = "Chrome";
   theFullVersion = nAgt.substring(verOffset+7);
  }
  // In Safari, the true version is after "Safari" 
  else if ((verOffset=nAgt.indexOf("Safari"))!=-1) {
   theBrowserName = "Safari";
   theFullVersion = nAgt.substring(verOffset+7);
  }
  // In Firefox, the true version is after "Firefox" 
  // User-agent header: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
  else if ((verOffset=nAgt.indexOf("Firefox"))!=-1) {
   theBrowserName = "Firefox";
   theFullVersion = nAgt.substring(verOffset+8);
  }
  // In most other browsers, "name/version" is at the end of userAgent 
  else if ( (nameOffset=nAgt.lastIndexOf(' ')+1) < (verOffset=nAgt.lastIndexOf('/')) ) 
  {
   theBrowserName = nAgt.substring(nameOffset,verOffset);
   theFullVersion = nAgt.substring(verOffset+1);
   if (theBrowserName.toLowerCase()==theBrowserName.toUpperCase()) {
    theBrowserName = navigator.appName;
   }
  }
  // trim the theFullVersion string at semicolon/space if present
  if ((ix=theFullVersion.indexOf(";"))!=-1) theFullVersion=theFullVersion.substring(0,ix);
  if ((ix=theFullVersion.indexOf(" "))!=-1) theFullVersion=theFullVersion.substring(0,ix);
  
  theMajorVersion = parseInt(''+theFullVersion,10);
  if (isNaN(theMajorVersion)) {
   theFullVersion  = ''+parseFloat(navigator.appVersion); 
   theMajorVersion = parseInt(navigator.appVersion,10);
  }
  
  // document.write('Browser name  = '+theBrowserName+'<br>');
  // document.write('Full version  = '+theFullVersion+'<br>');
  // document.write('Major version = '+theMajorVersion+'<br>');
  // document.write('navigator.appName = '+navigator.appName+'<br>');
  // document.write('navigator.userAgent = '+navigator.userAgent+'<br>');
  
  return theBrowserName;
}



//****************************************************************************
// PUBLIC FUNCTION:  browser_full_version();
//
// PARAMETERS:
//  none
//
// DESCRIPTION:
//  Returns the browser version of the browser currently being used.
//****************************************************************************
function browser_full_version()
{
  var nVer = navigator.appVersion;
  var nAgt = navigator.userAgent;
  
  var theBrowserName  = navigator.appName;
  var theFullVersion  = ''+parseFloat(navigator.appVersion); 
  var theMajorVersion = parseInt(navigator.appVersion,10);
  var nameOffset,verOffset,ix;
  
  // In MSIE, the true version is after "MSIE" in userAgent
  // User-agent header: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB6.6; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MDDS; .NET4.0C)
  if ((verOffset=nAgt.indexOf("MSIE"))!=-1) {
   theBrowserName = "Microsoft Internet Explorer";
   theFullVersion = nAgt.substring(verOffset+5);
  }
  // In Opera, the true version is after "Opera" 
  else if ((verOffset=nAgt.indexOf("Opera"))!=-1) {
   theBrowserName = "Opera";
   theFullVersion = nAgt.substring(verOffset+6);
  }
  // In Chrome, the true version is after "Chrome" 
  // User-agent header: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.107 Safari/534.13
  else if ((verOffset=nAgt.indexOf("Chrome"))!=-1) {
   theBrowserName = "Chrome";
   theFullVersion = nAgt.substring(verOffset+7);
  }
  // In Safari, the true version is after "Safari" 
  else if ((verOffset=nAgt.indexOf("Safari"))!=-1) {
   theBrowserName = "Safari";
   theFullVersion = nAgt.substring(verOffset+7);
  }
  // In Firefox, the true version is after "Firefox" 
  // User-agent header: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
  else if ((verOffset=nAgt.indexOf("Firefox"))!=-1) {
   theBrowserName = "Firefox";
   theFullVersion = nAgt.substring(verOffset+8);
  }
  // In most other browsers, "name/version" is at the end of userAgent 
  else if ( (nameOffset=nAgt.lastIndexOf(' ')+1) < (verOffset=nAgt.lastIndexOf('/')) ) 
  {
   theBrowserName = nAgt.substring(nameOffset,verOffset);
   theFullVersion = nAgt.substring(verOffset+1);
   if (theBrowserName.toLowerCase()==theBrowserName.toUpperCase()) {
    theBrowserName = navigator.appName;
   }
  }
  // trim the theFullVersion string at semicolon/space if present
  if ((ix=theFullVersion.indexOf(";"))!=-1) theFullVersion=theFullVersion.substring(0,ix);
  if ((ix=theFullVersion.indexOf(" "))!=-1) theFullVersion=theFullVersion.substring(0,ix);
  
  theMajorVersion = parseInt(''+theFullVersion,10);
  if (isNaN(theMajorVersion)) {
   theFullVersion  = ''+parseFloat(navigator.appVersion); 
   theMajorVersion = parseInt(navigator.appVersion,10);
  }
  
  // document.write('Browser name  = '+theBrowserName+'<br>');
  // document.write('Full version  = '+theFullVersion+'<br>');
  // document.write('Major version = '+theMajorVersion+'<br>');
  // document.write('navigator.appName = '+navigator.appName+'<br>');
  // document.write('navigator.userAgent = '+navigator.userAgent+'<br>');
  
  return theFullVersion;
}




//****************************************************************************
// PUBLIC FUNCTION:  browser_major_version();
//
// PARAMETERS:
//  none
//
// DESCRIPTION:
//  Returns the browser version of the browser currently being used.
//****************************************************************************
function browser_major_version()
{
  var nVer = navigator.appVersion;
  var nAgt = navigator.userAgent;
  
  var theBrowserName  = navigator.appName;
  var theFullVersion  = ''+parseFloat(navigator.appVersion); 
  var theMajorVersion = parseInt(navigator.appVersion,10);
  var nameOffset,verOffset,ix;
  
  // In MSIE, the true version is after "MSIE" in userAgent
  // User-agent header: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB6.6; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MDDS; .NET4.0C)
  if ((verOffset=nAgt.indexOf("MSIE"))!=-1) {
   theBrowserName = "Microsoft Internet Explorer";
   theFullVersion = nAgt.substring(verOffset+5);
  }
  // In Opera, the true version is after "Opera" 
  else if ((verOffset=nAgt.indexOf("Opera"))!=-1) {
   theBrowserName = "Opera";
   theFullVersion = nAgt.substring(verOffset+6);
  }
  // In Chrome, the true version is after "Chrome" 
  // User-agent header: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.107 Safari/534.13
  else if ((verOffset=nAgt.indexOf("Chrome"))!=-1) {
   theBrowserName = "Chrome";
   theFullVersion = nAgt.substring(verOffset+7);
  }
  // In Safari, the true version is after "Safari" 
  else if ((verOffset=nAgt.indexOf("Safari"))!=-1) {
   theBrowserName = "Safari";
   theFullVersion = nAgt.substring(verOffset+7);
  }
  // In Firefox, the true version is after "Firefox" 
  // User-agent header: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
  else if ((verOffset=nAgt.indexOf("Firefox"))!=-1) {
   theBrowserName = "Firefox";
   theFullVersion = nAgt.substring(verOffset+8);
  }
  // In most other browsers, "name/version" is at the end of userAgent 
  else if ( (nameOffset=nAgt.lastIndexOf(' ')+1) < (verOffset=nAgt.lastIndexOf('/')) ) 
  {
   theBrowserName = nAgt.substring(nameOffset,verOffset);
   theFullVersion = nAgt.substring(verOffset+1);
   if (theBrowserName.toLowerCase()==theBrowserName.toUpperCase()) {
    theBrowserName = navigator.appName;
   }
  }
  // trim the theFullVersion string at semicolon/space if present
  if ((ix=theFullVersion.indexOf(";"))!=-1) theFullVersion=theFullVersion.substring(0,ix);
  if ((ix=theFullVersion.indexOf(" "))!=-1) theFullVersion=theFullVersion.substring(0,ix);
  
  theMajorVersion = parseInt(''+theFullVersion,10);
  if (isNaN(theMajorVersion)) {
   theFullVersion  = ''+parseFloat(navigator.appVersion); 
   theMajorVersion = parseInt(navigator.appVersion,10);
  }
  
  // document.write('Browser name  = '+theBrowserName+'<br>');
  // document.write('Full version  = '+theFullVersion+'<br>');
  // document.write('Major version = '+theMajorVersion+'<br>');
  // document.write('navigator.appName = '+navigator.appName+'<br>');
  // document.write('navigator.userAgent = '+navigator.userAgent+'<br>');
  
  return theMajorVersion;
}
