How is this object working in javascript?
I have a class and im just wondering how it works. Its able to tell me which browser im using by the user calling BrowserDetect.dataBrowser, but as far as I can see that element is an array in a class. Eash element of the array has 3 members. Its like an array of arrays....not really sure...

Can someone just give me a quick explanation of how the class works then I can google keywords to learn a bit more.

Thanks here is the code....

    var BrowserDetect = {
        init: function () {
            this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
            this.version = this.searchVersion(navigator.userAgent)
    			|| this.searchVersion(navigator.appVersion)
    			|| "an unknown version";
            this.OS = this.searchString(this.dataOS) || "an unknown OS";
        },
        searchString: function (data) {
            for (var i = 0; i < data.length; i++) {
                var dataString = data[i].string;
                var dataProp = data[i].prop;
                this.versionSearchString = data[i].versionSearch || data[i].identity;
                if (dataString) {
                    if (dataString.indexOf(data[i].subString) != -1)
                        return data[i].identity;
                }
                else if (dataProp)
                    return data[i].identity;
            }
        },
        searchVersion: function (dataString) {
            var index = dataString.indexOf(this.versionSearchString);
            if (index == -1) return;
            return parseFloat(dataString.substring(index + this.versionSearchString.length + 1));
        },
        dataBrowser: [
    		{
    		    string: navigator.userAgent,
    		    subString: "Chrome",
    		    identity: "Chrome"
    		},
    		{ string: navigator.userAgent,
    		    subString: "OmniWeb",
    		    versionSearch: "OmniWeb/",
    		    identity: "OmniWeb"
    		},
    		{
    		    string: navigator.vendor,
    		    subString: "Apple",
    		    identity: "Safari",
    		    versionSearch: "Version"
    		},
    		{
    		    prop: window.opera,
    		    identity: "Opera",
    		    versionSearch: "Version"
    		},
    		{
    		    string: navigator.vendor,
    		    subString: "iCab",
    		    identity: "iCab"
    		},
    		{
    		    string: navigator.vendor,
    		    subString: "KDE",
    		    identity: "Konqueror"
    		},
    		{
    		    string: navigator.userAgent,
    		    subString: "Firefox",
    		    identity: "Firefox"
    		},
    		{
    		    string: navigator.vendor,
    		    subString: "Camino",
    		    identity: "Camino"
    		},
    		{		// for newer Netscapes (6+)
    		    string: navigator.userAgent,
    		    subString: "Netscape",
    		    identity: "Netscape"
    		},
    		{
    		    string: navigator.userAgent,
    		    subString: "MSIE",
    		    identity: "Explorer",
    		    versionSearch: "MSIE"
    		},
    		{
    		    string: navigator.userAgent,
    		    subString: "Gecko",
    		    identity: "Mozilla",
    		    versionSearch: "rv"
    		},
    		{ 		// for older Netscapes (4-)
    		    string: navigator.userAgent,
    		    subString: "Mozilla",
    		    identity: "Netscape",
    		    versionSearch: "Mozilla"
    		}
    	],
        dataOS: [
    		{
    		    string: navigator.platform,
    		    subString: "Win",
    		    identity: "Windows"
    		},
    		{
    		    string: navigator.platform,
    		    subString: "Mac",
    		    identity: "Mac"
    		},
    		{
    		    string: navigator.userAgent,
    		    subString: "iPhone",
    		    identity: "iPhone/iPod"
    		},
    		{
    		    string: navigator.platform,
    		    subString: "Linux",
    		    identity: "Linux"
    		}
    	]
    
    };
    BrowserDetect.init();


How is this object working in javascript?
===

I have a class and im just wondering how it works. Its able to tell me which browser im using by the user calling BrowserDetect.dataBrowser, but as far as I can see that element is an array in a class. Eash element of the array has 3 members. Its like an array of arrays....not really sure...

Can someone just give me a quick explanation of how the class works then I can google keywords to learn a bit more.

Thanks here is the code....

    var BrowserDetect = {
        init: function () {
            this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
            this.version = this.searchVersion(navigator.userAgent)
    			|| this.searchVersion(navigator.appVersion)
    			|| "an unknown version";
            this.OS = this.searchString(this.dataOS) || "an unknown OS";
        },
        searchString: function (data) {
            for (var i = 0; i < data.length; i++) {
                var dataString = data[i].string;
                var dataProp = data[i].prop;
                this.versionSearchString = data[i].versionSearch || data[i].identity;
                if (dataString) {
                    if (dataString.indexOf(data[i].subString) != -1)
                        return data[i].identity;
                }
                else if (dataProp)
                    return data[i].identity;
            }
        },
        searchVersion: function (dataString) {
            var index = dataString.indexOf(this.versionSearchString);
            if (index == -1) return;
            return parseFloat(dataString.substring(index + this.versionSearchString.length + 1));
        },
        dataBrowser: [
    		{
    		    string: navigator.userAgent,
    		    subString: "Chrome",
    		    identity: "Chrome"
    		},
    		{ string: navigator.userAgent,
    		    subString: "OmniWeb",
    		    versionSearch: "OmniWeb/",
    		    identity: "OmniWeb"
    		},
    		{
    		    string: navigator.vendor,
    		    subString: "Apple",
    		    identity: "Safari",
    		    versionSearch: "Version"
    		},
    		{
    		    prop: window.opera,
    		    identity: "Opera",
    		    versionSearch: "Version"
    		},
    		{
    		    string: navigator.vendor,
    		    subString: "iCab",
    		    identity: "iCab"
    		},
    		{
    		    string: navigator.vendor,
    		    subString: "KDE",
    		    identity: "Konqueror"
    		},
    		{
    		    string: navigator.userAgent,
    		    subString: "Firefox",
    		    identity: "Firefox"
    		},
    		{
    		    string: navigator.vendor,
    		    subString: "Camino",
    		    identity: "Camino"
    		},
    		{		// for newer Netscapes (6+)
    		    string: navigator.userAgent,
    		    subString: "Netscape",
    		    identity: "Netscape"
    		},
    		{
    		    string: navigator.userAgent,
    		    subString: "MSIE",
    		    identity: "Explorer",
    		    versionSearch: "MSIE"
    		},
    		{
    		    string: navigator.userAgent,
    		    subString: "Gecko",
    		    identity: "Mozilla",
    		    versionSearch: "rv"
    		},
    		{ 		// for older Netscapes (4-)
    		    string: navigator.userAgent,
    		    subString: "Mozilla",
    		    identity: "Netscape",
    		    versionSearch: "Mozilla"
    		}
    	],
        dataOS: [
    		{
    		    string: navigator.platform,
    		    subString: "Win",
    		    identity: "Windows"
    		},
    		{
    		    string: navigator.platform,
    		    subString: "Mac",
    		    identity: "Mac"
    		},
    		{
    		    string: navigator.userAgent,
    		    subString: "iPhone",
    		    identity: "iPhone/iPod"
    		},
    		{
    		    string: navigator.platform,
    		    subString: "Linux",
    		    identity: "Linux"
    		}
    	]
    
    };
    BrowserDetect.init();

