var browser_sniff = false;
// Partial script taken from http://developer.apple.com/internet/_javascript/
// But they said it was free and they didn't care if I took it... however
// Now I must let you know that this IS NOT THE ORIGINAL APPLE SCRIPT EXAMPLE!!!!
var n = navigator;
// string comparisons are much easier if we lowercase everything now.
// to make indexOf() tests more compact/readable, we prepend a space 
// to the userAgent string (to get around '-1' indexOf() comparison)
var ua = ' ' + n.userAgent.toLowerCase();
var pl = n.platform.toLowerCase(); // not supported in NS3.0
var an = n.appName.toLowerCase();

// browser version
var appVer = n.appVersion;

var is_nav = ua.indexOf('mozilla') > 0;

// 'compatible' versions of "mozilla" aren't navigator
if(ua.indexOf('compatible') > 0) {
	is_nav = false;
}

var is_opera = ua.indexOf('opera') > 0;
var is_webtv = ua.indexOf('webtv') > 0;
var is_ie = ua.indexOf('msie') > 0;
var is_aol = ua.indexOf('aol') > 0;

var is_major = parseInt( appVer );
var is_minor = parseFloat( appVer );

// platform
var is_mac = ua.indexOf('mac') > 0;
var is_mac68k = (ua.indexOf('68k') > 0 || ua.indexOf('68000') > 0);
var is_macppc = (ua.indexOf('ppc') > 0 || ua.indexOf('powerpc') > 0);

var is_win = ua.indexOf('win') > 0;
var is_win16 = (ua.indexOf('16') > 0 && ua.indexOf('win') > 0);
var is_win31 = is_win16;
var is_win95 = (ua.indexOf('95') > 0 && ua.indexOf('win') > 0);
var is_win98 = (ua.indexOf('98') > 0 && ua.indexOf('win') > 0);
var is_winnt = (ua.indexOf('nt') > 0 && ua.indexOf('win') > 0);

var is_os2 = ua.indexOf('os/2') > 0;

var is_sun = ua.indexOf('sunos') > 0;
var is_irix = ua.indexOf('irix') > 0;
var is_hpux = ua.indexOf('hpux') > 0;
var is_aix = ua.indexOf('aix') > 0;
var is_dec = (ua.indexOf('dec') > 0 || ua.indexOf('alpha') > 0 || ua.indexOf('osf1') > 0 || ua.indexOf('ultrix') > 0);
var is_sco = (ua.indexOf('sco') > 0 || ua.indexOf('unix_sv') > 0);
var is_vms = (ua.indexOf('vax') > 0 || ua.indexOf('openvms') > 0);
var is_linux = ua.indexOf('linux') > 0;
var is_sinix = ua.indexOf('sinix') > 0;
var is_reliant = ua.indexOf('reliantunix') > 0;
var is_freebsd = ua.indexOf('freebsd') > 0;
var is_openbsd = ua.indexOf('openbsd') > 0;
var is_netbsd = ua.indexOf('netbsd') > 0;
var is_bsd = ua.indexOf('bsd') > 0;
var is_unixware = ua.indexOf('unix_system_v') > 0;
var is_mpras = ua.indexOf('ncr') > 0;

var is_unix = ua.indexOf("x11") > 0;

// workarounds
// - IE5/Mac reports itself as version 4.0
if(is_ie && is_mac) {
	if(ua.indexOf("msie 5")) {
		is_major = 5;
		var actual_index = ua.indexOf("msie 5");
		var actual_major = ua.substring(actual_index + 5, actual_index + 8);
		is_minor = parseFloat(actual_major);
	}
}

// Look To Browser Versions //
	// First We Look At The Friendlier Netscape
var is_nav2 = (is_nav && (is_major == 2));
var is_nav3 = (is_nav && (is_major == 3));
var is_nav4 = (is_nav && (is_major == 4));
var is_nav4up = (is_nav && (is_major >= 4));
var is_navonly      = (is_nav && ((ua.indexOf(";nav") != -1) ||
                  (ua.indexOf("; nav") != -1)) );
var is_nav6   = (is_nav && is_major==5 && ua.indexOf("netscape6") != -1);   
var is_nav6up = (is_nav && is_major >= 5 && ua.indexOf("netscape6") != -1);

var is_nav5   = (is_nav && is_major == 5 && !is_nav6); // checked for ns6
var is_nav5up = (is_nav && is_major >= 5);
	// Next We Look At The Complicated IE
var is_ie3  = (is_ie && (is_major < 4));
var is_ie4   = (is_ie && is_major == 4);
var is_ie4up = (is_ie && is_major >= 4);
var is_ie5   = (is_ie && is_major == 5);
var is_ie5up = (is_ie && is_major >= 5);
var is_ie6   = (is_ie && is_major == 6);
var is_ie6up = (is_ie && is_major >= 6);

var js_ver;
if (is_nav2 || is_ie3) js_ver = 1.0
else if (is_nav3 || is_opera) js_ver = 1.1
else if ((is_nav4 && (is_minor <= 4.05)) || is_ie4) js_ver = 1.2
else if ((is_nav4 && (is_minor > 4.05)) || is_ie5) js_ver = 1.3
else if (is_nav5 && !(is_nav6)) js_ver = 1.4
else if (is_nav6) js_ver = 1.5
else if (is_ie && (is_major > 5)) js_ver = 1.3
// HACK: no idea for other browsers; 
else js_ver = 0.0;    
// Random Checks For Other Goodies
var is_anchors = (document.anchors) ? "true":"false";
var is_regexp = (window.RegExp) ? "true":"false";
var is_option = (window.Option) ? "true":"false";
var is_all = (document.all) ? "true":"false";
// Cookie check actually creates cookie... not so good... but then again it's all client side.
document.cookie = "cookies=true";
var is_cookie = (document.cookie) ? "true" : "false";
var is_images = (document.images) ? "true": "false";
var is_layers = (document.layers) ? "true": "false";
// Other Checks that are seemingly useless but you never know!
var is_forms = (document.forms) ? "true" : "false";
var is_links = (document.links) ? "true" : "false";
var is_frames = (window.frames) ? "true" : "false";
var is_screen = (window.screen) ? "true" : "false";
var is_W3CDOM = (typeof(document.getElementsByTagName) != 'undefined' && typeof(document.createElement) != 'undefined' && typeof(document.getElementById) != 'undefined')? "true" : "false";
// This is the real beauty, the Java check!
var is_java = (n.javaEnabled()) ? "true" : "false";
var is_DHTML4 = is_W3CDOM;
browser_sniff = true;