function CtrConfAlarmeVeiculo() {

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

	this.entConfAlarmeVeiculo = null;
	
	this.instanciarLimite = function() {
		return new LimConfAlarmeVeiculo(this);
	}

	this.inicializa = function() {
		var entConfAlarmeVeiculo = new EntConfAlarmeVeiculo();
		
		var deptoConfiguracoes = new DeptoConfiguracoes();
		deptoConfiguracoes.busca(entConfAlarmeVeiculo, this.retornoBusca);
		
	}
	
	this.retornoBusca = function(resposta) {
		if (autoReferencia.trataRespostaServidor(resposta.codErro, resposta.mensagem, false)) {
			if (resposta.dados[0] != null) {
				autoReferencia.montaEntConfAlarmeVeiculo(resposta.dados);
				//autoReferencia.getLimite().setListagemUsuario(autoReferencia.getEntConfAlarmeVeiculo().getColaboradoresResumo());
				autoReferencia.atualizaListagemUsuarios();
			}
			else {
				//limite.limpaColaborador();
			}
		}
	}
	
	this.montaEntConfAlarmeVeiculo = function(dados) {
		var entConfAlarmeVeiculo = new EntConfAlarmeVeiculo();

		if (dados[0].registros != null) {
			for(var i = 0; i < dados[0].registros.length; i++) {
				var entColaboradorResumo = this.montaEntidadeColaboradorResumo(dados[0].registros[i]);
			
				entConfAlarmeVeiculo.getColaboradoresResumo().push(entColaboradorResumo);
			}
		}		
		
		this.setEntConfAlarmeVeiculo(entConfAlarmeVeiculo);
	}
	
	/***  BUSCAS RAPIDAS  retorno esta ao final do script junto aos pesquisas***/
	this.buscaRapidaDepartamento = function(campoAtual, proximoCampo) {
		var departamento = "DeptoOperacional()";
		var pesquisa = "Departamento";
		var requisitante = "CtrConfAlarmeVeiculo";
		
		this.buscaRapida(campoAtual, proximoCampo, departamento,pesquisa ,requisitante);
	}
	
	this.buscaRapidaUsuario = function(campoAtual, proximoCampo) {
		var departamento = "DeptoOperacional()";
		var pesquisa = "Usuario";
		var requisitante = "CtrConfAlarmeVeiculo";
		
		this.buscaRapida(campoAtual, proximoCampo, departamento,pesquisa ,requisitante);
	}
	
	/*** Buscas por codigo ***/
	this.buscaDepartamento = function(codigo) {
		var entDepartamento = new EntDepartamento();
		entDepartamento.setCodigo(codigo);
		
		var deptoOperacional = new DeptoOperacional();
		deptoOperacional.busca(entDepartamento, this.retornoBuscaDepartamento);
	}
	
	this.retornoBuscaDepartamento = function(resposta) {
		var limite = autoReferencia.getLimite();
		if (autoReferencia.trataRespostaServidor(resposta.codErro, resposta.mensagem, false)) {
			
			//var entDepartamento = new EntDepartamento();		
			
			if (resposta.dados != undefined) {
				limite.setCampoCodigoDepartamento(resposta.dados[0].codigo);
				limite.setCampoDepartamento(resposta.dados[0].nome);
			} else {
				limite.limpaDepartamento();
			}
		}
	}	
	
	this.buscaUsuario = function(codigo) {
		var entUsuario = new EntUsuario();
		entUsuario.setCodigo(codigo);
		
		var deptoOperacional = new DeptoOperacional();
		deptoOperacional.busca(entUsuario, this.retornoBuscaUsuario);
	}
	
	this.retornoBuscaUsuario = function(resposta) {
		var limite = autoReferencia.getLimite();
		if (autoReferencia.trataRespostaServidor(resposta.codErro, resposta.mensagem, false)) {
			
			var entUsuario = new EntUsuario();		
			
			if (resposta.dados != undefined) {
				limite.setCampoCodigoUsuario(resposta.dados[0].codigo);
				limite.setCampoUsuario(resposta.dados[0].nome);
			}
			else {
				limite.limpaUsuario();
			}
			
		}
	}	
	/*** fim busca por codigo ***/
	
	/*** pesquisas ***/
	this.pesquisaUsuario = function() {
		var ctrPesquisaSimples = aplicativo.getControlador("CtrPesquisaSimples");
		ctrPesquisaSimples.setDepto("DeptoOperacional()");
		ctrPesquisaSimples.setPesquisa("Usuario");
		ctrPesquisaSimples.setControladorRequisitante("CtrConfAlarmeVeiculo");
		ctrPesquisaSimples.abrirJanela();	
	}
	
	this.pesquisaDepartamento = function() {
		var ctrPesquisaSimples = aplicativo.getControlador("CtrPesquisaSimples");
		ctrPesquisaSimples.setDepto("DeptoOperacional()");
		ctrPesquisaSimples.setPesquisa("Departamento");
		ctrPesquisaSimples.setControladorRequisitante("CtrConfAlarmeVeiculo");
		ctrPesquisaSimples.abrirJanela();	
	}
	
	this.retornoPesquisas = function(codigo, descricao, pesquisa) {
		var limite = autoReferencia.getLimite();
		
		if (pesquisa == "Usuario") {
			limite.setCampoCodigoUsuario(codigo);
			limite.setCampoUsuario(descricao);
			
			
		} else if (pesquisa == "Departamento") {
			limite.setCampoCodigoDepartamento(codigo);
			limite.setCampoDepartamento(descricao);
		
		}		
		else {
			this.getLimite().mostrarMensagem("alerta", PESQUISA_NAO_RECONHECIDA);
		}
	}
	
	this.adicionaDepartamento = function() {
		var limite = this.getLimite();
		
		var entPesquisa = new EntPesquisa() ;
		entPesquisa.setCodigo(limite.getCampoCodigoDepartamento());
		entPesquisa.setPesquisa("UsuarioPorDepartamento");
		
		var deptoOperacional = new DeptoOperacional();
		deptoOperacional.pesquisa(entPesquisa, this.retornoAdicionaDepartamento);
		
		limite.limpaDepartamento();
	}
	
	this.retornoAdicionaDepartamento = function(resposta) {
		var limite = autoReferencia.getLimite();
		
		if (autoReferencia.trataRespostaServidor(resposta.codErro, resposta.mensagem, false)) {
			if (resposta.dados[0].registros != null) {
				autoReferencia.adicionaUsuarios(resposta.dados[0].registros);
			}
		}
		
	}
	
	this.adicionaUsuarios = function(usuarios) {
		for (var i = 0; i < usuarios.length; i++) {
			var colaboradorResumo = new EntColaboradorResumo();
			colaboradorResumo = this.montaEntidadeColaboradorResumo(usuarios[i]);
			
			this.adicionaColaboradorResumoAoArray(colaboradorResumo);
		}
		this.atualizaListagemUsuarios();
	}

	this.montaEntidadeColaboradorResumo = function(colaboradorResumo) {
		var entColaboradorResumo = new EntColaboradorResumo();
		
		entColaboradorResumo.setCodigo(colaboradorResumo.codigo);
		entColaboradorResumo.setNome(colaboradorResumo.descricao);

		return entColaboradorResumo;
	}
	
	this.atualizaListagemUsuarios = function() {
		this.getLimite().setListagemUsuario(this.getEntConfAlarmeVeiculo().getColaboradoresResumo());
	}
	
//	this.montaEntColaboradorResumo = function(registros) {
//	
//		for(var i = 0; i < registros.length; i++) {
//			var entColaboradorResumo = new EntColaboradorResumo();
//			entColaboradorResumo.setCodigo(registros[i].codigo);
//			entColaboradorResumo.setNome(registros[i].descricao);
//			
//			var entConfAlarmeVeiculo = this.getEntConfAlarmeVeiculo();
//			entConfAlarmeVeiculo.getColaboradoresResumo().push(entColaboradorResumo);
//			this.setEntConfAlarmeVeiculo(entConfAlarmeVeiculo);
//		}
//	}
	
	this.retornoBuscaColaborador = function(resposta) {
		var limite = autoReferencia.getLimite();
		
		if (autoReferencia.trataRespostaServidor(resposta.codErro, resposta.mensagem, false)) {
			if (resposta.dados != undefined) {
				limite.setCampoCodigoResponsavel(resposta.dados[0].codigo);
				limite.setCampoResponsavel(resposta.dados[0].nome);
			} else {
				limite.limpaResponsavel();
			}
		}		
	}
	
	this.adicionaUsuario = function() {
		var limite = this.getLimite();
		
		var entColaboradorResumo = new EntColaboradorResumo();
		entColaboradorResumo.setCodigo(limite.getCampoCodigoUsuario());
		entColaboradorResumo.setNome(limite.getCampoUsuario());

		this.adicionaColaboradorResumoAoArray(entColaboradorResumo);
		this.atualizaListagemUsuarios();
		
		limite.limpaUsuario();
	}

	this.adicionaColaboradorResumoAoArray = function(colaboradorResumo) {
		if (this.checaRepeticao(colaboradorResumo)) {
			var entConfAlarmeVeiculo = this.getEntConfAlarmeVeiculo();
			entConfAlarmeVeiculo.getColaboradoresResumo().push(colaboradorResumo);
		}
	}
	
	this.checaRepeticao = function(colaboradorResumo) {
		var arrayColaboradoresResumo = this.getEntConfAlarmeVeiculo().getColaboradoresResumo();
		var retorno = true;
		
		for (var i = 0; i < arrayColaboradoresResumo.length; i++) {
			if (arrayColaboradoresResumo[i].getCodigo() == colaboradorResumo.getCodigo()) {
				retorno = false;
				break;
			}
		}
		
		return retorno;
	}
	
	
	this.removeUsuario = function(posicao) {
		var arrayColaboradorResumo = this.getEntConfAlarmeVeiculo().getColaboradoresResumo();
		arrayColaboradorResumo.splice(posicao, 1);
		
		this.getLimite().setListagemUsuario(arrayColaboradorResumo);
	}
	
	//VERIFICA SE EXISTE VALORES NOS ARRAYS AFIM DE DEIXAR SALVAR
	this.verificarValoresListagem = function() {
		var entConfAlarmeVeiculo = this.getEntConfAlarmeVeiculo();
		var repetido = false;
				
		if(entConfAlarmeVeiculo.getColaboradoresResumo() != "") {
			return (repetido = true);
		}
	}
	
	this.botaoSalvar = function() {
		var entConfAlarmeVeiculo = this.getEntConfAlarmeVeiculo(); 
		
		this.getLimite().desabilitaBotaoSalvar();
		
		var deptoConfiguracoes = new DeptoConfiguracoes();
		deptoConfiguracoes.cadastra(entConfAlarmeVeiculo, this.retornoCadastra);
	}
	
	this.retornoCadastra = function(resposta) {
		autoReferencia.getLimite().habilitaBotaoSalvar();
		if (autoReferencia.trataRespostaServidor(resposta.codErro, resposta.mensagem, true)) {
		}
	}
	
	//GETS E SETS
	
	this.getEntConfAlarmeVeiculo = function() {
		return this.entConfAlarmeVeiculo == null ? new EntConfAlarmeVeiculo() : this.entConfAlarmeVeiculo;
	}

	this.setEntConfAlarmeVeiculo = function(valor) {
		this.entConfAlarmeVeiculo = valor;
	}
	
}
CtrConfAlarmeVeiculo.prototype = new Controlador;