/* browser sniffer, idea taken from http://www.quirksmode.org/
provides the following:
   sniffer.userAgent: the processed userAgent string (internally a lowercased variant is used)
   sniffer.browser: lower case string
   sniffer.version: string (version for mozilla is according to engine, so mozilla.org 1 is mozilla 5)
   sniffer.majorVersion: int before the '.'
   sniffer.minorVersion: int after the '.' if available
   sniffer.geckoVersion: string, if available
   sniffer.geckoMajorVersion, sniffer.geckoMinorVersion: int, if available
   sniffer.geckoDate: int, if available
and the booleans:
   sniffer.msie, sniffer.mozilla, sniffer.opera, sniffer.safari, etc.
*/

function BrowserSniffer (userAgent) {
   var self = this;
   if (userAgent) {
      self.userAgent = userAgent;
      var userAgent = userAgent.toLowerCase();
   } else {
      self.userAgent = navigator.userAgent;
      var userAgent = navigator.userAgent.toLowerCase();
   }
   this.browser = false;
   var version, majorVersion, minorVersion, OS;

   var browserList = new Array('omniweb', 'safari', 'konqueror', 'opera', 'webtv', 'icab', 'msie');
   for (var i=0; i<browserList.length; i++) {
      if (checkIt(browserList[i])) {
         self.browser = browserList[i];
         getBrowserInfo(browserList[i]);
         break;
      }
   }
   if (!this.browser && checkIt('mozilla') && !checkIt('compatible')) {
      self.browser = 'mozilla';
      getBrowserInfo('mozilla');
   }
   if (this.browser) {
      eval ( 'this.' + this.browser + ' = true;');
   } else {
      this.browser = "An unknown browser";
   }

   getGeckoVersion();
   getAppleWebKitVersion();


   function getBrowserInfo(needle) {
      eval ( 'var expression = /' + needle + '[\\/ ]v?(\\d+)\\.?(\\d*)/' );
      var result = expression.exec(userAgent);
      if (result) {
         self.majorVersion = result[1];
         self.minorVersion = result[2];
         if (self.minorVersion)
            self.version = self.majorVersion + '.' + self.minorVersion;
         else
            self.version = self.majorVersion;
      }
   }

   function getGeckoVersion() {
      if (checkIt('gecko/')) {
         var expression = /gecko\/(\d+)/;
         var result = expression.exec(userAgent);
         if (result) {
            self.geckoDate = result[1];
         }
         var expression = /rv:(\d+)\.(\d+)/;
         var result = expression.exec(userAgent);
         if (result) {
            self.geckoMajorVersion = result[1];
            self.geckoMinorVersion = result[2];
            self.geckoVersion = self.geckoMajorVersion + '.' + self.geckoMinorVersion;
         }
      }
   }

   function getAppleWebKitVersion() {
      if (checkIt('applewebkit/')) {
         var expression = /applewebkit\/(\d+)\.?(\d*)/;
         var result = expression.exec(userAgent);
         if (result) {
            self.appleWebKitMajorVersion = result[1];
            self.appleWebKitMinorVersion = result[2];
            if (self.appleWebKitMinorVersion)
               self.appleWebKitVersion = self.appleWebKitMajorVersion + '.' + self.appleWebKitMinorVersion;
            else
               self.appleWebKitVersion = self.appleWebKitMajorVersion;
         }
      }
   }


   function checkIt(needle) {
      return userAgent.indexOf(needle) + 1;
   }

}

sniffer = new BrowserSniffer();


var showAll = false;
if(
   (sniffer.mozilla && (sniffer.geckoMajorVersion > 1 || (sniffer.geckoMajorVersion == 1 && sniffer.geckoMinorVersion >= 5) ) ) ||
   (sniffer.msie && sniffer.majorVersion >= 6) ||
   (sniffer.opera && (sniffer.majorVersion > 7 || (sniffer.majorVersion == 7 && sniffer.minorVersion >= 23) ) ) ||
   (sniffer.safari && sniffer.majorVersion >= 312) ||
   (sniffer.konqueror && sniffer.majorVersion >=3) ||
   (sniffer.icab && sniffer.majorVersion >= 3)
   ) showAll = true;

