     // convert all characters to lowercase to simplify testing
    var agt=navigator.userAgent.toLowerCase();

// ====================== start browser sniffer ======================
	var agt=navigator.userAgent.toLowerCase();
	var is_major = parseInt(navigator.appVersion);
	var is_minor = parseFloat(navigator.appVersion);
	var is_nav  = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
			&& (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
			&& (agt.indexOf('webtv')==-1));
	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 && ((agt.indexOf(";nav") != -1) || (agt.indexOf("; nav") != -1)) );
	var is_nav5 = (is_nav && (is_major == 5));
	var is_nav5up = (is_nav && (is_major >= 5));
    var is_ie     = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
    var is_ie3    = (is_ie && (is_major < 4));
    var is_ie4    = (is_ie && (is_major == 4) && (agt.indexOf("msie 4")!=-1) );
    var is_ie4up  = (is_ie  && (is_major >= 4));
    var is_ie5    = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0")!=-1) );
    var is_ie5_5  = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.5") !=-1));
    var is_ie5up  = (is_ie  && !is_ie3 && !is_ie4);
    var is_ie5_5up =(is_ie && !is_ie3 && !is_ie4 && !is_ie5);
    var is_ie6    = (is_ie && (is_major == 4) && (agt.indexOf("msie 6.")!=-1) );
    var is_ie6up  = (is_ie  && !is_ie3 && !is_ie4 && !is_ie5 && !is_ie5_5);
	var is_win   = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
	var is_mac    = (agt.indexOf("mac")!=-1);

	// list higher versions first else statement returns true too soon and writes wrong stylesheet

// mac nav
	if (is_nav5up && is_mac) {
		document.write('<link rel="Stylesheet" rev="Stylesheet" href="-styles_mac_nav6.css" type="text/css">');
	}
	else if (is_nav4up && is_mac) {
		document.write('<link rel="Stylesheet" rev="Stylesheet" href="-styles_mac_nav.css" type="text/css">');
	}
// mac ie
	else if (is_ie && is_mac) {
		document.write('<link rel="Stylesheet" rev="Stylesheet" href="-styles_mac_ie.css" type="text/css">');
	}
// win nav
	else if (is_nav5up && is_win) {
		document.write('<link rel="Stylesheet" rev="Stylesheet" href="-styles_pc_nav6.css" type="text/css">');
	}
	else if (is_nav4up && is_win){
		document.write('<link rel="Stylesheet" rev="Stylesheet" href="-styles_pc_nav.css" type="text/css">');
	}
// win ie
	else if (is_ie6 && is_win){
		document.write('<link rel="Stylesheet" rev="Stylesheet" href="-styles_pc_ie6.css" type="text/css">');
	}
	else if (is_ie5 || is_ie5up || is_ie5_5 || is_ie5_5up && is_win){
		document.write('<link rel="Stylesheet" rev="Stylesheet" href="-styles_pc_ie5.css" type="text/css">');
	}
	else { // everyone else gets ie 5 css
		document.write('<link rel="Stylesheet" rev="Stylesheet" href="-styles_pc_ie5.css" type="text/css">');
	}
// ====================== stop browser sniffer ======================
    
// ====================== start nn css resize bug fix ======================
	function nnCssFix() {
	  if (document.newWinObj.nnCssFix.initWindowWidth != window.innerWidth || document.newWinObj.nnCssFix.initWindowHeight != window.innerHeight) {
	    document.location = document.location;
	  }
	}
	function nnCssFixCheckIn() {
	  if ((navigator.appName == 'Netscape') && (parseInt(navigator.appVersion) == 4)) {
	    if (typeof document.newWinObj == 'undefined'){
	      document.newWinObj = new Object;
	    }
	    if (typeof document.newWinObj.scaleFont == 'undefined') {
	      document.newWinObj.nnCssFix = new Object;
	      document.newWinObj.nnCssFix.initWindowWidth = window.innerWidth;
	      document.newWinObj.nnCssFix.initWindowHeight = window.innerHeight;
	    }
	    window.onresize = nnCssFix;
	  }
	}
	nnCssFixCheckIn()
// ====================== stop nn css resize bug fix ======================

// ====================== preloads  ======================
var preloadFlag = false;
function newImage(arg) {
	if (document.images) {
		rslt = new Image();
		rslt.src = arg;
		return rslt;
	}
}
function preload_images() {
	if (document.images) {

//navigation images
		nav_about_over			= newImage('images/nav_about_over.gif');
		nav_bibio_over 			= newImage('images/nav_biblio_over.gif');
		nav_contact_over 		= newImage('images/nav_contact_over.gif');
		nav_about_on			= newImage('images/nav_about_on.gif');
		nav_bibio_on 			= newImage('images/nav_biblio_on.gif');
		nav_contact_on	 		= newImage('images/nav_contact_on.gif');


		preloadFlag = true;
	}
}


// ====================== nav rollovers ======================
var NavNames		= ['','Nav01','Nav02','Nav03'];
var NavImages 		= ['','about','biblio','contact'];
var NavStates 		= ['off','over','on'];

function NavSwap(thisImg,thisState) {
		document[NavNames[thisImg]].src = 'images/nav'+'_'+NavImages[thisImg]+'_'+NavStates[thisState]+'.gif';
}	


// ====================== new window for bibliographies ===============
function newWindow(b_url) {
        	biblioWin = window.open(b_url, 'bibliography', 'toolbar=yes,resizable=yes,width=600,height=500,scrollbars=yes')
        	biblioWin.focus()
        }
