	/**
 * Classe respons�vel pela dEFINIϿ�Ͽ�O DE MϿ�TODOS E INFORMAϿ�Ͽ�ES COMUNS
 * A TODAS OS LIMITES DO APLICAtivo cliente. Tipicamente os limites
 * representam as janelas gr�ficas de intera��o com o usu�rio do aplicativo
 * cliente (GUI's).
 *
 * TODAS AS CLASSES DE PROT�TIPO "LIMITE" ESTENDEM DESSA CLASSE.
 *
 * Prot�tipo dessa classe: LIMITE.
 *
 * @author Renato Sulzbach
 * @version 1.0
 * @since 26/07/2007
 */
function Limite() {
	// Atributo que representa o controlador desse limite.
	var controlador = null;

	// Atributo que representa o objeto Window do modulo Prototype Window.
	this.prototypeWindow = null;

	// Atributos necessarios para instanciar o objeto Window (Prototype Window).
	this.id = null;
	this.largura = 0;
	this.altura = 0;
	this.titulo = null;
	this.html = null;

	// Atributos diversos.
	this.idformulario = null;
	this.idFoco = null;
	this.idRespPesquisa = null;
	this.objFormulario = null;
	this.codigoTipoFornecedor = null;

	//Div para inputs de telefone
	this.idTelefone = null;

	//Div para campos de contato.
	this.idContato = null;

	//Div para inputs de tipo de conta
	this.idTipoConta = null;
		
	//DATA DO SERVIDOR
	this.dataDoControlador = null;		
	
	//PONTUACAO
	this.pontuacao = 0;
	this.objArrayPontuacao = null;
	
	/**t
	 * Inicializa o objeto Window, representado pelo Prototype Window.
	 */
	this.show = function() {
		if (this.prototypeWindow == null) {
			this.prototypeWindow = new Window(
					this.getId(),
					{className: 'alphacube',
					 top:10,
					 left:200,
					 width: this.getLargura(),
					 height: this.getAltura(),
					 zIndex:150,
					 resizable: true,
					 wiredDrag: true,
					 showEffectOptions: {duration:.2},
					 hideEffectOptions: {duration:.2}
					}
			);


			var data = new Date();
			var anoData =  data.getUTCFullYear() + 3;
			data.setUTCFullYear(anoData);

			this.prototypeWindow.setCookie(null, data);
			this.prototypeWindow.setTitle(this.getTitulo());
			
			this.prototypeWindow.setCloseCallback(this.fechar);

			this.prototypeWindow.getContent().innerHTML = (
				"<span><center><br><img src='../imagem/loading.gif'></img>" +
            	"&nbsp;<br><span class='carregando'>Carregando...</span>" +
            	"</center></span>"
            );

		}
		this.prototypeWindow.show();
		this.prototypeWindow.toFront();
	}

	/**
	 * Envia ao controlador a requisi��o para que seja fechada a janela.
	 */
	this.fechar = function() {

//		texto = "Propriedades do controlador ao FECHAR no LIMITE:\n";
//		for (chave in controlador) {
//			texto += chave + ": " + controlador[chave] + "\n";
//		}		
//		alert(texto);

		controlador.fecharJanela();
	}

	/**
	 * Destroy qualquer refer�ncia � janela criada (Prototype Window).
	 */
	this.destroy = function() {
		if (this.prototypeWindow != null) {
			this.prototypeWindow.destroy();
		}
		this.prototypeWindow = null;
	}

	/**
	 * Configura o conte�do interno da p�gina do objeto Window (Prototype Window).
	 * @param conteudo string contendo o <code>div</code> com a estrutura interna da p�gina.
	 */
	this.setContent = function(conteudo) {
		this.prototypeWindow.getContent().innerHTML = conteudo;
		this.posCarregamento();
	}

	/**
	 * M�todo que trata o conte�do de uma janela quando o servidor n�o consegue retornar o conte�do
	 * <code>HTML</code> pretendido.
	 * @param mensagem Mensagem a ser mostrada ao usu�rio indicando o erro.
	 */
	this.setContentErro = function(mensagem) {
		this.setContent (
			"<div><center><br>" +
			"<img src='../imagem/erro.gif'></img>" +
			"<br><br>" +
			"<span class='respostaerro'>" + mensagem + "</span>" +
			"</center></div>"
		);
	}


	/***************************************************
	 *
	 * 				UTILITARIOS DE FORMULARIO
	 *
	 ****************************************************/

	this.checkBox = function(objElemento) {
		if(objElemento.value == "0") {
			objElemento.value = "1";
		} else {
			objElemento.value = "0";
		}
	}

	this.colocaFoco = function() {
		if (this.getIdFormulario() != undefined && this.getIdFoco() != undefined) {
			setTimeout("document.getElementById('" + this.getIdFormulario() + "')." + this.getIdFoco() + ".focus()", 1);
		}
	}

	this.refazMascara = function() {
		var objFormMasc = $(this.getIdFormulario());

		for (i=0; i < objFormMasc.length; i++) {
			//Se tiver mascara, executa metodo de mascaras.

			if (objFormMasc.elements[i].getAttribute("mascara") != null && this.getDadoDoFormularioInt(objFormMasc.elements[i].id) != null) {
				fazMascara('', objFormMasc.elements[i]);
			}
		}
	}

	this.validarDados = function() {
		var dadosValidos = true;

		var validador = new Validador($(this.getIdFormulario()));
		var arResp = validador.verifica();
		if (arResp[0] != null) {
			dadosValidos = false;
			this.mostrarMensagemValidacao("erro", arResp[0], arResp[1]);
		}
		return dadosValidos;
	}
	
	//COMPARA DATAS
	this.verificaDatasInicialFinal = function(vDtInicial, vDtFinal) {
		var dataInicial = (vDtInicial).split("-");
		var dataInicialTratada = new Date(Date.UTC(dataInicial[0], dataInicial[1], dataInicial[2]));
		var dataFinal = (vDtFinal).split("-"); 
		var dataFinalTratada = new Date(Date.UTC(dataFinal[0], dataFinal[1], dataFinal[2]));
		 
		if(dataFinal < dataInicial) {
			this.mostrarMensagem("alerta", "A data inicial deve ser menor que a data final.");
			return false;
		} else {
			return true;
		}		 	
	}

	this.trataCpf = function(vCpf) {
		var cpf = "";
		if(vCpf != "") {
			var zeros = 11 - vCpf.length;
			for(i=0; i < zeros; i++) {
				cpf += "0";
			}
			cpf += vCpf;	
		}
		return cpf;		
	}
	
	this.trataCnpj = function(vCnpj) {
		var cnpj = "";
		if(vCnpj != "") {
			var zeros = 14 - vCnpj.length;
			for(i=0; i < zeros; i++) {
				cnpj += "0";
			}
			cnpj += vCnpj;
		}

		return cnpj;
	}
	
	this.trataCep = function(vCep) {
		var cep = "";
		if(vCep != "" && vCep != null) {
			var zeros = 8 - vCep.length;
			for(i=0; i < zeros; i++) {
				cep += "0";
			}
			cep += vCep;
		}			
		return cep;	
	}

	this.limpaNumeros = function(valor) {
		var valorDadoFormulario = valor;

		var tipoNum = /\D/;
		var dadoFormSplit =  null;
		var dadoLimpo = "";

		var i=0;
		dadoFormSplit = valorDadoFormulario.split(tipoNum);

		for(i=0; i<dadoFormSplit.length; i++) {
			dadoLimpo = dadoLimpo + dadoFormSplit[i];
		}
		if(dadoLimpo == "") {
			return null;
		} else {
			return dadoLimpo;
		}
	}			
	

	/**
	 * Recebe a solicita��o para salvar dados de um formul�rio.
	 */
	this.salvar = function() {
		this.mostrarImagem("barraCarregando");
		if (this.validarDados() == true) {
			this.getControlador().salvarDados();
		}
	}

	this.alterar = function() {
		this.mostrarImagem("barraCarregando");
		if (this.validarDados() == true) {
			this.getControlador().alterar();
		}
	}

	this.limparFormulario = function() {
		this.limparMensagem();

		if(this.getIdFoco() != null){
			eval("$(this.getIdFormulario())." + this.getIdFoco() + ".focus()");
		}
		this.getResetaForm();
		this.limparStyle();
	}

	this.trim = function (string)
	{
		return string.replace(/^\s+|\s+$/g,"");
	}
	
	this.arrayTipoDeConta = function(elementoTipoDeConta) {

		var objFormTipoDeConta = $(this.getIdFormulario());
		var objInputTipoDeConta = eval("objFormTipoDeConta."+ elementoTipoDeConta);
		var arTipoDeConta = new Array();
		var j=0;
		var i=0;

		for(i=0; i < objFormTipoDeConta.length; i++) {
			if(objFormTipoDeConta.elements[i].getAttribute("tipo") == "tipoDeConta") {
				arTipoDeConta[j] = this.getDadoDoFormularioInt(objFormTipoDeConta.elements[i].id);
				j++;
			}
		}

		var checaTipoDeConta = arTipoDeConta.without(null);

		if(checaTipoDeConta == "") {
			this.mostrarMensagemValidacao("erro", "O campo <strong>" + objInputTipoDeConta.getAttribute("nomeCampo") + "</strong> &eacute; obrigat&oacute;rio." , objInputTipoDeConta)
			return null;
		} else {
			return checaTipoDeConta;
		}
	}	

	this.arrayTelefones = function() {

		var objFormFone = $(this.getIdFormulario());
		var arFone = new Array();
		var j=0;
		var i=0;

		for(i=0; i < objFormFone.length; i++) {
			if(objFormFone.elements[i].getAttribute("mascara") == "telefone") {
				arFone[j] = this.getDadoDoFormularioInt(objFormFone.elements[i].id);
				j++;
			}
		}

		var checaFones = arFone.without(null);

		if(checaFones == "") {
			return null;
		} else {
			return checaFones;
		}
	}

	this.arrayContatos = function() {

		var objFormContato = ($(this.getIdFormulario()));
		var arContatos = new Array();
		var arAux = new Array();
		var x = 0;
		var y = 0;
		for (i=0; i<objFormContato.length; i++) {
			if(objFormContato.elements[i].getAttribute("tipo") == "contato") {
				arContatos[x] = new Array();

				for(y=0; y < 5; y++) {
					arContatos[x][y] = this.getDadoDoFormulario(objFormContato.elements[i].id);
					if(objFormContato.elements[i].getAttribute("mascara") == "telefoneContato") {
						arContatos[x][y] = this.getDadoDoFormularioInt(objFormContato.elements[i].id);
					}
					if(y < 4) { i++; }
				}
				if(arContatos[x][1] != null) {
					if(arContatos[x][0] == null) { arContatos[x][0] = 0; }
					x++;
				} else {
					arContatos.pop();
				}
			}
		}

		if(x == 0) {
			return null;
		} else {
			return arContatos;
		}
	}

	//METODOS DA PONTUACAO DO TIPO DE CONTA
	this.criarSelecaoDePontuacao = function(vObj) {
		var objDvImpressao = vObj;
		this.setObjArrayPontuacao(vObj);
		var j = 0;
		var mensagem = "";
		mensagem += "Pontua&ccedil;&atilde;o: ";
		for(i=0; i<5; i++) {
			j = i+1;
			mensagem += "&nbsp;<img style=\"cursor:pointer;\" src=\"../imagem/estrela_cinza.gif\" align=\"absmiddle\" onclick=\"aplicativo.getControlador('"+ this.getId() +"').getLimite().definePontuacao("+j+");\">";
		}
		objDvImpressao.innerHTML = mensagem;	
		this.setObjArrayPontuacao(objDvImpressao);
	}
	
	this.definePontuacao = function(vValor) {
		var ponto = vValor;
		var arrayPontuacao = this.getObjArrayPontuacao();
		var mensagem = "";
		var j=0;
		if(vValor == this.getPontuacao()) {
			ponto = ponto-1;
		}
		mensagem += "Pontua&ccedil;&atilde;o: ";
		for(i=1; i<6; i++) {
			if(ponto >= i) {
				mensagem += "&nbsp;<img style=\"cursor:pointer;\" align=\"absmiddle\" src=\"../imagem/estrela.gif\" onclick=\"aplicativo.getControlador('"+ this.getId() +"').getLimite().definePontuacao("+i+");\">";
			} else {
				mensagem += "&nbsp;<img style=\"cursor:pointer;\" align=\"absmiddle\" src=\"../imagem/estrela_cinza.gif\" onclick=\"aplicativo.getControlador('"+ this.getId() +"').getLimite().definePontuacao("+i+");\">";
			}
		}
		arrayPontuacao.innerHTML = mensagem;
		this.setPontuacao(ponto);
	}

this.removerSelecaoDePontuacao = function(vObj) {
	this.setObjArrayPontuacao(null);
	this.setPontuacao(0);
	vObj.innerHTML = "";
}	

	/**
	 * Mostra uma mensagem ao usu�rio. Tipicamente esse m�todo mostra ao usu�rio uma mensagem resultante
	 * de um erro de valida��o do formul�rio.
	 * @param tipoMensagem o tipo de mensagem a ser mostrada ao usu�rio (erro, alerta, etc.).
	 * @param componente dependendo do tipo de mensagem, h� necessidade de indicar ao usu�rio
	 * o componente que gerou, por exemplo, um erro.
	 */
	this.mostrarMensagemValidacao = function(tipoMensagem, msgErro, elementErro) {
		var divFeedback = $(eval("document." + this.getIdFormulario() + ".feedback.value"));
		var objForm = $(this.getIdFormulario());

		if (tipoMensagem == "erro" || tipoMensagem == "ERRO") {
			divFeedback.innerHTML = "<table width='400' align='center' class='respostaerro' cellspacing='4'><tr><td width='20%' align='center' valign='middle'><img src='../imagem/erro.gif'></img></td><td valign='middle'>" + msgErro + "</td></tr></table>";

			elementErro.style.backgroundColor = "#FFCCCC";
			if(elementErro.disabled != true) {
				elementErro.focus();				
			}
		}
	}

	/**
	 * Mostra uma mensagem de feeback ao usu�rio.
	 * @param tipoMensagem o tipo de mensagem a ser mostrada ao usu�rio (erro, alerta, etc.).
	 * @param mensagem a mensagem enviada pelo servidor.
	 */
//	this.mostrarMensagem = function(tipoMensagem, mensagem) {
//		var divFeedback = $(eval("document." + this.getIdFormulario() + ".feedback.value"));
//		
//		if (tipoMensagem == "erro" || tipoMensagem == "ERRO") {
//			divFeedback.innerHTML = "<table width='400' align='center' class='respostaerro' cellspacing='4'><tr><td width='20%' align='center' valign='middle'><img src='../imagem/erro.gif'></img></td><td valign='middle'>" + mensagem + "</td></tr></table>";
//		}
//		else if (tipoMensagem == "alerta" || tipoMensagem == "ALERTA") {
//			divFeedback.innerHTML = "<table width='400' align='center' class='respostaalerta' cellspacing='4'><tr><td width='20%' align='center' valign='middle'><img src='../imagem/atencao.gif'></img></td><td valign='middle'>" + mensagem + "</td></tr></table>";
//		}
//		else if (tipoMensagem == "salvar" || tipoMensagem == "SALVAR") {
//			divFeedback.innerHTML = "<table width='400' align='center' class='respostasalvar' cellspacing='4'><tr><td width='20%' align='center' valign='middle'><img src='../imagem/salva.gif'></img></td><td valign='middle'>" + mensagem + "</td></tr></table>";
//		}
//		else if (tipoMensagem == "aguardar" || tipoMensagem == "AGUARDAR") {
//			divFeedback.innerHTML = "<table width='400' align='center' class='caixainfos' cellspacing='4'><tr><td>&nbsp;</td></tr><tr><td valign='middle'>" + mensagem + "</td></tr><tr><td>&nbsp;</td></tr></table>";
//		}
//	}

	this.limparMensagem = function() {
		var divFeedback = $(eval("document." + this.getIdFormulario() + ".feedback.value"));
		$(divFeedback).update();
	}
	
	this.limparStyle = function() {
		for(i=0; i < $(this.getIdFormulario()).length; i++) {
			$(this.getIdFormulario()).elements[i].style.backgroundColor = "";
		}
	}

	this.limparStyleEspecifico = function(elemento) {
		elemento.style.backgroundColor = "";
	}
	

	/**
	 * Mostra uma mensagem de feeback ao usu�rio atrav�s de uma imagem.
	 * @param tipoImagem o tipo de imagem a ser mostrada.
	 */
	this.mostrarImagem = function(tipoImagem) {
		var divFeedback = $(this.getIdFormulario()).feedback.value;
		
		if (tipoImagem == "barraCarregando") {
			$(divFeedback).update("<div align='center'><img src='../imagem/loading_barra.gif'></img></div>");
		}
	}

	/*
	 *  metodo que recebe uma div como String e mostra a imagem 
	 * 	da barra carregando no div passado por parametro. 
	 *  @param div onde vai aparece a imagem.
	 */
	this.mostraImagemBarraCarregando = function(strDivMostrado) {
		$(strDivMostrado).update("<div align='center'><img src='../imagem/loading_barra.gif'></img></div>");
	}
	
	
	
	/**
	 * Retorna um dado espec�fico de um componente do formul�rio pela identifica��o de um <code>id</code>.
	 * @param idDoComponente <code>id</code> do componente do formul�rio que se deseja obter o dado.
	 * @return o dado informado pelo usu�rio para um determinado componente do formul�rio.
	 */
	this.getDadoDoFormulario = function(idDoComponente) {

		var dadoFormulario = eval("$(this.getIdFormulario())." + idDoComponente + ".value");

		if(dadoFormulario != "" && dadoFormulario != "undefined" && dadoFormulario != undefined && dadoFormulario != "null" && dadoFormulario != null) {
			return this.trim(dadoFormulario);
		} else {
			return null;
		}
	}


	this.getDadoDoFormularioInt = function(idDoComponente) {
		var valorDadoFormulario = this.getDadoDoFormulario(idDoComponente);

		var tipoNum = /\D/;
		var dadoFormSplit =  null;
		var dadoLimpo = "";

		if(valorDadoFormulario != null) {
			var i=0;
			dadoFormSplit = valorDadoFormulario.split(tipoNum);

			for(i=0; i<dadoFormSplit.length; i++) {
				dadoLimpo = dadoLimpo + dadoFormSplit[i];
			}
			if(dadoLimpo == "") {
				return null;
			} else {
				return dadoLimpo;
			}
		} else {
			return valorDadoFormulario;
		}
	}

	this.getDadoPesquisaDesc = function(idDoComponente) {
		var respDadoDoFormulario = this.getDadoDoFormulario(idDoComponente);
		if(respDadoDoFormulario == null) {
			return "%";
		} else {
			return respDadoDoFormulario + "%";
		}
	}

	this.trataStringParaPesquisa = function(vValor) {
		var respDadoDoFormulario = vValor;
		if(respDadoDoFormulario == null) {
			return "%";
		} else {
			return respDadoDoFormulario + "%";
		}
	}	

	this.colocaIfem = function(valor) {
		if(valor == "") {
			return valor;
		} else {
			return valor + " - ";
		}
	}	

	this.trataStringPesquisa = function(valor) {
		var respDadoDoFormulario = valor;
		if(respDadoDoFormulario == null) {
			return "%";
		} else {
			return respDadoDoFormulario + "%";
		}
	}	

	this.setDadoNoFormulario = function(valor) {
		var valorParaFormulario = "";
		if(valor == "undefined" || valor == undefined || valor == "null" || valor == null) {
			return valorParaFormulario;
		} else if(valor == "false") {
			valorParaFormulario = "0";
			return valorParaFormulario;
		} else if(valor == "true") {
			valorParaFormulario = "1";
			return valorParaFormulario;
		} else {
			valorParaFormulario = valor;
			return valorParaFormulario;
		}
	}
	
	this.retornaProximaData = function(umaData) {
		var contador = 0;
		var diaPadrao = 0; 
		var dataComoArray = umaData.split("/");
		var dia = parseInt( dataComoArray[0], 10 );
		var mes = parseInt( dataComoArray[1], 10 ) - 1;
		var ano = parseInt( dataComoArray[2], 10 );
		if (contador == 0) {
		    diaPadrao = dia;
		   	contador = contador + 1;
		}
		var dataSeguinte = new Date(ano,mes+1,dia);
		if (dataSeguinte.getDate() != diaPadrao) {
		   dataSeguinte = new Date(ano,mes+1,diaPadrao-dataSeguinte.getDate());
		}
		var diaSeguinte = dataSeguinte.getDate() < 10 ? "0" + dataSeguinte.getDate() : dataSeguinte.getDate();
		var mesSeguinte = (dataSeguinte.getMonth() + 1) < 10 ? "0" + (dataSeguinte.getMonth() + 1) : (dataSeguinte.getMonth() + 1);
		var anoSeguinte = dataSeguinte.getFullYear() < 10 ? "0" + dataSeguinte.getFullYear() : dataSeguinte.getFullYear();
		var dataRetorno = diaSeguinte + "/" + mesSeguinte + "/" + anoSeguinte; 
		
		return dataRetorno;
	}
	
	this.retornaDataAnterior = function(umaData) {
		var contador = 0;
		var diaPadrao = 0; 
		var dataComoArray = umaData.split("/");
		var dia = parseInt( dataComoArray[0], 10 );
		var mes = parseInt( dataComoArray[1], 10 ) ;
		var ano = parseInt( dataComoArray[2], 10 );
//		if (contador == 0) {
//		    diaPadrao = dia;
//		   	contador = contador + 1;
//		}
//		var dataAnterior = new Date(ano,mes,dia);
//		if (dataAnterior.getDate() != diaPadrao) {
		var  dataAnterior = new Date(ano,mes-2,dia);
//		}
		var diaAnterior = dataAnterior.getDate() < 10 ? "0" + dataAnterior.getDate() : dataAnterior.getDate();
		var mesAnterior = (dataAnterior.getMonth() + 1) < 10 ? "0" + (dataAnterior.getMonth() + 1) : (dataAnterior.getMonth() + 1);
		var anoAnterior = dataAnterior.getFullYear() < 10 ? "0" + dataAnterior.getFullYear() : dataAnterior.getFullYear();
		var dataRetorno = diaAnterior + "/" + mesAnterior + "/" + anoAnterior; 
		
		return dataRetorno;
	} 	 
	
	this.carregaData = function() {
		var objData = new Date();
		var dia = (objData.getUTCDate()).toString();
		var mes = ((objData.getUTCMonth()+1)).toString();
		var ano = (objData.getUTCFullYear()).toString();
		
		if(dia.length == 1) {
			dia = "0" + dia;
		}
		if(mes.length == 1) {
			mes = "0" + mes;
		}
			
		var data = dia +"/"+ mes + "/"+ ano;

		return data;
	}

	this.carregaDataDoServidor = function() {
		var strDataRecebida = this.getControlador().getDataDoServidor();

			var strData = strDataRecebida.split("-");
			var dia = strData[2];
			var mes = strData[1];
			var ano = strData[0];
			
			if(dia.length == 1) {
				dia = "0" + dia;
			}
			if(mes.length == 1) {
				mes = "0" + mes;
			}
				
			var data = dia +"/"+ mes + "/"+ ano;	
			return data;
	}	
	
	this.carregaHora = function() {
		var objDate = new Date();
		var hora = (objDate.getHours()).toString();
		var minuto = (objDate.getMinutes()).toString();
		var segundo = (objDate.getSeconds()).toString();

		if(hora.length == 1) {
			hora = "0" + hora;
		}
		if(minuto.length == 1) {
			minuto = "0" + minuto;
		}
		if(segundo.length == 1) {
			segundo = "0" + segundo;
		}	 

		var horaTratada = hora + ":" + minuto + ":" + segundo;
		return horaTratada;	
	}
	
	//FAZ CONVERSAO RECEBENDO PEGANDO VALOR PELO ID RECEBIDO
	this.converteDataParaServidor = function(idDoComponente) {
		var dadoFormulario = this.getDadoDoFormulario(idDoComponente);
		if(dadoFormulario != null) {
			var data = dadoFormulario.split("/");
			var dataConvertida = data[2] + "-" + data[1] + "-" + data[0];

			return dataConvertida;
		} else {
			return null;
		}
	}

	//FAZ CONVERSAO RECEBENDO VALOR COMO PARAMETRO.
	this.converteValorDataParaServidor = function(vValor) {
		var dadoFormulario = vValor;

		if(dadoFormulario != null) {
			var data = dadoFormulario.split("/");
			var dataConvertida = data[2] + "-" + data[1] + "-" + data[0];

			return dataConvertida;
		} else {
			return null;
		}
	}

	this.converteDataParaCliente = function(valor) {
		if(valor != null) {
			var data = valor.split("-");
			var dataConvertida = data[2] + "/" + data[1] + "/" + data[0];
			return dataConvertida;
		} else {
			return "";
		}
	}

	this.valorMonetario = function(idDoComponente) {
		var valor = this.getDadoDoFormularioInt(idDoComponente);
		if(valor == null) {
			return 0.00;
		} else {
			valor = valor.substring(0, valor.length-2) + "." + valor.substring(valor.length-2);
			return Number(valor);
		}
	}
	
	this.getRound = function(vValor, numCasas) {
		var valor = Number(vValor);
		var operador = Math.pow(10, numCasas);
		var valorRetorno = Math.round(valor * operador);

			valorRetorno = valorRetorno/operador; 
		var resultado = (valorRetorno).toString();

		return resultado;
	}
	
	this.getDadoDecimal = function(valorDecimal) {

		var tipoNum = /\D/;
		var dadoSplit =  null;
		var dadoLimpo = "";
		var dadoRetorno = "";
		var dadoSemVirgula = new Array();

		if(valorDecimal != null) {
			if(valorDecimal.indexOf(",") != -1) {
				dadoSemVirgula = valorDecimal.split(",");
			} else {
				dadoSemVirgula.push(valorDecimal);
			}
			var i=0;

			if(dadoSemVirgula[1] == undefined) {
				if(valorDecimal.indexOf(".") != -1) {
					var dadoComPonto = valorDecimal.split(".");
					if(dadoComPonto[1].length > 2) {
						dadoRetorno = this.getRound(valorDecimal, 2);
						
						dadosPonto = dadoRetorno.split(".");
						if (dadosPonto[1] != undefined) {
							if (dadosPonto[1].length < 2) {
								dadoRetorno = dadoRetorno.concat("0");
							}
						} else {
							dadoRetorno = dadoRetorno.concat(".00");
						}
					} else if(dadoComPonto[1].length < 2){
						dadoRetorno = valorDecimal.concat("0");
					} else {
						dadoRetorno = valorDecimal;
					}
				} else {
					dadoRetorno = dadoSemVirgula[0] + ".00";
				}
		} else {
			dadoSplit = dadoSemVirgula[0].split(".");
			for(i=0; i<dadoSplit.length; i++) {
				dadoLimpo = dadoLimpo + dadoSplit[i];
			}
			dadoRetorno = dadoLimpo + "." + dadoSemVirgula[1];

			if(dadoSemVirgula[1].length > 2) {
				dadoRetorno = this.getRound(dadoRetorno, 2);
			}
			if(dadoSemVirgula[1].length == 1) {
				dadoRetorno = dadoSemVirgula[1].concat("0");
			}				
		}
			return dadoRetorno;
		}
	}	
	
	/*
	this.trataMascaraValorMonetario = function(valor) {
		var tmpValor = "";
		var ehNumero = -1;
		var letra = "";
		var valorFinal = "";
		
		for(var i = 0; i <= valor.length; i++) {
			letra = valor.charAt(i);
			if (letra == "1" ||
			letra == "2" ||
			letra == "3" ||
			letra == "4" ||
			letra == "5" ||
			letra == "6" ||
			letra == "7" ||
			letra == "8" ||
			letra == "9" ||
			letra == "0") {
				tmpValor = tmpValor.concat(letra);
			}
		}
		valor = tmpValor;
			
		limite = 2;
		if (ehNumero > -1) {
			limite = 1;
		}
		var contador = 0;
		var passo = 1;
		var novoValor = "";
		for(var j = valor.length - 1; j >= 0; j--) {
			contador++;
			if (passo == 1) {
				if (contador == limite) {
					letra = "," + valor.charAt(j);
					passo++;
					contador = 0;
				} else if (contador < 3) {
					letra = valor.charAt(j);
				}
			} else if (passo > 1) {
				if (contador == 3) {
					if (j > 0) {
						letra = "." + valor.charAt(j);
					} else {
						letra = valor.charAt(j);
					}
					contador = 0;
				} else {
					letra = valor.charAt(j);
				}
			}
			var valorFinal = letra.concat(novoValor);
			novoValor = valorFinal
		}
		if (ehNumero > -1) {
				novoValor = novoValor.concat(ehNumero);
		}
		return novoValor;
	}	
	 */
	
	this.trataMascaraValorMonetario = function(valor) {
		var tmpValor = "";
		var ehNumero = -1;
		var letra = "";
		var valorFinal = "";
		
		for(var i = 0; i <= valor.length; i++) {
			letra = valor.charAt(i);
			if (letra == "1" ||
			letra == "2" ||
			letra == "3" ||
			letra == "4" ||
			letra == "5" ||
			letra == "6" ||
			letra == "7" ||
			letra == "8" ||
			letra == "9" ||
			letra == "0") {
				tmpValor = tmpValor.concat(letra);
			}
		}
		valor = tmpValor;
		// TRATAMENTO PARA RETIRAR ZEROS DA ESQUERDA
	   tmpValor = "";
	   tamanho = valor.length;
	   for(i = 0; i < valor.length; i++) {
	       letraAtual = valor.charAt(i);
	       if (letraAtual != "0") {
	           tmpValor = valor.substring(i, valor.length);
	           i = tamanho;
	       }
	   }
	   // ADICIONA QUANTIDADE CORRETA DE ZEROS QUANDO NUMERO TEM LENGTH < 3
	   valor = tmpValor;
	   if (valor.length == 0) {
	       valor = "000";
	   } else if (valor.length == 1) {
	       var zeros = "00";
	       valor = zeros.concat(valor);
	   } else if (valor.length == 2) {
	       var zeros = "0";
	       valor = zeros.concat(valor);          
		} 
	   			
		limite = 2;

		var contador = 0;
		var passo = 1;
		var novoValor = "";
		for(var j = valor.length - 1; j >= 0; j--) {
			contador++;
			if (passo == 1) {
				if (contador == limite) {
					letra = "," + valor.charAt(j);
					passo++;
					contador = 0;
				} else if (contador < 3) {
					letra = valor.charAt(j);
				}
			} else if (passo > 1) {
				if (contador == 3) {
					if (j > 0) {
						letra = "." + valor.charAt(j);
					} else {
						letra = valor.charAt(j);
					}
					contador = 0;
				} else {
					letra = valor.charAt(j);
				}
			}
			var valorFinal = letra.concat(novoValor);
			novoValor = valorFinal
		}
		return novoValor;
	}	
	
	this.trataAspas = function(vString) {
		novaString = "";
		if (vString != undefined) {
			var novaString = vString.replace(/["]/g , "&rdquo;");
			novaString = novaString.replace(/[']/g , "&rsquo;");
		}
		return novaString;
	}

	this.retornaCodigoTecla = function(e) {
		var codigo = "";
		var navegador = navigator.appName;
		var verificaNav = navegador.search(/Microsoft/);

		if (verificaNav != -1) {
			codigo = window.event.keyCode;
		} else {
			codigo = e.which;
		}		
		return codigo;
	}

	this.teclaPressionada = function(e, proximoCampo) {
		this.limparMensagem();
	
		var codigo = "";
		var navegador = navigator.appName;
		var verificaNav = navegador.search(/Microsoft/);
		var objElemento = Event.element(e);
		
		if (verificaNav != -1) {
			codigo = window.event.keyCode;
		} 
			else {
			codigo = e.which;
		}
		
		this.limparStyleEspecifico(objElemento);

		if (codigo == 13) {
			if(objElemento.getAttribute('mascara') == "monetario") {
				return false;
			} 
			else {
				if(proximoCampo == null) {
					objElemento.blur();
				} 
				else {
					return this.enterProximoCampo($(this.getIdFormulario()), proximoCampo);
				}
			}
		} 
		else if (codigo != 13 && objElemento.getAttribute('mascara') != null){
			fazMascara(codigo, objElemento);
			if(verificaNav != -1) { return false; }
			return false;
		} 
		else {
			return true;
		}
	}

	this.limpaDescricao = function() {
		this.limparMensagem();
		this.limparStyle();
	}

	this.enterProximoCampo = function(objForm, proximoCampo) {
		if(proximoCampo.disabled != true) {
			proximoCampo.focus();
		}
		return false;
	}

	this.trataEnter = function(e, proxCamp) {
       var codigo = "";
       var navegador = navigator.appName;
       var verificaNav = navegador.search(/Microsoft/);
       var retorno = "";
      
	   if(e == ""){
        	codigo = "";
	   } else {
           if (verificaNav != -1) {
               codigo = window.event.keyCode;
               retorno = !(window.event && window.event.keyCode == 13);
           } else {
               codigo = e.which;
               retorno = !(window.event && e.which == 13);
           }
       }

	   if (codigo == 13) {
           if(proxCamp != "" && proxCamp != undefined && proxCamp.disabled != true) {
               proxCamp.focus();
           } else {
		   	Event.element(e).blur();
		   }
       }
	   return retorno;
   }

	//JUNIOR 20/11/2009 METODO RESPONSAVEL PELO TRATAENTER DO BUSCAR RAPIDA
	this.teclaPressionadaBuscaRapida = function(e, campo) {
		var codigo = "";
		var navegador = navigator.appName;
		var verificaNav = navegador.search(/Microsoft/);
		var retorno = "";
		
		if(e == ""){
			codigo = "";
		} else {
			if (verificaNav != -1) {
				codigo = window.event.keyCode;
				retorno = !(window.event && window.event.keyCode == 13);
			} else {
				codigo = e.which;
				retorno = !(window.event && e.which == 13);
			}
		}
		if (codigo == 13) {
			this.retornaRegistro();
			return false;
		} else {
			if(codigo != "") {
				this.iniciaTemporizadorBusca();
			}
		}
		return window.event;
	}
	
	
	

	//ALTERNA CORES DE FUNDO DAS LISTAGENS
	this.alternaCores = function(vObjArray, vStrDiv) {
		var objArray = vObjArray;
		var strDiv = vStrDiv;
		
		var corTab = "";
		var j=0;
		var objDiv = null;
		
		for(i=0; i<objArray.length; i++) {
			if(objArray[i] != undefined && objArray[i] != "") {
				
				objDiv = eval("$('" + strDiv + i + "')"); 
				if (j % 2 == 0){
					corTab = "#FFFFFF";
				} else {
					corTab = "#F3F3F3";
				}
				objDiv.style.backgroundColor = corTab;
				j++;
			}
		}
	}	

	this.trataScroll = function(vObj) {
		if(navigator.appName == "Opera") {
			vObj.style.overflow = "auto";
		}		
	}	
	
	//METODO USADO APENAS PARA DEPURACAO DE OBJETOS.
	this.mostraObjeto = function(obj) {
		var str = "";
		
		for (i in obj) {
			str += "["+i+"]: "+obj[i]+"\n";
		}
		
		return str;
	}
	
	/*********** M�todos de acesso e modifica��o ***********/

	this.setControlador = function(objControlador) {
		controlador = objControlador;
	}

	this.getControlador = function() {
		return controlador;
	}

	this.setId = function(vId) {
		this.id = vId;
	}

	this.getId = function() {
		return this.id;
	}

	this.setLargura = function(vLargura) {
		this.largura = vLargura;
	}

	this.getLargura = function() {
		return this.largura;
	}

	this.setAltura = function(vAltura) {
		this.altura = vAltura;
	}

	this.getAltura = function() {
		return this.altura;
	}

	this.setTitulo = function(vTitulo) {
		this.titulo = vTitulo;
	}

	this.getTitulo = function() {
		return this.titulo;
	}

	this.setHtml = function(vHtml) {
		this.html = vHtml;
	}

	this.getHtml = function() {
		return this.html;
	}

	this.setIdFormulario = function(vIdFormulario) {
		this.idFormulario = vIdFormulario;
	}

	this.getIdFormulario = function() {
		return this.idFormulario;
	}

	this.setObjFormulario = function() {
		this.objFormulario = $(this.getIdFormulario());
	}
	
	this.getObjFormulario = function() {
		return this.objFormulario;
	}	

	this.setIdFoco = function(vIdFoco) {
		this.idFoco = vIdFoco;
	}

	this.getIdFoco = function() {
		return this.idFoco;
	}

	this.setIdRespPesquisa = function(vIdRespPesquisa) {
		this.idRespPesquisa = vIdRespPesquisa;
	}
	this.getIdRespPesquisa = function() {
		return this.idRespPesquisa;
	}

	this.setIdTelefone = function(vIdTelefone) {
		this.idTelefone = vIdTelefone;
	}

	this.getIdTelefone = function() {
		return this.idTelefone;
	}
	
	this.setIdTipoConta = function(vIdTipoConta) {
		this.idTipoConta = vIdTipoConta;
	}

	this.getIdTipoConta = function() {
		return this.idTipoConta;
	}	
	
	this.setIdContato = function(vIdContato) {
		this.idContato = vIdContato;
	}
	this.getIdContato = function() {
		return this.idContato;
	}
	this.getObjWindow = function() {
		return this.prototypeWindow;
	}

	//PONTUACAO 
	
	this.setPontuacao = function(vPontuacao) {
		this.pontuacao = vPontuacao;
	}
	this.getPontuacao = function() {
		return this.pontuacao;
	}
	
	this.setObjArrayPontuacao = function(vObj) {
		this.objArrayPontuacao = vObj;
	}
	this.getObjArrayPontuacao = function() {
		return this.objArrayPontuacao;
	}			
	//ARMAZENA CODIGO DO TIPO DO FORNECEDOR
	this.setCodigoTipoFornecedor = function(vCod) {
		this.codigoTipoFornecedor = vCod;
	}
	this.getCodigoTipoFornecedor = function() {
		return this.codigoTipoFornecedor;
	}
	
	this.desabilitaCampo = function(idCampo, estado) {
		eval("$(this.getIdFormulario())." + idCampo + ".disabled = " + estado + ";");
	}
	
		
	/************* M�TODOS A SEREM SOBRESCRITOS *************/

	/**
	 * Faz a limpeza do formul�rio.
	 * @param limparFeedback op��o para limpar ou n�o o campo de mensagens de feedback.
	 */
	/*this.limparFormulario = function(limparFeedback) {
		alert("ERRO: o m�todo limparFormulario() n�o foi implementado pelo limite apropriado.");
	}
	*/

	this.posCarregamento = function() {
		alert("ERRO: o m�todo posCarregamento() n�o foi implementado pelo limite apropriado.");
	}
	
	
	
	
	
	
	
	
	
	// CARLOS - 17/04/2009 - REPLICANDO METODO DO LimPrincipal PARA RESOLVER PROBLEMAS DE DEPENDENDICA DO CADASTRO DE PONTO

	this.mostrarMensagem = function(codigoMensagem, mensagem) {
	
		var controlador = this.getControlador();
		var divFeedback = $(eval("document." + this.getIdFormulario() + ".feedback.value"));
		
		if (codigoMensagem == "erro" || codigoMensagem == "ERRO") {
			divFeedback.innerHTML = "<table width='400' align='center' class='respostaerro' cellspacing='4'><tr><td width='20%' align='center' valign='middle'><img src='../imagem/erro.gif'></img></td><td valign='middle'>" + mensagem + "</td></tr></table>";
		}
		else if (codigoMensagem == "alerta" || codigoMensagem == "ALERTA") {
			divFeedback.innerHTML = "<table width='400' align='center' class='respostaalerta' cellspacing='4'><tr><td width='20%' align='center' valign='middle'><img src='../imagem/atencao.gif'></img></td><td valign='middle'>" + mensagem + "</td></tr></table>";
		}
		else if (codigoMensagem == "salvar" || codigoMensagem == "SALVAR") {
			divFeedback.innerHTML = "<table width='400' align='center' class='respostasalvar' cellspacing='4'><tr><td width='20%' align='center' valign='middle'><img src='../imagem/salva.gif'></img></td><td valign='middle'>" + mensagem + "</td></tr></table>";
		}
		else if (codigoMensagem == "aguardar" || codigoMensagem == "AGUARDAR") {
			divFeedback.innerHTML = "<table width='400' align='center' class='caixainfos' cellspacing='4'><tr><td>&nbsp;</td></tr><tr><td valign='middle'>" + mensagem + "</td></tr><tr><td>&nbsp;</td></tr></table>";
		}
		
		if (codigoMensagem == 0) {
			divFeedback.innerHTML = "<table width='400' align='center' class='respostasucesso' cellspacing='4'><tr><td width='20%' align='center' valign='middle'><img src='../imagem/salva.gif'></img></td><td valign='middle'>" + mensagem + "</td></tr></table>";
		}		
		else if (codigoMensagem == 1) {
			divFeedback.innerHTML = "<table width='400' align='center' class='respostaerro' cellspacing='4'><tr><td width='20%' align='center' valign='middle'><img src='../imagem/erro.gif'></img></td><td valign='middle'>" + mensagem + "</td></tr></table>";
		}
		else if (codigoMensagem == 2) {
			divFeedback.innerHTML = "<table width='400' align='center' class='respostaalerta' cellspacing='4'><tr><td width='20%' align='center' valign='middle'><img src='../imagem/atencao.gif'></img></td><td valign='middle'>" + mensagem + "</td></tr></table>";
		}
		else if (codigoMensagem == 3) {
			divFeedback.innerHTML = "<table width='400' align='center' class='respostaalerta' cellspacing='4'><tr><td width='20%' align='center' valign='middle'><img src='../imagem/atencao.gif'></img></td><td valign='middle'>" + mensagem + "</td></tr></table>";
		}
	}

	this.mostrarErroCampoObrigatorio = function(msgErro, elementErro) {
			elementErro.style.backgroundColor = "#FFCCCC";
			if(elementErro.disabled != true) {
				elementErro.focus();				
			}
			
			// CARLOS - 24/04/2009 - Mudamos de 0 para 1, verificar efeitos com cautela nos feedbacks em diferentes situacoes (erro de cadastro, alerta no cadastro, campo obrigatorio, formato invalido e sucesso)
			this.mostrarMensagem(1, msgErro);
	}
	
	this.verificaCamposObrigatorios = function() {
		var dadosValidos = true;

		var validador = new Validador($(this.getIdFormulario()));
		var arResp = validador.verifica();
		if (arResp[0] != null) {
			dadosValidos = false;
			this.mostrarErroCampoObrigatorio(arResp[0], arResp[1]);
		}
		return dadosValidos;
	}
	
	//Alteracao lissandro 20-05-2009 - Foi replicado o codigo da classe LimPricipalAbas para 
	// que qualquer classe que extenda Limite possa ter trabalhar com Abas.
	// Essa modificacao foi feita para resolver o problema de perda de referencia entre controladores e limites.    
	this.arrayAbas = new Array();
		
	this.criaArrayAbas = function() { }
	
	this.abaClicada = function(vId) {
		for (i = 0; i < this.getArrayAbas().length; i++) {
			this.getArrayAbas()[i].className = "off";
			this.getArrayAbas()[i].setAttribute("clicado", "0");
			eval("$('" + this.getArrayAbas()[i].getAttribute('idConteudo') + "').style.display = 'none';");
		}
		this.getArrayAbas()[vId].className = "on";
		this.getArrayAbas()[vId].setAttribute("clicado", "1");
		eval("$('" + this.getArrayAbas()[vId].getAttribute('idConteudo') + "').style.display = '';");
	}
	
	this.abaMouseEvento = function(vId) {
		if (this.getArrayAbas()[vId].className == "off") {
			this.getArrayAbas()[vId].className = "on";
		}
		else {
			if (this.getArrayAbas()[vId].getAttribute("clicado") == "0") 
				this.getArrayAbas()[vId].className = "off";
		}
	}

	// M�todos Modificadores	
	this.setArrayAbas = function(objArrayAbas) {
		this.arrayAbas = objArrayAbas;
	}
	
	
	// M�todos de Acesso
	
	this.getArrayAbas = function() {
		return this.arrayAbas;
	}
	// fim ********************************************************

	
	// Carlos - 2 / 09 / 2009 
	this.posicionaCursor = function(ctrl, pos){
		if(ctrl.setSelectionRange)
		{
			ctrl.focus();
			ctrl.setSelectionRange(pos,pos);
		}
		else if (ctrl.createTextRange) {
			var range = ctrl.createTextRange();
			range.collapse(true);
			range.moveEnd('character', pos);
			range.moveStart('character', pos);
			range.select();
		}
	}


	// Carlos 19 / 11 / 2009
	this.setFocoCampo = function(campoFoco) {
		return eval("$(this.getIdFormulario())." + campoFoco + ".focus()");
	}
	
}