jsLogger.logger("Library Loaded: Multivalorados", jsLogger.DEBUG);
/*
Framework para automação de multi-valorados
Suporte para Tabelas HTML Dinâmicas e Struts
Provider ST - Bruno Brandão de Queiroga Cavalcanti - 17/06/2004
Guia de utilização:
1. Adicionar no
da página:
2. Adicionar no da página: onLoad="mvInicializar()"
3. Adicionar tags de configuração (Ler sequência de execução .1) na página.
4. Adicionar identificações padrão (Ler sequência de execução .2) nas Tags html dos multi-valorados.
5. Incluir na página um formulário destinado a um Struts Action com um select para cada campo do multi-
valorado. O ActionForm de destino receberá um array referente a cada select. Exemplo:
- Na página:
- No ActionForm: String[] listaCPF
6. No momento de retorno de um JSP os dados serão inseridos no multivalorado através da função:
mvInserirDados(NomeDoMultiValorado, ArrayComDados)
Sequência de execução:
1. Reconhecer as tags de configuração globais. Guardar as configurações na variável mvGlobal.
* Função responsável: mvReconhecerConfiguracoesGlobais()
- Tags de colunas adicionais referentes a todas as tabelas de multi-valorados:
- Tag:
- id padrão: mvglobalad0, mvglobalad1, mvglobaladN
- Valor (value) da tag: código html, imagem, texto ou javascript que será exibido
em uma célula da tabela.
2. Reconhecer e verificar as tags dos multi-valorados. Adicicionar na lista de multi-
valorados (mvListaMultiValorados) um array com todas as informações referentes: Nome,
tabela, array dos inputs, array dos outputs, array de valores, registro em edição.
* Função responsável: mvReconhecerConfiguracoesEspecificas()
- Tags de especificação dos multi-valorados:
- Tag:
- id padrão: mvconf0, mvconf1 ... mvconfN
- Valor (value) da tag: Nome do multivalorado.
- Tags de especificação das entrada (inputs):
- Tags: Qualquer tag utilizada em formulários
- id padrão: mvin0, mvin1, mvinN
- Tags de especificação das saídas (outputs):
- Tags:
- id padrão: mvout0, mvout1, mvoutN
- Tag de especificação do corpo da tabela:
- Tag:
- id padrão: mvtb
*/
var mvJanelaPai = window.parent; //Janela utilizada para armazenar os dados.
var mvListaMultiValorados = mvJanelaPai.mvListaMultiValorados; //Array. Cont?m todos os dados dos multi-valorados.
var mvConfiguracaoGlobal = mvJanelaPai.mvConfiguracaoGlobal;
//Array. Cont?m dados e configura??es referentes a todos os multi-valorados.
//Variaveis de configuracao
var mvRestauracao = false;
//Fun??es acessiveis externamente
window.mvAdicionar = mvAdicionar;
mvJanelaPai.mvLimpar = mvLimpar;
//Constante para navega??o no array mvConfiguracaoGlobal
var mvGlobal_ColunasAdicionais = 0;
var mvGlobal_Restaurar = 1;
//Vari?veis de prefixo: permitem alterar o padr?o de prefixo utilizados nos IDs das Tags HTML.
var mvPrefixo_ColunaAdicional = "mvglobalad";
var mvPrefixo_NomeMV = "mvconf";
var mvPrefixo_Entrada = "mvin";
var mvPrefixo_PropriedadeEntrada = mvPrefixo_Entrada + "prop";
var mvPrefixo_Saida = "mvout";
var mvPrefixo_Tabela = "mvtb";
var mvPrefixo_Salvar = "mvsv";
//Vari?veis de exce??es: possuem as mensagens de erro de operara??o do script.
var mvExcecao_SemTabela = "Falha! Nenhuma tabela encontrada do multi valorado: ";
var mvExcecao_SemEntradas = "Falha! 0 entradas possui o multi valorado: ";
var mvExcecao_SemSaidas = "Falha! 0 sa?das possui o multi valorado: ";
var mvExcecao_SaidasParaEntradas = "Falha! Quantidade de sa?das insuficiente para o multi valorado: ";
//Constantes utilizadas na fun??o mvObterPropriedade()
var mvQuantidadePropriedades = 6;
var mvPropriedade_Nome = 0;
var mvPropriedade_Tabela = 1;
var mvPropriedade_Inputs = 2;
var mvPropriedade_Outputs = 3;
var mvPropriedade_Valores = 4;
var mvPropriedade_IndexEdicao = 5;
var mvPropriedade_Limite = 6;
var mvPropriedade_Todas = mvQuantidadePropriedades;
//Constantes utilizadas na fun??o mvObterInputValores()
var mvInputs_Todos = 0;
var mvInputs_Submit = 1;
var mvInputs_Exibicao = 2;
var mvInputs_Obrigatorios = 3;
var mvInputs_PK = 4;
var mvInputs_Styles = 5;
var mvInputs_Fixo = 6;
//Constantes utilizadas para manutenção de checkboxs
var mvCheckbox_tableValue_Checked = "sim";
var mvCheckbox_tableValue_unChecked = "não";
var mvCheckbox_outgoingValue_Checked = true;
var mvCheckbox_outgoingValue_unChecked = false;
/*
** Fun??es de automa??o e configura??o dos multi-valorados
*/
//Possui a sequ?ncia de inicializa??o
function preencherDados(i) {
}
function mvInicializar(mvPaginaId) {
if (mvPaginaId != null) {
mvRestauracao = true;
}
//Script para recupera??o e inicializa??o das vari?veis de dados
if ((mvJanelaPai.mvPaginaId != mvPaginaId) || (mvRestauracao == false)) {
mvJanelaPai.mvListaMultiValorados = new Array();
mvJanelaPai.mvConfiguracaoGlobal = new Array();
mvJanelaPai.mvPaginaId = mvPaginaId;
mvListaMultiValorados = mvJanelaPai.mvListaMultiValorados;
mvConfiguracaoGlobal = mvJanelaPai.mvConfiguracaoGlobal;
mvReconhecerConfiguracoesGlobais();
mvReconhecerConfiguracoesEspecificas(false);
preencherDados();
outputs2MV();
} else {
if (!mvConfiguracaoGlobal[mvGlobal_Restaurar]) {
mvLimpar();
mvInicializar(mvPaginaId);
return;
}
mvConfiguracaoGlobal[mvGlobal_Restaurar] = false;
mvReconhecerConfiguracoesEspecificas(true);
}
mvPreencherTabela();
limparOutputs();
if ((mvListaMultiValorados != null) && (mvListaMultiValorados.length > 0)) {
mvQuantidadePropriedades = mvListaMultiValorados[0].length;
} else {
alert("Perigo: Nenhum multi-valorado foi carregado!");
}
mvCancelarEdicao();
}
//Varre o c?digo HTML em busca de configura??es globais
function mvReconhecerConfiguracoesGlobais() {
//Reconhecer colunas adicionais
var colunasAdicionais = new Array();
for (i = 0; true; i++) {
var colunaAdicional = document.getElementById(mvPrefixo_ColunaAdicional + i);
if (colunaAdicional == null) {
break }
colunasAdicionais.push(colunaAdicional.getAttribute("value"));
}
//Cada configura??o global ser? um index do Array mvConfiguracaoGlobal.
mvConfiguracaoGlobal.push(colunasAdicionais);
}
//Varre o c?digo HTML em busca de configura??es espec?ficas a cada multi-valorado.
function mvReconhecerConfiguracoesEspecificas(atualizar) {
//Reconhece as tags de especifica??o dos multi-valorados
for (var i = 0; true; i++) {
var tagEspecificacao = document.getElementById(mvPrefixo_NomeMV + i);
if (tagEspecificacao == null) {
break;
}
var novoMultiValorado = new Array();
//Configura??o do MV que ser? inserido em mvListaMultiValorados
//Reconhece o nome do multi-valorado
var nomeNovoMultiValorado = tagEspecificacao.value;
novoMultiValorado.push(nomeNovoMultiValorado);
//Reconhece a tabela do multi-valorado
var tabelaMV = document.getElementById(mvPrefixo_Tabela + nomeNovoMultiValorado);
if (tabelaMV == null) {
alert(mvExcecao_SemTabela + nomeNovoMultiValorado);
}
novoMultiValorado.push(tabelaMV);
//Reconhece as entradas do multi-valorado
var mvEntradas = mvReconhecerEntradas(nomeNovoMultiValorado);
if (mvEntradas[mvInputs_Todos].length < 1) {
alert(mvExcecao_SemEntradas + nomeNovoMultiValorado);
}
novoMultiValorado.push(mvEntradas);
//Reconhece as sa?das do multi-valorado
var mvSaidas = mvReconhecerSaidas(nomeNovoMultiValorado);
if (mvSaidas.length < 1) {
alert(mvExcecao_SemSaidas + nomeNovoMultiValorado);
}
novoMultiValorado.push(mvSaidas);
//Verifica se existem sa?das (selects) suficientes para a quantidade de entradas (submit = true)
if (mvEntradas[mvInputs_Submit].length > mvSaidas.length) {
alert(mvExcecao_SaidasParaEntradas + nomeNovoMultiValorado);
}
//Cria um array de valores vazio e define o index em edi??o para 0
novoMultiValorado.push(new Array());
novoMultiValorado.push(0);
//Adiciona o array de configura??o do multi-valorado em mvListaMultiValorados
if (atualizar == true) {
var mvPropriedades = mvObterPropriedade(nomeNovoMultiValorado, mvPropriedade_Todas);
var valoresAntigos = mvPropriedades[mvPropriedade_Valores];
mvPropriedades[mvPropriedade_Tabela] = tabelaMV;
mvPropriedades[mvPropriedade_Inputs] = mvEntradas;
mvPropriedades[mvPropriedade_Outputs] = mvSaidas;
mvPropriedades[mvPropriedade_Valores] = cloneArray(valoresAntigos);
} else {
mvListaMultiValorados.push(novoMultiValorado);
}
//Limpa as entradas do multivalorado.
mvLimparInputs(nomeNovoMultiValorado);
}
}
//Retorna um array n-dimensional com refer?ncias para: todos os inputs, inputs do submit e inputs
//para exibi??o.
function mvReconhecerEntradas(mvNome) {
var entradasSubmit = new Array();
var entradasExibidas = new Array();
var todasEntradas = new Array();
var entradasObrigatorias = new Array();
var entradasPK = new Array();
var entradas = new Array(todasEntradas, entradasSubmit, entradasExibidas, entradasObrigatorias, entradasPK);
for (var i = 0; true; i++) {
var tagEspecificacao = document.getElementById(mvPrefixo_Entrada + mvNome + i);
if (tagEspecificacao == null) {
break;
}
todasEntradas.push(tagEspecificacao);
if (mvObterPropriedadeInput(mvNome, tagEspecificacao, mvInputs_Submit)) {
entradasSubmit.push(tagEspecificacao);
}
if (mvObterPropriedadeInput(mvNome, tagEspecificacao, mvInputs_Exibicao)) {
entradasExibidas.push(tagEspecificacao);
entradasObrigatorias.push(tagEspecificacao);
} else {
if (mvObterPropriedadeInput(mvNome, tagEspecificacao, mvInputs_Obrigatorios)) {
entradasObrigatorias.push(tagEspecificacao);
}
}
if (mvObterPropriedadeInput(mvNome, tagEspecificacao, mvInputs_PK)) {
entradasPK.push(tagEspecificacao);
}
}
entradas.push(mvObterStyleEntradas(entradasExibidas));
return entradas;
}
function mvReconhecerSaidas(mvNome) {
var saidasNovoMultiValorado = new Array();
for (var i = 0; true; i++) {
var tagEspecificacao = document.getElementById(mvPrefixo_Saida + mvNome + i);
if (tagEspecificacao == null) {
break;
}
saidasNovoMultiValorado.push(tagEspecificacao);
}
return saidasNovoMultiValorado;
}
/*
** Fun??es de apoio para pesquisa e altera??o de propriedades dos multi-valorados
*/
function mvObterPropriedade(mvNome, opcao) {
var mvPropriedade = null;
for (var i = 0; i < mvListaMultiValorados.length; i++) {
var multiValorado = mvListaMultiValorados[i];
if (multiValorado[mvPropriedade_Nome] == mvNome) {
if (opcao == mvPropriedade_Todas) {
mvPropriedade = multiValorado;
} else {
mvPropriedade = multiValorado[opcao];
}
break;
}
}
return mvPropriedade;
}
function mvSetarPropriedade(mvNome, index, valor) {
var mvPropriedade = null;
for (var i = 0; i < mvListaMultiValorados.length; i++) {
if (mvListaMultiValorados[i][mvPropriedade_Nome] == mvNome) {
if (index == mvPropriedade_Todas) {
mvListaMultiValorados[i] = valor;
} else {
mvListaMultiValorados[i][index] = valor;
}
break;
}
}
}
function mvObterPropriedadeInput(mvNome, input, tipo) {
var numeroInput = obterNumeroInput(mvNome, input);
var propriedadeInput = document.getElementById(mvPrefixo_PropriedadeEntrada + mvNome + numeroInput);
var resultado = false;
if (propriedadeInput != null) {
input = propriedadeInput;
}
switch (tipo) {
case mvInputs_Submit :
if (input.getAttribute("mvSubmit") == "true") {
resultado = true;
}
break;
case mvInputs_Exibicao :
if (input.getAttribute("mvExibir") == "true") {
resultado = true;
}
break;
case mvInputs_Fixo :
if (input.getAttribute("mvFixo") == "true") {
resultado = true;
}
break;
case mvInputs_Obrigatorios :
if (input.getAttribute("mvObrigatorio") == "true") {
resultado = true;
}
break;
case mvInputs_PK :
if (input.getAttribute("mvChavePrimaria") == "true") {
resultado = true;
}
break;
}
return resultado;
}
function obterNumeroInput(mvNome, input) {
var inputId = input.id;
var posicaoNumeroInput = (mvPrefixo_Entrada + mvNome).length;
var numeroInput = inputId.substr(posicaoNumeroInput, inputId.length);
return numeroInput;
}
function mvObterStyleEntradas(arrayInputs) {
var arrayStyles = new Array(arrayInputs.length);
for (var i = 0; i < arrayInputs.length; i++) {
var input = arrayInputs[i];
var style = input.getAttribute("mvCellClass");
if ((style != null) && (style != "")) {
arrayStyles[i] = style;
}
}
return arrayStyles;
}
/*
** Fun??es para manuten??o de multivalorados (array + tabela HTML)
*/
function mvSalvar(objeto, exibir) {
if (mvListaMultiValorados == null) {
alert("Script não inicializado. Chame a função no evento onLoad do : mvInicializar()");
return;
}
var objetoId = objeto.id;
var mvNome = objetoId.substr(mvPrefixo_Salvar.length, objetoId.length);
var mvPropriedades = mvObterPropriedade(mvNome, mvPropriedade_Todas);
var mvTabela = mvPropriedades[mvPropriedade_Tabela];
var indexEdicao = mvPropriedades[mvPropriedade_IndexEdicao];
var arrayValores = mvPropriedades[mvPropriedade_Valores];
var arrayInputs = mvPropriedades[mvPropriedade_Inputs];
var arrayInputsPK = arrayInputs[mvInputs_PK];
var novosValores = obterValores(arrayInputs[mvInputs_Todos]);
var novosValoresExibicao = obterValores(arrayInputs[mvInputs_Exibicao]);
if ((mvPreSalvarMV(mvPropriedades) == false) || (mvPreSalvar(mvPropriedades) == false)) {
return false;
}
if (exibir != false) {
var valoresObrigatorios = obterValores(arrayInputs[mvInputs_Obrigatorios]);
var validacao = true;
for (var i = 0; i < valoresObrigatorios.length; i++) {
if (valoresObrigatorios[i].length < 1) {
validacao = false;
}
}
if (!validacao) {
alert('Preencha os campos obrigatórios.');
return false;
}
}
if (arrayInputsPK.length > 0) {
var chavePrimaria = mvCalcularPK(arrayInputsPK);
if (!mvValidarPK(arrayValores, chavePrimaria, indexEdicao)) {
mvErroChavePrimaria();
return false;
}
}
novosValores.push(chavePrimaria);
arrayValores[indexEdicao] = novosValores;
//TODO Colunas adicionais (Global): mvExibir n?o funciona. Separar em 2 arrays: Submit e Exibi??o
if (exibir != false) {
alterarLinha(mvTabela, indexEdicao, novosValoresExibicao.concat(mvConfiguracaoGlobal[mvGlobal_ColunasAdicionais]), arrayInputs[mvInputs_Styles]);
}
mvCancelarEdicao(mvNome);
mvLimparInputs(mvNome);
mvPosSalvarMV(mvPropriedades);
mvPosSalvar(mvPropriedades);
return true;
}
//Funções para serem sobrescrevidas
function mvPreSalvarMV() {}
function mvPreSalvar() {}
function mvPosSalvarMV() {}
function mvPosSalvar() {}
function mvErroChavePrimaria() {}
function mvCalcularPK(arrayInputsPK) {
var hash = 0;
for (var i = 0; i < arrayInputsPK.length; i++) {
hash = hash + "-" + hashCode(arrayInputsPK[i].value);
}
return hash;
}
function mvValidarPK(arrayValores, chavePrimaria, indexEdicao) {
var resultado = true;
for (var i = 0; i < arrayValores.length; i++) {
if ((arrayValores[i][arrayValores[i].length-1] == chavePrimaria) && (i != indexEdicao)) {
resultado = false;
}
}
return resultado;
}
function mvEditarRegistro(mvNome, index) {
mvSetarPropriedade(mvNome, mvPropriedade_IndexEdicao, index);
var mvPropriedades = mvObterPropriedade(mvNome, mvPropriedade_Todas);
var arrayInputs = mvPropriedades[mvPropriedade_Inputs][mvInputs_Todos];
var arrayValores = mvPropriedades[mvPropriedade_Valores];
for (var i = 0; i < arrayInputs.length; i++) {
var input = arrayInputs[i];
if (!mvObterPropriedadeInput(mvNome, input, mvInputs_Fixo)) {
var numeroInput = obterNumeroInput(mvNome, input);
input.value = arrayValores[index][numeroInput];
}
}
}
function mvEditar(objeto) {
var objetoInfo = mvGetObjetoInfo(objeto);
mvEditarRegistro(objetoInfo[0], objetoInfo[1]);
}
function mvCancelarEdicao(mvNome) {
if (mvNome != null) {
var tamanhoArrayValores = mvObterPropriedade(mvNome, mvPropriedade_Valores).length;
mvSetarPropriedade(mvNome, mvPropriedade_IndexEdicao, tamanhoArrayValores);
} else {
for (var mvIndex = 0; mvIndex < mvListaMultiValorados.length; mvIndex++) {
var multiValorado = mvListaMultiValorados[mvIndex];
var tamanhoArrayValores = multiValorado[mvPropriedade_Valores].length;
multiValorado[mvPropriedade_IndexEdicao] = tamanhoArrayValores;
}
}
}
function mvRemover(objeto) {
var confirmacao = confirm("Deseja remover registro?");
if (!confirmacao) {
return;
}
var objetoInfo = mvGetObjetoInfo(objeto);
var mvNome = objetoInfo[0];
mvRemoverRegistro(mvNome, objetoInfo[1]);
mvCancelarEdicao(mvNome);
mvLimparInputs(mvNome);
}
function mvRemoverRegistro(mvNome, index) {
var mvPropriedades = mvObterPropriedade(mvNome, mvPropriedade_Todas);
var arrayValores = mvPropriedades[mvPropriedade_Valores];
var mvTBody = mvPropriedades[mvPropriedade_Tabela];
arrayValores.splice(index, 1);
deletarLinha(mvTBody, index);
mvPosSalvarMV(mvPropriedades);
mvPosSalvar(mvPropriedades);
}
function mvLimpar() {
mvJanelaPai.mvPaginaId = null;
mvJanelaPai.mvListaMultiValorados = null;
mvJanelaPai.mvConfiguracaoGlobal = null;
}
function mvLimparDados(mvNome) {
var mvPropriedades = mvObterPropriedade(mvNome, mvPropriedade_Todas);
mvSetarPropriedade(mvNome, mvPropriedade_Valores, new Array())
mvLimparInputs(mvNome);
deletarLinha(mvPropriedades[mvPropriedade_Tabela]);
}
function mvGetObjetoInfo(objeto) {
var linha;
var noAnterior = objeto.parentNode;
for (var i = 0; i < 5; i++) {
if (noAnterior.nodeName.toLowerCase() == "tr") {
linha = noAnterior;
break;
}
noAnterior = noAnterior.parentNode;
}
noAnterior = linha.parentNode;
var tbody;
for (var i = 0; i < 5; i++) {
var tagNoAnterior = noAnterior.nodeName.toLowerCase();
if ((tagNoAnterior == "tbody") || (tagNoAnterior == "table")) {
tbody = noAnterior;
break;
}
noAnterior = noAnterior.parentNode;
}
var numeroLinha;
for (var i = 0; i < tbody.rows.length; i++) {
if (tbody.rows[i] == linha) {
numeroLinha = i;
break;
}
}
var mvNome = tbody.id.substring(mvPrefixo_Tabela.length, tbody.id.length);
var objetoInfo = new Array(mvNome, numeroLinha);
return objetoInfo;
}
function mvLimparInputs(mvNome) {
var mvInputs = mvObterPropriedade(mvNome, mvPropriedade_Inputs)[mvInputs_Todos];
for (var i = 0; i < mvInputs.length; i++) {
var input = mvInputs[i];
if (!mvObterPropriedadeInput(mvNome, input, mvInputs_Fixo)) {
var valorPadrao = input.getAttribute("mvValorPadrao");
if (valorPadrao == null) {
input.value = "";
} else {
input.value = valorPadrao;
}
}
}
}
function mvPrepararSubmit() {
for (var mvIndex = 0; mvIndex < mvListaMultiValorados.length; mvIndex++) {
var multiValorado = mvListaMultiValorados[mvIndex];
var mvNome = multiValorado[mvPropriedade_Nome];
var arrayInputsSubmit = multiValorado[mvPropriedade_Inputs][mvInputs_Submit];
var arrayOutputs = multiValorado[mvPropriedade_Outputs];
var arrayValores = multiValorado[mvPropriedade_Valores];
var outputsPreenchidos = 0;
for (var i = 0; i < arrayInputsSubmit.length; i++) {
var input = arrayInputsSubmit[outputsPreenchidos];
var checkType = false;
if (isCheckInput(input)) {
checkType = true;
}
var numeroInput = obterNumeroInput(mvNome, input);
if (numeroInput != i) {
continue;
}
var arrayValoresSubmit = new Array();
for (var index = 0; index < arrayValores.length; index++) {
arrayValoresSubmit.push(arrayValores[index][i]);
}
var output = arrayOutputs[outputsPreenchidos];
popularForm(output, arrayValoresSubmit, checkType);
outputsPreenchidos++;
}
}
mvConfiguracaoGlobal[mvGlobal_Restaurar] = mvRestauracao;
}
function mvPreencherTabela() {
for (var mvIndex = 0; mvIndex < mvListaMultiValorados.length; mvIndex++) {
var multiValorado = mvListaMultiValorados[mvIndex];
var mvNome = multiValorado[mvPropriedade_Nome];
var mvTabela = multiValorado[mvPropriedade_Tabela];
var arrayInputsExibicao = multiValorado[mvPropriedade_Inputs][mvInputs_Exibicao];
var arrayValores = mvFiltrarValores(mvNome, arrayInputsExibicao, mvInputs_Exibicao);
mvCancelarEdicao(mvNome);
for (var i = 0; i < arrayValores.length; i++) {
alterarLinha(mvTabela, i, arrayValores[i].concat(mvConfiguracaoGlobal[mvGlobal_ColunasAdicionais]));
}
}
}
function mvFiltrarValores(mvNome, input, tipoInput) {
var mvPropriedades = mvObterPropriedade(mvNome, mvPropriedade_Todas);
var arrayInputs = mvPropriedades[mvPropriedade_Inputs][tipoInput];
var arrayValores = mvPropriedades[mvPropriedade_Valores];
var indexValoresFiltrados = new Array();
for (var i = 0; i < arrayInputs.length; i++) {
var input = arrayInputs[i];
var numeroInput = obterNumeroInput(mvNome, input);
indexValoresFiltrados.push(numeroInput);
}
var valoresFiltrados = new Array();
for (var i = 0; i < arrayValores.length; i++) {
var registro = new Array();
for (var index = 0; index < indexValoresFiltrados.length; index++) {
var numeroValor = indexValoresFiltrados[index];
registro.push(arrayValores[i][numeroValor]);
}
valoresFiltrados.push(registro);
}
return valoresFiltrados;
}
function obterValores(inputs) {
var mvInputValores = new Array();
for (i = 0; i < inputs.length; i++) {
var valor;
if (!isCheckInput(inputs[i])) {
valor = inputs[i].value;
} else {
if (inputs[i].checked) {
valor = mvCheckbox_tableValue_Checked;
} else {
valor = mvCheckbox_tableValue_unChecked;
}
}
mvInputValores.push(valor);
}
return mvInputValores;
}
function popularForm(listaSelect, valores, checkType) {
if (checkType == null) {
checkType = false;
}
listaSelect.multiple = true;
for (var i = 0; i < valores.length; i++) {
if (checkType == true) {
if (valores[i] == mvCheckbox_tableValue_Checked) {
adicionarItem(listaSelect, i, mvCheckbox_outgoingValue_Checked);
} else {
adicionarItem(listaSelect, i, mvCheckbox_outgoingValue_unChecked);
}
} else {
adicionarItem(listaSelect, valores[i], valores[i]);
}
}
}
/*
** Fun??es utilit?rias
*/
function mvAdicionar(mvNome) {
for (var i = 1; i < arguments.length; i++) {
document.getElementById(mvPrefixo_Entrada + mvNome + (i - 1)).value = arguments[i];
}
mvSalvar(document.getElementById(mvPrefixo_Salvar + mvNome), false);
}
function mvPopUpAdicionar(mvNome) {
for (var i = 1; i < arguments.length; i++) {
window.opener[mvPrefixo_Entrada + mvNome + (i - 1)].value = arguments[i];
}
window.opener[mvPrefixo_Salvar + mvNome].click();
}
function outputs2MV() {
for (var mvIndex = 0; mvIndex < mvListaMultiValorados.length; mvIndex++) {
var multiValorado = mvListaMultiValorados[mvIndex];
var mvNome = multiValorado[mvPropriedade_Nome];
var arrayInputs = multiValorado[mvPropriedade_Inputs][mvInputs_Todos];
var arrayOutputs = multiValorado[mvPropriedade_Outputs];
var output0 = arrayOutputs[0];
var qtRegistros;
if (output0 != null) {
qtRegistros = output0.length;
} else {
qtRegistros = -1;
}
for (var i = 0; i < qtRegistros; i++) {
for (var a = 0; a < arrayOutputs.length; a++) {
var option = arrayOutputs[a].options[i];
if (option != null) {
if (!isCheckInput(arrayInputs[a])) {
arrayInputs[a].value = option.value;
} else {
arrayInputs[a].checked = option.value;
}
}
}
mvSalvar(document.getElementById(mvPrefixo_Salvar + mvNome), false);
}
}
}
function limparOutputs() {
for (var mvIndex = 0; mvIndex < mvListaMultiValorados.length; mvIndex++) {
var multiValorado = mvListaMultiValorados[mvIndex];
var arrayOutputs = multiValorado[mvPropriedade_Outputs];
for (var a = 0; a < arrayOutputs.length; a++) {
arrayOutputs[a].length = 0;
}
}
}
function mvSize(mvNome) {
return mvObterPropriedade(mvNome, mvPropriedade_Valores).length;
}
function isCheckInput(input) {
return ((input.type == "checkbox") || (input.type == "radio"));
}