/**
 * Verifica o valor para setar a cor do campo no formulário
 * Autor: Elvis
 * Data: 10.03.2002
 */
function VerificaCor(frm){
	for (var i = 0; i<frm.elements.length; i++){
		if(frm.elements[i].type == "text"){
			if(frm.elements[i].value == 0){
				frm.elements[i].style.background = COR_NAO;
			}else if (frm.elements[i].value < 0){
				frm.elements[i].style.background = COR_RED;
			}else{
				frm.elements[i].style.background = COR_SIM;
			}
		}
	}
}

/**
 * Cores padrão
 */
var COR_SIM = "#AACCFF";
var COR_NAO = "#FFFFFF";
var COR_RED = "#FFAAAA";

/**
 * Muda a cor do objeto
 * Autor: Elvis
 * Data: 10.03.2002
 * Modified: 27.01.2005
 */
/*function mudarCor(obj){
	if (obj.value == 0) {
		obj.style.background = COR_NAO;
	} else {
		obj.style.background = COR_SIM;
	}
}*/

	function mudarCor(obj){
		if (obj.value == 0) {
			obj.style.background = COR_NAO;
		}
		else if (obj.value < 0){
				obj.style.background = COR_RED;
		}
		else{
			obj.style.background = COR_SIM;
		}
	}

/*
Passa options de um lado para outro
Autor: Jorge Campos
Data: 27.10.2004
Modificada: 
Entrada: 
	objOrigem -  Objeto do formulário onde cont&eacute;m os options para
				 passar para o objeto de destino.
	objDestino - Objeto do formulário que receberá os options 
				 selecionados.
*/
function doisCombos( objOrigem, objDestino ){
	var selecionou = false;
	if ( objOrigem.length > 0 ){
		for ( var i=0; i<objOrigem.options.length; i++ ){
			if ( objOrigem.options[i].selected ){
				selecionou = true;
				var op = new Option( objOrigem.options[i].text, objOrigem.options[i].value);
				objDestino.add( op, objDestino.length );
			}
		}
		for( var i = (objOrigem.options.length-1); i >= 0; i-- ){
			if ( objOrigem.options[i].selected ){
				objOrigem.options[i] = null;
			}
		}
		if ( !selecionou ){
			alert('É preciso selecionar pelo menos um item!')
		}
	}
}

/*
Seleciona o option para o valor passado
Autor: Jorge Campos
Data: 13.12.2002
Modificada: 20.12.2002

Entrada: 
	objForm - Objeto do formulário onde será feita a verificação. Poderá
			  ser Radio ou Select.
	tipo - informa o tipo do objeto:
		   R - Radio
		   S - Select
	valor - informa o valor que deverá aparecer marcado/selecionado.	

*/
function selecionar(objForm, tipo, valor){
	for (var n=0;n < objForm.length; n++ ){
		if ( objForm[n].value == valor ){
			if (tipo == "R")
				objForm[n].checked = true;
			else if (tipo == "S")
				objForm[n].selected = true;
			break;
		}
	}
	return true;
}

/*
Função ListLength( objFrm, delim )
Autor: Jorge Campos
Data: 03.02.2002
Modificada: 
Purpose: Retorna a quantidade de elementos de uma lista especificada
		 por um delimitador
Input
	objFrm - objeto de formulário que tenha um valor string.
	Optional delim - informa em que delimitador a lista será quebrada.
Output
	Integer
*/
function ListLength( objFrm, delim ){
	var char2, qtd;
	if ( delim == null || delim == "" ){ delim = ','; } // delimitador padrão
	char2 = objFrm.value.split( delim );
	qtd = char2.length;
	if ( delim == null && objFrm.value != "" ){
		return 1;
	}else if (objFrm.value == ""){
		return 0;
	}else{
		return qtd;
	}
}
/*
Função ListGetAt( objFrm, pos, delim )
Autor: Jorge Campos
Data: 03.02.2002
Modificada: 
Purpose: Retorna o valor correspondente a posição indicada dividindo a lista
         pelo delimitador especificado.
Input:
	objFrm - objeto de formulário que tenha um valor string.
	pos - posição onde se quer pegar a string na lista.
	Optional delim - informa em que delimitador a lista será quebrada.
Output:
	String
*/
function ListGetAt( objFrm, pos, delim ){
	var char2, qtd;
	if ( delim==null || delim == "" ){ delim = ','; } // delimitador padrão
	if ( pos == 0 ){ return objFrm.value; } // retorna a lista caso a posição seja 0
	char2 = objFrm.value.split( delim );
	if ( ListLength( objFrm, delim ) == 0 ){
		return "";
	}else{
		return char2[pos-1];
	}
}
/*
Função ListAppend( objFrm, valor, delim )
Autor: Jorge Campos
Data: 03.02.2002
Modificada: 
Purpose: adiciona o conteudo de [valor] na lista que está em objFrm
Input:
	objFrm - objeto de formulário que tenha um valor string.
	valor - valor a ser inserido na lista na lista.
	Optional delim - informa em que delimitador a lista será formada.
Output:
	String
*/
function ListAppend( objFrm, valor, delim ){
	if ( delim==null || delim == "" ){ delim = ','; } // delimitador padrão
	if ( objFrm.value == "" ){
		objFrm.value = valor;
	}else{
		objFrm.value += delim + valor;
	}
}

/*
Function AbreHelp( pagina )
Autor: Jorge Campos
Data: 03.02.2002
Modificada: 
Purpose: Abrir uma janela com  help da página que efetuou a solicitação
Input:
	pagina - Nome da url com a página sem extensão
Output:
	Window
*/
function AbreHelp( pagina, acao ){
	var left = (screen.width)?(screen.width-500)/2:100;
	var top = (screen.height)?(screen.height-250)/2:100;
	window.open( pagina + '?acao=' + acao ,'HELP','left=' + left + ',top=' + top + ',width=500,height=250,scrollbars=1');
}

/*
Faz uma pesquisa nos options buscando pelo texto passado
Autor: Jorge Campos ( jcampos@netra.com.br )
Data: 18.08.2004
Modificada:

Entrada: 
	obj - Campo texto onde será digitada a pesquisa.
	objCombo - Objeto do formulário onde será feita a verificação. Poderá
			   ser Select.
	first - Este parametro indica onde o combo deverá iniciar, alguns combos
			do sistema não tem o primeiro valor ( TRUE ou FALSE ) True indica
			que deverá iniciar de 0 e False deverá iniciar de 1
*/
function combopesquisa( obj, objCombo, first ){
	var s = new String( obj.value.toUpperCase() );
	var x, inicio;
	if ( first ){ inicio = 0; }else{ inicio = 1; }
	if (s != ""){
		_break:
		for (var i = inicio; i < objCombo.length; i++ ){
			x = objCombo.options[i].text.toUpperCase();
			if ( x.indexOf( s ) > -1 ){
				objCombo.options[i].selected = true;
				break _break;
			}else{
				try{
					objCombo.options[inicio].selected = true;
				}catch(e){}
			}
		}
	}else{
		try{
			objCombo.options[inicio].selected = true;
		}catch(e){}
	}
}

/*
Valida a quantidade de caracteres de um objeto TextArea
Autor: Jorge Campos
Data: 22.06.2006
Modificada: 
Entrada: 
    obj                 - Objeto textarea que será verificado
    maxValue            - Quantidade máxima de caracteres que o textarea irá aceitar.
    objDestino Opcional - Campo opcional que exibirá a quantidade de caracteres ao mesmo 
                          instante da digitação. Caso não seja necessário basta não passar o
                          objeto, passa apenas os dois parâmetros iniciais.
Utilização: Eventos onKeyUp, onBlur, onLostFocus
*/
function validaTextArea( obj, maxValue, objDestino ){
	var texto = new String( obj.value );
	if ( texto.length > maxValue ){
		alert( 'A quantidade máxima de caracteres para este campo &eacute; ' + maxValue );
		obj.value = texto.substr( 0, maxValue );
	}
	if ( objDestino != null ){
		texto = new String( obj.value );
		objDestino.value = texto.length;		
	}
}

/*
Verifica se o campo combo pesquisado possui em sua propriedade ONCHANGE
a chamada para alguma função. Pelo JS o retorno do obj.change &eacute; uma string
com a chamada de uma função com o nome anonymous(); onde seu conteúdo
&eacute; a chamada das funções internas.
Autor: Jorge Campos ( jcampos@netra.com.br )
Data: 23.08.2004
Modificada:

Entrada: 
	obj - Campo combo onde será realizada a pesquisa.
*/
function comboverificachange( obj, objPesq ){
	var x = objPesq.value;
	if ( objPesq.value != "" ){
		if ( obj.onchange != null ){
			var x = new String( obj.onchange );
			var temReplace = true;

			while ( temReplace ){
				x = x.replace( "this", "document." + obj.form.name + "." + obj.name );
				if ( x.indexOf("this") == -1 ){
					temReplace = false;
				}
			}
			eval( x + ";anonymous();");
		}
	}

}

/*
Function calcData( dt, qtd )
Autor:	S&eacute;rgio
		Jorge Campos
Data: 14.12.2004
Modificada: 
Purpose: Adicionar a quantidade de dias a data passada
Input:
	dt - Data no formato dd/mm/aaaa
	qtd - Quantidade de dias para adicionar
Output:
	String - Data no formato dd/mm/aaaa
*/
function calcData( dt, qtd ){

	if ( dt != "" ){

		var x = dt.split("/");

		var Day = x[0] + '/' + x[1] + '/' + x[2];
		var Days = qtd;

		var strData = new String( Day );
		var dia = new String(strData.substr(0,2));
		var mes = new String(strData.substr(3,2));
		var ano = new String(strData.substr(6,4));

		if (dia.substr(0,1) == "0"){dia = dia.substr(1,1);}
		if (mes.substr(0,1) == "0"){mes = mes.substr(1,1);}

		var d=new Date(parseInt(ano),parseInt(mes-1),parseInt(dia),00,00,00);

		d.setDate(d.getDate() + parseInt(Days));
		dia = d.getDate();
		mes = (d.getMonth()+1);
		ano = d.getFullYear();

		strDia = new String();
		strDia = dia.toString();
		strMes = mes.toString();

		if (strDia.length == 1){strDia = "0" + strDia;}

		if (strMes.length == 1){strMes = "0" + strMes;}

		return strDia + '/' + strMes + '/' + ano;

	}else{
		return dt;
	}

}

/*
Function showHint
Autor: Jorge Campos
Data: 27.07.2005
Modificada: 
Purpose: Abrir uma janela com  o zoom do campo que efetuou a solicitação
Input:
	exibe as Boolean - indica se o pop vai ser mostrado ou escondido
	msg as String - Mensagem a ser exibida no pop-up (exibe deve ser true)
	tagDin as String - nome da tag dinamica (normalmente o id de uma tag span) o objeto ser criado
	corFundo as String Optional - Cor de fundo do pop automático
	corFonte as String Optional - Cor da fonte do pop automático

É preciso criar uma tag com um id na pagina para utilizar a função
ex.: 
<span id='dinamicvalues2'></span>

Para a utilização desta função &eacute; preciso colocar no objeto que será exibido a função
as propriedades:

A mensagem no caso de um combo deverá ser assim:
	this.options[this.selectedIndex].text
Caso o combo seja iniciado sem nenhum OPTION colocar no lugar da mensagem assim:
	(this.options.length==0?'':this.options[this.selectedIndex].text)

onMouseOut="showAltHint( false, '', 'nomeIdTag' );" 

onMouseMove="showAltHint( true, mensagem, 'nomeIdTag' );" 
OU
onMouseMove="showAltHint( true, mensagem, 'nomeIdTag', '#FFCC66', '#000000' );"


*/

var sah_Xoffset = 0;    // Modifique esses valoras para
var sah_Yoffset = 0;    // mudar a posição da janela.
var sah_firstPosition = 0;

document.onmousemove = (navigator.userAgent.indexOf('MSIE') > -1)
? function () {
	sah_Xoffset = (event.clientX) + document.body.scrollLeft;
	sah_Yoffset = (event.clientY) + document.body.scrollTop;
	return true;
}
: function (e) {
	sah_Xoffset = (e.pageX);// + document.body.scrollLeft;
	sah_Yoffset = (e.pageY);// + document.body.scrollTop;
	return true;
};

function showAltHint( exibe, msg, tagDin, corFundo, corFonte ){

	var docExt = document;
	var fundoPadrao, fontePadrao

	if ( corFundo != null ){
		fundoPadrao = corFundo;
	}else{
		fundoPadrao = "#0080C0";
	}

	if ( corFonte != null ){
		fontePadrao = corFonte
	}else{
		fontePadrao = "#ffffff";
	}

	var textoEleDin = new String( docExt.getElementById( tagDin ).innerHTML );

	var altMsg = "";

	altMsg += " <div ";
	altMsg += " id='PopupDiv' ";
	altMsg += " style='width: 300; position:absolute; top: " + sah_Yoffset + "px; left: " + sah_Xoffset + "px; padding:4px; display:none; background-color:" + fundoPadrao + "; color:" + fontePadrao + "; z-index:200; font-size : 8pt; font-family : Verdana, Geneva, Arial, Helvetica, sans-serif; font-weight : bold;'> ";
	altMsg += msg;
	altMsg += " </div> ";

	altMsg += " <iframe ";
	altMsg += " id='DivMestra' ";
	altMsg += " src='javascript:false;' ";
	altMsg += " scrolling='no' ";
	altMsg += " frameborder='0' ";
	altMsg += " style='position:absolute; top:0px; left:0px; display:none;'> ";
	altMsg += " </iframe> ";

	if ( textoEleDin.indexOf( "DivMestra" ) == -1 ){
		docExt.getElementById( tagDin ).innerHTML = altMsg;
	}

	var DivRef = docExt.getElementById('PopupDiv');
	var IfrRef = docExt.getElementById('DivMestra');

	if ( exibe ){

		if ( msg != "" ){

			DivRef.innerHTML = msg;
			DivRef.style.display   = "block";

			IfrRef.style.width     = DivRef.offsetWidth;
			IfrRef.style.height    = DivRef.offsetHeight;

			DivRef.style.top       = sah_Yoffset + 10;
			DivRef.style.left      = sah_Xoffset + 10;

			IfrRef.style.top       = sah_Yoffset + 10;
			IfrRef.style.left      = sah_Xoffset + 10;

			IfrRef.style.zIndex    = DivRef.style.zIndex - 1;
			IfrRef.style.display   = "block";

		}

	}else{
		DivRef.style.display = "none";
		IfrRef.style.display = "none";
	}

}

// Final das funções para exibição do popup dinâmico
/*###########################################################################*/