/*BrowserDetector()Parses User-Agent string into useful info.Source: Webmonkey Code Library(http://www.hotwired.com/webmonkey/javascript/code_library/)Author: Richard BlaylockAuthor Email: blaylock@wired.comUsage: var bd = new BrowserDetector(navigator.userAgent);*/// Utility function to trim spaces from both ends of a stringfunction Trim(inString) {  var retVal = "";  var start = 0;  while ((start < inString.length) && (inString.charAt(start) == ' ')) {    ++start;  }  var end = inString.length;  while ((end > 0) && (inString.charAt(end - 1) == ' ')) {    --end;  }  retVal = inString.substring(start, end);  return retVal;}function BrowserDetector(ua) {// Defaults  this.browser = "Unknown";  this.platform = "Unknown";  this.version = "";  this.majorver = "";  this.minorver = "";  uaLen = ua.length;// ##### Split into stuff before parens and stuff in parens  var preparens = "";  var parenthesized = "";  i = ua.indexOf("(");  if (i >= 0) {    preparens = Trim(ua.substring(0,i));        parenthesized = ua.substring(i+1, uaLen);        j = parenthesized.indexOf(")");        if (j >= 0) {          parenthesized = parenthesized.substring(0, j);        }  }  else {    preparens = ua;  }// ##### First assume browser and version are in preparens// ##### override later if we find them in the parenthesized stuff  var browVer = preparens;  var tokens = parenthesized.split(";");  var token = "";// # Now go through parenthesized tokens  for (var i=0; i < tokens.length; i++) {    token = Trim(tokens[i]);        //## compatible - might want to reset from Netscape        if (token == "compatible") {          //## One might want to reset browVer to a null string          //## here, but instead, we'll assume that if we don't          //## find out otherwise, then it really is Mozilla          //## (or whatever showed up before the parens).        //## browser - try for Opera or IE    }        else if (token.indexOf("MSIE") >= 0) {      browVer = token;    }    else if (token.indexOf("Opera") >= 0) {      browVer = token;    }        //'## platform - try for X11, SunOS, Win, Mac, PPC    else if ((token.indexOf("X11") >= 0) || (token.indexOf("SunOS") >= 0) ||(token.indexOf("Linux") >= 0)) {      this.platform = "Unix";        }    else if (token.indexOf("Win") >= 0) {      this.platform = token;        }    else if ((token.indexOf("Mac") >= 0) || (token.indexOf("PPC") >= 0)) {      this.platform = token;        }  }  var msieIndex = browVer.indexOf("MSIE");  if (msieIndex >= 0) {    browVer = browVer.substring(msieIndex, browVer.length);  }  var leftover = "";  if (browVer.substring(0, "Mozilla".length) == "Mozilla") {    this.browser = "Netscape";        leftover = browVer.substring("Mozilla".length+1, browVer.length);  }  else if (browVer.substring(0, "Lynx".length) == "Lynx") {    this.browser = "Lynx";        leftover = browVer.substring("Lynx".length+1, browVer.length);  }  else if (browVer.substring(0, "Opera".length) == "Opera") {    this.browser = "Opera"    leftover = browVer.substring("Opera".length+1, browVer.length);  }  else if (browVer.substring(0, "MSIE".length) == "MSIE") {    this.browser = "IE";    leftover = browVer.substring("MSIE".length+1, browVer.length);  }  else if (browVer.substring(0, "Microsoft Internet Explorer".length) =="Microsoft Internet Explorer") {    this.browser = "IE"        leftover = browVer.substring("Microsoft Internet Explorer".length+1,browVer.length);  }  leftover = Trim(leftover);  // # Try to get version info out of leftover stuff  i = leftover.indexOf(" ");  if (i >= 0) {    this.version = leftover.substring(0, i);  }  else  {    this.version = leftover;  }  j = this.version.indexOf(".");  if (j >= 0) {    this.majorver = this.version.substring(0,j);    this.minorver = this.version.substring(j+1, this.version.length);  }  else {    this.majorver = this.version;  }} // function BrowserCap