/*
 * menuDropdown.js - implements an dropdown menu based on a HTML list
 * Author: Dave Lindquist (http://www.gazingus.org)
 */

var currentMenu = null;
var Tab = null;
var t = 0;

if (!document.getElementById)
    document.getElementById = function() { return null; }

function setTab(actuatorId) {
    var actuator = document.getElementById(actuatorId);

	if(actuator) {
    	actuator.parentNode.className = "hover" + actuator.parentNode.className;
		actuator.o = actuator.parentNode.className;
		if(actuator.showMenu) {
			actuator.showMenu();
		}
		Tab = actuator;
	}
}


function initializeMenu(menuId, actuatorId) {
    var menu = document.getElementById(menuId);
    var actuator = document.getElementById(actuatorId);
//    if(menu) var original_class = menu.parentNode.className;
	var original_class;
    if(actuator) {
		original_class = actuator.parentNode.className;
		actuator.o = original_class;
	}

//    if (menu == null || actuator == null) return;

    //if (window.opera) return; 

    actuator.onmouseover = function() {
		if(currentMenu == menu) {
			if(t) {
				clearTimeout(t);
				t = 0;
			}
			return;
		}

        if (currentMenu) {
            currentMenu.style.visibility = "hidden";
//            currentMenu.a.parentNode.className = original_class;
            currentMenu.a.parentNode.className = currentMenu.o;
            this.showMenu();
        } else {
            this.showMenu();
        }
    }

    actuator.onmouseout = function() {
//        t = setTimeout("hideMenu('" + original_class + "')", 5000);
		if(currentMenu.o) {
	        t = setTimeout("hideMenu('" + currentMenu.o + "')", 5000);
		}
    }
  
    actuator.onclick = function() {
        if (currentMenu == null) {
            this.showMenu();
        }
        else {
//            currentMenu.parentNode.className = original_class;
            currentMenu.style.visibility = "hidden";
            currentMenu = null;
        }

        return true;
    }

    actuator.showMenu = function() {
		if(!menu) {
//			alert("no menu defined");
			if(currentMenu != menu) {
				currentMenu = menu;
					if(Tab != null) {
						Tab.showMenu();
					}
				return;
			}
		}

        if(t) {
            clearTimeout(t);
            t = 0;
        }
 // alert("offsetLeft=" + this.offsetLeft + ", offsetHeight=" + this.offsetHeight + ", parent.offsetLeft=" + this.parentNode.offsetLeft + ", parent.offsetHeight=" + this.parentNode.offsetHeight);

	var parentMid = Math.floor(this.parentNode.offsetLeft + this.parentNode.offsetWidth / 2);

	var mid = Math.floor(menu.offsetWidth / 2);
	var newx = parentMid - mid;
	if(newx < 0) {
		newx = 0;
	} else if(newx + menu.offsetWidth > 895) {
		newx = 895 - menu.offsetWidth - 10;
	}

//	menu.style.left = "0" + "px";
	menu.style.left = newx + "px";
	menu.style.top = "5" + "px";

        menu.style.visibility = "visible";
        currentMenu = menu;
		currentMenu.o = actuator.parentNode.className;
		if(actuator.parentNode.className.indexOf("hover") != 0) {
	        actuator.parentNode.className = "hover" + original_class;
		}
		currentMenu.a = actuator;
   }

}

hideMenu = function(original_class) {
	if(currentMenu) {
		currentMenu.a.parentNode.className = original_class;
		currentMenu.style.visibility = "hidden";
		currentMenu = null;
		t = 0;
	}

	if(Tab != null) {
		Tab.showMenu();
	}
}

function findPosX(obj)
{
        var curleft = 0;
        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.offsetParent)
        {
                while (obj.offsetParent)
                {
                        curtop += obj.offsetTop
                        obj = obj.offsetParent;
                }
        }
        else if (obj.y)
                curtop += obj.y;
        return curtop;
}

