/******************************************************************************************************************
 * Arquivo criado em:		2003-01-11
 * Arquivo atualizado em:	2011-03-24
 * Autor:					Francisco L. de Matos
 * Descricao:				Funcoes comuns que utilizam jQuery
 ******************************************************************************************************************/

/* Formulario */

	// 01 - Bloqueador de caracteres excedidos - max_caracteres
	/*
		Atributos:  1º ID do campo
					2º DIV que recebera a resposta
		Uso com: 	chamadas normais de funções
		Exemplo: 	max_caracteres('#NmeCliente','#obj_cont_caracteres')
		Descricao: 	Esta função é utilizada para contar caracteres de um input text e bloquear novas entradas.
		Obs.: 		Necessita de jQuery setado em noConflict para a variável $a
	*/
	function max_caracteres() {
		// 1. Vamos receber os parâmetros
		var idTextArea = '', idFeedBack = '', idForm = '', ui = false;
		for (i = 0; i < arguments.length; i++) {
			if (i == 0) {idTextArea = arguments[i];}
			if (i == 1) {idFeedBack = arguments[i];}
			if (i == 2) {idForm = arguments[i];}
		}
		// 2. Tratamentos
		// 2.2. caso os IDs sejam objetos, vamos extrair as strings
		if (typeof idTextArea == 'object') {idTextArea = '#'+idTextArea.name;}
		if (typeof idForm == 'object') {idForm = '#'+idForm.name;}
		// 2.2. caso exista underline no fim do nome do campo, vamos tira-lo e identifica-lo
		if ((idTextArea.indexOf('_') + 1) == idTextArea.length) {ui = true; idTextArea = idTextArea.replace('_','')}
		// 3. Aplicar comandos
		if (idForm == '') {
			$a(idTextArea).maxlength({
				useInput : ui,
				hardLimit : true,
				'feedback' : idFeedBack
			});
		} else {
			$a(idTextArea,idForm).maxlength({
				useInput : ui,
				hardLimit : true,
				'feedback' : idFeedBack
			});
		}
	}

/* Ajax */

	// 01 - Carregar página - AJAX/jQuery - carregar_pagina
	/*
		Atributos:  1º parâmetros Json (Ex.: {comando: 700, idCliente: 1} )
					2º DIV que recebera conteudo assincrono
					3º pagina que sera requisitada
					4º DIV que exibira mensagem temporaria de carregamento
		Uso com: 	chamadas normais de funções
		Exemplo: 	carregar_pagina({comando: 700, idCliente: 1},'#obj_form','obj_form.php','#carregando')
		Descricao: 	Esta função utiliza jQuery para realizar chamadas assincronas.
		Obs.: 		Necessita de jQuery setado em noConflict para a variável $a.
	*/
	function carregar_pagina() {
		// 1. vamos receber os parâmetros
		var jsoParam = '', divAjax = '', strPagina = '', divCarregando = '', cmd = '', divSeguranca = '', opcoes = {};
		for (i = 0; i < arguments.length; i++) {
			if (i == 0) {jsoParam = arguments[i];}
			if (i == 1) {divAjax = arguments[i];}
			//if (i == 2) {strPagina = arguments[i]+'?tempo='+new Date().getTime();}
			if (i == 2) {strPagina = arguments[i];}
			if (i == 3) {divCarregando = arguments[i];}
			if (i == 4) {cmd = arguments[i];}
		}
		// 2. chamada assíncrona
		$a.ajax({
			type: 'POST',
			url: strPagina,
			data: jsoParam,
			beforeSend: function(){
				//alert('beforeSend');
				$a(divCarregando).show();
				$a(divAjax).hide();
			},
			success: function(resultado){
				//alert('success');
				$a(divAjax).html(resultado);
			},
			complete: function(resultado){
				//alert('complete');
				$a(divCarregando).hide();
				$a(divAjax).show();
				if (cmd != '') {window.setTimeout(cmd,0);}
			},
			error: function(XMLHttpRequest, textStatus, errorThrown){
				var text_error = '<font color=\'red\'><b>SISTEMA</b>: Ocorreu um erro interno! Por gentileza, comunique esta falha para a equipe de desenvolvedores.<br /><b>ERRO</b>: '+XMLHttpRequest.status+'</font><hr />'+XMLHttpRequest.responseText;
				$a(divCarregando).hide();
				$a(divAjax).html(text_error);
				$a(divAjax).show();
			}
		});
	}

/* Cookies */

	// 01 - Reiniciar cookies - reset_cookies
	/*
		Atributos:  1º nome dos cookies (Ex.: 'NmeCliente|SobCliente|Sexo')
		Uso com: 	chamadas normais de funções
		Exemplo: 	reset_cookies('RazSocial|NmeFantasia|Cnpj|InsEstadual|InsMunicipal')
		Descricao: 	Esta função expira cookies.
		Obs.: 		Necessita de jQuery setado em noConflict para a variável $a e o plugin de 
					cookies (jquery.cookies.2.1.0).
	*/
	function reset_cookies(){
		// 1. vamos receber os parâmetros
		var cookies = null, opcoes = {}, n = 0;
		for (i = 0; i < arguments.length; i++) {
			if (i == 0) {cookies = arguments[i];}
		}
		// 2. vamos descobrir o ID do formulário e o ID do campo para recuperarmos o valor
		var cookie_ = cookies.split('|'); var tc = cookie_.length;
		while (n < tc) {
			//$a.cookies.set(cookie_[n],'',opcoes);
			$a.cookies.del(cookie_[n]);
			++n;
		}
	}
	// 02 - Reiniciar cookies juntamente com os campos de um formulário- reset_form_cookies
	/*
		Atributos:  1º nome do formulario (Ex.: form_empresa)
		Uso com: 	links ou botões (preferencialmente botões)
		Exemplo: 	reset_form_cookies(this.form)
		Descricao: 	Esta função é utilizada para reiniciar os campos de um formulario e expirar cookies que contenham
					nomes identicos aos nomes dos campos do formulario.
		Obs.: 		Necessita de jQuery setado em noConflict para a variável $a e o plugin de 
					cookies (jquery.cookies.2.1.0).
	*/
	function reset_form_cookies(){
		// 1. vamos receber os parâmetros
		var form = null, opcoes = {expiresAt: new Date(2000, 1, 1 )};
		for (i = 0; i < arguments.length; i++) {
			if (i == 0) {form = arguments[i];}		// campo
		}
		// 2. vamos descobrir o ID do formulário e o ID do campo para recuperarmos o valor
		var i = 0, j = 0, vI = -1, vJ = -1;
		if (form) {
			// 2.1. Achar o form
			for (i = 0; i < document.forms.length; i++) {
				if (typeof form == 'object') {
					if (form.name == document.forms[i].name){vI = i;}
				} else if (typeof form == 'string') {
					if (document.getElementById(form)) {
						if (document.forms[form].name == document.forms[i].name){vI = i;}
					}
				} else {vI = -1;}
				if (vI != -1){break;}
			}
			// 2.2. Achar o campo
			if (vI != -1) {
				for (j = 0; j < document.forms[vI].elements.length; j++) {
					// 2.2.1. editores fck
					//if (document.forms[vI].elements[j].name == 'fck_01') {SetContents(document.forms[vI].elements[j].value);}
					// 2.2.2. campos em geral
					if (document.forms[vI].elements[j].type == 'select-one') {
						document.forms[vI].elements[j].value = document.forms[vI].elements[j].options[0].value;
						$a.cookies.set(document.forms[vI].elements[j].name,'',opcoes);
						$a.cookies.del(document.forms[vI].elements[j].name);
						DeleteCookie(document.forms[vI].elements[j].name);
					}
					else if (document.forms[vI].elements[j].type == 'text' || 
							 document.forms[vI].elements[j].type == 'textarea' || 
							 document.forms[vI].elements[j].type == 'password' || 
							 document.forms[vI].elements[j].type == 'select-multiple') {
						document.forms[vI].elements[j].value = '';
						$a.cookies.set(document.forms[vI].elements[j].name,'',opcoes);
						$a.cookies.del(document.forms[vI].elements[j].name);
						DeleteCookie(document.forms[vI].elements[j].name);
					}
					else if (document.forms[vI].elements[j].type == 'hidden') {
						nome_campo = document.forms[vI].elements[j].name;
						if (nome_campo.indexOf('id') != -1 && nome_campo.indexOf('cod') != -1) {
							document.forms[vI].elements[j].value = '';
							$a.cookies.set(document.forms[vI].elements[j].name,'',opcoes);
							$a.cookies.del(document.forms[vI].elements[j].name);
							DeleteCookie(document.forms[vI].elements[j].name);
						}
					}
					else if (document.forms[vI].elements[j].type == 'radio' || document.forms[vI].elements[j].type == 'checkbox') {
						document.forms[vI].elements[j].checked = false;
						$a.cookies.set(document.forms[vI].elements[j].name,'',opcoes);
						$a.cookies.del(document.forms[vI].elements[j].name);
						DeleteCookie(document.forms[vI].elements[j].name);
					}
					// 2.2.3. reiniciar spans de apoio dos campos
					if (document.getElementById('span_qtd_'+document.forms[vI].elements[j].name)) {
						$a('#span_qtd_'+document.forms[vI].elements[j].name).html('');
					}
					if (document.getElementById('span_see_'+document.forms[vI].elements[j].name)) {
						$a('#span_see_'+document.forms[vI].elements[j].name).css('display','none');
					}
				}
			} // fim if # comparacao da variavel 'vI'
		}
	}
	
/* ??? */
	
	// 01 - Controle de cliques do menu do sistema - controle_menu
	/*
		Atributos:  1º coordenada do menu accordion
					2º coordenada do submenu accordion
					3º pagina que devera ser carregada
		Uso com: 	links e botões
		Exemplo: 	<a href="javascript:controle_menu(0,1,'obj_empresa_A0.php?comando=700')">Listar empresas</a>
		Descricao: 	Esta função foi especialmente desenvolvida para controlar os cliques sobre o menu accordion
	*/
	function controle_menu() {
		// 1. vamos receber os parâmetros
		var c_menu = 0, c_link = 0, strPagina = '', divBody = '#obj_body_1', divLoad = '#obj_load_1', json = '', str_id = '', cod_id = 0;
		for (i = 0; i < arguments.length; i++) {
			if (i == 0) {c_menu = arguments[i];}
			if (i == 1) {c_link = arguments[i];}
			if (i == 2) {strPagina = arguments[i];}
			if (i == 3) {divBody = arguments[i];}
			if (i == 4) {divLoad = arguments[i];}
			if (i == 5) {json = arguments[i];}
			if (i == 6) {str_id = arguments[i];}
			if (i == 7) {cod_id = arguments[i];}
		}
		// 2. vamos setar os cookies
		if (!is_ie6ou7()) {
			$a.cookies.set('st_menu',c_menu);
			$a.cookies.set('st_link',c_link);
			if (str_id != '' && cod_id != 0) {$a.cookies.set(str_id,cod_id);}
		} else {
			SetCookie('st_menu',c_menu);
			SetCookie('st_link',c_link);
			if (str_id != '' && cod_id != 0) {SetCookie(str_id,cod_id)}
		}
		// 3. 
		if (c_link == 99) {if (typeof temp != 'undefined') {clearInterval(temp);}}
		var cmdJson = typeof json == 'object' ? json : {comando: 700};
		// 3. abertura de páginas
		if (strPagina != '') {
			document.location.href = '#cab';
			carregar_pagina(cmdJson,divBody,strPagina,divLoad);
			
		}
	}

/* Abertura e tratamento de DIVs */

	/* 01 - Centralizar uma div horizontalmente - centralizar_div
	/*
		Atributos:  1º Nome da DIV
					2º parâmetros
						param: 0 (centraliza horizontalmente)
						param: 1 (centraliza verticalmente)
						param: 2 (centraliza horizontalmente e verticalmente)
					3º duração do movimento - opcional
		Uso com: 	chamadas normais de funções
		Exemplo: 	centralizar_div("#nome_div",0,2000)
		Descricao: 	Esta função é utilizada centralizar DIVs na página, tanto na horizontal como na vertical.
		Obs.: 		Necessita de jQuery setado em noConflict para a variável $a
	*/
	function centralizar_div(){
		// 1. vamos receber os parâmetros
		var idDiv = "", param = 0, time = 500;
		for (i = 0; i < arguments.length; i++) {
			if (i == 0) {idDiv = arguments[i];}
			if (i == 1) {param = arguments[i];}
			if (i == 2) {time = arguments[i];}
		}
		// 2. Centralizar horizontalmente
		if (param == 0 || param == 2) {
			//var largura_documento = $a(document).width();	// Largura do documento
			var largura_janela = $a(window).width();		// Largura da janela
			var largura_div = $a(idDiv).width();
			var x_pagina = (largura_janela / 2);
			var x_div = (largura_div / 2);
			var x = (x_pagina - x_div);
			$a(idDiv).animate(
				{left: x + "px"},
				{duration: time, queue: false}
			);
		}
		// 3. Centralizar verticalmente
		if (param == 1 || param == 2) {
			//var altura_documento = $a(document).height(); // Altura do documento
			var altura_janela = $a(window).height();		// Altura da janela
			var altura_div = $a(idDiv).height();
			var y_pagina = (altura_janela / 2);
			var y_div = (altura_div / 2);
			var y = (y_pagina - y_div);
			$a(idDiv).animate(
				{top: y + "px"},
				{duration: time, queue: false}
			);
		}
	}
	// 02 - Exibir uma DIV - abrir_div
	/*
		Atributos:  1º Nome da DIV
					2º Nome da DIV do fundo
					3º Largura da DIV - opcional
		Uso com: 	chamadas normais de funções
		Exemplo: 	abrir_div("#nome_div","#nome_div_fundo")
		Descricao: 	Esta função exibe uma janela (DIV) em overlay.
		Obs.: 		Necessita de jQuery setado em noConflict para a variável $a
	*/
	function abrir_div(){
		// 1. vamos receber os parâmetros
		var idDiv = '', idFundo = '', largura = 0;
		for (i = 0; i < arguments.length; i++) {
			if (i == 0) {idDiv = arguments[i];}
			if (i == 1) {idFundo = arguments[i];}
			if (i == 2) {largura = arguments[i];}
		}
		// 2. vamos executar os comandos
		if (largura > 0) {$a(idDiv).css('width', largura);}
		if (idFundo != '') {$a(idFundo).css('height', $a(document).height()).show();}
		centralizar_div(idDiv,0,0);
		$a(idDiv).fadeIn(500);
	}
	// 03 - Esconder uma Div - fechar_div
	/*
		Atributos:  1º Nome da DIV
					2º Nome da DIV do fundo
		Uso com: 	chamadas normais de funções
		Exemplo: 	abrir_div("#nome_div","#nome_div_fundo")
		Descricao: 	Esta função esconde uma janela (DIV) em overlay. É utilizada em conjunto com a função abrir_div
		Obs.: 		Necessita de jQuery setado em noConflict para a variável $a
	*/
	function fechar_div(){
		// 1. vamos receber os parâmetros
		var idDiv = '', idFundo = '';
		for (i = 0; i < arguments.length; i++) {
			if (i == 0) {idDiv = arguments[i];}
			if (i == 1) {idFundo = arguments[i];}
		}
		// 2. chamada assíncrona
		if (idFundo != '') {$a(idFundo).hide();}
		$a(idDiv).fadeOut(500);
	}

/* Funcoes comuns com jQuery.UI */

	// 01 - Função de exibição de janela personalizada de alerta e confirmação 	- alerta
	/*
		Atributos:  1º comandos Json (Ex.: {texto: 'Erro de digitação', tipo: 1, campo: NmeCliente, titulo: 'Erro', tip: 1})
		Uso com: 	chamadas normais de funções
		Exemplo: 	centralizar_div("#nome_div",0,2000)
		Descricao: 	Esta função é utilizada exibir alertas com DIVs de dialogo.
		Obs.: 		Necessita de jQuery setado em noConflict para a variável $a, um DIV chamado '#dialog' e um
					formulário oculto para realizar transacoes de variaveis.
	*/
	function alerta(comandos){
		// 1. Coleta das variáveis
		var ce = 0;
		var texto = comandos['texto'];   // texto que será impresso na janela
		var tipo = comandos['tipo'];     // tipo de botão
		var campo = comandos['campo'];   // campo que será avaliado
		var titulo = comandos['titulo']; // título do botão
		var tip = comandos['tip'];       // decide se aplicará o efeito highlight
		// 2. Tratamento das variáveis
		if (texto == '') {ce++;}
		if (tipo == '') {ce++;}
		if (tipo > 4 || tipo < 1) {ce++;}
		if (titulo == '') {titulo = 'Aviso';}
		// 3. Exibição da janela
		if (ce == 0) {
			// 3.1. atribuição do novo valor
			$a("#dialog").html(texto);
			// 3.2. janela com botão OK
			if (tipo == 1) {
				var btn = {
					Ok: function() {
						$a(this).dialog('close');										 	 // fechar caixa de dialogo
						if ($a('#oculto').val() != '') {
							$a($a('#oculto').val()).focus();								 // recuperar o id do campo e aplicar o foco
							if (!tip) {$a($a('#oculto').val()).effect("highlight",{},1500);} // aplicar efeito de luz no campo focado
						}
					}
				};
			}
			// 3.3. caracteristicas da caixa de dialogo
			$a("#dialog").dialog({
				bgiframe: true,
				autoOpen: false,
				width: 360,
				title: titulo,
				modal: true,
				overlay: {
					opacity: 0.9,
                    backgroundColor: 'black'
				},
				buttons: btn
			});
			// 3.4. comando de abertura da janela
			$a("#dialog").dialog('open',function(){alert("oi");});
		}
	}
	// 02 - Abertura de dialog - dialog_abrir
	/*
		Atributos:  ESTÃO DISCRIMINADOS NA PRÓPRIA FUNÇÃO
		Uso com: 	links ou botões
		Exemplo: 	dialog_abrir('#dlg_lev_2','Empresa: Edi&ccedil;&atilde;o de endere&ccedil;o','','','','','','','','','#obj_body_2','#obj_load_2',{comando:700, idEndereco: <?=$idEndereco_[$n];?>},'obj_empresa_A3_editar_endereco.php')
		Descricao: 	Esta função é utilizada para abrir divs estilizadas com jQuery.UI no formato de caixa de diálogo.
					O objetivo é era prover edição simples e rápida de registros sem pop-ups de janelas 
					convencionais utilizando o Ajax/jQuery para transacoes assincronas.
		Obs.: 		Necessita de jQuery setado em noConflict para a variável $a, o plugin de 
					cookies (jquery.cookies.2.1.0) e jQuery.UI.
	*/
	function dialog_abrir(){
		// 1. Vamos receber os parâmetros
		var divDialog = '', strTitulo = '', divCab = '', loaCab = '', parCab = '', pagCab = '', divRod = '', loaRod = '', parRod = '', pagRod = '';
		var divBody = '', loaBody = '', parBody = '', pagBody = '', divOrigem = '', loaOrigem = '', parOrigem = '', pagOrigem = '', opcoes = {};
		for (i = 0; i < arguments.length; i++) {
			if (i == 0) {divDialog = arguments[i];}	// DIV da caixa de diálogo
			if (i == 1) {strTitulo = arguments[i];}	// titulo da caixa de diálogo
			/* Cabecalho */
			if (i == 2) {divCab = arguments[i];}	// DIV do cabecalho
			if (i == 3) {loaCab = arguments[i];}	// DIV contendo a mensagem de carregamento do cabecalho (caso seja jQuery)
			if (i == 4) {parCab = arguments[i];}	// parâmetros para carregamento do cabecalho (json)
			if (i == 5) {pagCab = arguments[i];}	// pagina do cabecalho
			/* Rodape */
			if (i == 6) {divRod = arguments[i];}	// DIV do rodape
			if (i == 7) {loaRod = arguments[i];}	// DIV contendo a mensagem de carregamento do rodape (caso seja jQuery)
			if (i == 8) {parRod = arguments[i];}	// parâmetros para carregamento do rodape (json)
			if (i == 9) {pagRod = arguments[i];}	// pagina do rodape
			/* Corpo */
			if (i == 10) {divBody = arguments[i];}	// DIV do corpo
			if (i == 11) {loaBody = arguments[i];}	// DIV contendo a mensagem de carregamento do corpo (caso seja jQuery)
			if (i == 12) {parBody = arguments[i];}	// parâmetros para carregamento do corpo (json)
			if (i == 13) {pagBody = arguments[i];}	// pagina do corpo
			/* Origem */
			if (i == 14) {divOrigem = arguments[i];}	// DIV do link de origem
			if (i == 15) {loaOrigem = arguments[i];}	// DIV contendo a mensagem de carregamento do link de origem (caso seja jQuery)
			if (i == 16) {parOrigem = arguments[i];}	// parâmetros para carregamento do link de origem (json)
			if (i == 17) {pagOrigem = arguments[i];}	// pagina do link de origem
		}
		
		// 2. Abrir nova janela
		if (divDialog != '' && divBody != '' && strTitulo != '') {
			// 2.1. Tratamento do titulo
			if (parBody != ''){
				var temp = limpar_aspas(JSON.stringify(parBody),0);
				strTitulo = strTitulo+" <span id=\"obj_titulo_seguranca\">[<a href=\"javascript:carregar_pagina("+temp+",'"+divBody+"','"+pagBody+"','"+loaBody+"','','')\">recarregar esta janela</a>]</span>";
			} else {
				strTitulo = strTitulo+" <span id=\"obj_titulo_seguranca\">[<a href=\"javascript:carregar_pagina_goodie('"+divBody+"','"+pagBody+"');\">recarregar esta janela</a>]</span>";
			}
			// 2.2. Abrir caixa de diálogo
			$a(divDialog).dialog({
				beforeclose: function(){
					//alert(divOrigem+" - "+pagOrigem+" - "+loaOrigem+" - "+parOrigem)
					if (divOrigem == '' && pagOrigem != '' && loaOrigem == '') {
						document.location.href = pagOrigem;
						//alert('chegou sem nada');
					} else if (divOrigem != '' && pagOrigem != '' && loaOrigem == '') {
						carregar_pagina_goodie(divOrigem,pagOrigem+'?comando=700'+parOrigem);
						//alert('chegou Goodies');
					} else if (divOrigem != '' && loaOrigem != '' && parOrigem != '' && pagOrigem != '') {
						parOrigem = eval('('+parOrigem+')');
						//alert(divOrigem+" - "+loaOrigem+" - "+parOrigem.comando+" - "+pagOrigem)
						carregar_pagina(parOrigem,divOrigem,pagOrigem,loaOrigem,'','');
						//alert('chegou jQuery');
					}
				},
				bgiframe: true,
				autoOpen: false,
				position: ['center',10],
				width: '98%',
				title: strTitulo,
				modal: true,
				overlay: {backgroundColor: '#000', opacity: 0.5}
			});
			//$a(divDialog).dialog('open',function(){});
			$a(divDialog).dialog('open');
			// 2.3. Abrir a página solicitada
			if (typeof parBody == 'object'){
				//$a.cookies.set('seg_ajax', 0, opcoes); // 0 (zero) indica carregamento Ajax com jQuery
				carregar_pagina(parBody,divBody,pagBody,loaBody,'','');
			} else {
				//$a.cookies.set('seg_ajax', 1, opcoes); // 1 (um) indica carregamento Ajax com Goodies
				carregar_pagina_goodie(divBody,pagBody);
			}
		}
	}
	
/* jQuery - TAB>ENTER */

	// 01 - Checagem de evento - checkForEnter
	/*
		Atributos:  1º evento
		Uso com: 	a função AtivarEnterEmulation()
		Exemplo: 	textboxes.keypress(checkForEnter)
		Descricao: 	Esta função é utilizada para identificar o uso do ENTER em inputs e substituir por TAB.
		Obs.: 		Necessita de jQuery setado em noConflict para a variável $a.
	*/
	function checkForEnter() {
		// 1. Variáveis
		var e = null;
		// 2. Coleta de atributos
		for (i = 0; i < arguments.length; i++) {
			if (i == 0) {e = arguments[i];}
		}
		// 3. Tratamento do codigo
		var tecla = e.which    ? e.which    :
				    e.keyCode  ? e.keyCode  :
					e.charCode ? e.charCode : void 0;
		// 4. Tratamento da tecla
		if (e.shiftKey) {if (tecla == 9) {tecla = 0;}}
		if (tecla == 9) {
			return true;
		} else if (tecla == 13) {
			// 4.1. Captura do indice do campo
			currentBoxNumber = textboxes.index(this);
			// 4.2. Caso não seja botão, nem campo cujo nome é NmeCidade e nem TextArea
			comp = textboxes[currentBoxNumber].type != 'button' && textboxes[currentBoxNumber].name != 'NmeCidade' && textboxes[currentBoxNumber].type != 'textarea';
			if (comp){
				//alert(textboxes[currentBoxNumber].name+' - '+textboxes[currentBoxNumber].type);
				nextBoxNumber = currentBoxNumber + 1; totalC = 0;
				//alert(textboxes[nextBoxNumber].name+' - '+textboxes[nextBoxNumber].type+' - '+textboxes[nextBoxNumber].disabled);
				while (textboxes[nextBoxNumber].disabled == true || textboxes[nextBoxNumber].type == 'hidden') {
					nextBoxNumber++; totalC++; 
					//alert('while: '+textboxes[nextBoxNumber].name+' - '+textboxes[nextBoxNumber].type);
					if (totalC == 10) {break;}
				}
				//alert('focus: '+textboxes[nextBoxNumber].name+' - '+textboxes[nextBoxNumber].type);
				textboxes[nextBoxNumber].focus();
				return false;
			}
		} 
	}
	// 02 - Ativar emulacao de ENTER - AtivarEnterEmulation
	/*
		Atributos:  nenhum!
		Uso com: 	chamadas direta do codigo no ato da inicializacao
		Exemplo: 	AtivarEnterEmulation()
		Descricao: 	Esta função é utilizada para acionar a emulacao de ENTER.
		Obs.: 		Necessita de jQuery setado em noConflict para a variável $a.
	*/
	function AtivarEnterEmulation(){
		textboxes = $a('input,select,textarea');
		if ($a.browser.mozilla) {
			textboxes.keypress(checkForEnter);
		} else {
			textboxes.keydown(checkForEnter);
		}
	}

