var menuStatus = new Object();
var upEffect = null;
var downEffect = null;

function menuAction(e, id, type) {
	var target = e.target || e.srcElement;
	var fromElement = e.relatedTarget || e.fromElement || false;
	var toElement = e.relatedTarget || e.toElement || false;

         closeOthers(id);
         if(type == "OVER") {
                 openMenu(id);
         }
         else if(type == "OUT" &&
         	(toElement.tagName == "BODY" || toElement.tagName == "DIV")) {
                 closeMenu(id);
         }
}

function openMenu(id) {
         if(menuStatus[id] == "CLOSED" || menuStatus[id] == null) {
                 Effect.BlindDown(id, {
                        duration: 0.5,
                        afterFinish: function() {
                                 menuStatus[id] = "OPEN";
                        },
                        beforeSetup: function() {
                                 menuStatus[id] = "OPENING";
                        },
                        queue: { position: 'end', scope: 'menuxscope'+id,
                                limit: 2 }
                 });
         }
}

function closeMenu(id) {
         if(menuStatus[id] == "OPEN")
                 Effect.BlindUp(id, {
                        duration: 0.5,
                        afterFinish: function() {
                                 menuStatus[id] = "CLOSED";
                        },
                        beforeSetup: function() {
                                 menuStatus[id] = "CLOSING";
                        },
                        queue: { position: 'end', scope: 'menuxscope'+id,
                                limit: 2 }
                 });
         if(menuStatus[id] == "OPENING")
                 Effect.BlindUp(id, {
                        duration: 0.5,
                        afterFinish: function() {
                                 menuStatus[id] = "CLOSED";
                        },
                        beforeSetup: function() {
                                 menuStatus[id] = "CLOSING";
                        },
                        queue: { position: 'end', scope: 'menuxscope'+id,
                                limit: 3 }
                 });
}

function closeOthers(exID) {
         for(var id in menuStatus) {
                 if(exID != "" && id == exID)
                 	continue;
		closeMenu(id);
         }
}
