cur_popup = null;
timer = null;
hovers = Array();

function hover_over(event) {
	clearTimeout(timer);
	obj = Event.element(event);
//	while (!Element.hasClassName(obj,"PopDi")) { obj = $(obj).up('.PopDi'); }
	for (i = 0; i < hovers.length; i++) {
		if (hovers[i] != obj.id) hover_hide(hovers[i]+"Popup");
		else cur_popup = hovers[i]+"Popup";  
	}
	var menu = $(obj.id+"Popup"); 
	menu.show();
	var X = Event.pointerX(event);
	var Y = Event.pointerY(event);
	menu.style.top = Y+"px";
	menu.style.left = (X-menu.getWidth())+"px";
	Event.stop(event);
}

function hover_out(event) {
	obj = Event.element(event);
	timer = setTimeout("hover_hide('"+cur_popup+"')", 500)	
}

function hover_clear(event) {
	clearTimeout(timer);
}

function hover_hide(div) {
	if (div) $(div).hide();
}

function colors_in(event) {
	obj = Event.element(event);
	while (!Element.hasClassName(obj,"PopLi")) { obj = $(obj).up('.PopLi'); }
	obj.className = "PopLih";
}
function colors_out(event) {
	obj = Event.element(event);
	while (!Element.hasClassName(obj,"PopLih")) { obj = $(obj).up('.PopLih'); }
	obj.className = "PopLi";
}

function bind_hover(div) {
	if ($(div)) { 
		hovers[hovers.length] = div;
		Event.observe($(div), 'mouseover', hover_over.bindAsEventListener() );
		Event.observe($(div), 'mousemove', hover_over.bindAsEventListener() );
		Event.observe($(div), 'mouseout', hover_out.bindAsEventListener() );
		var pop = $(div+"Popup");
		Event.observe(pop, 'mouseover', hover_clear.bindAsEventListener() );
		Event.observe(pop, 'mouseout', hover_out.bindAsEventListener() );
		var pops = pop.getElementsByTagName("div");
		for( i = 0; i < pops.length; i++) {
			Event.observe(pops.item(i), 'mouseover', colors_in.bindAsEventListener());
			Event.observe(pops.item(i), 'mouseout', colors_out.bindAsEventListener());
		}
	}
}
