var versionOK = (parseInt(navigator.appVersion) >= 4);
var ns4 = false;
var menuReady = false;
var layerIndex;
var horizontaladjustment = -4;
var verticaladjustment = 0;
var delay = 50;
function setUp()
  {
	if (!versionOK)
		return;
  if(document.layers)
		{
    ns4 = true;
    for(document.all=document.layers,x=0;x<document.all.length;x++)
      document.all[x].style=document.all[x];
		}
  if(!document.all)
    {
   	if(document.getElementsByTagName)
			{
			document.all=document.getElementsByTagName("div");
			}
    }
  for(x=0;x<layerIndex.length;x++)
		{
		var menuname = layerIndex[x];
		var element = document.all[menuname];
    element.layerid = menuname;
    element.style.held = 0;
    element.style.shown = 0;
    element.style.entered = 0;
		element.onmouseover = new Function("", "enter(this)");
		element.onmouseout  = new Function("", "leave(this)");
		}
	menuReady = true;
  }
function show(obj, layerid, nspos)
  {
	if (!menuReady)
		return;
	var element = document.all[layerid];
  if(element)
		{
		element.style.shown = 1;
    element.style.left = findX(obj)+horizontaladjustment;
    if (ns4)
      element.style.top = findY(obj) + nspos;
    else
      element.style.top = findY(obj) + obj.offsetHeight + verticaladjustment;
	  element.style.visibility='visible';
		}
  }
function showRight(obj, layerid, nspos)
  {
	if (!menuReady)
		return;
	var element = document.all[layerid];
  if(element)
		{
		element.style.shown = 1;
    if (ns4)
      element.style.left = findX(obj) + nspos;
    else
      element.style.left = findX(obj) + obj.offsetWidth;
    element.style.top = findY(obj);
	  element.style.visibility='visible';
		}
  }
function hide(layerid)
  {
	if (!menuReady)
		return;
//java.lang.System.out.println('hide-');
	document.all[layerid].style.shown = 0;
	var inst = "hideNow('" + layerid + "')";
  setTimeout(inst, delay);
  }
function hideNow(layerid)
  {
	var element = document.all[layerid];
//java.lang.System.out.println('hideNow- entered=' + element.style.entered + ' shown=' + element.style.shown);
	if ((element.style.entered == 0 || typeof element.style.entered == 'undefined') && element.style.shown == 0)
	 	element.style.visibility='hidden';
  }
function enter(element)
  {
//java.lang.System.out.println('enter- element=' + element.layerid);
	element.style.entered = 1;
  }
function leave(element)
  {
//java.lang.System.out.println('leave- element=' + element.layerid);
	element.style.entered = 0;
	var inst = "hideAfterLeave('" + element.layerid + "')";
  setTimeout(inst, delay);
  }
function hideAfterLeave(layerid)
  {
	var element = document.all[layerid];
//java.lang.System.out.println('hideAfterLeave- element=' + element.layerid + ' shown=' + element.style.shown + ' entered=' + element.style.entered);
	if (element.style.shown == 0 && element.style.entered == 0)
		{
	 	element.style.visibility='hidden';
		}
  }
function findX(obj)
  {
  if (typeof obj.offsetLeft != 'undefined')
    {
    if (obj.offsetParent)
      return (obj.offsetLeft + findX(obj.offsetParent));
    else
      return obj.offsetLeft;
    }
  else
    if (typeof obj.x != 'undefined')
      return obj.x;
    else
      return 20;
  }
function findY(obj)
  {
  var yOffset, theParent;
  if (typeof obj.offsetTop != 'undefined')
    {
    yOffset = obj.offsetTop;
    theParent = obj.offsetParent;
    while (theParent)
      {
      yOffset += theParent.offsetTop;
      theParent = theParent.offsetParent;
      }
    return yOffset;
    }
  else
    if (typeof obj.y != 'undefined')
      return obj.y;
    else
      return 200;
  }
function showWin()
  {
  var w = window.open('','popup',
      'width=500,height=400,resizable,scrollbars,status,left=80,top=80');
  w.document.clear();
  w.focus();
  return true;
  }
addDOMLoadEvent = (function()
	{
	// create event function stack
	var load_events = [],
		load_timer,
		script,
		done,
		exec,
		old_onload,
		init = function ()
			{
			done = true;
			// kill the timer
			clearInterval(load_timer);
			// execute each function in the stack in the order they were added
			while (exec = load_events.shift())
				exec();
			if (script)
				script.onreadystatechange = '';
			};
	return function (func)
		{
		// if the init function was already ran, just run this function now and stop
		if (done)
			return func();
		if (!load_events[0])
			{
			// for Mozilla/Opera9
			if (document.addEventListener)
				document.addEventListener("DOMContentLoaded", init, false);
			// for Internet Explorer
			/*@cc_on @*/
			/*@if (@_win32)
			document.write("<script id=__ie_onload defer src=//0><\/scr"+"ipt>");
			script = document.getElementById("__ie_onload");
			script.onreadystatechange = function()
				{
				if (this.readyState == "complete")
					init(); // call the onload handler
				};
			/*@end @*/
			// for Safari
			if (/WebKit/i.test(navigator.userAgent))
				{ // sniff
				load_timer = setInterval(function()
					{
					if (/loaded|complete/.test(document.readyState))
						init(); // call the onload handler
					}, 10);
				}
			// for other browsers set the window.onload, but also execute the old window.onload
			old_onload = window.onload;
			window.onload = function()
				{
				init();
				if (old_onload)
					old_onload();
				};
			}

		load_events.push(func);
		}
	})();

