// jCompany 3.2.1 : Arquivo Javascript espec?fico da aplica??o
// ? inserido e disponibilizado em todas as p?ginas

function limpaAgregado(nome){
	document.getElementsByName(nome)[0].value = '';
	document.getElementsByName(nome+'Lookup')[0].value = '';	
}

var field_length=0;

function TabNext(obj,event,len,next_field) {
	if (event == "down") {
		field_length=obj.value.length;
	} else if (event == "up") {
		if (obj.value.length != field_length) {
			field_length=obj.value.length;
			if (field_length == len) {
				next_field.focus();
				next_field.select();
			}
		}
	}
}



/*
	ALTERACAO PARA FORMS[1] (Provenientes do PlcGeral.js)
*/
PlcGeral.prototype.exportaPopup = function(contextoAplicacao,pStrutsAction,isRequestJSF){

	var campoExportaPlc 	= getCampo("exportaPlc");
	var parentForm 			= getForm();
	var metodo				= 'post'; 
	

	var win 		= janela("");
	var action 		= "";
	var	conteudo  	= '<html><body> <form name="inicialForm" method="post" action="'+ contextoAplicacao +  pStrutsAction ;
	//metodo = 'get'; caso queira utilizar get 
	
	/**
	* Com JSF chama o Servlet de exportação 'PlcExportaJsfcaoServlet' que recupera da Conversação a lista de registros da seleção, 
	* evitando refazer a pesquisa.
	*/
	if (isRequestJSF == 'S'){
		var conversationIdPlc = getCampo('corpo:formulario:conversationIdPlc');
	 	action = contextoAplicacao + '/exportacaojsf">';
	 	if (typeof conversationIdPlc != "undefined")
			action +=  ' <input type="hidden" name="conversationIdPlc" value="' + conversationIdPlc.value +'" id="conversationIdPlc" >';
		action +=  ' <input type="hidden" name="action" value="' + pStrutsAction +'" id="action" >';
	 	if (typeof campoExportaPlc != "undefined")
			action +=  ' <input type="hidden" name="fmtPlc" value="' + campoExportaPlc.value +'" id="fmtPlc" >';
		
	}
	/**
	* Com Struts chama o método F9-Pesquisar da PlcBaseAction que refaz a pesquisa dos registros baseando-se nos argumentos 
	* informados pelo usuário, e redireciona para o Serviço de exportação que retornará o informações conforme o formato escolhido.
	*/
	else{
	  	action = contextoAplicacao +  pStrutsAction  + '.do?evento=F9-Pesquisar&isExportacaoPlc=S&fmtPlc=' + campoExportaPlc.value + '">';
	
		for (var i = 0; i < parentForm.elements.length; i++) 
			action +=  ' <input type="hidden" name="' + parentForm.elements[i].name + '" value="' + parentForm.elements[i].value +'" id="' + parentForm.elements[i].name + '" >';
	}
		
	// montando o conteúdo da página
	var	conteudo  	= '<html><body> <form name="inicialForm" method="' +metodo+ '" action="'+ action + '</form> </body></html>';
	
	win.document.write(conteudo);
	var theForm 			= win.document.forms[1];  
	theForm.style.display 	= 'none';
	theForm.submit();
	
	// Voltando com a seleção do campo de exportação para a primeira Opção  [Exportar para ...]
	if(campoExportaPlc)
		campoExportaPlc.selectedIndex = 0;
	
}

/**
 * Fun??o para retornar um objeto que representa um form da p?gina
 * @param form Nome do form, caso n?o seja o form padr?o. [String,OP]
 * @see getVarGlobal
 * @return form Objeto form [Object]
 */
function getForm(form){

	var sessForm = getVarGlobal("form");
	// Se houver um opener recupera o form deste
	var parentForm = "";
	if(opener && form != null){
		return opener.getVarGlobal("parentForm")
	}	
	if(form != "" && form != 0 && ""+form != "undefined" && form != null)
		form = eval("getRootDocument().forms['"+form+"']");
	else if(sessForm != "" && sessForm != 0 && ""+sessForm != "undefined" && ""+sessForm != "null")
		form = eval("getRootDocument().forms['"+sessForm+"']");
	else
		form = eval("getRootDocument().forms[1]");
	return form;
}
function recebeSelecao()
{
	//Compatibiliza??o
	if(arguments.length == 1)
		recebeSelecaoPopup(arguments[0])
	else
	{
		// Recebe os vetores de nome e valor dos atributos selecionados
		var nome 	= arguments[0];
		var valor 	= arguments[1];

		// Procura no form corrente por atributos de mesmo nome. Se achar, atribui o valor passado
		// do atributo ao atributo de mesmo nome no form.
		for(var j = 0; j < nome.length; j++) {
			for(var i = 0; i < document.forms[1].length; i++) {

				if (document.forms[1].elements[i].name == nome[j]) {
					document.forms[1].elements[i].value = valor[j];
					break;
				}
			}
		}
		eval("executarEventoAplicacao('TESTAR_NIVEL')");
	}
}
function setPortlet(idPortlet)
{
	if (document.forms[1].elements["pIdPlc"])
		document.forms[1].elements["pIdPlc"].value=idPortlet;
}


function recuperaCodigo(url, msg1, msg2, campo)
{
	 var codigo = document.forms[1].elements[campo].value;
	 if (codigo == "")
	 {
		 document.forms[1].elements[campo].focus();
	 }
	 else if(isNaN(codigo))
	 {
		 document.forms[1].elements[campo].select();
	 }
	 else
		 document.location.href = url+codigo;

 }
 
 function retornaValorCampo(field, form) {

	field = padronizaNomeCampoFormulario(field);

	var campo = "";
	if(form == "" || form == 0 || ""+form == "undefined"){
		if(getRootDocument().forms && getRootDocument().forms[1] && getRootDocument().forms[1].elements)
			campo = eval("getRootDocument().forms[1].elements['"+field+"']");
	}
	else
		campo = eval("getRootDocument().forms['"+form+"'].elements['"+field+"']");

	if(campo)
	{
		plcLog.debug("retornaValorCampo - nome campo: "+campo.name);
		plcLog.debug("retornaValorCampo - tipo campo: "+campo.type);
		//Acerto para resolver problemas de campos duplicados inclu?dos pela
		//gera??o via plugin
		//Alterado: 16/12/2005 - by Rodrigo Magno
		if(campo.length > 0 && campo[0]){
			if(	campo[0].type == "text" || campo[0].type == "hidden" || campo[0].type == "textarea"  ||
				campo[0].type == "file" || campo[0].type == "password")
				campo = campo[0];
		}
		if(	campo.type == "text" || campo.type == "hidden" || campo.type == "textarea" ||
			campo.type == "file" || campo.type == "password")
		{
			return campo.value;
		}
		else if (campo.type == "checkbox")
		{
			if(campo.checked)
				return campo.value;
			else{
				if(getVarGlobal("uncheck_"+campo.name))
					return getVarGlobal("uncheck_"+campo.name);
				else
					return "N";
			}
		}
		else if (campo.type == "select-one")
		{
			return campo.options[campo.selectedIndex].value;
		}
		else if (campo.type == "select-multiple")
		{
			var valSelect = new Object();
			for(i = 0; i < campo.length; i++){
				if(campo.options[i].selected){
					valSelect[valSelect.length] = campo.options[i].value;
				}
			}
			return valSelect;
		}
		else if (campo.type == "radio")
		{
			if(campo.checked)
				return campo.value;
		}
		else //if (typeof campo.type == "undefined")
		{
			plcLog.debug("retornaValorCampo - tamanho campo: "+campo.length);
			
			plcLog.debug(campo.name+' '+campo.length);
			for(var i = 0; i < campo.length; i++){
				plcLog.debug("retornaValorCampo - valor campo: "+campo[i].value);
				plcLog.debug("retornaValorCampo - check campo: "+campo[i].checked);
				if(campo[i].checked){
					return campo[i].value;
				}
			}
		}
	}

	return "";
}

function insereValorCampo(field,value,form)
{
	var campo = "";
	if(form == "" || form == 0 || ""+form == "undefined")
		campo = eval("getRootDocument().forms[1].elements['"+field+"']");
	else
		campo = eval("getRootDocument().forms['"+form+"'].elements['"+field+"']");
	if(campo)
	{
		if(campo.type == "text" || campo.type == "hidden")
			campo.value = value;
		else if (campo.type == "select-one")
		{	for(i = 0; i < campo.options.length; i++)
			{
				if(campo.options[i].value == value)
				{
					campo.options[i].selected = true;
					i = campo.options.length;
				}
			}
		}
	}
}


function avaliaExpressao(expressao, campoRetorno)
{
	var debug = false;
	//Parsing de express?o
	var expAux 		= "";
	var campo 		= "";
	var valCampo 	= 0;
	var expEval 	= "";
	var index 		= 0;
	var resultado	= 0;
	if(expressao.indexOf(" ") > -1)
	{
		alert("Express?o n?o pode conter espa?os.");
		return;
	}
	else
	{
		index 	= expressao.indexOf("#");
		while(index > -1)
		{
			expEval += expressao.substring(0,index);
			expressao = expressao.substring(index+1,expressao.length);
			index = expressao.indexOf("#");
			campo = expressao.substring(0,index);
			expressao = expressao.substring(index+1,expressao.length);
			valCampo = retornaValorCampo("",campo);
			expEval += valCampo;
			index = expressao.indexOf("#");
		}
		expEval += expressao;
		expressao = expEval;
	}
	if(eval(expressao))
	{
		resultado = eval(expressao);
		campo = eval("document.forms[1].elements['"+campoRetorno+"']");
		if(campo)
			campo.value = resultado;
		return resultado;
	}
	else
		alert("Express?o inv?lida.");
}
function retornaCalculo(oper, incremento, maximo, minimo, campoRetorno)
{
	var format = "00";
	var campo = eval("document.forms[1].elements['"+campoRetorno+"']");
	var resultado;
	var val = parseFloat(campo.value);
	resultado = eval(val + oper + incremento);
	if(!isNaN(resultado) && (resultado <= maximo && resultado >= minimo))
	{
		var auxResultado = "";
		var resultado = new String(resultado);
		if(format.length > resultado.length)
		{
			var posRes = 0;
			for(i = (format.length - 1); i >= 0; i--)
			{
				if(i <= resultado.length - 1)
				{
					auxResultado += parseFloat(format.charAt(i))+parseFloat(resultado.charAt(posRes));
					posRes++;
				}
				else
					auxResultado += parseFloat(format.charAt(i));
			}
			if(campo)
				campo.value = auxResultado;
			else
				return auxResultado;
		}
		else
		{
			if(campo)
				campo.value = resultado;
			else
				return resultado;
		}
	}
}
function alteraClasse () {
	if(arguments && arguments.length > 0)
	{
		this.ID 		= "";
		this.CAMPO		= "";
		this.TIPO		= "";
		this.CLASSE		= "";
		this.OBJETO		= "";
		this.INICIAL	= false;
		this.NOVACLASSE	= false;

		for(i = 0; i < arguments.length; i++)
		{
			if(arguments[i] == "ID")
				this.ID = arguments[++i];
			else if(arguments[i] == "CAMPO")
				this.CAMPO = arguments[++i];
			else if(arguments[i] == "TIPO")
				this.TIPO = arguments[++i];
			else if(arguments[i] == "CLASSE")
				this.CLASSE = arguments[++i];
			else if(arguments[i] == "OBJETO")
				this.OBJETO = arguments[++i];
			else if(arguments[i] == "NOVACLASSE")
				this.NOVACLASSE = true;
			else if(arguments[i] == "INICIAL")
				this.INICIAL = true;
		}
	}

	var elements = "";
	if(this.ID != ""){
		elements = getElementoPorId(this.ID);
	}else if (this.OBJETO != ""){
		elements = this.OBJETO;
		elements = new Array(elements);
	}else if (this.CAMPO){
		elements = getRootDocument().forms[1].elements[this.CAMPO];
		elements = new Array(elements);
	}
  	if(elements) {
		for (var e = 0; e < elements.length; e++) {
			if (elements[e]) {
				if(this.NOVACLASSE)
					elements[e].className = this.CLASSE;
				else if (this.INICIAL){
					var exp = this.CLASSE;
			    	elements[e].className = elements[e].className.replace(exp,"");
				}
				else{
					elements[e].className = elements[e].className +" "+ this.CLASSE;
				}
			}
		}
	}
}