﻿// JavaScript File
/*******************************************************
MINIMUM VALUES
*******************************************************/
var jvm = true
var cookies = true;
var requiredAcrobatVersion = 5;
var minWidth=800;
var minHeight=600;
var minColorDepth = 16;
var flashRequiredMajorVersion = 6;
var flashRequiredMinorVersion = 0;
var flashRequiredRevision = 0;
var wmMinVer=7
var minDownloadSpeed = 300;
var imgArray = new Array();  
var jvmVendor = "";
var jvmVersion = "";
var windowsmedia=new Object();
var acrobatVersion = 0;
var acrobatVersion = getAcrobatVersion();
var jsVersion = 1.0;
var popupsOK = true;
<!-- // Detect Client Browser type
var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;    
var hasReqestedFlashVersion = DetectFlashVer(flashRequiredMajorVersion, flashRequiredMinorVersion, flashRequiredRevision);

//main function to run test
function runTest(){
    /*******************************************************
    WINDOWS MEDIA DETECT
    *******************************************************/
    // Set some base values
    windowsmedia.installed=false;
    windowsmedia.version='0.0'; // Internet Explorer-only
    var str = "";

    if (window.ActiveXObject || gkoaxwma) {
	    try	{
		    oWMP=new AXO('WMPlayer.OCX.7');
		    if (oWMP)	{
			    windowsmedia.installed=true;
			    parseFloat(oWMP.versionInfo);
			    windowsmedia.version=parseFloat(oWMP.versionInfo);
			    if (windowsmedia.version.toString().length == 1) windowsmedia.version+='.0';
		    }
	    }
	    catch(e) {}
    }
    
    // Internet Explorer or GeckoActiveXObject-compatible browsers only.
    windowsmedia.ver7=(windowsmedia.installed && parseInt(windowsmedia.version) >= 7) ? true:false;
    windowsmedia.ver8=(windowsmedia.installed && parseInt(windowsmedia.version) >= 8) ? true:false;
    windowsmedia.ver9=(windowsmedia.installed && parseInt(windowsmedia.version) >= 9) ? true:false;
    
    /*******************************************************
    ACROBAT READER DETECTION
    *******************************************************/
    acrobatVersion_DONTKNOW = -1;
    jsVersion = 1.1;    

    runPerformanceTest();

//END runTest()
}


// Create an ActiveX/GeckoActiveX constructor
function AXO(id) {
	var error; var control = null;
	try {
		if (window.ActiveXObject && navigator.userAgent.indexOf('Win') != -1) control = new ActiveXObject(id);
		else if (gkoaxwma) control = new GeckoActiveXObject(id);
	}
	catch (error) {}
	return control;
}


/*******************************************************
WINDOWS BROWSWER DETECT
*******************************************************/
// returns IE Version
function getIEVersion() {
  var ver =  navigator.appVersion;
  ver = ver.substring(ver.indexOf("MSIE")+5 , ver.length);
  ver = ver.substring(0, ver.indexOf(";"));
  return ver;
}
// returns IE SP#
function getServicePackNumber() {
  var sp =  navigator.appMinorVersion;
  if (sp.indexOf(";SP") != -1) {
    sp = sp.substring(sp.indexOf(";SP")+3, sp.length);
    sp = sp.substring(0,sp.indexOf(";"));
  }
  else 
    sp = "0";    
  return sp;
}


/*******************************************************
ACROBAT READER DETECTION
NOTE: No version information is available for Adobe Reader 8 
and later for non-IE browsers.
*******************************************************/
function getAcrobatVersion() {
	var agent = navigator.userAgent.toLowerCase(); 	
	// NS3+, Opera3+, IE5+ Mac, Safari (support plugin array):  check for Acrobat plugin in plugin array
	if (navigator.plugins != null && navigator.plugins.length > 0) {
      for (i=0; i < navigator.plugins.length; i++ ) {
         var plugin = navigator.plugins[i];
         if (plugin.name.indexOf("Adobe Acrobat") > -1) {
            acrobatVersion = parseFloat(plugin.description.substring(30));
         }
      }
	}   
	// IE4+ Win32:  attempt to create an ActiveX object using VBScript
	else if (agent.indexOf("msie") != -1 && parseInt(navigator.appVersion) >= 4 && agent.indexOf("win")!=-1 && agent.indexOf("16bit")==-1) {
        var control = null;
        try {
        // AcroPDF.PDF is used by version 7 and later
            control = new ActiveXObject('AcroPDF.PDF');
        } catch (e) {
        // Do nothing
        }
        if (!control) {
            try {
                // PDF.PdfCtrl is used by version 6 and earlier
                control = new ActiveXObject('PDF.PdfCtrl');
            } catch (e) {
                return;
            }
        }
        if (control) {
            //isInstalled = true;
            acrobatVersion = control.GetVersions().split(',');
            acrobatVersion = acrobatVersion[0].split('=');
            acrobatVersion = parseFloat(acrobatVersion[1]);
        }   
  }
	// Can't detect in all other cases
	else {
		acrobatVersion = acrobatVersion_DONTKNOW;
	}
	return acrobatVersion;
}

/*******************************************************
FLASH DETECT
*******************************************************/

// JavaScript helper required to detect Flash Player PlugIn version information
function JSGetSwfVer(i){
	// NS/Opera version >= 3 check for Flash plugin in plugin array
	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
      		var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			descArray = flashDescription.split(" ");
			tempArrayMajor = descArray[2].split(".");
			versionMajor = tempArrayMajor[0];
			versionMinor = tempArrayMajor[1];
			if ( descArray[3] != "" ) {
				tempArrayMinor = descArray[3].split("r");
			} else {
				tempArrayMinor = descArray[4].split("r");
			}
      		versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0;
            flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
      	} else {
			flashVer = -1;
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	// Can't detect in all other cases
	else {		
		flashVer = -1;
	}
	return flashVer;
} 
// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) {
 	reqVer = parseFloat(reqMajorVer + "." + reqRevision);
   	// loop backwards through the versions until we find the newest version	
	for (i=25;i>0;i--) {	
		if (isIE && isWin && !isOpera) {
			versionStr = VBGetSwfVer(i);
		} 
		else {
			versionStr = JSGetSwfVer(i);		
		}
		if (versionStr == -1 ) { 
			return false;
		} 
		else if (versionStr != 0) {
			if(isIE && isWin && !isOpera) {
				tempArray         = versionStr.split(" ");
				tempString        = tempArray[1];
				versionArray      = tempString .split(",");				
			} 
			else {
				versionArray      = versionStr.split(".");
			}
			versionMajor      = versionArray[0];
			versionMinor      = versionArray[1];
			versionRevision   = versionArray[2];			
			versionString     = versionMajor + "." + versionRevision;   // 7.0r24 == 7.24
			versionNum        = parseFloat(versionString);
        	// is the major.revision >= requested major.revision AND the minor version >= requested minor
			if ( (versionMajor > reqMajorVer) && (versionNum >= reqVer) ) {
				return true;
			} else {
				return ((versionNum >= reqVer && versionMinor >= reqMinorVer) ? true : false );	
			}
		}
	}	
}

// -->

/*******************************************************
BANDWIDTH DETECTION CODE
*******************************************************/
function runPerformanceTest() {
  d = new Date();
  startTime = d.getTime();
  var imgTest = new Image();
  imgTest.onload  = loadCheck;
  imgTest.src = "includes/images/big_image.jpg?time="+startTime;
}


function loadCheck() {
  var endTime = (new Date()).getTime();  
  loadTime = (883435)/((endTime - startTime)/1000);
  loadTime = (loadTime / 1000)*8;
  loadTime = Math.round(loadTime*100)/100
  if (loadTime < 1000) {
    loadText = loadTime + " Kbps" ;    
  }
  else {
    loadTime2 = loadTime/1000
    loadTime2 = Math.round(loadTime2*100)/100
    loadText = loadTime2 + " Mbps";
  }
  performSystemTest()
}

/*******************************************************
JAVA JVM DETECTION CODE
*******************************************************/

function checkJVM(vendor,version) {
  //document.all.jvmText.innerHTML = vendor + " " + version
  jvmVendor = vendor;
  jvmVersion = version;
}	


/*******************************************************
POPUP BLOCKER TEST
*******************************************************/
function detectPopupBlocker() {
    var myTest = window.open("about:blank","","x=0,y=0,directories=no,height=5px,width=5px,menubar=no,resizable=no,scrollbars=no,status=no,titlebar=no,top=0,location=no");
    if (!myTest) {
        popupsOK = false;
        return true;
    } else {
        myTest.close();
        return false;
    } 
}


/*******************************************************
Perform System Test Given All Info
*******************************************************/
function performSystemTest() {
  var passedTest = true;
  var warnStr = "Your system does not meet the minimum requirements.  \nSee information provided.\n";  

  if (acrobatVersion < requiredAcrobatVersion) {
    passedTest = false;
    warnStr += "You do not have the required version of Acrobat Reader.";
    imgArray['acrobat'] = "failed.gif";
  }
  if (!hasReqestedFlashVersion) {
    passedTest = false;
    warnStr += "You do not have the required version Flash.";
    imgArray['flash'] = "failed.gif";
  }
  if (!windowsmedia.installed || windowsmedia.version < wmMinVer) {
    passedTest = false;
    warnStr += "You do not have the required version Windows Media Software.";
    imgArray['wm'] = "failed.gif";
  }

  if (getIEVersion() < 6) {
    passedTest = false;
    warnStr += "You do not have the required version IE Browswer.";
    imgArray['browser'] = "failed.gif";
  }
  
  if (this.screen.height < minHeight || this.screen.width < minWidth ) {
    passedTest = false;
    warnStr += "You do not have the required version screen resolution.";
    imgArray['resolution'] = "failed.gif";
  }
   
  if (this.screen.colorDepth < minColorDepth) {
    passedTest = false;
    warnStr += "You do not have the required Color Depth.";
    imgArray['color'] = "failed.gif";
  }

  if (!navigator.javaEnabled()) {
    passedTest = false;
    warnStr += "You do not have java enabled on your browser";
    imgArray['java'] = "failed.gif";
  }
 
  if (!navigator.javaEnabled()) {
    passedTest = false;
    warnStr += "You do not have cookies enabled on your browser";
    imgArray['cookies'] = "failed.gif";
  }
  if (loadTime < minDownloadSpeed) {
    passedTest = false;
    warnStr += "You do not have cookies enabled on your browser";
    imgArray['bandwidth'] = "failed.gif";
  }
  if (detectPopupBlocker()) {
    passedTest = false;
    warnStr += "Your popup blockers must be disabled.";
    imgArray['popup'] = "failed.gif";
  }

  dataStr += "</table>";
  if (passedTest) {
    var dataStr = ""; //"Congratulations!<br>Your system meets the minimum requirements."  
    dataStr += "<p><table border=1 align=center>";
    dataStr += "<tr><td>OS:</td><td><img src='"+ (imgArray['os'] == null ? "includes/images/course_check.gif" : "includes/images/course_exclaim.gif")+"'></td><td>" + navigator.platform+"</td></tr>";
    dataStr += "<tr><td>Browser:</td><td><img src='"+(imgArray['browser'] == null ? "includes/images/course_check.gif" : "includes/images/course_exclaim.gif")+ "'><td>&nbspIE " + getIEVersion() + " SP:" + getServicePackNumber()+"</td></tr>";
    dataStr += "<tr><td>Resolution:</td><td><img src='"+ (imgArray['resolution'] == null ? "includes/images/course_check.gif" : "includes/images/course_exclaim.gif")+"'></td><td>"+this.screen.width +"X"+this.screen.height+"</td></tr>";
    dataStr += "<tr><td>Color Depth:</td><td><img src='"+ (imgArray['color'] == null ? "includes/images/course_check.gif" : "includes/images/course_exclaim.gif")+"'></td><td>"+this.screen.colorDepth+ " Bit</td></tr>"; 
    dataStr += "<tr><td>Cookies Enabled:</td><td><img src='"+ (imgArray['cookies'] == null ? "includes/images/course_check.gif" : "includes/images/course_exclaim.gif")+"'></td><td>"+navigator.cookieEnabled+"</td></tr> "; 
    dataStr += "<tr><td>Java Enabled:</td><td><img src='"+ (imgArray['java'] == null ? "includes/images/course_check.gif" : "includes/images/course_exclaim.gif")+"'></td><td>"+navigator.javaEnabled()+"</td></tr>";
    //dataStr += "<tr><td>Java JVM:</td><td><img src='"+ (imgArray['jvm'] == null ? "includes/images/course_check.gif" : "includes/images/course_exclaim.gif")+"'></td><td>&nbsp"+jvmVendor + " " + jvmVersion + "</td></tr>";           
    dataStr += "<tr><td>Windows Media Player:</td><td><img src='"+ (imgArray['wm'] == null ? "includes/images/course_check.gif" : "includes/images/course_exclaim.gif")+"'></td><td>"+(windowsmedia.installed ? "Installed --> Version: " + windowsmedia.version : "Not Installed")+"</td></tr>";   
    dataStr += "<tr><td>Flash Player:</td><td><img src='"+ (imgArray['flash'] == null ? "includes/images/course_check.gif" : "includes/images/course_exclaim.gif")+"'></td><td>"+(hasReqestedFlashVersion ? "Installed --> Version: "+ versionMajor + "." + versionMinor +"." + versionRevision : "Proper Flash Version Not Installed")+"</td></tr>";       
    dataStr += "<tr><td>Acrobat Reader:</td><td><img src='"+ (imgArray['acrobat'] == null ? "includes/images/course_check.gif" : "includes/images/course_exclaim.gif")+"'></td><td>"+(acrobatVersion != -1 ? "Installed --> Version: "+ acrobatVersion  : "You need to install acrobat reader" )+"</td></tr>";         
    dataStr += "<tr><td>Download Test:</td><td><img src='"+ (imgArray['bandwidth'] == null ? "includes/images/course_check.gif" : "includes/images/course_exclaim.gif")+"'></td><td>"+loadText+"</td></tr>"; 
    dataStr += "<tr><td>Popup Blocker:</td><td><img src='"+ (imgArray['popup'] == null ? "includes/images/course_check.gif" : "includes/images/course_exclaim.gif")+"'></td><td>" + (popupsOK ? "Popup Blockers Disabled" : "Popup Blockers Must Be Disabled") + "</td></tr>"; 
    dataStr += "</table>";    
    launchCourse(); //call to launch course function on calling page.
    //document.getElementById('detector_msg').innerHTML = dataStr;
  }
  else {
    var dataStr = "To make sure you can successfully run the WomenCertified<sup>&reg;</sup> courses, a one time system check has been performed.";
    dataStr += "<br><br>Unfortunately, we have detected that your system does not fully meet all the requirements needed to run the WomenCertified courses.&nbsp;&nbsp;Meeting these requirements usually involves changing different settings on your browser.&nbsp;&nbsp;Please see below which requirement(s) were not met and how to resolve them.";
    dataStr += "<br><br>For further assistance, please email us at <a href='mailto:help@womencertified.com'>help@womencertified.com</a>.<br><br>";
    dataStr += "<table border=1 align=center>";
    dataStr += imgArray['os'] == null ? "" : "<tr><td><b>OS:</b></td><td><img src='includes/images/course_exclaim.gif'></td><td>" + navigator.platform+"</td></tr>";
    dataStr += imgArray['browser'] == null ? "" : "<tr><td><b>Browser:</b></td><td><img src='includes/images/course_exclaim.gif'></td><td>&nbspIE " + getIEVersion() + " SP:" + getServicePackNumber()+"</td></tr>";
    dataStr += imgArray['resolution'] == null ? "" : "<tr><td><b>Resolution:</b></td><td><img src='includes/images/course_exclaim.gif'></td><td>"+this.screen.width +"X"+this.screen.height+"</td></tr>";
    dataStr += imgArray['color'] == null ? "" : "<tr><td><b>Color Depth:</b></td><td><img src='includes/images/course_exclaim.gif'></td><td>"+this.screen.colorDepth+ " Bit</td></tr>"; 
    dataStr += imgArray['cookies'] == null ? "" : "<tr><td><b>Cookies Enabled:</b></td><td><img src='includes/images/course_exclaim.gif'></td><td>"+navigator.cookieEnabled+"</td></tr> "; 
    dataStr += imgArray['java'] == null ? "" : "<tr><td><b>Java Enabled:</b></td><td><img src='includes/images/course_exclaim.gif'></td><td>"+navigator.javaEnabled()+"</td></tr>";
    //dataStr += "<tr><td>Windows Media Player:</td><td><img src='"+ (imgArray['wm'] == null ? "includes/images/course_check.gif" : "includes/images/course_exclaim.gif")+"'></td><td>"+(windowsmedia.installed ? "Installed --> Version: " + windowsmedia.version : "Not Installed")+"</td></tr>";   
    dataStr += imgArray['flash'] == null ? "" : "<tr><td><b>Flash Player:</b></td><td><img src='includes/images/course_exclaim.gif'></td><td>"+(hasReqestedFlashVersion ? "Installed --> Version: "+ versionMajor + "." + versionMinor +"." + versionRevision : "Proper Flash Version Not Installed.  To Download Flash Player <a href='http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash' target=_blank>Click Here</a>.")+"</td></tr>";       
    dataStr += imgArray['acrobat'] == null ? "" : "<tr><td><b>Acrobat Reader:</b></td><td><img src='includes/images/course_exclaim.gif'></td><td>"+(acrobatVersion != -1 ? "Installed --> Version: "+ acrobatVersion + ".&nbsp;&nbsp; You need to install Acrobat Reader.  To Download Acrobat Reader, <a href='http://www.adobe.com/products/acrobat/readstep2.html' target=_blank>Click Here</a>." : "You need to install Acrobat Reader.  To Download Acrobat Reader, <a href='http://www.adobe.com/products/acrobat/readstep2.html' target=_blank>Click Here</a>." )+"</td></tr>";         
    dataStr += imgArray['bandwidth'] == null ? "" : "<tr><td><b>Download Test:</b></td><td><img src='includes/images/course_exclaim.gif'></td><td>"+loadText+"</td></tr>"; 
    dataStr += imgArray['popup'] == null ? "" : "<tr><td><b>Popup Blocker:</b></td><td><img src='includes/images/course_exclaim.gif'></td><td>Your Browser's Popup Blocker must be disabled.  For more instructions on disabling your popup blocker, <a href='http://www.microsoft.com/windowsxp/using/web/sp2_popupblocker.mspx' target=_blank>Click Here</a>.</td></tr>"; 
    dataStr += "</table>";
    document.getElementById('detector_msg').innerHTML = dataStr;
    showDetectorMsgDiv();
    //alert(warnStr);    
  }
}



