   // client browser info
   agent = navigator.userAgent.toLowerCase();
   major = parseInt(navigator.appVersion);
   minor = parseFloat(navigator.appVersion);

   NS     = ((agent.indexOf('mozilla') != -1) && ((agent.indexOf('spoofer') == -1) && (agent.indexOf('compatible') == -1)));
   NS6    = (NS && (major >= 5));
   NS4    = (document.layers);
   IE4    = (document.all);
   ver4   = (NS4 || IE4);
   IE5    = (IE4 && navigator.appVersion.indexOf("5.")!=-1);
   isMac  = (navigator.appVersion.indexOf("Mac") != -1);
   isMenu = (NS4 || (IE4 && !isMac) || (IE5 && isMac));

   function popUp(){return};

   function popDown(){return};

   if (!ver4) event=null;


   // code used for HM menus
   function findLocation(which, col) {
      isMac       = (navigator.appVersion.indexOf("Mac") != -1);
      isNetscape  = (navigator.appName.indexOf("Netscape") != -1);
      isIE        = (navigator.appName.indexOf("Microsoft Internet Explorer") != -1);

      macNetscape = [ [20, 84],  // Netscape, drop down #1 (x, y)
                      [170, 84], // Netscape, drop down #2
                      [300, 84],  //  drop down #3
                      [18, 84],  //  drop down #4
                      [180, 84], //  drop down #5
                      [310, 84]  //  drop down #6
                    ];

      macIE       = [ [22, 84],   // IE, drop down #1
                      [172, 84],   // IE, drop down #2
                      [302, 84],  //  drop down #3
                      [20, 84],  //  drop down #4
                      [182, 84], //  drop down #5
                      [312, 84]  //  drop down #6
                    ];

      pcNetscape  = [ [20, 84],   // Netscape, drop down #1
                      [170, 84],   // Netscape, drop down #2
                      [300, 84],  //  drop down #3
                      [18, 84],  //  drop down #4
                      [180, 84], //  drop down #5
                      [310, 84]  //  drop down #6
                    ];

      pcIE        = [ [22, 84],   // IE, drop down #1
                      [172, 84],   // IE, drop down #2
                      [302, 84],  //  drop down #3
                      [20, 84],  //  drop down #4
                      [182, 84], //  drop down #5
                      [312, 84]  //  drop down #6
                    ];

      isMac ? platform = "mac" : platform = "pc";
      isNetscape ? bs = "Netscape" : bs = "IE";
      which == "x" ? pos = 0 : pos = 1;

      return  eval( (platform + bs + "[" + Number(parseInt(col)-1) + "]" + "[" + pos + "]") );
   }
   if(window.event + "" == "undefined") event = null;

   function HM_f_PopUp(){return false};

   function HM_f_PopDown(){return false};

   popUp    = HM_f_PopUp;
   popDown  = HM_f_PopDown;

   HM_PG_MenuWidth      = 141;
   HM_PG_FontFamily     = "Arial, Helvetica, sans-serif";
   HM_PG_FontSize       = 9;
   HM_PG_FontBold       = 0;
   HM_PG_FontItalic     = 0;
   HM_PG_FontColor      = "#043249";
   HM_PG_FontColorOver  = "#FFFFFF";
   HM_PG_BGColor        = "#5CBDED";
   HM_PG_BGColorOver    = "#068ACC";
   HM_PG_ItemPadding    = 3;

   HM_PG_BorderWidth    = 1;
   HM_PG_BorderColor    = "#0570A3";
   HM_PG_BorderStyle    = "solid";
   HM_PG_SeparatorSize  = 1;
   HM_PG_SeparatorColor = "#068ACC";
   HM_PG_ImageSrc       = "/images/tri.gif";
   HM_PG_ImageSrcOver   = "/images/tri.gif";

   HM_PG_ImageSize         = 5;
   HM_PG_ImageHorizSpace   = 0;
   HM_PG_ImageVertSpace    = 3;

   HM_PG_KeepHilite           = true;
   HM_PG_ClickStart           = 0;
   HM_PG_ClickKill            = false;
   HM_PG_ChildOverlap         = 10;
   HM_PG_ChildOffset          = 3;
   HM_PG_ChildPerCentOver     = null;
   HM_PG_TopSecondsVisible    = .5;
   HM_PG_StatusDisplayBuild   =1;
   HM_PG_StatusDisplayLink    = 1;
   HM_PG_UponDisplay          = null;
   HM_PG_UponHide             = null;
   HM_PG_RightToLeft          = false;

   HM_PG_CreateTopOnly  = 1;
   HM_PG_ShowLinkCursor = 1;
   HM_PG_NSFontOver     = true;


   // code for image swaps
   function MM_swapImgRestore() { //v3.0
     var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
   }

   function MM_preloadImages() { //v3.0
     var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
       var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
       if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
   }

   function MM_findObj(n, d) { //v4.0
     var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
       d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
     if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
     for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
     if(!x && document.getElementById) x=document.getElementById(n); return x;
   }

   function MM_swapImage() { //v3.0
     var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
      if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
   }

   function setValue(name, value) {
      var obj;

      obj = MM_findObj(name);
      obj.value = value;
   }

	function addEvent(object, event, method) {
	    if (object.attachEvent) {
	    	return object.attachEvent("on"+event,method);
	    }
	    else if (object.addEventListener) {
	    	object.addEventListener(event, method, false);
	    	return true;
	    }
	    else {
			eval("var oldhandler = object.on"+event+";");
			if (typeof oldhandler != 'function') {
			    eval("object.on"+event+" = method;");
			}
			else {
			    eval("object.on"+event) = function() {
				    if (oldhandler) {
				        oldhandler();
				    }
				    method();
			    }
			}
			return true;
	    }
	}

	/**
	* Shows or hides an HTML object based on its current state.
	* -ex: If currently hidden, this will display the object
	* @param {mixed} objOrObjId - either a HTML object or an object's id
	*/
	function showOrHideObject(objOrObjId)
	{
		if (typeof objOrObjId == 'string') { objOrObjId = document.getElementById(objOrObjId); }

		if (objOrObjId.style.display == 'none')
		{
			objOrObjId.style.display = '';
		}
		else
		{
			objOrObjId.style.display = 'none';
		}
	}
	
	function MM_preloadImages() { //v3.0
	  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
	    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
	    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
	}

	function MM_swapImgRestore() { //v3.0
	  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
	}

	function MM_findObj(n, d) { //v4.01
	  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
	    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
	  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
	  if(!x && d.getElementById) x=d.getElementById(n); return x;
	}

	function MM_swapImage() { //v3.0
	  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
	   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
	}
	
	function HideCurrentNav() {
        var selected = $$('#flashnav li.current').each(function(element, index) {
            element.removeClassName('current');
        });
	}
	
	function ShowCurrentNav() {
		var a = $(document.getElementsByTagName("body")[0]).classNames();
		var b = a.toString();
		var classList = new Array();
		classList = b.split(" ");

		for(var i = 0 ; i < classList.length; i++){
			if ( $(classList[i]) ){
				$(classList[i]).addClassName('current');
			}
		}
	}
	sfHover = function() {
		var sfEls = document.getElementById("cssnav").getElementsByTagName("LI");
		for (var i=0; i<sfEls.length; i++) {
			sfEls[i].onmouseover=function() {
					this.className+=" sfhover";
			}
			sfEls[i].onmouseout=function() {
				this.className = this.className.replace(new RegExp(" sfhover\\b"), "");
				this.className = this.className.replace(new RegExp("sfhover\\b"), "");
			}
		}
	}

	function changeOpacity(){
		var bg = document.getElementById("navback");
		if(/MSIE/.test(navigator.userAgent) && !window.opera){
    			Element.setStyle(bg, { filter: Element.getStyle(bg,'filter').replace(/alpha\([^\)]*\)/gi,'') + 'alpha(opacity=0)' });
		}
		bg.style.opacity = '0.0';
		setTimeout("swapPicture()", 50);
	}

	function swapPicture(){
 			if (curImage <= numImages){
 				if (document.images){
   				var nextImage=curImage+1;
   				if (dimages[nextImage] && dimages[nextImage].complete){
     					var target=0;
     					var target_text=0;
     					if (document.images.navback  && document.images.navtext){
       					target=document.images.navback;
       					target_text=document.images.navtext;
       				}
     					if (document.all && document.getElementById("navback")){
       					target=document.getElementById("navback");
       					target_text=document.getElementById("navtext");
 						}
     					// make sure target is valid.  It might not be valid
     					//   if the page has not finished loading
     					if (target){
     						new Effect.Opacity('navback', {duration:3, from:0, to:1.0 });
       					target.src=dimages[nextImage].src;
       					target_text.src=dtext[nextImage].src;
       					curImage=nextImage;
     					}
     					if( curImage < numImages-1 ){
     						setTimeout("changeOpacity()", 5000);
     					}
   				}
   				else{
     					setTimeout("swapPicture()", 500);
   				}
 				}
 			}
	}