
			// Shows element "elementName"
			function showElement(elementName) {
				if ( document.getElementById(elementName) ) 
						document.getElementById(elementName).style.display = "block";
			}
		
			// Hides element "elementName"
			function hideElement(elementName) {
				if ( document.getElementById(elementName) ) 
						document.getElementById(elementName).style.display = "none";
			}
			
			// Hides element "elementName" unless mouse is currently in element "unlessName"
			function hideElementUnless(event, elementName, unlessName, borderGrace) {
				if ( document.getElementById(elementName) && document.getElementById(unlessName) ) 
					if ( !isMouseInElement(event, unlessName, borderGrace) ) {
						document.getElementById(elementName).style.display = "none";
					}
			}
			
			// Hides an element only if mouse has exited from the area on the screen enclosed by it.
			// This protects against close upon exit into an internal div.
			function hideElementIfOutOfExternalBorders(event, elementName, borderGraceX, borderGraceY ) {
			
				if ( document.getElementById(elementName) )
					if ( !isMouseInElement(event, elementName, borderGraceX, borderGraceY) ) {
						document.getElementById(elementName).style.display = "none";
					}
			}
			
			// Changes the position of a div by changing the top & left style attributes.
			function changeTopLeft(elementName, newTop, newLeft) {
				if ( document.getElementById(elementName) ) {
					document.getElementById(elementName).style.top = newTop;
					document.getElementById(elementName).style.left = newLeft;
				}
			}
			
			// Determines which is the currently active browser
			function whichBrowser() {
				var ua, s, i;
				
				this.isIE    = false;
				this.isNS    = false;
				this.version = null;
				
				ua = navigator.userAgent;
				
				s = "MSIE";
				if ((i = ua.indexOf(s)) >= 0) {
				  this.isIE = true;
				  this.version = parseFloat(ua.substr(i + s.length));
				  return;
				}
				
				s = "Netscape6/";
				if ((i = ua.indexOf(s)) >= 0) {
				  this.isNS = true;
				  this.version = parseFloat(ua.substr(i + s.length));
				  return;
				}
				
				s = "Gecko";
				if ((i = ua.indexOf(s)) >= 0) {
				  this.isNS = true;
				  this.version = 6.1;
				  return;
				}
			}
			
			/* Determines whether the mouse is currently in element "elementName".
			Border grace exten?s or contracts the border by the specified amount. */
			function isMouseInElement(event, elementName, borderGraceX, borderGraceY) {
				
				var browser =  new whichBrowser();
				
				var TLx = rootPos(document.getElementById(elementName), "#document", "left" ); // document.getElementById(elementName).offsetLeft;
				var TLy = rootPos(document.getElementById(elementName), "#document", "top" ); // document.getElementById(elementName).offsetTop;
				var TRx = rootPos(document.getElementById(elementName), "#document", "right" ); // document.getElementById(elementName).offsetLeft + document.getElementById(elementName).offsetWidth;
				var TRy = rootPos(document.getElementById(elementName), "#document", "top" ); // document.getElementById(elementName).offsetTop;
				
				var BLx = rootPos(document.getElementById(elementName), "#document", "left" ); // document.getElementById(elementName).offsetLeft;
				var BLy = rootPos(document.getElementById(elementName), "#document", "bottom" ); // document.getElementById(elementName).offsetTop + document.getElementById(elementName).offsetHeight;
				var BRx = rootPos(document.getElementById(elementName), "#document", "right" ); // document.getElementById(elementName).offsetLeft + document.getElementById(elementName).offsetWidth;
				var BRy = rootPos(document.getElementById(elementName), "#document", "bottom" ); // document.getElementById(elementName).offsetTop + document.getElementById(elementName).offsetHeight;
				
				var dL;
				var dT;

				if (browser.isIE) {
					dL = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
					dT = window.event.clientY + document.documentElement.scrollTop + document.body.scrollTop;
				}
				 
				if (browser.isNS) {
					dL = event.clientX + window.scrollX;
					dT = event.clientY + window.scrollY;
				}
				
				if ( (dL>TLx-borderGraceX) && (dL<TRx-(borderGraceX + 20)) && (dT>=TLy) && (dT<BLy) ) {
					return true;
				}
				else {
					return false;
				}
			}
			
			// Pass actual element, id of top-level reference, and "top", "left", "bottom", or "right" and this little baby will return
			// positional info of the element with regards to myroot, which defaults to document.
			function rootPos(elem, myroot, pos) {
	      	var myroot = myroot || "#document";
	    		if (elem == null) return false;
	    		var rootT=elem.offsetTop, 
	    			 rootL=elem.offsetLeft, 
	    			 rootB=elem.offsetHeight, 
	    			 rootR=elem.offsetWidth;
	    		var elemP = elem.parentNode;
	    		var mynode = elemP.nodeName;
	    		
	    		while (mynode!=myroot) {
	        		rootT += elemP.offsetTop;
	        		rootL += elemP.offsetLeft;
	        		
	        		elemP = elemP.parentNode;
	        		mynode = elemP.nodeName;
	    		}
	    		
	    		rootB += rootT;
	    		rootR += rootL;
	    		
	    		switch(pos)
				{
					case "top":
  						return rootT;
  						break;
					case "left":
  						return rootL;
  						break;
  					case "bottom":
  						return rootB;
  						break;
  					case "right":
  						return rootR;
  						break;
					default:
  						return("error");
				}
			}		
			
