function CtrVeiculos() {

	var autoReferencia = this;
	this.setAutoReferencia(this);
	
	this.setId("CtrVeiculos");

	this.instanciarLimite = function() {
		return new LimVeiculos(this);
	}

	//ATRIBUTOS GLOBAIS
	this.dataDoServidor = null;
	this.abaPesquisada = "";
	this.colaboradorPesquisado = "";
	this.entVeiculo = null;
	
	
	this.inicializa = function() {
		ServidorFacade.buscaData(this.retornaDataDoServidor);
	}

	this.retornaDataDoServidor = function(resposta) {
		autoReferencia.setDataDoServidor(resposta.dados[0].data);
		
		var dataFormatada = new Calendario().formataDataParaHtml(resposta.dados[0].data);

		autoReferencia.getLimite().setCampoDataAquisicao(dataFormatada);
		autoReferencia.getLimite().setCampoDataManutencao(dataFormatada);
		autoReferencia.getLimite().setCampoDataAbastecimento(dataFormatada);
		autoReferencia.getLimite().setCampoDataKm(dataFormatada);
		
	}	
	
	this.getDataDoServidor = function() {
		return this.dataDoServidor;
	}

	this.setDataDoServidor = function(valor) {
		this.dataDoServidor = valor;
	}
	
	//ABA I
	//PESQUISA COLABORADORES
	this.pesquisaColaborador = function() {
		this.setMetodoDeRetorno(this.retornoColaborador);
		var objCtrPesquisaColaboradores = aplicativo.getControlador("CtrPesquisaColaboradores");
		objCtrPesquisaColaboradores.setControladorRequisitante(this);
		objCtrPesquisaColaboradores.abrirJanela();
	}
	
	this.retornoColaborador = function(codigo, descricao) {
		var limite = this.getLimite();
		
		limite.setCampoCodigoResponsavel(codigo);
		limite.setCampoResponsavel(descricao); 
	}
	
	//BUSCA COLABORADOR
	this.buscaRapidaResponsavel = function(campoAtual, proximoCampo) {
		var departamento = "DeptoPessoal()";
		var pesquisa = "Colaborador";
		var requisitante = "CtrVeiculos";
		
		// meio encotrado pra diferenciar o retorno do colaborador
		this.setColaboradorPesquisado("Responsavel");
		this.buscaRapida(campoAtual, proximoCampo, departamento,pesquisa ,requisitante);
	}
	
	this.buscaColaborador = function(codigo) {
		var entColaborador = new EntColaborador();
		
		entColaborador.setCodigo(codigo);
		
		new DeptoPessoal().busca(entColaborador, this.retornoBuscaColaborador);
	}
	
	this.retornoBuscaColaborador = function(resposta) {
		var limite = autoReferencia.getLimite();
		
		if (autoReferencia.trataRespostaServidor(resposta.codErro, resposta.mensagem, false)) {
			if (resposta.dados != undefined) {
				var codigo = (resposta.dados[0].codigo == null ? "" : resposta.dados[0].codigo);
				autoReferencia.retornoColaborador(codigo, resposta.dados[0].nome);
			} else {
				limite.limpaResponsavel();
			}
		}		
	}
	
	//PESQUISA FORNECEDOR
	
	this.pesquisaFornecedor = function () {
		this.setMetodoDeRetorno(this.retornoPesquisaFornecedor);
		var objCtrPesquisaColaboradores = aplicativo.getControlador("CtrPesquisaColaboradores");
		objCtrPesquisaColaboradores.setControladorRequisitante(this);
		objCtrPesquisaColaboradores.abrirJanela();
	}
	
	this.retornoPesquisaFornecedor = function(codigo, descricao) {
		var limite = this.getLimite();
		
		limite.setCampoCodigoFornecedor(codigo);
		limite.setCampoFornecedor(descricao); 
	}
	
	// busca rapida fornecedor
	this.buscaRapidaFornecedor = function(campoAtual, proximoCampo) {
		var departamento = "DeptoPessoal()";
		var pesquisa = "Colaborador";
		var requisitante = "CtrVeiculos";
		
		// meio encotrado pra diferenciar o retorno do colaborador
		this.setColaboradorPesquisado("Fornecedor");
		this.buscaRapida(campoAtual, proximoCampo, departamento, pesquisa, requisitante);
	}
	
	this.buscaFornecedor = function(codigo) {
		var entColaborador = new EntColaborador();
		
		entColaborador.setCodigo(codigo);
		
		new DeptoPessoal().busca(entColaborador, this.retornoBuscaFornecedor);
	}
	
	this.retornoBuscaFornecedor = function(resposta) {
		var limite = autoReferencia.getLimite();
		
		if (autoReferencia.trataRespostaServidor(resposta.codErro, resposta.mensagem, false)) {
			if (resposta.dados != undefined) {
				limite.setCampoCodigoFornecedor(resposta.dados[0].codigo == null ? "" : resposta.dados[0].codigo);
				limite.setCampoFornecedor(resposta.dados[0].nome);
			} else {
				limite.limpaFornecedor();
			}
		}		
	}
	// BUSCA VEICULO
	this.buscaVeiculo = function(codigo) {
		var entVeiculo = new EntVeiculo();
		entVeiculo.setCodigo(codigo);
		
		this.getLimite().limpaVeiculos();
		 
		new DeptoVeiculos().busca(entVeiculo, this.retornoBuscaVeiculo); 
	}	
	
	this.retornoBuscaVeiculo = function(resposta) {
		var	limite = autoReferencia.getLimite()
		if (autoReferencia.trataRespostaServidor(resposta.codErro, resposta.mensagem, false)) {
			if (resposta.dados[0].descricao != null) {
				autoReferencia.montaEntVeiculo(resposta.dados[0]);
				var minhaEnt = autoReferencia.getEntVeiculo();
				limite.mostraVeiculo(minhaEnt);
			} 
		}
	}
	
	// MONTA ENT_VEICULO VINDO DO SERVIDOR(FACADE)
	this.montaEntVeiculo = function (veiculo) {
		var entVeiculo = new EntVeiculo();
		
		entVeiculo.setCodigo(veiculo.codigo);
		entVeiculo.setAtivo(veiculo.ativo);
		entVeiculo.setCategoria(this.montaEntCategoriaVeiculo(veiculo.categoria));
		entVeiculo.setDescricao(veiculo.descricao);
		entVeiculo.setMarca(veiculo.marca);
		entVeiculo.setModelo(veiculo.modelo);
		entVeiculo.setChassi(veiculo.chassi);
		entVeiculo.setRenavam(veiculo.renavam);
		entVeiculo.setPlaca(veiculo.placa);
		entVeiculo.setCor(veiculo.cor);
		entVeiculo.setCapacidadeCarga(veiculo.capacidadeCarga);
		entVeiculo.setCapacidadePassageiros(veiculo.capacidadePassageiros);
		entVeiculo.setAnoFabricacao(veiculo.anoFabricacao);
		entVeiculo.setAnoModelo(veiculo.anoModelo);
		entVeiculo.setDataAquisicao(veiculo.dataAquisicao);
		entVeiculo.setDataCadastro(veiculo.dataCadastro);
		entVeiculo.setObservacao(veiculo.observacao);
		entVeiculo.setResponsavel(this.montaEntColaboradorResumo(veiculo.responsavel));
		entVeiculo.setCombustivel(this.montaEntCombustivel(veiculo.combustivel));
		entVeiculo.setItensManutencaoVeiculo(this.montaArrayItensManutencoesVeiculos(veiculo.itensManutencaoVeiculo));
		entVeiculo.setQuilometragens(this.montaArrayQuilomentragem(veiculo.quilometragens));
		entVeiculo.setManutencoes(this.montaArrayManutencoes(veiculo.manutencoes));
		entVeiculo.setAbastecimentos(this.montaArrayAbastecimento(veiculo.abastecimentos));
		
		this.setEntVeiculo(entVeiculo);
	}
	
	//MONTA EN_CATEGORIA_VEICULO VINDO DO SERVIDOR(FACADE)
	this.montaEntCategoriaVeiculo = function(categoriaVeiculo) {
		var entCategoriaVeiculo = new EntCategoriaVeiculo();
		
		entCategoriaVeiculo.setAtivo(categoriaVeiculo.ativo);
		entCategoriaVeiculo.setCodigo(categoriaVeiculo.codigo);
		entCategoriaVeiculo.setDescricao(categoriaVeiculo.descricao);
		
		return entCategoriaVeiculo;
	}
	
	//MONTA O ARRAY DE ITENS_MANUTENCAO_VEICULO, VINDO DO SERVIDOR(FACADE);
	this.montaArrayItensManutencoesVeiculos = function(itensManutencaoVeiculos) {
		var arrayItemManutencaoVeiculo = Array();
		
		for (var i = 0; i < itensManutencaoVeiculos.length; i++) {
			var entItemManutencaoVeiculo = new EntItemManutencaoVeiculo();
			entItemManutencaoVeiculo.setCodigo(itensManutencaoVeiculos[i].codigo);
			entItemManutencaoVeiculo.setAtivo(itensManutencaoVeiculos[i].ativo);
			entItemManutencaoVeiculo.setVencimento(itensManutencaoVeiculos[i].vencimento);
			entItemManutencaoVeiculo.setItemManutencao(this.montaEntItemManutencao(itensManutencaoVeiculos[i].itemManutencao));
			
			arrayItemManutencaoVeiculo.push(entItemManutencaoVeiculo);
		}
		return arrayItemManutencaoVeiculo;
	}
	
	//MONTA O ARRAY DE QUILOMETRAGEM, VINDO DO SERVIDOR(FACADE);
	this.montaArrayQuilomentragem = function(quilometragens) {
		var arrayQuilometragem = Array();
		var limite = this.getLimite();
		
		for (var i = 0; i < quilometragens.length; i++) {
			var entQuilometragem = new EntQuilometragem();
			entQuilometragem.setAtivo(quilometragens[i].ativo);
			entQuilometragem.setCodigo(quilometragens[i].codigo);
			entQuilometragem.setData(quilometragens[i].data);
			entQuilometragem.setQuilometragem(quilometragens[i].quilometragem);
			
			arrayQuilometragem.push(entQuilometragem);
		}
		
		return arrayQuilometragem;
	}
	
	
	//MONTA UMA ENTCOLABORADORRESUMO, VINDA DO SERVIDOR QUE FARA PARTE DO ARRAY;
	this.montaEntColaboradorResumo = function(responsavel) {
		var entEntColaboradorResumo = new EntColaboradorResumo();
		
		entEntColaboradorResumo.setCodigo(responsavel.codigo == null ? "" : responsavel.codigo);
		entEntColaboradorResumo.setNome(responsavel.nome == null ? "" : responsavel.nome);
		
		return entEntColaboradorResumo;
	}
	
	//MONTA UMA ENTTIPOVENCIMENTO, VINDA DO SERVIDOR QUE FARA PARTE DO ENTITEMMANUTENCAO;
	this.montaEntTipoVencimento = function (tipoVencimento) {
		var entTipoVencimento = new EntTipoVencimento();
		
		entTipoVencimento.setCodigo(tipoVencimento.codigo);
		entTipoVencimento.setDescricao(tipoVencimento.descricao);
		
		return entTipoVencimento;
	}
	
	//MONTA UMA ENTITEMMANUTENCAO, VINDA DO SERVIDOR QUE FARA PARTE DO ARRAY MANUTENCOES E MANUTENCOES_VEICULO;	
	this.montaEntItemManutencao = function(itemManutencao) {
		var entItemManutencao = new EntItemManutencao();
		
		entItemManutencao.setAtivo(itemManutencao.ativo);
		entItemManutencao.setCodigo(itemManutencao.codigo);
		entItemManutencao.setDescricao(itemManutencao.descricao);
		entItemManutencao.setTipoVencimento(this.montaEntTipoVencimento(itemManutencao.tipoVencimento));
		
		return entItemManutencao;
	}
	
	//MONTA O ARRAY DE ABASTECIMENTO, VINDO DO SERVIDOR(FACADE);
	this.montaArrayManutencoes = function(manutencao) {
		var arrayManutencoes = Array();
		
		for (var i = 0; i < manutencao.length; i++){
			var entManutencao = new EntManutencao();
			entManutencao.setAtivo(manutencao[i].ativo);
			entManutencao.setCodigo(manutencao[i].codigo);
			entManutencao.setData(manutencao[i].data);
			entManutencao.setQuilometragem(manutencao[i].quilometragem);
			entManutencao.setNumeroNotaFiscal(manutencao[i].numeroNotaFiscal == null ? "" : manutencao[i].numeroNotaFiscal);
			entManutencao.setItemManutencao(this.montaEntItemManutencao(manutencao[i].itemManutencao));
			entManutencao.setFornecedor(this.montaEntColaboradorResumo(manutencao[i].fornecedor));
			
			arrayManutencoes.push(entManutencao);
		}
		return arrayManutencoes;
	}
	
	//MONTA UMA ENT COMBUSTIVEL, VINDA DO SERVIDOR QUE FARA PARTE DO ARRAY;
	this.montaEntCombustivel = function(combustivel) {
		var entCombustivel= new EntCombustivel();
		
		entCombustivel.setAtivo(combustivel.ativo);
		entCombustivel.setCodigo(combustivel.codigo);
		entCombustivel.setNome(combustivel.nome);
		entCombustivel.setUnidade(combustivel.unidade);
		entCombustivel.setCusto(combustivel.custo);
		
		return entCombustivel;  
	}
	
	//MONTA O ARRAY DE ABASTECIMENTO, VINDO DO SERVIDOR(FACADE);
	this.montaArrayAbastecimento = function(abastecimentos) {
		var arrayAbastecimento = new Array();
		
		for (var i = 0; i < abastecimentos.length; i++) {
			var entAbastecimento = new EntAbastecimento();
			
			entAbastecimento.setAtivo(abastecimentos[i].ativo);
			entAbastecimento.setCodigo(abastecimentos[i].codigo);
			entAbastecimento.setData(abastecimentos[i].data);
			entAbastecimento.setQuilometragem(abastecimentos[i].quilometragem);
			entAbastecimento.setQuantidade(abastecimentos[i].quantidade);
			entAbastecimento.setCombustivel(this.montaEntCombustivel(abastecimentos[i].combustivel)); 
		
			arrayAbastecimento.push(entAbastecimento);
		}
		return arrayAbastecimento;
	}
	
	// BUSCA CATEGORI ABA I
	//BUSCA CATEGORIA ATRAVES DO SHORTCUT
	this.buscaRapidaCategoria = function(campoAtual, proximoCampo) {
		var departamento = "DeptoVeiculos()";
		var pesquisa = "CategoriaVeiculo";
		var requisitante = "CtrVeiculos";
		
		this.buscaRapida(campoAtual, proximoCampo, departamento,pesquisa ,requisitante);
	}
	
	this.buscaCategoria = function(codigo) {
		var entCategoriaVeiculo = new EntCategoriaVeiculo();
		entCategoriaVeiculo.setCodigo(codigo);
		
		new DeptoVeiculos().busca(entCategoriaVeiculo, this.retornoBuscaCategoria);
	}
	
	this.retornoBuscaCategoria = function(resposta) {
		var	limite = autoReferencia.getLimite()
		
		if (autoReferencia.trataRespostaServidor(resposta.codErro, resposta.mensagem, false)) {
			if (resposta.dados[0].descricao != null) {
				
				limite.setCampoCodigoCategoria(resposta.dados[0].codigo);
				limite.setCampoCategoria(resposta.dados[0].descricao);
			}
			else {
				limite.limpaCategoria();
			}
		}
	}
	
	//BUSCA COMBUSTIVEL ATRAVES DO SHORTCUT
	this.buscaRapidaCombustivel = function(campoAtual, proximoCampo) {
		var departamento = "DeptoVeiculos()";
		var pesquisa = "Combustivel";
		var requisitante = "CtrVeiculos";
		
		this.buscaRapida(campoAtual, proximoCampo, departamento,pesquisa ,requisitante);
	}
	
	//BUSCA COMBUSTIVEL
	this.buscaCombustivel = function(codigo) {
		var entCombustivel = new EntCombustivel();
		
		entCombustivel.setCodigo(codigo);
		
		new DeptoVeiculos().busca(entCombustivel, this.retornoBuscaCombustivel);
	}
	
	this.retornoBuscaCombustivel = function(resposta) {
		var	limite = autoReferencia.getLimite()
		
		if (autoReferencia.trataRespostaServidor(resposta.codErro, resposta.mensagem, false)) {
			if (resposta.dados[0].nome != null) {
				
				limite.setCampoCodigoCombustivel(resposta.dados[0].codigo);
				limite.setCampoCombustivel(resposta.dados[0].nome);
			}
			else {
				limite.limpaCombustivel();
			}
		}
	}
	
	// ABA II
	// busca do item 
	// BUSCA RAPIDA ITEM (RETORNO AO FINAL DO SCRIPT)
	this.buscaRapidaItem = function(campoAtual, proximoCampo) {
		var departamento = "DeptoVeiculos()";
		var pesquisa = "ItemManutencao";
		var requisitante = "CtrVeiculos";
		
		// Solucao encontrada para diferenciar qual a aba que esta sendo pesquisada.
		// Esse problema ocorreu devido a pesquisa de item esta sendo chamada duas vezes no mesmo controlador.    	
		this.setAbaPesquisada("Itens");	
		this.buscaRapida(campoAtual, proximoCampo, departamento,pesquisa ,requisitante);
	}
		 
	this.buscaItem = function(codigo) {
		var entItemManutencao = new EntItemManutencao();
		entItemManutencao.setCodigo(codigo);
		
		new DeptoVeiculos().busca(entItemManutencao, this.retornoBuscaItem);
	}	
	
	this.retornoBuscaItem = function(resposta) {
		var	limite = autoReferencia.getLimite()
		
		if (autoReferencia.trataRespostaServidor(resposta.codErro, resposta.mensagem, false)) {
			if (resposta.dados[0].descricao != null) {
				
				limite.setCampoCodigoItem(resposta.dados[0].codigo);
				limite.setCampoItem(resposta.dados[0].descricao);
				limite.colocaMascara(resposta.dados[0].tipoVencimento.descricao);
			}
			else {
				limite.limpaItem();
			}
		}
	}
	
	// BUSCA DO ITEM DE MANUTENCAO ABA III
	// BUSCA RAPIDA ITEM (RETORNO AO FINAL DO SCRIPT)
	this.buscaRapidaItemManutencao = function(campoAtual, proximoCampo) {
		var departamento = "DeptoVeiculos()";
		var pesquisa = "ItemManutencao";
		var requisitante = "CtrVeiculos";
		
		// Solucao encontrada para diferenciar qual a aba que esta sendo pesquisada.
		// Esse problema ocorreu devido a pesquisa de item esta sendo chamada duas vezes no mesmo controlador.    	
		this.setAbaPesquisada("Manutencao");	
		this.buscaRapida(campoAtual, proximoCampo, departamento,pesquisa ,requisitante);
	}
	
	this.buscaItemManutencao = function(codigo) {
		var entItemManutencao = new EntItemManutencao();
		entItemManutencao.setCodigo(codigo);
		
		new DeptoVeiculos().busca(entItemManutencao, this.retornoBuscaItemManutencao);
	}	
	
	this.retornoBuscaItemManutencao = function(resposta) {
		var	limite = autoReferencia.getLimite()
		
		if (autoReferencia.trataRespostaServidor(resposta.codErro, resposta.mensagem, false)) {
			if (resposta.dados[0].descricao != null) {
				
				limite.setCampoCodigoItemManutencao(resposta.dados[0].codigo);
				limite.setCampoItemManutencao(resposta.dados[0].descricao);
			}
			else {
				limite.limpaItemManutencao();
			}
		}
	}
	
	//PESQUISA VEICULO
	this.pesquisaVeiculos = function() {
		var ctrPesquisaSimples = aplicativo.getControlador("CtrPesquisaSimples");
		ctrPesquisaSimples.setDepto("DeptoVeiculos()");
		ctrPesquisaSimples.setPesquisa("Veiculo");
		ctrPesquisaSimples.setControladorRequisitante("CtrVeiculos");
		ctrPesquisaSimples.abrirJanela();	
	}
		
	// pesquisa do item 
	this.pesquisaItem = function() {
		var ctrPesquisaSimples = aplicativo.getControlador("CtrPesquisaSimples");
		ctrPesquisaSimples.setDepto("DeptoVeiculos()");
		ctrPesquisaSimples.setPesquisa("ItemManutencao");
		ctrPesquisaSimples.setControladorRequisitante("CtrVeiculos");
		ctrPesquisaSimples.abrirJanela();	
		
		// Solucao encontrada para diferenciar qual a aba que esta sendo pesquisada.
		// Esse problema ocorreu devido a pesquisa de item esta sendo chamada duas vezes no mesmo controlador.    	
		this.setAbaPesquisada("Itens");	
	}
	
	// PESQUISA DO ITEM DE MANUTENCAO DA ABA III
	this.pesquisaItemManutencao = function () {
		var ctrPesquisaSimples = aplicativo.getControlador("CtrPesquisaSimples");
		ctrPesquisaSimples.setDepto("DeptoVeiculos()");
		ctrPesquisaSimples.setPesquisa("ItemManutencao");
		ctrPesquisaSimples.setControladorRequisitante("CtrVeiculos");
		ctrPesquisaSimples.abrirJanela();

		// Solucao encontrada para diferenciar qual a aba que esta sendo pesquisada.
		// Esse problema ocorreu devido a pesquisa de item esta sendo chamada duas vezes no mesmo controlador.    	
		this.setAbaPesquisada("Manutencao");
	}
	
	this.pesquisaCategorias = function() {
		var ctrPesquisaSimples = aplicativo.getControlador("CtrPesquisaSimples");
		ctrPesquisaSimples.setDepto("DeptoVeiculos()");
		ctrPesquisaSimples.setPesquisa("CategoriaVeiculo");
		ctrPesquisaSimples.setControladorRequisitante("CtrVeiculos");
		ctrPesquisaSimples.abrirJanela();
	}
	//PESQUISA COMBUSTIVEL ABA_I
	this.pesquisaCombustivel = function() {
		var ctrPesquisaSimples = aplicativo.getControlador("CtrPesquisaSimples");
		ctrPesquisaSimples.setDepto("DeptoVeiculos()");
		ctrPesquisaSimples.setPesquisa("Combustivel");
		ctrPesquisaSimples.setControladorRequisitante("CtrVeiculos");
		ctrPesquisaSimples.abrirJanela();
	}
	
	// RETORNO PADRAO PARA A PESQUISA GENERICA (ctrPesquisaSimples).
	this.retornoPesquisas = function(codigo, descricao, pesquisa) {
		var limite = autoReferencia.getLimite();
		
		if (pesquisa == "ItemManutencao") {
			if (autoReferencia.getAbaPesquisada() == "Manutencao") {
				autoReferencia.buscaItemManutencao(codigo);
			} 
			else if (autoReferencia.getAbaPesquisada() == "Itens"){
				autoReferencia.buscaItem(codigo);	
			}
		
		} else if (pesquisa == "CategoriaVeiculo") {
			limite.setCampoCodigoCategoria(codigo);
			limite.setCampoCategoria(descricao);
		
		} else if (pesquisa == "Veiculo") {
			autoReferencia.buscaVeiculo(codigo);
		
		} else if (pesquisa == "Combustivel") {
			autoReferencia.buscaCombustivel(codigo);
		} else if (pesquisa == "Colaborador") {
			if(this.getColaboradorPesquisado() == "Responsavel") {
				autoReferencia.retornoColaborador(codigo, descricao);
			} else if(this.getColaboradorPesquisado() == "Fornecedor") {
				autoReferencia.retornoPesquisaFornecedor(codigo, descricao);
			}
		} 
		
		else {
			this.getLimite().mostrarMensagem("alerta", PESQUISA_NAO_RECONHECIDA);
		}
	}
	
	this.adicionaItem = function() {
		var limite = this.getLimite();
		var numero = new Numero();
		var entVeiculo = this.getEntVeiculo();
		var arrayItensManutencaoVeiculo = entVeiculo.getItensManutencaoVeiculo();
		var codigoNaoRepetido = true;
		
		// VERIFICA SE NAO EXISTE CODIGO REPETIDO NO ITEM
		for (var i = 0; i < arrayItensManutencaoVeiculo.length; i++) {
			if (arrayItensManutencaoVeiculo[i].getItemManutencao().getCodigo() == limite.getCampoCodigoItem() && arrayItensManutencaoVeiculo[i].isAtivo()) {
				codigoNaoRepetido = false;
				break;
			}
		}
		
		if (codigoNaoRepetido) {
			var entItemManutencao = new EntItemManutencao();
			entItemManutencao.setCodigo(limite.getCampoCodigoItem());
			entItemManutencao.setDescricao(limite.getCampoItem());
			
			var entTipoVencimento = new EntTipoVencimento();
			entTipoVencimento.setDescricao(limite.getSpanTipoVencimento());
			entItemManutencao.setTipoVencimento(entTipoVencimento);
			
			var entItemManutencaoVeiculo = new EntItemManutencaoVeiculo();
			entItemManutencaoVeiculo.setVencimento(numero.formataNumeroParaServidor(limite.getCampoLimite()));
			entItemManutencaoVeiculo.setItemManutencao(entItemManutencao);
			entItemManutencaoVeiculo.setAtivo(true);
			
			var entVeiculo = this.getEntVeiculo();
			entVeiculo.getItensManutencaoVeiculo().push(entItemManutencaoVeiculo);
			this.setEntVeiculo(entVeiculo);
			
			limite.setListagemItem(entVeiculo.getItensManutencaoVeiculo());
			limite.limpaCamposAbaItens();
		} else {
			limite.mostrarMensagem(this.codAlerta, CONDICOES_PARA_ADICIONAR_ITEM);
		}
	}
	
	this.adicionaItemManutencao = function() {
		limite = this.getLimite();
		var numero = new Numero();
		var calendario = new Calendario();
		
		var entColaboradorResumo = new EntColaboradorResumo();
		entColaboradorResumo.setCodigo(limite.getCampoCodigoFornecedor());
		entColaboradorResumo.setNome(limite.getCampoFornecedor());
		
		var entItemManutencao = new EntItemManutencao();
		entItemManutencao.setCodigo(limite.getCampoCodigoItemManutencao());
		entItemManutencao.setDescricao(limite.getCampoItemManutencao());
		
		var entManutencao = new EntManutencao();
		entManutencao.setData(calendario.formataDataParaServidor(limite.getCampoDataManutencao()));
		entManutencao.setQuilometragem(numero.formataNumeroParaServidor(limite.getCampoKmManutencao()));
		entManutencao.setNumeroNotaFiscal(limite.getCampoNumeroNF());
		entManutencao.setItemManutencao(entItemManutencao);
		entManutencao.setFornecedor(entColaboradorResumo);
		entManutencao.setAtivo(true);
		
		var entVeiculo = this.getEntVeiculo();
		entVeiculo.getManutencoes().push(entManutencao);
		this.setEntVeiculo(entVeiculo);

		limite.setListagemManutencao(entVeiculo.getManutencoes());
		
		limite.limpaCamposAbaManutencao();
	}
	
	this.adicionaAbastecimento = function() {
		var limite = this.getLimite();
		var numero = new Numero();
		var calendario = new Calendario();
		var entVeiculo = this.getEntVeiculo();
		var arrayAbastecimento = entVeiculo.getAbastecimentos();
		var dataOk = true;
		var posicao;
		
		if (arrayAbastecimento.length != "") {
			for(var i=arrayAbastecimento.length - 1; i >= 0; i--) {
				if (arrayAbastecimento[i].isAtivo()) {
					posicao = i;
					break;
				}	
			}
			
			if (posicao != null) {
				if (calendario.comparaDataMenor(limite.getCampoDataAbastecimento(), arrayAbastecimento[posicao].getData())) {
					dataOk = false;
				}
			}
		}
		
		if (dataOk) {
			// CASO NAO HAJA CODIGO DE COMBUSTIVEL NA ABA CADASTRA NÃO SERA POSSIVEL ADICIONAR UM ABASTECIMENTO
			if (limite.getCampoCodigoCombustivel() != "") {
				var entCombustivel = new EntCombustivel();
				entCombustivel.setCodigo(limite.getCampoCodigoCombustivel()); 
				
				var entAbastecimento = new EntAbastecimento();
				entAbastecimento.setCombustivel(entCombustivel);
				entAbastecimento.setData(calendario.formataDataParaServidor(limite.getCampoDataAbastecimento()));
				entAbastecimento.setQuantidade(numero.formataNumeroParaServidor(limite.getCampoLitros()));
				entAbastecimento.setQuilometragem(numero.formataNumeroParaServidor(limite.getCampoKmAbastecimento()));
				entAbastecimento.setAtivo(true);
				
				var entVeiculo = this.getEntVeiculo();
				entVeiculo.getAbastecimentos().push(entAbastecimento);
				this.setEntVeiculo(entVeiculo);
				
				limite.setListagemAbastecimento(entVeiculo.getAbastecimentos());
				limite.limpaCamposAbaAbastecimento();
			} else {
				limite.mostrarMensagem(this.codAlerta, CONDICOES_PARA_ADICIONAR_ABASTECIMENTO);
			}	
			
		} else {
			limite.mostrarMensagem(this.codAlerta, CONDICOES_PARA_ADICIONAR_ABASTECIMENTO_ARRAY);
		}	
	}
	
	this.adicionaKm = function() {
		var limite = this.getLimite();
		var numero = new Numero();
		var calendario = new Calendario();
		var entVeiculo = this.getEntVeiculo();
		var arrayKm = entVeiculo.getQuilometragens();
		var dataOk = true;
		var KmOk =  true;
		var posicao;
		
		if (arrayKm.length > 0) {
			for(var i=arrayKm.length - 1; i >= 0; i--) {
				if (arrayKm[i].isAtivo()) {
					posicao = i;
					break;
				}	
			}
			
			if (posicao != undefined) {
				if (calendario.comparaDataMenor(limite.getCampoDataKm(), arrayKm[posicao].getData())) {
					dataOk = false;
				}
				
				if (numero.formataNumeroParaServidor(limite.getCampoKm()) < arrayKm[posicao].getQuilometragem()) {
					KmOk = false;
				}
			}
		}
		
		if (dataOk && KmOk) {
			var entQuilometragem = new EntQuilometragem();
			entQuilometragem.setData(calendario.formataDataParaServidor(limite.getCampoDataKm()));
			entQuilometragem.setQuilometragem(numero.formataNumeroParaServidor(limite.getCampoKm()));
			entQuilometragem.setAtivo(true);
			
			var entVeiculo = this.getEntVeiculo();
			entVeiculo.getQuilometragens().push(entQuilometragem);
			this.setEntVeiculo(entVeiculo);
			
			limite.setListagemQuilometragem(entVeiculo.getQuilometragens());
			limite.setDivKm(entQuilometragem.getQuilometragem());
			limite.limpaCamposAbaQuilometragem();
		} else {
			limite.mostrarMensagem(this.codAlerta, CONDICOES_PARA_ADICIONAR_QUILOMETRAGEM);
		}
	}
	
	this.removeItemDeManutencao = function(posicao) {
		var arrayItemManutencaoVeiculo = this.getEntVeiculo().getItensManutencaoVeiculo();
		arrayItemManutencaoVeiculo[posicao].setAtivo(false);
		this.getLimite().setListagemItem(arrayItemManutencaoVeiculo);
	}
	
	this.removeManutencoes = function(posicao) {
		var arrayManutencoes = this.getEntVeiculo().getManutencoes();
		arrayManutencoes[posicao].setAtivo(false);
		this.getLimite().setListagemManutencao(arrayManutencoes);
	}
	
	this.removeAbastecimento = function(posicao) {
		var arrayAbastecimentos = this.getEntVeiculo().getAbastecimentos();
		arrayAbastecimentos[posicao].setAtivo(false);
		this.getLimite().setListagemAbastecimento(arrayAbastecimentos);
	}
	
	this.removeQuilometragem = function(posicao) {
		var arrayQuilometragens = this.getEntVeiculo().getQuilometragens();
		arrayQuilometragens[posicao].setAtivo(false);
		this.getLimite().setListagemQuilometragem(arrayQuilometragens);
	}
	
	this.limpaItensDeManutencao = function() {
		var arrayItemManutencaoVeiculo = this.getEntVeiculo().getItensManutencaoVeiculo();
		var tamanhoArray = arrayItemManutencaoVeiculo.length;
		arrayItemManutencaoVeiculo.splice(0, tamanhoArray);
		this.getLimite().setListagemItem(arrayItemManutencaoVeiculo);
	}
	
	this.limpaManutencoes = function() {
		var arrayManutencoes = this.getEntVeiculo().getManutencoes();
		var tamanhoArray = arrayManutencoes.length;
		arrayManutencoes.splice(0, tamanhoArray);
		this.getLimite().setListagemItem(arrayManutencoes);
	}
	
	this.limpaAbastecimento = function() {
		var arrayAbastecimentos = this.getEntVeiculo().getAbastecimentos();
		var tamanhoArray = arrayAbastecimentos.length;
		arrayAbastecimentos.splice(0, tamanhoArray);
		this.getLimite().setListagemItem(arrayAbastecimentos);
	}
	
	this.limpaQuilometragem = function() {
		var arrayQuilometragens = this.getEntVeiculo().getQuilometragens();
		var tamanhoArray = arrayQuilometragens.length;
		arrayQuilometragens.splice(0, tamanhoArray);
		this.getLimite().setListagemItem(arrayQuilometragens);
	}
	
	//PREENCHE OS DADOS DE ENT_COMBUSTIVEL, METODO CHAMADO NO PREENCHE_ENT_VEICULO
	this.preencheEntCombustivel = function() {
		var entCombustivel = new EntCombustivel();
		var limite = this.getLimite();
		
		entCombustivel.setCodigo(limite.getCampoCodigoCombustivel());
		entCombustivel.setNome(limite.getCampoCombustivel());
		
		return entCombustivel;
	}
	
	//PREENCHE OS DADOS DE ENT_RESPONSAVEL, METODO CHAMADO NO PREENCHE_ENT_VEICULO
	this.preencheEntResponsavel = function() {
		var entColaboradorResumo = new EntColaboradorResumo();
		var limite = this.getLimite();
		
		entColaboradorResumo.setCodigo(limite.getCampoCodigoResponsavel());
		entColaboradorResumo.setNome(limite.getCampoResponsavel());
		
		return entColaboradorResumo;
	}
	
	//PREENCHE OS DADOS DE ENT_CATEGORIA, METODO CHAMADO NO PREENCHE_ENT_VEICULO 
	this.preencheEntCategoria = function() {
		var entCategoriaVeiculo =  new EntCategoriaVeiculo();
		var limite = this.getLimite();
		
		entCategoriaVeiculo.setCodigo(limite.getCampoCodigoCategoria());
		entCategoriaVeiculo.setDescricao(limite.getCampoCategoria());
		
		return entCategoriaVeiculo;
	}
	
	//PREENCHE OS DADOS DA ENT VEICULO QUE NAO ESTAO DENTRO DOS ARRAYS 
	this.preencheEntVeiculo = function() {
		var limite = this.getLimite();
		var entVeiculo = this.getEntVeiculo();
		var numero = new Numero();
		var calendario = new Calendario();
		
		entVeiculo.setCodigo(limite.getCampoCodigoVeiculo());
		entVeiculo.setAtivo(limite.getRadioSituacao());
		entVeiculo.setCategoria(this.preencheEntCategoria());
		entVeiculo.setDescricao(limite.getCampoComplemento());
		entVeiculo.setMarca(limite.getCampoMarca());
		entVeiculo.setModelo(limite.getCampoModelo());
		entVeiculo.setChassi(limite.getCampoChassi());
		entVeiculo.setRenavam(limite.getCampoRenavam());
		entVeiculo.setPlaca(limite.getCampoPlaca());
		entVeiculo.setCor(limite.getCampoCor());
		entVeiculo.setCapacidadeCarga(numero.formataNumeroParaServidor(limite.getCampoCapacidadeCarga()));
		entVeiculo.setCapacidadePassageiros(limite.getCampoCapacidadePassageiro());
		entVeiculo.setAnoFabricacao(limite.getCampoAnoFabricacao());
		entVeiculo.setAnoModelo(limite.getCampoAnoModelo());
		entVeiculo.setDataAquisicao(calendario.formataDataParaServidor(limite.getCampoDataAquisicao()));
		entVeiculo.setObservacao(limite.getCampoObservacoes());
		entVeiculo.setResponsavel(this.preencheEntResponsavel());
		entVeiculo.setCombustivel(this.preencheEntCombustivel());
		
		this.setEntVeiculo(entVeiculo);
	}
	
	//METODO QUE IMPEDE O USUARIO SALVAR A MESMA ENTIDADE REPETIDAMENTO
	
	// SALVA A ENT_VEICULO 
	this.eventoBotaoSalvar = function() {
		this.preencheEntVeiculo();
		var entVeiculo = this.getEntVeiculo();
		var limite = this.getLimite();
		
		limite.desabilitaBotaoSalvar();
		
		var deptoVeiculos = new DeptoVeiculos();
		deptoVeiculos.cadastra(entVeiculo, this.retornoCadastra);
	}
	
	this.altera = function() {
		this.preencheEntVeiculo();
		var entVeiculo = this.getEntVeiculo();
		var limite = this.getLimite();
		
		limite.desabilitaBotaoSalvar();
		
		var deptoVeiculos = new DeptoVeiculos();
		deptoVeiculos.altera(entVeiculo, this.retornoCadastra);
	}
	
	this.retornoCadastra = function(resposta) {
		autoReferencia.getLimite().habilitaBotaoSalvar();
		
		if (autoReferencia.trataRespostaServidor(resposta.codErro, resposta.mensagem, true)) {

			// CARLOS - 16 / 09 / 2009 - ATUALIZA A LISTAGEM DE ALARMES
			new CtrDisplayAlarmes().inicializa(false);
			
			autoReferencia.getLimite().resetVeiculo();
		}
		
	}
	
	//GETS E SETS
	
	this.getAbaPesquisada = function() {
		return this.abaPesquisada;
	}

	this.setAbaPesquisada = function(bValor) {
		this.abaPesquisada = bValor;
	}
	
	this.getColaboradorPesquisado = function() {
		return this.colaboradorPesquisado;
	}

	this.setColaboradorPesquisado = function(bValor) {
		this.colaboradorPesquisado = bValor;
	}
	
	this.getEntVeiculo = function() {
		return this.entVeiculo == null ? new EntVeiculo() : this.entVeiculo;
	}

	this.setEntVeiculo = function(valor) {
		this.entVeiculo = valor;
	}
	
	
	
	
	
}
CtrVeiculos.prototype = new Controlador;