require(['dojo/query',
         'dojo/dom-style',
         'dojo/NodeList-fx',
         'dojo/domReady!'],
function(query, domStyle) {

    var timeOuts = new Array(query("div.topmenu-item").length);
    var links = query("div.topmenu-item");

    links.on('mouseleave', function() {
        var that = this;
        var elemNo = parseInt(this.id.substring(9))-1;
        timeOuts[elemNo] = query('#'+that.id+' div.submenu').fadeOut(
            { onEnd: function() {
                 timeOuts[elemNo] = undefined;
                 query('#'+that.id+' div.submenu').style({'display': 'none', 'height': '0px;'});
             }});
        timeOuts[elemNo].play(300);
    });

    links.on('mouseenter', function() {
        var elemNo = parseInt(this.id.substring(9))-1;
        var subMenu = query("#"+this.id+" div.submenu")[0];
        if (subMenu && domStyle.get(subMenu, 'display')=='none') {
            query("#" + this.id + " div.submenu").style({
                'display': 'block',
                'height': '0px',
                'opacity': 1
            }).wipeIn().play();
        }
        else if (timeOuts[elemNo]) {
            timeOuts[elemNo].stop();
            timeOuts[elemNo] = undefined;
            query("#" + this.id + " div.submenu").style({
                opacity: 1,
                display: 'block'
            });
        }
    });
});
