
document.userSystem = new PF_getUserSystem(navigator.userAgent);
function PF_getUserSystem(){
    var key, index, keyIndex, keyIndexEnd, versionKey, i, j;
    var uaString = PF_getUserSystem.arguments[0].toUpperCase();
    this.osLongName = "---";
    this.osShortName = "---";
    this.browserLongName = "---";
    this.browserShortName = "---";
    this.browserVersion = "---";
    var OSTYPE = new Object();
    OSTYPE['W95'] = new PF_setOS('Windows 95', 'win', 'WINDOWS 95,WIN95');
    OSTYPE['W98'] = new PF_setOS('Windows 98', 'win', 'WINDOWS 98,WIN98,Win 9x');
    OSTYPE['WCE'] = new PF_setOS('Windows CE', 'win', 'WINDOWS CE,WINCE');
    OSTYPE['WME'] = new PF_setOS('Windows Me', 'win', 'WINDOWS ME,WINME');
    OSTYPE['WNT'] = new PF_setOS('Windows NT', 'win', 'WINDOWS NT),WINDOWS NT 3,WINDOWS NT 4,WINDOWS NT;,WINNT');
    OSTYPE['W2K'] = new PF_setOS('Windows 2000', 'win', 'WINDOWS 2000,WINDOWS NT 5.0,WIN2000');
    OSTYPE['WXP'] = new PF_setOS('Windows XP', 'win', 'WINDOWS NT 5.1,WINDOWS NT 5.2,Windows NT 6.0,WINDOWS XP,WINDOWS VISTA');
    OSTYPE['MAC'] = new PF_setOS('Macintosh', 'mac', 'MAC');
    OSTYPE['LNX'] = new PF_setOS('Linux', 'lnx', 'LINUX');
    OSTYPE['BSD'] = new PF_setOS('FreeBSD', 'bsd', 'FREEBSD');
    OSTYPE['X11'] = new PF_setOS('UNIX', 'x11', 'X11');
    OSTYPE['OSX'] = new PF_setOS('Mac OS X', 'osx', 'OS X');
    var BROWSERS = new Object();
    BROWSERS['MZ'] = new PF_setBrowser('Mozilla', 'mz', 'GECKO');
    BROWSERS['IE'] = new PF_setBrowser('Internet Explorer', 'ie', 'MSIE');
    BROWSERS['AO'] = new PF_setBrowser('AOL', 'ao', 'AOL');
    BROWSERS['SF'] = new PF_setBrowser('Safari', 'sf', 'SAFARI');
    BROWSERS['OP'] = new PF_setBrowser('Opera', 'op', 'OPERA');
    BROWSERS['OW'] = new PF_setBrowser('OmniWeb', 'ow', 'OMNIWEB');
    BROWSERS['IC'] = new PF_setBrowser('iCab', 'ic', 'ICAB');
    BROWSERS['NS'] = new PF_setBrowser('Netscape', 'ns', 'NETSCAPE,NETSCAPE6');
    BROWSERS['NN'] = new PF_setBrowser('Netscape Navigator', 'nn', 'MOZILLA');
    BROWSERS['FF'] = new PF_setBrowser('Firefox', 'ff', 'FIREFOX');
    var UNIXDETAIL = new Array("LNX", "BSD");
    var checkVersionExp01 = new Array(' ', '/', '-', '');
    var checkVersionExp02 = new Array(';', ' ', '(', '[', ')', '+', '-', '/');
    uaString = " " + uaString + ";";
    index = 0;
    for (key in OSTYPE) {
        for (i = 0; i < OSTYPE[key].keyword.length; i++) {
            keyIndex = uaString.indexOf(OSTYPE[key].keyword[i].toUpperCase());
            if (keyIndex > index) {
                this.osLongName = OSTYPE[key].longName;
                this.osShortName = OSTYPE[key].shortName;
                index = keyIndex;
            }
        }
    }
    if (this.osShortName == "x11") {
        for (i = 0; i < UNIXDETAIL.length; i++) {
            key = UNIXDETAIL[i];
            for (j = 0; j < OSTYPE[key].keyword.length; j++) {
                if (uaString.indexOf(OSTYPE[key].keyword[j].toUpperCase()) > 0) {
                    this.osLongName = OSTYPE[key].longName;
                    this.osShortName = OSTYPE[key].shortName;
                }
            }
        }
    }
    if (this.osShortName == "mac") {
        var myPlugin = navigator.plugins;
        for (i = 0; i < myPlugin.length; i++) {
            if (typeof(myPlugin[i].filename) != "undefined") {
                if (myPlugin[i].filename.indexOf(".plugin") != -1 || myPlugin[i].filename.indexOf(".app") != -1) {
                    this.osLongName = OSTYPE["OSX"].longName;
                    this.osShortName = OSTYPE["OSX"].shortName;
                }
            }
        }
        if (uaString.indexOf("MSIE 5.2") > 0) {
            this.osLongName = OSTYPE["OSX"].longName;
            this.osShortName = OSTYPE["OSX"].shortName;
        }
    }
    index = 0;
    for (key in BROWSERS) {
        for (i = 0; i < BROWSERS[key].keyword.length; i++) {
            keyIndex = uaString.indexOf(BROWSERS[key].keyword[i].toUpperCase());
            if (keyIndex > index) {
                this.browserLongName = BROWSERS[key].longName;
                this.browserShortName = BROWSERS[key].shortName;
                versionKey = BROWSERS[key].keyword[i].toUpperCase();
                index = keyIndex;
            }
        }
    }
    if (this.browserShortName == "nn" && uaString.indexOf("COMPATIBLE") > 0) {
        this.browserLongName = "---";
        this.browserShortName = "---";
    }
    if (this.browserLongName != "---") {
        for (i = 0; i < checkVersionExp01.length; i++) {
            key = versionKey + checkVersionExp01[i];
            if ((keyIndex = uaString.indexOf(key)) > 0) 
                break;
        }
        if (key == 'GECKO/') {
            key = 'RV:';
            keyIndex = uaString.indexOf(key);
        }
        keyIndex = keyIndex + key.length;
        index = uaString.length;
        for (i = 0; i < checkVersionExp02.length; i++) {
            if ((key = uaString.indexOf(checkVersionExp02[i], keyIndex)) > 0) {
                if (key < index) {
                    keyIndexEnd = key;
                    index = keyIndexEnd;
                }
            }
        }
        this.browserVersion = uaString.substring(keyIndex, keyIndexEnd);
    }
}

function PF_setOS(longName, shortName, keyWord){
    this.longName = longName;
    this.shortName = shortName;
    this.keyword = keyWord.split(",");
}

function PF_setBrowser(longName, shortName, keyWord){
    this.longName = longName;
    this.shortName = shortName;
    this.keyword = keyWord.split(",");
}
