// Detects various features provided by learner's browser

var cookiesok                   = navigator.cookieEnabled;
var javaok                      = navigator.javaEnabled();
var has_plugin_Acrobat          = false;
var has_plugin_Java             = false;
var has_plugin_Director         = false;
var has_plugin_ShockwaveFlash   = false;
var has_plugin_WinMediaPlayer   = false;
var has_plugin_RealPlayer       = false;
var has_plugin_QuickTime        = false;
var theHeight                   = screen.height;
var theWidth                    = screen.width;
var theColorDepth               = screen.colorDepth;
var os                          = navigator.platform;
var browser                     = navigator.appName;
var httpid                      = navigator.userAgent;
var theLanguage                 = navigator.language;

for(var i=0; i<navigator.plugins.length; i++) {
    var plugInName = navigator.plugins[i].name;
    if (plugInName == "nppdf.so") has_plugin_Acrobat = true;
    if (plugInName.indexOf("Adobe Acrobat") > -1) has_plugin_Acrobat = true;
    if (has_plugin_Acrobat) break;
}

if (detectableWithVB) {
    // Version 7.0 and later
    if(detectActiveXControl('AcroPDF.PDF')) has_plugin_Acrobat = true;
    if(detectActiveXControl('JavaPlugin')) has_plugin_Java = true;
    if(detectActiveXControl('SWCtl.SWCtl')) has_plugin_Director = true;
    if(detectActiveXControl('ShockwaveFlash.ShockwaveFlash.1')) has_plugin_ShockwaveFlash = true;
    if(detectActiveXControl('MediaPlayer.MediaPlayer.1')) has_plugin_WinMediaPlayer = true;
    if(detectActiveXControl('rmocx.RealPlayer G2 Control')) has_plugin_RealPlayer = true;
    if(detectActiveXControl('QuickTimeCheckObject.QuickTimeCheck.1')) has_plugin_QuickTime = true;
}

var flashVer = swfobject.getFlashPlayerVersion().major;
if (flashVer >= 8) has_plugin_ShockwaveFlash = true;

function specs() {
    var specs = "Current Environment<br/>\n";
    specs += "COOKIES:        " + cookiesok + "<br/>\n"
    specs += "JAVA:           " + javaok + "<br/>\n"
    specs += "ACROBAT:        " + has_plugin_Acrobat + "<br/>\n"
    specs += "JAVA PLUGIN:    " + has_plugin_Java + "<br/>\n"
    specs += "DIRECTOR:       " + has_plugin_Director + "<br/>\n"
    specs += "FLASH:          " + has_plugin_ShockwaveFlash + "<br/>\n"
    specs += "WINDOWS MEDIA:  " + has_plugin_WinMediaPlayer + "<br/>\n"
    specs += "REAL:           " + has_plugin_RealPlayer + "<br/>\n"
    specs += "QUICKTIME:      " + has_plugin_QuickTime + "<br/>\n"
    specs += "HEIGHT:         " + theHeight + "<br/>\n"
    specs += "WIDTH:          " + theWidth + "<br/>\n"
    specs += "COLOR DEPTH:    " + theColorDepth + "<br/>\n"
    specs += "OS:             " + os + "<br/>\n"
    specs += "BROWSER:        " + browser + "<br/>\n"
    specs += "USER AGENT:     " + httpid + "<br/>\n"
    specs += "LANGUAGE:       " + theLanguage + "<br/>\n"
    document.write(specs);
    document.close();
}

function reportResults() {
    var errorFound = false;
    document.write("<br/>");
    switch ( getBrowser() ) {
        case "Internet Explorer":
            if (getVersion() < 6) {
                document.write("<div class='missingReq'>Your version of Internet Explorer " + version + " is inadequate.</div>");
                iconToChange = document.getElementById("foundBrowser");
                iconToChange.src = "../ui/found_no.png"
                errorFound = true;
            }
            break;
        case "FireFox":
            if(getVersion() < 2) {
                document.write("<div class='missingReq'>Your browser version (" + getVersion() + ") is inadequate.</div>");
                iconToChange = document.getElementById("foundBrowser");
                iconToChange.src = "../ui/found_no.png"
                errorFound = true;
            }
            if(getVersion() > 2) {
                document.write("<div class='missingReq'>Your browser version (" + getVersion() + ") is not supported.</div>");
                iconToChange = document.getElementById("foundBrowser");
                iconToChange.src = "../ui/found_no.png"
                errorFound = true;
            }
            break;
        default: 
            document.write("<div class='missingReq'>You are not using a recommended browser. The course may not run properly in this browser.</div>");
            iconToChange = document.getElementById("foundBrowser");
            iconToChange.src = "../ui/found_no.png"
            errorFound = true;
    }
    
    if ( ! has_plugin_ShockwaveFlash ) {
        document.write("<div class='missingReq'>The Flash player was not found. <a href='http://www.adobe.com/go/getflashplayer' target='_blank'>Install</a></div>");
        iconToChange = document.getElementById("foundFlash");
        iconToChange.src = "../ui/found_no.png"
        errorFound = true;
    }
    
    if ( ! meetsResolutionReqs(1024, 768) ) {
        document.write("<div class='missingReq'>Your screen resolution is smaller than recommended.</div>");
        iconToChange = document.getElementById("foundResolution");
        iconToChange.src = "../ui/found_no.png"        
        errorFound = true;
    }
    
    if ( ! has_plugin_Acrobat ) {
        document.write("<div class='missingReq'>The Adobe Acrobat player was not found. <a href='http://www.adobe.com/products/acrobat/readstep2.html' target='_blank'>Install</a></div>");
        iconToChange = document.getElementById("foundAcrobat");
        iconToChange.src = "../ui/found_no.png"        
        errorFound = true;
    }
  
    if (! errorFound) {
        document.write("<div class='meetsReqs'>Your system meets requirements.</div>");
    } else {
        document.write("<div><br/><a href='launchpage.htm'>Re-check</a></div>");
    }
    
    if( getBrowser() != "Internet Explorer") {
        document.write("<br/>NOTE: The Acrobat Reader version cannot be detected automatically in<br/>&nbsp;&nbsp;&nbsp;Mozilla browsers, such as Firefox.<br/>");
    }
  
}

function meetsResolutionReqs(minWidth, minHeight) {
    meetsWidth = (screen.width >= Number(minWidth));
    meetsHeight = (screen.height >= Number(minHeight));
    meetsRequirement = ( meetsWidth && meetsHeight );
    return meetsRequirement;
}

function getBrowser() {
    // IE
    if (navigator.appName == "Microsoft Internet Explorer") return "Internet Explorer";
    
    // Firefox
    ffArray = navigator.userAgent.split("Firefox/");
    if(ffArray.length >= 2) return "FireFox";
    
    // Other
    return "Unknown"; 
    
}

function getVersion() {

    // IE
    if (getBrowser() == "Internet Explorer") return navigator.userAgent.split("MSIE ")[1].split(";")[0];
    
    // Firefox
    if(getBrowser() == "FireFox") {
        ffArray = navigator.userAgent.split("Firefox/");
        ffVerArray = ffArray[1].split(".");
        ffVersion = ffVerArray[0];
        if(ffVerArray[1]) ffVersion += "." + ffVerArray[1];
        return ffVersion;
    }
    
    // Other
    return "Unknown";
}

