var dropdownOpened		= null;
var dropdownWillOpen	= null;
var dropdownClose		= false;
var dropdownTimer		= null;

document.observe('dom:loaded', function() {
	// tous les éléments de la nav primaire déclare le passage de la souris
	$$('a.dropdown_trigger').invoke('observe', 'mouseover', observeDropdownOverTrigger);
	$$('a.dropdown_trigger').invoke('observe', 'mouseout', observeDropdownOutTrigger);
	
	// chaque container se garde lui même ouvert, et déclare sa fermeture
	$$('div.dropdown_container').invoke('observe', 'mouseover', observeDropdownContainerOverTrigger);
	$$('div.dropdown_container').invoke('observe', 'mouseout', observeDropdownContainerOutTrigger);

	$$('a.dropdown_trigger').invoke('observe', 'click', cancelClick);
	$$('a.level0').invoke('observe', 'click', cancelClick);
});

function cancelClick(event) {
	event.stop();
}

function observeDropdownOverTrigger(event) {
	event.stop();
	var element = event.element();

	// enregistrer le dropdown à ouvrir
	if (undefined != $(element.readAttribute('rel'))) {
		dropdownWillOpen = element.readAttribute('rel');
		refreshDropdownTimer(200);
	}

}

function observeDropdownOutTrigger(event) {
	event.stop();
	var element = event.element();
	var linkedDropdown = element.readAttribute('rel');

	// si on ressort sans avoir laissé le temps de s'ouvrir on ne s'ouvre pas
	if (dropdownWillOpen == linkedDropdown) {
		dropdownWillOpen = null;

	}

	dropdownClose = true;

	refreshDropdownTimer(700);

}

function observeDropdownContainerOverTrigger(event) {
	event.stop();
	var element = event.element();
	var linkedDropdown = element.readAttribute('id');

	// on entre dans un container, on ne doit plus fermer
	dropdownClose = false;
	
}

function observeDropdownContainerOutTrigger(event) {
	event.stop();
	var element = event.element();
	var linkedDropdown = element.readAttribute('id');

	// on sort d'un container, on est parti pour le fermer
	dropdownClose = true;
	refreshDropdownTimer(700);
	
}

function executeDropdownState() {
	if (dropdownClose) {
		$$('div.dropdown_container').each(function (item) {
			if (item.visible()) {
				item.hide();
				$$('a.dropdown_trigger').each(function (link) {
					if (item.id == link.readAttribute("rel")) {
						link.removeClassName('hover');
						
					}
					
				});
			}
		});

		dropdownClose = null;

	}

	if (dropdownWillOpen) {
		$(dropdownWillOpen).show();
		$$('a.dropdown_trigger').each(function (link) {
			if (dropdownWillOpen == link.readAttribute("rel")) {
				link.addClassName('hover');
				
			}
			
		});
		
		dropdownOpened = dropdownWillOpen;
		dropdownWillOpen = null;

	}

}

function refreshDropdownTimer(delay) {
	if (dropdownTimer) {
		clearTimeout(dropdownTimer);
		
	}
	
	dropdownTimer = setTimeout('executeDropdownState()', delay);
}
