﻿BenefulMap.ModalLoginForm = BenefulMap.ModalForm.extend({
    init: function(modalTitle, modalElements, modalOptions, snippetPath, params, formElements) {
        this._super(modalTitle, modalElements, modalOptions, snippetPath, params, formElements);
        this.forgotPassword = this.getModalDiv() + " " + modalElements.forgotPasswordLink;
        this.backToLogin = this.getModalDiv() + " " + modalElements.backToLoginLink;
        this.openListener("login.open");
        this.closeListener("login.close");
        this.modalToOpenOnLogin = null;
    },
    getModalToOpenOnLogin: function() {
        return this.modalToOpenOnLogin;
    },
    setModalToOpenOnLogin: function(newModal) {
        this.modalToOpenOnLogin = newModal;
    },
    getForgotPassword: function() {
        return this.forgotPassword;
    },
    setForgotPassword: function(forgotPassword) {
        this.forgotPassword = forgotPassword;
    },
    getModalTitle: function() {
        return this.modalOptions.title;
    },
    setModalTitle: function(title) {
        this.modalOptions.title = title;
    },
    getBackToLogin: function() {
        return this.backToLogin;
    },
    setBackToLogin: function(newBackToLogin) {
        this.backToLogin = newBackToLogin;
    },
    serializeFormData: function() {
        var self = this;
        var serializedData = $(this.getFieldsToSerialize()).serializeArray();
        jQuery.each(serializedData, function() {
            if (this.name == "Remember") {
                self.setIndividualFormData(this.name, true);
            } else {
                self.setIndividualFormData(this.name, this.value);
            }
        });
        if (!this.getIndividualFormData('Remember')) {
            this.setIndividualFormData('Remember', false);
        }
        console.log("Form data: ", this.getFormData());
    },
    addModalListeners: function() {
        var self = this;
        this._super();
        this.forgotPasswordListener();
        BenefulMap.openSSLRegistraion(this.getModalDiv() + " .register");
        $(this.getModalDiv() + " .register").click(function(event) {
            //event.preventDefault();
            //$(document).trigger("registration.open", [self.getModalToOpenOnLogin()]);
            self.close();
        });
    },
    forgotPasswordListener: function() {
        var self = this;
        $(this.getForgotPassword()).click(function(event) {
            event.preventDefault();
            $(document).trigger("forgotpassword.open");
            self.close();
        });
    },
    submitFormData: function() {
        var self = this;
        WagWorld.Web.AjaxUtility.LogUserIn(this.getIndividualFormData('EmailAddress'), this.getIndividualFormData('Password'), this.getIndividualFormData('Remember'), self.getModalToOpenOnLogin(), function(result) {
            console.log("Result: ", result);
            var pass = result.value.Pass;
            var reason = result.value.Reason;
            var auxNum = result.value.AuxiliaryNumber;
            if (pass == true) {
                console.info("Login successful");
                self.close();
                if (reason == "vote-dreamdogpark") {
                    if (auxNum == 1) {
                        VotingPH = 1;
                    } else {
                        VotingPH = 2;
                    }
                    VotingLogin = true;
                    $(document).trigger("votedreamdogpark.open", [auxNum]);
                } else {
                    window.location.hash = self.getModalToOpenOnLogin();
                    window.location.reload();
                }
            } else {
                if (reason == "NoAccount" || auxNum == 1 || reason == 9) {
                    self.close();
                    $(document).trigger("registration.open", [self.getModalToOpenOnLogin()]);
                } else {
                    var params = {};
                    params.ph = 1;
                    params.message = result.value.Reason;
                    self.setParams(params);
                    self.populate();
                }
            }
        });
    },
    openListener: function(eventName) {
        var self = this;
        $(document).bind(eventName, function(event, slug, message) {
            console.log("slug:", slug, "message:", message);
            if (slug) {
                self.setModalToOpenOnLogin(slug);
            }
            if (message) {
                var params = {};
                params.ph = 1;
                params.message = message;
                self.setParams(params);
            }
            self.open();
        });
    },
    revertToInitialState: function() {
        this._super();
    }
});




