function browser_ie()
{
	return (document.all) ? true : false;
}

function browser_ns4()
{
	return ((navigator.appName == "Netscape")
		&& (parseFloat(navigator.appVersion) >= 4)
		&& (navigator.userAgent.indexOf("Netscape6") == -1)) ? true : false;
}

function browser_ns6()
{
	return (document.getElementById && !document.all) ? true : false;
}

function browser_ns() { return browser_ns4() || browser_ns6(); }

function browser_old()
{
	return (!document.layers
		&& !document.getElementById && !document.all) ? true : false;
}

function browser_mac() { return (navigator.appVersion.indexOf("Macintosh") != -1); }

function browser_webtv() { return (navigator.userAgent.indexOf("WebTV") != -1); }

function browser_aol() { return (navigator.userAgent.indexOf("AOL") != -1); }

function browser_getVersion(inUserAgent)
{
	if (!inUserAgent) inUserAgent = navigator.userAgent;

	if (inUserAgent.indexOf("MSIE ") != -1)
		return parseFloat(inUserAgent.substring(inUserAgent.indexOf("MSIE ") + 5));
	if (inUserAgent.indexOf("Netscape6/") != -1)
		return parseFloat(inUserAgent.substring(inUserAgent.indexOf("Netscape6/") + 10));
	if (inUserAgent.indexOf("Mozilla/") != -1)
		return parseFloat(inUserAgent.substring(inUserAgent.indexOf("Mozilla/") + 8));

	return 0;
}

function browser_getPlatform(agent)
{
   if (!agent) { agent = navigator.userAgent; }
   var platform = 'unknown'
   if      (agent.indexOf('Win') != -1)   { platform = 'win'; }
   else if (agent.indexOf('Mac') != -1)   { platform = 'mac'; }
   else if (agent.indexOf('IRIX') != -1)  { platform = 'irix'; }
   else if (agent.indexOf('Linux') != -1) { platform = 'linux'; }
   else if (agent.indexOf('BSD') != -1)   { platform = 'bsd'; }
   return platform;
}


function detect_setCps(band)
{
	var caps = new Array();
	caps[0] = detection_flashVersion();
	caps[1] = detection_shockwaveVersion();
	caps[2] = screen ? screen.width : 0;
	caps[3] = screen ? screen.height : 0;
	caps[4] = screen ? (browser_ie() ? screen.colorDepth : screen.pixelDepth) : 0;
	caps[5] = band ? band : 0;

	var brcps = "";
	for (var i=0;i<caps.length;i++) brcps += caps[i] + "_";
	util_setCookie("brcps",brcps);
}

function detection_shockwaveVersion()
{
	return (browser_ie() && !browser_mac())
		? detection_shockwaveAxVersion()
		: detection_shockwaveNsVersion();
}

function detection_flashVersion()
{
	return (browser_ie() && !browser_mac())
		? detection_flashAxVersion()
		: detection_flashNsVersion();
}

function detection_shockwaveNsVersion()
{
  var thearray = navigator.plugins
  var arraylen = thearray.length

  for (var i=0; i < arraylen; i++)
  {
    var theplugin = thearray[i]
    var thename   = theplugin.name
    var thedesc   = theplugin.description

    if (thename.indexOf("Shockwave") != -1 && thename.indexOf("Director") != -1)
    {
      var versionString = thedesc.substring(thedesc.indexOf("version ") + 8);
      
      if (versionString.indexOf(".") > 0)
      {
        var versionMajor = versionString.substring(0,versionString.indexOf("."));
        var versionMinor = versionString.substring(versionString.indexOf(".") + 1);
        
        if (versionMinor.indexOf(".") > 0)
        {
        	versionMinor = versionMinor.substring(0,versionString.indexOf(".")) 
        		+ versionMinor.substring(versionMinor.indexOf(".") + 1)
        }
        return parseFloat(versionMajor + "." + versionMinor);
      }
      else return parseFloat(versionString);
    }
  }
  return 0.0;
}

function detection_flashNsVersion()
{
  var thearray = navigator.plugins
  var arraylen = thearray.length

  for (var i=0; i < arraylen; i++) {
    theplugin = thearray[i]
    thename   = theplugin.name
    thedesc   = theplugin.description
    if (thename.indexOf("Shockwave") != -1 && thename.indexOf("Flash") != -1)
    {
		var versionString = thedesc.substring(thedesc.indexOf("Flash ") + 6);
		var versionLoc = versionString.indexOf(" r");
		
		if (versionLoc != -1)
		{
			var versionMajor = versionString.substring(0,versionLoc);
			var versionMinor = parseInt(versionString.substring(versionLoc + 2));
			if (versionMinor < 10) versionMajor += "0";
			return parseFloat(versionMajor + versionMinor);
		}
		else return parseFloat(versionString);
    }
  }
  
  return 0.0;
}


function detection_shockwaveAxVersion()
{
	for (var i=8;i>0;i--) {
		var versionString = VBGetShockwaveVersion(i);
		if (versionString != "0.0") return (versionString == "1.0" ? 6.0 : parseFloat(versionString));
	}
	return 0.0;
}


function detection_flashAxVersion()
{

	for (var i=8;i>0;i--)
	{
		var versionNum = VBGetFlashVersion(i);
		if (versionNum != 0)
		{
			var versionMajor = Math.floor(versionNum / 65536);
			var versionMinor = versionNum % 65536;
			var versionMiddle = ".";
			for (var i=100;i>5;i/=10) if (versionMinor < i) versionMiddle += "0";
			return parseFloat(versionMajor + versionMiddle + versionMinor);
		}
	}
	return 0.0;
}