﻿/*
Copyright (c) 2007, James Auldridge
All rights reserved.
Code licensed under the BSD License:
http://www.jaaulde.com/license.txt

Version 1.0

Change Log:
* 09 JAN 07 - Version 1.0 written

*/
//Preparing namespace
var jimAuld = window.jimAuld || {};
jimAuld.utils = jimAuld.utils || {};
/*
* This library is a member of the jimAuld.utils namespace
* The libary is useful for detecting Flash presence and major version with JavaScript
* There are 4 methods in the flashsniffer library, each of which is documented separately below
*
*/
jimAuld.utils.flashsniffer = {
    //Properties
    //Configurable: what was the last major release number of Flash?
    lastMajorRelease: 9,
    //End Configurables

    // installed : BOOL : TRUE if detect() finds Flash installed, false if not
    installed: false,
    // version : MIXED : INT representing major version number of installed Flash if detect() can find it, NULL if not
    version: null,

    //Methods
    /* METHOD: detect();
    * PURPOSE: Determine if, and at what major version, Flash is installed
    * ARGUMENTS: VOID
    * RETURN: VOID (sets 'installed' and 'version' properties as documented above)
    */
    detect: function() {
        var fp, fpd, fAX;
        if (navigator.plugins && navigator.plugins.length) {
            fp = navigator.plugins["Shockwave Flash"];
            if (fp) {
                jimAuld.utils.flashsniffer.installed = true;
                if (fp.description) {
                    fpd = fp.description;
                    jimAuld.utils.flashsniffer.version = fpd.charAt(fpd.indexOf('.') - 1);
                }
            }
            else {
                jimAuld.utils.flashsniffer.installed = false;
            }
            if (navigator.plugins["Shockwave Flash 2.0"]) {
                jimAuld.utils.flashsniffer.installed = true;
                jimAuld.utils.flashsniffer.version = 2;
            }
        }
        else if (navigator.mimeTypes && navigator.mimeTypes.length) {
            fp = navigator.mimeTypes['application/x-shockwave-flash'];
            if (fp && fp.enabledPlugin) {
                jimAuld.utils.flashsniffer.installed = true;
            }
            else {
                jimAuld.utils.flashsniffer.installed = false;
            }
        }
        else {
            for (var i = jimAuld.utils.flashsniffer.lastMajorRelease; i >= 2; i--) {
                try {
                    fAX = new ActiveXObject("ShockwaveFlash.ShockwaveFlash." + i);
                    jimAuld.utils.flashsniffer.installed = true;
                    jimAuld.utils.flashsniffer.version = i;
                    break;
                }
                catch (e) {
                }
            }
            if (jimAuld.utils.flashsniffer.installed == null) {
                try {
                    fAX = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
                    jimAuld.utils.flashsniffer.installed = true;
                    jimAuld.utils.flashsniffer.version = 2;
                }
                catch (e) {
                }
            }
            if (jimAuld.utils.flashsniffer.installed == null) {
                jimAuld.utils.flashsniffer.installed = false;
            }
            fAX = null;
        }
    },
    /* METHOD: isVersion();
    * PURPOSE: Determine if Flash is installed at a specified major version
    * ARGUMENTS: exactVersion : INT : the exact version for which to check
    * RETURN: BOOL : TRUE if Flash is at specified version, FALSE if not
    */
    isVersion: function(exactVersion) {
        return (jimAuld.utils.flashsniffer.version != null && jimAuld.utils.flashsniffer.version == exactVersion);
    },
    /* METHOD: isLatestVersion();
    * PURPOSE: Determine if Flash is installed the latest released version of Flash (as configured in property 'lastMajorRelease' documented above)
    * ARGUMENTS: VOID
    * RETURN: BOOL : TRUE if Flash is at latest version, FALSE if not
    */
    isLatestVersion: function() {
        return (jimAuld.utils.flashsniffer.version != null && jimAuld.utils.flashsniffer.version == jimAuld.utils.flashsniffer.lastMajorRelease);
    },
    /* METHOD: meetsMinVersion();
    * PURPOSE: Determine if Flash is installed at a specified minimum version
    * ARGUMENTS: minVersion : INT : the version number that installed Flash should be at OR above
    * RETURN: BOOL : TRUE if Flash is at minimum version, FALSE if not
    */
    meetsMinVersion: function(minVersion) {
        return (jimAuld.utils.flashsniffer.version != null && jimAuld.utils.flashsniffer.version >= minVersion);
    }
};
	