﻿/**
 * AJAX Control for Logging into the system.
 * By Chris Richards 2010
 *
 * This just shows a very simple login/password button and switches to show the User's Name when they are logged in
 */

var SimpleAJAXLogin = function () {
    var _defaults = {
        isLoggedIn: false,
        userName: "",
        loginDivID: "#login_control",
        loginButtonID: "#btn_login",
        loginEmailID: "#email",
        loginPasswordID: "#password",
        displayDivID: "#login_display",
        displayNameDivID: "#user_name",
        url: "/login/Default.aspx?ajax=true"
    };
    var _options = _defaults;

    /**
    * Initalizes the Control
    */
    function init(options) {
        _options = $.extend(_defaults, options);

        //Check if the user is already logged in.
        if (_options.isLoggedIn) {
            $(_options.loginDivID).hide();
            $(_options.displayNameDivID).html(_options.userName);
            $(_options.displayDivID).show();
        } else {
            $(_options.loginDivID).show();
            $(_options.displayDivID).hide();

            //Bind the Login button
            $(_options.loginButtonID).bind("click", function () {
                //Hide everything while we wait
                $(_options.loginDivID).hide();
                $(_options.displayDivID).hide();

                $.post(_options.url, { "email": $(_options.loginEmailID).val(), "password": $(_options.loginPasswordID).val() }, function (json) {
                    json = eval("(" + json + ")");
                    if (json.success) {
                        $(_options.loginDivID).hide();
                        $(_options.displayNameDivID).html(json.name);
                        $(_options.displayDivID).show();
                    } else {
                        $(_options.loginDivID).show();
                        $(_options.displayDivID).hide();
                    }
                });

                return false;
            });
        }
    }


    return {
        "init": init
    }
} ();