﻿/**
 * Compare wanted flash version with current user flash version
 * @return bool
 */
function isFlashUpToDate(wantedMainVersion, wantedMinorVersion, wantedRevisionVersion) {

    var flashVersion = getFlashVersion().split(',');
    var mainVersion = flashVersion[0];
    var minorVersion = flashVersion[1];
    var revisionVersion = flashVersion[2];

    // is maj version given
    if (wantedMainVersion != null) {

        // is maj version up to date
        if (wantedMainVersion <= mainVersion) {

            // is min version given
            if ((wantedMainVersion == mainVersion) && (wantedMinorVersion != null)) {

                // is min version up to date
                if (wantedMinorVersion <= minorVersion) {

                    // is rev version given
                    if ((wantedMinorVersion == minorVersion) && (wantedRevisionVersion != null)) {

                        // is rev version up to date
                        if (wantedRevisionVersion <= revisionVersion) {
                            return true;
                        } // end if rev version up to date
                        else {
                            return false;
                        } // end else if rev version not up to date

                    } // end if rev version given
                    else {
                        return true;
                    } // end else if rev version not given

                } // end if min version up to date
                else {
                    return false;
                } // end else if min version not up to date

            } // end if min version given
            else {
                return true;
            } // end if min version not given

        } // end if maj version up to date
        else {
            return false;
        } // end else if maj version not up to date

    } // end if maj version given
    else {
        return true;
    } // end else if maj version not given

}


/**
 * Return flash current user version as x.x.x
 * @return string
 */
function getFlashVersion() {
    try {
        /*
         * IE
         */
        try {
            var axo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash.6');

            try {
                axo.AllowScriptAccess = 'always';
            } catch (e) {
                return '6,0,0';
            }
        } catch (e) {
        }
        return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\D+/g, ',').match(/^,?(.+),?$/)[1];
    } catch (e) {
        /*
         * Other browsers
         */
        try {

            if (navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin) {
                return (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]).description.replace(/\D+/g, ",").match(/^,?(.+),?$/)[1];
            }

        } catch (e) {
        }
    }
    return '0,0,0';
}
