// ----------------------------------------------
// login.js
// ----------------------------------------------

// ----------------------------------------------
FORUM.LoginView_cl = Class.create({  
    // ----------------------------------------------
    initialize: function () {

        var that = this;
        $.get('/html/login.html', function (data_spl) {
            $("#idContentOuter").append(data_spl);
            $("#idLoginContent").hide();
            that.initHandler_p();
        });
        FORUM.es_o.subscribe_px(this, 'loginform');

    },

    notify_px: function (self_opl, message_spl, data_apl) {
        switch (message_spl) {
            case 'loginform':
                switch (data_apl[0]) {
                    case 'refresh':
                        self_opl.render_px(null);
                        break;
                    default:
                        console.warning('[LoginView_cl] unbekannte list-Notification: ' + data_apl[0]);
                        break;
                }
                break;
            default:
                console.warning('[LoginView_cl] unbekannte Notification: ' + message_spl);
                break;
        }
    },

    canClose_px: function () {
        return true;
    },

    close_px: function () {
        $("#idLoginContent").hide();
    },

    render_px: function (data_opl) {
        this.doRender_p();
    },

    doRender_p: function () {
        $("#idLoginContent").show();
        console.log("[LoginView_cl] doRender");
    },
 
    initHandler_p: function () {
        $("#idLoginContent #idButtonArea").on("click", "button", $.proxy(this.onClickButtons_p, this));
    },
  
    onClickButtons_p: function (event_opl) {
        var action_s = $(event_opl.target).attr("data-action");

        data_o = {
            "username": $("#idLoginContent #username").val(),
            "password": $("#idLoginContent #password").val()
        }
        switch (action_s) {
            case 'login':
                $.ajax({
                    data: data_o,
                    dataType: "json",
                    url: '/login/',
                    type: 'GET'
                })
                .done(function (data_opl) {
                    if (data_opl) {
                        FORUM.user_o.login(data_o);
                        alert("Sie sind eingeloggt als \"" + data_o['username'] + "\"")
                        FORUM.es_o.publish_px('ContentChanged', ['topicList', null]);
                    }
                    else {
                        alert("Die Login-Daten sind nicht korrekt!");
                    }
                })
                .fail(function (jqXHR_opl, textStatus_spl) {
                    alert( "Fehler bei Anforderung: " + textStatus_spl );
                });
                break;
            case 'register':
                $.ajax({
                    data: data_o,
                    dataType: "json",
                    url: '/login/',
                    type: 'PUT'
                })
                .done(function (data_opl) {
                    if (data_opl) {
                        FORUM.user_o.login(data_o);
                        alert("Sie sind registriert als \"" + data_o['username'] + "\"")
                        FORUM.es_o.publish_px('ContentChanged', ['topicList', null]);
                    }
                    else {
                        alert("Der Benutzername ist leider schon vergeben!");
                    }
                })
                .fail(function (jqXHR_opl, textStatus_spl) {
                    alert("Fehler bei Anforderung: " + textStatus_spl);
                });
                break;
            case 'back':
                FORUM.es_o.publish_px('ContentChanged', ['topicList', null]);
                break;
        }
        event_opl.stopPropagation();
        event_opl.preventDefault();
    },

    enableButtons_p: function () {
        $("#idLoginContent #idButtonArea button").each(function () {
            if ($(this).attr("data-action") != "add") {
                $(this).prop("disabled", false);
            }
        });
    },

    disableButtons_p: function () {
        $("#idLoginContent #idButtonArea button").each(function () {
            if ($(this).attr("data-action") != "add") {
                $(this).prop("disabled", true);
            }
        });
    }
 
});

// EOF