/** - Arquivo de leitura e apresentação do ajax FINANSite. */

/** -- construtor da classe
* @param tab índice da tabela
* @param coluna índice do ponto de partida no xml
*/
function Cotacao(tab, coluna)
{
	this.ini_coluna = coluna;
	this.tabela_ini = tab;
}

//Cotacao.prototype.primeira_vez = true;
Cotacao.prototype.xmlHttp = undefined;
Cotacao.prototype.xmlDoc = undefined;
Cotacao.prototype.ini_coluna = 0;
Cotacao.prototype.prefixo_i = 0;
Cotacao.prototype.tabela_ini = 0;
Cotacao.prototype.bMaxMin = false;
Cotacao.prototype.nome_arquivos = new Array();

Cotacao.prototype.habilitaMaxMin = function()
{
	this.bMaxMin = true;
}

Cotacao.prototype.pregaoAberto = function()
{
	if(window.XMLHttpRequest) 
	{
		if (this.xmlDoc.childNodes[0]){
			var pregao_aberto=this.xmlDoc.childNodes[0].childNodes[2].attributes[0].value;
		}
	}
	else if(window.ActiveXObject) 
	{
		if (this.xmlDoc.childNodes[1]){
			var pregao_aberto=this.xmlDoc.childNodes[1].childNodes[2].attributes[0].value;
		}
	}

	if (pregao_aberto == 1)
	{
		return true;
	}
	else
	{
		return false;
	}
}

Cotacao.prototype.escreveXMLMaxMin = function()
{
	if (this.pregaoAberto()){
		var msgobj=this.xmlDoc.getElementsByTagName("ATIVO");
		var hora=this.xmlDoc.getElementsByTagName("HORA");
		var data_xml=this.xmlDoc.getElementsByTagName("DATA");
	
		for (i=0;i<msgobj.length;i++)
		{
			for (j=this.ini_coluna;j<msgobj[0].childNodes.length;j++)
			{
		        var nome_campo_xml = msgobj[i].childNodes[j].nodeName;
				if (msgobj[i].childNodes[j].firstChild)
				{
					var valor_mostra = msgobj[i].childNodes[j].firstChild.data;
				}
				else
				{
					var valor_mostra = "";
				}

				if (nome_campo_xml == "QTT" && valor_mostra != "")
				{
					campo_id = "t"+this.tabela_ini+"l"+(i+1)+"c"+(j-2);
					
					valor_mostra_int = parseInt(valor_mostra);
					valor_mostra_int_k = valor_mostra_int/1000;
					if (valor_mostra_int_k > 1)
					{
						valor_mostra_int_m = valor_mostra_int_k/1000;	
						if (valor_mostra_int_m > 1)
						{
							valor_mostra_int_b = valor_mostra_int_m/1000;
							if (valor_mostra_int_b > 1)
							{
								valor_mostra = valor_mostra_int_b+"B";
							}
							else
							{
								valor_mostra = valor_mostra_int_m+"M";
							}
						}
						else
						{
							valor_mostra = valor_mostra_int_k+"k";
						}
					}
					else
					{
						valor_mostra = valor_mostra_int;
					}
				}
				else
				{
					campo_id = "t"+this.tabela_ini+"l"+(i+1)+"c"+(j-1);
				}
				escrever_campo(campo_id, valor_mostra);
			}
		}
			
		data_atualizado = data_xml[0].firstChild.data;
		campo_id_data = "id_data_t"+this.tabela_ini;
		escrever_campo(campo_id_data, data_atualizado);
		hora_atualizado = hora[0].firstChild.data;
		campo_id_hora = "id_hora_t"+this.tabela_ini;
		escrever_campo(campo_id_hora, hora_atualizado);
	}
}

Cotacao.prototype.escreveXMLCotacao = function()
{
	var msgobj=this.xmlDoc.getElementsByTagName(tag_ativos);

	for (i=0;i<msgobj.length;i++)
	{
		if (msgobj[i].firstChild)
		{
			for (j=this.ini_coluna;j<msgobj[0].childNodes.length;j++)
			{
				if (this.ini_coluna == 0)
				{
					campo_id = "t"+this.tabela_ini+"l"+(i+1)+"c"+(j);
				}
				else
				{
					campo_id = "t"+this.tabela_ini+"l"+(i+1)+"c"+(j-1);
				}

				if(msgobj[i].childNodes[j].firstChild)
				{
			        var nome_campo_xml = msgobj[i].childNodes[j].nodeName;
					var valor_mostra = msgobj[i].childNodes[j].firstChild.data;		
					if (nome_campo_xml == campo_variacao)
					{
						cor_variacao = pegaCor(valor_mostra);
						valor_mostra = '<SPAN CLASS='+cor_variacao+'>'+valor_mostra +'<img src=/q10/setas/'+cor_variacao+'.gif align=middle></SPAN>';
					}
					escrever_campo(campo_id, valor_mostra);
				}
				else
				{
					escrever_campo(campo_id, "-");
				}
			}
		}
		else
		{
			for (j=this.ini_coluna;j<msgobj[0].childNodes.length;j++){
				campo_id = "t"+this.tabela_ini+"l"+(i+1)+"c"+(j-1);
				escrever_campo(campo_id, "-");
			}
		}
	}
}

Cotacao.prototype.createXMLHttpRequest = function()
{
   try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
   try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
   try { return new XMLHttpRequest(); } catch(e) {}
   alert("XMLHttpRequest not supported");
   return null;
}

Cotacao.prototype.ler_xml = function(url) 
{
	var metodo = "GET";
	var _this = this;
	
	this.xmlHttp = this.createXMLHttpRequest();

	str_http = url.substr(0, 6);
	if (str_http == "http:/")
	{
		metodo = "POST";	
	}
	
	this.xmlHttp.onreadystatechange = function(){_this.esperaXML()};
	
	if(window.XMLHttpRequest) 
	{
		this.xmlHttp.open(metodo, url, true);
	}
	else if(window.ActiveXObject) 
	{
		gambi_ie_dt = new Date();
		gambi_ie_dt_hr = gambi_ie_dt.getTime();
		url += "?hora="+gambi_ie_dt_hr;
		this.xmlHttp.open(metodo, url, true);
	}

	this.xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=ISO-8859-1");
	this.xmlHttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");

	this.xmlHttp.setRequestHeader("Expires","0");
	this.xmlHttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
	this.xmlHttp.setRequestHeader("Pragma", "no-cache");

	this.xmlHttp.send(null);
}

Cotacao.prototype.escreve = function() 
{
	if (this.bMaxMin == true)
	{
		this.escreveXMLMaxMin();		
	}
	else
	{
		this.escreveXMLCotacao();
	}
	
}

Cotacao.prototype.esperaXML = function() 
{
/**
* 0 - Não iniciado (Uninitialised)
* 1 - Carregando (Loading)
* 2 - Carregado (Loaded)
* 3 - Interativo (Interactive)
* 4 - Completado (Completed)
*/

	if (this.xmlHttp.readyState != 4)
	{
		return;
	}
	else
	{
		 if (this.xmlHttp.status == 200)
		 {
			this.xmlDoc = null;
			this.xmlDoc = this.xmlHttp.responseXML;

			this.escreve();
		}
	}
}

Cotacao.prototype.carregar = function(arq_i)
{
	this.prefixo_i = arq_i;
	if (this.nome_arquivos[arq_i] != null) 
	{
		this.ler_xml(this.nome_arquivos[arq_i]);
	}
	else
	{
		this.ler_xml(nome_arquivos[arq_i]);
	}
}

// ----------------------------------------------------------------------------------
// funções de apresentação por innerhtml

var nome_arquivos = new Array();
var DHTML = (document.getElementById || document.all || document.layers);
var xmlDocWin;
var ini_coluna_win;
function pegarDiv(nome)
{
	if (document.getElementById)
	{
		this.obj = document.getElementById(nome);
	}
		else if (document.all)
	{
		this.obj = document.all[nome];
	}
		else if (document.layers)
	{
		this.obj = document.layers[nome];
	}
}

function escrever_campo(id,texto) 
{
  if (!DHTML) return;
  var x = new pegarDiv(id);
  if (x.obj) 
  {
	  x.obj.innerHTML = texto;
  }
  return;
}

function pegaCor(valor) 
{
	cor='semvar';
	temp = valor.replace(",", ".");
	if(parseFloat(temp) == 0)
		cor='semvar';
	else if(parseFloat(temp) > 0)
		cor='varpos';
	else if(parseFloat(temp) < 0)
		cor='varneg';
 	return cor;
}

