﻿var response;
var form;
var leftToolTipPos;

// Limpa o conteudo do campo quando o valor for igual ao valor inicial
function clearInitialValue(fieldId, initialValue) {
    var field = $("#" + fieldId);
    // Se o valor do campo for igual ao valor inicial
    if (field.val() == initialValue)
        field.val(""); // Limpra o conteúdo do campo   
}

// Atribui o valor inicial do campo quando o campo está vazio
function setInitialValue(fieldId, initialValue) {
    var field = $("#" + fieldId);
    // Se o campo estiver vazio
    if (field.val() == "")
        field.val(initialValue); // Atribui ao campo o valor inicial
}

function showToolTip(idField) {
    var field = $("#"+idField);
    var message = $("[data-valmsg-for='" + idField+"']");

    if (message) {
        message.hide();
        message.css({
            visibility: "visible",
            top: (field.offset().top),
            left: (field.offset().left - 145)
        });
        message.fadeIn();
    }
}

function hideToolTip(idField) {
    $("[data-valmsg-for='" + idField + "']").hide();
}


function setFieldFunctions() {
    $("#Nome")
        .focus(function () { clearInitialValue("Nome", "NOME"); })
        .blur(function () { setInitialValue("Nome", "NOME"); });

    $("#Email")
        .focus(function () { clearInitialValue("Email", "E-MAIL"); })
        .blur(function () { setInitialValue("Email", "E-MAIL"); });

    $("#Message")
        .focus(function () { clearInitialValue("Message", "COMO PODEMOS AJUDAR?"); })
        .blur(function () { setInitialValue("Message", "COMO PODEMOS AJUDAR?"); });

    form.submit(function (event) {
        event.preventDefault();

        clearInitialValue("Nome", "NOME");
        clearInitialValue("Email", "E-MAIL");
        clearInitialValue("Message", "COMO PODEMOS AJUDAR?");
        form.validate();

        if (form.valid()) {
            showLoading();
            
            $.post($(this).attr("action"), $(this).serialize(), function (response) {
                showResult(response);
            }, "json");
        }
        else {
            setInitialValue("Nome", "NOME");
            setInitialValue("Email", "E-MAIL");
            setInitialValue("Message", "COMO PODEMOS AJUDAR?");

            $("#Nome")
                .focus(function () { showToolTip("Nome"); })
                .blur(function () { hideToolTip("Nome"); });
            $("[data-valmsg-for='Nome']").hide();

            $("#Email")
                .focus(function () { showToolTip("Email"); })
                .blur(function () { hideToolTip("Email"); });
            $("[data-valmsg-for='Email']").hide();

            $("#Message")
                .focus(function () { showToolTip("Message"); })
                .blur(function () { hideToolTip("Message"); });
            $("[data-valmsg-for='Message']").hide();


            if ($("#Nome").val() == "NOME") {
                $("#Nome").focus();
            }
        }
    });
}

function showLoading() {
    response.empty();
    response.removeClass("result");

    response.addClass("loading");

    response.append("<img src='../Content/images/loading.gif'>");
    response.append("<h2>Enviando...</h2>");

    response.css({
        width: (form.width()+2),
        height: form.height()}
    );

    response.show();
}

function resetForm() {
    $("#Nome").val("");
    $("#Email").val("");
    $("#Message").val("");
    setInitialValue("Nome", "NOME");
    setInitialValue("Email", "E-MAIL");
    setInitialValue("Message", "COMO PODEMOS AJUDAR?");
}


function showResult(mensagem) {
    response.empty();
    response.removeClass("loading");

    if (!mensagem.Erro) {
        resetForm();
    }


    response.addClass("result");
    response.append("<h2>" + mensagem.Text + "</h2>");

    $("<a href='#'>" + mensagem.LinkText + "</a>").appendTo(response)
        .click(function (event) {
            event.preventDefault();
            response.hide();
    });

    response.css({
        width: (form.width() + 2),
        height: form.height()
    }
    );

    response.show();
}

$().ready(function () {
    document.documentElement.style.overflowX = 'hidden';
    form = $("form");
    response = $("<div/>").prependTo(form);
    
    $.ajaxSetup({
        error: function (result) {
            response.hide();
            createResult({
                Erro: "true",
                Text: "Não foi possivel enviar a mensagem.",
                LinkText: "Tentar novamente."
            });
        }
    });


    // Registra as funções nos campos do formuário
    setFieldFunctions();
});
