// Copyright 2002-2003 Macromedia, Inc. All rights reserved.
//--------------------------------------------------------------------
// FUNCTION:
//   parseVisitorInfoString
//
// DESCRIPTION:
//  Parse the HTTP_USER_AGENT variables for OS and broser type.
//
// ARGUMENTS:
//   HTTP_USER_AGENT String
//
// RETURNS:
//   Object with property set for OS and browser info
//--------------------------------------------------------------------
var BROWSER_IE = "Microsoft Internet Explorer ";
var BROWSER_NETSCAPE = "Netscape ";
var BROWSER_OPERA = "Opera ";
var BROWSER_MOZILLA = "Mozilla ";
var BROWSER_UNKNOWN = "Unknown browser ";
var BROWSER_VERSION_UNKNOWN = "Unknown browser version ";
var BROWSER_SAFARI = "Safari ";


// Global variable constant for OS
var OS_WIN2K = "Windows 2000 ";
var OS_WINNT = "Windows NT ";
var OS_WINXP = "Windows XP ";
var OS_WINME = "Windows me ";
var OS_WIN98 = "Windows 98 ";
var OS_MAC = "Mac ";
var OS_UNKNOWN = "Unknown platform ";
var OS_UNKNOWN_VERSION = "Unknown version ";

function parseVisitorInfoString(visitorInfotString)
{
  var infoObj = new Object();
  var browserType;
  var platform;
  var browserTypeStartIndex ;
  var browserTypeEndIndex ;
    //Parse user agent string for browser type
  // For Opera Browser
  
  if (visitorInfotString.indexOf("Opera") != -1)
  {
    browserType = BROWSER_OPERA;
	browserTypeStartIndex = visitorInfotString.indexOf("Opera");
	browserTypeEndIndex = visitorInfotString.indexOf(" ", browserTypeStartIndex + 6);
	if(browserTypeEndIndex != -1)
	  browserType = browserType + visitorInfotString.substr(browserTypeStartIndex + 6, browserTypeEndIndex - browserTypeStartIndex -6);
	else 
	  browserType = browserType + BROWSER_VERSION_UNKNOWN;
  }
  // for Internet explorer
  else if (visitorInfotString.indexOf("MSIE") != -1)
  {
    
    browserType = BROWSER_IE;
	browserTypeStartIndex = visitorInfotString.indexOf("MSIE");
	browserTypeEndIndex = visitorInfotString.indexOf(";", browserTypeStartIndex);
	browserVersion = visitorInfotString.substr(browserTypeStartIndex + 5, browserTypeEndIndex - browserTypeStartIndex -5);
	browserType = browserType + browserVersion;
  }
  // for Mozilla
  else if ((visitorInfotString.indexOf("Gecko") != -1) 
           && (visitorInfotString.indexOf("Mozilla\/5.0") != -1)
		   && (visitorInfotString.indexOf("Netscape") == -1))
  {
    
	 if (visitorInfotString.indexOf("Safari") != -1)
	 {
	   browserType = BROWSER_SAFARI;
	   browserTypeStartIndex = visitorInfotString.indexOf("Safari");
	   browserTypeEndIndex = visitorInfotString.indexOf("/", browserTypeStartIndex);
	   browserVersion = visitorInfotString.substr(browserTypeEndIndex+1,2);
	   browserType = browserType + browserVersion;
	 }
	 else
	 {
	   browserType  = BROWSER_MOZILLA;
	   //find Mozilla version
	   browserTypeStartIndex = visitorInfotString.indexOf("rv:");
	   browserTypeEndIndex = visitorInfotString.indexOf(")", browserTypeStartIndex);
	   browserVersion = visitorInfotString.substr(browserTypeStartIndex + 3, browserTypeEndIndex - browserTypeStartIndex -3);
	   browserType = browserType + browserVersion;
	 }
   
  } 
  // for Netescape 4.9
  else if (visitorInfotString.indexOf("Mozilla\/4.79") != -1)
  {
	 browserType = BROWSER_NETSCAPE + "4.79";
  } 
  // For Netescape 4.75
  else if (visitorInfotString.indexOf("Mozilla\/4.75") != -1)
  {
	 browserType = BROWSER_NETSCAPE + "4.75";
  } 
  // For Netescape 4.7
  else if (visitorInfotString.indexOf("Mozilla\/4.7") != -1)
  {
	  browserType = BROWSER_NETSCAPE + "4.7";
  }
  // For Netescape 6 and above
  else if (visitorInfotString.indexOf("Netscape") != -1)
  {
	 browserType = BROWSER_NETSCAPE;
	 browserTypeStartIndex = visitorInfotString.indexOf("Netscape\/");
	 if (browserTypeStartIndex != -1)
	 {
	   browserVersion = visitorInfotString.substr(browserTypeStartIndex + 9);
	   
	 }
	 else
	   browserVersion = "6.0";
	 
	 browserType = browserType + browserVersion;	
  }  
  else
  {
     browserType = BROWSER_UNKNOWN;
  }
  
  // Parse for operating systems
  if (visitorInfotString.indexOf("Windows") != -1)
  {
      //For Windows 20000  Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
	  if (((visitorInfotString.indexOf("NT 5.0")!= -1) 
		  && (visitorInfotString.indexOf("U") == -1))|| (visitorInfotString.indexOf("2000")!= -1))
	  {
		 platform = OS_WIN2K;
	  }
	  // For windows XP on Netescape  
	  else if((visitorInfotString.indexOf("U") != -1)
		   && (visitorInfotString.indexOf("NT 5.0")!= -1))
	  {
		platform  = OS_WINXP;
	  }
	  else if(visitorInfotString.indexOf("NT 5.1")   != -1)
	  {
		platform  = OS_WINXP;
	  }
	  //NT 4.0 
	  else if(visitorInfotString.indexOf("NT 4.0")   != -1)
	  {
		platform  = OS_WINNT + "4.0";
	  }
	  // For Windows 98 or win me
	  else if((visitorInfotString.indexOf("98")   != -1) 
	        || (visitorInfotString.indexOf("Win98") != -1))
	  {
	     if (visitorInfotString.indexOf("Win 9x 4.90") != -1)
		   platform  = OS_WINME;
		 else
		   platform  = OS_WIN98;
	  }
      else if((visitorInfotString.indexOf("NT")   != -1) 
	        || (visitorInfotString.indexOf("WinNT") != -1))
	  {
	    var osVersionStartIndex = visitorInfotString.indexOf("NT");
	    var osVersionLastIndex = visitorInfotString.indexOf(";" , osVersionStartIndex);
		var osVersion;
		if (osVersionLastIndex != -1)
		{
		  osVersion = visitorInfotString.substr (osVersionStartIndex + 2, osVersionLastIndex - osVersionStartIndex - 2 )
		  platform = OS_WINNT + osVersion;
		}
		else
	      platform = OS_WINNT + OS_UNKNOWN_VERSION;
	  }
      else
	      platform = "Windows " + OS_UNKNOWN_VERSION;
  }
  // Windows 98 on netscape
  else if((visitorInfotString.indexOf("98")   != -1) 
	        || (visitorInfotString.indexOf("Win98") != -1))
    {
      platform = OS_WIN98;
    }
  else if(visitorInfotString.indexOf("WinNT") != -1) 
    {
       if(visitorInfotString.indexOf("U") != -1) 
       {
         platform = OS_WINXP;
       }
	   else if(visitorInfotString.indexOf("I") != -1) 
       {
         platform = OS_WINNT;
       } else 
	     platform = OS_UNKNOWN;
	 }
  else if(visitorInfotString.indexOf("Mac OS") != -1)
  {
    
    platform = OS_MAC + OS_UNKNOWN_VERSION; 
  } 
  else if(visitorInfotString.indexOf("Mac_PowerPC") != -1)
  {
    platform = OS_MAC + OS_UNKNOWN_VERSION; 
  } 
  else if(visitorInfotString.indexOf("Macintosh") != -1)
  {
    platform = OS_MAC + OS_UNKNOWN_VERSION;   
  }
  else
  {
    platform = OS_UNKNOWN;
  }
  infoObj.BrowserInfo = browserType;
  infoObj.Platform = platform;

  return infoObj;
}