// Copyright (c) 1999, 2000, 2001, 2002 by cisco Systems, Inc.

function isSupported()
{
   // Ultimate client-side JavaScript client sniff. 
   // (C) Netscape Communications 1999.  Permission granted to reuse and distribute. 
   // Revised 17 May 99 to add is_nav5up and is_ie5up (see below). 
   // Everything you always wanted to know about your JavaScript client 
   // but were afraid to ask. Creates "is_" variables indicating: 
   // (1) browser vendor: 
   //     is_nav, is_ie, is_opera 
   // (2) browser version number: 
   //     is_major (integer indicating major version number: 2, 3, 4 ...) 
   //     is_minor (float   indicating full  version number: 2.02, 3.01, 4.04 ...) 
   // (3) browser vendor AND major version number 
   //     is_nav2, is_nav3, is_nav4, is_nav4up, is_nav5, is_nav5up, is_ie3, is_ie4, is_ie4up 
   // (4) JavaScript version number: 
   //     is_js (float indicating full JavaScript version number: 1, 1.1, 1.2 ...) 
   // (5) OS platform and version: 
   //     is_win, is_win16, is_win32, is_win31, is_win95, is_winnt, is_win98 
   //     is_os2 
   //     is_mac, is_mac68k, is_macppc 
   //     is_unix 
   //        is_sun, is_sun4, is_sun5, is_suni86 
   //        is_irix, is_irix5, is_irix6 
   //        is_hpux, is_hpux9, is_hpux10 
   //        is_aix, is_aix1, is_aix2, is_aix3, is_aix4 
   //        is_linux, is_sco, is_unixware, is_mpras, is_reliant 
   //        is_dec, is_sinix, is_freebsd, is_bsd 
   //     is_vms 
   // 
   // See http://www.it97.de/JavaScript/JS_tutorial/bstat/navobj.html and 
   // http://www.it97.de/JavaScript/JS_tutorial/bstat/Browseraol.html 
   // for detailed lists of userAgent strings. 
   // 
   // Note: you don't want your Nav4 or IE4 code to "turn off" or 
   // stop working when Nav5 and IE5 (or later) are released, so 
   // in conditional code forks, use is_nav4up ("Nav4 or greater") 
   // and is_ie4up ("IE4 or greater") instead of is_nav4 or is_ie4 
   // to check version in code which you want to work on future 
   // versions. 
   
   // convert all characters to lowercase to simplify testing 
   var agt=navigator.userAgent.toLowerCase(); 
   // *** BROWSER VERSION *** 
   // Note: On IE5, these return 4, so use is_ie5up to detect IE5. 
   var is_major = parseInt(navigator.appVersion); 
   var is_minor = parseFloat(navigator.appVersion); 
   // Note: Opera and WebTV spoof Navigator.  We do strict client detection. 
   // If you want to allow spoofing, take out the tests for opera and webtv. 
   var is_nav  = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1) 
      && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1) 
      && (agt.indexOf('webtv')==-1)); 
   var is_nav2 = (is_nav && (is_major == 2)); 
   var is_nav3 = (is_nav && (is_major == 3)); 
   var is_nav4 = (is_nav && (is_major == 4)); 
   var is_nav4up = (is_nav && (is_major >= 4)); 
   var is_nav475up = (is_nav && (is_major >= 4.75));
   var is_navonly      = (is_nav && ((agt.indexOf(";nav") != -1) || 
      (agt.indexOf("; nav") != -1)) ); 
   //Netscape 6.x returns userAgent value of '5'
   var is_nav6 = (is_nav && ( (is_major == 6) || (is_major == 5) ) ); 
   var is_nav6up = (is_nav && ((is_major >= 6) || (is_major >=5)) );
   
   var agt=navigator.userAgent.toLowerCase();
   var is_nav7 = ((agt.indexOf('netscape/7.') != -1) || (agt.indexOf('gecko/20020823') != -1) || (agt.indexOf('gecko/20021120') != -1));
       is_nav7 |= ( (agt.indexOf('gecko/20030208') != -1) || (agt.indexOf('gecko/20030624') != -1) );   
 	//Gecko/20030208 Netscape 7.02
	//Gecko/20021120 Netscape 7.01
	//Gecko/20020823 Netscape 7.0 -- this version does not actually return the value Netscape 7.0, so search by gecko build date
	//Gecko/20030624 Netscape 7.1 (ax)

   var is_ie   = (agt.indexOf("msie") != -1); 
   var is_ie3  = (is_ie && (is_major < 4)); 
   var is_ie4  = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0")==-1) ); 
   var is_ie4up  = (is_ie  && (is_major >= 4)); 
   var is_ie5  = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0")!=-1) ); 
   var is_ie5up  = (is_ie  && !is_ie3 && !is_ie4); 
   var is_ie6  =(is_ie && (is_major == 6)); 
   var is_ie6up  = (is_ie  && !is_ie3 && !is_ie4 && !is_ie5); 
 
   // KNOWN BUG: On AOL4, returns false if IE3 is embedded browser 
   // or if this is the first browser window opened.  Thus the 
   // variables is_aol, is_aol3, and is_aol4 aren't 100% reliable. 
   var is_aol   = (agt.indexOf("aol") != -1); 
   var is_aol3  = (is_aol && is_ie3); 
   var is_aol4  = (is_aol && is_ie4); 
   
   var is_opera = (agt.indexOf("opera") != -1); 
   var is_webtv = (agt.indexOf("webtv") != -1); 
   
   // *** JAVASCRIPT VERSION CHECK *** 
   var is_js; 
   if (is_nav2 || is_ie3) is_js = 1.0 
   else if (is_nav3 || is_opera) is_js = 1.1 
   else if ((is_nav4 && (is_minor <= 4.05)) || is_ie4) is_js = 1.2 
   else if ((is_nav4 && (is_minor > 4.05)) || is_ie5) is_js = 1.3
   // NOTE: In the future, update this code when newer versions of JS 
   // are released. For now, we try to provide some upward compatibility 
   // so that future versions of Nav and IE will show they are at 
   // *least* JS 1.x capable. Always check for JS version compatibility 
   // with > or >=. 
   else if (is_nav && (is_major >= 5)) is_js = 1.4 
   else if (is_ie && (is_major > 5)) is_js = 1.3 
   // HACK: no idea for other browsers; always check for JS version with > or >= 
   else is_js = 0.0; 
   
   // *** PLATFORM ***
   var is_win   = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
   // NOTE: On Opera 3.0, the userAgent string includes "Windows 95/NT4" on all
   //        Win32, so you can't distinguish between Win95 and WinNT.
   var is_win95 = ((agt.indexOf("win95")!=-1) || (agt.indexOf("windows 95")!=-1));
   
   // is this a 16 bit compiled version?
   var is_win16 = ((agt.indexOf("win16")!=-1) || 
      (agt.indexOf("16bit")!=-1) || (agt.indexOf("windows 3.1")!=-1) || 
      (agt.indexOf("windows 16-bit")!=-1) );  
   
   var is_win31 = ((agt.indexOf("windows 3.1")!=-1) || (agt.indexOf("win16")!=-1) ||
      (agt.indexOf("windows 16-bit")!=-1));
   
   // NOTE: Reliable detection of Win98 may not be possible. It appears that:
   //       - On Nav 4.x and before you'll get plain "Windows" in userAgent.
   //       - On Mercury client, the 32-bit version will return "Win98", but
   //         the 16-bit version running on Win98 will still return "Win95".
   var is_win98 = ((agt.indexOf("win98")!=-1) || (agt.indexOf("windows 98")!=-1));
   var is_winME = (agt.indexOf("Win 9x")!=-1);
   var is_winnt = ((agt.indexOf("winnt")!=-1) || (agt.indexOf("windows nt")!=-1));
   var is_win32 = (is_win95 || is_winnt || is_win98 || 
      ((is_major >= 4) && (navigator.platform == "Win32")) ||
      (agt.indexOf("win32")!=-1) || (agt.indexOf("32bit")!=-1));
   
   var is_os2   = ((agt.indexOf("os/2")!=-1) || 
      (navigator.appVersion.indexOf("OS/2")!=-1) ||   
      (agt.indexOf("ibm-webexplorer")!=-1));
   
   var is_mac    = (agt.indexOf("mac")!=-1);
   var is_mac68k = (is_mac && ((agt.indexOf("68k")!=-1) || 
      (agt.indexOf("68000")!=-1)));
   var is_macppc = (is_mac && ((agt.indexOf("ppc")!=-1) || 
      (agt.indexOf("powerpc")!=-1)));
   
   var is_sun   = (agt.indexOf("sunos")!=-1);
   var is_sun4  = (agt.indexOf("sunos 4")!=-1);
   var is_sun5  = (agt.indexOf("sunos sun4u") != -1 || agt.indexOf("sunos 5")!=-1);
	//Solaris 5.8 does not return version number, only SunOS sun4u
   var is_suni86= (is_sun && (agt.indexOf("i86")!=-1));
   var is_irix  = (agt.indexOf("irix") !=-1);    // SGI
   var is_irix5 = (agt.indexOf("irix 5") !=-1);
   var is_irix6 = ((agt.indexOf("irix 6") !=-1) || (agt.indexOf("irix6") !=-1));
   var is_hpux  = (agt.indexOf("hp-ux")!=-1);
   var is_hpux9 = (is_hpux && (agt.indexOf("09.")!=-1));
   var is_hpux10= (is_hpux && (agt.indexOf("10.")!=-1));
   var is_aix   = (agt.indexOf("aix") !=-1);      // IBM
   var is_aix1  = (agt.indexOf("aix 1") !=-1);    
   var is_aix2  = (agt.indexOf("aix 2") !=-1);    
   var is_aix3  = (agt.indexOf("aix 3") !=-1);    
   var is_aix4  = (agt.indexOf("aix 4") !=-1);    
   var is_linux = (agt.indexOf("inux")!=-1);
   var is_sco   = (agt.indexOf("sco")!=-1) || (agt.indexOf("unix_sv")!=-1);
   var is_unixware = (agt.indexOf("unix_system_v")!=-1); 
   var is_mpras    = (agt.indexOf("ncr")!=-1); 
   var is_reliant  = (agt.indexOf("reliantunix")!=-1);
   var is_dec   = ((agt.indexOf("dec")!=-1) || (agt.indexOf("osf1")!=-1) || 
      (agt.indexOf("dec_alpha")!=-1) || (agt.indexOf("alphaserver")!=-1) || 
      (agt.indexOf("ultrix")!=-1) || (agt.indexOf("alphastation")!=-1)); 
   var is_sinix = (agt.indexOf("sinix")!=-1);
   var is_freebsd = (agt.indexOf("freebsd")!=-1);
   var is_bsd = (agt.indexOf("bsd")!=-1);
   var is_unix  = ((agt.indexOf("x11")!=-1) || is_sun || is_irix || is_hpux || 
      is_sco ||is_unixware || is_mpras || is_reliant || 
      is_dec || is_sinix || is_aix || is_linux || is_bsd || is_freebsd);
   
   var is_vms   = ((agt.indexOf("vax")!=-1) || (agt.indexOf("openvms")!=-1));

   var browser_supported = false;
   var platform_supported = false;
  	//as of Fall 03, only Netscape 7.x, IE 5.5 and IE 6.0 are supported
   
   if ( is_nav)
   {
     if(is_nav7)
     {
	browser_supported = true;

     }
     else	
	{
		browser_supported = false;

	}
   }
   else if (is_ie4 || is_ie5 || is_ie6)
   {  //even when running IE 6.0, is_major and is_minor return value of "4"
      if (is_major == 5) 
      {  if (is_minor <= 5) 
         {
            browser_supported = true;
         }
      }
      else
      {
         browser_supported = true;
      }
   }

   if (is_win98 || is_winME || is_winnt || is_sun5 ) 
   {	
      platform_supported = true;
   }
 
	var flag = 0;
	if(browser_supported)
		flag+=1;
	if(platform_supported)
		flag+=2;
	
	return flag; 
  }
// some devices MAY (at this point, only one)
// not support CMS and so we want to check on 
// the device type and return false is CMS is 
// not supported.  This will cause the 
// Cluster Management Suite tab to be omitted
// or greyed out from the Express Setup pages
function supportsCMS(device_type)
{
if (device_type.indexOf("ME-C3750") != -1 )
	return false;
		else
	return true;
}




// Netscape 4.7x does not support the onclick action event
// onclick is used to launch Preflight and CMS from the express setup page
// have to check whether it is netscape 4.7
function isOlderNetscape()
{
   var agt=navigator.userAgent.toLowerCase(); 
   // *** BROWSER VERSION *** 
   // Note: On IE5, these return 4, so use is_ie5up to detect IE5. 
   var is_major = parseInt(navigator.appVersion); 
   var is_minor = parseFloat(navigator.appVersion); 
   
   // Note: Opera and WebTV spoof Navigator.  We do strict client detection. 
   // If you want to allow spoofing, take out the tests for opera and webtv. 
   var is_nav  = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1) 
      && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1) 
      && (agt.indexOf('webtv')==-1)); 

   var is_nav4 = (is_nav && (is_major == 4)); 
   var is_nav4up = (is_nav && (is_major >= 4)); 
   var is_lessthannav5 = (is_nav && (is_major < 5));
	if(is_nav4 || (is_nav4up && is_lessthannav5) )	
		return true;
return false;
}

function isWindowsPlatform()
{
   // convert all characters to lowercase to simplify testing 
   var agt=navigator.userAgent.toLowerCase();
   var is_major = parseInt(navigator.appVersion);
   var is_minor = parseFloat(navigator.appVersion);

 
   var is_win   = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
   var is_win95 = ((agt.indexOf("win95")!=-1) || (agt.indexOf("windows 95")!=-1));
   var is_win31 = ((agt.indexOf("windows 3.1")!=-1) || (agt.indexOf("win16")!=-1) ||
      (agt.indexOf("windows 16-bit")!=-1));
   var is_win98 = ((agt.indexOf("win98")!=-1) || (agt.indexOf("windows 98")!=-1));
   var is_winME = (agt.indexOf("Win 9x")!=-1);
   var is_winnt = ((agt.indexOf("winnt")!=-1) || (agt.indexOf("windows nt")!=-1));
   var is_win32 = (is_win95 || is_winnt || is_win98 || 
      ((is_major >= 4) && (navigator.platform == "Win32")) ||
      (agt.indexOf("win32")!=-1) || (agt.indexOf("32bit")!=-1));

    if(is_win || is_win95 || is_win31 || is_win98 || is_winME || is_winnt || is_win32)
	{
	return true;
	}
		else
	return false;



}

function returnPluginURL()
{
var URL = "http://cco.cisco.com/pcgi-bin/Support/ClusterMgmtSuite/cms_plugin_redirect.cgi?";
if(!isWindowsPlatform())
	{
	 URL += "platform=solaris&version=1.1'";
	}
		else
	{
	 URL += "platform=windows&version=1.1'";
	}

return URL;	
} 

function launchPreflight(ip_address)
{
//should already be initialized: initializeCMSPlugin();
//this is invoked for both Netscape and IE, need to tailor based on needs
	if(ToLoadOrNot())
		{
		loadCMS(ip_address);			
		}	
		else
		{
		RedirectToSetupReport(ip_address);
		}		

}

function getCMSNetscapePluginStatus()
{
var supported = 1; var not_installed = 2; var installed_but_not_supported =3;
 if(navigator.plugins) 	
		navigator.plugins.refresh(false);
                
                     if(navigator.mimeTypes) 
				{var i;
				for (i=0; i < navigator.mimeTypes.length; i++)
					{
					if(navigator.mimeTypes[i].type.indexOf("application/x-cisco-cms")!= -1)
						{
							return supported;
						}	
					}
				}
		return not_installed;
}

function isCMSNetscapePluginSupported()
{
var supported = 1; var not_supported = 2; var installed_but_not_supported = 3;
if(getCMSNetscapePluginStatus() == supported)
	return true;
		else
	return false;

}

function isRequiredPluginSupported()
{
	//up until Winter 2004, Solaris used the Java Plugin
	//but now we have integrated the CMS Plugin to be used
	//for Solaris as well. 	
	if(!isWindowsPlatform())	
		{
		return isSolarisCMSPluginSupported();	
		}	
		
		else
		{
		if(isNetscape())
			{
			return isCMSNetscapePluginSupported();
			}	
			else
			{
			return isCMSPluginSupported();	
			}
		}
}

function getCMSSolarisPluginStatus()
{
var supported = 1; var not_installed = 2; var not_supported = 3;
if(isSolarisCMSPluginSupported())
	{
	return supported; 
	}
		else
	{
	return not_installed;	
	}
}

function getRequiredPluginSupportedStatus()
{
	if(!isWindowsPlatform())
		return	getCMSSolarisPluginStatus();
			else
	{
	if(isNetscape())
		{
		return getCMSNetscapePluginStatus();
		}	
		else
		{
		return isCMSPluginVersionSupported();	
		}
	}
}

function isCMSPluginVersionSupported()
{
/* Need an ActiveX method that will return the Plugin version.
   Until that is available must return either supported or 
   uninstalled flag.  */
    var supported = 1; var not_installed =2; var not_supported = 3;
if(!isNetscape())
{
if(isCMSPluginSupported())
	return supported;
		else
	return not_installed;
	

}
}
/*
  This checks if the browser and OS are supported.  And if they are not supported
  then checks if the user wants to be warned again.  If the user does not want to 
  be warned (and the Plugin is only unsupported, not uninstalled), then CMS launches.
  The Plugin must be installed for CMS to launch. 
*/
function ToLoadOrNot()
{
var supported = 1; var not_installed =2; var not_supported = 3;
if(!isRequiredPluginSupported())//determines whether needs Java or CMS and returns status
	{
	return false;	
	}
if(getcookie("CMS_BROWSER_OS"))//if finds cookie then does not go to setup report, else  
		{
		return true;
		}	
  else if (!isOSSupported() || !isBrowserSupported() )
	{	
		return false;

	}
return true;
}

function buildApplicationTarget()
{  
var target = location.href;

var pString = "";
//the ApplicationTarget is not used for Solaris, but it is used for Windows
if(isNetscape() && isWindowsPlatform())
	pString = "ApplicationTarget^";
		else
if(isNetscape() && !isWindowsPlatform())
	pString = "";

		var pArray = ["appContext", target,"BootVersion", 1.7];

for(var i=0;i<pArray.length;i++) 
        pString = pString + pArray[i] + "*";
	 return pString; 
}

/* This is launched for Solaris on Netscape. 
 */
function launchCmsForWindowsNetscape(){
		 
	var target = location.href;

	var pString = "";
	//the ApplicationTarget is not used for Solaris, but it is used for Windows
	if(isNetscape() && isWindowsPlatform())
		pString = "ApplicationTarget^";
	
		var pArray = ["appContext", target,"BootVersion", 1.7];

	for(var i=0;i<pArray.length;i++) 
        	pString = pString + pArray[i] + "*";


	document.write('<HTML><BODY>');
	document.write('<br>');
	document.write('<h3>Starting CMS...</h3');
	document.write('</br>');
	document.write('<EMBED type=application/x-cisco-cms parameters=' + pString + ' width=1 height=1>');
	document.write('</EMBED>');
	document.write('</BODY></HTML>');
	//if person launches straight from cms_13.html, then 
	//it won't have the express set up page in the history
	//without this check, it will continue to launch more
	//and more instances of CMS
	if(target.indexOf("cms_13.html") == -1)
		setTimeout("history.go(-1)",2000);  

}

function writeEmbedTag(){

		var target = location.href;
		var parameters = 'appContext*' + target + '*BootVersion*' + 1.7 + '*';
	
		//var target = location.href;
		var pArray = ["appContext", target,"BootVersion", 1.7];
		var pString ="";
		for(var i=0;i<pArray.length;i++) 
        		pString = pArray[i] + "*";

		document.write('<HTML><BODY>');
		document.write('<br>');
		document.write('<h3>Starting CMS...</h3');
		document.write('</br>');
		document.write('<EMBED type=application/x-cisco-cms props=' + parameters + ' width=1 height=1>');
		document.write('</BODY></HTML>');
		//if person launches straight from cms_13.html, then 
		//it won't have the express set up page in the history
		//without this check, it will continue to launch more
		//and more instances of CMS
		if(target.indexOf("cms_13.html") == -1)
			setTimeout("history.go(-1)",2000);  
			
}

/* Everything is supported so load CMS, using plugin. We have to load the CMS Plugin
   object in the innerHTML component, otherwise sending new text to the document after
   the page has loaded will cause the Switch Home Page to blank out--replacing all 
   previously loaded vestiges with just the CMS Plugin object.   This is not the
   desired affect.  Instead, if everything is supported, we just want an AppletViewer
   screen to load straight from clicking the Cluster Management Suite tab. 
  */
function loadCMS(ipAddress)
{
var target = location.href;
if(!isWindowsPlatform())
	{
	loadCMSForNetscape(ipAddress);
	return;

	}
		else
	{
	if(isNetscape())
		{
		launchCmsForWindowsNetscape();
		return;	
		}
		else
		{
		//if(document.all.cms_plugin_paragraph.innerHTML != null)
		//	document.all.cms_plugin_paragraph.innerHTML = "";	
		var plugin_to_load = '<HTML><BODY><font size="2" face="Arial, Helvetica, sans-serif"><b>Starting CMS...</b></font></BODY></HTML><OBJECT ID="cpnmcontrol2" CLASSID="CLSID:BA3619B7-A0E5-43F0-A015-77411B1592F8" '
		   + 'width="1" height="1">'
		   + '<PARAM NAME="ApplicationTarget" VALUE="' + buildApplicationTarget() +'">'
		   + '<PARAM NAME="LaunchCms" VALUE="TRUE">'
		   + '<h3>Cisco CPNM Plugin is not installed</h3>'
		   + '</OBJECT>';
		//intermediate_window = window.open("", "", "width=5, height=4, top=4, left=4");
		//d = intermediate_window.document;
		document.write(plugin_to_load);
		if(target.indexOf("cms_13.html") == -1)
			setTimeout("history.go(-1)",2000); 
				else
			document.write(""); 
		//only invoke the loadCMS from the Switch Home Page where cms_plugin_paragraph is a defined tag
//if(document.all.cms_plugin_paragraph.innerHTML != null)
//	document.all.cms_plugin_paragraph.innerHTML = plugin_to_load;	
		}

	}
}



function isBrowserSupported()
{
var browser_supported = false;
var browser_value = isSupported();

	if( (browser_value & 1) == 1) 
		{
		browser_supported = true;
		}
			else
		{
			return false;
		};
return browser_supported;
}


function returnBrowserTypeAndVersion()
{
		var browserType = navigator.userAgent.toLowerCase();
    		//interpret the navigator.userAgent string
		//Netscape/7.0 = Netscape 7.0
		if ( ( (navigator.appName).indexOf("Netscape")!= -1) && (browserType.indexOf("mozilla/4.0") != -1) )
			browserType = "Netscape 4.0";
				else
		if ( ( (navigator.appName).indexOf("Netscape")!= -1) && (browserType.indexOf("mozilla/3.0") != -1) )
			browserType = "Netscape 3.0";
				else
		if ( ( (navigator.appName).indexOf("Netscape")!= -1) && (browserType.indexOf("mozilla/4.7") != -1) )
				browserType = "Netscape 4.7";
				else
		if ( browserType.indexOf("netscape/7.0")!=-1)
			browserType = "Netscape 7.0";
				else
		if ((browserType.indexOf('gecko/20020823') != -1) || (browserType.indexOf('gecko/20021120') != -1))
			browserType = "Netscape 7";
				else
       		if ((browserType.indexOf('gecko/20030208') != -1) || (browserType.indexOf('gecko/20030624') != -1))   
			browserType = "Netscape 7";
				else
		if ( browserType.indexOf("netscape/7.")!=-1)
			browserType = "Netscape 7";
				else
		if ( browserType.indexOf("msie 3.0")!=-1)
			browserType = "Internet Explorer 3.0";
				else
		if ( browserType.indexOf("msie 4.0")!=-1)
			browserType = "Internet Explorer 4.0";
				else
		if ( browserType.indexOf("msie 5.0")!=-1)
			browserType = "Internet Explorer 5.0";
				else
		if ( browserType.indexOf("msie 5.5")!=-1)
			browserType = "Internet Explorer 5.5";
				else
		if ( browserType.indexOf("msie 6.0")!=-1)
			browserType = "Internet Explorer 6.0";

	return browserType;
}




function isOSSupported()
{

var platform_supported = false;
var value = isSupported();
	if ( (value & 2) == 2 )
		{
			return true;
		}
			else
		{
			return false;

		};

}

var browsername;

/** This method is called if there is an uninstalled or unsupported component.
    A differently formatting setup report is displayed depending on whether the 
    the browser is IE or Netscape.  If IE, then sends to ie_page.htm.  If Netscape,
    then sends to net_report.htm.  Additionally, the Setup Report launches in a window
    separate than the switch home page. 
 */
function RedirectToSetupReport(ipAddress)
	{
	var report_to_display; 
	if (!isWindowsPlatform())
		{
		report_to_display = "net_report.htm";
		}	
		else
		report_to_display = "ie_report.htm";
	 var windowname = ipAddress;
 	   while(windowname.search(/[.]/) != -1) 
		{
        		windowname = windowname.replace(/[.]/, "_");
    		}
    windowname = 'CMS_' + windowname;
    var appwindow = window.open( report_to_display, windowname, "toolbar=no,status=no,scrollbars=yes,resizable=yes");
    appwindow.focus();

		 

	}

	/** The loading of CMS for Netscape is different than the loading for IE.  The 
	    browser uses the CMS Plugin object to load.  */
	function loadCMSForNetscape(ipAddress)
		{
		
		writeEmbedTag();				
		}

function isNetscape()
{
	var browsername = navigator.appName;
	if(browsername.indexOf("Netscape")!= -1) 
		return true;
		
		return false;
}


function isSolarisCMSPluginSupported()
{
var agt=navigator.userAgent.toLowerCase();
var is_major = parseInt(navigator.appVersion);
var is_nav = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
                        && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
                        && (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1));

if(navigator.mimeTypes)
{
for(i=0; i< navigator.mimeTypes.length; i++)
	{
		var plugin_string = navigator.mimeTypes[i].enabledPlugin.description.toLowerCase();
	if(navigator.mimeTypes['application/x-cisco-cms'])
		return true;
		
	}
	return false;

	
}
return false;

}


function isEnabled(n) 
{

return navigator.mimeTypes[n].enabledPlugin;

}

//this returns the value needed to modify the html page
function getcookie(cookiename) {
 var cookiestring=""+document.cookie;
 var index1=cookiestring.indexOf(cookiename);
 if (index1==-1 || cookiename=="") return ""; 
 var index2=cookiestring.indexOf(';',index1);
 if (index2==-1) index2=cookiestring.length; 

 return unescape(cookiestring.substring(index1+cookiename.length+1,index2));
}

function cookieLifeTime()
{
var UTCstring;
Today = new Date();
nomilli=Date.parse(Today);
Today.setTime(nomilli+365*24*60*60*1000);
UTCstring = Today.toUTCString();
return UTCstring;

}


function setcookie(name)
{
		
		cookiestring=name+"="+"value"+";EXPIRES="+cookieLifeTime();
		document.cookie=cookiestring;
		if(!getcookie(name))
		{
		return false;
		}
		else
		{
		return true;
		}
		
}

function CanRedirect()
{
if(getcookie("CMS_BROWSER_OS"))//if finds cookie then does not go to setup report, else  
	{
	//if here then user does not want to be warned of any problems or warnings
	//so check if any fatal_errors. If not, then load  cms splash screen
	//	the fatal errors are Java Plugin and JavaScript.  
	//	no extra scripting required for JavaScript
	// 	but have to explicitly check for Java Plugin
	//	if JavaPlugin definitely not installed, then display error
	//	if cannot determine status, then still display warning
	}


}

