// JavaScript Document

function CJL_BrowserSniffer() {
   var ua = navigator.userAgent;

	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 && /Win/.test(ua);
   }

   this.isIEMac = function() {
      return window.external && /Mac/.test(ua);
   }

   this.getVersion = function()  {
      if( this.isIEWin() || this.isIEMac() )  {
         return Number(ua.match(/MSIE ([0-9.]+)/)[1]);
      } else if( this.isSafari() ) {
         return Number(ua.match(/[0-9.]+$/));
      } else 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 Number(s);
      } else if( this.isOpera() ) {
         return Number(ua.match(/Opera.([0-9.]+)/)[1]);
      } else {
         return null;
      }
   }
}

/*
   
   sniffer = new CJL_BrowserSniffer();

   if( sniffer.isIEWin() ) {
      browserType = "Internet Explorer per Windows";
   }  else if( sniffer.isIEMac() )  {
      browserType = "Internet Explorer per Macintosh";
   }  else if( sniffer.isSafari() )  {
      browserType = "Safari"
   }  else if( sniffer.isGecko() )  {
      browserType = "Gecko family";
   }  else if( sniffer.isOpera() )  {
      browserType = "Opera";
   }  else  {
      browserType = "Unknown";
   }
   
   */
