function LimRegistroProducao(objCtrRegistroProducao) {
	
	this.setId("CtrRegistroProducao");
	this.setIdFormulario("formRegistroProducao");
	this.setLargura(650);
	this.setAltura(500);
	this.setTitulo("Registro de Produ&ccedil;&atilde;o");
	this.setHtml("departamento/producao/cad_registroProducao.html");
	this.setIdFoco("idCampoCodigoCentroDeCusto");
	
	this.setControlador(objCtrRegistroProducao);
	
	//EVENTOS
	
	this.eventoBotaoNovo = function() {
		this.limpaRegistro();
		this.habilitaBotaoSalvar();
		this.getControlador().setIdentificacaoAutomatica(true);
	}
	
	this.pesquisaRegistroProducao = function(){
		this.getControlador().pesquisaRegistroProducao();
	}
	
	this.buscaRapidaCentroCustos = function(campoAtual, proximoCampo) {
		this.getControlador().buscaRapidaCentroCustos(campoAtual, proximoCampo);
	}
	
	this.trataEventoBuscaCentroDeCustos = function(codigo) {
		this.limparStyle();
		if (codigo > 0) {
			this.getControlador().buscaCentroDeCustos(codigo)
		} else {
			this.setCampoCodigoCentroDeCusto("");
			this.setCampoCentroDeCusto("");
		}		
	}
	
	this.pesquisarProduto = function() {
		this.getControlador().pesquisarProduto();
	}
	
	this.buscaRapidaProduto = function(campoAtual, proximoCampo) {
		this.getControlador().buscaRapidaProduto(campoAtual, proximoCampo);
	}
	
	this.buscaProduto = function(codigo) {
		this.limparStyle();
		if (codigo > 0) {
			this.getControlador().buscaProduto(codigo)
		} else {
			this.setCampoCodigoProduto("");
			this.setCampoProduto("");
		}		
	}
	
	this.pesquisarCentroDeCusto = function() {
		this.getControlador().pesquisaCentroDeCustos();
	}
	
	
	this.adicionaProduto = function() {
		
		if (this.verificaCampos()) {
			this.getControlador().adicionaProduto();
		} else {
			this.mostrarMensagem(this.getControlador().codAlerta, ADICIONAR_PRODUTOS);
		}
				
		this.limpaCampos();
	}
	
	this.verificaCampos = function() { //verifica se todos os campos estao preenchidos antes de adicionar
		var obrigatorio = 0;
		
		if (this.getCampoData().length == 10) {
			obrigatorio++; 
		}

		if (this.getCampoCodigoCentroDeCusto() > 0 && this.getCampoCentroDeCusto() != "") {
			obrigatorio++; 
		}
		
		if (this.getCampoCodigoProduto() > 0 && this.getCampoProduto() != "") {
			obrigatorio++;
		}
		
		if (this.getCampoQuantidade() != "") {
			obrigatorio++;
		}
		return (obrigatorio == 4);
	}
	
	this.AdicionarProdutoPorCodigoBarras = function() { 
		if(this.getCampoCodBarrasProduto() != "") {
			this.getControlador().adicionaProdutoPorCodigoBarras();
		}
	}
	
	this.salvarRegistroProducao = function() {
		if (this.verificaCamposObrigatorios()){ 
			if(this.getControlador().verificaArrayItens()) {
				this.getControlador().salvar();
			} else {
				this.mostrarMensagem(this.getControlador().codAlerta, CAMPOS_OBRIGATORIOS_REGISTROPRODUCAO);
			}
		}
	}
	
	//METODO ULTILIZADO PARA INIBIR UMA SALVACAO REPETIDA
	this.desabilitaBotaoSalvar = function() {
		$(this.getIdFormulario()).idSalvarRegistroProducao.blur();
		$(this.getIdFormulario()).idSalvarRegistroProducao.disabled = "true";
	}
	
	this.habilitaBotaoSalvar = function() {
		$(this.getIdFormulario()).idSalvarRegistroProducao.disabled = "";
	}
	
	// coloca mascara no campo quantidade, dependendo da unidade do produto
	this.colocaMascara = function(simboloUnidade) { 
		
		if (simboloUnidade == "un" || simboloUnidade == "it") { //Simbolos da unidade "unidade" e "unitario"
			this.setDivInputQuantidade("<input onkeypress='return aplicativo.getLimite(\"LimRegistroProducao\").teclaPressionada(event, idBotaoAdicionaProduto)' name='campoQuantidadeProduto' type='text' class='input80' id='idCampoQuantidadeProduto' mascara='quantidade'>");
			$(this.getIdFormulario()).idCampoQuantidadeProduto.focus();
		} else {
			this.setDivInputQuantidade("<input onkeyup='return aplicativo.getLimite(\"LimRegistroProducao\").teclaPressionada(event)' onkeypress='return aplicativo.getLimite(\"LimRegistroProducao\").trataEnter(event, idBotaoAdicionaProduto)' name='campoQuantidadeProduto' type='text' class='input80' id='idCampoQuantidadeProduto' mascara='monetario' >");
			$(this.getIdFormulario()).idCampoQuantidadeProduto.focus();
		}
	}
	
	// exibir campo pesquisar produto
	this.expandirOpcaoPesquisaProduto = function() {
		$("divPesquisaProdutos").show();
		
		var imagem = "<img src='../imagem/esconder2.gif' onclick=\"aplicativo.getLimite('LimRegistroProducao').esconderOpcaoPesquisaProduto();\" width='16' align='absmiddle' height='16' style='cursor:pointer' title='Esconder Busca de Produtos'>";
		$('divImagemExibirPesquisa').innerHTML = imagem;
		
	} 
	
	this.esconderOpcaoPesquisaProduto = function() {
		$("divPesquisaProdutos").hide();
		
		var imagem = "<img src='../imagem/expandir2.gif' onclick=\"aplicativo.getLimite('LimRegistroProducao').expandirOpcaoPesquisaProduto();\" width='16' align='absmiddle' height='16' style='cursor:pointer' title='Expandir Busca de Produtos'>";
		$('divImagemExibirPesquisa').innerHTML = imagem;
	}
	//METODO ULTILIZADO PARA INIBIR UMA ALTERACAO DO PRODUTO
	this.desabilitaBotaoSalvar = function() {
		$(this.getIdFormulario()).idSalvarRegistroProducao.blur();
		$(this.getIdFormulario()).idSalvarRegistroProducao.disabled = "true";
	}
	
	this.habilitaBotaoSalvar = function() {
		$(this.getIdFormulario()).idSalvarRegistroProducao.disabled = "";
	}
	
	// LISTAGEM DE PRODUTO
	this.setListagemProdutos = function (conteudo) {
		var divProdutos = $("divProdutos")
		divProdutos.update();
	 	var classDesabilitado = "input80";
	 	var conteudoListagem = "";
		var pos = 0;
		var mouseOver = "#C4FFD7";
		var numero = new Numero()
		
		for(var i = 0; i < conteudo.length; i++) {
			var corTabela = (i % 2 == 0) ? "#FFFFFF" : "#F3F3F3";  
			conteudoListagem += "<table bgcolor=\""+corTabela+"\" width='100%' border='0' cellpadding='2' cellspacing='1' class='fonte'>";
			conteudoListagem += "<tr height='16' onMouseOver=\"bgColor='" + mouseOver + "'\"; onMouseOut=\"bgColor='" + corTabela + "'\">"; 
			conteudoListagem += "<td width='50'>&nbsp;" +conteudo[i].getResumoProduto().getCodigo()+ "</td>";
			conteudoListagem += "<td width='120'>"+ conteudo[i].getResumoProduto().getDescricao() +"</td>";
			conteudoListagem += "<td width='120'>"+ conteudo[i].getResumoCC().getDescricao() +"</td>";
			conteudoListagem += "<td width='55'>"+ numero.formataNumeroParaCliente(conteudo[i].getQuantidade(), 2) +"</td>";
			conteudoListagem += "<td width='95'>" + conteudo[i].getUnidade().getNome() + "</td>";
			conteudoListagem += "<td width='95'><a href='javascript:void(0);' onclick=\"aplicativo.getLimite('LimRegistroProducao').exibirIdentificacaoMateriais("+ i +");\" style='cursor: pointer'><img src='../imagem/detalhes.gif' alt=\"Detalhes\" title=\"Detalhes\" border='0' align='absmiddle'>&nbsp;<strong>Detalhes</strong></a></td>";
			conteudoListagem += "<td width='20'><div align='center'><img onclick='javascript: aplicativo.getLimite(\"LimRegistroProducao\").removeProduto(" + i + ");' src='../imagem/remover.gif' width='16' height='16' border='0' align='absmiddle' style='cursor: pointer' title='Remover'></div></td>";
			conteudoListagem += "</tr>";
			conteudoListagem += "</table>";
			pos++;
			var addProdutos = document.createElement("div");
			addProdutos.id = "divProdutos";
			divProdutos.appendChild(addProdutos);
			addProdutos.innerHTML = conteudoListagem;
			divProdutos.style.display = "";
		}
 	 
 	 	this.trataScroll(divProdutos);
	 	divProdutos.innerHTML = conteudoListagem;
	}
	
	this.removeProduto = function(posicao) {
		this.getControlador().removeProduto(posicao);
	}
	
	this.exibirIdentificacaoMateriais = function(pos) {
		this.getControlador().abreIdentificacaoMateriais(pos);
	}
	
	this.exibirProduto = function(produto) {
		this.setCampoCodigoProduto(produto.getResumoProduto().getCodigo());
		this.setCampoProduto(produto.getResumoProduto().getDescricao());
		this.setSpanTipoUnidade(produto.getUnidade().getNome());
		this.colocaMascara(produto.getUnidade().getSimbolo());
	}
	
	this.exibirEntRegistroProducao = function(registroProducao) {
		var calendario = new Calendario();
		
		this.setCampoCodigoRegistroProduto(registroProducao.getCodigo());
		this.setCampoData(calendario.formataDataParaHtml(registroProducao.getData()));
		this.setCampoObservacoes(registroProducao.getObservacao() == undefined ? "" : registroProducao.getObservacao());
		this.setListagemProdutos(registroProducao.getItens())
	}
	
	//LIMPA CAMPOS
	
	this.limpaRegistro = function () {
		this.limparStyle();
		this.limparMensagem();
		this.resetRegistro();
	}
	this.limpaCampos = function() {
		this.limpaProduto();
		this.setCampoQuantidade("");
		this.limpaCentroDeCusto();
	}
	
	this.resetRegistro = function() {
		this.setCampoCodigoRegistroProduto("");
		this.setCampoCodigoProduto("");
		this.setCampoProduto("");
		this.setCampoQuantidade("");
		this.setCampoObservacoes("");
		this.setSpanTipoUnidade("");
		this.limpaDivProduto();
		this.limpaCentroDeCusto();
	}
	
	this.limpaDivProduto = function() {
		this.getControlador().removeValoresDivProdutos();
		$("divProdutos").style.display = "none";
	}
	
	this.limpaCentroDeCusto = function() {
		this.setCampoCodigoCentroDeCusto("");
		this.setCampoCentroDeCusto("");
		$(this.getIdFormulario()).idCampoCodigoCentroDeCusto.focus();
	}	


	this.limpaProduto = function() {
		this.setCampoCodigoProduto("");
		this.setCampoProduto("");
		this.setCampoCodBarrasProduto("");
		this.setCampoQuantidade("");
		this.setSpanTipoUnidade("");
		$(this.getIdFormulario()).idCampoCodigoProduto.focus();
	}
	
	this.limpaRegistroProduto = function() {
		this.setCampoCodigoProduto("");
		this.setCampoProduto("");
		this.setCampoCodigoCentroDeCusto("");
		this.setCampoCentroDeCusto("");
		this.setCampoQuantidade("");
		this.setSpanTipoUnidade("");
		$(this.getIdFormulario()).idCampoCodigoCentroDeCusto.focus();
	}	
	
	//GETS E SETS 
	this.getCampoCodigoRegistroProduto = function() {
		return $(this.getIdFormulario()).idCampoCodigoRegistroProduto.value;
	}
	
	this.setCampoCodigoRegistroProduto = function(valor) {
		$(this.getIdFormulario()).idCampoCodigoRegistroProduto.value = valor;
	}
	
	this.getCampoData = function() {
		return $(this.getIdFormulario()).idCampoData.value;
	}
	
	this.setCampoData = function(valor) {
		$(this.getIdFormulario()).idCampoData.value = valor;
	}
	
	this.getCampoCodigoCentroDeCusto = function() {
		return $(this.getIdFormulario()).idCampoCodigoCentroDeCusto.value;
	}
	
	this.setCampoCodigoCentroDeCusto = function(intValor) {
		$(this.getIdFormulario()).idCampoCodigoCentroDeCusto.value = intValor;
	}

	this.getCampoCentroDeCusto = function() {
		return $(this.getIdFormulario()).idCampoCentroDeCusto.value;
	}
	
	this.setCampoCentroDeCusto = function(strValor) {
		$(this.getIdFormulario()).idCampoCentroDeCusto.value = strValor;
	}

	this.getCampoCodigoProduto = function() {
		return $(this.getIdFormulario()).idCampoCodigoProduto.value;
	}
	
	this.setCampoCodigoProduto = function(intValor) {
		$(this.getIdFormulario()).idCampoCodigoProduto.value = intValor;
	}
	
	this.getCampoProduto = function() {
		return $(this.getIdFormulario()).idCampoProduto.value;
	}
	
	this.setCampoProduto = function(strValor) {
		$(this.getIdFormulario()).idCampoProduto.value = strValor;
	}
	
	this.getCampoCodBarrasProduto = function() {
		return $(this.getIdFormulario()).idCodigoBarrasProduto.value; 
	}
	
	this.setCampoCodBarrasProduto = function(valor) {
		$(this.getIdFormulario()).idCodigoBarrasProduto.value = valor;
	}
	
	this.getCampoQuantidade = function() {
		return $(this.getIdFormulario()).idCampoQuantidadeProduto.value;
	}
	
	this.setCampoQuantidade = function(iValor) {
		$(this.getIdFormulario()).idCampoQuantidadeProduto.value = iValor;
	}
	
	this.setDivInputQuantidade = function(valor) {
		$("divCampoQuantidade").innerHTML = valor;
	}

	this.getSpanTipoUnidade = function() {
		return $("spanTipoUnidade").innerHTML;
	}
	
	this.setSpanTipoUnidade = function(valor) {
		$("spanTipoUnidade").innerHTML = valor;
	}
	
	this.getCampoObservacoes = function() {
		return $(this.getIdFormulario()).idCampoObservacoes.value;
	}
	
	this.setCampoObservacoes = function(valor) {
		$(this.getIdFormulario()).idCampoObservacoes.value = valor;
	}
		
	this.posCarregamento = function() {
		this.getControlador().inicializa();
		this.colocaFoco();
	}
	
}	
LimRegistroProducao.prototype = new Limite;