
/**
 *
 * Copyright (C) apsona, sfaFinity, Inc., 2009
 *
 * All rights reserved
 *
 */


/*
 * JS for the login page
 */
function _validate (id, msg) {
    var box = $("#" + id);
    var str = box.val();
    if (!str) {
        sf.ui.Util.reportError (msg, box);
        box.addClass ("sf-invalid");
        return null;
    }
    box.removeClass ("sf-invalid");
    return str;
};

$(function() {
    $("#userName").focus();
    $("#sf-nojsmessage").hide();
    $("#sf-submit").show();
    var theForm = $("#sf-login-form")[0];

    var onPost = function (str) {
        var data = sf.doEval (str);
        if (data.session) {
            $("#sessionId").val (data.session.sessionId);
            var accessibleApps = data.session.userProfile.allowedApps;
            document.mainForm.action = (accessibleApps && accessibleApps.length > 0) ?
                "/app/" + accessibleApps[0].appId :
                "/app/app_admin/pages/choose_app.html";
            document.mainForm.submit();
        } else if (data.error) {
            $(".sf-login-failed").html (data.error).show();
            $("#sf-submit").show();
            $("#sf-login-progress").hide();
        } else {
            // What now? Show an error?
        }
    };
    
    theForm.onsubmit = function () {
        var userName = _validate ("userName", "Please provide your email address.");
        if (!userName) return false;
        userName = userName.trim();
        var password = _validate ("password", "Please provide your password.");
        if (!password) return false;
        $("#sf-submit").hide();
        $(".sf-login-failed").hide();
        $("#sf-login-progress").show();
        $.post ("/app/app_admin/login.js", {"userName": userName, "password": password}, onPost);
        return false;
    }

    $(".sf-forgot-password-trigger").click (function () {
        $(".sf-forgot-password").css ("display", "block");
        $(".sf-login-form").css ("display", "none");
        $(".sf-forgot-password input[type=text]").val ("");
    });

    function _showLoginDialog () {
        $(".sf-forgot-password").css ("display", "none");
        $(".sf-login-form").css ("display", "block");
    };
    
    $(".sf-forgot-cancel").click (_showLoginDialog);


    function _doReset (str) {
        var data = sf.doEval (str);
        if (data && data.status == "ok") {
            alert ("Your password has been reset. Please check your email, including your spam folder.");
            _showLoginDialog();
        } else {
            alert ("Sorry, that email address is not registered for an Apsona account.");
        }
    };

    var forgotPasswordForm = $(".sf-forgot-password");
    if (forgotPasswordForm.length) forgotPasswordForm[0].onsubmit = function () {
        var emailAddress = _validate ("forgot-pswd-email", "Please provide your email address.");
        if (emailAddress) {
            $.post ("/app/app_admin/ext/pwreset.js", {"emailAddress": emailAddress}, _doReset);
        }
        return false;
    };
});
