﻿if (typeof(Leapfrog) === "undefined") {
    Leapfrog = {}
}
Leapfrog.Detector = {
    getAgent: function() {
        return navigator.userAgent.toLowerCase()
    },
    isMac: function(B) {
        var A = B || this.getAgent();
        return !! A.match(/mac/i)
    },
    isWin: function(B) {
        var A = B || this.getAgent();
        return !! A.match(/win/i)
    },
    isWin2k: function(B) {
        var A = B || this.getAgent();
        return this.isWin(A) && (A.match(/nt\s*5/i))
    },
    isWinVista: function(B) {
        var A = B || this.getAgent();
        return this.isWin(A) && (A.match(/nt\s*6/i))
    },
    isWebKit: function(B) {
        if (this._isWebKit === undefined) {
            var A = B || this.getAgent();
            this._isWebKit = !!A.match(/AppleWebKit/i);
            this.isWebKit = function() {
                return this._isWebKit
            }
        }
        return this._isWebKit
    },
    isSafari2: function(C) {
        if (this._isSafari2 === undefined) {
            if (!this.isWebKit()) {
                this._isSafari2 = false
            } else {
                var B = navigator.userAgent.toLowerCase();
                var A = parseInt(parseFloat(B.substring(B.lastIndexOf("safari/") + 7)));
                this._isSafari2 = (A >= 419)
            }
            this.isSafari2 = function() {
                return this._isSafari2
            }
        }
        return this._isSafari2
    },
    isOpera: function(B) {
        var A = B || this.getAgent();
        return !! A.match(/opera/i)
    },
    isIE: function(B) {
        var A = B || this.getAgent();
        return !! A.match(/msie/i)
    },
    isIEStrict: function(B) {
        var A = B || this.getAgent();
        return A.match(/msie/i) && !this.isOpera(A)
    },
    isFirefox: function(B) {
        var A = B || this.getAgent();
        return !! A.match(/firefox/i)
    },
    isiPhone: function(B) {
        var A = B || this.getAgent();
        return this.isMobile(A)
    },
    isMobile: function(B) {
        var A = B || this.getAgent();
        return this.isWebKit(A) && A.match(/Mobile/i)
    },
    isiTunesOK: function(B) {
        var A = B || this.getAgent();
        return this.isMac(A) || this.isWin2k(A)
    },
    isQTInstalled: function() {
        var A = false;
        if (navigator.plugins && navigator.plugins.length) {
            for (var B = 0;
            B < navigator.plugins.length; B++) {
                var C = navigator.plugins[B];
                if (C.name.indexOf("QuickTime") > -1) {
                    A = true
                }
            }
        } else {
            if (typeof(execScript) != "undefined") {
                qtObj = false;
                execScript('on error resume next: qtObj = IsObject(CreateObject("QuickTimeCheckObject.QuickTimeCheck.1"))', "VBScript");
                A = qtObj
            }
        }
        return A
    },
    getQTVersion: function() {
        var A = "0";
        if (navigator.plugins && navigator.plugins.length) {
            for (var C = 0; C < navigator.plugins.length; C++) {
                var D = navigator.plugins[C];
                var B = D.name.match(/quicktime\D*([\.\d]*)/i);
                if (B && B[1]) {
                    A = B[1]
                }
            }
        } else {
            if (typeof(execScript) != "undefined") {
                ieQTVersion = null;
                execScript('on error resume next: ieQTVersion = CreateObject("QuickTimeCheckObject.QuickTimeCheck.1").QuickTimeVersion', "VBScript");
                if (ieQTVersion) {
                    A = (ieQTVersion >> 24).toString(16)
                }
            }
        }
        return A
    },
    isQTCompatible: function(C, E) {
        function B(G, I) {
            var F = parseInt(G[0], 10);
            if (isNaN(F)) {
                F = 0
            }
            var H = parseInt(I[0], 10);
            if (isNaN(H)) {
                H = 0
            }
            if (F === H) {
                if (G.length > 1) {
                    return B(G.slice(1), I.slice(1))
                } else {
                    return true
                }
            } else {
                if (F < H) {
                    return true
                } else {
                    return false
                }
            }
        }
        var D = C.split(/\./);
        var A = E ? E.split(/\./) : this.getQTVersion().split(/\./);
        return B(D, A)
    },
    isValidQTAvailable: function(A) {
        return this.isQTInstalled() && this.isQTCompatible(A)
    }
};