//	---------------------------------------------------------------------------
//	FUNCTION:	addEvent(o,e,f)
//	AUTHOR:		Ryan J. Salva
//	REVISED:	November 2004
//
//	Attaches a function to the event of your choice. The most
//	common application is to attach a function to page load.
//
//	EXAMPLE:
//	addEvent(window, "load", myFunction(variable))

function addEvent(o,e,f){
 	debug.info('addEvent('+o+','+e+','+f+')');
 	if (o.addEventListener) {o.addEventListener(e,f,false);return true;}
 	else if (o.attachEvent) {return o.attachEvent("on"+e,f);} 
	else {return false;}
}


//	---------------------------------------------------------------------------
//	FUNCTION:	addLoadEvent(f)
//	AUTHOR:		Simon Willison, http://simon.incutio.com/archive/2004/05/26/
//	REVISED:	August 2005
//
//	Attaches a function to the window load event. We use this function because
//	addEvent(o,e,f) is not IE Mac compatible. IE Mac only understands window.onload
//	but multiple window.onload declarations will overwrite eachother.
//	
//	EXAMPLE:
//	addLoadEvent(function(){myFunction(variable);});

function addLoadEvent(f) {
 	debug.info('addLoadEvent('+f+')');
	var old = window.onload;
	if (typeof window.onload != 'function') { window.onload = f; } 
	else { window.onload = function() { old(); debug.info('start: '+f); f(); debug.info('end: '+f);} }
 	debug.info('addLoadEvent('+f+')');
}


//	---------------------------------------------------------------------------
//	ACTION:		add Array.push() to JavaScript 1.1 and below
//
//	Code executes immediately. No additional action necessary. 
//	Intended primarily for MAC IE 5.2

if (typeof Array.prototype.push=='undefined') { 
	Array.prototype.push=function(){
		var b=this.length;
		var a=arguments;
		for(i=0;i<a.length;i++){this[b+i]=a[i];}
		return this.length;
	} 
}
var aObjects = new Array();


//	---------------------------------------------------------------------------
//	FUNCTION:	PageQuery(q), queryString(key),
//	AUTHOR:		Ryan J. Salva
//	REVISED:	September 2005
//
//	Parses the querystring and returns the value of any key
//
//	TESTED ON:
//	Windows IE 6, Opera 8, Firefox 1
//	Mac IE 5.2, Safari 1
//
//	EXAMPLE:
//	If the url is http://www.domain.com?key=value, call queryString(key)
//	to get back "value"
//


function PageQuery(q) {
	if(q.length > 1) this.q = q.substring(1, q.length);
	else this.q = null;
	this.keyValuePairs = new Array();
	if(q) {
		for(var i=0; i < this.q.split("&").length; i++) {
			this.keyValuePairs[i] = this.q.split("&")[i];
		}
	}
	this.getKeyValuePairs = function() { return this.keyValuePairs; }
	this.getValue = function(s) {
		for(var j=0; j < this.keyValuePairs.length; j++) {
			if(this.keyValuePairs[j].split("=")[0] == s)
			return this.keyValuePairs[j].split("=")[1];
		}
		return false;
	}
	this.getParameters = function() {
		var a = new Array(this.getLength());
		for(var j=0; j < this.keyValuePairs.length; j++) {
			a[j] = this.keyValuePairs[j].split("=")[0];
		}
		return a;
	}
	this.getLength = function() { return this.keyValuePairs.length; }
}

function queryString(key){
	var page = new PageQuery(window.location.search);
	return unescape(page.getValue(key));
}



//	---------------------------------------------------------------------------
//	FUNCTION:	debug()
//	AUTHOR:		Ryan J. Salva
//	REVISED:	September 2005
//
//	Opens a hidden <div> and writes information for each function
//	to the window. Trigger by adding debug=true to the querystring
//
//	EXAMPLE:
//	http://www.domain.com?debug=true

function debug() {
	if (queryString('debug') == 'true') this.display = true;
	this.log = document.createElement("DIV");
	this.log.id = "Debug"
}
debug.prototype.info = function(i) {
	if (this.display) {
		var P = document.createElement("P");
		P.className = "Info";
		P.appendChild(document.createTextNode(new Date()));
		P.appendChild(document.createElement("BR"));
		P.appendChild(document.createTextNode(i));
		this.log.appendChild(P);
	}
}
var debug = new debug();
addLoadEvent(function(){document.body.appendChild(debug.log);});


//	---------------------------------------------------------------------------
//	FUNCTION:	randomImage(a)
//	AUTHOR:		Ryan J. Salva
//	REVISED:	November 2004
//
//	Feed this function an array of image paths and it will
//	return a randomly selected image from the array
//
//	EXAMPLE:
//	randomImage(new Array('files/images/1.gif','files/images/2.gif')

function randomImage(a) {
 	debug.info('randomImage('+a+')');
	var i;
	if (Math.random) {
		i = (Math.round(Math.random()*(randomImage.arguments.length-1)));
	}
	else {
		var now = new Date();
		i = (now.getTime() / 1000) % randomImage.arguments.length;
	}
	document.write('<img src="' + randomImage.arguments[i] + '">');
 	debug.info('writing to the page: <img src="' + randomImage.arguments[i] + '">');
}


//	---------------------------------------------------------------------------
//	FUNCTION:	openWindow(name,url,w,h)
//	AUTHOR:		Ryan J. Salva
//	REVISED:	November 2004
//
//	Opens a bare-bones window with no browser controls
//
//	EXAMPLE:
//	openWindow('myWin','http://www.google.com',400,600)

function openWindow(name,url,w,h) {
	window.open(url,name,'top=100,left=100,width='+w+',height='+h+',scrollbars=yes,location=no,resizable=yes,status=yes,toolbar=no');
 	debug.info('openWindow('+name+','+url+','+w+','+h+')');
}


//	---------------------------------------------------------------------------
//	FUNCTION:	toggleDisplay(i)
//	AUTHOR:		Ryan J. Salva
//	REVISED:	August 2005
//
//	Toggle the visibility of any element in the DOM
//
//	REQUIREMENTS:
//	Supported by getStyle(i,s)
//	Does not work in Safari 1.0 because the browser cannot detect style. This
//	is a known bug at Apple and they have promised to fix in later versions
//	of the browser.
//
//	EXAMPLE:
//	toggleDisplay('myElementID')

function toggleDisplay(i) {
	var x = document.getElementById(i);
	if ((getStyle(i,'display') == 'block') || (getStyle(i,'visibility') == 'visible')) {
		x.style.visibility = 'hidden';
		x.style.display = 'none';
	}
	else {
		x.style.visibility = 'visible';
		x.style.display = 'block';
	}
	debug.info('toggleDisplay('+i+') = visibility:'+x.style.visibility+', display:'+x.style.display);
}

//	---------------------------------------------------------------------------
//	FUNCTION:	getStyle(i,s)
//	AUTHOR:		Ryan J. Salva
//	REVISED:	August 2005
//
//	Returns the style property of any element
//
//	REQUIREMENTS:
//	Does not work in Safari 1.0 because the browser cannot detect style. This
//	is a known bug at Apple and they have promised to fix in later versions
//	of the browser.
//
//	EXAMPLE:
//	getStyle('myElementID','display')

function getStyle(i,s)
{
	var x = document.getElementById(i);
	if (document.defaultView && document.defaultView.getComputedStyle) {
		var y = document.defaultView.getComputedStyle(x,'').getPropertyValue(s); }
	else if (x.currentStyle) {
		var y = eval('x.currentStyle.' + s); }
 	debug.info('getStyle('+i+','+s+') = '+y);
	return y;
}



//	---------------------------------------------------------------------------
//	FUNCTION:	overSRC(e,a)
//	AUTHOR:		Ryan J. Salva
//			Adaptation of SimpleSwap by Jehiah Czebotar, http://jehiah.com/archive/simple-swap
//	REVISED:	August 2005
//
//	Creates mouseover for images
//
//	TESTED ON:
//	Windows IE 6, Opera 8, Firefox 1
//	Mac IE 5.2, Safari 1
//
//	EXAMPLE:
//	Include this file in the header, then add the following HTML to your page...
//	<img src="/images/myPic_off.gif" oversrc="/images/myPic_on.gif">
//


function overSRC(e,a){
	e.src=e.getAttribute(a || "origsrc");
 	debug.info('overSRC('+e+','+a+')');
}

function overSRCLoad(){
	var x = document.getElementsByTagName("img");
	for (var i=0;i<x.length;i++){
		var oversrc = x[i].getAttribute("oversrc");
		if (!oversrc) continue;

		debug.info('overSRCLoad(): identified image with oversrc: '+x[i].id);

		// preload image
 		// comment the next two lines to disable image pre-loading
		x[i].oversrc_img = new Image();
		x[i].oversrc_img.src=oversrc;

		// set event handlers
		x[i].onmouseover = new Function("overSRC(this,'oversrc');");
		x[i].onmouseout = new Function("overSRC(this);");

		// save original src
		x[i].setAttribute("origsrc",x[i].src);
		debug.info('overSRCLoad(): preload image '+oversrc);
	}
}

addLoadEvent(function(){overSRCLoad();});



// ----------------------------------------------------------------------
// JavaScript Browser Sniffer
// Eric Krok, Andy King, Michel Plungjan Jan. 31, 2002
// see http://www.webreference.com/ for more information
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
//  (at your option) any later version.
//
// please send any improvements to aking@internet.com and we'll
// roll the best ones in
//
//
// Everything you always wanted to know about your JavaScript client
// but were afraid to ask. Creates "is_" variables indicating:
// (1) browser vendor:
//     is_nav, is_ie, is_opera
// (2) browser version number:
//     is_major (integer indicating major version number: 2, 3, 4 ...)
//     is_minor (float   indicating full  version number: 2.02, 3.01, 4.04 ...)
// (3) browser vendor AND major version number
//     is_nav2, is_nav3, is_nav4, is_nav4up, is_nav5, is_nav5up, 
//     is_nav6, is_nav6up, is_ie3, is_ie4, is_ie4up, is_ie5up, is_ie6...
// (4) JavaScript version number:
//     is_js (float indicating full JavaScript version number: 1, 1.1, 1.2 ...)
// (5) OS platform and version:
//     is_win, is_win16, is_win32, is_win31, is_win95, is_winnt, is_win98
//     is_os2
//     is_mac, is_mac68k, is_macppc
//     is_unix
//        is_sun, is_sun4, is_sun5, is_suni86
//        is_irix, is_irix5, is_irix6
//        is_hpux, is_hpux9, is_hpux10
//        is_aix, is_aix1, is_aix2, is_aix3, is_aix4
//        is_linux, is_sco, is_unixware, is_mpras, is_reliant
//        is_dec, is_sinix, is_freebsd, is_bsd
//     is_vms
//

// convert all characters to lowercase to simplify testing
var agt=navigator.userAgent.toLowerCase();
var appVer = navigator.appVersion.toLowerCase();

// *** BROWSER VERSION ***

var is_minor = parseFloat(appVer);
var is_major = parseInt(is_minor);

var is_opera = (agt.indexOf("opera") != -1);
var is_opera2 = (agt.indexOf("opera 2") != -1 || agt.indexOf("opera/2") != -1);
var is_opera3 = (agt.indexOf("opera 3") != -1 || agt.indexOf("opera/3") != -1);
var is_opera4 = (agt.indexOf("opera 4") != -1 || agt.indexOf("opera/4") != -1);
var is_opera5 = (agt.indexOf("opera 5") != -1 || agt.indexOf("opera/5") != -1);
var is_opera6 = (agt.indexOf("opera 6") != -1 || agt.indexOf("opera/6") != -1); // new 020128- abk
var is_opera7 = (agt.indexOf("opera 7") != -1 || agt.indexOf("opera/7") != -1); // new 021205- dmr
var is_opera5up = (is_opera && !is_opera2 && !is_opera3 && !is_opera4);
var is_opera6up = (is_opera && !is_opera2 && !is_opera3 && !is_opera4 && !is_opera5); // new020128
var is_opera7up = (is_opera && !is_opera2 && !is_opera3 && !is_opera4 && !is_opera5 && !is_opera6); // new021205 -- dmr

// Note: On IE, start of appVersion return 3 or 4
// which supposedly is the version of Netscape it is compatible with.
// So we look for the real version further on in the string
// And on Mac IE5+, we look for is_minor in the ua; since 
// it appears to be more accurate than appVersion - 06/17/2004

var is_mac = (agt.indexOf("mac")!=-1);
var iePos  = appVer.indexOf('msie');
if (iePos !=-1) {
    if(is_mac) {
        var iePos = agt.indexOf('msie');
        is_minor = parseFloat(agt.substring(iePos+5,agt.indexOf(';',iePos)));
    }
    else is_minor = parseFloat(appVer.substring(iePos+5,appVer.indexOf(';',iePos)));
    is_major = parseInt(is_minor);
}

// ditto Konqueror
                                    
var is_konq = false;
var kqPos   = agt.indexOf('konqueror');
if (kqPos !=-1) {                 
    is_konq  = true;
    is_minor = parseFloat(agt.substring(kqPos+10,agt.indexOf(';',kqPos)));
    is_major = parseInt(is_minor);
}                                 

var is_getElementById   = (document.getElementById) ? "true" : "false"; // 001121-abk
var is_getElementsByTagName = (document.getElementsByTagName) ? "true" : "false"; // 001127-abk
var is_documentElement = (document.documentElement) ? "true" : "false"; // 001121-abk

var is_safari = ((agt.indexOf('safari')!=-1)&&(agt.indexOf('mac')!=-1))?true:false;
var is_khtml  = (is_safari || is_konq);

var is_gecko = ((!is_khtml)&&(navigator.product)&&(navigator.product.toLowerCase()=="gecko"))?true:false;
var is_gver  = 0;
if (is_gecko) is_gver=navigator.productSub;

var is_moz   = ((agt.indexOf('mozilla/5')!=-1) && (agt.indexOf('spoofer')==-1) &&
                (agt.indexOf('compatible')==-1) && (agt.indexOf('opera')==-1)  &&
                (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1)     &&
                (is_gecko) && 
                ((navigator.vendor=="")||(navigator.vendor=="Mozilla")||(navigator.vendor=="Debian")));
var is_fb = ((agt.indexOf('mozilla/5')!=-1) && (agt.indexOf('spoofer')==-1) &&
                (agt.indexOf('compatible')==-1) && (agt.indexOf('opera')==-1)  &&
                (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1)     &&
                (is_gecko) && (navigator.vendor=="Firebird"));
var is_fx = ((agt.indexOf('mozilla/5')!=-1) && (agt.indexOf('spoofer')==-1) &&
                (agt.indexOf('compatible')==-1) && (agt.indexOf('opera')==-1)  &&
                (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1)     &&
                (is_gecko) && (navigator.vendor=="Firefox"));
if ((is_moz)||(is_fb)||(is_fx)) {  // 032504 - dmr
    var is_moz_ver = (navigator.vendorSub)?navigator.vendorSub:0;
    if(!(is_moz_ver)) {
        is_moz_ver = agt.indexOf('rv:');
        is_moz_ver = agt.substring(is_moz_ver+3);
        is_paren   = is_moz_ver.indexOf(')');
        is_moz_ver = is_moz_ver.substring(0,is_paren);
    }
    is_minor = is_moz_ver;
    is_major = parseInt(is_moz_ver);
}
var is_fb_ver = is_moz_ver;
var is_fx_ver = is_moz_ver;

var is_nav  = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
            && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
            && (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1)
            && (!is_khtml) && (!(is_moz)) && (!is_fb) && (!is_fx));

// Netscape6 is mozilla/5 + Netscape6/6.0!!!
// Mozilla/5.0 (Windows; U; Win98; en-US; m18) Gecko/20001108 Netscape6/6.0
// Changed this to use navigator.vendor/vendorSub - dmr 060502   
// var nav6Pos = agt.indexOf('netscape6');
// if (nav6Pos !=-1) {
if ((navigator.vendor)&&
    ((navigator.vendor=="Netscape6")||(navigator.vendor=="Netscape"))&&
    (is_nav)) {
    is_major = parseInt(navigator.vendorSub);
    // here we need is_minor as a valid float for testing. We'll
    // revert to the actual content before printing the result. 
    is_minor = parseFloat(navigator.vendorSub);
}

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_minor >= 4);  // changed to is_minor for
                                            // consistency - dmr, 011001
var is_navonly      = (is_nav && ((agt.indexOf(";nav") != -1) ||
                        (agt.indexOf("; nav") != -1)) );

var is_nav6   = (is_nav && is_major==6);    // new 010118 mhp
var is_nav6up = (is_nav && is_minor >= 6); // new 010118 mhp

var is_nav5   = (is_nav && is_major == 5 && !is_nav6); // checked for ns6
var is_nav5up = (is_nav && is_minor >= 5);

var is_nav7   = (is_nav && is_major == 7);
var is_nav7up = (is_nav && is_minor >= 7);

var is_ie   = ((iePos!=-1) && (!is_opera) && (!is_khtml));
var is_ie3  = (is_ie && (is_major < 4));

var is_ie4   = (is_ie && is_major == 4);
var is_ie4up = (is_ie && is_minor >= 4);
var is_ie5   = (is_ie && is_major == 5);
var is_ie5up = (is_ie && is_minor >= 5);

var is_ie5_5  = (is_ie && (agt.indexOf("msie 5.5") !=-1)); // 020128 new - abk
var is_ie5_5up =(is_ie && is_minor >= 5.5);                // 020128 new - abk

var is_ie6   = (is_ie && is_major == 6);
var is_ie6up = (is_ie && is_minor >= 6);

// KNOWN BUG: On AOL4, returns false if IE3 is embedded browser
// or if this is the first browser window opened.  Thus the
// variables is_aol, is_aol3, and is_aol4 aren't 100% reliable.

var is_aol   = (agt.indexOf("aol") != -1);
var is_aol3  = (is_aol && is_ie3);
var is_aol4  = (is_aol && is_ie4);
var is_aol5  = (agt.indexOf("aol 5") != -1);
var is_aol6  = (agt.indexOf("aol 6") != -1);
var is_aol7  = ((agt.indexOf("aol 7")!=-1) || (agt.indexOf("aol7")!=-1));
var is_aol8  = ((agt.indexOf("aol 8")!=-1) || (agt.indexOf("aol8")!=-1));

var is_webtv = (agt.indexOf("webtv") != -1);

// new 020128 - abk

var is_TVNavigator = ((agt.indexOf("navio") != -1) || (agt.indexOf("navio_aoltv") != -1)); 
var is_AOLTV = is_TVNavigator;

var is_hotjava = (agt.indexOf("hotjava") != -1);
var is_hotjava3 = (is_hotjava && (is_major == 3));
var is_hotjava3up = (is_hotjava && (is_major >= 3));

// end new

// *** JAVASCRIPT VERSION CHECK ***
// Useful to workaround Nav3 bug in which Nav3
// loads <SCRIPT LANGUAGE="JavaScript1.2">.
// updated 020131 by dragle
var is_js;
if (is_nav2 || is_ie3) is_js = 1.0;
else if (is_nav3) is_js = 1.1;
else if ((is_opera5)||(is_opera6)) is_js = 1.3; // 020214 - dmr
else if (is_opera7up) is_js = 1.5; // 031010 - dmr
else if (is_khtml) is_js = 1.5;   // 030110 - dmr
else if (is_opera) is_js = 1.1;
else if ((is_nav4 && (is_minor <= 4.05)) || is_ie4) is_js = 1.2;
else if ((is_nav4 && (is_minor > 4.05)) || is_ie5) is_js = 1.3;
else if (is_nav5 && !(is_nav6)) is_js = 1.4;
else if (is_hotjava3up) is_js = 1.4; // new 020128 - abk
else if (is_nav6up) is_js = 1.5;

// NOTE: In the future, update this code when newer versions of JS
// are released. For now, we try to provide some upward compatibility
// so that future versions of Nav and IE will show they are at
// *least* JS 1.x capable. Always check for JS version compatibility
// with > or >=.

else if (is_nav && (is_major > 5)) is_js = 1.4;
else if (is_ie && (is_major > 5)) is_js = 1.3;
else if (is_moz) is_js = 1.5;
else if (is_fb||is_fx) is_js = 1.5; // 032504 - dmr

// what about ie6 and ie6up for js version? abk

// HACK: no idea for other browsers; always check for JS version 
// with > or >=
else is_js = 0.0;
// HACK FOR IE5 MAC = js vers = 1.4 (if put inside if/else jumps out at 1.3)
if ((agt.indexOf("mac")!=-1) && is_ie5up) is_js = 1.4; // 020128 - abk

// Done with is_minor testing; revert to real for N6/7
if (is_nav6up) {
    is_minor = navigator.vendorSub;
}

// *** PLATFORM ***
var is_win   = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
// NOTE: On Opera 3.0, the userAgent string includes "Windows 95/NT4" on all
//        Win32, so you can't distinguish between Win95 and WinNT.
var is_win95 = ((agt.indexOf("win95")!=-1) || (agt.indexOf("windows 95")!=-1));

// is this a 16 bit compiled version?
var is_win16 = ((agt.indexOf("win16")!=-1) ||
            (agt.indexOf("16bit")!=-1) || (agt.indexOf("windows 3.1")!=-1) ||
            (agt.indexOf("windows 16-bit")!=-1) );

var is_win31 = ((agt.indexOf("windows 3.1")!=-1) || (agt.indexOf("win16")!=-1) ||
                (agt.indexOf("windows 16-bit")!=-1));

var is_winme = ((agt.indexOf("win 9x 4.90")!=-1));    // new 020128 - abk
var is_win2k = ((agt.indexOf("windows nt 5.0")!=-1) || (agt.indexOf("windows 2000")!=-1)); // 020214 - dmr
var is_winxp = ((agt.indexOf("windows nt 5.1")!=-1) || (agt.indexOf("windows xp")!=-1)); // 020214 - dmr

// NOTE: Reliable detection of Win98 may not be possible. It appears that:
//       - On Nav 4.x and before you'll get plain "Windows" in userAgent.
//       - On Mercury client, the 32-bit version will return "Win98", but
//         the 16-bit version running on Win98 will still return "Win95".
var is_win98 = ((agt.indexOf("win98")!=-1) || (agt.indexOf("windows 98")!=-1));
var is_winnt = ((agt.indexOf("winnt")!=-1) || (agt.indexOf("windows nt")!=-1));
var is_win32 = (is_win95 || is_winnt || is_win98 ||
                ((is_major >= 4) && (navigator.platform == "Win32")) ||
                (agt.indexOf("win32")!=-1) || (agt.indexOf("32bit")!=-1));

var is_os2   = ((agt.indexOf("os/2")!=-1) ||
                (navigator.appVersion.indexOf("OS/2")!=-1) ||
                (agt.indexOf("ibm-webexplorer")!=-1));

var is_mac    = (agt.indexOf("mac")!=-1);
if (is_mac) { is_win = !is_mac; } // dmr - 06/20/2002
var is_mac68k = (is_mac && ((agt.indexOf("68k")!=-1) ||
                            (agt.indexOf("68000")!=-1)));
var is_macppc = (is_mac && ((agt.indexOf("ppc")!=-1) ||
                            (agt.indexOf("powerpc")!=-1)));

var is_sun   = (agt.indexOf("sunos")!=-1);
var is_sun4  = (agt.indexOf("sunos 4")!=-1);
var is_sun5  = (agt.indexOf("sunos 5")!=-1);
var is_suni86= (is_sun && (agt.indexOf("i86")!=-1));
var is_irix  = (agt.indexOf("irix") !=-1);    // SGI
var is_irix5 = (agt.indexOf("irix 5") !=-1);
var is_irix6 = ((agt.indexOf("irix 6") !=-1) || (agt.indexOf("irix6") !=-1));
var is_hpux  = (agt.indexOf("hp-ux")!=-1);
var is_hpux9 = (is_hpux && (agt.indexOf("09.")!=-1));
var is_hpux10= (is_hpux && (agt.indexOf("10.")!=-1));
var is_aix   = (agt.indexOf("aix") !=-1);      // IBM
var is_aix1  = (agt.indexOf("aix 1") !=-1);
var is_aix2  = (agt.indexOf("aix 2") !=-1);
var is_aix3  = (agt.indexOf("aix 3") !=-1);
var is_aix4  = (agt.indexOf("aix 4") !=-1);
var is_linux = (agt.indexOf("inux")!=-1);
var is_sco   = (agt.indexOf("sco")!=-1) || (agt.indexOf("unix_sv")!=-1);
var is_unixware = (agt.indexOf("unix_system_v")!=-1);
var is_mpras    = (agt.indexOf("ncr")!=-1);
var is_reliant  = (agt.indexOf("reliantunix")!=-1);
var is_dec   = ((agt.indexOf("dec")!=-1) || (agt.indexOf("osf1")!=-1) ||
        (agt.indexOf("dec_alpha")!=-1) || (agt.indexOf("alphaserver")!=-1) ||
        (agt.indexOf("ultrix")!=-1) || (agt.indexOf("alphastation")!=-1));
var is_sinix = (agt.indexOf("sinix")!=-1);
var is_freebsd = (agt.indexOf("freebsd")!=-1);
var is_bsd = (agt.indexOf("bsd")!=-1);
var is_unix  = ((agt.indexOf("x11")!=-1) || is_sun || is_irix || is_hpux ||
                is_sco ||is_unixware || is_mpras || is_reliant ||
                is_dec || is_sinix || is_aix || is_linux || is_bsd || is_freebsd);

var is_vms   = ((agt.indexOf("vax")!=-1) || (agt.indexOf("openvms")!=-1));
// additional checks, abk
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";
// cookies - 990624 - abk
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"; // gecko m7 bug?
// new doc obj tests 990624-abk
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";

// java
var is_java = (navigator.javaEnabled());

// Flash checking code adapted from Doc JavaScript information; 
// see http://webref.com/js/column84/2.html

var is_Flash        = false;
var is_FlashVersion = 0;

if ((is_nav||is_opera||is_moz||is_fb||is_fx)||
    (is_mac&&is_ie5up)) {
    var plugin = (navigator.mimeTypes && 
                navigator.mimeTypes["application/x-shockwave-flash"] &&
                navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin) ?
                navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin : 0;
//      if (plugin) {
    if (plugin&&plugin.description) {
        is_Flash = true;
        is_FlashVersion = parseInt(plugin.description.substring(plugin.description.indexOf(".")-1));
    }
}

if (is_win&&is_ie4up)
{
    document.write(
        '<scr' + 'ipt language=VBScript>' + '\n' +
        'Dim hasPlayer, playerversion' + '\n' +
        'hasPlayer = false' + '\n' +
        'playerversion = 10' + '\n' +
        'Do While playerversion > 0' + '\n' +
        'On Error Resume Next' + '\n' +
        'hasPlayer = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash." & playerversion)))' + '\n' +
        'If hasPlayer = true Then Exit Do' + '\n' +
        'playerversion = playerversion - 1' + '\n' +
        'Loop' + '\n' +
        'is_FlashVersion = playerversion' + '\n' +
        'is_Flash = hasPlayer' + '\n' +
        '<\/sc' + 'ript>'
    );
}


