jQuery.getPlatformInfo = function()
{
    var user_agent = navigator.userAgent.toLowerCase();
    var platform = null;
    var browser = null;
    var version = null;
    
    if (/macintosh/.test(user_agent))
    {
        platform = "mac";
    }
    else if (/windows/.test(user_agent))
    {
        platform = "windows";
    }
    else if (/linux/.test(user_agent))
    {
        platform = "linux";
    }
    else
    {
        platform = "unknown";
    }
    
    var version_match = null;
    if (/chrome/.test(user_agent) && !/chromeframe/.test(user_agent)) // We won't support chromeframe until it's out of beta.
    {
        browser = "Chrome";
        version_match = user_agent.match(/chrome\/(\d)/)
        version = (version_match !== null) ? version_match[1].replace('.', '') : "";
    }
    else if (/safari/.test(user_agent))
    {
        browser = "Safari";
        version_match = user_agent.match(/version\/(\d)/)
        version = (version_match !== null) ? version_match[1] : "";
    }
    else if (/firefox/.test(user_agent))
    {
        browser = "Firefox";
        version_match = user_agent.match(/firefox\/(\d\.\d)/)
        version = (version_match !== null) ? version_match[1].replace('.', '') : "";
    }
    else if (/msie/.test(user_agent))
    {
        browser = "MSIE";
        version_match = user_agent.match(/msie\s(\d)/)
        version = (version_match !== null) ? version_match[1] : "";
    }
    else if (/opera/.test(user_agent))
    {
        browser = "Opera"
        version_match = user_agent.match(/opera[\/\s](\d)/)
        version = (version_match !== null) ? version_match[1] : "";
    }
    else
    {
        browser = "unknown";
        version = "";
    }
    
    return {platform: platform, browser: browser, version: version};
};

jQuery.setBodyPlatformClasses = function()
{
    var body = jQuery("body");
    var info = jQuery.getPlatformInfo();
    body.addClass(info.platform);
    body.addClass(info.browser);
    body.addClass('v' + info.version);
};

jQuery(document).ready(jQuery.setBodyPlatformClasses);
