//////////////////////
//
// function:   handlesScriptableApplets
//
//////////////////////
function handlesScriptableApplets()
{
  var ua = navigator.userAgent.toLowerCase();

  if (ua.indexOf("safari") > -1 )
  {
    var vindex = ua.indexOf("applewebkit/");
    var vindex2 = ua.indexOf(".",vindex);
    var vindex3 = ua.indexOf(" ",vindex);
    if (vindex2==-1 || vindex3<vindex2)
    {
      vindex2 = vindex3;
    }
    var v = ua.substring(vindex+12,vindex2);
    return (v>=412); // 10.4 starts with webkit 412
  }
  return true;
}

//////////////////////
//
// function:   getPluginVersion
//
// paramters:  seed -- base portion of plugin string
//             str  -- plugin string
//
// returns:    array describing version of plugin
//             r[0] -- string description of version
//             r[1] -- major version
//             r[2] -- minor version
//             r[3] -- sub-minor version
//             r[4] -- revision number
//
//////////////////////
function getPluginVersion(seed,str)
{
  var k, index;
  var r = new Array(5);
  r[0]="";
  r[1]="";
  r[2]="";
  r[3]="";
  r[4]="";
  str = str.substr(seed.length);
  r[0]=str;
  index=str.indexOf(".");
  k = 1;
  while (index>=0 && k<=4)
  {
    r[k] = str.substring(0,index);
    str = str.substr(index+1);
    index = str.indexOf(".");
    k++;
  }
  var delim ="";
  if (str.indexOf("_")>=0)
  {
    delim="_";
  }
  else if (str.indexOf(" r")>=0)
  {
    delim=" r";
  }
  if (delim)
  {
    r[k] = str.substr(0,str.indexOf(delim));
    r[k+1] = str.substr(str.indexOf(delim));
  }
  else
  {
    r[k] = str;
  }
  return r;
}

//////////////////////
//
// function:    compVersions
//
// parameters:  v, w -- version information returned from getPluginVersion
//
// returns:     1  if v > w
//              -1 if v < w
//              0  if v == w
//////////////////////
function compVersions(v,w)
{
  for (k=1; k<=4; k++)
  {
    if (v[k]=="" && w[k]!="")
    {
      return -1;
    }
    else if (w[k]=="" && v[k]!="")
    {
      return 1;
    }
    else if (w[k]!="" && v[k]!="")
    {
      vval = parseInt(v[k]);
      wval = parseInt(w[k]);
      if (vval>wval)
      {
        return 1;
      }
      else if (vval<wval)
      {
        return -1;
      }
    }
  }
  return 0;
}


////////////////
//
// function detectFlash
//
// returns plain-text version of Flash
//
////////////////
function detectFlash()
{
  var isInstalled = false;
  var version = null;
  if (window.ActiveXObject)
  {
    var control = null;
    try
    {
      control = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');
    }
    catch (e)
    {
        return;
    }
    if (control)
    {
      isInstalled = true;
      version = control.GetVariable('$version').substring(4);
      version = version.split(',');
      version = version[0] + '.' + version[1] + ' r' + version[2];
    }
  }
  else
  {
    // Check navigator.plugins for "Shockwave Flash"
    v = new Array(5);
    v[0]="";
    v[1]="";
    v[2]="";
    v[3]="";
    v[4]="";
    for (i=0; i<navigator.plugins.length; i++)
    {
      p= navigator.plugins[i];

      if (p.name.indexOf('Shockwave Flash')>=0)
      {
        var w = new Array(5);
        w = getPluginVersion('Shockwave Flash ', p.description);
        if (compVersions(v, w)==-1)
        {
          v=w;
        }
      }
    }
    version = v[0];
  }
  return version;
}


////////////////
//
// function detectJRE
//
// returns plain-text version of JRE
//
////////////////
function detectJRE()
{
  var isInstalled = navigator.javaEnabled();
  if (!isInstalled)
  {
    return;
  }
  // Get version
  var version = null;
/*
  if (handlesScriptableApplets())
  {
     // Synchronous calls to getVendor(), etc. result in an exception, but despite
     // the timeout of 0 this call will not execute immediately
    setTimeout(function()
    {
      try
      {
        var applet = document.getElementById('applet');
        var javaver = document.getElementById('javaver');
        javaver.value = applet.getVersion();
      }
      catch (e)
      {
        // Do nothing
      }
    }, 0);
  }
  else
  {
*/
    if (typeof java != 'undefined')
    {
        //var javaver = document.getElementById('javaver');
        //javaver.value = java.lang.System.getProperty('java.version');
        version = java.lang.System.getProperty('java.version');
    }
    else
    {
      // Look for Java Plug-in, Java (version) Plug-in, and Java Plug-in for Cocoa
      // Check navigator.plugins for various Java Plug-ins
      v = new Array(5);
      v[0]="";
      v[1]="";
      v[2]="";
      v[3]="";
      v[4]="";
      for (i=0; i<navigator.plugins.length; i++)
      {
        p= navigator.plugins[i];

        if (p.name.indexOf('Cocoa')>=0)
        {
         // Java x.y Plug-in (Cocoa)
          var w = new Array(5);
          var desc = p.description;
          var plen = 0;
          if (p.description.indexOf('(Cocoa)')>=0)
            plen = " Plug-in (Cocoa)".length;
          else if (p.description.indexOf('( Cocoa )')>=0)
            plen = " Plug-in ( Cocoa )".length;

          desc = desc.substr(0,desc.length-plen);
          w = getPluginVersion('Java ', desc);
          if (compVersions(v, w)==-1)
          {
            v=w;
          }
        }
      }
      version = v[0];
      //var javaver = document.getElementById('javaver');
      //javaver.value = version;
    }
//  }
  return version;
}

function getPluginVersions()
{
  var fver = document.getElementById('fver');
  fver.value = detectFlash();

  var qtver = document.getElementById('qtver');
  qtver.value = detectQuicktime();

  agt=navigator.userAgent.toLowerCase();
  Mac = navigator.platform.indexOf("Mac") != -1;

  if(Mac) jv = detectJRE();
  else jv = PluginDetect.getVersion("Java").replace(/,/g,".");
  var javaver = document.getElementById('javaver');
  javaver.value = jv;
}


//returns false if <= and qtver if greater
function qtVerGreaterThan730(){
	var qtver = detectQuicktime();
	if (qtver == "undefined" || qtver == "") return false;
	if (isNaN(parseInt(qtver))) return false;

	// if qtver is < 7.3.1 then exit
	var qa = (qtver + "").split(".",3);
	qa[0] = parseInt(qa[0],10);
	if (qa[0] <= 7)
	{
		if (qa[0] < 7 || (qa[0] == 7 && qa.length == 1)) return false;

		qa[1] = parseInt(qa[1],10);
		if (qa[1] <= 3)
		{
			if (qa[1] < 3 || (qa[1] == 3 && qa.length == 2)) return false;
			qa[2] = parseInt(qa[2],10);
			if (qa[2] == 0) return false;
		}
	}
	return qtver;
}
////////////////
// function detectQuicktime
// returns plain-text version of Quicktime ie 7.3.1
////////////////
function detectQuicktime()
{
  var qtver = PluginDetect.getVersion("QuickTime");
  return (qtver==null)?null:qtver.split(",").join(".");
}


/* PluginDetect v0.3.0 ( Java QT ) by Eric Gerds www.pinlady.net/PluginDetect */
//PluginDetect.isMinVersion(pluginName, minVersion) method: tells if plugin version is >= specified version.
//PluginDetect.getVersion(pluginName)
/* PluginDetect v0.3.0 ( Java QT ) by Eric Gerds www.pinlady.net/PluginDetect */
if(!PluginDetect){var PluginDetect={minIEver:5.5,getNum:function(A){if(!A){return null}var m=/[\d][\d\.\_,-]*/.exec(A);return m?m[0].replace(/[\.\_-]/g,","):null},hasMimeType:function(_3){var s,t,z,M=_3.constructor==String?[_3]:_3;for(z=0;z<M.length;z++){s=navigator.mimeTypes[M[z]];if(s&&s.enabledPlugin){t=s.enabledPlugin;if(t.name||t.description){return s}}}return null},findNavPlugin:function(N,_6){var _7=N.constructor==String?N:N.join(".*"),numS=_6===false?"":"\\d";var i,re=new RegExp(_7+".*"+numS+"|"+numS+".*"+_7,"i");var _9=navigator.plugins;for(i=0;i<_9.length;i++){if(re.test(_9[i].description)||re.test(_9[i].name)){return _9[i]}}return null},getAXO:function(_a){var _b,e;try{_b=new ActiveXObject(_a);return _b}catch(e){}return null},num:function(A){return (typeof A!="string"?false:(/\d/).test(A))},compareNums:function(_d,_e){if(!this.num(_d)||!this.num(_e)){return 0}var m1=_d.split(","),m2=_e.split(","),x,p=parseInt;for(x=0;x<Math.min(m1.length,m2.length);x++){if(p(m1[x],10)>p(m2[x],10)){return 1}if(p(m1[x],10)<p(m2[x],10)){return -1}}return 0},formatNum:function(num){if(!this.num(num)){return null}var n=num.replace(/[\.\_]/g,","),i;n=n.split(",").concat(["0","0","0","0"]);return n.slice(0,4).join(",")},initScript:function(){var $=this,IE;$.isIE=(/*@cc_on!@*/false);$.IEver=-1;$.ActiveXEnabled=false;if($.isIE){IE=(/msie\s*\d\.{0,1}\d*/i).exec(navigator.userAgent);if(IE){$.IEver=parseFloat((/\d.{0,1}\d*/i).exec(IE[0]),10)}var _13,x;_13=["ShockwaveFlash.ShockwaveFlash","Msxml2.XMLHTTP","Microsoft.XMLDOM","Msxml2.DOMDocument","TDCCtl.TDCCtl","Shell.UIHelper","Scripting.Dictionary","wmplayer.ocx"];for(x=0;x<_13.length;x++){if($.getAXO(_13[x])){$.ActiveXEnabled=true;break}}};if($.ActiveXEnabled&&$.IEver>=$.minIEver){$.head=typeof document.getElementsByTagName!="undefined"?document.getElementsByTagName("head")[0]:null;var T=document.createElement("script");T["type"]="text/vbscript";var Y=["<!"+"--","function PluginDetect1(c)","on error resume next","PluginDetect1=false","dim head, r","set head=PluginDetect.head","set r=head.firstChild","if TypeName(r)=\"HTMLObjectElement\" then","r.classid=c","if not TypeName(r.object) = \"Nothing\" then","PluginDetect1=true","if r.readyState<4 then","head.removeChild(r)","end if","else head.removeChild(r)","end if","end if","r=\"Nothing\"","head=\"Nothing\"","end function","--"+">"];T["text"]=Y.join("\n");if($.head.firstChild){$.head.insertBefore(T,$.head.firstChild)}else{$.head.appendChild(T)}$.vbscript=false;var e;$.head.insertBefore(document.createElement("object"),$.head.firstChild);try{if(PluginDetect1("")===false){$.vbscript=true}}catch(e){}}},init:function(_17){var $=this,IE,p;_17=_17.toLowerCase().replace(/\s/g,"");p=$.plugin=$[_17];if(!p){return -3}if(typeof p.minversion=="undefined"){p.minversion={}}if(typeof p.version=="undefined"){p.version=null}if(typeof p.installed=="undefined"){p.installed=null}$.garbage=false;if($.isIE&&!$.ActiveXEnabled){return -2}return 1},isMinVersion:function(_19,_1a){var $=PluginDetect,i=$.init(_19);if(i<0){return i}if(!$.num(_1a)){return -3}var p=$.plugin,m=p.minversion;_1a=$.formatNum(_1a);if(typeof m["a"+_1a]=="undefined"){if(p.installed==null&&typeof p.getCodeBaseVersion!="undefined"&&$.IEver>=p.minIEver){var tmp,x;for(x in m){tmp=$.compareNums(_1a,x.substring(1,x.length));if(m[x]==1&&tmp<=0){return 1}if(m[x]==-1&&tmp>=0){return -1}}m["a"+_1a]=$.isActiveXObject(_1a)?1:-1;}else{if(p.installed==null){p.getVersion()}if(p.installed==-1){m["a"+_1a]=-1}else{if(p.version==null){m["a"+_1a]=0}else{m["a"+_1a]=($.compareNums(p.version,_1a)>=0?1:-1)}}}}$.cleanup();return m["a"+_1a];return -3},getVersion:function(_1e){var $=PluginDetect,i=$.init(_1e);if(i<0){return null}var p=$.plugin;if(p.installed==null){p.getVersion()}$.cleanup();return p.version;return null},cleanup:function(){var $=this;if($.garbage&&typeof window.CollectGarbage!="undefined"){window.CollectGarbage()}},isActiveXObject:function(_22){var $=this,result,s="<object width=\"1\" height=\"1\" "+"style=\"display:none\" "+$.plugin.getCodeBaseVersion(_22)+">"+$.plugin.HTML+"</object>";$.head.insertBefore(document.createElement("object"),$.head.firstChild);$.head.firstChild.outerHTML=s;result=$.vbscript?PluginDetect1($.plugin.classID):$.detect($.plugin.classID);return result;},detect:function(_24){var $=this,result;$.head.firstChild["classid"]=_24;result=$.head.firstChild["object"]?true:false;if(!result||$.head.firstChild["readyState"]<4){$.head.removeChild($.head.firstChild);$.garbage=true}return result;},search:function(){var _26=[0,0,0,0],$=this,x,y,A=$.plugin.digits,t=function(x,y){var _29=(x==0?y:_26[0])+","+(x==1?y:_26[1])+","+(x==2?y:_26[2])+","+(x==3?y:_26[3]);return $.isActiveXObject(_29)};var _2a,tmp;var _2b=false;for(x=0;x<A.length;x++){_2a=A[x]*2;_26[x]=0;for(y=0;y<20;y++){if(_2a==1&&x>0&&_2b){break}if(_2a-_26[x]>1){tmp=Math.round((_2a+_26[x])/2);if(t(x,tmp)){_26[x]=tmp;_2b=true}else{_2a=tmp}}else{if(_2a-_26[x]==1){_2a--;if(!_2b&&t(x,_2a)){_2b=true}break}else{if(!_2b&&t(x,_2a)){_2b=true}break}}}if(!_2b){return null}}return _26.join(",");},dummy1:0}}PluginDetect.initScript();PluginDetect.quicktime={mimeType:["video/quicktime","application/x-quicktimeplayer","image/x-macpaint","image/x-quicktime"],progID:"QuickTimeCheckObject.QuickTimeCheck.1",progID0:"QuickTime.QuickTime",classID:"clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B",minIEver:7,HTML:"<param name=\"src\" value=\"A14999.mov\" /><param name=\"controller\" value=\"false\" />",getCodeBaseVersion:function(v){return "codebase=\"#version="+v+"\""},digits:[16,16,16,0],getVersion:function(){var _2d=null,p,$=PluginDetect;if(!$.isIE){p=$.findNavPlugin(["QuickTime","(Plug-in|Plugin)"]);if(p&&p.name&&$.hasMimeType(this.mimeType)){_2d=$.getNum(p.name)}this.installed=_2d?1:-1}else{var obj;if($.IEver<this.minIEver){obj=$.getAXO(this.progID);if(obj&&obj.QuickTimeVersion){_2d=obj.QuickTimeVersion.toString(16);_2d=_2d.charAt(0)+"."+_2d.charAt(1)+"."+_2d.charAt(2)}}else{_2d=$.search()}this.installed=_2d?1:($.getAXO(this.progID0)?0:-1)}this.version=$.formatNum(_2d)}};PluginDetect.java={mimeType:"application/x-java-applet",classID:"clsid:8AD9C840-044E-11D1-B3E9-00805F499D93",JavaVersions:["1.7.1.16","1.6.1.16","1.5.0.16","1.4.2.13","1.3.1.18"],searchJava:function(M){if(!M){return null}var G,e,x3,x4;var AXO=ActiveXObject;var T=M.split("."),J="JavaPlugin."+T[0]+T[1],v=T[0]+"."+T[1]+".";for(x3=T[2];x3>=0;x3--){for(x4=T[3];x4>=0;x4--){G=x4<10?"0"+x4:x4;try{new AXO(J+x3+"_"+G);return v+x3+"_"+G}catch(e){}}if(J+x3=="JavaPlugin.131"){return null}try{new AXO(J+x3);return v+x3}catch(e){}}return null},minIEver:6,HTML:"<param name=\"code\" value=\"A14999.class\" />",getCodeBaseVersion:function(v){var r=this.getDigits(v),$=PluginDetect;if($.compareNums(v,"1,4,1,02")<0){v=r[0]+","+r[1]+","+r[2]+","+r[3]}else{if($.compareNums(v,"1,5,0,02")<0){v=r[0]+","+r[1]+","+r[2]+","+r[3]+"0"}else{v=Math.round((parseFloat(r[0]+"."+r[1],10)-1.5)*10+5)+","+r[2]+","+r[3]+"0"+",0"}}return "codebase=\"#version="+v+"\""},digits:[1,9,32,32],getDigits:function(n){/([\d]+)[,_\.]([\d]+)[,_\.]([\d]+)[,_\.]([\d]+)/.test(n);return [RegExp.$1,RegExp.$2,RegExp.$3,RegExp.$4]},hasRun:false,value:null,queryJavaHandler:function(){var $=PluginDetect.java,j=window.java,e;$.hasRun=true;try{if(typeof j.lang!="undefined"&&typeof j.lang.System!="undefined"){$.value=j.lang.System.getProperty("java.version")+" "}}catch(e){}},queryJava:function(){var $=PluginDetect,t=this,nua=navigator.userAgent,e;if(typeof window.java!="undefined"&&window.navigator.javaEnabled()){if(/gecko/i.test(nua)){if($.hasMimeType("application/x-java-vm")){try{var div=document.createElement("div"),evObj=document.createEvent("HTMLEvents");evObj.initEvent("focus",false,true);div.addEventListener("focus",t.queryJavaHandler,false);div.dispatchEvent(evObj)}catch(e){}if(!t.hasRun){t.queryJavaHandler()}}}else{if(/opera.9\.(0|1)/i.test(nua)&&/mac/i.test(nua)){return null}t.queryJavaHandler()}}return t.value},getVersion:function(){var _39=null,$=PluginDetect;if(!$.isIE){var p1,p,mt;p=$.findNavPlugin(["Java","Plug-in"]);mt=$.hasMimeType(this.mimeType);if(p){p1=$.getNum(p.description)}if(p1&&mt&&navigator.javaEnabled()){_39=p1}if(!_39){p=this.queryJava();if(p){_39=p}}this.installed=-1;if(_39){this.installed=1}else{if(mt&&navigator.javaEnabled()){if(/safari/i.test(navigator.userAgent)){this.installed=0;if(/macintosh/i.test(navigator.userAgent)){p=$.findNavPlugin("Java.*\\d.*Plug-in.*Cocoa",false);if(p){p1=$.getNum(p.description);if(p1){_39=p1;this.installed=1}}}}}}}else{var x,tmp=null;if($.IEver>=this.minIEver){_39=$.search();this.installed=_39?1:-1}else{for(x=0;x<this.JavaVersions.length;x++){tmp=this.searchJava(this.JavaVersions[x]);if(tmp){_39=tmp;break}}this.installed=_39?1:($.getAXO("JavaPlugin")?0:-1)}}this.version=$.formatNum($.getNum(_39))}};
