var oBrowserSupport = (function() {
        var aBrowser = [
                {sName: 'Netscape',          sId: 'Netscape', sReVerPrefix: '(?:Navigator/|Netscape/)', fMinVer: 8  },
        {sName: 'Firefox',           sId: 'Firefox',  sReVerPrefix: 'Firefox/',                 fMinVer: 1.5},
        {sName: 'Google Chrome',     sId: 'Chrome',   sReVerPrefix: 'Chrome/',                  fMinVer: 0.2},
        {sName: 'Internet Explorer', sId: 'IE',       sReVerPrefix: 'MSIE ',                    fMinVer: 6  }
    ];

        function isBrowserOk(bCheckCookie) {
        return (isBrowserVerOk()
                &&
                (bCheckCookie
                 ? oCookie.isCookieEnabled()
                 : true));
    }

        function isBrowserVerOk() {
        var bOk = false;
        if (            ((typeof(aGlobal) != 'undefined') &&
             (typeof(aGlobal['oIeVer']) != 'undefined'))
            &&
                        aGlobal['oIeVer'].bIsIe) {

                        bOk = !(aGlobal['oIeVer'].bIsIePre6);
        } else {
                        var sUserAgent = navigator.userAgent;
            var sBrowserName = null;
            for (var i=0; i<aBrowser.length; i++) {
                if (                    (aBrowser[i].sId == 'IE')
                    &&
                                        ((typeof(aGlobal) != 'undefined') &&
                     (typeof(aGlobal['oIeVer']) != 'undefined'))) {
                    continue;
                }

                                var oRe = new RegExp(aBrowser[i].sReVerPrefix + '([\.0-9]+)');
                var aMatch = oRe.exec(sUserAgent);
                if (aMatch) {
                    var fVer = parseFloat(aMatch[1]);
                    if (fVer >= aBrowser[i].fMinVer) {
                                                var sBrowserName = aBrowser[i].sName;
                    }

                                        break;
                }
            }
            bOk = (sBrowserName != null);
        }
        return bOk;
    }

        function getBrowserList() {
        var aBrowserVer = [];
                for (var i=(aBrowser.length-1); i>=0; i--) {
            aBrowserVer[aBrowserVer.length] =
                aBrowser[i].sName + ' ' + aBrowser[i].fMinVer + '+';
        }
        return aBrowserVer;
    }

        function getBrowserInfo() {
        var oBrowserInfo = null;
        if (            ((typeof(aGlobal) != 'undefined') &&
             (typeof(aGlobal['oIeVer']) != 'undefined'))
            &&
                        aGlobal['oIeVer'].bIsIe) {
                        oBrowserInfo = {
                sId: 'IE',
                fVer: (aGlobal['oIeVer'].bIsIePre7
                       ?                          (aGlobal['oIeVer'].bIsIePre6
                          ?                             5
                          : 6)
                       :                          7)
            };
        } else {
                        var sUserAgent = navigator.userAgent;
            var sBrowserName = null;
            for (var i=0; i<aBrowser.length; i++) {
                if (                    (aBrowser[i].sId == 'IE')
                    &&
                                        ((typeof(aGlobal) != 'undefined') &&
                     (typeof(aGlobal['oIeVer']) != 'undefined'))) {
                                        continue;
                }

                                var oRe = new RegExp(aBrowser[i].sReVerPrefix + '([\.0-9]+)');
                var aMatch = oRe.exec(sUserAgent);
                if (aMatch) {
                    var fVer = parseFloat(aMatch[1]);
                    if (fVer >= aBrowser[i].fMinVer) {
                                                oBrowserInfo = {
                            sId: aBrowser[i].sId,
                            fVer: fVer
                        };
                    }

                                        break;
                }
            }
        }
        return oBrowserInfo;
    }

        return {
        'isBrowserOk': isBrowserOk,
        'isBrowserVerOk': isBrowserVerOk,
        'getBrowserList': getBrowserList,
        'getBrowserInfo': getBrowserInfo
    }
})();

