﻿var slideMenuSpeed = 500;
        
function InitSlideMenu(menu) 
{
    CloseSlideMenu(menu);
}

function RemoveSlideMenuEvents(menu) 
{
    RemoveSlideMenuEnter(menu);
    RemoveSlideMenuLeave(menu);
}

function AddSlideMenuEnter(menu) 
{
    $(menu).mouseenter(function () { BeginOpenSlideMenu(this); })
}

function RemoveSlideMenuEnter(menu) 
{
    $(menu).unbind("mouseenter");
}

function AddSlideMenuLeave(menu) 
{
    $(menu).mouseleave(function () { BeginCloseSlideMenu(this); })
}

function RemoveSlideMenuLeave(menu) 
{
    $(menu).unbind("mouseleave");
}

function BeginOpenSlideMenu(menu) 
{
    $(menu).animate({left: 0}, slideMenuSpeed, function() { SlideMenu_OpenComplete($(this)); });
    RemoveSlideMenuEvents(menu);
    // listen for mouse leave whilst opening so menu will auto close
    AddSlideMenuLeave(menu);
}

function SlideMenu_OpenComplete(menu) 
{
    // mouse leave listener already added
}

function BeginCloseSlideMenu(menu) 
{
    $(menu).animate({left: -1 * $(menu).width()}, slideMenuSpeed, function() { SlideMenu_CloseComplete($(this)); });
    RemoveSlideMenuEvents(menu);
}

function CloseSlideMenu(menu) 
{
    $(menu).css("left", -1 * $(menu).width());
    SlideMenu_CloseComplete(menu);
}

function SlideMenu_CloseComplete(menu) 
{
    AddSlideMenuEnter(menu);
}
