
var OsDetect = new function() {
    var self = this;
   
    self.WINDOWS = "Windows";
    self.MAC = "Mac OS";
    self.OTHER = "Other";
    
    self.osName = self.OTHER;
    self.osVersion = "Other";
    self.osLabel = "Other";
    
    self.isMac = false;
    self.isWindows = false;
    self.isOther = false;

    var _determineOsInfo = function(str) {
	    var os = new Object();
	    var brs = "";
	    
	    if (str == null || str == "") {
	    	brs = navigator.userAgent.toLowerCase();
	    } else {
	    	brs = str.toLowerCase();
	    }
	       
	    if (brs.indexOf("win") >= 0) {
	    // Windows
	    	os['name'] = self.WINDOWS;
	    	
			if (brs.indexOf("nt 6.1") > 0) {
				os['version'] = "7";
			} else if (brs.indexOf("nt 6") > 0) {
				os['version'] = "Vista";
			} else if (brs.indexOf("nt 5.1") > 0) {
				os['version'] = "XP";
			} else {
				os['version'] = "Other";
			}
		} else if(brs.indexOf("mac") >= 0) {
		// Macintosh
			os['name'] = self.MAC;
			
			if(brs.indexOf("os x") >= 0) {
				try {
					os['version'] = java.lang.System.getProperty('os.version');
				} catch(exception) {
					//java didn't work, so return default
					os['version'] = "10+";
				}
			} else {
				os['version'] = "&lt; 10";
			}
		} else {
	    // Other os
	        os['name'] = self.OTHER;
	        os['version'] = "Other";
	    } 

	    return os;
	};
   
    self.test = function() {
    	alert("OS Information: \n" +
    			"Name: " + self.osName + "\n" +
    			"Version: " + self.osVersion + "\n" +
    			"Label: " + self.osLabel + "\n"
    			);
    };
    
    /**
     * Constructor
     */
    self.OsDetect = function() {
       var os = _determineOsInfo();
       
       self.osName = os.name;
       self.osVersion = os.version;
       self.osLabel = os.name + " " + os.version;
       
       if (os.name == self.WINDOWS) {
    	   self.isWindows = true;
       } else if (os.name == self.MAC) {
    	   self.isMac = true;
       } else {
    	   self.isOther = true;
       }
    }();
};
