
var bDisplayDebugInfo = getClassCookieFlag('Debug', 'DisplayInfo');  //[test] display debug information - make sure this is set to false

var strDetectedBrowserName = '';                //declare as global variables
var nDetectedBrowserVersion = 0;

function CheckBrowserVersion()
{
    var bMinimumBrowerVersion = false;

    var strUserAgent = navigator.userAgent;
    strDetectedBrowserName  = '';
    nDetectedBrowserVersion  = 0;

    if ((verOffset = strUserAgent.indexOf('MSIE')) != -1) {
        // In Internet Explorer, the true version is after 'MSIE' in userAgent

        strDetectedBrowserName  = 'MSIE';       //Microsoft Internet Explorer
        nDetectedBrowserVersion  = parseFloat(strUserAgent.substring(verOffset+5));
    } else if ((verOffset = strUserAgent.indexOf('Opera')) != -1) {
        // In Opera, the true version is after 'Opera'

        strDetectedBrowserName  = 'Opera';
        nDetectedBrowserVersion  = parseFloat(strUserAgent.substring(verOffset+6));
    } else if ((verOffset = strUserAgent.indexOf('Firefox')) != -1) {
        // In Firefox, the true version is after 'Firefox'

        strDetectedBrowserName  = 'FF';         //Firefox
        nDetectedBrowserVersion  = parseFloat(strUserAgent.substring(verOffset+8));
    } else if ((nameOffset = strUserAgent.lastIndexOf(' ') + 1) < (verOffset = strUserAgent.lastIndexOf('/'))) {
        // In most other browsers, 'name/version' is at the end of userAgent

        strDetectedBrowserName  = strUserAgent.substring(nameOffset,verOffset);
        nDetectedBrowserVersion  = parseFloat(strUserAgent.substring(verOffset+1));

        if (isNaN(nDetectedBrowserVersion))
            nDetectedBrowserVersion  = 0;
    }

    if (strDetectedBrowserName.toLowerCase() == strDetectedBrowserName.toUpperCase() || nDetectedBrowserVersion == 0) {
        // Finally, if no name and/or no version detected from userAgent...

        strDetectedBrowserName  = navigator.appName;
        nDetectedBrowserVersion  = parseFloat(navigator.appVersion);
    }

    if ((strDetectedBrowserName == 'FF' && nDetectedBrowserVersion >= 2.0) || (strDetectedBrowserName == 'MSIE' && nDetectedBrowserVersion >= 7.0))
        bMinimumBrowerVersion = true;

    return (bMinimumBrowerVersion);
}

function GetBrowserVersionString()
{
    strBrowserVersion = 'Code Name: ' + navigator.appCodeName;
    strBrowserVersion += '<br />App Name: ' + navigator.appName;
    strBrowserVersion += '<br />App Version: ' + navigator.appVersion;

    if (navigator.appMinorVersion != null)
        strBrowserVersion += '<br />App Minor Version: ' + navigator.appMinorVersion;

    if (navigator.cpuClass != null)
        strBrowserVersion += '<br />CPU Class: ' + navigator.cpuClass;

    strBrowserVersion += '<br />User Agent: ' + navigator.userAgent;
    strBrowserVersion += '<br />Platform: ' + navigator.platform;
    strBrowserVersion += '<br />Cookie Enabled: ' + (navigator.cookieEnabled ? 'Yes' : 'No');
    strBrowserVersion += '<br />Java Enabled: ' + (navigator.javaEnabled() ? 'Yes' : 'No');
    strBrowserVersion += '<br />Browser version ' + (CheckBrowserVersion() ? 'does' : 'DOES NOT') + ' meet minimum requirements';

    return (strBrowserVersion);
}

function GetBrowserRequirementTableString()
{
    return ('Browser version ' + (CheckBrowserVersion() ? 'does' : 'DOES NOT') + ' meet minimum requirements<br />    Browser name: ' + strDetectedBrowserName + ' version: ' + nDetectedBrowserVersion + '\n');
}

function GetBrowserVersionTableString()
{
    strBrowserVersion = '<tr><td class=prompt width=150>Code Name:</td><td class=textonly width=500>' + navigator.appCodeName + '</td></tr>\n';
    strBrowserVersion += '<tr><td class=prompt>App Name:</td><td class=textonly>' + navigator.appName + '</td></tr>\n';
    strBrowserVersion += '<tr><td class=prompt>App Version:</td><td class=textonly>' + navigator.appVersion + '</td></tr>\n';
    strBrowserVersion += '<tr><td class=prompt>User Agent:</td><td class=textonly>' + navigator.userAgent + '</td></tr>\n';
    strBrowserVersion += '<tr><td class=prompt>Cookie Enabled:</td><td class=textonly>' + (navigator.cookieEnabled ? 'Yes' : 'No') + '</td></tr>\n';
    strBrowserVersion += '<tr><td class=prompt>Java Enabled:</td><td class=textonly>' + (navigator.javaEnabled() ? 'Yes' : 'No') + '</td></tr>\n';
    strBrowserVersion += '<tr><td class=prompt>Platform:</td><td class=textonly>' + navigator.platform;

    if (navigator.appMinorVersion != null)
        strBrowserVersion += ' App Minor Version: ' + navigator.appMinorVersion;

    if (navigator.cpuClass != null)
        strBrowserVersion += ' CPU Class: ' + navigator.cpuClass;

    strBrowserVersion += '</td></tr>\n';
    strBrowserVersion += '<tr><td class=prompt>Browser name:</td><td class=textonly>' + strDetectedBrowserName + ' version: ' + nDetectedBrowserVersion + '</td></tr>\n';

    return (strBrowserVersion);
}

function addBodyOnloadEvent(func)
{
    // Usage:
    //  addBodyOnloadEvent(nameOfSomeFunctionToRunOnPageLoad);

    //  addBodyOnloadEvent(function() {
    //      /* more code to run on page load */
    //  });

    var oldonload = window.onload;

    if (typeof window.onload != 'function') {
        window.onload = func;
    } else {
        window.onload = function() {
            if (oldonload)
                oldonload();

            func();
        }
    }
}

function getCookie(c_name)
{
    if (document.cookie.length > 0) {
        c_start = document.cookie.indexOf(c_name + '=');

        if (c_start != -1) {
            c_start = c_start + c_name.length + 1;
            c_end = document.cookie.indexOf(';', c_start);

            if (c_end == -1)
                c_end = document.cookie.length;

            return (unescape(document.cookie.substring(c_start, c_end)));
        }
    }

    return (null);
}

function getCookieFlag(c_name)
{
    return (getCookie(c_name) == 'true' ? true : false);
}

function getClassCookie(c_class, c_name)
{
    return (getCookie(c_class + '_' + c_name));
}

function getClassCookieFlag(c_class, c_name)
{
    return (getClassCookie(c_class, c_name) == 'true' ? true : false);
}

function setCookie(c_name, value, expireminutes)
{
    if (expireminutes == 0) {
        current_value = getCookie(c_name);

        if (current_value == null || value != current_value)
            document.cookie = c_name + '=' + escape(value);
    } else {
        var expirationDate = new Date();

        expirationDate.setMinutes(expirationDate.getMinutes() + expireminutes);

        document.cookie = c_name + '=' + escape(value) + ';expires=' + expirationDate.toUTCString();
    }
}

function setClassCookie(c_class, c_name, value, expireminutes)
{
    setCookie(c_class + '_' + c_name, value, expireminutes)
}

function setCookieFlag(c_name, b_flag, expireminutes)
{
    setCookie(c_name, b_flag ? 'true' : 'false', expireminutes);
}

function setClassCookieFlag(c_class, c_name, b_flag, expireminutes)
{
    setCookieFlag(c_class + '_' + c_name, b_flag, expireminutes);
}

function eraseCookie(c_name)
{
    setCookie(c_name, '', -1);
}

function eraseClassCookie(c_class, c_name)
{
    eraseCookie(c_class + '_' + c_name);
}

function eraseClassCookies(c_class)
{
    if (document.cookie.length > 0) {
        do {
            c_start = document.cookie.indexOf(c_class + '_');
            c_end = -1;

            if (c_start != -1) {
                c_end = document.cookie.indexOf('=', c_start);

                if (c_end != -1)
                    eraseCookie(document.cookie.substring(c_start, c_end));
            }
        } while (document.cookie.length > 0 && c_start != -1 && c_end != -1);
    }
}

