/*
'****************************************************************************************************************
' Objetivo...........: Funções usadas pela Calculadora
' Autor..............: Samuel Suzano
' Data...............: 26/04/2004
' Comentários........: 
' Alterado por.......: Reginaldo Berti
' Data...............: Julho/2004
' Motivo da Alteração: Adequação as novas fórmulas de cálculo (DT GDS2/0007)
' Data...............: 01/dez/2004
' Motivo da Alteração: Por questão de segurança de processamento.
'					   Corrigida as rotinas de re-chamada do formulario frmPesquisa para não mais utilizar
'                      string e sim campos no formulario (data/trocatitulo/formacalculo/acao)
'                      funcoes: CarregaConsulta() , CarregaConsultaOutroTitulo() , CarregaTituloDoEmissor()
'---------------------------------------------------------------------------------------------------------------
' Componentes usados.: 
' Entradas...........: 
' Retorno............: 
'***************************************************************************************************************
*/

var gstrDiaAtual; // Variável global para data
var intAux;	//Variável global para montar as células dinamicamente


/**************************************************************
Objetivo: Carregar a data atual formatada para dd/mm/aaaa
Entradas: nenhum
Saídas:   Data atual formatada
*************************************************************/

function CarregaDiaAtual()
{
	var dtmDiaHoje;	        // Data atual
	var intDia;		// Dia formatado
	var intMes;		// Mes formatado

	dtmDiaHoje = new Date();
	
	if (dtmDiaHoje.getDate() < 10)
	{
		intDia = "0" + dtmDiaHoje.getDate();
	}
	else
	{
		intDia = dtmDiaHoje.getDate();
	}
	if (parseFloat(dtmDiaHoje.getMonth()+parseFloat(1)) < 10)
	{
		intMes = "0" + parseFloat(dtmDiaHoje.getMonth()+parseFloat(1));
	}
	else
	{
		intMes = parseFloat(dtmDiaHoje.getMonth()+parseFloat(1));
	}
	gstrDiaAtual = intDia + "/" + intMes + "/" + dtmDiaHoje.getFullYear();
	return true;
}


/**************************************************************
Objetivo: Editar o campo Volume
Entradas: intNumeroFormatar - valor que será colocado no campo Volume
Saídas:   Valor formatado com separação de decimais e milhares
*************************************************************/
function FormataQuantidade(intNumeroFormatar)
{
	var intIndexDecimal;    //Area auxiliar
	var intDecimal;         //Area auxiliar parte decimal do resultado
	var intInteiro;         //Area auxiliar
	var blnTrueFalse;       //Area auxiliar 
	var intNovoVolume;      //Area auxiliar parte inteira do resultado
	var intEsquerda;        //Area auxiliar
	var strNumeroFormatar;  //Area auxiliar
	
	blnTrueFalse = true;
	strNumeroFormatar = intNumeroFormatar.toString();
	intIndexDecimal = strNumeroFormatar.indexOf(".");
	intInteiro = strNumeroFormatar.substr(0,intIndexDecimal);
	intDecimal = strNumeroFormatar.substr(intIndexDecimal);
	if (intDecimal.length <= 2)
	{
		intDecimal = intDecimal + "0";
	}
	if (intIndexDecimal == -1)
	{
		intInteiro = intNumeroFormatar;	
		intDecimal = ",00";
	}	
	intNovoVolume = "";
	if (intInteiro.length > 3)
	{
		while (blnTrueFalse)
		{			
			intEsquerda = intInteiro.substr(0,(intInteiro.length - 3));
			intNovoVolume = "." + intInteiro.substr((intInteiro.length - 3),3) + intNovoVolume;

			if (intEsquerda.length <= 3)
			{
				intNovoVolume = intEsquerda + intNovoVolume;			
				blnTrueFalse = false;				
			}
			else
			{
				intInteiro = intEsquerda;
			}
		}	
	}
	else
	{
		intNovoVolume = intInteiro;
	}
	frmPesquisa.txtQuantidade.value = (intNovoVolume + intDecimal);
}

/**************************************************************
Objetivo: Não permitir a digitação de caracteres que não sejam numéricos
Entradas: nenhum
Saídas:   Bloqueio ou não da digitação
*************************************************************/
function SoNumeros(strCarac)
{
	if ((strCarac.keyCode < 48) || (strCarac.keyCode > 57))
	{
		strCarac.keyCode = 0;
	}
}


/**************************************************************
Objetivo: Não permitir a digitação de caracteres que não sejam numéricos
Entradas: nenhum
Saídas:   Bloqueio ou não da digitação
*************************************************************/
function SoNumeroseNegativo(strCarac)
{
	if ((strCarac.keyCode < 48) || (strCarac.keyCode > 57))
	{
		if (strCarac.keyCode != 45)
		{
			strCarac.keyCode = 0;
		}
	}
}


/**************************************************************
Objetivo: Não permitir a digitação de caracteres que não sejam numéricos
Entradas: nenhum
Saídas:   Bloqueio ou não da digitação
*************************************************************/
function SoNumeroseVirgula(strCarac)
{
	if ((strCarac.keyCode < 48) || (strCarac.keyCode > 57))
	{
		if (strCarac.keyCode == 46) 
		{
			strCarac.keyCode = 44;
		}
		else if ((strCarac.keyCode != 44) && (strCarac.keyCode != 45))
		{
			strCarac.keyCode = 0;
		}
	}
}


/**************************************************************
Objetivo: Não permitir a digitação de caracteres que não sejam numéricos
Entradas: nenhum
Saídas:   Bloqueio ou não da digitação
*************************************************************/
function SoNumeroseBarras(strCarac)
{
	if ((strCarac.keyCode < 47) || (strCarac.keyCode > 57))
	{
		strCarac.keyCode = 0;
	}
}


/**************************************************************
Objetivo: Validar se todos os campos estão preenchidos corretamente
Entradas: nenhum
Saídas:   Permissão ou não para continuar o cálculo
*************************************************************/
function ValidaCampos()

{
	if ((frmPesquisa.cboEmissor.value == "") && (frmPesquisa.cboCodigo.value == ""))
	{
		alert("Selecione Emissor e/ou Código do Titulo");
		return false;
	}

	if ((frmPesquisa.cboCodigo.value == "") || (frmPesquisa.cboCodigo.value == "Selecione"))
	{
		alert("Selecione o título");
		return false;
	}

	if ((((frmPesquisa.txtDataLiquidacao.value).length) == 0) && (((frmPesquisa.cboOpcaoPrazo.value).length) == 0))
	{
		alert("Informe data de liquidação ou prazo");
		return false;
	}

	if ((isNaN(frmPesquisa.txtQuantidade.value)) || (frmPesquisa.txtQuantidade.value == "") || (frmPesquisa.txtQuantidade.value == "0"))
	{
		alert("Quantidade negociada inválida");
		return false;
	}
	
	if ((frmPesquisa.txtOpcao.value <= 0) && (frmPesquisa.cboOpcao.selectedIndex == 3))
	{
		alert("Volume não pode menor ou igual a zero");
		return false;
	}
	
	if ((frmPesquisa.txtOpcao.value).length == 0)
	{	
		alert("Preço/Taxa inválido");
		return false;
	} 

	if ( (((frmPesquisa.cboOpcao.value).length == 0 ) || (frmPesquisa.cboOpcao.value == "Forma de Cálculo" )))
	{
		alert("Selecione Forma de Cálculo");
		return false;
	}

	if ((frmPesquisa.cboOpcao.selectedIndex == 3) && (parseFloat(frmPesquisa.txtOpcao.value) == 0))
	{
		alert("Informe Volume para cálculo");
		return false;
	}

	if ((frmPesquisa.cboOpcao.selectedIndex == 1) && (parseFloat(frmPesquisa.txtOpcao.value) < -99))
	{
		alert("Valor da Taxa Negociada inválido (Máx:-99,99)");
		return false;
	}

	if ((frmPesquisa.cboOpcao.selectedIndex == 2) && (parseFloat(frmPesquisa.txtOpcao.value) < -99))
	{
		alert("Valor da Taxa Preço Limpo inválido (Máx:-99,99)");
		return false;
	}


	if (frmPesquisa.txtDataLiquidacao.value == frmPesquisa.txtDataVencimento.value)
	{
		alert("Data de Liquidação e \nData de Vencimento informada \nNão podem ser iguais");
		return false;
	}

	return true;
}

/**************************************************************
Objetivo: Permitir apenas duas casas decimais (formato -x,xx)
Entradas: número a ser validado
Saídas:   Permissão ou não para inserir novos decimais
*************************************************************/
function ContaDecimais(dblNumero, intDecimais)
{

	var strInt = Array;
	var strIntRes;       // Parte inteira do número
	var strDecRes;       // Parte decimal do número
	var intRetorno;      // Área auxiliar

	//Valida o numero de sinais negativos no inicio do valor
	if (dblNumero.search('-') != -1)
	{
		intRetorno = dblNumero.substring(1, dblNumero.length-1);
		if ((intRetorno.search('-') != -1) && (dblNumero.length > 1))
		{
			frmPesquisa.txtOpcao.value = dblNumero.substring(1, dblNumero.length)
			return false;
		}
	}
	if (dblNumero.indexOf("-") != -1)
	{
		strInt = dblNumero.split("-");

		if (strInt.length >= 3)
		{
			intRetorno = dblNumero.length - 1;
			frmPesquisa.txtOpcao.value = dblNumero.substring(0 , intRetorno);
			return false;
		}
		intRetorno = dblNumero.length - 1
	}


	if (dblNumero.indexOf(",") != -1)
	{	
		strInt = dblNumero.split(",");
		strIntRes = strInt[0];
		strDecRes = strInt[1];
		
		if (strInt.length >= 3) {
			frmPesquisa.txtOpcao.value = strIntRes
			return false;
		}

		if (isNaN(strDecRes))
		{
			alert("Valor Inválido.\nPara valores negativos,\ndigite no formato '-X,XX'");
			intRetorno = dblNumero.length - 1;
			frmPesquisa.txtOpcao.value = dblNumero.substring(0 , intRetorno);
			return false;
		}
		
		
		//Limita a dois digitos apos a virgula
		if (strDecRes.length >= 3) {
			intRetorno = (strIntRes + "," + strDecRes.substr(0,2));
			frmPesquisa.txtOpcao.value = intRetorno;
			return false;
		}
		
		//Verifica se há sinal na parte decimal do valor
		if (dblNumero.indexOf("-") != -1)
		{
			strInt = dblNumero.split("-");
			if (strInt.length >= 3)
			{
				frmPesquisa.txtOpcao.value = strIntRes;
				alert("Valor Inválido.\nPara valores negativos,\ndigite no formato '-XX,XX'");
				return false;
			}
		}
	}
	else
	{

		if (dblNumero.indexOf("-") != 0)
		{
			if (isNaN(dblNumero))
			{
				alert("Valor Inválido.\nPara valores negativos,\ndigite no formato '-XX'");
				intRetorno = dblNumero.length - 1;
				frmPesquisa.txtOpcao.value = dblNumero.substring(0 , intRetorno);
				return false;
			}
		}
		else
		{

		return true;
		}
	}		

}


/**************************************************************
Objetivo: Limitar a escolha do prazo a 'D+0' ou 'D+1'
Entradas: conteúdo combo
Saídas:   Valor do combo prazo
*************************************************************/
function ControlaPrazo(objPrazo)
{
	if (objPrazo.value == '')
	{
		alert('Selecione o prazo D+0 ou D+1')
		objPrazo.value = '0';
	}

}

/****************************************************************
Objetivo: Validar a data de Vencimento informada
Entradas: Data de vencimento informada = strdata1
          Data de vencimento original do titulo = strdata2
          Data informada já formatada com zeros = strdata3
Saída   : Permissão ou não para continuar
*****************************************************************/
function ValidaDataVencto(strdata1, strdata2, strdata3)
{
	var strDataVenc;	// Data Vencto aaaammdd
	var strDataVencOrig     // Data Atual corrigida
	var strDataLocal        // Data auxiliar
	var intDia;	    	// Dia formatado
	var intMes;		// Mes formatado

	if (!ValidaDataCalc(strdata1))
	{
		frmPesquisa.txtDataVencimento.value = strdata3;
		return false;
	}

	strDataLocal = strdata1;
	if (strDataLocal.charAt(1) == "/")
	{
		strDataLocal = "0" + strDataLocal;
	}

	if (strDataLocal.charAt(4) == "/")
	{
		strDataLocal = strDataLocal.substring(0,3)+"0"+strDataLocal.substring(3,9);
	}
	
	frmPesquisa.txtDataVencimento.value = strDataLocal;

	strDataVenc = strDataLocal.substring(6,10)+strDataLocal.substring(3,5)+strDataLocal.substring(0,2);

	strDataLocal = strdata2;
	if (strDataLocal.charAt(1) == "/")
	{
		strDataLocal = "0" + strDataLocal;
	}
	
	if (strDataLocal.charAt(4) == "/")
	{
		strDataLocal = strDataLocal.substring(0,3)+"0"+strDataLocal.substring(3,9);
	}

	strDataVencOrig = strDataLocal.substring(6,10)+strDataLocal.substring(3,5)+strDataLocal.substring(0,2);

	if (strDataVenc > strDataVencOrig)
	{
		alert('Data de Vencimento informada tem de ser menor ou igual a \nData de Vencimento do Ativo');
		frmPesquisa.txtDataVencimento.value = strdata3;
		return false;
	}

	strDataLocal = new Date();	
	if (strDataLocal.getDate() < 10)
	{
		intDia = "0" + strDataLocal.getDate();
	}
	else
	{
		intDia = strDataLocal.getDate();
	}
	if (parseFloat(strDataLocal.getMonth()+parseFloat(1)) < 10)
	{
		intMes = "0" + parseFloat(strDataLocal.getMonth()+parseFloat(1));
	}
	else
	{
		intMes = parseFloat(strDataLocal.getMonth()+parseFloat(1));
		intMes = intMes.toString();
	}
	strDataLocal = strDataLocal.getFullYear() + intMes + intDia  ;	

	if (strDataVenc < strDataLocal)
	{
		alert('Data de Vencimento informada tem de ser maior ou igual a \nData de hoje');
		frmPesquisa.txtDataVencimento.value = strdata3;
		return false;
	}


	return true;

}

/****************************************************************************
Objetivo  : Formata a data a data de vencimento informado
Premissas : 
Entradas  : valor da data
Saídas    : alert indicando o erro da data
****************************************************************************/
function ValidaDataCalc(strData) 
{

	if (strData.length>0)
	{
		var dtmPat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/; 
		var arrMatch = strData.match(dtmPat); 
		if (arrMatch == null) 
		{
			alert("Formato de data invalido.")
			return;
		}
		else	
		{
			intDia = arrMatch[1]; 
			if (intDia.length==1)
				intDia = '0' + intDia;						
			intMes = arrMatch[3];
			if (intMes.length==1)
				intMes = '0' + intMes;
			intAno = arrMatch[4];
			if (intDia < 1 || intDia > 31) 
			{
				alert("Dia incorreto.");
				return;
			}
			if (intMes < 1 || intMes > 12) 
			{ 
				alert("Mês incorreto.");
				return;
			}
			if ((intMes==4 || intMes==6 || intMes==9 || intMes==11) && intDia==31) 
			{
				alert("Mês "+intMes+" não tem 31 dias!")
				return;
			}
			if (intMes == 2) 
			{ 
				var blnIsLean = (intAno % 4 == 0 && (intAno % 100 != 0 || intAno % 400 == 0));
				if (intDia>29 || (intDia==29 && !blnIsLean)) 
				{
					alert("Fevereiro " + intAno + " não tem " + intDia + " dias!");
					return;
				}
			}
		}		

		return true;
	}	
}


/*-----------------------------------------------------------------------
Objetivos: Efetuar o reload da pagina a cada troca de titulo
Premissas: 
Entradas:  Nenhuma
Saída  :   Nenhuma
/-----------------------------------------------------------------------*/
function CarregaConsulta() 
			{
		var intFormaCalculo = frmPesquisa.cboOpcao.selectedIndex  // campo auxiliar com valor do tipo de forma de cálculo
		/* DTGORF-026 ini */
		if ((intFormaCalculo == 2) && (frmPesquisa.txtcalctudo.value == 'F'))
		{
			intFormaCalculo = 3;
		}
		/* DTGORF-026 fim */
		if (ValidaCampos())
		{
			document.frmPesquisa.style.cursor = "wait";
	        document.frmPesquisa.strAcao.value = "P";
	        document.frmPesquisa.intTrocaTitulo.value = "1";
	        document.frmPesquisa.strDiaAtual.value = gstrDiaAtual;
	        document.frmPesquisa.intFormaCalculo.value = intFormaCalculo;
	        document.frmPesquisa.action = "formConsultaCalculadora.asp";
			document.frmPesquisa.submit();
		}
		
	}


/*-----------------------------------------------------------------------
Objetivos: Efetuar o reload da pagina a cada troca de titulo independente do emissor
Premissas: 
Entradas:  Nenhuma
Saída  :   Nenhuma
----------------------------------------------------------------------*/
function CarregaConsultaOutroTitulo() 	
	{
			if (document.frmPesquisa.cboCodigo.value == "") 
			{
				//document.frmPesquisa.action = 'formConsultaCalculadora.asp?strAcao=&strDiaAtual=' + gstrDiaAtual;
			}
			else
			{
				document.frmPesquisa.style.cursor = "wait";
				document.frmPesquisa.strAcao.value = "O";
				document.frmPesquisa.intTrocaTitulo.value = "";
				document.frmPesquisa.strDiaAtual.value = gstrDiaAtual;
				document.frmPesquisa.intFormaCalculo.value = "";
		        	document.frmPesquisa.action = "formConsultaCalculadora.asp";
			//	document.frmPesquisa.action = 'formConsultaCalculadora.asp?strAcao=O&strDiaAtual=' + gstrDiaAtual;
				document.frmPesquisa.submit();
			}
			

	}
	

/*-----------------------------------------------------------------------
Objetivos: Efetuar o reload da pagina a cada troca de titulo do mesmo emissor
Premissas: 
Entradas:  Nenhuma
Saída  :   Nenhuma
-----------------------------------------------------------------------*/
function CarregaTituloDoEmissor()
	{
		document.frmPesquisa.style.cursor = "wait";
		document.frmPesquisa.strAcao.value = "T";
		document.frmPesquisa.intTrocaTitulo.value = "";
		document.frmPesquisa.strDiaAtual.value = "";
		document.frmPesquisa.intFormaCalculo.value = "";
		document.frmPesquisa.action = "formConsultaCalculadora.asp"
	//	document.frmPesquisa.action = 'formConsultaCalculadora.asp?strAcao=T';
		document.frmPesquisa.submit();
	}
