﻿/// <reference path="~/js/Geral/Tesla.Library.js" />

window.FotoVideo = {};

FotoVideo.ObterAlbuns = function(form)
{
    $Get('hidFoto').value = null;
    if (FotoVideo.OpcaoTipo == 1) return false;

    var callback = $L('dados => FotoVideo.End_ObtemAlbuns(p1, dados)', form);
    Ajax.Flickr.ObtemAlbuns(page.txtUrlArquivo.value, callback);
}

FotoVideo.End_ObtemAlbuns = function(form, rt)
{
    if (FotoVideo.RetornaErro(rt))
    {
        $Get(form.Combos.ddlAlbuns).DataBind(rt, 'Title', 'PhotosetId');
        $Get(form.Combos.ddlAlbuns).AddAt(0, 'Selecione um album', "")
        $Get(form.Combos.ddlAlbuns).selectedIndex = 0;
        $Get(form.Listas.liFotos).style.display = '';
    }
}

FotoVideo.SelecionaFotoFlickr = function(linkFlickr, urlImagem) {
    $Get('hidFoto').value = urlImagem;

    var imgs = document.getElementsByName("imgFlickr");
    
    for (var i = 0; i < imgs.length; i++) 
    {
        if (imgs[i].parentNode.id != linkFlickr.id)
            imgs[i].style.border = 'solid 2px #cccccc';
        else
            imgs[i].style.border = 'solid 2px #147bd6';
    }
}

FotoVideo.ObtemFotos = function(photoset)
{
    Ajax.Flickr.ObtemFotos(photoset, FotoVideo.End_ObtemFotos);
}

FotoVideo.End_ObtemFotos = function(rt)
{
    if (FotoVideo.RetornaErro(rt))
    {
        page.rptFotos.DataBind(rt);
        window.scroll = new ScrollPanel('ScrollFlickr', 'lnkVolta', 'lnkVai');
    }
}

FotoVideo.AbreDivFoto = function(form) {
    $Get('lbl').innerHTML = 'Email do Flickr';
    $Get('lnkObtem').style.display = '';
    $Get(form.Listas.liDescricaoVideo).style.display = '';
    $Get(form.Combos.ddlAlbuns).style.display = '';  
}

FotoVideo.FechaDivFoto = function(form)
{
    $Get('lbl').innerHTML = 'Link do youtube';
    $Get('lnkObtem').style.display = 'none';
    $Get(form.Listas.liFotos).style.display = 'none';
    $Get(form.Listas.liDescricaoVideo).style.display = 'none';
    $Get(form.Combos.ddlAlbuns).style.display = 'none';
    page.rptFotos.ClearContent();
}

FotoVideo.RetornaErro = function(rt)
{
    if (rt.Codigo == null) return true;

    switch (rt.Codigo)
    {
        case 1: alert('Usuário não encontrado'); break;
        case 2: alert('Campo obrigatório de digitação'); break;
        default: alert(rt.Erro); break;
    }
    return false;
}

FotoVideo.ContadorTextArea = function(textarea, limit, infodiv)
{
    var text = textarea.value; 
    var textlength = text.length;
    var info = document.getElementById(infodiv);
    if(textlength > limit)
    {
        info.innerHTML = String.Format('Você não pode digitar mais que {0} caracteres!', limit);
        textarea.value = text.substr(0,limit);
        return false;
    }
    else
    {
        info.innerHTML = String.Format('{0} caracteres restantes.', (limit - textlength));
        return true;
    }
}

/* -*-*-*-*-*-*-*-*-*-* */

window.Formulario = {};

Formulario.RetornaValor = function(form, objeto)
{
    if (form.Variaveis.TipoFormulario == Tesla.Enums.Formularios.InscricaoPalestra)
        return $Get(objeto).value;
    else
        return $Get(objeto).value;
}

Formulario.SomenteNumeros = function(e) {
    e = (e) ? e : window.event
    var charCode = (e.which) ? e.which : e.keyCode
    if (charCode > 31 && (charCode < 48 || charCode > 57)) {
        status = "Esse campo aceita somente números."
        return false
    }
    status = ""
    return true
}

Formulario.CepInfoBuscar = function(cep, form) {
    if (cep.value.length == 8) {
        var callback = $L('dados => Formulario.End_CepInfoBuscar(p1, dados)', 'Formulario_' + form.Variaveis.Pagina);
        Ajax.DNE.CepInfoBuscar(cep.value, callback);
    } else {
        return false;
    }
}

Formulario.End_CepInfoBuscar = function(formID, rt) {
    if (rt.CEPEncontrado) {
        var form = window[formID];
        $Get(form.Campos.txtLogradouro).value = rt.Logradouro;
        $Get(form.Campos.txtBairro).value = rt.Bairro;
        $Get(form.Combos.ddlPais).SetSelectedValue(1);
        $Get(form.Combos.ddlEstado).SetSelectedValue(rt.Estado.IdRegiao);
        if (rt.TipoLogradouro != undefined)
            $Get(form.Combos.ddlTipoLogradouro).SetSelectedValue(rt.TipoLogradouro.IdTipoLogradouro);

        Formulario.PopulaCidade($Get(form.Combos.ddlEstado), form, rt.Cidade.IdCidade);
    } else {
        alert('CEP não encontrado.');
    }
}




Formulario.PosicionaLiEAceito = function()
{
    var divRegulamento = $Get('divRegulamento2');
    var arrayRetorno = page.GetPosition($Get('lnkDivRegulamento2'));
    divRegulamento.style.display = '';
    divRegulamento.style.top = arrayRetorno[0] - 300 + 'px';
    divRegulamento.style.right = '370px';
}

Formulario.SolicitarReserva = function(idDataValor, idProduto, idTipoProduto)
{
    if (!Validator.IsNumber(idDataValor) || !Validator.IsNumber(idProduto) || !Validator.IsNumber(idTipoProduto))
        return false;
    $Get(window[FormularioInscrevase].Combos.ddlData).SetSelectedValue(idDataValor);
    Formulario.ListarOutrasDatasEProdutos(idProduto, idTipoProduto);
    Tabs.Select($Get(window['tabReservaTurismo']));
}

Formulario.ListarOutrasDatasEProdutos = function(idProduto, idTipoProduto)
{
    var form = window[FormularioInscrevase];
    $Get(form.Combos.ddlOutraData).disabled = true;
    $Get(form.Combos.ddlOutrosProdutos).disabled = true;

    if (!Validator.IsNumber($Get(form.Combos.ddlData).SelectedValue()) || !Validator.IsNumber(idProduto) || !Validator.IsNumber(idTipoProduto))
        return false;

    Ajax.ReservaTurismo.ListarOutrasDatas(idProduto, $Get(form.Combos.ddlData).SelectedValue(), Formulario.End_ListarOutrasDatas);
    Ajax.ReservaTurismo.ListarOutrosProdutos(idTipoProduto, idProduto, $Get(form.Combos.ddlData).SelectedValue(), Formulario.End_ListarOutrosProdutos);
}

Formulario.End_ListarOutrasDatas = function(dados)
{
    var form = window[FormularioInscrevase]; 
    if (dados.length > 0)
    {
        dados.insert({ Text: 'Selecione uma data', Value: 0 }, 0);
        $Get(form.Combos.ddlOutraData).disabled = false;
    }
    else
        dados.insert({ Text: 'Nenhuma data encontrada', Value: 0 }, 0);

    $Get(form.Combos.ddlOutraData).DataBind(dados, 'Text', 'Value');
}

Formulario.End_ListarOutrosProdutos = function(dados)
{
    var form = window[FormularioInscrevase];
    if (dados.length > 0)
    {
        dados.insert({ Nome: 'Selecione um produto', IdProduto: 0 }, 0);
        $Get(form.Combos.ddlOutrosProdutos).disabled = false;
    }
    else
        dados.insert({ Nome: 'Nenhum produto encontrado', IdProduto: 0 }, 0);

    $Get(form.Combos.ddlOutrosProdutos).DataBind(dados, 'Nome', 'IdProduto');
}

Formulario.PopulaCidade = function(estado, form, cidade) {
    $Get(form.Listas.spnCidade).style.display = 'none';
    $Get(form.Listas.spnEventoCidade).style.display = 'none';
    $Get(form.Listas.spnCidadeResumida).style.display = 'none';

    var callback;
    if (cidade == null)
        callback = $L('dados => Formulario.End_PopulaCidade(p1, dados)', 'Formulario_' + form.Variaveis.Pagina);
    else
        callback = $L('dados => Formulario.End_PopulaCidade(p1, dados,' + cidade + ')', 'Formulario_' + form.Variaveis.Pagina);


    Ajax.Cidade.Listar(estado.value, callback);
}

Formulario.End_PopulaCidade = function(formID, rt, cidade) {
    var form = window[formID];
    var dropCidade = false;
    var dropCidadeResumida = false;

    if ($Get(form.Listas.ulEndereco).style.display == '')
        dropCidade = $Get(form.Combos.ddlCidade);
    if ($Get(form.Listas.ulEnderecoResumido).style.display == '')
        dropCidadeResumida = $Get(form.Combos.ddlCidadeResumida);

    if (dropCidade || false) {
        $Get(form.Listas.spnCidade).style.display = '';
        dropCidade.DataBind(rt, 'Nome', 'IdCidade');
        dropCidade.AddAt(0, 'Selecione uma cidade', '0');
        dropCidade.selectedIndex = 0;
        if (cidade != null) {
            dropCidade.SetSelectedValue(cidade);
        }
    }

    if (dropCidadeResumida || false) {
        $Get(form.Listas.spnCidadeResumida).style.display = '';
        dropCidadeResumida.DataBind(rt, 'Nome', 'IdCidade');
        dropCidadeResumida.AddAt(0, 'Selecione uma cidade', '0');
        dropCidadeResumida.selectedIndex = 0;
    }

    if (form.Variaveis.TipoFormulario == Tesla.Enums.Formularios.InscricaoPalestra) {
        $Get(form.Listas.spnEventoCidade).style.display = '';
        $Get(form.Combos.ddlEventoCidade).DataBind(rt, 'Nome', 'IdCidade');
        $Get(form.Combos.ddlEventoCidade).AddAt(0, 'Selecione uma cidade', '0');
        $Get(form.Combos.ddlEventoCidade).selectedIndex = 0;
        if (cidade != null) {
            $Get(form.Combos.ddlEventoCidade).SetSelectedValue(cidade);
        }
    }
}

Formulario.PopulaLoadLojas = function(form)
{
    Ajax.Loja.ListaPorPais(new Function("dados", "Formulario.End_PopulaLojas('Formulario_" + form.Variaveis.Pagina + "', dados);"));
}

Formulario.PopulaLojas = function(cidade, form)
{
    Ajax.Loja.Listar(cidade.value, new Function("dados", "Formulario.End_PopulaLojas('Formulario_" + form.Variaveis.Pagina + "', dados);"));
}

Formulario.End_PopulaLojas = function(formID, dados) {
    var form = window[formID];
    var dropLoja = $Get(form.Combos.ddlLoja);
    dropLoja.options.length = 0;
    var total = dados.Count();
    for (var i = 0; i < total; i++)
        dropLoja.Add(dados[i]['Nome'] + ' - ' + dados[i]['Bairro'], dados[i]['IdLoja']);
    dropLoja.AddAt(0, 'Selecione uma loja');
    dropLoja.selectedIndex = 0;

    if (form.Variaveis.Distribuidor != undefined) $Get(form.Combos.ddlLoja).SetSelectedValue(form.Variaveis.Distribuidor.IdLoja);
}

Formulario.MudaAssuntoTelaContato = function(combo, form)
{
    form.Variaveis.TipoFormulario = combo.SelectedValue();
    /* ------------------- */
    switch (parseInt(form.Variaveis.TipoFormulario))
    {
        case Tesla.Enums.Formularios.Produtos:
            form.Variaveis.IdEmail = Tesla.Enums.TiposDeEmail.Produtos
            form.Variaveis.IdContatoTipoOrigem = Tesla.Enums.TiposDeOrigem.Produtos;
            break;
        case Tesla.Enums.Formularios.NewsLetter:
            form.Variaveis.IdEmail = 0;
            form.Variaveis.IdContatoTipoOrigem = Tesla.Enums.TiposDeOrigem.NewsLetter;
            break;
        case Tesla.Enums.Formularios.ElogiosCriticasSugestoes:
            form.Variaveis.IdEmail = Tesla.Enums.TiposDeEmail.ElogiosCriticasSugestoes
            form.Variaveis.IdContatoTipoOrigem = Tesla.Enums.TiposDeOrigem.ElogiosCriticasSugestoes;
            break;
        case Tesla.Enums.Formularios.Depoimento:
            form.Variaveis.IdEmail = Tesla.Enums.TiposDeEmail.Depoimento
            form.Variaveis.IdContatoTipoOrigem = Tesla.Enums.TiposDeOrigem.Depoimento;
            break;            
    }
    Formulario.LoadPaginaFormularios(form, combo.SelectedValue());
}

Formulario.VerificaOutroPais = function(form)
{

    if ($Get(form.Combos.ddlPais).value == "1" || $Get(form.Combos.ddlPais).value == '')
    {
        $Get(form.Listas.ulEnderecoOutroPais).style.display = 'none';
        $Get(form.Listas.liTipoLogradouro).style.display = '';
        $Get(form.Listas.liCep).style.display = '';
        $Get(form.Listas.liEndereco).style.display = '';
        $Get(form.Listas.liBairro).style.display = '';
        $Get(form.Listas.liEstado).style.display = '';
        return true;
    }
    else
    {
        $Get(form.Listas.ulEnderecoOutroPais).style.display = '';
        $Get(form.Listas.liTipoLogradouro).style.display = 'none';
        $Get(form.Listas.liCep).style.display = 'none';
        $Get(form.Listas.liEndereco).style.display = 'none';
        $Get(form.Listas.liBairro).style.display = 'none';
        $Get(form.Listas.liEstado).style.display = 'none';
        return false;
    }
}

Formulario.MostraOpcaoLista = function(form)
{
    if ($Get(form.Combos.ddlAssunto).value == Tesla.Enums.Formularios.ElogiosCriticasSugestoes)
        form.OpcaoLista.style.display = '';
    else
        form.OpcaoLista.style.display = 'none';
}

Formulario.HabilitaCasos = function(caso, form)
{
    switch (caso)
    {
        case 0: //* Neste caso deve ser mostrado somente o campo de e-mail para o usuário inserir os dados.
            form.ListTelefone.style.display = 'none'; form.ListCelular.style.display = 'none';
            break;
        case 1: //*** Neste caso deve ser mostrado somente o campo de nome para o usuário inserir os dados.
            form.listaOutrosDadosPessoais.style.display = 'none';
            break;
    }
}

Formulario.ChecatodosAdicionais = function(objeto)
{
    var checked = objeto.checked;
    checks = document.getElementsByName(objeto.name);
    for (var i = 0; i < checks.length; i++)
        checks[i].checked = checked;
}

Formulario.LoadPaginaFormularios = function(form, combo)
{
    if (!($Get('div_controle_box_form')))
        return;

    for (var fieldID in form.Combos)
    {
        var campo = form.Combos[fieldID];
        if ($Get(campo) && $Get(campo).tagName && $Get(campo).tagName.toLowerCase() == 'select')
            Tesla.UI.ListControl.BindFunctions($Get(campo));
    }

    form.BoxLoginPequeno = $Get(form.Listas.divBoxLoginPequeno); form.BoxLoginPequeno.style.display = 'none';
    form.Observacoes = $Get(form.Listas.ulObservacoes); form.Observacoes.style.display = 'none';
    form.Assunto = $Get(form.Listas.ulAssunto); form.Assunto.style.display = 'none';
    form.OpcaoLista = $Get(form.Listas.ulOpcaoLista); form.OpcaoLista.style.display = 'none';
    form.InfPessoais = $Get(form.Listas.ulInfPessoais); form.InfPessoais.style.display = 'none';
    form.Contato = $Get(form.Listas.ulContato); form.Contato.style.display = 'none';
    form.Endereco = $Get(form.Listas.ulEndereco); form.Endereco.style.display = 'none';
    form.EnderecoResumido = $Get(form.Listas.ulEnderecoResumido); form.EnderecoResumido.style.display = 'none';
    form.Interessado = $Get(form.Listas.ulInteressado); form.Interessado.style.display = 'none';
    form.Adicionais = $Get(form.Listas.ulAdicionais); form.Adicionais.style.display = 'none';
    form.Loja = $Get(form.Listas.ulLoja); form.Loja.style.display = 'none';
    form.Formacao = $Get(form.Listas.ulFormacao); form.Formacao.style.display = 'none';
    form.Idioma = $Get(form.Listas.ulIdioma); form.Idioma.display = 'none';
    form.Experiencia = $Get(form.Listas.ulExperiencia); form.Experiencia.style.display = 'none';
    form.AreaAtuacao = $Get(form.Listas.ulAreaAtuacao); form.AreaAtuacao.style.display = 'none';
    form.ListTelefone = $Get(form.Listas.liTelefone); form.ListTelefone.style.display = '';
    form.ListCelular = $Get(form.Listas.liCelular); form.ListCelular.style.display = '';
    form.listaOutrosDadosPessoais = $Get(form.Listas.liOutrosDadosPessoais); form.listaOutrosDadosPessoais.style.display = '';
    form.listaRoteiro = $Get(form.Listas.ulRoteiro); form.listaRoteiro.style.display = 'none';
    form.ConcursoCulturalFotoVideo = $Get(form.Listas.ulConcursoCulturalFotoVideo); form.ConcursoCulturalFotoVideo.style.display = 'none';
    form.ConcursoCulturalFrase = $Get(form.Listas.ulConcursoCulturalFrase); form.ConcursoCulturalFrase.style.display = 'none';
    form.AgendaEvento = $Get(form.Listas.ulInfEvento); form.AgendaEvento.style.display = 'none';
    document.getElementsByName(form.Campos.chkEnviar)[0].style.display = 'none';
    $Get(form.Listas.spnConcursoCulturalLieAceito).style.display = 'none';
    $Get(form.Listas.liDescricaoVideo).style.display = 'none';

    //apenas para testes...
    /*
    form.BoxLoginPequeno.style.display = '';
    form.Observacoes.style.display = '';
    form.Assunto.style.display = '';
    form.OpcaoLista.style.display = '';
    form.InfPessoais.style.display = '';
    form.Contato.style.display = '';
    form.Endereco.style.display = '';
    form.EnderecoResumido.style.display = '';
    form.Interessado.style.display = '';
    form.Adicionais.style.display = '';
    form.Loja.style.display = '';
    form.Formacao.style.display = '';
    form.Idioma.style.display = '';
    form.Experiencia.style.display = '';
    form.AreaAtuacao.style.display = '';
    form.OpcaoLista.style.display = '';
    form.listaRoteiro.style.display = '';
    */

    if (form.Variaveis.TipoFormulario == '')
    {
        form.BoxLoginPequeno.style.display = '';
        form.Assunto.style.display = '';
    }

    var data = new Date();
    $Get(form.Combos.ddlAno1).options.lenght = 20; $Get(form.Combos.ddlAno2).options.lenght = 20; $Get(form.Combos.ddlAno3).options.lenght = 20;

    $Get(form.Combos.ddlAno1).options[0] = new Option("Ano", "");
    $Get(form.Combos.ddlAno2).options[0] = new Option("Ano", "");
    $Get(form.Combos.ddlAno3).options[0] = new Option("Ano", "");
    for (var i = 20; i >= -5; i--)
    {
        $Get(form.Combos.ddlAno1).options[i + 6] = new Option(data.getFullYear() - i, data.getFullYear() - i);
        $Get(form.Combos.ddlAno2).options[i + 6] = new Option(data.getFullYear() - i, data.getFullYear() - i);
        $Get(form.Combos.ddlAno3).options[i + 6] = new Option(data.getFullYear() - i, data.getFullYear() - i);
    }

    Formulario.MostraOpcaoLista(form);

    form.Variaveis.TipoFormulario = combo || form.Variaveis.TipoFormulario;
    switch (parseInt(form.Variaveis.TipoFormulario))
    {
        case Tesla.Enums.Formularios.Login:
            //form.BoxLoginPequeno.style.display = '';
            form.Observacoes.style.display = '';
            form.Assunto.style.display = '';
            form.InfPessoais.style.display = '';
            form.Contato.style.display = '';
            form.Endereco.style.display = '';
            //form.Interessado.style.display = '';
            form.Adicionais.style.display = '';
            if(form.Variaveis.Distribuidor == null) form.Loja.style.display = '';
            form.Formacao.style.display = '';
            form.Idioma.style.display = '';
            form.Experiencia.style.display = '';
            form.AreaAtuacao.style.display = '';
            break;
        case Tesla.Enums.Formularios.Cadastro:
            //form.BoxLoginPequeno.style.display = '';
            form.InfPessoais.style.display = '';
            form.Contato.style.display = '';
            form.Endereco.style.display = '';
            form.Interessado.style.display = '';
            form.Adicionais.style.display = '';
            break;
        case Tesla.Enums.Formularios.Produtos:
            //form.BoxLoginPequeno.style.display = '';
            form.Assunto.style.display = '';
            form.InfPessoais.style.display = '';
            form.Contato.style.display = '';
            form.EnderecoResumido.style.display = '';
            form.Interessado.style.display = '';
            form.Adicionais.style.display = '';
            if (form.Variaveis.Distribuidor == null) form.Loja.style.display = '';
            form.Observacoes.style.display = '';
            break;
        case Tesla.Enums.Formularios.NewsLetter:
            //form.BoxLoginPequeno.style.display = '';
            form.Assunto.style.display = '';
            form.InfPessoais.style.display = '';
            form.Contato.style.display = '';
            form.Endereco.style.display = '';
            form.Adicionais.style.display = '';
            break;
        case Tesla.Enums.Formularios.ElogiosCriticasSugestoes:
            //form.BoxLoginPequeno.style.display = '';
            form.Observacoes.style.display = '';
            form.Assunto.style.display = '';
            form.InfPessoais.style.display = '';
            form.Contato.style.display = '';
            form.EnderecoResumido.style.display = '';
            form.Adicionais.style.display = '';
            if (form.Variaveis.Distribuidor == null) form.Loja.style.display = '';
            break;
        case Tesla.Enums.Formularios.Depoimento:
            //form.BoxLoginPequeno.style.display = '';
            form.Observacoes.style.display = '';
            form.Assunto.style.display = '';
            form.InfPessoais.style.display = '';
            form.Contato.style.display = '';
            form.EnderecoResumido.style.display = '';
            Formulario.HabilitaCasos(0, form);
            break;
        case Tesla.Enums.Formularios.TrabalheConosco:
            //form.BoxLoginPequeno.style.display = '';
            form.Observacoes.style.display = '';
            form.InfPessoais.style.display = '';
            form.Contato.style.display = '';
            form.Endereco.style.display = '';
            form.Formacao.style.display = '';
            form.Idioma.style.display = '';
            form.Experiencia.style.display = '';
            form.AreaAtuacao.style.display = '';
            break;
        case Tesla.Enums.Formularios.MatriculaGeral:
        case Tesla.Enums.Formularios.MatriculaCursoIdiomas:
        case Tesla.Enums.Formularios.MatriculaFerias:
        case Tesla.Enums.Formularios.MatriculaEnsinoMedio:
        case Tesla.Enums.Formularios.ProdutoModelo1Inscreva:
            //Tesla.Enums.Formularios.ProdutoEstudoIdioma: Era isso antes
            //form.BoxLoginPequeno.style.display = '';
            form.Observacoes.style.display = '';
            form.InfPessoais.style.display = '';
            form.Contato.style.display = '';
            form.EnderecoResumido.style.display = '';
            form.Adicionais.style.display = '';
            if (form.Variaveis.Distribuidor == null) form.Loja.style.display = '';
            break;
        case Tesla.Enums.Formularios.ProdutoTrabalhoCandidate:
            //form.BoxLoginPequeno.style.display = '';
            form.Observacoes.style.display = '';
            form.InfPessoais.style.display = '';
            form.Contato.style.display = '';
            form.EnderecoResumido.style.display = '';
            form.Adicionais.style.display = '';
            if (form.Variaveis.Distribuidor == null) form.Loja.style.display = '';
            form.Idioma.style.display = '';
            form.Formacao.style.display = '';
            form.Experiencia.style.display = '';
            break;
        case Tesla.Enums.Formularios.ProdutoTrabalhoCV:
            //form.BoxLoginPequeno.style.display = '';
            form.Observacoes.style.display = '';
            form.InfPessoais.style.display = '';
            form.Contato.style.display = '';
            form.Endereco.style.display = '';
            form.Adicionais.style.display = '';
            if (form.Variaveis.Distribuidor == null) form.Loja.style.display = '';
            form.Formacao.style.display = '';
            //form.Idioma.style.display = '';
            form.Experiencia.style.display = '';
            form.AreaAtuacao.style.display = '';
            break;
        case Tesla.Enums.Formularios.ProdutoTurismoGeral:
            //form.BoxLoginPequeno.style.display = '';
            form.Observacoes.style.display = '';
            form.InfPessoais.style.display = '';
            form.Contato.style.display = '';
            form.EnderecoResumido.style.display = '';
            form.Adicionais.style.display = '';
            if (form.Variaveis.Distribuidor == null) form.Loja.style.display = '';
            //estava comentado
            //form.Idioma.style.display = '';
            form.listaRoteiro.style.display = '';
            break;
        case Tesla.Enums.Formularios.ProdutoTurismoIndependente:
            //form.BoxLoginPequeno.style.display = '';
            form.Observacoes.style.display = '';
            form.InfPessoais.style.display = '';
            form.Contato.style.display = '';
            form.EnderecoResumido.style.display = '';
            form.Adicionais.style.display = '';
            if (form.Variaveis.Distribuidor == null) form.Loja.style.display = '';
            //form.Idioma.style.display = '';
            break;
        case Tesla.Enums.Formularios.ProdutoTurismoIsis:
            //form.BoxLoginPequeno.style.display = '';
            form.Observacoes.style.display = '';
            form.InfPessoais.style.display = '';
            form.Contato.style.display = '';
            form.Endereco.style.display = '';
            form.Adicionais.style.display = '';
            if (form.Variaveis.Distribuidor == null) form.Loja.style.display = '';
            break;
        case Tesla.Enums.Formularios.ProdutoTurismoVtm: case Tesla.Enums.Formularios.PassagemAerea: case Tesla.Enums.Formularios.Acomocacao:
            //form.BoxLoginPequeno.style.display = '';
            form.Observacoes.style.display = '';
            form.InfPessoais.style.display = '';
            form.Contato.style.display = '';
            form.EnderecoResumido.style.display = '';
            form.Adicionais.style.display = '';
            if (form.Variaveis.Distribuidor == null) form.Loja.style.display = '';
            break;
        case Tesla.Enums.Formularios.PassagemTrem:
            form.Observacoes.style.display = '';
            form.InfPessoais.style.display = '';
            form.Contato.style.display = '';
            form.EnderecoResumido.style.display = '';
            form.Adicionais.style.display = '';
            if (form.Variaveis.Distribuidor == null) form.Loja.style.display = '';
            break;
        case Tesla.Enums.Formularios.ConsursoCultural:
            //form.BoxLoginPequeno.style.display = '';
            if (form.Variaveis.TipoConcursoCultural == 1)
                form.ConcursoCulturalFrase.style.display = '';
            if (form.Variaveis.TipoConcursoCultural == 2)
                form.ConcursoCulturalFotoVideo.style.display = '';
            form.InfPessoais.style.display = '';
            form.Contato.style.display = '';
            form.Endereco.style.display = '';
            form.Adicionais.style.display = '';
            document.getElementsByName(form.Campos.chkEnviar)[0].style.display = '';
            $Get(form.Listas.spnConcursoCulturalLieAceito).style.display = '';
            break;
        case Tesla.Enums.Formularios.ABN:
            // form.BoxLoginPequeno.style.display = '';
            form.InfPessoais.style.display = '';
            form.Contato.style.display = '';
            form.Endereco.style.display = '';
            break;
        case Tesla.Enums.Formularios.InscricaoPalestra:
            //form.InfPessoais.style.display = '';
            //form.Contato.style.display = '';
            //form.EnderecoResumido.style.display = '';
            //form.Observacoes.style.display = '';
            //Formulario.HabilitaCasos(1, form);
            form.AgendaEvento.style.display = '';
            break;
        case Tesla.Enums.Formularios.Orcamento:
            form.Observacoes.style.display = '';
            form.InfPessoais.style.display = '';
            form.Contato.style.display = '';
            form.Endereco.style.display = '';
            form.Adicionais.style.display = '';
            if (form.Variaveis.Distribuidor == null) form.Loja.style.display = '';
            break;
        case Tesla.Enums.Formularios.DisneyIPC:
            form.InfPessoais.style.display = '';
            form.Contato.style.display = '';
            //form.Endereco.style.display = '';
            form.Endereco.style.display = '';
            form.Observacoes.style.display = '';
            form.Adicionais.style.display = '';
            form.Formacao.style.display = '';
            form.Idioma.style.display = '';
            form.Experiencia.style.display = '';
            form.AreaAtuacao.style.display = '';
            break;
        case Tesla.Enums.Formularios.ExperienceWorkAndLearning:
            form.InfPessoais.style.display = '';
            form.Contato.style.display = '';
            form.EnderecoResumido.style.display = '';
            form.Observacoes.style.display = '';
            form.Adicionais.style.display = '';
            if (form.Variaveis.Distribuidor == null) form.Loja.style.display = '';
            break;
        case Tesla.Enums.Formularios.DisneyGuestRelations:
            form.InfPessoais.style.display = '';
            form.Contato.style.display = '';
            form.EnderecoResumido.style.display = '';
            form.Observacoes.style.display = '';
            form.Adicionais.style.display = '';
            form.Loja.style.display = 'none';
            break;
    }
}

Formulario.ValidacaoOpcoes = function(name)
{
    var objetoForm = document.getElementsByName(name);
    for (var i = 0; i < objetoForm.length; i++)
        if (objetoForm[i].checked) return true;
    return false;
}

//1 - campo obrigatorio
//2 - campo de data Invalida
//3 - campo de numerico inválido
//4 - campo combobox obrigatorio
//5 - campo option/check obrigatorio
//6 - campo email invalido
//7 - campo data com só mm/yyyy

Formulario.Validacao = function(validacoes, naoExibeAlert)
{
    for (var i = 0; i < validacoes.length; i++)
    {
        var retorno = true;
        switch (validacoes[i].Tipo)
        {
            case 1:
                if ($Get(validacoes[i].id).value.Trim() == '')
                    retorno = false;
                break;
            case 2:
                if (Validator.IsDate($Get(validacoes[i].id).value) == null)
                {
                    retorno = false;
                    break;
                }
                if ($Get(validacoes[i].id).value.length != 10)
                {
                    retorno = false;
                    break;
                }
                break;
            case 3:
                if ($Get(validacoes[i].id).value.Trim() == '')
                    retorno = true;
                else if (!Validator.IsNumber($Get(validacoes[i].id).value))
                    retorno = false;
                break;
            case 4:
                if ($Get(validacoes[i].id).selectedIndex <= 0)
                    retorno = false;
                break;
            case 5:
                if (Formulario.ValidacaoOpcoes(validacoes[i].id) == false)
                    retorno = false;
                break;
            case 6:
                if (!isValidEmailAddress($Get(validacoes[i].id).value))
                    retorno = false;
                break;
            case 7:
                if (!Validator.IsDate('01/' + $Get(validacoes[i].id).value))
                    retorno = false;
                break;
        }
        if (!retorno)
        {
            if (naoExibeAlert != true)
            {
                alert(Tesla.Enums.MensagensFormularios.GetDescription(validacoes[i].msg));
                if ($Get(validacoes[i].id) != null)
                    $Get(validacoes[i].id).focus();
            }
            return false;
        }
    }
    return true;
}

Formulario.ValidaFormInfPessoais = function(form)
{
    if (form.InfPessoais.style.display == 'none') return true;

    var validacaoes = [];
    validacaoes.push({ Tipo: 1, id: form.Campos.txtNome, msg: 'Nome' });
    
    if (form.BoxLoginPequeno.style.display == '')
    {
        validacaoes.push({ Tipo: 1, id: form.Campos.txtLogin, msg: 'Login' });
        validacaoes.push({ Tipo: 1, id: form.Campos.txtSenha, msg: 'Senha' });
    }
    if (form.listaOutrosDadosPessoais.style.display == '')
    {
        validacaoes.push({ Tipo: 1, id: form.Campos.txtNascimento, msg: 'Nascimento' });
        validacaoes.push({ Tipo: 2, id: form.Campos.txtNascimento, msg: 'NascimentoInvalido' });
        validacaoes.push({ Tipo: 5, id: form.Campos.optSexo, msg: 'Sexo' });
    }

    if (!Formulario.Validacao(validacaoes)) return false;

    return true;
}

Formulario.ValidaFormEvento = function(form) {
    if (form.AgendaEvento.style.display == 'none') return true;

    var validacaoes = [];
    validacaoes.push({ Tipo: 1, id: form.Campos.txtEventoNome, msg: 'Nome' });
    validacaoes.push({ Tipo: 1, id: form.Campos.txtEventoEmail, msg: 'Email' });
    validacaoes.push({ Tipo: 6, id: form.Campos.txtEventoEmail, msg: 'EmailInvalido' });
    validacaoes.push({ Tipo: 1, id: form.Campos.txtEventoNascimento, msg: 'Nascimento' });
    validacaoes.push({ Tipo: 3, id: form.Campos.txtEventoTelefoneDDD, msg: 'TelefoneDDDInvalido' });
    validacaoes.push({ Tipo: 3, id: form.Campos.txtEventoTelefone, msg: 'TelefoneInvalido' });

    if (!Formulario.Validacao(validacaoes)) return false;
    
    if ($Get(form.Campos.txtEventoTelefoneDDD).value.Trim() == '' && $Get(form.Campos.txtEventoTelefone).value.Trim() == '') {
        alert(Tesla.Enums.MensagensFormularios.GetDescription('TelefoneDDD'));
        $Get(form.Campos.txtEventoTelefoneDDD).focus();
        return false;
    }

    if (($Get(form.Campos.txtEventoTelefoneDDD).value.Trim() != '' || $Get(form.Campos.txtEventoTelefone).value.Trim() != '') && $Get(form.Campos.txtEventoTelefoneDDD).value.Trim() == '') {
        alert(Tesla.Enums.MensagensFormularios.GetDescription('TelefoneDDD'));
        $Get(form.Campos.txtEventoTelefoneDDD).focus();
        return false;
    }

    if (($Get(form.Campos.txtEventoTelefoneDDD).value.Trim() != '' || $Get(form.Campos.txtEventoTelefone).value.Trim() != '') && $Get(form.Campos.txtEventoTelefone).value.Trim() == '') {
        alert(Tesla.Enums.MensagensFormularios.GetDescription('Telefone'));
        $Get(form.Campos.txtEventoTelefone).focus();
        return false;
    }

    if (($Get(form.Campos.txtEventoTelefoneDDD).value.Trim() != '' && $Get(form.Campos.txtEventoTelefone).value.Trim() != '') && $Get(form.Combos.ddlEventoTipoTelefone).selectedIndex <= 0) {
        alert(Tesla.Enums.MensagensFormularios.GetDescription('TelefoneTipo'));
        $Get(form.Combos.ddlEventoTipoTelefone).focus();
        return false;
    }

    validacaoes.push({ Tipo: 4, id: form.Combos.ddlEventoEstado, msg: 'Estado' });
    validacaoes.push({ Tipo: 4, id: form.Combos.ddlEventoCidade, msg: 'Cidade' });
   
    if (!Formulario.Validacao(validacaoes)) return false;

    return true;
}

Formulario.ValidaFormAssunto = function(form)
{
    if (form.Assunto.style.display == 'none') return true;

    var validacaoes = [];
    validacaoes.push({ Tipo: 4, id: form.Combos.ddlAssunto, msg: 'Assunto' });
    
    if (!Formulario.Validacao(validacaoes))
        return false;

    if ($Get(form.Combos.ddlAssunto).value != Tesla.Enums.Formularios.ElogiosCriticasSugestoes)
        return true;

    validacaoes.push({ Tipo: 4, id: form.Combos.ddlOpcaoLista, msg: 'AssuntoLista' });
    
    if (!Formulario.Validacao(validacaoes)) return false;        

    return true;
}

Formulario.ValidaFormContato = function(form)
{
    if (form.Contato.style.display == 'none') return true;

    var validacaoes = [];
    var validacaoesFone = [];
    var validacaoesCel = [];
    validacaoes.push({ Tipo: 1, id: form.Campos.txtEmail, msg: 'Email' });
    validacaoes.push({ Tipo: 6, id: form.Campos.txtEmail, msg: 'EmailInvalido' });

    if (!Formulario.Validacao(validacaoes)) return false;
    if (form.ListTelefone.style.display == 'none') return true;

    validacaoes.push({ Tipo: 3, id: form.Campos.txtTelefoneDDD, msg: 'TelefoneDDDInvalido' });
    validacaoes.push({ Tipo: 3, id: form.Campos.txtCelularDDD, msg: 'CelularDDDInvalido' });
    validacaoes.push({ Tipo: 3, id: form.Campos.txtTelefone, msg: 'TelefoneInvalido' });
    validacaoes.push({ Tipo: 3, id: form.Campos.txtCelular, msg: 'CelularInvalido' });
    if (!Formulario.Validacao(validacaoes)) return false;


    if ($Get(form.Campos.txtCelularDDD).value.Trim() == '' && $Get(form.Campos.txtCelular).value.Trim() == '' &&
        $Get(form.Campos.txtTelefoneDDD).value.Trim() == '' && $Get(form.Campos.txtTelefone).value.Trim() == '')
    {
        alert(Tesla.Enums.MensagensFormularios.GetDescription('TelefoneDDD'));
        $Get(form.Campos.txtTelefoneDDD).focus();
        return false;
    }

    if (($Get(form.Campos.txtTelefoneDDD).value.Trim() != '' || $Get(form.Campos.txtTelefone).value.Trim() != '') && $Get(form.Campos.txtTelefoneDDD).value.Trim() == '')
    {
        alert(Tesla.Enums.MensagensFormularios.GetDescription('TelefoneDDD'));
        $Get(form.Campos.txtTelefoneDDD).focus();
        return false;
    }

    if (($Get(form.Campos.txtTelefoneDDD).value.Trim() != '' || $Get(form.Campos.txtTelefone).value.Trim() != '') && $Get(form.Campos.txtTelefone).value.Trim() == '')
    {
        alert(Tesla.Enums.MensagensFormularios.GetDescription('Telefone'));
        $Get(form.Campos.txtTelefone).focus();
        return false;
    }

    if (($Get(form.Campos.txtCelularDDD).value.Trim() != '' || $Get(form.Campos.txtCelular).value.Trim() != '') && $Get(form.Campos.txtCelularDDD).value.Trim() == '')
    {
        alert(Tesla.Enums.MensagensFormularios.GetDescription('CelularDDD'));
        $Get(form.Campos.txtCelularDDD).focus();
        return false;
    }

    if (($Get(form.Campos.txtCelularDDD).value.Trim() != '' || $Get(form.Campos.txtCelular).value.Trim() != '') && $Get(form.Campos.txtCelular).value.Trim() == '')
    {
        alert(Tesla.Enums.MensagensFormularios.GetDescription('Celular'));
        $Get(form.Campos.txtCelular).focus();
        return false;
    }

    if (($Get(form.Campos.txtTelefoneDDD).value.Trim() != '' && $Get(form.Campos.txtTelefone).value.Trim() != '') && $Get(form.Combos.ddlTipoTelefone).selectedIndex <= 0)
    {
        alert(Tesla.Enums.MensagensFormularios.GetDescription('TelefoneTipo'));
        $Get(form.Combos.ddlTipoTelefone).focus();
        return false;
    }

    chkAdicionais = document.getElementsByName(form.Campos.chkAdicionais);
    if (chkAdicionais == null) return true;
    if (chkAdicionais[chkAdicionais.length - 1].checked)
    {
        if ($Get(form.Campos.txtCelularDDD).value.Trim() == '')
        {
            alert(Tesla.Enums.MensagensFormularios.GetDescription('CelularDDD'));
            $Get(form.Campos.txtCelularDDD).focus();
            return false;
        }
        if ($Get(form.Campos.txtCelular).value.Trim() == '')
        {
            alert(Tesla.Enums.MensagensFormularios.GetDescription('Celular'));
            $Get(form.Campos.txtCelular).focus();
            return false;
        }
    }
    return true;
}

Formulario.ValidaFormEndereco = function(form)
{
    if (parseInt(form.Variaveis.TipoFormulario) == Tesla.Enums.Formularios.NewsLetter) return true;
    if (form.Endereco.style.display == 'none') return true;

    var validacaoes = [];

    if ($Get(form.Combos.ddlPais).SelectedValue() != '' && $Get(form.Combos.ddlPais).SelectedText() != 'Brasil')
    {
        validacaoes.push({ Tipo: 1, id: form.Campos.txtEnderecoOutroPais, msg: 'EnderecoOutroPais' });
        if (!Formulario.Validacao(validacaoes))
            return false;
    }
    if ($Get(form.Listas.liEstado).style.display == 'none') return true;

    switch (parseInt(form.Variaveis.TipoFormulario))
    {
        case Tesla.Enums.Formularios.ConsursoCultural:
        case Tesla.Enums.Formularios.Orcamento:
        case Tesla.Enums.Formularios.ProdutoTurismoIsis:
        case Tesla.Enums.Formularios.ProdutoTrabalhoCV:
        case Tesla.Enums.Formularios.DisneyIPC:
            validacaoes.push({ Tipo: 4, id: form.Combos.ddlEstado, msg: 'Estado' });
            validacaoes.push({ Tipo: 4, id: form.Combos.ddlCidade, msg: 'Cidade' });
            break;
        default:
            validacaoes.push({ Tipo: 4, id: form.Combos.ddlPais, msg: 'Pais' });
            validacaoes.push({ Tipo: 4, id: form.Combos.ddlEstado, msg: 'Estado' });
            validacaoes.push({ Tipo: 4, id: form.Combos.ddlCidade, msg: 'Cidade' });
            validacaoes.push({ Tipo: 4, id: form.Combos.ddlTipoLogradouro, msg: 'Logradouro' });
            validacaoes.push({ Tipo: 1, id: form.Campos.txtCep, msg: 'Cep' });
            validacaoes.push({ Tipo: 3, id: form.Campos.txtCep, msg: 'CepInvalido' });
            validacaoes.push({ Tipo: 1, id: form.Campos.txtLogradouro, msg: 'Endereco' });
            validacaoes.push({ Tipo: 1, id: form.Campos.txtNumero, msg: 'Numero' });
            validacaoes.push({ Tipo: 1, id: form.Campos.txtBairro, msg: 'Bairro' });
            break;
    }
    if (!Formulario.Validacao(validacaoes)) return false;

    return true;
}

Formulario.ValidaFormEnderecoResumido = function(form)
{
    if (form.EnderecoResumido.style.display == 'none') return true;

    var validacaoes = [];
    validacaoes.push({ Tipo: 4, id: form.Combos.ddlEstadoResumido, msg: 'Estado' });
    validacaoes.push({ Tipo: 4, id: form.Combos.ddlCidadeResumida, msg: 'Cidade' });

    if (!Formulario.Validacao(validacaoes)) return false;

    return true;
}

Formulario.ValidaFormInteressado = function(form)
{
    if (form.Interessado.style.display == 'none') return true;

    var validacaoes = [];
    validacaoes.push({ Tipo: 5, id: form.Campos.chkInteresse, msg: 'EstouInteressado' });

    if (!Formulario.Validacao(validacaoes)) return false;

    return true;
}

Formulario.ValidaFormObservacoes = function(form)
{
    if (form.Observacoes.style.display == 'none') return true;

    switch (parseInt(form.Variaveis.TipoFormulario))
    {
        case Tesla.Enums.Formularios.Produtos: case Tesla.Enums.Formularios.ElogiosCriticasSugestoes: case Tesla.Enums.Formularios.Depoimento:
            var validacaoes = [];
            validacaoes.push({ Tipo: 1, id: form.Campos.txtObservacoes, msg: 'Observacoes' });
            if (!Formulario.Validacao(validacaoes)) return false; 
            break;
    }
    return true;
}

Formulario.ValidaFormAdicionais = function(form)
{
    /* segundo o excel nenhum dos formularios este campo é obrigatório
    if (form.Adicionais.style.display == 'none') return true;
    validacaoes.push({ Tipo: 5, id: form.Campos.chkAdicionais, msg: 'InformacoesAdicionais' });
    if (!Formulario.Validacao(validacaoes)) return false;
    */
    return true;
}

Formulario.ValidaFormFormacao = function(form)
{
    if (form.Formacao.style.display == 'none') return true;

    var validacaoes = [];
    validacaoes.push({ Tipo: 4, id: form.Combos.ddlEscolaridade1, msg: 'Escolaridade' });
    validacaoes.push({ Tipo: 1, id: form.Campos.txtInstituicao1, msg: 'Instituicao' });
    validacaoes.push({ Tipo: 1, id: form.Campos.txtCurso1, msg: 'Curso' });
    validacaoes.push({ Tipo: 4, id: form.Combos.ddlAno1, msg: 'UltimoAno' });

    if ($Get(form.Campos.txtInstituicao2).value.Trim() != '' ||
        $Get(form.Campos.txtCurso2).value.Trim() != '' ||
        $Get(form.Combos.ddlAno2).value.Trim() != '')
    {
        validacaoes.push({ Tipo: 1, id: form.Campos.txtInstituicao2, msg: 'Instituicao' });
        validacaoes.push({ Tipo: 1, id: form.Campos.txtCurso2, msg: 'Curso' });
        validacaoes.push({ Tipo: 4, id: form.Combos.ddlAno2, msg: 'UltimoAno' });
    }

    if ($Get(form.Campos.txtInstituicao3).value.Trim() != '' ||
        $Get(form.Campos.txtCurso3).value.Trim() != '' ||
        $Get(form.Combos.ddlAno3).value.Trim() != '')
    {
        validacaoes.push({ Tipo: 1, id: form.Campos.txtInstituicao3, msg: 'Instituicao' });
        validacaoes.push({ Tipo: 1, id: form.Campos.txtCurso3, msg: 'Curso' });
        validacaoes.push({ Tipo: 4, id: form.Combos.ddlAno3, msg: 'UltimoAno' });
    }    

    if (!Formulario.Validacao(validacaoes)) return false;

    return true;
}

Formulario.ValidaFormIdioma = function(form)
{
    /*de acordo com o ultimo excel em nenhum dos formularios isto é abrigatório
    if (form.Idioma.style.display == 'none') return true;
    if (form.ClickNivelIdioma == null)
    {
        alert(Tesla.Enums.MensagensFormularios.GetDescription('NivelIdioma'));
        return false;
    }
    */
    return true;
}

Formulario.ValidaFormExperiencia = function(form)
{
    /*de acordo com o ultimo excel em nenhum dos formularios isto é abrigatório,*/
    if (form.Experiencia.style.display == 'none') return true;
    var validacaoes = [];

    if ($Get(form.Campos.txtEmpresa1).value.Trim() != '' ||
        $Get(form.Campos.txtCargo1).value.Trim() != '' ||
        $Get(form.Campos.txtDe1).value.Trim() != '' ||
        $Get(form.Campos.txtAte1).value.Trim() != '' ||
        $Get(form.Campos.txtDescricao1).value.Trim() != '')
    {
        validacaoes.push({ Tipo: 1, id: form.Campos.txtEmpresa1, msg: 'Empresa' });
        validacaoes.push({ Tipo: 1, id: form.Campos.txtCargo1, msg: 'Cargo' });
        validacaoes.push({ Tipo: 1, id: form.Campos.txtDe1, msg: 'PeriodoDe' });
        validacaoes.push({ Tipo: 7, id: form.Campos.txtDe1, msg: 'PeriodoDeInvalido' });
        validacaoes.push({ Tipo: 1, id: form.Campos.txtAte1, msg: 'PeriodoAte' });
        validacaoes.push({ Tipo: 7, id: form.Campos.txtAte1, msg: 'PeriodoAteInvalido' });
        validacaoes.push({ Tipo: 1, id: form.Campos.txtDescricao1, msg: 'Descricao' });
    }

    if ($Get(form.Campos.txtEmpresa2).value.Trim() != '' ||
        $Get(form.Campos.txtCargo2).value.Trim() != '' ||
        $Get(form.Campos.txtDe2).value.Trim() != '' ||
        $Get(form.Campos.txtAte2).value.Trim() != '' ||
        $Get(form.Campos.txtDescricao2).value.Trim() != '')
    {

        validacaoes.push({ Tipo: 1, id: form.Campos.txtEmpresa2, msg: 'Empresa' });
        validacaoes.push({ Tipo: 1, id: form.Campos.txtCargo2, msg: 'Cargo' });
        validacaoes.push({ Tipo: 1, id: form.Campos.txtDe2, msg: 'PeriodoDe' });
        validacaoes.push({ Tipo: 7, id: form.Campos.txtDe2, msg: 'PeriodoDeInvalido' });
        validacaoes.push({ Tipo: 1, id: form.Campos.txtAte2, msg: 'PeriodoAte' });
        validacaoes.push({ Tipo: 7, id: form.Campos.txtAte2, msg: 'PeriodoAteInvalido' });
        validacaoes.push({ Tipo: 1, id: form.Campos.txtDescricao2, msg: 'Descricao' });
    }

    if ($Get(form.Campos.txtEmpresa3).value.Trim() != '' ||
        $Get(form.Campos.txtCargo3).value.Trim() != '' ||
        $Get(form.Campos.txtDe3).value.Trim() != '' ||
        $Get(form.Campos.txtAte3).value.Trim() != '' ||
        $Get(form.Campos.txtDescricao3).value.Trim() != '')
    {
        validacaoes.push({ Tipo: 1, id: form.Campos.txtEmpresa3, msg: 'Empresa' });
        validacaoes.push({ Tipo: 1, id: form.Campos.txtCargo3, msg: 'Cargo' });
        validacaoes.push({ Tipo: 1, id: form.Campos.txtDe3, msg: 'PeriodoDe' });
        validacaoes.push({ Tipo: 7, id: form.Campos.txtDe3, msg: 'PeriodoDeInvalido' });
        validacaoes.push({ Tipo: 1, id: form.Campos.txtAte3, msg: 'PeriodoAte' });
        validacaoes.push({ Tipo: 7, id: form.Campos.txtAte3, msg: 'PeriodoAteInvalido' });
        validacaoes.push({ Tipo: 1, id: form.Campos.txtDescricao3, msg: 'Descricao' });    
    }
    
    if (!Formulario.Validacao(validacaoes)) return false;

    return true;
}

Formulario.ValidaFormLoja = function(form)
{
    if (form.Loja.style.display == 'none') return true;

    var validacaoes = [];
    validacaoes.push({ Tipo: 4, id: form.Combos.ddlLoja, msg: 'LojaSTB' });
    
    if (!Formulario.Validacao(validacaoes)) return false;

    return true;
}

Formulario.ValidaAreaAtuacao = function(form)
{
    if (form.AreaAtuacao.style.display == 'none') return true;

    var validacaoes = [];
    validacaoes.push({ Tipo: 5, id: form.Campos.chkAreaAtuacao, msg: 'AreaAtuacao' });
    if ($Get('chkAreaAtuacao_Outra').checked)
        validacaoes.push({ Tipo: 1, id: form.Campos.txtAreaAtuacao_Outra, msg: 'OutraAreaAtuacao' });

    if (!Formulario.Validacao(validacaoes)) return false;

    return true;
}
Formulario.ValidaRoteiro = function(form)
{
    if (form.listaRoteiro.style.display == 'none') return true;

    var validacaoes = [];
    validacaoes.push({ Tipo: 4, id: form.Combos.ddlData, msg: 'PrimeiraOpcaoRoteiro' });
    if ($Get(form.Combos.ddlOutraData).disabled == false)
        validacaoes.push({ Tipo: 4, id: form.Combos.ddlOutraData, msg: 'SegundaOpcaoRoteiro' });
    if ($Get(form.Combos.ddlOutrosProdutos).disabled == false)
        validacaoes.push({ Tipo: 4, id: form.Combos.ddlOutrosProdutos, msg: 'TerceiraOpcaoRoteiro' });
    
    if (!Formulario.Validacao(validacaoes)) return false;

    return true;
}

Formulario.ValidaConcursoCulturalFotoVideo = function(form) {
    if (form.Variaveis.TipoConcursoCultural != 2)
        return true;

    var validacaoes = [];

    if (document.getElementsByName(form.Campos.rblTipo)[0].checked)//Video
    {
        //window.alert('Video');
        validacaoes.push({ Tipo: 1, id: form.Campos.txtTitulo, msg: 'TituloVideo' });
        validacaoes.push({ Tipo: 1, id: form.Campos.txtUrlArquivo, msg: 'LinkYoutube' });
    }
    else if (document.getElementsByName(form.Campos.rblTipo)[1].checked) //Foto
    {
        //window.alert('Foto');
        validacaoes.push({ Tipo: 1, id: form.Campos.txtTitulo, msg: 'TituloFoto' });
        validacaoes.push({ Tipo: 1, id: form.Campos.txtDescricao, msg: 'DescricaoFoto' });
        validacaoes.push({ Tipo: 1, id: form.Campos.txtUrlArquivo, msg: 'EmailFlickr' });
        validacaoes.push({ Tipo: 1, id: $Get('hidFoto').id, msg: 'SelecionaFotoFlickr' });       
    }

    validacaoes.push({ Tipo: 5, id: form.Campos.chkEnviar, msg: 'LiEAceito' });

    //    if ($Get(form.Campos.txtUrlArquivo).value.indexOf('youtube') == -1) {
    //        if ($Get('hidFoto').value == '') {
    //            alert($Get('lbl').innerHTML + " requerido");
    //            return false;
    //        }
    //    }

    if (!Formulario.Validacao(validacaoes)) {
        //window.alert('validacao retornou false');
        return false;
    }

    //window.alert('validacao retornou true');
    return true;
}

Formulario.ValidaConcursoCulturalFrase = function(form)
{
    if (form.Variaveis.TipoConcursoCultural != 1) 
        return true;

    var validacaoes = [];
    
    validacaoes.push({ Tipo: 1, id: form.Campos.txtFrase, msg: 'Frase' });
    validacaoes.push({ Tipo: 5, id: form.Campos.chkEnviar, msg: 'LiEAceito' });

    if (!Formulario.Validacao(validacaoes))       
        return false;    

    return true;
}

Formulario.ValidaForm = function(form)
{
    if (!Formulario.ValidaFormInfPessoais(form)) return false;
    if (!Formulario.ValidaFormAssunto(form)) return false;
    if (!Formulario.ValidaFormContato(form)) return false;
    if (!Formulario.ValidaFormEndereco(form)) return false;
    if (!Formulario.ValidaFormEnderecoResumido(form)) return false;
    if (!Formulario.ValidaFormInteressado(form)) return false;
    if (!Formulario.ValidaFormObservacoes(form)) return false;
    if (!Formulario.ValidaFormAdicionais(form)) return false;
    if (!Formulario.ValidaFormFormacao(form)) return false;
    if (!Formulario.ValidaFormIdioma(form)) return false;
    if (!Formulario.ValidaFormExperiencia(form)) return false;
    if (!Formulario.ValidaAreaAtuacao(form)) return false;
    if (!Formulario.ValidaFormLoja(form)) return false;
    if (!Formulario.ValidaRoteiro(form)) return false;
    if (!Formulario.ValidaConcursoCulturalFotoVideo(form)) return false;
    if (!Formulario.ValidaConcursoCulturalFrase(form)) return false;
    if (!Formulario.ValidaFormEvento(form)) return false;
    return true;
}

Formulario.PopulaDadosOption = function(name)
{
    var option = document.getElementsByName(name);
    for (var i = 0; i < option.length; i++)
        if (option[i].checked) return option[i].value;
    return null;
}

Formulario.PopulaDadosEvento = function(form) {
    if (form.AgendaEvento.style.display == 'none') return true;

    if (form.Variaveis.TipoFormulario == Tesla.Enums.Formularios.InscricaoPalestra) 
    {
        contato.DataNascimento = $Date($Get(form.Campos.txtEventoNascimento).value);
        contato.IdCidade = $Get(form.Combos.ddlEventoCidade).value;
        contato.idTipoTelefoneServico = $Get(form.Combos.ddlEventoTipoTelefone).value;
        
        if (contato.IdDistribuidor == null || contato.IdDistribuidor == 0) 
        {
            //Evento não é de distribuidor
            contato.ParticipanteEvento.IdRegiao = $Get(form.Combos.ddlEventoEstado).value;
            contato.ParticipanteEvento.Nome = $Get(form.Campos.txtEventoNome).value;
            contato.ParticipanteEvento.idTipoTelefoneServico = $Get(form.Combos.ddlEventoTipoTelefone).value;
            contato.ParticipanteEvento.Email = $Get(form.Campos.txtEventoEmail).value;
            contato.ParticipanteEvento.DddTelefone = $Get(form.Campos.txtEventoTelefoneDDD).value;
            contato.ParticipanteEvento.Telefone = $Get(form.Campos.txtEventoTelefone).value;
            contato.ParticipanteEvento.Ramal = '';
            contato.ParticipanteEvento.DddCelular = '';
            contato.ParticipanteEvento.Celular = '';
            //contato.ParticipanteEvento.IdCidade = $Get(form.Combos.ddlEventoCidade).value;
                        
            contato.ParticipanteEvento.Observacao = '';
            if (Formulario.IdEvento != null) {
                contato.ParticipanteEvento.IdEvento = parseInt(Formulario.IdEvento);
                form.Variaveis.IdTipoProduto = 0;
            }
        }
        else
        {
            //Evento de Distribuidor
            contato.DistribuidorParticipanteEvento.IdRegiao = $Get(form.Combos.ddlEventoEstado).value;
            contato.DistribuidorParticipanteEvento.Nome = $Get(form.Campos.txtEventoNome).value;
            contato.DistribuidorParticipanteEvento.IdTipoTelefoneServico = $Get(form.Combos.ddlEventoTipoTelefone).value;
            contato.DistribuidorParticipanteEvento.Email = $Get(form.Campos.txtEventoEmail).value;
            contato.DistribuidorParticipanteEvento.DddTelefone = $Get(form.Campos.txtEventoTelefoneDDD).value;
            contato.DistribuidorParticipanteEvento.Telefone = $Get(form.Campos.txtEventoTelefone).value;
            contato.DistribuidorParticipanteEvento.Ramal = '';
            contato.DistribuidorParticipanteEvento.DddCelular = '';
            contato.DistribuidorParticipanteEvento.Celular = '';
            //contato.DistribuidorParticipanteEvento.IdCidade = $Get(form.Combos.ddlEventoCidade).value;
            
            contato.DistribuidorParticipanteEvento.Observacao = '';
            if (Formulario.IdEvento != null) {
                contato.DistribuidorParticipanteEvento.IdEvento = parseInt(Formulario.IdEvento);
                form.Variaveis.IdTipoProduto = 0;
            }
        }
    }
}

Formulario.PopulaDadosInfPessoais = function(form) 
{
    if (form.InfPessoais.style.display == 'none') 
        return true;
    
    if (form.Variaveis.TipoFormulario == Tesla.Enums.Formularios.InscricaoPalestra)
    {
        if (contato.IdDistribuidor == null || contato.IdDistribuidor == 0)
            contato.ParticipanteEvento.Nome = $Get(form.Campos.txtNome).value;
        else
            contato.DistribuidorParticipanteEvento.Nome = $Get(form.Campos.txtNome).value;
    }
    else 
    {
        contato.Nome = $Get(form.Campos.txtNome).value;
        contato.IdTipoLogradouro = $Get(form.Combos.ddlTipoLogradouro).value;
        contato.DataNascimento = $Date($Get(form.Campos.txtNascimento).value);
        contato.Sexo = Formulario.PopulaDadosOption(form.Campos.optSexo);
    }
}

Formulario.PopulaDadosContato = function(form) 
{
    if (form.Contato.style.display == 'none') 
        return true;
    
    if (form.Variaveis.TipoFormulario == Tesla.Enums.Formularios.InscricaoPalestra) 
    {
        if (contato.IdDistribuidor == null || contato.IdDistribuidor == 0) 
        {
            contato.ParticipanteEvento.idTipoTelefoneServico = $Get(form.Combos.ddlTipoTelefone).value;
            contato.ParticipanteEvento.Email = $Get(form.Campos.txtEmail).value;
            contato.ParticipanteEvento.DddTelefone = $Get(form.Campos.txtTelefoneDDD).value;
            contato.ParticipanteEvento.Telefone = $Get(form.Campos.txtTelefone).value;
            contato.ParticipanteEvento.Ramal = $Get(form.Campos.txtRamal).value;
            contato.ParticipanteEvento.DddCelular = $Get(form.Campos.txtCelularDDD).value;
            contato.ParticipanteEvento.Celular = $Get(form.Campos.txtCelular).value;
        }
        else
        {
            contato.DistribuidorParticipanteEvento.idTipoTelefoneServico = $Get(form.Combos.ddlTipoTelefone).value;
            contato.DistribuidorParticipanteEvento.Email = $Get(form.Campos.txtEmail).value;
            contato.DistribuidorParticipanteEvento.DddTelefone = $Get(form.Campos.txtTelefoneDDD).value;
            contato.DistribuidorParticipanteEvento.Telefone = $Get(form.Campos.txtTelefone).value;
            contato.DistribuidorParticipanteEvento.Ramal = $Get(form.Campos.txtRamal).value;
            contato.DistribuidorParticipanteEvento.DddCelular = $Get(form.Campos.txtCelularDDD).value;
            contato.DistribuidorParticipanteEvento.Celular = $Get(form.Campos.txtCelular).value;
        }
    }
    else 
    {
        contato.idTipoTelefoneServico = $Get(form.Combos.ddlTipoTelefone).value;
        contato.Email = $Get(form.Campos.txtEmail).value;
        contato.DddTelefone = $Get(form.Campos.txtTelefoneDDD).value;
        contato.Telefone = $Get(form.Campos.txtTelefone).value;
        contato.Ramal = $Get(form.Campos.txtRamal).value;
        contato.DddCelular = $Get(form.Campos.txtCelularDDD).value;
        contato.Celular = $Get(form.Campos.txtCelular).value;
    }
}

Formulario.PopulaDadosAssunto = function(form)
{
    if (form.Assunto.style.display == 'none') return true;
    
    contato.AssuntoLista = $Get(form.Combos.ddlAssunto).value;
    contato.IdContatoAssunto = contato.AssuntoLista;
    if (contato.AssuntoLista == Tesla.Enums.Formularios.ElogiosCriticasSugestoes)
        contato.OpcaoLista = $Get(form.Combos.ddlOpcaoLista).value;
}

Formulario.PopulaDadosEndereco = function(form)
{
    if (form.Endereco.style.display == 'none') return true;

    contato.IdPais = $Get(form.Combos.ddlPais).value;
    if (contato.IdPais == 1)
    {
        contato.Cep = $Get(form.Campos.txtCep).value;
        contato.Logradouro = $Get(form.Campos.txtLogradouro).value;
        contato.Complemento = $Get(form.Campos.txtComplemento).value;
        contato.Numero = $Get(form.Campos.txtNumero).value;
        contato.Bairro = $Get(form.Campos.txtBairro).value;
    }
    else
        contato.EnderecoOutroPais = $Get(form.Campos.txtEnderecoOutroPais).value;

    if ($Get(form.Combos.ddlCidade).selectedIndex > 0)
        contato.IdCidade = $Get(form.Combos.ddlCidade).value;
    if ($Get(form.Combos.ddlCidadeResumida).selectedIndex > 0)
        contato.IdCidade = $Get(form.Combos.ddlCidadeResumida).value;

    if ($Get(form.Combos.ddlEstado).selectedIndex > 0)
        contato.IdRegiao = $Get(form.Combos.ddlEstado).value;
    if ($Get(form.Combos.ddlEstadoResumido).selectedIndex > 0)
        contato.IdRegiao = $Get(form.Combos.ddlEstadoResumido).value;            
        
}

Formulario.PopulaDadosEnderecoResumido = function(form)
{
    if (form.EnderecoResumido.style.display == 'none') 
        return true;
    
    if ($Get(form.Combos.ddlCidadeResumida).selectedIndex == 0)
        return true;
            
    if (form.Variaveis.TipoFormulario == Tesla.Enums.Formularios.InscricaoPalestra)
    {
        if (contato.IdDistribuidor == null || contato.IdDistribuidor == 0) 
        {
            contato.ParticipanteEvento.IdCidade = $Get(form.Combos.ddlCidadeResumida).value;
            contato.ParticipanteEvento.IdRegiao = $Get(form.Combos.ddlEstadoResumido).value;
        }
        else
        {
            contato.DistribuidorParticipanteEvento.IdCidade = $Get(form.Combos.ddlCidadeResumida).value;
            contato.DistribuidorParticipanteEvento.IdRegiao = $Get(form.Combos.ddlEstadoResumido).value;
        }
    }
    else
    {
        contato.IdCidade = $Get(form.Combos.ddlCidadeResumida).value;
        contato.IdRegiao = $Get(form.Combos.ddlEstadoResumido).value;
    }
}

Formulario.PopulaDadosInteressado = function(form)
{
    if (form.Interessado.style.display == 'none') return true;        

    var chkInteresse = document.getElementsByName( form.Campos.chkInteresse );
    window.ArrayContatoProduto = new Array();
    for (var i = 0; i < chkInteresse.length; i++)
    {
        if (chkInteresse[i].checked == false) continue;

        window.ContatoProduto = {};
        ContatoProduto.idProdutoContato = chkInteresse[i].value;
        ArrayContatoProduto.push(ContatoProduto);
        ContatoProduto = null;
    }
    if (ArrayContatoProduto == null || ArrayContatoProduto.length == 0) return true;

    contato.Produto = ArrayContatoProduto;
}

Formulario.PopulaDadosAdicionais = function(form)
{
    if (form.Adicionais.style.display == 'none') return true;

    chkAdicionais = document.getElementsByName( form.Campos.chkAdicionais );
    
    window.ArrayContatoAdicionais = new Array();
    for (var i = 0; i < chkAdicionais.length; i++)
    {
        if (chkAdicionais[i].checked == false || chkAdicionais[i].value == 0) continue;

        window.ContatoAdicionais = {};
        ContatoAdicionais.IdInformacao = chkAdicionais[i].value;
        ArrayContatoAdicionais.push(ContatoAdicionais);
        ContatoAdicionais = null;
    }
    if (ArrayContatoAdicionais == null || ArrayContatoAdicionais.length == 0)
        return true;

    contato.InformacaoContato = ArrayContatoAdicionais;
}

Formulario.PopulaDadosFormacao = function(form)
{
    if (form.Formacao.style.display == 'none') return true;

    if ($Get(form.Campos.txtInstituicao1).value.Trim() == "") return true;

    window.ArrayContatoFormacao = new Array();
    window.ContatoFormacao = {};
    ContatoFormacao.IdFormacao = $Get(form.Combos.ddlEscolaridade1).value;
    ContatoFormacao.Instituicao = $Get(form.Campos.txtInstituicao1).value;
    ContatoFormacao.Curso = $Get(form.Campos.txtCurso1).value;
    ContatoFormacao.AnoFormacao = $Get(form.Combos.ddlAno1).value;
    ArrayContatoFormacao.push(ContatoFormacao);
    ContatoFormacao = null;
    contato.FormacaoProfissional = ArrayContatoFormacao;

    if ($Get(form.Campos.txtInstituicao2).value.Trim() == "") return true;

    window.ContatoFormacao = {};
    ContatoFormacao.IdFormacao = $Get(form.Combos.ddlEscolaridade1).value;
    ContatoFormacao.Instituicao = $Get(form.Campos.txtInstituicao2).value;
    ContatoFormacao.Curso = $Get(form.Campos.txtCurso2).value;
    ContatoFormacao.AnoFormacao = $Get(form.Combos.ddlAno2).value;
    ArrayContatoFormacao.push(ContatoFormacao);
    ContatoFormacao = null;
    contato.FormacaoProfissional = ArrayContatoFormacao;

    if ($Get(form.Campos.txtInstituicao3).value.Trim() == "") return true;

    window.ContatoFormacao = {};
    ContatoFormacao.IdFormacao = $Get(form.Combos.ddlEscolaridade1).value;
    ContatoFormacao.Instituicao = $Get(form.Campos.txtInstituicao3).value;
    ContatoFormacao.Curso = $Get(form.Campos.txtCurso3).value;
    ContatoFormacao.AnoFormacao = $Get(form.Combos.ddlAno3).value;
    ArrayContatoFormacao.push(ContatoFormacao);
    ContatoFormacao = null;
    contato.FormacaoProfissional = ArrayContatoFormacao;
}

Formulario.PopulaDadosNivel = function(form) {
    if (form.Idioma.style.display == 'none') return true;

    window.ArrayIdioma = new Array();

    for (var a = 0; a < form.Campos.rbNivel.length; a++) {
        var rbNivel = document.getElementsByName(form.Campos.rbNivel[a]);
        for (var i = 0; i < rbNivel.length - 1; i++) {
            if (rbNivel[i].checked == false || rbNivel[i].id == 'idNulo')
                continue;

            window.Idioma = {};
            Idioma.IdIdioma = rbNivel[i].value.Split('_')[0];
            Idioma.IdNivelIdioma = rbNivel[i].value.Split('_')[1];

            //alert('Idioma/Nivel:' + rbNivel[i].value)
            //alert('Idioma:' + Idioma.IdIdioma); 
            //alert('Nivel Idioma:' + Idioma.IdNivelIdioma); 

            ArrayIdioma.push(Idioma);
            Idioma = null;
        }
    }

    if (ArrayIdioma == null || ArrayIdioma.length == 0) return true;

    contato.NivelIdioma = ArrayIdioma;
    //alert('contato.NivelIdioma:' + contato.NivelIdioma); 
}

Formulario.PopulaDadosExperiencia = function(form)
{
    if (form.Experiencia.style.display == 'none')
        return true;

    window.ArrayContatoExperiencia = new Array();

    if ($Get(form.Campos.txtEmpresa1).value.Trim() == "") return true;

    window.ContatoExperiencia = {};
    ContatoExperiencia.Empresa = $Get(form.Campos.txtEmpresa1).value;
    if ($Get(form.Campos.txtDe1).value.Trim() != "")
        ContatoExperiencia.DataInicio = $Get(form.Campos.txtDe1).value;
    if ($Get(form.Campos.txtAte1).value.Trim() != "")
        ContatoExperiencia.DataFim = $Get(form.Campos.txtAte1).value;
    ContatoExperiencia.Cargo = $Get(form.Campos.txtCargo1).value;
    ContatoExperiencia.DescricaoAtividades = $Get(form.Campos.txtDescricao1).value;
    ArrayContatoExperiencia.push(ContatoExperiencia);
    contato.ExperienciaProfissional = ArrayContatoExperiencia;

    if ($Get(form.Campos.txtEmpresa2).value.Trim() == "") return true;

    window.ContatoExperiencia = {};
    ContatoExperiencia.Empresa = $Get(form.Campos.txtEmpresa2).value;
    if ($Get(form.Campos.txtDe2).value.Trim() != "")
        ContatoExperiencia.DataInicio = $Get(form.Campos.txtDe2).value;
    if ($Get(form.Campos.txtAte2).value.Trim() != "")
        ContatoExperiencia.DataFim = $Get(form.Campos.txtAte2).value;
    ContatoExperiencia.Cargo = $Get(form.Campos.txtCargo2).value;
    ContatoExperiencia.DescricaoAtividades = $Get(form.Campos.txtDescricao2).value;
    ArrayContatoExperiencia.push(ContatoExperiencia);
    contato.ExperienciaProfissional = ArrayContatoExperiencia;

    if ($Get(form.Campos.txtEmpresa3).value.Trim() == "") return true;

    window.ContatoExperiencia = {};
    ContatoExperiencia.Empresa = $Get(form.Campos.txtEmpresa3).value;
    if ($Get(form.Campos.txtDe3).value.Trim() != "")
        ContatoExperiencia.DataInicio = $Get(form.Campos.txtDe3).value;
    if ($Get(form.Campos.txtAte3).value.Trim() != "")
        ContatoExperiencia.DataFim = $Get(form.Campos.txtAte3).value;
    ContatoExperiencia.Cargo = $Get(form.Campos.txtCargo3).value;
    ContatoExperiencia.DescricaoAtividades = $Get(form.Campos.txtDescricao3).value;
    ArrayContatoExperiencia.push(ContatoExperiencia);
    contato.ExperienciaProfissional = ArrayContatoExperiencia;
}

Formulario.PopulaDadosAreaAtuacao = function(form)
{
    if (form.AreaAtuacao.style.display == 'none') return true;

    chkAreaAtuacao = document.getElementsByName(form.Campos.chkAreaAtuacao);
    window.ArrayAreaAtuacao = new Array();

    for (var i = 0; i < chkAreaAtuacao.length; i++)
    {
        if (chkAreaAtuacao[i].checked == false) continue;

        window.ContatoAreaAtuacao = {};
        if (chkAreaAtuacao[i].value == 999)
            ContatoAreaAtuacao.NomeOutraArea = $Get(form.Campos.txtAreaAtuacao_Outra).value;
        else if (chkAreaAtuacao[i].value == 998)
            ContatoAreaAtuacao.IcEstagio = true; //definir.... Formulario.PopulaDadosOption(form.Campos.OptAreaAtuacao);
        else
            ContatoAreaAtuacao.IdArea1 = chkAreaAtuacao[i].value;
        ArrayAreaAtuacao.push(ContatoAreaAtuacao);
        ContatoAreaAtuacao = null;
    }
    if (ArrayAreaAtuacao == null || ArrayAreaAtuacao.length == 0) return true;

    contato.ContatoAreaAtuacao = ArrayAreaAtuacao;
}

Formulario.PopulaDadosRoteiro = function(form)
{
    if (form.listaRoteiro.style.display == 'none') return true;

    contato.IdDataValor1 = $Get(form.Combos.ddlData).SelectedValue();
    if ($Get(form.Combos.ddlOutraData).disabled == false)
        contato.IdDataValor2 = $Get(form.Combos.ddlOutraData).SelectedValue();
    if ($Get(form.Combos.ddlOutrosProdutos).disabled == false)
        contato.IdDataValor3 = $Get(form.Combos.ddlOutrosProdutos).SelectedValue();
}

Formulario.PopulaDadosConcursoCultural = function(form)
{
    if (form.ConcursoCulturalFrase.style.display == '')
    {
        contato.ConcursoParticipante = {};
        contato.ConcursoParticipante.IdConcurso = page.QueryString['idconcurso'];
        contato.ConcursoParticipante.Frase = $Get(form.Campos.txtFrase).value;
    }
    if (form.ConcursoCulturalFotoVideo.style.display == '')
    {
        contato.ConcursoParticipante = {};
        contato.ConcursoParticipante.IdConcurso = page.QueryString['idconcurso'];
        contato.ConcursoParticipante.TituloArquivo = $Get(form.Campos.txtTitulo).value;
        contato.ConcursoParticipante.Descricao = $Get(form.Campos.txtDescricao).value;

        if ($Get(form.Campos.txtUrlArquivo).value.indexOf('youtube') == -1)
            contato.ConcursoParticipante.UrlArquivo = $Get('hidFoto').value;
        else
            contato.ConcursoParticipante.UrlArquivo = $Get(form.Campos.txtUrlArquivo).value;
    }
}

Formulario.PopulaDadosGerais = function(form) {
    contato.IcAtivo = true;
    contato.Url = document.location.href;
    contato.NomeProduto = form.Variaveis.NomeProduto;

    if (form.Variaveis.TipoFormulario == Tesla.Enums.Formularios.InscricaoPalestra) 
    {
        if (Formulario.IdEvento != null) 
        {
            if (contato.IdDistribuidor == null || contato.IdDistribuidor == 0) 
                contato.ParticipanteEvento.IdEvento = parseInt(Formulario.IdEvento);
            else
                contato.DistribuidorParticipanteEvento.IdEvento = parseInt(Formulario.IdEvento);
            
            form.Variaveis.IdTipoProduto = 0;
        }
    }
    
    if (form.Variaveis.IdProduto != null && form.Variaveis.IdProduto != '')
        contato.IdProduto = parseInt(form.Variaveis.IdProduto);

    if (form.Variaveis.IdTipoProduto != null && form.Variaveis.IdTipoProduto != '')
        contato.IdTipoProduto = parseInt(form.Variaveis.IdTipoProduto);

    if (form.Variaveis.IdEmail != null && form.Variaveis.IdEmail != '')
        contato.IdEmail = parseInt(form.Variaveis.IdEmail);

    if (form.BoxLoginPequeno.style.display == '')
        contato.Senha = $Get(form.Campos.txtSenha).value;

    if (form.VagaTrabalheConosco != null)
        contato.IdVaga = Formulario.VagaTrabalheConosco.IdVaga;

    if (form.Observacoes.style.display == '') 
    {    
        if (form.Variaveis.TipoFormulario == Tesla.Enums.Formularios.InscricaoPalestra)
        {
            if (contato.IdDistribuidor == null || contato.IdDistribuidor == 0)
                contato.ParticipanteEvento.Observacao = $Get(form.Campos.txtObservacoes).value;
            else
                contato.DistribuidorParticipanteEvento.Observacao = $Get(form.Campos.txtObservacoes).value;    
        }
        else
            contato.Observacao = $Get(form.Campos.txtObservacoes).value;
    }
    
    if (form.Loja.style.display == '')
        contato.IdLoja = $Get(form.Combos.ddlLoja).SelectedValue();
    
    if (form.Loja.style.display != '' && $Get(form.Combos.ddlLoja).value != 'Selecione uma loja')
        contato.IdLoja = $Get(form.Combos.ddlLoja).SelectedValue();
//    else 
//    {
//        contato.IdLoja = 0; 
//    }
}

Formulario.PopulaDadosDistribuidor = function(form) 
{
    if (form.Variaveis.Distribuidor != undefined) 
    {
        contato.IdDistribuidor = form.Variaveis.Distribuidor.IdDistribuidor;
        contato.IdLoja = form.Variaveis.Distribuidor.IdLoja;
    }
}

Formulario.PopulaDadosPassagemAerea = function(form)
{
    window.booking = '';
    window.passagemAerea = '';
    switch (form.Variaveis.TipoFormulario)
    {
        case Tesla.Enums.Formularios.PassagemTrem:
            contato.XmlBooking = $Get('preXmlBooking').innerHTML;
            break;
        case Tesla.Enums.Formularios.PassagemAerea: case Tesla.Enums.Formularios.Acomocacao: //case Tesla.Enums.Formularios.ProdutoTurismoVtm: nao tem xml neste caso!
            contato.XmlPassagemAerea = $Get('preXmlPassagem').innerHTML;
            break;
        case Tesla.Enums.Formularios.Orcamento:

            dataOrcamento = {}
            contato.AssistenciaMedica = {};

            var plano = document.getElementsByName('plano');
            for (var i = 0; i < plano.length; i++)
                if (plano[i].checked) contato.AssistenciaMedica.TipoPlano = plano[i].value;

            //TODO: WORKAROUND DO BUG DO TESLA.LIBRARY, QUANDO ATUALIZAR A VESAO DESFAZER
            /*dataOrcamento.DataCoberturaInicial = $Get('txtPeriodoCoberturaInicial').value.Split('/-.');
            dataOrcamento.DiaCoberturaInicial = parseInt(dataOrcamento.DataCoberturaInicial[0].TrimStart('0'));
            dataOrcamento.MesCoberturaInicial = parseInt(dataOrcamento.DataCoberturaInicial[1].TrimStart('0'));
            dataOrcamento.AnoCoberturaInicial = parseInt(dataOrcamento.DataCoberturaInicial[2].TrimStart('0'));
            contato.AssistenciaMedica.DataInicialCobertura = String.Format('{0}/{1}/{2} 00:00:00', dataOrcamento.MesCoberturaInicial, dataOrcamento.AnoCoberturaInicial, dataOrcamento.DiaCoberturaInicial);

            dataOrcamento.DataCoberturaFinal = $Get('txtPeriodoCoberturaFinal').value.Split('/-.');
            dataOrcamento.DiaCoberturaFinal = parseInt(dataOrcamento.DataCoberturaFinal[0].TrimStart('0'));
            dataOrcamento.MesCoberturaFinal = parseInt(dataOrcamento.DataCoberturaFinal[1].TrimStart('0'));
            dataOrcamento.AnoCoberturaFinal = parseInt(dataOrcamento.DataCoberturaFinal[2].TrimStart('0'));
            contato.AssistenciaMedica.DataFinalCobertura = String.Format('{0}/{1}/{2} 00:00:00', dataOrcamento.MesCoberturaFinal, dataOrcamento.AnoCoberturaFinal, dataOrcamento.DiaCoberturaFinal);*/
                        
            contato.AssistenciaMedica.DataInicialCobertura = $Date($Get('txtPeriodoCoberturaInicial').value);
            contato.AssistenciaMedica.DataFinalCobertura = $Date($Get('txtPeriodoCoberturaFinal').value);
            
            if ($Get('chkIsisPlus').checked)
            {
                contato.AssistenciaMedica.OpcaoIsis = $Get('chkIsisPlus').checked;

                //TODO: WORKAROUND DO BUG DO TESLA.LIBRARY, QUANDO ATUALIZAR A VESAO DESFAZER
                /*
                dataOrcamento.DataCoberturaInicialIsis = $Get('txtPeriodoCoberturaInicial').value.Split('/-.');
                dataOrcamento.DiaCoberturaInicialIsis = parseInt(dataOrcamento.DataCoberturaInicialIsis[0].TrimStart('0'));
                dataOrcamento.MesCoberturaInicialIsis = parseInt(dataOrcamento.DataCoberturaInicialIsis[1].TrimStart('0'));
                dataOrcamento.AnoCoberturaInicialIsis = parseInt(dataOrcamento.DataCoberturaInicialIsis[2].TrimStart('0'));
                contato.AssistenciaMedica.DataInicialIsis = String.Format('{0}/{1}/{2} 00:00:00', dataOrcamento.MesCoberturaInicialIsis, dataOrcamento.AnoCoberturaInicialIsis, dataOrcamento.DiaCoberturaInicialIsis);

                dataOrcamento.DataCoberturaFinalIsis = $Get('txtPeriodoCoberturaFinal').value.Split('/-.');
                dataOrcamento.DiaCoberturaFinalIsis = parseInt(dataOrcamento.DataCoberturaFinalIsis[0].TrimStart('0'));
                dataOrcamento.MesCoberturaFinalIsis = parseInt(dataOrcamento.DataCoberturaFinalIsis[1].TrimStart('0'));
                dataOrcamento.AnoCoberturaFinalIsis = parseInt(dataOrcamento.DataCoberturaFinalIsis[2].TrimStart('0'));
                contato.AssistenciaMedica.DataFinalIsis = String.Format('{0}/{1}/{2} 00:00:00', dataOrcamento.MesCoberturaFinalIsis, dataOrcamento.AnoCoberturaFinalIsis, dataOrcamento.DiaCoberturaFinalIsis);
                */
                
                contato.AssistenciaMedica.DataInicialIsis = $Date($Get('txtPeriodoCoberturaPlusInicial').value)
                contato.AssistenciaMedica.DataFinalIsis = $Date($Get('txtPeriodoCoberturaPlusFinal').value)
            }
            break;
    }
}

Formulario.EnviaDadosConsultorSuporteOnline = function(origem)
{
    window.contato = {};
    contato.Nome = $Get('txtNome').value;
    contato.Email = $Get('txtEmail').value;
    contato.DddTelefone = $Get('txtDDD').value;
    contato.Telefone = $Get('txtFone').value;

    //é possivel registrar os dois enums tanto de formulario como origem, mas como estes vao esta no site todo
    //seriam codigos a mais, entao os dois estao HARD somente neste caso, até pq tanto CO como SO sao Panel
    contato.IdContatoTipoOrigem = origem;
    if(origem == 67)
        contato.IdContatoTipoFormulario = 29;
    if (origem == 68)
        contato.IdContatoTipoFormulario = 30;

    Ajax.Contato.EnviaDados(contato, Formulario.EndEnviaDadosConsultorSuporteOnline);
}

Formulario.EndEnviaDadosConsultorSuporteOnline = function(rt)
{
    //window.alert(rt);
}

Formulario.EnviaDados = function(form)
{
    if (!Formulario.ValidaForm(form)) return false;

    window.contato = {};
    window.contato.ParticipanteEvento = {};
    window.contato.DistribuidorParticipanteEvento = {};

    contato.IdContatoTipoOrigem = form.Variaveis.IdContatoTipoOrigem;
    contato.IdContatoTipoFormulario = form.Variaveis.TipoFormulario;
    contato.IdProduto = form.Variaveis.IdProduto;

    Formulario.PopulaDadosDistribuidor(form);
    Formulario.PopulaDadosInfPessoais(form);
    Formulario.PopulaDadosContato(form);
    Formulario.PopulaDadosAssunto(form);
    Formulario.PopulaDadosEndereco(form);
    Formulario.PopulaDadosEnderecoResumido(form);
    Formulario.PopulaDadosInteressado(form);
    Formulario.PopulaDadosAdicionais(form);
    Formulario.PopulaDadosFormacao(form);
    Formulario.PopulaDadosNivel(form);
    Formulario.PopulaDadosExperiencia(form);
    Formulario.PopulaDadosAreaAtuacao(form);
    Formulario.PopulaDadosRoteiro(form);
    Formulario.PopulaDadosConcursoCultural(form);
    Formulario.PopulaDadosPassagemAerea(form);
    Formulario.PopulaDadosGerais(form);
    Formulario.PopulaDadosEvento(form);
    
    if (form.Variaveis.TipoFormulario == Tesla.Enums.Formularios.InscricaoPalestra)
        setTimeout("$Get('ifrConversaoGoogle').src = page.ResolveUrl('~/aspx/geral/conversaoGoogleAnalytics.aspx?origem=evento')", 100); //adiciona script do google
    else
        setTimeout("$Get('ifrConversaoGoogle').src = page.ResolveUrl('~/aspx/geral/conversaoGoogleAnalytics.aspx?origem=formulario')", 100); //adiciona script do google

    var callback = $L('dados => Formulario.EndEnviarDadosWebService(p1, dados)', 'Formulario_' + form.Variaveis.Pagina);

    Ajax.Contato.EnviaDados(contato, callback);

    if (!form.VagaTrabalheConosco == null)
        TrabalheConosco.HabilitaTela(3, form.VagaTrabalheConosco);
}

Formulario.EndEnviarDadosWebService = function(formID, rt)
{
    var form = window[formID];
    setTimeout("App.InsereTagGoogle('" + Tesla.Enums.Formularios.GetDescription(form.Variaveis.TipoFormulario) + "')", 10);
    window.alert(rt);
}

function isValidEmailAddress(emailAddress)
{
    var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
    return pattern.test(emailAddress);
}
