var nav_dd_timeout = 500;
var nav_dd_timer = 0;
var nav_dd_menu = null;

function nav_dd_open(){
	window.nav_dd_cancel();
	
	var menu = jQuery('ul', this);
	
	if(menu.size() == 0){
		menu = jQuery(this).parents('ul');
		
		menu = jQuery(menu.get(0));
	}
	
	if(menu.hasClass('nav_dd_root')){
		window.nav_dd_close();
		
		return ;
	}
	
	if(menu != window.nav_dd_menu){
		window.nav_dd_close();
		
		window.nav_dd_menu = menu;
	}
	
	if(window.nav_dd_menu){
		window.nav_dd_menu.css('visibility', 'visible');
	}
}

function nav_dd_close(){
	if(window.nav_dd_menu){
		window.nav_dd_menu.css('visibility', 'hidden');
	}
}

function nav_dd_out(){
	window.nav_dd_cancel();
	
	window.nav_dd_timer = window.setTimeout(window.nav_dd_close, window.nav_dd_timeout);
}

function nav_dd_cancel(){
	if(window.nav_dd_timer){
		window.clearTimeout(window.nav_dd_timer);

		window.nav_dd_timer = null;
	}
}

jQuery(document).ready(
	function () {
		jQuery('.nav_dd ul > li').hover(window.nav_dd_open, window.nav_dd_out);
		jQuery('.nav_dd ul > li a').mouseover(window.nav_dd_cancel);
	}
);

document.onclick = window.nav_dd_close;