var mouseOverToolbar = 0, busy = 0, lockToolbar = 0, toHandler = 0, toolbarHidden = 0, _$toolbar = $('.toolbar');
function init() {
_$toolbar.hover( MouseOver_toolbar, MouseOut_toolbar);
setTimeout(CollapseToolBar, 200);
}
function MouseOver_toolbar () {
mouseOverToolbar = 1;
ExpandToolBar();
};
function MouseOut_toolbar () {
mouseOverToolbar = 0;
if (lockToolbar) return;
CollapseToolBar();
};
function CollapseToolBar () {
if (lockToolbar || busy || toolbarHidden) return;
if (toHandler) clearTimeout(toHandler);
toHandler = setTimeout(function () {
if (mouseOverToolbar) {
setTimeout(CollapseToolBar, 500);
}
else {
busy = 1;
_$toolbar.addClass('off', 200, 'linear', function () {
toolbarHidden = 1;
busy = 0;
});
}
},500);
};
function ExpandToolBar () {
if (busy || !toolbarHidden) return;
busy = 1;
if (toHandler) clearTimeout(toHandler);
_$toolbar.removeClass('off', 200, 'linear', function () {
toolbarHidden = busy = 0;
});
};
init();
<div class="toolbar">M o u s e<br/><br/>o v e r<br/><br/>m e !</div>
.toolbar { position:relative; background-color: blue; color: white;
width: 100px; height:300px; }
.off { width: 15px}
External resources loaded into this fiddle: