﻿var TrabalheConosco = function () {
    var that = {} // o que é público
    var priv = {} // o que é privado

    priv.configurar = function (action) {
        $('#Nome').attr('maxlength', '200');
        $('#Email').attr('maxlength', '50');
        $("#Telefone").mask('(00) 0000-0000Z', { translation: { 'Z': { pattern: /[0-9]/, optional: true } } }).focusout(focusout_telefone);
        $('#Mensagem').attr('maxlength', '2000');
        $('#arquivo').fileupload({
            type: 'POST',
            url: App.baseUrl + 'TrabalheConosco/Upload/',
            dataType: 'json',
            cache: false,
            maxFileSize: 5000000, // Ex.: 10000000 = 10MB
            acceptFileTypes: /(\.|\/)(doc|docx|pdf)$/i,
            autoUpload: true
        })
        .bind('fileuploadadd', function (e, data) {
            $.each(data.files, function (index, file) {
                $("#subfile").val(file.name);
            });
        })
        .bind('fileuploadstart', function (event, data) {
            $(".loader").css("display", "block");
        })
        .bind('fileuploaddone', function (event, data) {
            if (data.result.Success) {
                $(".loader").css("display", "none");
                var json = $.parseJSON(data.result.Content);
                $('#Curriculo').val(json.File);
                $('#ArquivoNome').val(json.Nome);
            }
        });

        priv.prepararValidador();
    };

    function focusout_telefone(event) {
        element = $(this);
        phone = element.val().replace(/\D/g, '');
        $("#Telefone").unmask();
        if (phone.length > 10) {
            setTimeout($("#Telefone").mask('(00) 00000-0000').focusout(focusout_telefone), 10);
        } else {
            setTimeout($("#Telefone").mask('(00) 0000-0000Z', { translation: { 'Z': { pattern: /[0-9]/, optional: true } } }).focusout(focusout_telefone), 10);
        }
    };

    priv.prepararValidador = function () {
        var tmp = App.getDefaultConfigValidator('#formFaleConosco');

        if (tmp !== null) {
            tmp.rules = {
                Nome: {
                    required: true,
                    minlength: 1,
                    maxlength: 200
                },
                Email: {
                    required: true,
                    minlength: 1,
                    maxlength: 50,
                    email: true
                },
                Telefone: {
                    required: true,
                    minlength: 1,
                    maxlength: 20
                },
                AreaInteresse: {
                    required: true,
                },
                Mensagem: {
                    required: true,
                    minlength: 1,
                    maxlength: 2000
                }
            };

            tmp.messages = {
                Nome: {
                    required: window.global.EsteCampoEObrigatorio,
                    minlength: $.validator.format(window.global.EsteCampoDevePossuirNoMinimoXCaracteres),
                    maxlength: $.validator.format(window.global.EsteCampoDevePossuirNoMaximoXCaracteres)
                },
                Email: {
                    required: window.global.EsteCampoEObrigatorio,
                    minlength: $.validator.format(window.global.EsteCampoDevePossuirNoMinimoXCaracteres),
                    maxlength: $.validator.format(window.global.EsteCampoDevePossuirNoMaximoXCaracteres),
                    email: window.global.OEmailInformadoEInvalido
                },
                Telefone: {
                    minlength: $.validator.format(window.global.EsteCampoDevePossuirNoMinimoXCaracteres),
                    maxlength: $.validator.format(window.global.EsteCampoDevePossuirNoMaximoXCaracteres)
                },
                AreaInteresse: {
                    required: window.global.EsteCampoEObrigatorio,
                    min: "Selecione uma opção válida para a Área de Interesse"
                },
                ArquivoNome: {
                    required: window.global.EsteCampoEObrigatorio,
                },
                Mensagem: {
                    required: window.global.EsteCampoEObrigatorio,
                    minlength: $.validator.format(window.global.EsteCampoDevePossuirNoMinimoXCaracteres),
                    maxlength: $.validator.format(window.global.EsteCampoDevePossuirNoMaximoXCaracteres)
                }
            };

            tmp.ignore = '.ignoreValidation';

            tmp.submitHandler = function (form) {
                tmp.submitHandlerBase(form);


                if ($('#ArquivoNome').val() == "") {
                    App.showToastMessage('error', 'Selecione o arquivo de currículo!');
                    return;
                }

                $(".env-msm").attr("disabled", "disabled");
                $(".env-msm").text('Aguarde...');

                var el = $('#formFaleConosco');
                App.blockUI(el);

                $.ajax({
                    type: 'POST',
                    url: App.baseUrl + 'TrabalheConosco/Enviar/',
                    dataType: 'json',
                    contentType: 'application/json; charset=utf-8',
                    cache: false,
                    headers: that.obterToken(),
                    data: priv.obterDados(),
                    success: function (data) {
                        App.onRequestSuccess(data, el);
                    },
                    error: function (XMLHttpRequest, textStatus, errorThrown) {
                        App.onRequestError(XMLHttpRequest, textStatus, errorThrown, el);
                        $(".env-ms").removeAttr("disabled");
                        $(".env-ms").text('enviar curriculo');
                    }
                });

                return false;
            };

            $('#formFaleConosco').validate(tmp);
        }
    };

    priv.obterDados = function () {
        return JSON.stringify({
            Nome: $('#Nome').val(),
            Email: $('#Email').val(),
            Telefone: $('#Telefone').val(),
            AreaInteresse: { Id: $('#AreaInteresse :selected').val(), Nome: $('#AreaInteresse :selected').text() },
            Mensagem: $('#Mensagem').val(),
            Curriculo: { ArquivoNome: $('#ArquivoNome').val() },
        });
    };

    that.obterToken = function () {
        return {
            __RequestVerificationToken: $(":hidden[name='__RequestVerificationToken']").val()
        };
    };

    that.inicializar = function () {
        priv.configurar();
    };

    return that;
}();
