// JavaScript Document

//CONSTANTES

var cstrFormatoMes = 'mmm';	//Exemplo: 'mm' = 01 (padrão); 'mmm' = jan; 'mmmm' = janeiro;
var cstrFormatoAno = '';	//Exemplo: '' = vazio; 'yy' = 08; 'yyyy' = 2008 (padrao)
var cblnExibeAnoAtual = 0;
var cblnPassadosPorUltimo = false;


//VARIAVEIS

var gstrSelAno;



function MontaPagina()
{
	MontaCombo();
	MontaSemiHTML();
	SetAno(gstrSelAno);
}

function MontaCombo()
{
	var xmlAgenda = parent.xmlLoader('xml/Agenda.xml');
	var xmlSemiHTML = parent.xmlLoader('xml/SemiHTML.xml');
	
	var datToday = new Date();
	var strTodaysYear = datToday.getFullYear().toString();
	var strAno;
	var strMain;
	var strItem;
	var arrAno = new Array();
	if (cblnExibeAnoAtual) arrAno.push(strTodaysYear);
	
	var fnCarregaAno = function (pxml, i)
	{
		if (pxml.nodeName == 'Ano')
			strAno = pxml.firstChild.nodeValue;
		return i;
	}
	
	var fnCarregaItem = function (pxml, i)
	{
		strAno = null;
		
		parent.BuscaDados(fnCarregaAno, pxml);
		
		var blnAdd = true;
		for (j = 0; j < arrAno.length; j++)
		{
			if (arrAno[j] == strAno)
			{
				blnAdd = false;
				break;
			}
		}
		
		if (blnAdd)
			arrAno.push(strAno);
		
		return i;
	}
	
	var fnCarregaCombo = function (pxml, i)
	{
		if (pxml.nodeName == 'Main')
			strMain = pxml.firstChild.nodeValue;
		if (pxml.nodeName == 'Item')
			strItem = pxml.firstChild.nodeValue;
		return i;
	}
	
	parent.BuscaDados(fnCarregaItem, xmlAgenda, 'Agenda');
	if (arrAno.length == 0) arrAno.push(strTodaysYear);
	arrAno.sort();
	
	parent.BuscaDados(fnCarregaCombo, xmlSemiHTML, 'SemiHTML,Agenda,ComboAno');
	
	var strItems = '';
	var strSelAno = '';
	for (i = 0; i < arrAno.length; i++)
	{
		if (strSelAno == '' && arrAno[i] >= strTodaysYear) strSelAno = arrAno[i];
		strItems += parent.ReplaceAll(strItem, '@@ANO@@', arrAno[i]);
	}
	
	SetAno(strSelAno);
	document.getElementById('lblCombo').innerHTML = parent.ReplaceAll(strMain, '@@ITEMS@@', strItems);
}

function MontaSemiHTML()
{
	var xmlSemiHTML = parent.xmlLoader('xml/SemiHTML.xml');
	
	var strMain;
	var strItem;
	var strItemHora;
	var strItemVenue;
	var strItemAddress;
	var strMaps;
	var strFormatoData;
	var strFormatoHora;
	
	var strData;
	var strPais;
	var strLocal;
	var strMapsTraducao;
	
	var fnCarregador = function (pxml, i)
	{
		if (pxml.nodeName == 'Main')
			strMain = pxml.firstChild.nodeValue;
		if (pxml.nodeName == 'Item')
			strItem = pxml.firstChild.nodeValue;
		if (pxml.nodeName == 'ItemHora')
			strItemHora = pxml.firstChild.nodeValue;
		if (pxml.nodeName == 'ItemVenue')
			strItemVenue = pxml.firstChild.nodeValue;
		if (pxml.nodeName == 'ItemAddress')
			strItemAddress = pxml.firstChild.nodeValue;
		if (pxml.nodeName == 'Maps')
			strMaps = pxml.firstChild.nodeValue;
		return i;
	}
	
	var fnFormatoData = function (pxml, i)
	{
		if (pxml.nodeName == 'Data')
			strFormatoData = pxml.firstChild.nodeValue;
		if (pxml.nodeName == 'Hora')
			strFormatoHora = pxml.firstChild.nodeValue;
		return i;
	}
	
	var fnTraducao = function (pxml, i)
	{
		if (pxml.nodeName == 'Data')
			strData = pxml.firstChild.nodeValue;
		if (pxml.nodeName == 'Pais')
			strPais = pxml.firstChild.nodeValue;
		if (pxml.nodeName == 'Local')
			strLocal = pxml.firstChild.nodeValue;
		if (pxml.nodeName == 'Maps')
			strMapsTraducao = pxml.firstChild.nodeValue;
		return i;
	}
	
	parent.BuscaDados(fnCarregador, xmlSemiHTML, 'SemiHTML,Agenda,Tabela');
	parent.BuscaDados(fnTraducao, xmlSemiHTML, 'SemiHTML,Agenda,Traducoes,' + parent.gstrSelFlag);
	parent.BuscaDados(fnFormatoData, xmlSemiHTML, 'SemiHTML,FormatoData,' + parent.gstrSelFlag);
	
	strMain = parent.ReplaceAll(parent.ReplaceAll(parent.ReplaceAll(strMain, 
															'@@DATA@@', strData), 
															'@@PAIS@@', strPais), 
															'@@LOCAL@@', strLocal);
	
	strMaps = parent.ReplaceAll(strMaps, '@@COMOCHEGAR@@', strMapsTraducao);
	
	MontaTabela(strMain, strItem, strItemHora, strItemVenue, strItemAddress, strMaps, strFormatoData, strFormatoHora);
}

function MontaTabela(pstrMain, pstrItem, pstrItemHora, pstrItemVenue, pstrItemAddress, pstrMaps, pstrFormatoData, pstrFormatoHora)
{
	var xmlAgenda = parent.xmlLoader('xml/Agenda.xml');
	var xmlMes = parent.xmlLoader('xml/Meses.xml');
	var xmlPais = parent.xmlLoader('xml/Paises.xml');
	
	var strAno;
	var strMes;
	var strDia;
   var strHora;
   var strMin;
	var strPais;
	var strCidade;
	var strLocalName;
   var strVenue;
   var strAddress;
	var strSite;
	var strMaps;
	
	var strPaisName;
	var strPaisFlag;
	var strPaisCodigo;
	var strPaisNameItem;
	var strPaisFlagItem;
	
	var strDiaString;
	var strMesString;
	var strData;
   
   var intHora;
   var strHoraString;
	
	var strMesCodigo;
	var strMesName;
	var strMesAbrev;
	
	var arrItems = new Array();
	
	var fnCarregaPaisItem = function (pxml, i)
	{
		if (pxml.nodeName == 'Codigo')
			strPaisCodigo = pxml.firstChild.nodeValue;
		if (pxml.nodeName == 'Name')
			strPaisNameItem = pxml.firstChild.nodeValue;
		if (pxml.nodeName == 'Flag')
			strPaisFlagItem = pxml.firstChild.nodeValue;
		return i;
	}
	
	var fnCarregaPais = function (pxml, i)
	{
		strPaisCodigo = null;
		strPaisNameItem = null;
		strPaisFlagItem = null;
		
		parent.BuscaDados(fnCarregaPaisItem, pxml);
		
		if (strPaisCodigo == strPais)
		{
			strPaisName = strPaisNameItem;
			strPaisFlag = strPaisFlagItem;
		}
		
		return i;
	}
	
	var fnCarregaMesItem = function (pxml, i)
	{
		if (pxml.nodeName == 'Codigo')
			strMesCodigo = pxml.firstChild.nodeValue;
		if (pxml.nodeName == 'Nome')
			strMesName = pxml.firstChild.nodeValue;
		if (pxml.nodeName == 'Abrev')
			strMesAbrev = pxml.firstChild.nodeValue;
		return i;
	}
	
	var fnCarregaMes = function (pxml, i)
	{
		strMesCodigo = null;
		strMesName = null;
		strMesAbrev = null;
		
		parent.BuscaDados(fnCarregaMesItem, pxml);
		
		if (strMesCodigo == strMes)
		{
			if (cstrFormatoMes == 'mmm')
				strMesString = strMesAbrev;
			else if (cstrFormatoMes == 'mmmm')
				strMesString = strMesName;
			else if (strMes.length == 1)
				strMesString = '0' + strMes;
			else
				strMesString = strMes;
		}
		
		return i;
	}
	
	var fnCarregaLocal = function (pxml, i)
	{
		if (pxml.nodeName == 'Name')
			strLocalName = pxml.firstChild.nodeValue;
		if (pxml.nodeName == 'Venue')
			strVenue = pxml.firstChild.nodeValue;
		if (pxml.nodeName == 'Address')
			strAddress = pxml.firstChild.nodeValue;
		if (pxml.nodeName == 'Site')
			strSite = pxml.firstChild.nodeValue;
		if (pxml.nodeName == 'Maps')
			strMaps = pxml.firstChild.nodeValue;
		if (pxml.nodeName == 'Cidade')
			strCidade = pxml.firstChild.nodeValue;
		return i;
	}
	
	var fnCarregaItem = function (pxml, i)
	{
		if (pxml.nodeName == 'Ano')
			strAno = pxml.firstChild.nodeValue;
		if (pxml.nodeName == 'Mes')
			strMes = pxml.firstChild.nodeValue;
		if (pxml.nodeName == 'Dia')
			strDia = pxml.firstChild.nodeValue;
		if (pxml.nodeName == 'Hora')
			strHora = pxml.firstChild.nodeValue;
		if (pxml.nodeName == 'Min')
			strMin = pxml.firstChild.nodeValue;
		if (pxml.nodeName == 'Pais')
			strPais = pxml.firstChild.nodeValue;
		if (pxml.nodeName == 'Local')
			parent.BuscaDados(fnCarregaLocal, pxml, parent.gstrSelFlag);
		return i;
	}
	
	var fnCarregaAgenda = function (pxml, i)
	{
		strAno = null;
		strMes = null;
		strDia = null;
		strHora = null;
		strMin = null;
		strMes = null;
		strDia = null;
		strPais = null;
		strCidade = null;
		strLocalName = null;
		strVenue = null;
		strAddress = null;
		strSite = null;
		strMaps = null;
		
		parent.BuscaDados(fnCarregaItem, pxml);
		
		if (strAno == GetAno())
		{
			//INSERE DATA
			
			if (strDia.length == 1)
				strDiaString = '0' + strDia;
			else
				strDiaString = strDia;
			
			if (cstrFormatoAno == 'yy')
				strAno = strAno.substring(2);
			
			if (cstrFormatoAno == '')
				strAno = '';
			else
				strAno = '/' + strAno;
			
			
			strMesNum = null;
			strMesExt = null;
			strMesAbr = null;
			
			parent.BuscaDados(fnCarregaMes, xmlMes, 'Meses,' + parent.gstrSelFlag);
			
			strData = parent.ReplaceAll(parent.ReplaceAll(parent.ReplaceAll(pstrFormatoData, '@@DIA@@', strDiaString), 
                                                                                          '@@MES@@', strMesString), 
                                                                                          '@@ANO@@', strAno);
			
			var strItem = parent.ReplaceAll(pstrItem, '@@ITEMDATA@@', strData);
			
         
         //INSERE HORA
         
         if (strHora != null && isNaN(strHora) == false && (intHora = parseInt(strHora)) >= 0 && intHora < 24)
         {
            var strHora24 = intHora.toString();
            //if (strHora24.length == 1) strHora24 = '0' + strHora24;
            
            var strHora12 = intHora % 12;
            if (strHora12 == 0) strHora12 = 12;
            strHora12 = strHora12.toString();
            //if (strHora12.length == 1) strHora12 = '0' + strHora12;
            
            if (strMin == null || isNaN(strMin)) strMin = '00';
            
            strHoraString = parent.ReplaceAll(
                            parent.ReplaceAll(
                            parent.ReplaceAll(
                            parent.ReplaceAll(
                            parent.ReplaceAll(pstrFormatoHora, '@@HORA12@@', strHora12),
                                                               '@@HORA24@@', strHora24),
                                                               '@@MIN@@', strMin),
                                                               '@@AMPM@@', intHora < 12 ? 'AM' : 'PM'),
                                                               '@@AP@@', intHora < 12 ? 'A' : 'P');
                                                               
            strHoraString = parent.ReplaceAll(pstrItemHora, '@@HORA@@', strHoraString);
         }
         else
         {
            intHora = 0;
            strMin = '00';
            strHoraString = '';
         }
         
         strItem = parent.ReplaceAll(strItem, '@@ITEMHORA@@', strHoraString);
         
			
			//INSERE PAIS E CIDADE
			
			strPaisName = '';
			strPaisFlag = '';
			
			parent.BuscaDados(fnCarregaPais, xmlPais, 'Paises,' + parent.gstrSelFlag);
			
			strItem = parent.ReplaceAll(parent.ReplaceAll(parent.ReplaceAll(strItem, '@@PAISFLAG@@', strPaisFlag), '@@PAISNAME@@', strPaisName), '@@CIDADE@@', strCidade);
			
			
			//INSERE LOCAL
			
			var strMapsItem;
			if (strMaps == null || strMaps == 'null')
         {
				strMapsItem = '';
            strMaps = '';
         }
			else
         {
				strMapsItem = pstrMaps;
            strMaps = 'href="' + strMaps + '"';
         }
			
			if (strSite == 'null') strSite = '';
			else strSite = 'href="' + strSite + '"';
         
         if (strVenue == null) strVenue = '';
         else strVenue = parent.ReplaceAll(pstrItemVenue, '@@VENUE@@', strVenue);
         
         if (strAddress == null) strAddress = '';
         else strAddress = parent.ReplaceAll(pstrItemAddress, '@@ADDRESS@@', strAddress);
         
         
         //Verifica se é ultrapassado
            
         var datToday = new Date();
         var strTodaysYear = datToday.getFullYear().toString();
         
         var blnPassed = parseInt(GetAno()) < parseInt(strTodaysYear);
         
         if (strTodaysYear == GetAno())
         {
            blnPassed = (parseInt(strMes) <= datToday.getMonth() || (parseInt(strMes) == datToday.getMonth() + 1 && parseInt(strDia) < datToday.getDate()))
         }
			
			strItem = parent.ReplaceAll(
                   parent.ReplaceAll(
                   parent.ReplaceAll(
                   parent.ReplaceAll(
                   parent.ReplaceAll(
                   parent.ReplaceAll(
                   parent.ReplaceAll(strItem, '@@ITEMURL@@', strSite), 
                                              '@@ITEMLOCAL@@', strLocalName), 
                                              '@@ITEMVENUE@@', strVenue), 
                                              '@@ITEMADDRESS@@', strAddress), 
                                              '@@MAPS@@', strMapsItem),
                                              '@@MAPSURL@@', strMaps),
                                              '@@PASSED@@', blnPassed ? 'Passed' : '');
                                              
         blnPassed = blnPassed && cblnPassadosPorUltimo;
         
			strItem = strMes + '|' + strDia + '|' + intHora.toString() + '|' + strMin + '|' + blnPassed.toString() + '|' + strItem;
			
			arrItems.push(strItem);
		}
		return i;
	}
	
	parent.BuscaDados(fnCarregaAgenda, xmlAgenda, 'Agenda');
	
	arrItems.sort(SortAgenda);
	
	var strItems = '';
	for (i = 0; i < arrItems.length; i++)
	{
		var arrSplit = arrItems[i].split('|');
		
		strItems += arrSplit[5];
	}
	
	document.getElementById('divTabela').innerHTML = parent.ReplaceAll(pstrMain, '@@ITEMS@@', strItems);
}

function SortAgenda(a, b)
{
	var arra = a.split('|');
	var arrb = b.split('|');
	
	var ames = parseInt(arra[0]);
	var adia = parseInt(arra[1]);
   var ahora = parseInt(arra[2]);
   var amin = parseInt(arra[3]);
   var apeso = arra[4] == 'true' ? 50000000 : 0;
	var bmes = parseInt(arrb[0]);
	var bdia = parseInt(arrb[1]);
   var bhora = parseInt(arrb[2]);
   var bmin = parseInt(arrb[3]);
   var bpeso = arrb[4] == 'true' ? 50000000 : 0;
   
   //var datToday = new Date();
	//var strTodaysYear = datToday.getFullYear().toString();
	
   //if (strTodaysYear == GetAno())
   //{
   //   if (ames <= datToday.getMonth() || (ames == datToday.getMonth() + 1 && adia < datToday.getDate()))
   //      intPesoa = 50000000;
   //   if (bmes <= datToday.getMonth() || (bmes == datToday.getMonth() + 1 && bdia < datToday.getDate()))
   //      intPesob = 50000000;
   //}
   
   return (ames * 1000000 + adia * 10000 + ahora * 100 + amin + apeso) - (bmes * 1000000 + bdia * 10000 + bhora * 100 + bmin + bpeso);
}

function ExibeCombo(pblnExibe)
{
	document.getElementById('lblCombo').style.visibility = pblnExibe ? 'visible' : 'hidden';
}

function MudarAno(pstrAno)
{
	//ExibeCombo(false);
	SetAno(pstrAno);
	MontaSemiHTML();
}

function SetAno(pstrAno)
{
	var lnk = document.getElementById('lnk' + gstrSelAno);
	if (lnk) lnk.className = 'LinkAno';
	gstrSelAno = pstrAno; //document.getElementById('txtCombo').value;
	lnk = document.getElementById('lnk' + gstrSelAno);
	if (lnk) lnk.className = 'LinkSelAno';
}

function GetAno()
{
	return gstrSelAno; //document.getElementById('txtCombo').value;
}
