var menuopen=false;
var menuwantedopen=false;
var menubusy=false;

function openmenu(e) {
	var element;
	if (e.fromElement!=null) element=e.fromElement;
	else element=e.relatedTarget;

	if (isDescendentOf(element.id,'mainmenu')) return;
	
	menuwantedopen=true;
	
	setTimeout(runmenu,100)

 	return false
}

function closemenu(e) {
	var element;
	if (e.toElement!=null) element=e.toElement;
	else element=e.relatedTarget;

	if (isDescendentOf(element,'mainmenu')) return;

	menuwantedopen=false;
	setTimeout(runmenu,200);

	return false;
}

function runmenu() {
	if (menubusy) return;

	if (menuwantedopen) {
		if (!menuopen) {
			menubusy=true;
			new Effect.Morph('mainmenu',{
			  style:'height: 140px',
			  duration:0.2,
			  afterFinish: menuopened
			});
		}
	} else {
		if (menuopen) {
			menubusy=true;
			document.getElementById('mainmenu').morph('height: 23px',{duration: 0.2, afterFinish: menuclosed});
		}
	}
}

function menuopened() {
	menubusy=false;
 	menuopen=true;

 	runmenu();
}

function menuclosed() {
	menubusy=false;
 	menuopen=false;
 	
 	runmenu();
}

function isDescendentOf(element,id) {
	while (element.id!=id) {
		element=element.parentNode;
		if (!element) return false;
	}
	return true;
}

var displayedMenu = "";

function DisplaySubMenu(submenu)
{
	//Hide all submenus
	HideSubMenus(submenu);

	if(submenu != displayedMenu)
	{
		//Get Element To Display
		var sub = document.getElementById(submenu);
		
		sub.parentNode.className="submenuselected";

		height=sub.scrollHeight;

		//Display submenu
		new Effect.Morph(submenu,{
		  style:'height: '+height+'px',
		  duration:0.2,
		  afterFinish : function() {}
		});


		displayedMenu = submenu;
	}
	else
	{
		displayedMenu = "";
	}
}

function HideSubMenus(exception)
{
	HideSubMenu('one_submenu',exception);
	HideSubMenu('two_submenu',exception);
	HideSubMenu('three_submenu',exception);
	HideSubMenu('four_submenu',exception);
}


function HideSubMenu(id,exception)
{
	if (id==exception) return;

	var element=document.getElementById(id);
	new Effect.Morph(id,{
	  style:'height: 0px',
	  duration:0.2,
	  afterFinish: function() { element.parentNode.className = ""; }
	});
}

function getParent(element) {
	var parent=element;
	while (parent=parent.parentNode) {
		if (parent.className=='prodlist' || parent.className=='prodlistc') {
			parent=parent.parentNode;
			break;
		}
	}
	
	return parent;
}	
	
function getOverlay(parent) {
	var divs=parent.getElementsByTagName('div');
	var overlay=false;
	for (var i=0; i<divs.length; i++) {
		var div=divs[i];
		
		if (div.className=='prodoverlay') {
			overlay=div;
			break;
		}
	}
	
	return overlay;
}

var prodOverlayInUse=new Array();

function prodOver(element) {
	var parent=getParent(element);
	if (!parent) return;
	var overlay=getOverlay(parent);
	if (!overlay) return;

	prodOverlayInUse[parent.id]=true;

	overlay.style.display='block';
	overlay.innerHTML=element.title;
}

function prodLeft(element) {
	var parent=getParent(element);
	if (!parent) return;

	prodOverlayInUse[parent.id]=false;

	setTimeout(function() { hideOverlay(parent) }, 250);
}

function hideOverlay(parent) {
	if (prodOverlayInUse[parent.id]) return;

	var overlay=getOverlay(parent);
	if (!overlay) return;

	overlay.style.display='none';
}
