/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
var fadeSpeed = 'fast';

var selectedMenuItem = ".homepage";
var lastSelectedMenu = null;
var loginRequested = false;

function createMenuHandlers( ) {
    // Homepage menu item (fade in)
    $('.homepage').mouseover(function() {
        handleMenuItemHover('.homepage','fadeIn' );
    });

    // Homepage menu item (fade out)
    $('.homepage').mouseout(function() {
        handleMenuItemHover('.homepage','fadeOut' );
    });

    // Homepage menu item (click)
    $('.homepage').click(function() {
        handleMenuItemClick('.homepage' );
    });

    // Toernooien menu item (fade in)
    $('.toernooien').mouseover(function() {
        handleMenuItemHover('.toernooien','fadeIn' );
    });

    // Toernooien menu item (fade out)
    $('.toernooien').mouseout(function() {
        handleMenuItemHover('.toernooien','fadeOut' );
    });

    // Toernooien menu item (fade out)
    $('.toernooien').click(function() {
        handleMenuItemClick('.toernooien' );
    });

    // Evenementen menu item (fade in)
    $('.evenementen').mouseover(function() {
        handleMenuItemHover('.evenementen','fadeIn' );
    });

    // Evenementen menu item (fade out)
    $('.evenementen').mouseout(function() {
        handleMenuItemHover('.evenementen','fadeOut' );
    });

    // Evenementen menu item (click)
    $('.evenementen').click(function() {
        handleMenuItemClick('.evenementen' );
    });

    // Vereniging menu item (fade in)
    $('.vereniging').mouseover(function() {
        handleMenuItemHover('.vereniging','fadeIn' );
    });

    // Vereniging menu item (fade out)
    $('.vereniging').mouseout(function() {
        handleMenuItemHover('.vereniging','fadeOut' );
    });

    $('.vereniging').click(function() {
        handleMenuItemClick('.vereniging' );
    });

    // Jeugd menu item (fade in)
    $('.jeugd').mouseover(function() {
        handleMenuItemHover('.jeugd','fadeIn' );
    });

    // Jeugd menu item (fade out)
    $('.jeugd').mouseout(function() {
        handleMenuItemHover('.jeugd','fadeOut' );
    });

    $('.jeugd').click(function() {
        handleMenuItemClick('.jeugd' );
    });

    $(".homepageSEL").fadeIn( fadeSpeed );

    $('#login-btn').click(function() {
        showLoginDialog();
    });

    $('#login-cancel-btn').click(function() {
        hideLoginDialog();
    });

    $('#login-ok-btn').click(function() {
        login();
    });

    $('#contact-btn').click(function() {
        showSubpageByArticle(968, 'vereniging', true );
    });
}

function handleMenuItemClick( menu )
{
    if ( selectedMenuItem == menu )
        return;

    switch( menu ) {
        case ".homepage": showHomepage(); break;
        case ".toernooien": showSubpageByMenu( menu ); break;
        case ".evenementen": showSubpageByMenu( menu ); break;
        case ".vereniging": showSubpageByMenu( menu ); break;
        case ".jeugd": showSubpageByMenu( menu ); break;
        default : showSubpageByMenu( menu );
    }

    highlightMenu( menu );
}

function highlightMenu( menu ) {
    if ( lastSelectedMenu == null || menu != lastSelectedMenu ) {

        //Store new selection
        lastSelectedMenu = selectedMenuItem
        selectedMenuItem = menu;

        //Select the menuItem
        var menuSelected=menu+"SEL";
        $(menuSelected).fadeIn(fadeSpeed, function(){
                                              showComplete();
                                          });
    }
}


function handleMenuItemHover( menu, task ) {
    if ( menu == selectedMenuItem ) 
        return;

    var menuHighlighter=menu+"HL";
    if ( !isFading(menuHighlighter) ) {
        startFading(menuHighlighter);

        if ( task == 'fadeIn') {
            $(menuHighlighter).fadeIn(fadeSpeed, function(){
                                                  fadingComplete(menuHighlighter);
                                              });
        } else {
            $(menuHighlighter).fadeOut(fadeSpeed, function(){
                                                  fadingComplete(menuHighlighter);
                                              });
        }
    } else {
        sheduleTask(menuHighlighter, task);
    }
}

function sheduleTask( control, task )
{
    $(control).attr( 'sheduledTask', task );
}

function startFading( control ) {
    $(control).attr( 'fading', true );
}

function isFading( control ) {
    if ( $(control).attr( 'fading' ) == null ) {
        return false;
    } 
    return $(control).attr( 'fading' );
}

function showComplete(  ) {
    if (lastSelectedMenu != null )
        $(lastSelectedMenu+"SEL").fadeOut(fadeSpeed);

    $(selectedMenuItem+"HL").fadeOut(fadeSpeed);
    lastSelectedMenu = selectedMenuItem;
}

function fadingComplete( control ) {
    if ( $(control).attr( 'sheduledTask') != null ) {
        //Get the action
        var action = $(control).attr( 'sheduledTask');

        //Reset the sheduled task
        $(control).removeAttr('sheduledTask');

        if ( action == "fadeIn" ) {
            $(control).fadeIn(fadeSpeed, function(){
                                          fadingComplete(control);
                                      });
        } else {
            $(control).fadeOut(fadeSpeed, function(){
                                          fadingComplete(control);
                                      });
        }
    } else {
        //Reset the fading attribute
        $(control).removeAttr('fading');
    }
}

function showLoginDialog() {
    $("#modal-mask").fadeIn('slow');
    $("#login-dialog").fadeIn('slow');
    $("#login-user").focus();
}

function hideLoginDialog() {
    $("#modal-mask").fadeOut('slow');
    $("#login-dialog").fadeOut('slow');
    $("#message-dialog").fadeOut('slow');
    $("#blank-dialog").fadeOut('slow');
}

function login() {

    if ( !loginRequested ) {
        $("#message-dialog").removeClass('error-dialog');
        $("#message-dialog").addClass('waiting-dialog');
        $("#message-dialog").fadeIn('slow');
        $("#blank-dialog").fadeIn('slow', function() {
            loginRequested = true;
            xajax_login($("#login-user").val(),$("#login-password").val());
        });
    } else {
        $("#message-dialog").fadeOut('normal');
        $("#blank-dialog").fadeOut('normal');
        loginRequested = false;
    }
}

function handleLoginResponse( isLoggedIn ) {
    if ( !isLoggedIn ) {
        $("#message-dialog").fadeOut('normal', function () {
            $("#message-dialog").addClass('error-dialog');
            $("#message-dialog").removeClass('waiting-dialog');
            $("#message-dialog").fadeIn('normal');
        });   
    } else {
        var username =  $("#login-user").val();
        var password = $("#login-password").val();
        window.location = "/processLogin.php?username="+username+"&password="+password;
    }
}
