var ua = navigator.userAgent.toUpperCase();
var av = parseFloat(navigator.appVersion.substring(0,4));
var am = (navigator.appMinorVersion) ? navigator.appMinorVersion.toUpperCase() : '';
var an = navigator.appName;
var bld = 0;/* Gecko or AppleWebKit Build */
var rv = 0;/* Gecko rv: Or MSIE JScript Version */
var lc = 0;
var isDOM = (document.getElementById) ? true : false;/* DOM Use */
var isWinXPSP2 = false;/* WinXP-SP2 and IE 6.0 SP2 or IE 7 */

/* Browser boolean flag */
var isWinIE = false;/* IE 4 - 7 or IE Compatible (for Windows) */
var isMacIE = false;/* IE 4 - 5.2x (for Machintosh) */
var isNN4 = false;/* Netscape 4 - 4.8 */
var isGEC = false;/* Netscape 6 - 8.x or Gecko Compatible */
var isOPE = false;/* Opera 6 - 8.x */
var isKDE = false;/* Safari 1.0 - 2.x, Omniweb 4.5+, Konqueror */

/* Operating System */
var os = 'Other';
var plt = (navigator.platform) ? navigator.platform : 'Other';
var isWin = (plt.indexOf("Win") != -1) ? true : false;
var isMac = (plt.indexOf("Mac") != -1) ? true : false;
var isX11 = (plt.indexOf("X11") != -1 || ua.indexOf("LINUX") != -1 || ua.indexOf("BSD") != -1) ? true : false;

if(isWin){
if(ua.indexOf("NT 6.0") != -1 || ua.indexOf("WS V") != -1){ os = "WinV";
}else if(ua.indexOf("NT 5.2") != -1 || ua.indexOf("WS 2003") != -1){ os = "Win2003";
}else if(ua.indexOf("NT 5.1") != -1 || ua.indexOf("WS XP") != -1){ os = "WinXP";
}else if(ua.indexOf("NT 5.0") != -1 || ua.indexOf("WS 2000") != -1){ os = "Win2K";
}else if(ua.indexOf("WIN 9x 4.90") != -1 || ua.indexOf("WS ME") != -1){ os = "WinME";
}else if(ua.indexOf("WIN98") != -1 || ua.indexOf("WS 98") != -1){ os = "Win98";
}else if(ua.indexOf("NT 4.0") != -1 || ua.indexOf("WINNT4") != -1){ os = "WinNT4";
}else if(ua.indexOf("WIN95") != -1 || ua.indexOf("WS 95") != -1){ os = "Win95";
}else if(ua.indexOf("WS CE") != -1){ os = "WinCE";
}else if(ua.indexOf("WS NT") != -1 || ua.indexOf("WINNT") != -1){ os = "WinNT";
}else if(ua.indexOf("WS 3.1") != -1){ os = "Win3.1";
}else{ os = plt;}
}else if(isMac){
os = (ua.indexOf("MAC OS X") != -1 || ua.indexOf("IE 5.2") != -1) ? "MacOSX" : plt;
}else{ os = plt;}

/* JScript compile */
/*@cc_on
rv = @_jscript_version;
@if (@_win64 || @_win32 || @_win16)
isWinIE = true;
isWinXPSP2 = (ua.indexOf('NT 5.1; SV1;') != -1 && rv == 5.6) ? true : false;
isWinXPSP2 = (os == "WinXP" && rv > 5.6) ? true : isWinXPSP2;
@elif (@_mac && (@_PowerPC || @_mc680x0))
isMacIE = true;
@end
@*/

/* Browser info */
if(window.opera){
isOPE = true; an = "Opera"; lc = ua.indexOf("OPERA"); av = parseFloat(ua.substring(lc+6,lc+10));
}else if(ua.indexOf("APPLEWEBKIT") != -1){
lc = ua.indexOf("APPLEWEBKIT/");
if(lc > 0){
bld = parseInt(ua.substring(lc+12,lc+15)); isKDE = true;
if(ua.indexOf("SAFARI") != -1){ an = "Safari";
// Safari version
// if (bld >= 412){av = 2.0;}else if(bld >= 312){av = 1.3;}else if(bld >= 125){av = 1.2;}else if(bld >= 100){av = 1.1;}else {av = 1.0;}
}else if(ua.indexOf("OMNIWEB") != -1){ an = "OmniWeb";
}else{ an = "AppleWebKit";}
}
}else if(ua.indexOf("KONQUEROR/") != -1){
an = "Konqueror"; isKDE = true;
}else if(ua.indexOf("ICAB") != -1){
an = "iCab";
}else if(ua.indexOf("PLANETWEB") != -1){
an = "Planetweb";
}else if(ua.indexOf("NETFRONT") != -1 || ua.indexOf("AVEFRONT/") != -1){
an = "NetFront";
}else if(ua.indexOf("PSP (PLAYSTATION PORTABLE);") != -1){
an = "PSP Internet Browser";
}else if(ua.indexOf("DREAMPASSPORT") != -1 && !isWinIE){
an = "DreamPassport"; os = "DC";
}else if(navigator.product && navigator.product == "Gecko" && an == "Netscape"){
isGEC = true; bld = parseInt(navigator.productSub); lc = ua.indexOf("RV:");
if(lc != -1){
rv = (ua.charAt(lc+6) == ".") ? parseInt(ua.substring(lc+7,lc+9)) : 0; if(rv > 9){ rv = 9;}
rv += parseInt(ua.substring(lc+3,lc+6) * 100);
rv = (rv != 0) ? rv / 100 : 0;
}
if(navigator.vendor && navigator.vendor.indexOf("Netscape") != -1){/* Netscape 6+ */
av = parseFloat(navigator.vendorSub.substring(0,3) + navigator.vendorSub.substring(4,5));
}else{/* Gecko Compatible */
av = (rv >= 1.76) ? 8.0 : (rv >= 1.7) ? 7.2 : (rv >= 1.4) ? 7.1 : (rv >= 1.0) ? 7.0 : (rv >= 0.94) ? 6.2 : (rv >= 0.92) ? 6.1 : 6.0;
}
}else if(document.layers && an == "Netscape"){
isNN4 = true;
}else if(an == "Microsoft Internet Explorer"){
lc = ua.indexOf("MSIE ");
if(lc != -1) av = parseFloat(ua.substring(lc+5,lc+9));
}else if(isWinIE){
an = "Internet Explorer Compatible ("+an+")";
av = (rv > 5.6) ? 7.0 : (rv == 5.6) ? 6.0 : (rv == 5.5) ? 5.5 : (rv == 5.1) ? 5.01 : (rv >= 5.0) ? 5.0 : 4.0;
}

/* デバッグ用 Alert */
function verCheck(){
var mod = '';
if(bld != 0){ mod += "Build = " + bld + " / Gecko rv = " + rv + "\n";}
if(am != ''){ mod += "appMinorVersion = " + am + "\n" + "JScript Engine Version = " + rv + "\nWinXP SP2 = "+isWinXPSP2+"\n";}
alert("UserAgent = "+ua+"\n"+"appName = "+an+"\n"+"appVersion = "+av+"\n"+mod+"OS (platform) = "+os+" ("+plt+")\n"+"WinIE = "+isWinIE+" / MacIE = "+isMacIE+" / Opera = "+isOPE+"\n"+"NN4 = "+isNN4+" / Gecko = "+isGEC+" / KDE = "+isKDE);
}

/* 言語の取得 */
function getLang(){
//verCheck();
if(isWinIE || isMacIE){ return navigator.browserLanguage;}
else if(isNN4){ return navigator.language;}
else if(isOPE || isGEC || isKDE){ return navigator.language.substr(0,2);}
else{ return navigator.browserLanguage;}
}
