/**
 * CLASSE GENERICA DE PESQUISA E MULTISELECAO
 */
function LimPesquisaColaboradores(objControlador) {

	this.setId("CtrPesquisaColaboradores");
	this.setLargura(490);
	this.setAltura(420);
	this.setTitulo("Pesquisa de Colaboradores");
	this.setHtml("pesquisaColaboradores.html");
	this.setIdFormulario("formPesquisaColaboradores");
	this.setIdFoco("pesquisa_nome");

	this.setControlador(objControlador);

/*
 * ATRIBUTOS
 */
	this.situacao = 1;
	this.codigo = 0;
	this.cpfcnpj = 0;
	this.descricao = null;
	this.ativo = true;
	this.paginador = new Paginador();
	this.arrayDadosPaginador = null;
	this.resultadosPorPagina = 30;
	
	this.tipoCliente = true;
	this.tipoFuncionario = true;
	this.tipoFornecedor = true;
	
//DEFINE SITUACAO
	this.defineAtivo = function() {
		this.ativo = true;
		$(this.getIdFormulario()).pesquisa_situacaoRadio[0].checked = true; 
	}

	this.defineInativo = function() {
		this.ativo = false;
		$(this.getIdFormulario()).pesquisa_situacaoRadio[1].checked = true; 
	}
	
	this.botaoBuscaEfetuarPesquisa = function() {
		this.limparPaginacao();
		this.getControlador().efetuarPesquisa();
	}

	this.retornaPesquisa = function(codigo, descricao, cont) {
		var objCtr = this.getControlador();

		if(!objCtr.getMultiSelecao()) {
			this.getControlador().retornaPesquisa(codigo, descricao);
			this.prototypeWindow.close();
		} else {
			this.selecionaItem(cont);
		}

	}

	this.imprimirListaDeDados = function(objRespPaginador) {
		this.getObjDvResposta().update();
		var corTab = "";
		var mouseOver = "#C4FFD7";
		var contResposta = 0;
		var arMensagem = objRespPaginador;
		
		for(i=0; i < arMensagem.length; i++) {
			if(arMensagem[i] != undefined) {
				if (i % 2 == 0){
					corTab = "#FFFFFF"; 
				} else {
					corTab = "#F3F3F3";
				}
			var listaParaImpressao = "<table width=\"100%\" border=\"0\" cellpadding=\"2\" cellspacing=\"0\" class=\"fonte\">";
			listaParaImpressao += "<tr height='16' bgcolor='" + corTab + "' style='cursor: pointer' onMouseOver=\"bgColor='" + mouseOver + "'\"; onMouseOut=\"bgColor='" + corTab + "'\" onClick=\"aplicativo.getControlador('CtrPesquisaColaboradores').getLimite().retornaPesquisa(" + arMensagem[i].codigo + ", '" + this.trataAspas(arMensagem[i].descricao) + "', " + i + "); \">\n";
			listaParaImpressao += "<td width='78'>" + arMensagem[i].codigo + "</td><td width='342'>" + arMensagem[i].descricao + "</td></tr></table>";
					
			var addItem = document.createElement("div");		
			addItem.id = "itemPesquisa" + i;
				
			this.getObjDvResposta().appendChild(addItem);
			addItem.innerHTML = listaParaImpressao;			
			addItem.style.backgroundColor = corTab;
			} 				
			this.getObjDvResposta().style.display = "";
			this.trataScroll(this.getObjDvResposta());				
		}
		if(this.getControlador().getMultiSelecao()) {
			this.checaSelecionados(arMensagem);
		}
	}

	this.proximaPagina = function() {
		var objPaginador = this.getPaginador();
		var objControlador = this.getControlador();
		objPaginador.setTotalDeDados(objControlador.getTotalRegistros());
		var numeroPagina = this.getNumeroPagina();
		if(this.getNumeroPagina() <= this.getPaginador().maximoDePaginas()) {

			this.setNumeroPagina(numeroPagina + 1);
			
			var valorNovaReq = objPaginador.novaRequisicao(this.getNumeroPagina());
			
			if(valorNovaReq == -1) {
				var arDados = objPaginador.proxima();
				this.setArrayDadosPaginador(arDados);
				this.imprimirListaDeDados(arDados);
				this.definirSituacaoBotoes(objPaginador.primeiraPagina(), objPaginador.ultimaPagina(), objPaginador.getPaginaAtual());	
			} else {
				objControlador.setRegistroInicial(valorNovaReq);
				objControlador.efetuarPesquisa();
			}
		} else {
			$(this.getIdFormulario()).numeroPagina.value = objPaginador.getPaginaAtual();
		}
	}
	
	this.paginaAnterior = function() {
		var objPaginador = this.getPaginador();
		var objControlador = this.getControlador();
		objPaginador.setTotalDeDados(objControlador.getTotalRegistros());
		
		if(this.getNumeroPagina() <= this.getPaginador().maximoDePaginas()) {
			this.setNumeroPagina(this.getNumeroPagina() - 1);
			var valorNovaReq = objPaginador.novaRequisicao(this.getNumeroPagina());			
			if(valorNovaReq == -1) {
				var arDados = objPaginador.anterior();
				this.setArrayDadosPaginador(arDados);
				this.imprimirListaDeDados(arDados);
				this.definirSituacaoBotoes(objPaginador.primeiraPagina(), objPaginador.ultimaPagina(), objPaginador.getPaginaAtual());			
			} else {
				objControlador.setRegistroInicial(valorNovaReq);
				objControlador.efetuarPesquisa();
			}
		} else {
			$(this.getIdFormulario()).numeroPagina.value = objPaginador.getPaginaAtual();
		}
	}
	
	this.paginaEspecifica = function() {
		var objPaginador = this.getPaginador();
		var objControlador = this.getControlador();
		objPaginador.setTotalDeDados(objControlador.getTotalRegistros());
		var numeroPagina = this.getNumeroPagina();

		if(this.getNumeroPagina() <= this.getPaginador().maximoDePaginas()) {
			objPaginador.setTotalDeDados(objControlador.getTotalRegistros());
			var valorNovaReq = objPaginador.novaRequisicao(this.getNumeroPagina());			
			if(valorNovaReq == -1) {
				var arDados = objPaginador.getPagina(this.getNumeroPagina());
				this.setArrayDadosPaginador(arDados);
				this.imprimirListaDeDados(arDados);
				this.definirSituacaoBotoes(objPaginador.primeiraPagina(), objPaginador.ultimaPagina(), objPaginador.getPaginaAtual());
			} else {
				objControlador.setRegistroInicial(valorNovaReq);
				objControlador.efetuarPesquisa();				
			}				
		} else {
			$(this.getIdFormulario()).numeroPagina.value = objPaginador.getPaginaAtual();
		}
	}

	
	this.inicializarListagem = function() {
		var arrayResp = this.getControlador().getArrayDadosResp();
		this.getPaginador().setArrayResultados(arrayResp);
		this.paginaEspecifica();
	}

	this.limparPaginacao = function() {
		this.getObjDvAlerta().innerHTML = "";
		this.getObjDvResposta().innerHTML = "";
		$("divPesquisaMaximoDePaginas").update();
		$(this.getIdFormulario()).numeroPagina.value = 1;
		$("divImgPesquisaAvancarHabilitado").style.display = "none";
		$("divImgPesquisaAvancarDesabilitado").style.display = "";
		$("divImgPesquisaRecuarHabilitado").style.display = "none";
		$("divImgPesquisaRecuarDesabilitado").style.display = "";
		if(this.getControlador().getArrayDadosResp().length == 0) {
			$(this.getIdFormulario()).numeroPagina.disabled = true;
			$(this.getIdFormulario()).numeroPagina.className = "input30d";
		} else {
			$(this.getIdFormulario()).numeroPagina.disabled = false;
			$(this.getIdFormulario()).numeroPagina.className = "input30";
		}	
	}
	
	this.definirSituacaoBotoes = function(vPrimeiraPagina, vUltimaPagina, vPaginaAtual) {

		if(vUltimaPagina && vPrimeiraPagina) {
			$("divImgPesquisaAvancarHabilitado").style.display = "none";
			$("divImgPesquisaAvancarDesabilitado").style.display = "";
			$("divImgPesquisaRecuarHabilitado").style.display = "none";
			$("divImgPesquisaRecuarDesabilitado").style.display = "";
		} else if(!vUltimaPagina && !vPrimeiraPagina) {
			$("divImgPesquisaAvancarHabilitado").style.display = "";
			$("divImgPesquisaAvancarDesabilitado").style.display = "none";
			$("divImgPesquisaRecuarHabilitado").style.display = "";
			$("divImgPesquisaRecuarDesabilitado").style.display = "none";						
		} else if(vPrimeiraPagina) {
			$("divImgPesquisaAvancarHabilitado").style.display = "";
			$("divImgPesquisaAvancarDesabilitado").style.display = "none";
			$("divImgPesquisaRecuarHabilitado").style.display = "none";
			$("divImgPesquisaRecuarDesabilitado").style.display = "";
		} else if(vUltimaPagina) {
			$("divImgPesquisaAvancarHabilitado").style.display = "none";
			$("divImgPesquisaAvancarDesabilitado").style.display = "";
			$("divImgPesquisaRecuarHabilitado").style.display = "";
			$("divImgPesquisaRecuarDesabilitado").style.display = "none";
					
		}
		$(this.getIdFormulario()).numeroPagina.disabled = false;
		$(this.getIdFormulario()).numeroPagina.className = "input30";	
		$(this.getIdFormulario()).numeroPagina.value = vPaginaAtual;
		$("divPesquisaMaximoDePaginas").innerHTML = " de " + this.getPaginador().maximoDePaginas();
	}
	/**
	 * SELECAO DE RESULTADOS 
	 */
	this.selecionaItem = function(vId) {
		
		if (vId % 2 == 0){
			var corTab = "#FFFFFF"; 
		} else {
			var corTab = "#F3F3F3";
		}
				
		var objArraySelecao = this.getArraySelecao();
		var objArrayCodigosSelecionados = this.getArrayCodigosSelecionados();
		var objArrayDadosPaginador = this.getArrayDadosPaginador()[vId];
		var vPosCod = objArrayCodigosSelecionados.indexOf(objArrayDadosPaginador.codigo);
		var objSelecao = eval( "$('itemPesquisa" + vId + "')");
		
		if(vPosCod == -1) {
			objArraySelecao.push(objArrayDadosPaginador);
			objArrayCodigosSelecionados.push(objArrayDadosPaginador.codigo);
			objSelecao.style.backgroundColor = "#D5D5D5";
			objSelecao.setAttribute("onmouseout", "this.style.backgroundColor = '#D5D5D5'");
			objSelecao.setAttribute("onmouseover", "this.style.backgroundColor = '#D5D5D5'");			
		} else {
			objSelecao.style.backgroundColor = corTab;			
			objSelecao.setAttribute("onmouseover", "this.style.backgroundColor = '#C4FFD7'");
			objSelecao.setAttribute("onmouseout", "this.style.backgroundColor = '" + corTab + "'");
			objArraySelecao[vPosCod] = undefined;
			objArrayCodigosSelecionados[vPosCod] = undefined;
			this.setArraySelecao(objArraySelecao.compact());
			this.setArrayCodigosSelecionados(objArrayCodigosSelecionados.compact());
		}
	}
	
//VERIFICA SE A EXISTE ITEM SELECIONADO NA INTERFACE SOLICITANTE
	this.checaSelecionados = function(objResp) {
		
		var objResposta = objResp;
		var objCtr = this.getControlador();
		var objArraySelecao = this.getArraySelecao();
		var objArrayCodigosSelecionados = this.getArrayCodigosSelecionados();
		
		for(i=0; i < objResposta.length; i++) {
			if(objResposta[i] != undefined) {
				var pos = objArrayCodigosSelecionados.indexOf(objResposta[i].codigo);

				if(pos != -1) {
					objArrayCodigosSelecionados[pos] = undefined;
					objArraySelecao[pos] = undefined;
					this.selecionaItem(i);
				}
			}
		}
	}

	this.mostrarRespostaInclusao = function(vNovos, vExistentes) {
		mensagem = "<table width='100%' align='center' class='alertapesquisaitensestoque' cellpadding='0' cellspacing='2'><tr><td valign='middle'><strong>" + vNovos + "</strong> itens adicionados, <strong>" + vExistentes + "</strong> existentes.</td></tr></table>";
		this.getObjDvAlerta().innerHTML = mensagem;
	}			
	
	this.mostrarAlertaSelecao = function() {
		mensagem = "<table width='100%' align='center' class='respostaalerta' cellpadding='0' cellspacing='2'><tr><td valign='middle'>Selecione pelo menos um item antes de incluir.</td></tr></table>";
		this.getObjDvAlerta().innerHTML = mensagem;
	}	
		
	/**
	 * SELECAO / DESELECAO / INVERSAO  EM MASSA
	 */
	this.checkAll = function() {
		var objArraySelecao = this.getArraySelecao();
		var objArrayCodigosSelecionados = this.getArrayCodigosSelecionados();
		var objArrayDadosPaginador = this.getArrayDadosPaginador();
		var pos = 0;
		for(i=0; i<objArrayDadosPaginador.length; i++) {
			pos = objArrayCodigosSelecionados.indexOf(objArrayDadosPaginador[i].codigo);
			objArrayCodigosSelecionados[pos] = undefined;
			objArraySelecao[pos] = undefined;						
			this.selecionaItem(i);
		}
	}
	
	this.uncheckAll = function() {
		var objArraySelecao = this.getArraySelecao();
		var objArrayCodigosSelecionados = this.getArrayCodigosSelecionados();
		var objArrayDadosPaginador = this.getArrayDadosPaginador();
		var pos = 0;
		
		for(i=0; i<objArrayDadosPaginador.length; i++) {
			pos = objArrayCodigosSelecionados.indexOf(objArrayDadosPaginador[i].codigo);
			if(pos != -1) {
				this.selecionaItem(i);	
			}
		}
	}
	
	this.invertAll = function() {
		for(i=0; i<this.getArrayDadosPaginador().length; i++) {
				this.selecionaItem(i);	
		}
	}
	
	this.incluirSelecao = function() {
			this.getControlador().enviaArraySelecao();
	}


//POS CARREGAMENTO	
	this.posCarregamento = function() {
		this.getPaginador().setTotalDadosPorPagina(this.getResultadosPorPagina());		
		this.colocaFoco();
	}
	
	/*
	 * SETS / GETS
	 */	
	
	
	//CHECKBOX
	this.checkboxTipoCliente = function() {
		this.tipoCliente = $(this.getIdFormulario()).pesquisa_tipoCliente.checked;
	}
	this.checkboxTipoFuncionario = function() {
		this.tipoFuncionario = $(this.getIdFormulario()).pesquisa_tipoFuncionario.checked;
	}
	this.checkboxTipoFornecedor = function() {
		this.tipoFornecedor = $(this.getIdFormulario()).pesquisa_tipoFornecedor.checked;
	}
	
	this.setCodigo = function(vCodigo) { 
		$(this.getIdFormulario()).pesquisa_codigo.value = vCodigo; 
		this.codigo = vCodigo; 
	}
	
	this.getCodigo = function() { 
		return $(this.getIdFormulario()).pesquisa_codigo.value;
	}
	
	this.setCpfCnpj = function(vCpfCnpj) {
		$(this.getIdFormulario()).pesquisa_cpfcnpj.value = vCpfCnpj;
		this.cpfcnpj = vCpfCnpj;
	}

	this.getCpfCnpj = function() {
		return $(this.getIdFormulario()).pesquisa_cpfcnpj.value;
	}
	
	this.getDescricao = function() { 
		return this.trataStringParaPesquisa($(this.getIdFormulario()).pesquisa_nome.value); 
	}

	//OBJ DV RESPOSTA
	this.getObjDvResposta = function() { 
		return $("divPesquisaResp"); 
	}

	//OBJ DV RESPOSTA INCLUSAO
	this.getObjDvAlerta = function() { 
		return $("divPesquisaRespostaInclusao"); 
	}

	//NUMERO PAGINA	
	this.setNumeroPagina = function(vPagina) { 
		this.numeroPagina = vPagina; 
		$(this.getIdFormulario()).numeroPagina.value = this.setDadoNoFormulario(vPagina); 
	}
	
	this.getNumeroPagina = function() { 
		return Number($(this.getIdFormulario()).numeroPagina.value); 
	}
	
	//ARRAY CODIGOS SELECIONADOS
	this.setArrayCodigosSelecionados = function(vValor) { 
		this.arrayCodigosSelecionados = vValor; 
	}
	
	this.getArrayCodigosSelecionados = function() { 
		return this.arrayCodigosSelecionados; 
	}

	//ATIVO / INATIVO
	this.getAtivo = function() {
		return this.ativo;
	}
	
	//REFERENCIA DO PAGINADOR
	this.setPaginador = function(vObj) {
		this.paginador = vObj;
	}
	
	this.getPaginador = function() {
		return this.paginador;
	}	

	//SETA DADOS ARRAY DE RETORNO NO PAGINADOR
	this.setArrayDadosPaginador = function(vDados) {
		this.arrayDadosPaginador = vDados;
	}
	
	this.getArrayDadosPaginador = function() {
		return this.arrayDadosPaginador;
	}
	
	//MAXIMO RESULTADOS POR PAGINA		
	this.setResultadosPorPagina = function(vValor) {
		this.resultadosPorPagina = vValor;	
	}
	
	this.getResultadosPorPagina = function() {
		return this.resultadosPorPagina;	
	}			
}
LimPesquisaColaboradores.prototype = new Limite;
