var OSDetect = {
    init: function () {
	this.OS = this.searchString(this.dataOS) || "an unknown OS";
        this.data = {
            'Windows':  { dirname: 'windows', size: '11',  title: 'dnstester-latest.zip', version: '1.5' },
            'Mac OS X 10.5': { dirname: 'macos',   size: '8',  title: 'dnstester-latest.dmg', version: '1.5' },
            'Mac OS X 10.6': { dirname: 'macos',   size: '7',  title: 'dnstester-latest_sl.dmg', version: '1.5' },
            'Linux':    { dirname: 'linux',   size: '0.5', title: 'dnstester-latest.tgz', version: '1.5' }
        }
    },
    /* general OS detection */
    searchString: function (data) {
	for (var i=0; i<data.length; i++)	{
	    this.versionSearchString = data[i].identity;
	    var dataString = data[i].string;
	    if (dataString.indexOf(data[i].subString) != -1) {
                var toReturn = data[i].identity;
                if (toReturn == 'Mac OS X') {
                    toReturn = this.searchMacString(this.dataMacOS) || "an unknown OS";
                }
	        return toReturn;
            }
	}
    },
    dataOS: [
	{
	    string: navigator.platform,
	    subString: "Win",
	    identity: "Windows"
        },
	{
	    string: navigator.platform,
	    subString: "Mac",
	    identity: "Mac OS X"
        },
	{
	    string: navigator.platform,
	    subString: "Linux",
	    identity: "Linux"
        }
    ],
    /* Mac OS X variants detection */
    searchMacString: function(data) {
        for (var i=0; i<data.length; i++) {
            var dataString = data[i].string;
            if ((dataString.indexOf(data[i].subString[0]) != -1) || (dataString.indexOf(data[i].subString[1]) != -1)) {
                return data[i].identity;
            }
        }
    },
    dataMacOS: [
        {
            string: navigator.userAgent,
            subString: [' 10.5',' 10_5'],
            identity: "Mac OS X 10.5"
        },
        {
            string: navigator.userAgent,
            subString: [' 10.6',' 10_6'],
            identity: "Mac OS X 10.6"
        }
    ]
};

OSDetect.init();





                    


