// JavaScript Document
//<![CDATA[
/********************************************************
 * Copyright (C) 2002-2003, CodeHouse.com. All rights reserved.
 * CodeHouse(TM) is a registered trademark.
 *
 * THIS SOURCE CODE MAY BE USED FREELY PROVIDED THAT
 * IT IS NOT MODIFIED OR DISTRIBUTED, AND IT IS USED
 * ON A PUBLICLY ACCESSIBLE INTERNET WEB SITE.
 * 
 * CodeHouse.com JavaScript Library Module: Browser Sniffer Class
 * You can obtain this script at http://www.codehouse.com
 ********************************************************/
function CJL_BrowserSniffer()
{
   var ua = navigator.userAgent;

   this.isFireFox = function()
   { 
      return /Firefox/.test(ua);
   }

   this.isOpera = function()
   {
      return /Opera/.test(ua);
   }

   this.isSafari = function()
   {
      return /Safari/.test(ua);
   }

   this.isGecko = function()
   {
      return navigator.product == "Gecko" &&
	     ! ( this.isOpera() || this.isSafari() );
   }

   this.isIEWin = function()
   {
      return window.external && /MSIE/.test(ua);
   }

   this.isIEMac = function()
   {
      return window.external && /Mac/.test(ua);
   }

   this.getVersion = function()
   {
	   if(this.isFireFox())
      {
         var n = ua.match(/[0-9.]*$/)[0];
         return 'FireFox: v' + n;
      }
	   
       if( this.isGecko())
      {
         var n = ua.match(/rv:([0-9.]+)/)[1];
         var ar = n.split(".");
         var s = ar[0] + ".";
         for(var i = 1; i < ar.length; ++i)
         {
            s += ("0" + ar[i]).match(/.{2}$/)[0];
         }
         return 'Gecho Family: ' + Number(s);
      }
      else if( this.isIEWin() || this.isIEMac() )
      {
         return 'IE Family: v' + Number(ua.match(/MSIE ([0-9.]+)/)[1]);
      }
      else if( this.isSafari() )
      {
        var n = ua.match(/[0-9.]*$/)[0];
        return 'Safari: v' +n;
      }
      else if( this.isOpera() )
      {
         return 'Opera: v' +Number(ua.match(/Opera.([0-9.]+)/)[1]);
      }
      else
      {
         return null;
      }
   }
}
   
   sniffer = new CJL_BrowserSniffer();
   if( sniffer.isFireFox())
   {
      browserType = "FireFox";
   }

   else if( sniffer.isGecko())
   {
      browserType = "Gecko family";
   }

   else if( sniffer.isIEWin() )
   {
      browserType = "Internet Explorer for Windows";
   }
   else if( sniffer.isIEMac() )
   {
      browserType = "Internet Explorer for Macintosh";
   }
   else if( sniffer.isSafari() )
   {
      browserType = "Safari"
   }
   else if( sniffer.isOpera() )
   {
      browserType = "Opera";
   }
   else
   {
      browserType = "Unknown";
   }
//]]>
