// ANO/MÊS do último sorteio 
var maiorAno = 0;
var maiorMes = 0; 
// para detectar real mudança de ano
var anoAnt = 0;
// guardados após o 1º request
var primeiroRequest = true;
function onBodyLoad() { sendRequest(); } 

// Evento
function mudancaAno(ano) {
   if (ano == anoAnt) return;
   anoAnt = ano;
   activaButoes(ano);
   for (var mes=1; mes<=12; mes++)
      document.getElementById('s' + mes).checked = false;
   clearDocument();
   outMsg("Clique em cima no mês que deseja!");  
}

function outMsg(msg) {
   var tabelasPremios = document.getElementById("display").getElementsByTagName("table");
   tabelasPremios[0].getElementsByTagName("tr")[0].getElementsByTagName("td")[0].innerHTML =
   tabelasPremios[1].getElementsByTagName("tr")[0].getElementsByTagName("td")[0].innerHTML = 
   "<span style='background-color:#FFFF66'>" + msg + "</span>";
}

var http = createRequestObject();
function createRequestObject() {  
   var xmlhttp;
   try { xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); }
   catch(e) {
      try { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }
      catch(e) { xmlhttp=null; }
   }
   if(!xmlhttp&&typeof XMLHttpRequest!="undefined") { xmlhttp=new XMLHttpRequest(); }
   return  xmlhttp;
}

function sendRequest(mes) {
   var ano = document.getElementById("selAno").value;
   try {
      http.open("POST", "../srv/premios.jsp?ANO=" + ano + "&MES=" + mes, true);
      http.setRequestHeader('Content-Type',  "text/xml");
      http.onreadystatechange = handleResponse;
	  http.send(""); 
   }
   catch(e){ 
      alert('(1)-Problemas na comunicação. Tente mais tarde por favor.');
   }
   finally{}
   desactivaButoes();
   clearDocument();
   outMsg("Aguarde por favor ...");
}

function handleResponse() {
   try {
      if((http.readyState == 4)&&(http.status == 200)){
         var response = http.responseXML.documentElement;
		 var eventosBolas = response.getElementsByTagName("ID")[0].getElementsByTagName("EVT");
		 var eventosEstrelas = response.getElementsByTagName("ID")[1].getElementsByTagName("EVT");
		 var tabelasPremios = document.getElementById("display").getElementsByTagName("table");
		 //clearDocument(tabelasPremios);
		 outMsg("&nbsp;"); // limpa primeiro as mensagens
		 fillDocument(tabelasPremios, eventosBolas, eventosEstrelas);
		 var ano = eventosBolas[0].getElementsByTagName("ANO")[0].firstChild.nodeValue;
		 var mes = eventosBolas[0].getElementsByTagName("MES")[0].firstChild.nodeValue;
		 if (primeiroRequest) { 
		    primeiroRequest = false; maiorAno = ano; maiorMes = mes;
			document.getElementById("selAno").value = maiorAno;
			document.getElementById('s' + maiorMes).checked = true;
		 }
		 activaButoes(ano);
		
      }
   }
   catch(e){  
      alert('(2)-Problemas na comunicação. Tente mais tarde por favor.');
   }
   finally{}
}

function fillDocument(docTabelas, xmlEvtsBolas, xmlEvtsEstrelas) {
   var nSemanas=xmlEvtsBolas.length;
   for (var semana=0; semana<nSemanas; semana++) {
	  // DATA (evento, tem sempre)
	  var ano = xmlEvtsBolas[semana].getElementsByTagName("ANO")[0].firstChild.nodeValue;
	  var mes = xmlEvtsBolas[semana].getElementsByTagName("MES")[0].firstChild.nodeValue;
	  var dia = xmlEvtsBolas[semana].getElementsByTagName("DIA")[0].firstChild.nodeValue;
	  var data = "" + dia + "/" + mes + "/" + ano; 
	  // CHAVE (pode ainda não ter e nesse caso também não tem prémios)
	  var chave = "";
	  var bolas = xmlEvtsBolas[semana].getElementsByTagName("ORD");
	  for (var i=0; i<bolas.length; i++) {
	     var bola = bolas[i].getElementsByTagName("VLR")[0].firstChild.nodeValue;
		 if (bola < 10) chave += "0";
		 chave += bola + " ";
	  }
      var estrelas = xmlEvtsEstrelas[semana].getElementsByTagName("ORD");
	  chave += " + ";
      for (var i=0; i<estrelas.length; i++) 
	     chave += estrelas[i].getElementsByTagName("VLR")[0].firstChild.nodeValue + " ";
      // PRÉMIOS (podem ainda não ter saído, apesar de já poder ter saído a chave)
	  var docTab = docTabelas[nSemanas-semana-1]; // 0..4
	  docTab.getElementsByTagName("tr")[0].getElementsByTagName("td")[0].innerHTML =
	  		"Chave (" + data + "): " + "<strong>" + chave + "</strong>";
      var xmlTab = xmlEvtsBolas[semana].getElementsByTagName("POS"); // 0..4;
      for (var prmI=1; prmI<=xmlTab.length; prmI++) { 
         docTab.getElementsByTagName("tr")[prmI+1].getElementsByTagName("td")[2].innerHTML = 
   	           getNum(xmlTab[prmI-1].getElementsByTagName("QT")[0].firstChild.nodeValue);
         docTab.getElementsByTagName("tr")[prmI+1].getElementsByTagName("td")[3].innerHTML =
   	           getNum(xmlTab[prmI-1].getElementsByTagName("V1INT")[0].firstChild.nodeValue);
         docTab.getElementsByTagName("tr")[prmI+1].getElementsByTagName("td")[4].innerHTML =
   	           getEuros(xmlTab[prmI-1].getElementsByTagName("VLR")[0].firstChild.nodeValue);
      }
   }
}

function clearDocument() {
	var docTabelas = document.getElementById("display").getElementsByTagName("table");
	for (var semana=0; semana<5; semana++) { 
	   var docTab = docTabelas[semana];
	   docTab.getElementsByTagName("tr")[0].getElementsByTagName("td")[0].innerHTML = "&nbsp;"; 
	   for (var prmI=1; prmI<=12; prmI++) { 
	      docTab.getElementsByTagName("tr")[prmI+1].getElementsByTagName("td")[2].innerHTML = "&nbsp;"; 
   	      docTab.getElementsByTagName("tr")[prmI+1].getElementsByTagName("td")[3].innerHTML = "&nbsp;";
   	      docTab.getElementsByTagName("tr")[prmI+1].getElementsByTagName("td")[4].innerHTML = "&nbsp;";
   	   }
	}
}

function desactivaButoes() {
   for (var mes=1; mes<=12; mes++)
      document.getElementById('s' + mes).disabled = true;
}
function activaButoes(ano) {
   //alert("ano: " + ano );
   if ( (ano<2004) || (ano>maiorAno) ) { desactivaButoes(); return; }
   //activa os Butoes
   for (var mes=1; mes<=12; mes++)
      document.getElementById('s' + mes).disabled = false;
   if (ano == 2004) { document.getElementById('s1').disabled = true; return; }
   if (ano == maiorAno) 
      for (var mes=1; mes<=12; mes++) 
	     if (mes > maiorMes) document.getElementById('s' + mes).disabled = true;
}
function getEuros(valor) {
   // Além de converter, trata a notação científica
   // Ex: 4.7E5 passa para 470000
   valor = parseFloat(valor);
   // fixar com 2 decimais
   valor = valor.toFixed(2);
   // separador de 1000
   return addCommas(valor);
}

function getNum(valor) {
   return addCommas(valor);
}

function addCommas(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}

function inspect(elm){
  var str = "";
  for (var i in elm){
    str += i + ": " + elm.getAttribute(i) + " ....... ";
  }
  alert(str);
}