 /*===================================================================================
<library>
<libraryName>Sniffer Processing</libraryName>
<summary>Methods to check if the browser type, OS, and Flash capabilities</summary>
</library>
===================================================================================*/

 /*===================================================================================
<member>
<name>enableSniffer</name>
<version>1.0</version>
<author>The Original Code is Netscape code</author>
<summary>Sets global variables: navigator.browserName, navigator.browserVersion, navigator.OS, navigator.flashVersion</summary>
<remarks>
<list>review: Salcescu Cristian</list>
</remarks>
</member>
===================================================================================*/
function enableSniffer()
{
	navigator.browserName 	=  navigator.appName.toLowerCase();
	navigator.browserVersion 	=  parseFloat(navigator.appVersion);
	navigator.OS = navigator.platform.toLowerCase();
	navigator.flashVersion = -1;

	var agent = navigator.userAgent.toLowerCase();
		
	//detect operating system
	//WINDOWS 
	if ((agent.indexOf("win")!=-1) || (agent.indexOf("16bit")!=-1)) 			navigator.OS = "win";
	if ((agent.indexOf("win95")!=-1) || (agent.indexOf("windows 95")!=-1)) 		navigator.OS = "win95";
	if ((agent.indexOf("win16")!=-1) ||
		(agent.indexOf("16bit")!=-1) || (agent.indexOf("windows 3.1")!=-1) ||
		(agent.indexOf("windows 16-bit")!=-1)) 									navigator.OS = "win16";
	if ((agent.indexOf("windows 3.1")!=-1) || (agent.indexOf("win16")!=-1) ||
		(agent.indexOf("windows 16-bit")!=-1))									navigator.OS = "win31";					
	if ((agent.indexOf("win98")!=-1) || (agent.indexOf("windows 98")!=-1)) 		navigator.OS = "win98";	
	if ((agent.indexOf("winnt")!=-1) || (agent.indexOf("windows nt")!=-1)) 		navigator.OS = "winnt";		
	if (agent.indexOf("windows nt 4.0")!=-1) 									navigator.OS = "winnt4";		
	if (agent.indexOf("windows nt 5.0")!=-1) 									navigator.OS = "winnt5";	
	if (agent.indexOf("windows nt 6.0")!=-1) 									navigator.OS = "winnt6";		
	if (agent.indexOf("win2000pro")!=-1) 										navigator.OS = "win2000pro";			
	if (agent.indexOf("windows 2001")!=-1) 										navigator.OS = "win2001";		
	if (agent.indexOf("windows ce")!=-1) 										navigator.OS = "wince";		
	if (agent.indexOf("windows xp")!=-1) 										navigator.OS = "winxp";					
	
	//MAC CHECK 
	blnIsMac = false;
	if (agent.indexOf("mac")!=-1) 												{ navigator.OS = "mac"; blnIsMac = true; }				
	if (blnIsMac && 
		((agent.indexOf("68k")!=-1) || (agent.indexOf("68000")!=-1))) 			navigator.OS = "mac68k";					
	if (blnIsMac && 
		((agent.indexOf("ppc")!=-1) || (agent.indexOf("powerpc")!=-1)))			navigator.OS = "macppc";					

	//MAC MSIE CHECK
	if (blnIsMac && this.ie) 													navigator.OS = "macie";						 	
	if (blnIsMac && (agent.indexOf("msie 4")!=-1)) 								navigator.OS = "macie4";						 	
	if (blnIsMac && (agent.indexOf("msie 4.01")!=-1)) 							navigator.OS = "macie401";						 	
	if (blnIsMac && (agent.indexOf("msie 4.5")!=-1)) 							navigator.OS = "macie45";						 	
	if (blnIsMac && (agent.indexOf("msie 5.0")!=-1)) 							navigator.OS = "macie5";						 	
	if (blnIsMac && (agent.indexOf("msie 6.0")!=-1)) 							navigator.OS = "macie6";						 	
	
	//Unix, Linux
  	if (navigator.platform.indexOf("unix") != -1) 										navigator.OS = "unix";						 	
    if (navigator.platform.indexOf("linux") != -1) 										navigator.OS = "linux";						 	     
	
	var i;
	//Opera
	 if ((i = agent.indexOf('opera')) != -1)
	 {
		navigator.browserName = "opera";
	    navigator.browserVersion  = parseFloat('0' + agent.substr(i + 6), 10);		
  	}		
	//MSIE
	else if ((i = agent.indexOf('msie')) != -1)
    {
		navigator.browserName = "ie";		    	
	    navigator.browserVersion = parseFloat('0' + agent.substr(i + 5), 10);    	    
	}
	//Mozilla
	else if ((agent.indexOf('gecko') != -1) && (agent.indexOf('netscape') == -1))
  	{    
    	var rvStart = navigator.userAgent.indexOf('rv:') + 3;
    	var rvEnd = navigator.userAgent.indexOf(')', rvStart);
    	var rv = navigator.userAgent.substring(rvStart, rvEnd);
    	var decIndex = rv.indexOf('.');
    	if (decIndex != -1)
    	{
      		rv = rv.replace(/\./g, '')
      		rv = rv.substring(0, decIndex) + '.' + rv.substr(decIndex)
    	}
    	navigator.browserVersion = parseFloat(rv);
    
    	if (agent.indexOf('compuserve') != -1)
      		navigator.browserName = 'compuserve';
    	else
      		navigator.browserName = 'mozilla';
  	}
	//Netscape
  	else if ((agent.indexOf('mozilla') !=-1) && (agent.indexOf('spoofer')==-1) && (agent.indexOf('compatible') == -1) && (agent.indexOf('opera')==-1)&& (agent.indexOf('webtv')==-1) && (agent.indexOf('hotjava')==-1))
  	{
    	var intMajor = parseFloat(navigator.appVersion);
    
    	if (intMajor < 4)
      		navigator.browserVersion = intMajor;
    	else
    	{
      		i = agent.lastIndexOf('/')
      		navigator.browserVersion = parseFloat('0' + agent.substr(i + 1), 10);
    	}
	    navigator.browserName = 'netscape';
  	}
	//aol
    else if ((i = agent.indexOf('aol')) != -1 )
  	{		
		navigator.browserName = 'aol';
		navigator.browserVersion = parseFloat('0' + agent.substr(i + 4), 10);
	}
	//hotjava
	else if ((i = agent.indexOf('hotjava')) != -1 )
	{		
		navigator.browserName = 'hotjava';		
	}
	//MAC SAFARI
	else if ((i = agent.indexOf('safari')) != -1 ) 
	{		
		navigator.browserName = 'safari';		
	}
	//WEB TV CHECK 
	else if ((i = agent.indexOf('webtv')) != -1 )
	{
		navigator.browserName = 'webtv';
		navigator.browserVersion = parseFloat('0' + agent.substr(i + 6), 10);		
	}
	
	//Flash
	var flashVersion = -1;
	//get flash version from cookie
//	flashVersion = getCookie("flash");
//	if(flashVersion == null)	
//	{				
		// NS3+, Konqueror and Opera3+ (detect by plugin array)
		if (navigator.plugins != null && navigator.plugins.length > 0) 
		{
			var flashPlugin = navigator.plugins['Shockwave Flash'];
			if (typeof flashPlugin == 'object') 
			{
				if (flashPlugin.description.indexOf('6.') != -1) flashVersion = 6;
				else if (flashPlugin.description.indexOf('5.') != -1) flashVersion = 5;
				else if (flashPlugin.description.indexOf('4.') != -1) flashVersion = 4;
				else if (flashPlugin.description.indexOf('3.') != -1) flashVersion = 3;
			}
		}
		// IE4+ on Win32 (detect by ActiveX object using VBScript)
		else if (agent.indexOf("msie") != -1 && parseInt(navigator.appVersion) >= 4 && agent.indexOf("win")!=-1 && agent.indexOf("16bit")==-1) 
		{
			document.write('<' + 'scr' + 'ipt language="VBScript"\> \n');
			document.write('on error resume next \n');
			document.write('if IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.6")) then flashVersion = 6 \n');
			document.write('if flashVersion < 6 and IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.5")) then flashVersion = 5 \n');
			document.write('if flashVersion < 5 and IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.4")) then flashVersion = 4 \n');
			document.write('if flashVersion < 4 and IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.3")) then flashVersion = 3 \n');
			document.write('<' + '/scr' + 'ipt\> \n');
		}
		// WebTV 2.5 supports flash 3
		else if (agent.indexOf("webtv/2.5") != -1) flashVersion = 3;
		// older WebTV supports flash 2
		else if (agent.indexOf("webtv") != -1) flashVersion = 2;
		// Cannot detect
		else 	
			flashVersion = -1;	    
			
//		setCookie("flash", flashVersion);	
//	}
	navigator.flashVersion = flashVersion;
}
 /*===================================================================================
<member>
<name>isBrowserVersion</name>
<version>1.0</version>
<author>Salcescu Cristian</author>
<summary>Checks browser (name and version)</summary>
<param name="strBrowserName" type="string">strbrowserName should be one one of the following constants (otherwise function will return false): "ie", "netscape", "opera", "mozilla", "safari", "compuserve", "aol", "hotjava", "webtv"</param>
<param name="strBrowserVersion" type="string">(ask Cristi)</param>
<returns>boolean</returns>
</member>
===================================================================================*/
function isBrowserVersion(strBrowserName, strBrowserVersion)
{
	return ((navigator.browserName == strBrowserName) && (navigator.browserVersion == strBrowserVersion))
}
 /*===================================================================================
<member>
<name>isOSVersion</name>
<version>1.0</version>
<author>Salcescu Cristian</author>
<summary>Checks operating system name</summary>
<param name="strOS" type="string">(ask Cristi)</param>
<returns>boolean</returns>
<remarks>
<list>strOS should be one one of the following constants (otherwise function will return false): "win", "win95", "win16", "win31", "win98", "winnt", "winnt4", "winnt5", "winnt6", "win2000pro", "win2001", "wince", "winxp"</list>
</remarks>
</member>
===================================================================================*/
function isOSVersion(strOS)
{
	return (navigator.OS == strOS);
}
 /*===================================================================================
<member>
<name>isFlash</name>
<version>1.0</version>
<author>Salcescu Cristian</author>
<summary>Detects if Flash is installed</summary>
<returns>boolean</returns>
</member>
===================================================================================*/
function isFlash()
{
	return (navigator.flashVersion != -1);
}

enableSniffer();
