var timeout    = 500;
var closetimer = 0;
var ddmenuitem = 0;

function ddmenu_open() {
  // verifico se l'elemento contiene una sotto-menu (tendina)
  if ($(this).children('ul').length > 0) {
    // in caso affermativo stoppo il timer di chiusura
    ddmenu_stoptimer();
    // identifico la tendina
    ddmenuitem = $(this).children('ul');
    // se non è visibile...
    if (ddmenuitem.is(':hidden')) {
      // chiudo tutto
      ddmenu_closeall();
      // apro la tendina interessata con il metodo slideDown()
      ddmenuitem.css('visibility','visible').slideDown("fast");
	  $(this).addClass("hoverable");
    }
  // se non c'è una tendina d'aprire...
  }else{
    // chiudo tutto
    ddmenu_closeall();
    ddmenuitem = 0;
  }
}

// questa funzione chiude tutte le tendine eventualmente aperte
function ddmenu_closeall() {
  $('#topmenu-firstlevel li ul').css('visibility','hidden').hide();
  $('#topmenu-firstlevel li ').removeClass("hoverable");
}

function ddmenu_close() {
  if (ddmenuitem) {
    ddmenuitem.css('visibility','hidden').hide();
	ddmenuitem.parent().removeClass("hoverable");
    ddmenuitem = 0;
  }
}

// imposto un timer per la chiusura
function ddmenu_timer() {
  if (ddmenuitem) closetimer = window.setTimeout(ddmenu_close, timeout);
}

// stoppo l'esecuzione del timer di chiusura
function ddmenu_stoptimer() {
  if (closetimer) {
    window.clearTimeout(closetimer);
    closetimer = 0;
  }
}

// al caricamento del DOM
$(document).ready(function(){
  // intercetto gli eventi mouseover e mouseout sulle voci di menu
  $('#topmenu-firstlevel > li').bind('mouseover', ddmenu_open);
  $('#topmenu-firstlevel > li').bind('mouseout',  ddmenu_timer);
});

// se clicco sul documento chiudo tutto
document.onclick = ddmenu_closeall();

