// depends on global.js
function getCurrentUser(complete){

    /*
     * TODO param[fn] is removed
     */
    ajax.getCurrentUser(function(){
    
        if (ajax.currentUser != null) {
            //ajax.currentUser.username = rs.nickname;
            $("#loginDialog").dialog('close');
            $("#homemenu .recommend").show();
            $("#loginFormDiv #loginForm").hide();
            $("#loginFormDiv #myLogin .loginUser").html(ajax.currentUser.nickname + "'s Page");
            $("#loginFormDiv #myLogin").show();
            $("#myPageLink").unbind("click").click(function(){
                window.location.href = "/my/";
            });
            $(".current_user").html(ajax.currentUser.nickname);
            $("#myLogoutLink").unbind("click").click(function(){
                ajax.logout(function(){
                    window.location.href = "/";
                });
            });
        }
        
        $("#loginFormDiv").removeClass("hidden");
        
        if (typeof complete == "function") {
            complete();
        }
        
    });
}

function openLoginDialog(errorMsg, callback, type){//type: normal(default) quick
    $("#loginFormDiv #loginForm").hide();
    if (errorMsg == undefined) {
        $("#loginDialog .loginDialogWarn").removeClass("loginDialogWarnIcon").html("");
    } else {
        $("#loginDialog .loginDialogWarn").addClass("loginDialogWarnIcon").html(errorMsg);
    }
    //loginLink
    if (type == undefined) {
        type = "";
    }
    $("#loginDialogLink").unbind("hover").hover(function(){
        $(this).addClass("linkOver");
    }, function(){
        $(this).removeClass("linkOver");
    }).unbind("click").click(function(){
        window.location.href = "/regist.html?type=" + type;
    });
    
    //events
    $("#loginDialog .loginDialogClose").unbind("click").click(function(){
        $("#loginDialog").dialog('close');
        $("#loginFormDiv #loginForm").show();
    });
    $("#loginDialogForm").unbind("submit").submit(function(){
        var username = $("#loginDialogForm input[name='j_username']").attr("value");
        var password = $("#loginDialogForm input[name='j_password']").attr("value");
        var rememberme = $("#loginDialogForm input[name='_spring_security_remember_me']").attr("value");
        ajax.login(username, password, rememberme, function(){
        
            if (ajax.currentUser == null) {
                if (callback != null) {
                    loginDialogError(XMLHttpRequest, textStatus, errorThrown, callback);
                } else {
                    loginDialogError(XMLHttpRequest, textStatus, errorThrown);
                }
            } else {
                location.reload();
            }
            
        });
        return false;
    });
    
    //open modal dialog
    $("#loginDialog").dialog({
        bgiframe: true,
        width: 440,
        height: 280,
        modal: true,
        closeOnEscape: false,
        resizable: false
    });
    $("#loginDialog").dialog('open');
}

function loginDialogError(XMLHttpRequest, textStatus, errorThrown, fn){
    //401: invalid username or password
    if (fn != undefined) {
        openLoginDialog("The email and/or password you entered is invalid.", fn);
    } else {
        openLoginDialog("The email and/or password you entered is invalid.");
    }
}

$(function(){
    $("#loginLink").unbind("click").click(function(){
        //$("#loginForm").submit();
        openLoginDialog(null, function(){
            window.location.reload();
        });
    });
});

