﻿
function slm_Forms_Submit(sender) {
    var formArea = sender.parents(".slmForm");

    var isValid = true;
    var invalidCount = 0;
    formArea.find(":input").each(function () {
        isValid = ValidateFieldArea($(this).parents("div:first"), invalidCount == 0);
        if (!isValid)
            invalidCount++;

    });

    if (invalidCount == 0) {

        SubmitFormArea(formArea);

    }


}

function slm_Forms_Build() {

    var formArea; var formFieldArea; var formInput;
    $(".slmForm").each(function () {
        ConfigFormFields();
        formArea = $(this);

        formArea.find(".slmFormField").each(function () {
            formFieldArea = $(this);
            formInput = formFieldArea.find(":input");

            if (formFieldArea.attr('required') == 'true') {
                formFieldArea.find('label').append("<span style='color:red;'> * </span>");
                formFieldArea.addClass('slm_ReqFieldForm');
            }
            if (formInput.attr('name').length == 0) {
                formInput.attr('name', formFieldArea.attr('slm_FieldName'));
            }
            switch (formFieldArea.attr('slm_fieldType')) {
                case 'mail':
                    {
                        formInput.addClass('slm_FormExp_Mail');
                        // formInput.keydown(function () { Mascara(this, Area); });
                        break;
                    }
                case 'telefone':
                    {
                        formInput.addClass('slm_FormExp_Phone');
                        formInput.keydown(function () { Mascara(this, Telefone); });
                        formInput.attr('maxlength', 14);
                        break;
                    }
                case 'data':
                    {
                        formInput.addClass('slm_FormExp_Date');
                        formInput.keydown(function () { Mascara(this, Data); });
                        break;
                    }
                case 'cpf':
                    {
                        formInput.addClass('slm_FormExp_CPF');
                        formInput.keydown(function () { Mascara(this, Cpf); });
                        formInput.attr('maxlength', 14);
                        break;
                    }
            }
        });
    });

}

function ClearFormArea(formArea) {
    formArea.find(".slmFormField :input").val('');
}

function SubmitFormArea(formArea) {
    var fieldName; var fieldValue;
    // var formFields = new Array();


    var formFields = formArea.find(":input").serializeArray();
    var formFieldIndex = 0;
    //formArea.attr('disabled', 'disabled');
    formArea.find(":input").attr('disabled', 'disabled');
    if ($(formArea).find('.slm_Form_Result').length == 0) {
        $(formArea).append("<span class='slm_Form_Result'></span>");
    }
    $(formArea).append("<span class='slm_Form_ProcessingOverlay' visibility: hidden;'><img src='/_Layouts/slmcontentengine/images/layout/ajax-loading.gif'><br/>Enviando...</span>");
    var divPosY = formArea.offset().top + (formArea.height() / 2) - 20;
    var divPosX = formArea.offset().left + (formArea.width() / 2);
    $('.slm_Form_ProcessingOverlay').css({ 'left': divPosX + 'px', 'top': divPosY + 'px' }).fadeIn().attr('disabled', '');

    formArea.find("a").hide();

    // Send the data using post and put the results in a div
    $.ajax({
        type: 'POST',
        url: '/_layouts/SLMContentEngine/Pages/FormEngine/FormSender.aspx',
        data: formFields,
        success: function (data) {

            ConfirmMailSent(formArea);
        },
        error: function (data) {
           /* $(formArea).find('.slm_Form_Result').html(data);
            $('.slm_Form_ProcessingOverlay').fadeOut();
            formArea.find("a").show();*/
            ConfirmMailSent(formArea);
        }
    });
    return void (0);


}

function ConfirmMailSent(formArea)
{
 var pathToRedirect;
            if (formArea.find("#slm_FormSettings_RedirectURL").length > 0 && formArea.find("#slm_FormSettings_RedirectURL").val() != '') {
                pathToRedirect = formArea.find("#slm_FormSettings_RedirectURL").val();
                window.location.href = pathToRedirect;
            }
            else {
                $(formArea).animate({ 'height': '15px', "duration": "slow" }, function () { $(formArea).html($(formArea).find('.slm_Form_Result').html('Dados enviados com sucesso.')) });
            }
            $('.slm_Form_ProcessingOverlay').fadeOut();
}

function ValidateField(field) {
    return ValidateFieldArea(field.parents("div:first"), false);
}
function ValidateFieldArea(fieldArea, showAlert) {
    var field = fieldArea.find(":input:first");
    var isValid = true;
    var fieldName = fieldArea.find('label').html();
    if (fieldArea.hasClass('slm_ReqFieldForm')) {
        fieldName = fieldName.split('<')[0];

        if (field.length > 0) {
            isValid = notEmpty(field[0], 'O campo ' + fieldName + ' é obrigatório.', showAlert);
        }
    }
    if (field.val() != '') {
        if (field.hasClass('slm_FormExp_Mail')) {
            isValid = emailValidator(field[0], 'e-Mail inválido.', showAlert);
        }
        if (field.hasClass('slm_FormExp_CPF')) {
            isValid = CheckCPF(field[0], 'CPF inválido.', showAlert);
        }
    }
    if (!isValid) {
        field.addClass('slm_Form_Invalid');
    } else field.removeClass('slm_Form_Invalid');
    return isValid;
}



function ConfigFormFields() {

    $(".slmForm .slmFormField").click(function () {
        $(this).find(":input:first").focus();
    });
    $(".slmForm .slmFormField").hover(function () {
        $(".slmForm div.slmFormField").removeClass("slm_Form_CurrentHoverSection");
        $(this).addClass("slm_Form_CurrentHoverSection");
    });
    $(".slmForm .slmFormField :input").focus(function () {
        $(".slmForm div.slmFormField").removeClass("slm_Form_CurrentHoverSection");
        $(".slmForm div.slmFormField").removeClass("slm_Form_CurrentSection");
        $(this).parents("div:first").addClass("slm_Form_CurrentSection");
    });


    $(".slmForm .slmFormField :input").blur(function () {
        ValidateField($(this));
        $(this).parents("div:first").removeClass("slm_Form_CurrentSection");
    });

}

