// ----------------------------------------------
// Beispiel lit-8
// litlist.js
// ----------------------------------------------

// ----------------------------------------------
STUNDENPLAN.SettingsView_cl = Class.create({
// ----------------------------------------------
    initialize: function () {
        this.className = "SettingsView_cl";
        this.viewElement = ".cl_settingsView";
        var that = this;
        $.ajax({
            url: 'templates/SettingsView.html',
            type: 'GET'
        }).done(function (data_opl) {
            $('#page-wrapper').append(data_opl);
            $(that.viewElement).hide();
            that.initHandler_p();
        }).fail(function (jqXHR_opl, textStatus_spl) {
            alert("[" + that.className + "] Fehler bei Anforderung: " + textStatus_spl);
        });

        STUNDENPLAN.es_o.subscribe_px(this, this.className);
    },
    isModified_p: function () {
        // Prüfen, ob Formularinhalt verändert wurde
        var mod_b = this.FormContentOrg_s != $("#SettingsForm").serialize();
        return mod_b;
    },
    checkContent_p: function () {
        // hier nur zur Demonstration Prüfung des Typs gegen eine Werteliste
        // (das realisiert man besser mit einer Liste)
        var status_b = true;

        return status_b;
    },
    storeFormContent_p: function () {
        this.FormContentOrg_s = $("#SettingsForm").serialize();
    },
    notify_px: function (self_opl, message_spl, data_apl) {
        switch (message_spl) {
            case 'list':
                switch (data_apl[0]) {
                    case 'refresh':
                        // Liste aktualisieren
                        self_opl.render_px(null);
                        break;
                    default:
                        console.log('[' + this.className + '] unbekannte list-Notification: ' + data_apl[0]);
                        break;
                }
                break;
            default:
                console.log('[' + this.className + '] unbekannte Notification: ' + message_spl);
                break;
        }
    },
    close_px: function () {
        $(this.viewElement).hide();
    },
    showView_px: function (data_opl) {
        $(this.viewElement).show();
    },
    render_px: function (data_opl) {
        // Parameter data_opl wird hier nicht benötigt
        // Anforderung an den Server senden

        var storage = new STORAGE.Storage_cl(false);
        var fStundenlohn = storage.getItemWithDefault_px('stundenlohn', 8.50);

        var fNachtschichtzulage = storage.getItemWithDefault_px('nachtschichtzulage', 25);
        var fNachtschichtzulageVon = storage.getItemWithDefault_px('nachtschichtzulageVon', "23:00");
        var fNachtschichtzulageBis = storage.getItemWithDefault_px('nachtschichtzulageBis', "06:00");

        var fSonntagszulage = storage.getItemWithDefault_px('sonntagszulage', 50);
        var fSonntagszulageVon = storage.getItemWithDefault_px('sonntagszulageVon', '00:00');
        var fSonntagszulageBis = storage.getItemWithDefault_px('sonntagszulageBis', '23:59');

        var fFeiertagszulage = storage.getItemWithDefault_px('feiertagszulage', 125);
        var fFeiertagszulageVon = storage.getItemWithDefault_px('feiertagszulageVon', '00:00');
        var fFeiertagszulageBis = storage.getItemWithDefault_px('feiertagszulageBis', '23:59');


        $("#SettingsForm").find('input[name="SettingsFormInputStundenlohn"]').val(fStundenlohn);

        $("#SettingsForm").find('input[name="SettingsFormInputNachtschichtzulage"]').val(fNachtschichtzulage);
        $("#SettingsForm").find('input[name="SettingsFormInputNachtschichtzulageVon"]').val(fNachtschichtzulageVon);
        $("#SettingsForm").find('input[name="SettingsFormInputNachtschichtzulageBis"]').val(fNachtschichtzulageBis);

        $("#SettingsForm").find('input[name="SettingsFormInputSonntagszulage"]').val(fSonntagszulage);
        $("#SettingsForm").find('input[name="SettingsFormInputSonntagszulageVon"]').val(fSonntagszulageVon);
        $("#SettingsForm").find('input[name="SettingsFormInputSonntagszulageBis"]').val(fSonntagszulageBis);

        $("#SettingsForm").find('input[name="SettingsFormInputFeiertagszulage"]').val(fFeiertagszulage);
        $("#SettingsForm").find('input[name="SettingsFormInputFeiertagszulageVon"]').val(fFeiertagszulageVon);
        $("#SettingsForm").find('input[name="SettingsFormInputFeiertagszulageBis"]').val(fFeiertagszulageBis);

        this.storeFormContent_p();
    },
    doRender_p: function (data_opl) {
        $('#page-wrapper').append(data_opl);
    },
    initHandler_p: function () {
        //Debug

        $(this.viewElement).on('click', 'button', $.proxy(this.onClickButtons_p, this));

        $(this.viewElement).on('click', '.cl_DEBUG_deleteStorage', function (event) {
            var storage = new STORAGE.Storage_cl(false);
            storage.deleteList_px("monatsuebersicht");

            $('#selectMonat').html("");
            alert("Gelöscht");
            event.preventDefault();
        });
    },
    canClose_px: function () {
        // Prüfen, ob Formularinhalt verändert wurde
        var mod_b = this.isModified_p();
        if (mod_b) {
            if (confirm("Es gibt nicht gespeicherte Änderungen - verwerfen?")) {
                mod_b = false;
            }
        }
        return !mod_b;
    },
    onClickButtons_p: function (event_opl) {
        event_opl.stopPropagation();
        event_opl.preventDefault();

        var action_s = $(event_opl.target).attr("data-action");
        switch (action_s) {
            case "back":
                if (this.backData !== null || this.backData !== undefined || this.backData !== "") {
                    console.log("[" + this.className + "] Gehe zurück zu %s mit Daten: %o", this.backData.listener, this.backData);
                    STUNDENPLAN.es_o.publish_px('app', this.backData.args);
                } else {
                    console.log("[" + this.className + "] Gehe zurück zu mainView keine Daten vorhanden.");
                    STUNDENPLAN.es_o.publish_px('app', ['show', 'mainView', null]);
                }
                break;
            case "save":
                // Formularinhalt prüfen
                if (this.isModified_p()) {
                    if (this.checkContent_p()) {
                        // kein klassisches submit, es wird auch keine neue Anzeige vorgenommen
                        var storage = new STORAGE.Storage_cl(false);

                        var data_s = $("#SettingsForm").serialize();
                        console.log("[" + this.className + "] Daten zum Speichern: ", data_s);

                        var fStundenlohn = $("#SettingsForm").find('input[name="SettingsFormInputStundenlohn"]').val();

                        var fNachtschichtzulage = $("#SettingsForm").find('input[name="SettingsFormInputNachtschichtzulage"]').val();
                        var fNachtschichtzulageVon = $("#SettingsForm").find('input[name="SettingsFormInputNachtschichtzulageVon"]').val();
                        var fNachtschichtzulageBis = $("#SettingsForm").find('input[name="SettingsFormInputNachtschichtzulageBis"]').val();

                        var fSonntagszulage = $("#SettingsForm").find('input[name="SettingsFormInputSonntagszulage"]').val();
                        var fSonntagszulageVon = $("#SettingsForm").find('input[name="SettingsFormInputSonntagszulageVon"]').val();
                        var fSonntagszulageBis = $("#SettingsForm").find('input[name="SettingsFormInputSonntagszulageBis"]').val();

                        var fFeiertagszulage = $("#SettingsForm").find('input[name="SettingsFormInputFeiertagszulage"]').val();
                        var fFeiertagszulageVon = $("#SettingsForm").find('input[name="SettingsFormInputFeiertagszulageVon"]').val();
                        var fFeiertagszulageBis = $("#SettingsForm").find('input[name="SettingsFormInputFeiertagszulageBis"]').val();

                        storage.addItem_px('stundenlohn', fStundenlohn);
                        
                        storage.addItem_px('nachtschichtzulage', fNachtschichtzulage);
                        storage.addItem_px('nachtschichtzulageVon', fNachtschichtzulageVon);
                        storage.addItem_px('nachtschichtzulageBis', fNachtschichtzulageBis);
                        
                        storage.addItem_px('sonntagszulage', fSonntagszulage);
                        storage.addItem_px('sonntagszulageVon', fSonntagszulageVon);
                        storage.addItem_px('sonntagszulageBis', fSonntagszulageBis);
                        
                        storage.addItem_px('feiertagszulage', fFeiertagszulage);
                        storage.addItem_px('feiertagszulageVon', fFeiertagszulageVon);
                        storage.addItem_px('feiertagszulageBis', fFeiertagszulageBis);

                        this.storeFormContent_p();
                    } else {
                        alert("Bitte prüfen Sie die Eingaben in den Formularfeldern!");
                    }
                }
                break;
        }
    }
});
// EOF