function FerramentaAlterarSenha(data) {

    var mSelf = this;

    mSelf.Data = ko.observable(new FerramentaAlterarSenhaOpcoes(mSelf));

    mSelf.FerramentaId = data.FerramentaId;

    mSelf.Template = data.Template;

    mSelf.Nome = data.Nome;

    mSelf.Init = function () {
    };
}

function FerramentaAlterarSenhaOpcoes(viewModel) {

    var mSelf = this;
    mSelf.SenhaAtual = ko.observable();
    mSelf.NovaSenha = ko.observable();
    mSelf.CopiaNovaSenha = ko.observable();

    mSelf.CancelarEdicaoSenha = function () {
        mSelf.SenhaAtual("");
        mSelf.NovaSenha("");
        mSelf.CopiaNovaSenha("");
        removeTab($('a[href="#alterarSenha"]').next('button.close').parent('li'), $('a[href="#home"]').parent('li'));
    };

    mSelf.SalvarNovaSenha = function () {

        if (mSelf.SenhaAtual() == "" || mSelf.SenhaAtual() == null) {
            vm.ShowMensagemAlerta("A senha atual deve ser informada.");
            return;
        }

        if (mSelf.NovaSenha() == "" || mSelf.NovaSenha() == null) {
            vm.ShowMensagemAlerta("A nova senha deve ser informada.");
            return;
        }

        if (mSelf.CopiaNovaSenha() == "" || mSelf.CopiaNovaSenha() == null) {
            vm.ShowMensagemAlerta("As senhas digitadas não conferem.");
            return;
        }

        if (mSelf.CopiaNovaSenha() != mSelf.NovaSenha()) {
            vm.ShowMensagemAlerta("As senhas não conferem.");
            return;
        }

        //if (mSelf.ValidaCaracteresInvalidosSenha(mSelf.NovaSenha())) {
        //    vm.ShowMensagemAlerta("Não é permitido caracteres especiais no campo senha da Nova Senha.");
        //    return;
        //}

        //if (mSelf.ValidaCaracteresInvalidosSenha(mSelf.CopiaNovaSenha())) {
        //    vm.ShowMensagemAlerta("Não é permitido caracteres especiais no campo Repetir Nova Senha.");
        //    return;
        //}

        var param = {
            'NovaSenha': mSelf.NovaSenha(),
            'SenhaAtual': mSelf.SenhaAtual()
        };

        $.ajax({
            url: urlGlobal + "Autenticador/Autenticador/SalvarNovaSenha",
            contentType: 'application/json; charset=utf-8',
            dataType: "json",
            type: "POST",
            data: JSON.stringify(param),
            success: function (ret) {

                if (ret.Sucesso) {
                    removeTab($('a[href="#alterarSenha"]').next('button.close').parent('li'), $('a[href="#home"]').parent('li'));
                }
                else
                    vm.ShowMensagemAlerta(ret.MensagemErro);

            },
            complete: function () {
                mSelf.NovaSenha("");
                mSelf.SenhaAtual("");
                mSelf.CopiaNovaSenha("");
                $(".loading-inlog").fadeOut();
            }
        }).fail(function (obj, type) {
            if (type === "parsererror") window.document.write(obj.responseText);
        });
    };

    mSelf.ValidaCaracteresInvalidosSenha = function (valor) {
        var regex = new RegExp("[`´~^*()+{}|;:',<>\ ]+");
        return regex.test(valor);
    };
}