///////////////////////////////////////////////////////////////
//	Verifica se o string tem algum dígito que não seja número
///////////////////////////////////////////////////////////////
function EhNumero (Valor) {
	var Numeros="1234567890";
	for (Cont=0; Cont < Valor.length; Cont++) {
		TempChar = Valor.substring(Cont,Cont+1);
		if	(Numeros.indexOf(TempChar,0) == -1)	return (false);
	}
	return (true);
}
///////////////////////////////////////////////////////////////
//	Verifica se um valor está contido em um array
///////////////////////////////////////////////////////////////
function EstaContido(Valor, Arranjo) {
	var Cont;
	for(Cont = 0; Cont < Arranjo.length; Cont++)
		if(Arranjo[Cont] == Valor)
			return true;
	return false;
}
//////////////////////////////////////////////////
//	Abri uma instância do browser atual contendo
//	a URL passada como parâmetro
//////////////////////////////////////////////////
function AbriBrowser(URL, Nome, Altura, Largura, Topo, Esquerda, BarraDeMenu, BarrasDeRolagem) {
	window.open(URL, Nome, "height=" + Altura + ",width=" + Largura + ",top=" + Topo + ",left=" + Esquerda + ",toolbar=no,location=no,resizable=yes,status=yes,menubar=" + BarraDeMenu + ",scrollbars=" + BarrasDeRolagem);
}
///////////////////////////////////////////////////////////////
//	REPLACE que funciona de verdade... porque a porra do
//	método do próprio java script não funciona!!!
///////////////////////////////////////////////////////////////
function ReplaceFunciona(Valor, Procurado, Substituto) {
	var Cont;
	var ValorResultante = "";
	if(Valor != null)
		for(Cont = 0; Cont < Valor.length; Cont++)
			if(Valor.substring(Cont, Cont + 1) == Procurado)
				ValorResultante = ValorResultante + Substituto;
			else
				ValorResultante = ValorResultante + Valor.substring(Cont, Cont + 1);
	return ValorResultante;
}
///////////////////////////////////////////////////////////////
//	ToFixed que funciona de em qualquer browser
///////////////////////////////////////////////////////////////
function ToFixed(Valor, TotalCasas) {
	var Cont, Continua = true;
	Valor = PreencheZeros(Valor, TotalCasas + 1);
	if(Valor.indexOf(".") == -1)
		Valor = Valor.substring(0, Valor.length - TotalCasas) + "." + Valor.substring(Valor.length - TotalCasas, Valor.length);
	for(Cont = Valor.length - Valor.indexOf("."); Cont <= TotalCasas; Cont++)
			Valor = Valor + "0";
	return Valor;
}
///////////////////////////////////////////////////////////////
//	Soma dois campos... tive que fazê-la porque o operador "+"
//	da porra do javascript não funciona!!!
///////////////////////////////////////////////////////////////
function Soma(ValorA, ValorB) {
	//	Variáveis necessárias
	var Cont;

	//	Definindo se o segundo parâmetro é negativo
	var Negativo = (ValorB.indexOf("-") == - 1 ? false : true);

	//	Filtrando os valores
	ValorA = ReplaceFunciona(ReplaceFunciona(ReplaceFunciona(ValorA, ".", ""), ",", ""), "-", "");
	ValorB = ReplaceFunciona(ReplaceFunciona(ReplaceFunciona(ValorB, ".", ""), ",", ""), "-", "");

	//	Definindo o tamanho dos valores
	var Tamanho = (ValorA.length >= ValorB.length ? ValorA.length : ValorB.length)

	//	Completando as casas
	ValorA = PreencheZeros(ValorA, Tamanho);
	ValorB = PreencheZeros(ValorB, Tamanho);
	
	//	Processando a soma de dois positivos
	var Resultado = "";
	var Parcial = 0;
	var Resto = 0;
	if(!Negativo) {
		//	Posições
		var PosicaoA = 0;
		var PosicaoB = 0;
		
		//	Somando
		for(Cont = (Tamanho - 1); Cont >= 0; Cont--) {
			//	Posições
			PosicaoA = parseInt(ValorA.substring(Cont, Cont + 1));
			PosicaoB = parseInt(ValorB.substring(Cont, Cont + 1));

			//	Somando a posição
			Parcial = PosicaoA + PosicaoB + Resto;

			//	Com resto
			if(Parcial > 9) {
				Resultado = Parcial.toString().substring(1,2) + Resultado;
				Resto = 1;
			//	Sem resto
			} else {
				Resultado = Parcial.toString() + Resultado;
				Resto = 0;
			}
		}
		//	Com resto
		if(Resto == 1)	Resultado = "1" + Resultado;

		//	Retorno da função
		return ToFixed(parseFloat(Resultado).toString(), 2);

	//	Processando a soma de um positivo e outro negativo
	} else {
		//	Sinal do resultado
		var Sinal = (parseInt(ValorA) >= parseInt(ValorB) ? "" : "-");

		//	Decidinho pelo maior valor absoluto
		var Maior = (parseInt(ValorA) >= parseInt(ValorB) ? ValorA : ValorB);
		var Menor = (parseInt(ValorA) < parseInt(ValorB) ? ValorA : ValorB);

		//	Posições
		var PosicaoMaior = 0;
		var PosicaoMenor = 0;

		//	Subtraindo
		for(Cont = (Tamanho - 1); Cont >= 0; Cont--) {
			//	Posições
			PosicaoMaior = parseInt(Maior.substring(Cont, Cont + 1));
			PosicaoMenor = parseInt(Menor.substring(Cont, Cont + 1));

			//	Subtraindo a posição
			if(PosicaoMaior >= (PosicaoMenor + Resto)) {
				Parcial = PosicaoMaior - (PosicaoMenor + Resto);
				Resto = 0;
			} else {
				Parcial = (PosicaoMaior + 10) - (PosicaoMenor + Resto);
				Resto = 1;
			}

			//	Resultado
			Resultado = Parcial.toString() + Resultado;
		}

		//	Retorno da função
		return Sinal + ToFixed(parseFloat(Resultado).toString(), 2);
	}
}
///////////////////////////////////////////////////////////////
//	Preenche um string com zeros a esquerda
///////////////////////////////////////////////////////////////
function PreencheZeros(Valor, Tamanho) {
	var Cont, Limite = Math.abs(Tamanho) - Valor.length;
	if(Tamanho >= 0)
		for(Cont = 0; Cont < Limite; Cont++)
			Valor = "0" + Valor;
	else
		for(Cont = 0; Cont < Limite; Cont++)
			Valor = Valor + "0";
	return Valor;
}
///////////////////////////////////////////////////
//	Rotina de impressão
///////////////////////////////////////////////////
function Imprime(Frame) {
  if (Frame == window) {
    window.print();
  } else {
	Frame.focus();
	window.print();
  }
}

function rTrim( str )
{
	//Removendo brandos da direita... percorrendo a string inversamente
	for( var i = str.length - 1 ; i >= 0 ; i-- )
		if( str.charAt( i ) != " " )
		{
			return str.substring( 0 , i + 1 );
		}
}	
	
function lTrim( str )
{
	//Removendo brandos da direita... percorrendo a string inversamente
	for( var i = 0 ; i < str.length ; i++ )
		if( str.charAt( i ) != " " )
			return str.substring( i , str.length );
}	

function trim( str )
{
	if( (str == null) || (str == "") )
		return "";
	else
		return rTrim( lTrim( str ) );
}


	var
	conBRDate = "/dmy",
	conUSDate = "/mdy";

	// Recebe uma string de data em formato conBRDate e retorna uma data
	function CJDate(valor)
	{
		// Data informada pelo usuário		
		if (isEmpty(valor))
			return
			
		di = DatePart("d",valor,conBRDate)
		mi = (DatePart("m",valor,conBRDate))
		yi = DatePart("y",valor,conBRDate)
		dataj = new Date(mi + "/" + di + "/" +yi);
		
		return dataj
	}

	// Retorna verdadeiro se a string for vazia ou composta apenas de espaços
	function isEmpty(str) 
	{ 
		if (str==null) return true
		
		for (var intLoop = 0; intLoop < str.length; intLoop++)
			if (" " != str.charAt(intLoop))
				return false;            
		return true; 
	}

	function DatePart(Part, vDate, formatDate)
	{	
		var aux = ""
		var str = ""
		if ((formatDate == conUSDate && Part == "m") || (formatDate == conBRDate && Part == "d"))
		{
			for (z = 0; z < vDate.length; z++)
			{   
				aux = vDate.charAt(z)
				if (aux == "/") return str
				str += aux 
			}
		}
		
		if ((formatDate == conUSDate && Part == "d") || (formatDate == conBRDate && Part == "m"))
		{  
			for (z = 0; z < vDate.length; z++)
			{   
				aux = vDate.charAt(z)
				if (aux == "/")
				{	
					str = vDate.charAt(z+1) 
					if (vDate.charAt(z+2) != "/") 
					{	str += vDate.charAt(z+2)}
					return str
				}
			}
		}
		
		if (Part = "y")
		{
			for (z = 1; z < vDate.length; z++)
			{   
				aux = vDate.charAt(vDate.length-z)
				if (aux == "/") return str 
				str = aux + str  
			}
		}
	}
