			
			function findPosX(obj){
				var curleft = 0;
				if(obj){
					if (obj.offsetParent)
					{
						while (obj.offsetParent)
						{
							curleft += obj.offsetLeft
							obj = obj.offsetParent;
						}
					}
					else if (obj.x)
						curleft += obj.x;
					return curleft;
				}
			}
			
			function findPosY(obj){
				var curtop = 0;
				if(obj){
					if (obj.offsetParent)
					{
						while (obj.offsetParent)
						{
							curtop += obj.offsetTop;
							obj = obj.offsetParent;
						}
					}
					else if (obj.y)
						curtop += obj.y;
					return curtop;
				}
			}
		/*************************************************************************
		  This code is from Dynamic Web Coding at http://www.dyn-web.com/
		  Copyright 2003 by Sharon Paine 
		  See Terms of Use at http://www.dyn-web.com/bus/terms.html
		  regarding conditions under which you may use this code.
		  This notice must be retained in the code as is!
		*************************************************************************/

		var navLayers = {
		  timer: null,
		  activeMenuID: null,

		  offX: 20, // horizontal offset 
		  offY: -5, // vertical offset 
		  show: function(id, actuatorId, e) {
		    var mnu = document.getElementById? document.getElementById(id): null;
		    if (!mnu) return;
		    this.activeMenuID = id;
		    if ( mnu.onmouseout == null ) mnu.onmouseout = this.mouseoutCheck;
		    if ( mnu.onmouseover == null ) mnu.onmouseover = this.clearTimer;
		    //viewport.getAll();
		    this.position(mnu,actuatorId,e);
			//this.timer = setTimeout("document.getElementById('" + navLayers.activeMenuID + "').style.visibility = 'visible'", 200);
		  },

		  hide: function() {
		    this.clearTimer();
		    if (this.activeMenuID && document.getElementById) 
		      this.timer = setTimeout("document.getElementById('"+navLayers.activeMenuID+"').style.visibility = 'hidden'", 200);
		  },

		  position: function(mnu, actuatorId, e) {
		    //var ex = e.pageX? e.pageX: e.clientX + viewport.scrollX;
		    //var ey = e.pageY? e.pageY: e.clientY + viewport.scrollY;

    		var actuator = document.getElementById(actuatorId);
			var x = findPosX(actuator);
		    var y = findPosY(actuator) + actuator.offsetHeight;

			//tracer_debugTool(x + "\n" + y);

		    //if ( x + mnu.offsetWidth + this.offX > viewport.width + viewport.scrollX )
		    //  x = x - mnu.offsetWidth - this.offX;
		    //else x = x + this.offX;
			
		    x = x + this.offX;

		    //if ( y + mnu.offsetHeight + this.offY > viewport.height + viewport.scrollY )
		    //  y = ( y - mnu.offsetHeight - this.offY > viewport.scrollY )? y - mnu.offsetHeight - this.offY : viewport.height + viewport.scrollY - mnu.offsetHeight;
		    //else y = y + this.offY;

		    y = y + this.offY;
            
			// *** SSK 20070118 *** //
			// kludge fix for offset of the mainwide div //
			
			var lX = findPosX(document.getElementById("page_content_pp"))
			var lY = findPosY(document.getElementById("page_content_pp"))
			
			if(lX){
				x -= lX;
				y -= lY;
			}
			// **** END KLUDGE ;) ***** //

		    mnu.style.left = x + "px"; mnu.style.top = y + "px";
		    this.timer = setTimeout("document.getElementById('" + navLayers.activeMenuID + "').style.visibility = 'visible'", 200);
		  },

		  mouseoutCheck: function(e) {
		    e = e? e: window.event;
		    // is element moused into contained by menu? or is it menu (ul or li or a to menu div)?
		    var mnu = document.getElementById(navLayers.activeMenuID);
		    var toEl = e.relatedTarget? e.relatedTarget: e.toElement;
		    if ( mnu != toEl && !navLayers.contained(toEl, mnu) ) navLayers.hide();
		  },

		  // returns true of oNode is contained by oCont (container)
		  
		  contained: function(oNode, oCont){
		    if (!oNode) return null; // in case alt-tab away while hovering (prevent error)
			// SSK changed while ( oNode = oNode.parentNode ) //
		    while ( oNode == oNode.parentNode ) 
		      if ( oNode == oCont )return true;
			  return false;
			
		  },
			
		  clearTimer: function() {
		    if (navLayers.timer) clearTimeout(navLayers.timer);
		  }

		}

		
