/*
  PICKUP USER SYSTEM
  Author : tak@
  URL    : http://plus-5.com
  Version: 1.0
	Update : 2004. 9.12
-------------------------------------------------*/

/*
  SETTING VARIABLES
-------------------------------------------------*/
function P5_getUserSystem() {
	var key, index, keyIndex, keyIndexEnd, versionKey, i, j;
	var uaString = P5_getUserSystem.arguments[0].toUpperCase();

	this.osLongName = "---";
	this.osShortName = "---";
	this.browserLongName = "---";
	this.browserShortName = "---";
	this.browserVersion = "---";

	var OSTYPE = new Object();
	OSTYPE['W95'] = new P5_setOS('Windows 95','win','WINDOWS 95,WIN95');
	OSTYPE['W98'] = new P5_setOS('Windows 98','win','WINDOWS 98,WIN98,Win 9x');
	OSTYPE['WCE'] = new P5_setOS('Windows CE','win','WINDOWS CE,WINCE');
	OSTYPE['WME'] = new P5_setOS('Windows Me','win','WINDOWS ME,WINME');
	OSTYPE['WNT'] = new P5_setOS('Windows NT','win','WINDOWS NT),WINDOWS NT 3,WINDOWS NT 4,WINDOWS NT;,WINNT');
	OSTYPE['W2K'] = new P5_setOS('Windows 2000','win','WINDOWS 2000,WINDOWS NT 5.0,WIN2000');
	OSTYPE['WXP'] = new P5_setOS('Windows XP','win','WINDOWS NT 5.1,WINDOWS NT 5.2,WINDOWS XP');
	OSTYPE['VST'] = new P5_setOS('Windows Vista','win','WINDOWS NT 6.0');
	OSTYPE['MAC'] = new P5_setOS('Macintosh','mac','MAC');
	OSTYPE['LNX'] = new P5_setOS('Linux','lnx','LINUX');
	OSTYPE['BSD'] = new P5_setOS('FreeBSD','bsd','FREEBSD');
	OSTYPE['X11'] = new P5_setOS('UNIX','x11','X11');
	OSTYPE['OSX'] = new P5_setOS('Mac OS X','osx','OS X');

	var BROWSERS = new Object();
	BROWSERS['MZ'] = new P5_setBrowser('Mozilla','mz','GECKO');
	BROWSERS['IE'] = new P5_setBrowser('Internet Explorer','ie','MSIE');
	BROWSERS['AO'] = new P5_setBrowser('AOL','ao','AOL');
	BROWSERS['SF'] = new P5_setBrowser('Safari','sf','SAFARI');
	BROWSERS['OP'] = new P5_setBrowser('Opera','op','OPERA');
	BROWSERS['OW'] = new P5_setBrowser('OmniWeb','ow','OMNIWEB');
	BROWSERS['IC'] = new P5_setBrowser('iCab','ic','ICAB');
	BROWSERS['NS'] = new P5_setBrowser('Netscape','ns','NETSCAPE,NETSCAPE6');
	BROWSERS['NN'] = new P5_setBrowser('Netscape Navigator','nn','MOZILLA');
	BROWSERS['FF'] = new P5_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;
			}
		}
	}

	// UNIX is reary?
	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;
				}
			}
		}
	}

	// Mac OS is reary?
	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;
			}
		}
	}

	// Navigator is reary?
	if (this.browserShortName == "nn" && uaString.indexOf("COMPATIBLE")>0) {
		this.browserLongName = "---";
		this.browserShortName = "---";
	}

	// Version Check
	if (this.browserLongName != "---") {
		for (i=0; i<checkVersionExp01.length; i++) {
			key = versionKey + checkVersionExp01[i];
			if ( ( keyIndex = uaString.indexOf(key) ) > 0 ) break;
		}
		// Mozilla
		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);
	}

}
/*
  SETTING OS LIST
-------------------------------------------------*/
function P5_setOS(longName,shortName,keyWord) {
	this.longName = longName;
	this.shortName = shortName;
	this.keyword = keyWord.split(",");
}
/*
  SETTING BROWSER LIST
-------------------------------------------------*/
function P5_setBrowser(longName,shortName,keyWord) {
	this.longName = longName;
	this.shortName = shortName;
	this.keyword = keyWord.split(",");
}

var userSystem = new P5_getUserSystem(navigator.userAgent);

