/********************************************************************************
 Objetivo...........: Funções relacionadas ao sistema BFX
 Autor..............: Viviane dos Santos Mariano
 Data...............: 08/11/2004
 Comentários........: 
 Alterado por.......: 
 Data...............: 
 Motivo da Alteração: 
---------------------------------------------------------------------------------
 Componentes usados.: Nenhum
 Entradas...........: Nenhum parâmetro de entrada
 Retorno............: Nenhum parâmetro de retorno
*********************************************************************************/

	/**************************************************************
					V A R I Á V E I S   G L O B A I S 
	**************************************************************/
	
	var gblnDebPad;			// Controle especial de debênture padronizada para a página de busca DEB
	var gstrTipPag;			// Controle especial dos tipos de páginas(consultas específicas)
	var gblnExibirBotoes;	// Controla tipo de rodapé a ser exibido nas popups
	gblnDebPad = true;
	gstrTipPag = "";
	gblnExibirBotoes = false;
	
	/**************************************************************
							F U N Ç Õ E S
	**************************************************************/
	
	
	/**************************************************************
	' Objetivo  : Executar as validações necessárias para pesquisa por data e submeter form
	' Premissas : Nenhuma
	' Entradas  : Nenhuma
	' Retorno   : Nenhum
	'*************************************************************/
	function ValidarDadosPesquisaData(){
		if (ValidarData(document.forms[0].cboDia, document.forms[0].cboMes, document.forms[0].cboAno, "") == true) {
			document.forms[0].submit();
		}
	}
	
	
	/**************************************************************
	' Objetivo  : Abrir janela do tipo "popup"
	' Premissas : Nenhuma
	' Entradas  : strUrl     - Link da página
				  strNome    - Nome da página
				  intLargura - Largura do popup
				  intAltura  - Altura do popup
	' Retorno   : Nenhum
	'*************************************************************/
	function AbrirPopup(strUrl, strNome, intLargura, intAltura){
		// Quando não informados os parâmetros, deve-se assumir o valor padrão 
		if (intLargura=='') intLargura = 750;
		if (intAltura=='') intAltura = 500;
		window.open(strUrl, strNome, 'menubar=no, resizable=no, scrollbars=yes, status=no, titlebar=yes, toolbar=no, width=' + intLargura + ', height=' + intAltura + ', top=0, left=10');
	}
	
	
	/**************************************************************
	' Objetivo  : Posicionar combo box de emissores a partir da seleção de papel feita no combo 'cboCodEmissor'
	' Premissas : Nenhuma
	' Entradas  : objComboCodigo - Objeto da combo box
	' Retorno   : Nenhum
	'*************************************************************/
	function PosicionarComboEmissores(objComboCodigo){
		var intLinha;		// Contador de linhas para "combo box"
		var arrSocEmss;		// array com cada elemento da chave
		var strRazaoSocial;	// razão social selecionada no combo
		var strCodSocEmss;	// valor do combo código do emissor
		var blnAchou;		// flag que determina se encontrou  a razao social
		var objForm;		// Form onde está inserido o combo clicado
		
		intLinha		= 0;
		strRazaoSocial	= "";
		strCodSocEmss	= "";
		blnAchou		= false;
		
		objForm = document.forms[0];
		
		strCodSocEmss = objComboCodigo.value;
		
		if (strCodSocEmss == '') return false;
		
		arrSocEmss = strCodSocEmss.split('|');
		
		//recupera a razão social
		strRazaoSocial = arrSocEmss[2];
		
		window.status = 'Por favor aguarde.';
		
		//procura razao social na combo de emissor
		while ( (intLinha < objForm.cboEmissor.length) && ( !blnAchou ) ){
			if ( objForm.cboEmissor.options[intLinha].text == strRazaoSocial ){
					objForm.cboEmissor.options[intLinha].selected = true;
					blnAchou = true;
			}
			intLinha++;
		}
		window.status = '';
	}
	
	
	/**************************************************************
	' Objetivo  : Filtrar combo box de códigos, deixando somente aqueles que pertencem ao emissor selecionado   
	' Premissas : Nenhuma
	' Entradas  : objComboEmissores - Objeto da combo de emissores
				  strTipoTitulo     - Tipo de Título
	' Retorno   : Nenhum
	'*************************************************************/
	function FiltrarComboCodigos(objComboEmissores, strTipoTitulo){
		var strEmissor;					// Armazenar propriedade 'value' do combo de emissores
		var arrEmissor;					// Resultado do split no value do combo
		var objForm;					// Form onde está inserido o combo clicado
		var strUrl;						// Montar URL da página ASP que retorna o XML
		var intConta;					// Contador
		var objTesteErro;				// Verifica se houve erro na carga do XML
		var objDOMDoc;					// Objeto DOMDocument para armazenamento do recordset de papéis na forma de XML
		var objDOMNodes;				// Nó XML do nível "Emissores"
		var objDOMNode;					// Nó XML do nível de detalhe do emissor
		var objComboCodigos;			// Referência ao objeto combo do form
		var arrDados = new Array(3);	// Dados do XML que serão utilizados na composição da propriedade 'value' do combo
		
		// Por padrão, todos os combos de papéis deveriam ser chamados de 'cboCodEmissor', mas há exceções
		if (document.forms[0].cboCodSocEmss) objComboCodigos = document.forms[0].cboCodSocEmss;
		else if (document.forms[0].cboCodEmissor) objComboCodigos = document.forms[0].cboCodEmissor;
		else if (document.forms[0].cboCodigo) objComboCodigos = document.forms[0].cboCodigo;
		else if (objComboCodigos==undefined) return false;
		
		// Obter sigla do emissor selecionado
		strEmissor = objComboEmissores.value;
		if (strEmissor == '' || strEmissor == 'S') strEmissor="|";
		arrEmissor = strEmissor.split('|');
		
		// Verificar se o XML dos papéis já foi carregado
		if(gstrTipPag){
			strUrl="FormConsultaListaMM.asp?strTipPag=" + gstrTipPag + "&strSocEmi=" + arrEmissor[1];
		}else{
			strUrl = "ListaCodSocEmss.asp?op_titulo=" + strTipoTitulo + "&strRazSoci=" + arrEmissor[0];
		}
		objDOMNodes = null;
		objDOMNode = null;
		objTesteErro = null;
		objDOMDoc = document.getElementById('xmlSourceEmissor');
		objDOMDoc.async = false;
		objDOMDoc.src = strUrl; 
		
		// Verificar se houve erro na carga do XML
		objTesteErro = objDOMDoc.selectSingleNode("//Erro/Descricao");
		if (objTesteErro != null) {
			alert("Ocorreu um erro durante a carga dos papéis: " + objTesteErro.text);
			return false;
		}
		
		// Zerar combo
		objComboCodigos.length = 1;
		objComboCodigos.options[0] = new Option;
		objComboCodigos.options[0].text = "Selecione";
		objComboCodigos.options[0].value = "";
		
		// Início da carga do combo
		intConta = 0;
		window.status = 'Por favor, aguarde.';
		objDOMNodes = objDOMDoc.selectNodes("//Emissores/Emissor");
		
		while (intConta < objDOMNodes.length){
			objDOMNode = objDOMNodes.item(intConta);
			arrDados[0] = objDOMNode.selectSingleNode("Nome_Soc_Emss").text;
			arrDados[1] = objDOMNode.selectSingleNode("Cod_Esp").text;
			arrDados[2] = objDOMNode.selectSingleNode("Razao_Social").text;
			arrDados[3] = objDOMNode.selectSingleNode("Deb_Pad").text;
			intConta++;
			objComboCodigos.length = intConta + 1;
			objComboCodigos.options[intConta] = new Option;
			objComboCodigos.options[intConta].value = arrDados[0] + "|" + arrDados[1] + "|" + arrDados[2];
			if (gblnDebPad) {
				if (arrDados[3]=="1"){
					arrDados[0]='* ' + arrDados[0];}
				else {
					arrDados[0]='   ' + arrDados[0];
				}
			}
			objComboCodigos.options[intConta].text = arrDados[0] + "-" + arrDados[1];
		}
		window.status = '';
	}
	
	
	/********************************************************************************
	Objetivo  : Montar a "combo box" da Busca por Emissor
	Premissas : Nenhuma
	Entradas  : Nenhuma
	Retorno   : Nenhum
	********************************************************************************/
	function FiltrarComboEmissor(){
		var intLinha;		// Contador de linhas para "combo box"
		var arrSocEmss;		// array com cada elemento da chave
		var strRazaoSocial;	// razão social selecionada no combo
		var strCodSocEmss;	// valor do combo código do emissor
		var blnAchou;		// flag que determina se encontrou  a razao social
		var objFormulario;	// variável que armazena nome do formulário
		
		intLinha		= 0;
		strRazaoSocial	= "";
		strCodSocEmss	= "";
		blnAchou		= false;
		objFormulario	= document.forms[0];
		if (objFormulario.cboCodSocEmss) strCodSocEmss = objFormulario.cboCodSocEmss.value;
		else if (objFormulario.cboCodEmissor) strCodSocEmss = objFormulario.cboCodEmissor.value;
		else if (objFormulario.cboCodigo) strCodSocEmss = objFormulario.cboCodigo.value;
		else if (strCodSocEmss=="") return false;
		
		arrSocEmss = strCodSocEmss.split('|');
		//recupera a razão social
		strRazaoSocial = arrSocEmss[2];
		window.status = 'Por favor aguarde.';
		// procura razao social na combo de emissor
		while ( (intLinha < objFormulario.cboEmissor.length) && ( !blnAchou ) ){
			if ( objFormulario.cboEmissor.options[intLinha].text == strRazaoSocial ){
				objFormulario.cboEmissor.options[intLinha].selected = true;
				blnAchou = true;
			}
			intLinha++;
		}
		window.status = '';
	}
	
	
	/**************************************************************
	 Objetivo  : Função para recarregar a página, trocando os parâmetros
	 Premissas : A página que utilizar essa função deve ter definida a função JavaScript 'GerarURL'
	 Entradas  : Nenhuma
	 Retorno   : Nenhum
	'*************************************************************/
	function ValidarEnviarDados(){
		document.frmFechDia.action = GerarURL();
		document.frmFechDia.method = 'post';
		document.frmFechDia.submit();
	}
	
	
	/**************************************************************
	 Objetivo  : Modificar dinamicamente o rodapé das janelas do tipo popup quando houver necessidade de navegação
	 Premissas : Nenhuma
	 Entradas  : Nenhuma
	 Retorno   : Nenhum
	**************************************************************/
	function ExibirRodapeBotoes(){
		document.getElementById("DivRodapePopup").innerHTML =	"<div style='width: 50%; float: left'>" + 
																"	<a href='#' onClick='javascript:history.go(-1);'><img src='./Imagem/volta.gif'></a>" + 
																"</div>" +
																"<div style='width: 50%; float: right; text-align: right'>" +
																"	<a href='javascript:window.close();'><img src='./Imagem/fechar.gif'></a>" +
																"</div>" + 
																"<p class='txtRodape' style='margin-top: 10px'><sup>&copy;</sup>&nbsp;<a class='Copyright' href='/pt-br/termos-e-condicoes-de-uso.aspx?idioma=pt-br'>Copyright Bovespa.</a> Todos os direitos reservados.</p>";
	}
	
	
	/**************************************************************
	Objetivo  : Validar a Data Selecionada
	Premissas : Nenhuma
	Entradas  : objDia  - Objeto que contém o Dia
			    objMes  - Objeto que contém o Mês
			    objAno  - Objeto que contém o Ano
			    objData - Obejto que contém a Data Completa dd/mm/aaaa
	Retorno   : true/false
	**************************************************************/
	function ValidarData(objDia, objMes, objAno, objData){
		var strData;	// Armazena a Data a ser validada
		var objErr;		//Localizar possíveis erros
		try {
			if (typeof(objData) == "object") {
				strData = objData.value;
				if (VerificarData(strData) == false){
					alert("Data inválida!"); 
					objData.focus(); 
					return (false); 
				}
			}
			else {
				if (objDia.value == ""){
					alert("Informe o Dia!"); 
					objDia.focus(); 
					return (false);
				}
				else if (objMes.value == "") {
					alert("Informe o Mês!"); 
					objMes.focus(); 
					return (false);
				}
				else if (objAno.value == "") {
					alert("Informe o Ano!"); 
					objAno.focus(); 
					return (false);
				}
				else {
					strData = RetornarStrDir("00" + objDia.value, 2) + "/" + RetornarStrDir("00" + objMes.value, 2) + "/" + objAno.value;
					if (VerificarData(strData) == false) {
						alert("Data inválida!"); 
						objDia.focus(); 
						return (false); 
					}
				}
			}
			return (true);
		}
		catch(objErr) {
			alert(objErr.toString());
		}
	}
	
	
	/**************************************************************
	Objetivo  : Validar a Data Informada
	Premissas : Nenhuma
	Entradas  : strData - string Data
	Retorno   : true/false
	**************************************************************/
	function VerificarData(strData){
		var strDia;				// Armazena o valor do dia
		var strMes;				// Armazena o valor do mes
		var strAno;				// Armazena o valor do ano
		var strInicioAno;		// Armazena o valor do inicio do ano
		var intCont;			// Contador
		var objErr;				//Localizar possíveis erros
		
		try {
			if (strData == null) { return false }
			if (strData.length != 10) { return false }
			for (intCont=0; intCont<strData.length; intCont++) {
				if ((intCont == 2) || (intCont == 5)) {
					if (strData.charAt(intCont) != "/") { return false }
				}
				else {
					if ((strData.charAt(intCont) < "0") || (strData.charAt(intCont) > "9")) { return false }
				}
			}
			strDia = strData.charAt(0) == "0" ? parseInt(strData.substring(1,2)) : parseInt(strData.substring(0,2));
			strMes = strData.charAt(3) == "0" ? parseInt(strData.substring(4,5)) : parseInt(strData.substring(3,5));
			strInicioAno = strData.charAt(6) == "0" ? (strData.charAt(7) == "0" ? (strData.charAt(8) == "0" ? 9 : 8) : 7) : 6;
			strAno = parseInt(strData.substring(strInicioAno, 10));
			
			if (strDia == 0) { return false }
			if (strMes == 0 || strMes > 12) { return false }
			if (strMes == 1 || strMes == 3 || strMes == 5 || strMes == 7 || strMes == 8 || strMes == 10 || strMes == 12) {
				if (strDia > 31) { return false }
			}
			else {
				if (strMes == 4 || strMes == 6 || strMes == 9 || strMes == 11) {
					if (strDia > 30) { return false }
				}
				else {
					if (strAno%4 != 0) {
						if (strDia > 28) { return false }
					}
					else {
						if (strDia > 29) { return false }
					}
				}
			}
			if (strAno < 1900 || strAno > 9999) { return false }
			return true;
		}
		catch(objErr) {
			alert(objErr.toString());
		}
	}
	
	
	/**************************************************************
	Objetivo  : Retorna os Caracteres que estão a Direita da posição informada
	Premissas : Nenhuma
	Entradas  : strValor       - Valor
			    intQtdCaracter - Quantidade de Caracteres a Direita
	Retorno   : Nenhum
	*************************************************************/
	function RetornarStrDir(strValor, intQtdCaracter){
		var objErr;	//Localizar possíveis erros
		try {
			return strValor.substr((strValor.length-intQtdCaracter),intQtdCaracter);
		}
		catch (objErr){
			alert(objErr.toString());
		}
	}
