c692793e7500be11764221e677cb893b078358aa998cacb909c0fb642b1940bf

Source Code:

/**
 * Library Navigator
 */

(function(scope) {
    /**
     * UA情報を取得するためのクラスライブラリ
     */
    var namespace = 'dmmLib',
        navigator = function() {
        if (!(this instanceof arguments.callee)) {
            return new arguments.callee();
        }

        this._initialize();

        return this;
    };

    navigator.BROWSER = {
            IE:      'ie',
            FIREFOX: 'firefox',
            CHROME:  'chrome',
            SAFARI:  'safari',
            OPERA:   'opera',
            SPAPPLI: 'sp-appli',
            INETTV:  'inettv',
            NETFRONT:'netfront',
            BONECHO: 'bonecho',
            SILK:    'silk',
            DOLCE:   'dolce'
        };

    navigator.prototype = {
        /**
         * 初期化処理
         *
         * @return void
         */
        _initialize: function() {
            this._computeBrowser();
        },

        /**
         * ブラウザ情報を算出する
         *
         * @return void
         */
        _computeBrowser: function() {
            this._userAgent  = window.navigator.userAgent.toLowerCase();
            this._appVersion = window.navigator.appVersion.toLowerCase();

            if (this._userAgent.indexOf('msie') != -1 || this._userAgent.indexOf('trident') != -1) {
                this._browser = 'ie';
                if (this._userAgent.indexOf('msie') != -1) {
                    this._browserVersionStr = this._appVersion.match(/msie [0-9]+/i)[0];
                } else if (this._userAgent.indexOf('trident') != -1){
                    this._browserVersionStr = this._appVersion.match(/rv:[0-9]+/i)[0];
                }
                this._browserVersion = this._browserVersionStr.match(/[0-9]+/)[0];
            } else if (this._userAgent.indexOf('opera') != -1 || this._userAgent.indexOf('opr/') != -1) {
                this._browser = 'opera';
                if (this._userAgent.indexOf('opera') != -1) {
                    this._browserVersionStr = this._appVersion.match(/opera.+[0-9]+/i)[0];
                } else if (this._userAgent.indexOf('opr/') != -1){
                    this._browserVersionStr = this._appVersion.match(/opr.+[0-9]+/)[0];
                }
                this._browserVersion = this._browserVersionStr.match(/[0-9]+/)[0];
            } else if (this._userAgent.indexOf('chrome') != -1) {
                this._browser = 'chrome';
                this._browserVersionStr = this._appVersion.match(/chrome\/[0-9]+/i)[0];
                this._browserVersion = this._browserVersionStr.match(/[0-9]+/)[0];
            } else if (this._userAgent.indexOf('safari') != -1) {
                if (this._appVersion.indexOf('version') != -1) {
                    this._browser = 'safari';
                    this._browserVersionStr = this._appVersion.match(/version\/[0-9]+/i)[0];
                    this._browserVersion = this._browserVersionStr.match(/[0-9]+/)[0];
                }
                if (this._appVersion.indexOf('crios') != -1) {
                    this._browser = 'chrome';
                    this._browserVersionStr = this._appVersion.match(/crios\/[0-9]+/i)[0];
                    this._browserVersion = this._browserVersionStr.match(/[0-9]+/)[0];
                }
            } else if (this._userAgent.indexOf('firefox') != -1) {
                this._browser = 'firefox';
                this._browserVersionStr = this._userAgent.match(/firefox\/[0-9]+/i)[0];
                this._browserVersion = this._browserVersionStr.match(/[0-9]+/)[0];
            } else if (this._userAgent.indexOf('androidtoaster') != -1) {
                this._browser = 'sp-appli';
            } else if (this._userAgent.indexOf('inettvbrowser') != -1) {
                this._browser = 'inettv';
            } else if (this._userAgent.indexOf('netfront') != -1) {
                this._browser = 'netfront';
            } else if (this._userAgent.indexOf('bonecho') != -1) {
                this._browser = 'bonecho';
            } else if (this._userAgent.indexOf('silk') != -1) {
                this._browser = 'silk';
            } else if (this._userAgent.indexOf('SCE, VTE') != -1) {
                this._browser = 'dolce';
            }
        },

        /**
         * ブラウザ名を取得する
         *
         * @return string ブラウザ名
         */
        getBrowserName: function() {
            return this._browser;
        },

        /**
         * ブラウザのバージョンを取得する
         *
         * @return string ブラウザバージョン
         */
        getBrowserMajorVersion: function() {
            return this._browserVersion;
        },

        /**
         * ブラウザがIEか判定する
         *
         * @return boolean
         */
        isIe: function() {
            return this.getBrowserName() == navigator.BROWSER.IE;
        },

        /**
         * ブラウザがFireFoxか判定する
         *
         * @return boolean
         */
        isFirefox: function() {
            return this.getBrowserName() == navigator.BROWSER.FIREFOX;
        },

        /**
         * ブラウザがChromeか判定する
         *
         * @return boolean
         */
        isChrome: function() {
            return this.getBrowserName() == navigator.BROWSER.CHROME;
        },

        /**
         * ブラウザがSafariか判定する
         *
         * @return boolean
         */
        isSafari: function() {
            return this.getBrowserName() == navigator.BROWSER.SAFARI;
        },

        /**
         * ブラウザがOperaか判定する
         *
         * @return boolean
         */
        isOpera: function() {
            return this.getBrowserName() == navigator.BROWSER.OPERA;
        },

        /**
         * ブラウザがアプリか判定する
         *
         * @return boolean
         */
        isAppli: function() {
            return this.getBrowserName() == navigator.BROWSER.SPAPPLI;
        },

        /**
         * ブラウザがInettvBrowseか判定する
         *
         * @return boolean
         */
        isInettv: function() {
            return this.getBrowserName() == navigator.BROWSER.INETTV;
        },

        /**
         * ブラウザがNetFrontか判定する
         *
         * @return boolean
         */
        isNetfront: function() {
            return this.getBrowserName() == navigator.BROWSER.NETFRONT;
        },

        /**
         * ブラウザがBonEchoか判定する
         *
         * @return boolean
         */
        isBonecho: function() {
            return this.getBrowserName() == navigator.BROWSER.BONECHO;
        },

        /**
         * ブラウザがSilkか判定する
         *
         * @return boolean
         */
        isSilk: function() {
            return this.getBrowserName() == navigator.BROWSER.SILK;
        },

        /**
         * ブラウザがDolceか判定する
         *
         * @return boolean
         */
        isDolce: function() {
            return this.getBrowserName() == navigator.BROWSER.DOLCE;
        }

    };

    scope[namespace] = {
        navigator: navigator
    };
})(window);