var timer = "";
var openMenu = null;
var canMenuBeClosed = true;

function clearTimer(){
	window.clearTimeout(timer);
}

function tryToClose(){
	var funcToCall = "canMenuBeClosed = true"
	timer = window.setTimeout(funcToCall, 400);
}

function showMenu(id, objPos){

	if(document.getElementById){
		clearTimer();
		setElementProperty('QueerLounge', 'display', 'none');
		setElementProperty('Festivalgoers', 'display', 'none');
		setElementProperty('Films', 'display', 'none');
		setElementProperty('Sponsors', 'display', 'none');
		setElementProperty('ResourceCenter', 'display', 'none');
		setElementProperty('Events', 'display', 'none');
		setElementProperty('Support', 'display', 'none');
		openMenu = id;
		canMenuBeClosed = false

		var x = 0;
		var y = 0;
		
		x = getElementLeft(objPos);
		y = getElementBottom(objPos);
		
		/*if(!window.event){
			y-=1;
		}*/
		
		setElementProperty(id, 'display', 'block');
		setElementProperty(id, 'left', x + "px");
		setElementProperty(id, 'top', y + "px");
	}
}

function hideMenu(id){
	setElementProperty(id, 'display', 'none');
	openMenu = null;
}

function getMousePos(event){
	var x, y;
	
	if(window.event){
		x = window.event.clientX;
		y = window.event.clientY;
		if (document.documentElement && document.documentElement.scrollTop){
			y+=document.documentElement.scrollTop;
			
		} else {
			y+=document.body.scrollTop;
			
		}
	} else {
		x = event.pageX;
		y = event.pageY;
	}

	if(openMenu != null){
		var testInside = isInside(x, y, openMenu);
		if(!testInside && canMenuBeClosed == true){
			hideMenu(openMenu);
		}
		if(testInside){
			canMenuBeClosed = true;
			clearTimer();
		}
	}
}

function isInside(xMouse, yMouse, id){
	if( (id != null) && (xMouse >= getElementLeft(id)) && (xMouse <=getElementRight(id)) && (yMouse >= (getElementTop(id))-25) && (yMouse <= getElementBottom(id)) ){
		return true;
	} else {
		return false;
	}
}

window.onload = function() {
	document.onmousemove = getMousePos;
}

/* 
* ITA: funzione che cambia la proprietà display di un elemento 
* ENG: This function change the property display of an element
*/

function switchDisplay(elm){
	var elm = elm.parentNode.nextSibling;
	while(elm.nodeType == 3){
		elm = elm.nextSibling;
	}
	
	var elmStyle = getElementProperty(elm, "display")

	if((elmStyle == "none") || (elmStyle == "") || (elmStyle == null)){
		setElementProperty(elm, "display", "block");
		return;
	}
	if(elmStyle == "block"){
		setElementProperty(elm, "display", "none");
		return;
	}
}