// Ultimate client-side JavaScript client sniff. Version 3.01
// (C) Netscape Communications 1999-2001.  Permission granted to reuse and distribute.
// Revised 17 May 99 to add is_nav5up and is_ie5up (see below).
// Revised 20 Dec 00 to add is_gecko and change is_nav5up to is_nav6up
//                      also added support for IE5.5 Opera4&5 HotJava3 AOLTV
// Revised 22 Feb 01 to correct Javascript Detection for IE 5.x, Opera 4, 
//                      correct Opera 5 detection
//                      add support for winME and win2k
//                      synch with browser-type-oo.js

var ie_real = 0;
    // 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) && (agt.indexOf('hotjava')==-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_navonly = (is_nav && ((agt.indexOf(";nav") != -1) || (agt.indexOf("; nav") != -1)) );
var is_nav6 = (is_nav && (is_major == 5));
var is_nav6up = (is_nav && (is_major >= 5));
var is_nav7 = (is_nav && (agt.indexOf("netscape/7") != -1));
var is_nav7up = (is_nav && (agt.indexOf("netscape/7") != -1));

    // ditto Konqueror
                                      
    var is_konq = false;
    var kqPos   = agt.indexOf('konqueror');
    if (kqPos !=-1) {                 
       is_konq  = true;
       is_minor = parseFloat(agt.substring(kqPos+10,agt.indexOf(';',kqPos)));
       is_major = parseInt(is_minor);
    }  
var is_safari = ((agt.indexOf('safari')!=-1)&&(agt.indexOf('mac')!=-1))?true:false;
var is_khtml  = (is_safari || is_konq);
var is_gecko = ((!is_khtml)&&(navigator.product)&&(navigator.product.toLowerCase()=="gecko"))?true:false;
var is_gver  = 0;
if (is_gecko) is_gver=navigator.productSub;

//FireFox
var is_fx = ((agt.indexOf('mozilla/5')!=-1) && (agt.indexOf('spoofer')==-1) &&
                 (agt.indexOf('compatible')==-1) && (agt.indexOf('opera')==-1)  &&
                 (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1)     &&
                 (is_gecko) && (navigator.vendor=="Firefox" || agt.indexOf('firefox')!=-1));
/*
var is_fx = ((agt.indexOf('mozilla/5')!=-1) && (agt.indexOf('spoofer')==-1) &&
                 (agt.indexOf('compatible')==-1) && (agt.indexOf('opera')==-1)  &&
                 (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1)     &&
                 (is_gecko) && (navigator.vendor=="Firefox"));
*/

var is_ie     = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
var is_ie3    = (is_ie && (is_major < 4));
//var is_ie4    = (is_ie && (is_major == 4) && (agt.indexOf("msie 5")==-1) );
var is_ie4    = (is_ie && (is_major == 4) && (agt.indexOf("msie 4")!=-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_ie5_5  = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.5") !=-1));
var is_ie6    = (is_ie && (is_major == 4) && (agt.indexOf("msie 6.")!=-1) );
var is_ie7    = (is_ie && (agt.indexOf("msie 7.") != -1) );
var is_ie8    = (is_ie && (agt.indexOf("msie 8.") != -1) );
var is_ie5up  = (is_ie && !is_ie3 && !is_ie4);
var is_ie5_5up =(is_ie && !is_ie3 && !is_ie4 && !is_ie5);
      
    // *** 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));
var is_winme = ((agt.indexOf("win 9x 4.90")!=-1));
var is_win2k = ((agt.indexOf("windows nt 5.0")!=-1));
var is_winxp = ((agt.indexOf("windows nt 5.1")!=-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_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);
    // hack ie5 js version for mac
if (is_mac && is_ie5up) is_js = 1.4;
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 5")!=-1);
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 playerFound = 0;
var rpfound = 0;
var wafound = 0;
var okay = 1;
var osfail = 0;
var browserfail = 0;
var cookiesfail = 0;
var playerfail = 0;
var resolutionfail = 0;

function is_8_6up()
{
  if (screen.width >= 800 && screen.height >= 600)
    return true;

  return false;
}

	
  

function OS()
{
document.write ("<span style='color:red'>");
if (is_win95)
   document.write ("Windows 95");
else if (is_win98)
   document.write ("Windows 98");
else if (is_win2k)
   document.write ("Windows 2000");
else if (is_winxp)
   document.write ("Windows XP");
else if (is_winme)
   document.write ("Windows ME");
else if (is_winnt)
   document.write ("Windows NT");
else if (is_linux)
   {
   document.write ("Linux");
   okay = 0;
   }
else if (is_mac || is_mac68k || is_macppc)
   {
   document.write ("Macintosh");
   }
else if (is_unix)
   {
   document.write ("Unix");
   okay = 0;
   }
else if (is_unix || is_sun || is_irix || is_hpux || is_aix || is_sco || is_unixware || is_sinix)
   {
   document.write ("Unix Variant");
   okay = 0;
   }
else
  {
  document.write ("Unsupported System");
  okay = 0;
  }
document.write ("</span>");
}

function OS1()
{
if (is_win95)
   document.write ("<span style='color:green'><b>OK</b></span>");
else if (is_win98)
   document.write ("<span style='color:green'><b>OK</b></span>");
else if (is_win2k)
   document.write ("<span style='color:green'><b>OK</b></span>");
else if (is_winxp)
   document.write ("<span style='color:green'><b>OK</b></span>");
else if (is_winme)
   document.write ("<span style='color:green'><b>OK</b></span>");
else if (is_winnt)
   document.write ("<span style='color:green'><b>OK</b></span>");
else if (is_mac || is_mac68k || is_macppc)
   document.write ("<span style='color:green'><b>OK</b></span>");
else
  {
  document.write ("<span style='color:red'><b>Fail</b></span>");
  osfail = 1;
  okay = 0;
  }
}

function res()
{
document.write ("<span style='color:red'>");
document.write(screen.width + " x " + screen.height + " pixels");
document.write("</span>");
if (!is_8_6up())
   okay = 0;
}

function res1()
{
if (is_8_6up())
   document.write ("<span style='color:green'><b>OK</b></span>");
else
   { 
   document.write ("<span style='color:red'><b>Fail</b></span>");
	resolutionfail = 1;
   okay = 0;
   }
}

function browser()
{
document.write ("<span style='color:red'>");
if (is_ie5) {
   document.write ("Internet Explorer 5.0 or higher");
} else if (is_safari) {
   document.write ("Safari");
} else if (is_fx) {
   document.write ("Mozilla FireFox");
} else if (is_nav7up) {
   document.write ("Netscape 7.0 or higher");
} else if (is_ie7) {
   document.write ("Internet Explorer 7.0 or higher");
} else if (is_nav6) {
   document.write ("Netscape Navigator 6.0 or higher");
} else if (is_ie5_5up) {
   document.write ("Internet Explorer 5.5 or higher");
} else if (is_nav6up) {
   document.write ("Netscape Navigator 6.0 or higher");
} else if (is_nav4  &&  (is_minor  >  4.7)) {
   document.write ("Netscape Navigator 4.7 or higher");
} else {
  document.write ("Unsupported Browser");
  okay = 0;
}
document.write("</span>");
}

function browser1()
{
if (is_ie5_5up || is_ie6 || is_ie7 || is_nav7up || is_fx || is_safari)
   document.write ("<span style='color:green'><b>OK</b></span>");
else {
  document.write ("<span style='color:red'><b>Fail</b></span>");
  browserfail = 1;
  okay = 0;
}
}

function js()
{
document.write ("<span style='color:red'>");
document.write ("Javascript enabled");
document.write ("</span>");
}

function js1()
{
document.write ("<span style='color:green'><b>OK</b></span>");
}

function cookGet(nam)
{ nam = nam + "=";
  for (left = 0; left < document.cookie.length; left++ )
  { var mid = left + nam.length;
    if ( document.cookie.substring(left, mid) == nam )
    { var right = document.cookie.indexOf(";", mid);
      if ( right == -1 )
        right = document.cookie.length;
      return unescape(document.cookie.substring(mid, right));
    }
  }
  return "";
}

function cookPut(nam, val, sec)
{ var exp = new Date();
  exp.setTime(exp.getTime() + sec * 1000);
  document.cookie = nam + "=" + val + "; expires=" + exp.toGMTString();
}

function cookDel(nam)
{  cookPut(nam, "", -1);
} 

function cooksOn()
{
  var name = "cookies";
  var on = "On";
  var ok = 0;
  cookPut (name, on, 600);
  if ( on == cookGet(name) )
	{
	  ok = 1;
      cookDel (name);
	}
	return ok;
}

function cookies()
{
document.write ("<span style='color:red'>");
if (cooksOn())
  document.write ("Cookies enabled");
else
  {
  document.write ("Cookies not enabled");
  okay = 0;
  }
document.write("</span>");
}

function cookies1()
{
if (cooksOn())
  document.write ("<span style='color:green'><b>OK</b></span>");
else
  {
  document.write ("<span style='color:red'><b>Fail</b></span>");
	cookiesfail = 1;
  okay = 0;
  }
}

function player()
{
var separator = "";
document.write ("<span style='color:red'>");
if (is_nav && navigator.mimeTypes)
 {
  for (var i=0;i<navigator.plugins.length;i++)
    if ( navigator.plugins[i].name.indexOf("RealPlayer") > -1 )
	  rpfound = 1;
    else if ( navigator.plugins[i].name.indexOf("Windows Media Player") > -1)
        mpfound = 1; 
}
else if ( ie_real ) 
    rpfound = 1;

if (rpfound)
  {
  playerFound = 1;
  separator = ", ";
  }
if (mpfound)
  {
  playerFound = 1;
  separator = ", ";
  }
if (wafound)
  {
  playerFound = 1;
  separator = ", ";
  }
if (qtfound)
  {
  playerFound = 1;
  separator = ", ";
  }
if (!playerFound) 
  {
  document.write("[None found]");
  okay = 0;
  }
else{
	document.write("Compatible Player Found");
}
document.write("</span>");
}


function player1()
{
  if ( playerFound )
    document.write ("<span style='color:green'><b>OK</b></span>");
  else
	document.write ("<span style='color:red'><b>Fail*</b></span>");
}


function sound(url)
{
  if (url)
	window.location = url;
  else
	window.location = "/test/sound.pls";
}

function test(ClientConfTitle)
{
	if( okay )
	{
	 document.write ("<center><b>It appears that you have everything you need to use the system.</b></center>");  
	}
	else
	{
	 document.write ("<center><b>Sorry, one or more tests failed.  You may need to upgrade your system as indicated above.</b></center>");
	}	
}	

