
<!--

var HitNav = {};

HitNav.NullHitIdx = -1;
HitNav.CurrHitIdx = HitNav.NullHitIdx;

HitNav.HitCache = new Array();
HitNav.HitCache.FirstHitIdx = 0;
HitNav.HitCache.LastHitIdx  = 0;

HitNav.HitLimit = 500; // performance tuning

// wraps the span obj(s) in collection
HitNav.HitWrapper =
	function() {
		this.SetClassName =
			function( className ) {
				for ( var n = 0; n < spanelems.length; n++ ) {
					// setAttribute is buggy in Moz
					spanelems[n].className = className;
				}
			};
			
		this.GetHitIdx =
			function() {			
				if ( spanelems.length > 0 ) {
					return parseInt( spanelems[0].id.match(/\d+/g) );
				}
				return -1;
			};
			
		this.AddHit = 
			function ( spanelem ) {
				spanelems.push( spanelem );
			};
			
		this.GetYPos =
			function() {
				if ( spanelems.length > 0 ) {
					return Common.GetYPos( spanelems[0] )
				}
				return 0;
			};
		//private
		var spanelems = new Array();
	};

HitNav.HitCache.Init =
	function() {
		if ( this.length == 0 ) {
			var spanElems = document.getElementsByTagName("SPAN");
			for ( var n = 0; n < spanElems.length && n <= HitNav.HitLimit; n++ ) {
				var currObj = spanElems[n];
				if ( currObj.id && currObj.id.indexOf("hitDiv") > HitNav.NullHitIdx ) {
					var currhw = new HitNav.HitWrapper();
					currhw.AddHit( currObj );
					var prevhw = this[this.length-1];
					if ( prevhw && currhw.GetHitIdx() == prevhw.GetHitIdx() ) {						
						prevhw.AddHit( currObj );
						this[this.length-1] = prevhw;
					}
					else {
						this.push( currhw );
					}
				}
			}
			this.LastHitIdx = this.length - 1;
			// disable this feature if the doc is too large
			if ( this.LastHitIdx >= HitNav.HitLimit ) {
				HitNav.UI.Disable();
			}
		}
	};
	
HitNav.GoToFirstHit =
	function() {	
		if ( HitNav.CurrHitIdx != HitNav.HitCache.FirstHitIdx ) {
			HitNav.UI.HiLiteHit( HitNav.HitCache.FirstHitIdx );
		}
		HitNav.UI.ResetPosition();
		HitNav.UI.UpdateDocCtr();
		HitNav.UI.UpdateNavBtns();			
	};

HitNav.GoToLastHit =
	function() {	
		if ( HitNav.CurrHitIdx != HitNav.HitCache.LastHitIdx ) {
			HitNav.UI.HiLiteHit( HitNav.HitCache.LastHitIdx );
		}
		HitNav.UI.ResetPosition();
		HitNav.UI.UpdateDocCtr();	
		HitNav.UI.UpdateNavBtns();				
	};
	
HitNav.GoToPrevHit =
	function() {
		if ( HitNav.CurrHitIdx == HitNav.NullHitIdx ) {
			HitNav.GoToFirstHit();
			return;
		}
		// get prev hit
		var prevHitIdx = HitNav.CurrHitIdx - 1;
		if ( prevHitIdx >= 0 ) {
			HitNav.UI.HiLiteHit( prevHitIdx );
		}	
		HitNav.UI.ResetPosition();
		HitNav.UI.UpdateDocCtr();	
		HitNav.UI.UpdateNavBtns();				
	};
	
HitNav.GoToNextHit =
	function() {
		if ( HitNav.CurrHitIdx == HitNav.NullHitIdx ) {
			HitNav.GoToFirstHit();
			return;
		}
		// get next hit
		var nextHitIdx = HitNav.CurrHitIdx + 1;
		if ( nextHitIdx < HitNav.HitCache.length && nextHitIdx >= 0 ) {
			HitNav.UI.HiLiteHit( nextHitIdx );
		}			
		HitNav.UI.ResetPosition();
		HitNav.UI.UpdateDocCtr();	
		HitNav.UI.UpdateNavBtns();	
	};

// begin HitNav.UI namespace
HitNav.UI = {};
HitNav.UI.NavObj = null;
HitNav.UI.DocCtr = null;
HitNav.UI.FirstHitBtn = null;
HitNav.UI.LastHitBtn = null;
HitNav.UI.PrevHitBtn = null;
HitNav.UI.NextHitBtn = null;
HitNav.UI.HiLiteColor = "yellow";
HitNav.UI.HitLinePadd = "20";

// namespace for arrow images
HitNav.UI.NavImgs = {};
HitNav.UI.NavImgs.FirstHit = document.createElement("img");
HitNav.UI.NavImgs.FirstHitDis = document.createElement("img");
HitNav.UI.NavImgs.PrevHit = document.createElement("img");
HitNav.UI.NavImgs.PrevHitDis = document.createElement("img");
HitNav.UI.NavImgs.NextHit = document.createElement("img");
HitNav.UI.NavImgs.NextHitDis = document.createElement("img");
HitNav.UI.NavImgs.LastHit = document.createElement("img");
HitNav.UI.NavImgs.LastHitDis = document.createElement("img");


// called before page load
HitNav.UI.PreCacheImgs =
	function() {
		with ( HitNav.UI.NavImgs ) {
			FirstHit.src = "images/xx/ButArrowBckToFrst.gif";
			FirstHitDis.src = "images/xx/ButArrowBckToFrstGryd.gif";
			PrevHit.src =  "images/xx/ButArrowBck.gif";
			PrevHitDis.src =  "images/xx/ButArrowBckGryd.gif";
			NextHit.src =  "images/xx/ButArrowFwd.gif";
			NextHitDis.src =  "images/xx/ButArrowFwdGryd.gif";
			LastHit.src =  "images/xx/ButArrowFwdToLst.gif";
			LastHitDis.src =  "images/xx/ButArrowFwdToLstGryd.gif";
		}
	};
		
HitNav.UI.Disable =
	function() {
		// clear all hits
		HitNav.HitCache.Init();
		for ( var n = 0; n <= HitNav.HitCache.LastHitIdx; n++ ) {
			HitNav.UI.UnHiLiteHit( n );
		}
		// hide user control				
		Common.HideObject( HitNav.UI.NavObj );
		Common.HideObject("LNPHitNav");
	};

// fade nav to help with screen flicker
HitNav.UI.ShowNav =
	
	function() {
      	//HitNav.UI.NavObj.filters.blendTrans.apply();
      	Common.ShowObject( HitNav.UI.NavObj );
      	//HitNav.UI.NavObj.filters.blendTrans.play();
	};
	
HitNav.UI.HiLiteHit = 
	function( hitIdx ) {
		var obj = HitNav.HitCache[hitIdx];
		if ( !obj ) {
			return;
		}
		obj.SetClassName("hitText");

		if ( HitNav.CurrHitIdx != hitIdx ) {
			HitNav.UI.UnHiLiteHit( HitNav.CurrHitIdx );
			HitNav.CurrHitIdx = hitIdx;
		}
		var ypos = obj.GetYPos();
		if ( ypos > HitNav.UI.HitLinePadd ) {
			ypos -= HitNav.UI.HitLinePadd;
		}
		document.body.scrollTop = ypos;
	};
	
HitNav.UI.UnHiLiteHit =
	function( hitIdx ) {
		var obj = HitNav.HitCache[hitIdx];
		if ( obj != null ) {
			obj.SetClassName( "undefined" );
		}
	};
	
HitNav.UI.ResetPosition =	
	function() {
		HitNav.UI.NavObj.style.top = 
			document.body.scrollTop + 
			document.body.clientHeight - parseInt(HitNav.UI.NavObj.offsetHeight);
	};

HitNav.UI.ScrollHndlr =
	function() {
		HitNav.UI.ResetPosition();
		var scrollPos = document.body.scrollTop;
		var scrollTmr = 0;
		var scrollHndlr = 
			function() {
				if ( scrollPos == document.body.scrollTop ){
					window.clearInterval( scrollTmr );				
					HitNav.UI.ResetPosition();					
					HitNav.UI.ShowNav();
					HitNav.UI.ResetPosition();
				}
				else if ( scrollPos != document.body.scrollTop ){					
					Common.HideObject( HitNav.UI.NavObj );
					scrollPos = document.body.scrollTop;
				}
			};
		scrollTmr = window.setInterval( scrollHndlr, 30 ); 
	};

HitNav.UI.UpdateDocCtr =
	function() {
		if ( HitNav.UI.DocCtr != null ) {
			var docStr = "Hits: ";
			if ( HitNav.CurrHitIdx != HitNav.NullHitIdx ) {
				docStr += (HitNav.CurrHitIdx + 1) + " of ";
			}
			docStr += (HitNav.HitCache.LastHitIdx + 1);
			// ie
			HitNav.UI.DocCtr.innerText = docStr;
			// moz
			HitNav.UI.DocCtr.textContent = docStr;			
		}
	};

HitNav.UI.UpdateNavBtns =
	function() {
		switch( HitNav.CurrHitIdx ) {
			case HitNav.NullHitIdx:
				HitNav.UI.DisableNavLink ( HitNav.UI.FirstHitBtn );
				HitNav.UI.EnableNavLink ( HitNav.UI.LastHitBtn );
				HitNav.UI.EnableNavLink ( HitNav.UI.NextHitBtn );
				HitNav.UI.DisableNavLink ( HitNav.UI.PrevHitBtn );			
			break;
			case HitNav.HitCache.FirstHitIdx :
				HitNav.UI.DisableNavLink ( HitNav.UI.FirstHitBtn );
				HitNav.UI.EnableNavLink ( HitNav.UI.LastHitBtn );
				HitNav.UI.EnableNavLink ( HitNav.UI.NextHitBtn );
				HitNav.UI.DisableNavLink ( HitNav.UI.PrevHitBtn );			
			break;			
			case HitNav.HitCache.LastHitIdx :
				HitNav.UI.EnableNavLink ( HitNav.UI.FirstHitBtn );
				HitNav.UI.DisableNavLink ( HitNav.UI.LastHitBtn );
				HitNav.UI.DisableNavLink ( HitNav.UI.NextHitBtn );
				HitNav.UI.EnableNavLink ( HitNav.UI.PrevHitBtn );
			break;			
			default:				
				HitNav.UI.EnableNavLink ( HitNav.UI.FirstHitBtn );
				HitNav.UI.EnableNavLink ( HitNav.UI.LastHitBtn );
				HitNav.UI.EnableNavLink ( HitNav.UI.NextHitBtn );
				HitNav.UI.EnableNavLink ( HitNav.UI.PrevHitBtn );									
			break;
		};
	};
	
HitNav.UI.CreateNavLink =
	function( imgObj, imgObjDis, clickHndlr, imgAlt ) {
		var navLink = document.createElement("a");
		
		navLink.style.styleFloat = "right";
		navLink.style.cssFloat = "right"; // moz	
		navLink.style.margin = "2px";
		navLink.href = "javascript:void(0)";
		navLink.onclick = clickHndlr;
		navLink.title = imgAlt;
				
		imgObj.border = "0";
		imgObj.alt = imgAlt;
		imgObjDis.border = "0";
		Common.HideObject( imgObjDis );
		navLink.appendChild( imgObj );
		navLink.appendChild( imgObjDis );	
		
		return navLink;		
	};

HitNav.UI.SizeHitNavbar =
	function() {

		var currStyle = document.body.currentStyle;
		if ( currStyle != null && (document.body.offsetWidth > 0) ) { //IE + iframe fix
			HitNav.UI.NavObj.style.width = document.body.offsetWidth - 20;
/* worthicb : commented-out so Navbar will go all the way to right edge in IE (webteam 63329)
			if ( currStyle.marginLeft && currStyle.marginRight ) {
				var marginInt = parseInt( document.body.currentStyle.marginLeft.match("\\d+") );
				var marginUnit = document.body.currentStyle.marginLeft.match("\\D+");
				if ( marginInt != NaN ) {
					HitNav.UI.NavObj.style.marginLeft = (marginInt - (marginInt * 2)) + marginUnit;
				}
				marginInt = parseInt( document.body.currentStyle.marginRight.match("\\d+") );
				marginUnit = document.body.currentStyle.marginRight.match("\\D+");
				if ( marginInt != NaN ) {
					HitNav.UI.NavObj.style.marginRight = (marginInt - (marginInt * 2)) + marginUnit;
				}				
			}		
*/
		}	
	};

// swap enable img with disabled img
// firefox makes us set the link title
HitNav.UI.DisableNavLink =
	function( navLink ) {
		if ( navLink.disabled != true ) {
			var enbImg = navLink.firstChild;
			var disImg = navLink.lastChild;		
			Common.HideObject( enbImg );
			Common.ShowObject( disImg );
			navLink.title = "";	//ff only		
			navLink.disabled = true;
		}
	};

HitNav.UI.EnableNavLink =
	function( navLink ) {
		if ( navLink.disabled == true ) {	
			var enbImg = navLink.firstChild;
			var disImg = navLink.lastChild;
			Common.ShowObject( enbImg );
			Common.HideObject( disImg );
			navLink.title = enbImg.alt; //ff only
			navLink.disabled = false;			
		}
	};
		
HitNav.Init = 
	function () {
			
		// add markup elements to the display
		var hitNav = document.createElement("div");
		hitNav.id = "LNPHitNav";
		hitNav.style.font = "bold 8pt Verdana";
		hitNav.style.border = "1px solid black";
		hitNav.style.backgroundColor = "#E2E2E2";
		hitNav.style.position = "absolute";
		hitNav.style.left = "0";
		hitNav.style.height = "20px";
		hitNav.className = "noprint";
		
		var firstHitLink = 
			HitNav.UI.CreateNavLink( HitNav.UI.NavImgs.FirstHit,
									 HitNav.UI.NavImgs.FirstHitDis,
									 HitNav.GoToFirstHit,
									 "View first hit" );

		var prevHitLink = 
			HitNav.UI.CreateNavLink( HitNav.UI.NavImgs.PrevHit, 
									 HitNav.UI.NavImgs.PrevHitDis, 
									 HitNav.GoToPrevHit,
									 "View previous hit" );
		var nextHitLink = 
			HitNav.UI.CreateNavLink( HitNav.UI.NavImgs.NextHit, 
									 HitNav.UI.NavImgs.NextHitDis, 
									 HitNav.GoToNextHit,
									 "View next hit" );
		var lastHitLink = 
			HitNav.UI.CreateNavLink( HitNav.UI.NavImgs.LastHit, 
						   			 HitNav.UI.NavImgs.LastHitDis,
									 HitNav.GoToLastHit,
									 "View last hit" );
		
		var docCtr = document.createElement("div");
		docCtr.style.styleFloat = "right";
		docCtr.style.cssFloat = "right";
		docCtr.style.margin = "2px 5px 2px 5px";
		docCtr.style.width = "auto";
		docCtr.style.textAlign = "center";

		hitNav.appendChild( lastHitLink );
		hitNav.appendChild( nextHitLink );
		hitNav.appendChild( docCtr );
		hitNav.appendChild( prevHitLink );				
		hitNav.appendChild( firstHitLink );

		document.body.appendChild( hitNav );	
		
		HitNav.UI.NavObj = hitNav;
		HitNav.UI.DocCtr = docCtr;
		HitNav.UI.FirstHitBtn = firstHitLink;
		HitNav.UI.LastHitBtn = lastHitLink;
		HitNav.UI.NextHitBtn = nextHitLink;
		HitNav.UI.PrevHitBtn = prevHitLink;

		HitNav.HitCache.Init();
		
		HitNav.UI.SizeHitNavbar();					
		HitNav.UI.ResetPosition();	
		HitNav.UI.UpdateDocCtr();
		HitNav.UI.UpdateNavBtns();
		
		// add event handlers
		Common.AddEventHndlr( window, "onscroll", HitNav.UI.ScrollHndlr );//IE
		Common.AddEventHndlr( window, "scroll", HitNav.UI.ScrollHndlr );  //Moz		
		Common.AddEventHndlr( window, "onresize", HitNav.UI.SizeHitNavbar );//IE
		Common.AddEventHndlr( window, "resize", HitNav.UI.SizeHitNavbar );  //Moz				
		Common.AddEventHndlr( window, "onresize", HitNav.UI.ResetPosition );//IE
		Common.AddEventHndlr( window, "resize", HitNav.UI.ResetPosition );  //Moz	
		// Moz only -- certain scroll events aren't detected due to mozilla bug #189308
		// https://bugzilla.mozilla.org/show_bug.cgi?id=189308
		if ( window.addEventListener ) {
			Common.AddEventHndlr( window, "DOMMouseScroll", HitNav.UI.ScrollHndlr );
			Common.AddEventHndlr( window, "keypress", HitNav.UI.ScrollHndlr );
		}
					
		
	};	
	
HitNav.UI.PreCacheImgs();
	
-->	