//------------------------------------------------------------
// generic js browser detection 
//
//------------------------------------------------------------

// supported browser types:
//   - Mozilla
//   - Safari
//   - Konqueror
//   - Opera
//   - Internet Explorer
//   - Netscape Navigator
//   - Netscape Communicator
//   - iCab
//   - OmniWeb
//   - NCSA Mosaic
//   - K-Meleon


// userAgent
var ua = navigator.userAgent.toLowerCase();
// offical (but incorrect) version number
var major = parseInt(navigator.appVersion);
var minor = parseFloat(navigator.appVersion);
var minorStr = String(minor);
// working variables
var uas = '';
var vs = '';

// browser identification
is_opera 	= (ua.indexOf('opera') != -1);
is_ic		= (ua.indexOf('icab') != -1);
is_ie 		= ((ua.indexOf('msie') != -1) && !is_opera && !is_ic);
is_ieSpoof  = ((ua.indexOf('msie') != -1) && (is_opera || is_ic));
is_nn 		= ((ua.indexOf('netscape') != -1) && !is_opera);
is_nnSpoof  = ((ua.indexOf('netscape') != -1) && is_opera);
is_sf		= (ua.indexOf('safari') != -1);
is_kq		= (ua.indexOf('konqueror') != -1);
is_ow		= (ua.indexOf('omniweb') != -1);
is_wt		= (ua.indexOf('webtv') != -1);
is_mo		= (ua.indexOf('mosaic') != -1);
is_km		= (ua.indexOf('k-meleon') != -1);
is_ga       = (ua.indexOf('galeon') != -1);
is_gecko	= (ua.indexOf('gecko') != -1);
is_mz 		= (is_gecko && (ua.indexOf('mozilla') != -1) && !is_opera && !is_nn && !is_sf && !is_kq && !is_ic && !is_wt && !is_ow && !is_km && !is_ga);
is_mzSpoof  = ((ua.indexOf('mozilla') != -1) && is_opera && !is_nn && !is_sf && !is_kq && !is_ic && !is_wt && !is_ow && !is_km && !is_ga && !is_ieSpoof);
is_nc		= (!is_gecko && !is_ie && !is_nn && !is_sf && !is_kq && !is_ic && !is_wt && !is_ow && !is_km && !is_ga && !is_opera && (ua.indexOf('mozilla') != -1));

// version string extraction
// INTERNET EXPLORER
if (is_ie) 
{
	vs = ua.substr(ua.indexOf('msie ')+5, ua.length-ua.indexOf('msie ')+5);
	vs = vs.substr(0, vs.indexOf(';'));
	uas = 'Internet Explorer';
}

// NETSCAPE NAVIGATOR
if (is_nn) 
{
	vs = ua.substr(ua.indexOf('netscape')+8, ua.length-ua.indexOf('netscape')+8);
	vs = vs.substr(vs.indexOf('/')+1, vs.length-vs.indexOf('/')+1);
	uas = 'Netscape Navigator';
}

// SAFARI
if (is_sf) 
{
	vs = ua.substr(ua.indexOf('safari/')+7, ua.length-ua.indexOf('safari/')+7);
	if (vs.length >= 3) {
		vs = vs[0] + '.' + vs.substr(1, vs.length-1);
	} else {
		vs = '0.' + vs;
	}
	uas = 'Safari';
}

// KONQUEROR
if (is_kq) 
{
	vs = ua.substr(ua.indexOf('konqueror/')+10, ua.length-ua.indexOf('konqueror/')+10);
	vs = vs.substr(0, vs.indexOf(';'));
	uas = 'Konqueror';
}

// OMNIWEB
if (is_ow) 
{
	vs = ua.substr(ua.indexOf('omniweb/v')+9, ua.length-ua.indexOf('omniweb/v')+9);
	vs = vs[0] + '.' + vs.substr(1, vs.length-1);
	uas = 'OmniWeb';
}

// WEBTV
if (is_wt) 
{
	vs = ua.substr(ua.indexOf('webtv/')+6, ua.length-ua.indexOf('webtv/')+6);
	vs = vs.substr(0, vs.indexOf(' '));
	uas = 'WebTV';
}

// ICAB
if (is_ic) 
{
	vs = ua.substr(ua.indexOf('icab ')+5, ua.length-ua.indexOf('icab ')+5);
	vs = vs.substr(0, vs.indexOf(';'));
	uas = 'iCab';
}

// NCSA MOSAIC
if (is_mo) 
{
	vs = ua.substr(ua.indexOf('mosaic/')+7, ua.length-ua.indexOf('mosaic/')+7);
	vs = vs.substr(0, vs.indexOf(' '));
	uas = 'NCSA Mosaic';
}

// K-MELEON
if (is_km) 
{
	vs = ua.substr(ua.indexOf('k-meleon ')+9, ua.length-ua.indexOf('k-meleon ')+9);
	uas = 'K-Meleon';
}

// GALEON
if (is_ga) 
{
	vs = ua.substr(ua.indexOf('galeon/')+7, ua.length-ua.indexOf('galeon/')+7);
	uas = 'Galeon';
}

// OPERA
if (is_opera) 
{
	if (is_ieSpoof || is_mzSpoof || is_nnSpoof) {
		vs = ua.substr(ua.indexOf('opera ')+6, ua.length-ua.indexOf('opera ')+6);
		vs = vs.substr(0, vs.indexOf(' '));
	} else {
		vs = ua.substr(ua.indexOf('opera/')+6, ua.length-ua.indexOf('opera/')+6);
		vs = vs.substr(0, vs.indexOf(' '));
	}
	uas = 'Opera';
}

// MOZILLA ODER DERIVAT
if (is_mz) 
{
	vs = ua.substr(ua.indexOf('rv:')+3, ua.length-ua.indexOf('rv:/')+3);
	vs = vs.substr(0, vs.indexOf(')'));
	uas = 'Mozilla oder Derivat';
}

// NETSCAPE NAVIGATOR
if (is_nc) 
{
	vs = ua.substr(ua.indexOf('mozilla/')+8, ua.length-ua.indexOf('mozilla/')+8);
	vs = vs.substr(0, vs.indexOf(' '));
	uas = 'Netscape Communicator';
}

// version number extraction
if (vs.length > 0) 
{
	major = parseInt(vs);
	minorStr = vs.substr(vs.indexOf('.')+1, vs.length-vs.indexOf('.')+1);
	minor = parseInt(minorStr);
} else {
	if (is_gecko) {
		uas = 'Gecko Derivat';
	} else {
		uas = 'Unbekannter Browser';
	}
}
uas += ' ' + major + '.' + minorStr;

if (is_ieSpoof) uas += ' im IE Spoof Mode';
if (is_nnSpoof) uas += ' im NN Spoof Mode';
if (is_mzSpoof) uas += ' im MZ Spoof Mode';

// inform IE4-, NN7-, OP6- inform
if ((is_ie && (major < 5)) ||
    (is_nn && (major < 7)) || (is_nc) ||
	(is_opera && (major < 7))) {
	ref = document.referrer;
	if ((ref.indexOf('htp') == -1)) {
		window.location.href = '/htp/jsp/util/htp_bwse.jsp';
	}
} 

/*
  User-Agents
    Mozilla (Firefox) 0.8:
      Mozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.6) Gecko/20040206 Firefox/0.8
	Internet Explorer 6.0:
	  Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
	Internet Explorer 5.5:
	  Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
	Internet Explorer 5.01:
	  Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
	Netscape Communicator 4.78:
	  Mozilla/4.78 [de]C-CCK-MCD DT (Windows NT 5.0; U)
	Opera 7:
	  Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.23 [en]
	  Mozilla/4.0 (compatible; MSIE 6.0; Linux 2.4.20-4GB i586) Opera 7.11 [en]
	  Opera/7.11 (Linux 2.4.20-4GB i586; U) [en]
	Safari:
	  Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/48 (like Gecko) Safari/48
	  Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/124 (KHTML, like Gecko) Safari/125
	Konqueror:
	  Mozilla/5.0 (compatible; Konqueror/3.2; Linux 2.6.3-gentoo-r1; X11; i686; en_GB) (KHTML, like Gecko)
	  Mozilla/5.0 (compatible; Konqueror/3.1; Linux)
	NCSA Mosaic:
	  NCSA Mosaic/3.0.0 (Windows x86)
	íCab:
	  Mozilla/4.5 (compatible; iCab 2.9.6; Macintosh; U; PPC)
	WebTV:
	  Mozilla/4.0 WebTV/2.6 (compatible; MSIE 4.0)
	OmniWeb:
	  Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/85 (KHTML, like Gecko) OmniWeb/v533
	K-Meleon:
	  Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.2b) Gecko/20021016 K-Meleon 0.7
	Galeon:
	  Mozilla/5.0 (x11; u; Linux i686) Gecko/20030311 Galeon/1.3.3
*/
