$(document).ready(function () {

    //show-hide menu items
    $('.first').mouseover(function () {
        $('.first ul').show();
    });

    $('.first').mouseout(function () {
        $('.first ul').hide();
    });

    //show-hide shopping cart
    $('.cart').mouseover(function () {
        $('.cart ul').show();
    });

    $('.cart').mouseout(function () {
        $('.cart ul').hide();
    });

    //show-hide sign in form
    $('.sign-in').mouseover(function () {
        $('.sign-in ul').show();
    });

    $('.sign-in').mouseout(function () {
        var usernameFocus = $('#tboxLoginUsername').is(":focus");
        var passwordFocus = $('#tboxLoginPass').is(":focus");
        var loginFocus = $('#btnLogin').is(":focus");

        if (!usernameFocus && !passwordFocus && !loginFocus) {
            $('.sign-in ul').hide();
        }
    });

    $('.sign-in ul').mouseout(function () {
        var usernameFocus = $('#tboxLoginUsername').is(":focus");
        var passwordFocus = $('#tboxLoginPass').is(":focus");
        var loginFocus = $('#btnLogin').is(":focus");

        if (!usernameFocus && !passwordFocus && !loginFocus) {
            $(this).hide();
        }
    });

    $('#tboxLoginUsername').focusout(function() {
        setTimeout(function(){
            signInFocusOut();
        }, 1);
    });

    $('#tboxLoginPass').focusout(function() {
        setTimeout(function(){
            signInFocusOut();
        }, 1);
    });

    $('#btnLogin').focusout(function() {
        setTimeout(function(){
            signInFocusOut();
        }, 1);
    });
});

function signInFocusOut() {
    var usernameFocus = $('#tboxLoginUsername').is(":focus");
    var passwordFocus = $('#tboxLoginPass').is(":focus");
    var loginFocus = $('#btnLogin').is(":focus");

    if (!usernameFocus && !passwordFocus && !loginFocus) {
        $('.sign-in ul').hide();
    }
}

jQuery.extend(jQuery.expr[':'], {
    focus: function(element) { 
        return element == document.activeElement; 
    }
});

