// NOVO CODIGO 2005-02-09

//globais
var Eventos				= new Events();
var months				= new Array();

var today			= new Date();
var today_year		= today.getFullYear();
var today_quarter	= Math.floor(today.getMonth()/3)+1;
var year_shown		= today_year;
var quarter_shown	= today_quarter;
var contentDestination = null;
var desenhei_eventos = 0;
function draw() {
	desenha_calendario();
	if (!desenhei_eventos++) {  // só faz uma vez
		desenha_lista_eventos();
	}
}

function desenha_lista_eventos () {
	
	// pegar todos os eventos cuja data_inicio >= data_hoje 
	j = 0;
	tem_evento_futuro = false;
	for (i = 0; i < Eventos.events.length ; i++) {
		if (Eventos.events[i].eh_futuro()) {
			tem_evento_futuro = true;
			if (document.getElementById(Eventos.events[i].event_key)) {
				if (j == 0) { 
					j++;
					document.getElementById("proximo_evento_titulo").innerHTML += Eventos.events[i].description;
					var strHora = new String(FormatDateTime(Eventos.events[i].date_begin.string, "%H:%M"));
					var strHourFormat = (strHora != "00:00" ? " - %H:%M" : "" );
					document.getElementById("proximo_evento_data").innerHTML += FormatDateTime(Eventos.events[i].date_begin.string, Eventos.events[i].idioma == "enu" ? "%m/%d/%y"+strHourFormat : "%d/%m/%y"+strHourFormat );
					document.getElementById("proximo_evento_local").innerHTML += Eventos.events[i].local;
					document.getElementById("proximo_evento_link").href = Eventos.events[i].link;
					document.getElementById("proximo_evento_link_vcal").href = Eventos.events[i].link_vcal;

					if (document.getElementById('anexo_'+Eventos.events[i].event_key)){
						document.getElementById('proximo_evento_arquivo_anexo').innerHTML = document.getElementById('anexo_'+Eventos.events[i].event_key).innerHTML;
						document.getElementById('proximo_evento_arquivo_anexo').style.display = 'block';
					}

				} else {
					document.getElementById("quarter_shown").style.display = "block";
					document.getElementById("quarter_shown").innerHTML += document.getElementById(Eventos.events[i].event_key).innerHTML;

					// acerta a hora sumindo com ela quando for igual a 00:00
					var el_hora = document.getElementById("id_data_inicial_agenda_"+Eventos.events[i].event_key);
					if (el_hora) {
						var strHora = new String(FormatDateTime(Eventos.events[i].date_begin.string, "%H:%M"));
						var strHourFormat = (strHora != "00:00" ? " - %H:%M" : "" );
						el_hora.innerHTML = FormatDateTime(Eventos.events[i].date_begin.string, Eventos.events[i].idioma == "enu" ? "%m/%d/%y"+strHourFormat : "%d/%m/%y"+strHourFormat );
					}
					var el_hora = document.getElementById("id_data_final_agenda_"+Eventos.events[i].event_key);
					if (el_hora) {
						var strHora = new String(FormatDateTime(Eventos.events[i].date_end.string, "%H:%M"));
						var strHourFormat = (strHora != "00:00" ? " - %H:%M" : "" );
						el_hora.innerHTML = FormatDateTime(Eventos.events[i].date_end.string, Eventos.events[i].idioma == "enu" ? "%m/%d/%y"+strHourFormat : "%d/%m/%y"+strHourFormat );
					}

				}

			}
		}
	}
	
	if (!tem_evento_futuro) {
		if (document.getElementById("nao_tem_proximo_evento"))
				document.getElementById("nao_tem_proximo_evento").style.display = "block";
		
		if (document.getElementById("proximo_evento"))
			document.getElementById("proximo_evento").style.display = "none";
	}

}

function desenha_calendario() {
	
	var quarter = quarter_shown;
	var year = year_shown;

	var week_6_used = false;
	for (var c=1; c<=3; c++) {
		var month = (quarter-1)*3+c;
		var month_firstday = new Date(year,month-1,1,12);
		var month_firstday_weekday = month_firstday.getDay();
		var current_day = add_days(month_firstday, -month_firstday_weekday);
		var month_block = document.getElementById('c'+c+'name');

		// desenha titulo mês
		month_block.innerHTML = formatMonthDescription(month, year);
		
		for (var w=1; w<=6; w++) {
			for (var d=1; d<=7; d++, current_day = add_days(current_day, 1)) {
				var day_ref = document.getElementById('c'+c+'w'+w+'d'+d);
				// month_delay serve para 
				var month_delay = (current_day.getFullYear()*12+(current_day.getMonth()+1)) - (year*12+month); 

				// imprime o dia
				if ( !month_delay ) { 
					day_ref.innerHTML = current_day.getDate()
					if (w == 6) week_6_used = true;
				}
				else {
					day_ref.innerHTML = "";
					day_ref.className = "dia_sem_evento";
					day_ref.T_TITLE = '';
					day_ref.onmouseover = null;
					day_ref.onmouseout = null;
					day_ref.tooltip = null;
					continue;
				}


				var events_on_date = Eventos.eventsOnDate(current_day);
				if (events_on_date) {
					day_ref.className = "dia_com_evento";
					// Montar tooltip que vai aparecer
					var body = '';
					var event_count = events_on_date.count();
					for (var i = 0; i < event_count; i++) {
						var this_event_body = "";
						if (i != 0) body += '<hr noshade border="0" />';

						this_event_body += "<center><b>" + events_on_date.get(i).description + "</b></center><BR/>"
						var strLocal = new String(events_on_date.get(i).local);
						if (strLocal.length > 0) strLocal = strLocal.replace(/^\s*|\s*$/g,""); 
						if (strLocal.length > 0) { 
							strLocal = strLocal 
						} else {
							strLocal = "";
						}
						var strHora = new String(FormatDateTime(events_on_date.get(i).date_begin.string, "%H:%M"));
						if (strHora == "00:00") strHora = "";

						this_event_body +=  strHora	+ (strLocal != "" && strHora != "" ? ", " :  "")  + strLocal
						body += this_event_body;
					}					
					//Setar handler tooltip no controle do dia
					day_ref.T_TITLE = "<center>" + traduz("Eventos em", events_on_date.get(0).idioma)+" "+FormatDateTime(current_day, events_on_date.get(0).idioma == "enu" ? "%m/%d/%y" : "%d/%m/%y" ) + "</center>";
					//strBody = 'return escape("' + body.replace(/"/g,'\\"') + '");'
					day_ref.tootlTip = body; //FIXME : Problemas com \, tem que escapar de modo compatível com tooltip.
					day_ref.onmouseover = function() {
						Tip(this.tootlTip, WIDTH, 300, TITLE, this.T_TITLE); //versão 4.12 do tooltip.
					};
					day_ref.tooltip = 1;
				} else {
					day_ref.className = "dia_sem_evento";
					day_ref.T_TITLE = '';
					day_ref.onmouseover = null;
					day_ref.onmouseout = null;
					day_ref.tooltip = null;

				}
			}
		} // end for
	}

	if (week_6_used) {  // ligando/apagando a ultima semana
	
		el = document.getElementById('c1w6');
		try			{ el.style.display = "table-row"; }	// standard way
		catch (e)	{ el.style.display = "block"; };	// IE way
		el = document.getElementById('c2w6');
		try			{ el.style.display = "table-row"; }	// standard way
		catch (e)	{ el.style.display = "block"; };	// IE way
		el = document.getElementById('c3w6');
		try			{ el.style.display = "table-row"; }	// standard way
		catch (e)	{ el.style.display = "block"; };	// IE way

		
	} else {
		document.getElementById('c1w6').style.display = 'none';
		document.getElementById('c2w6').style.display = 'none';
		document.getElementById('c3w6').style.display = 'none';
	}
	
	try {
		if (tt_Init) tt_Init();
	} catch (e) {
	};
}



function prev_quarter()
{
	quarter_shown--;
	if (quarter_shown<1)  { quarter_shown=4; year_shown--; }
	
	draw();

	if (contentDestination != null) {
		contentDestination.copyINFOinvestContent();
	}

}
function next_quarter()
{
	quarter_shown++;
	if (quarter_shown>4)  { quarter_shown=1; year_shown++; }

	draw();

	if (contentDestination != null) {
		contentDestination.copyINFOinvestContent();
	}
}
function add_days(date, ndays)
{
	var new_date = new Date(date.getTime()+ndays*(24*60*60*1000));
	var timezone_minute_difference = new_date.getTimezoneOffset() - date.getTimezoneOffset();
	if ( timezone_minute_difference )  new_date.setTime(new_date.getTime()+(timezone_minute_difference*60*1000));
	return new_date;
}

function fill_events_list_for_current_quarter(year, quarter, render_callback)
{
	divCriada = document.createElement("DIV");
	divCriada.setAttribute("id", "listEvents");
	divCriada.innerHTML = render_callback(year, quarter);
}

function debug_date(obs, date)
{
	alert(obs+"\n"+'ano/mes/diaThhmm: '+date.getYear()+'/'+(date.getMonth()+1)+'/'+date.getDate()+'T'+date.getHours()+':'+date.getMinutes()+
		'  dia da semana: '+date.getDay());
}

function formatMonthDescription(month, year)
{
	return months[month] + ' / ' + year;
}

function traduz(texto, idioma){
	switch (texto) {
		case "Eventos em": 
			switch(idioma) {
				case 'ptb' : return "Eventos em"; break;
				case 'enu' : return "Events on"; break;
				case 'esp' : return "Eventos en"; break;
				default    : return "Data"; break;
			}
	}
}