/*		imagens		*/
var prevMonthOn = "images/calendario-seta-esq.gif";
var prevMonthOff = "images/calendario-seta-esq.gif";
var nextMonthOn = "images/calendario-seta-dir.gif";
var nextMonthOff = "images/calendario-seta-dir.gif";

var prevYearOn = "images/calendario-seta-esq2.gif";
var prevYearOff = "images/calendario-seta-esq2.gif";
var nextYearOn = "images/calendario-seta-dir2.gif";
var nextYearOff = "images/calendario-seta-dir2.gif";

/***************************************************************************************
	JavaScript Calendar - Digital Christian Design
	//Script featured on and available at JavaScript Kit: http://www.javascriptkit.com
	// Functions
		changedate(): Moves to next or previous month or year, or current month depending on the button clicked.
		createCalendar(): Renders the calander into the page with links for each to fill the date form filds above.

***************************************************************************************/

var cssCalendar = 'cal';
var cssHeader = 'cal_header';
var cssDayName = 'cal_dayName';
var cssDay = 'cal_day';
var cssOtherMonthDay = 'cal_otherMonthDay';
var cssToday = 'cal_today';
var cssHoliday = 'cal_holiday';
var cssTooltip = 'cal_tooltip';
var cssButton = 'cal_button';
var cssFooter = 'cal_footer';


var thisDate = 1;							// Tracks current date being written in calendar
var wordMonth = new Array("Janeiro","Fevereiro","Mar&ccedil;o","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro");
var numMonth = new Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
var wordWeek = new Array("Seg", "Ter", "Qua", "Qui", "Sex", "Sab", "Dom");
var calDiv;

var today = new Date();								// Date object to store the current date
var todaysDay = today.getDay() + 1;					// Stores the current day number 1-7
var todaysDate = today.getDate();					// Stores the current numeric date within the month
var todaysMonth = today.getUTCMonth() + 1;			// Stores the current month 1-12
var todaysYear = today.getFullYear();				// Stores the current year
var monthNum = todaysMonth;							// Tracks the current month being displayed
var yearNum = todaysYear;							// Tracks the current year being displayed
var firstDate = new Date(String(monthNum)+"/1/"+String(yearNum));	// Object Storing the first day of the current month
var firstDay = firstDate.getUTCDay();				// Tracks the day number 1-7 of the first day of the current month
//var lastDate = new Date(String(monthNum+1)+"/0/"+String(yearNum));	// Tracks the last date of the current month
var lastDate = new Date(String(monthNum)+"/"+monthDays(monthNum,yearNum)+"/"+String(yearNum));	// Tracks the last date of the current month
var numbDays = 0;
var startWeek = 0; 	// 0 - segunda


function monthDays(month,year) {
	var m = [31,28,31,30,31,30,31,31,30,31,30,31];
	if (month != 2) return m[month - 1];
	if (year%4 != 0) return m[1];
	if (year%100 == 0 && year%400 != 0) return m[1];
	return m[1] + 1;
}

function changedate(buttonpressed, id) {
	if (buttonpressed == "prevyr") yearNum--;
	else if (buttonpressed == "nextyr") yearNum++;
	else if (buttonpressed == "prevmo") monthNum--;
	else if (buttonpressed == "nextmo") monthNum++;
	else  if (buttonpressed == "return") {
		monthNum = todaysMonth;
		yearNum = todaysYear;
	}

	if (monthNum == 0) {
		monthNum = 12;
		yearNum--;
	}
	else if (monthNum == 13) {
		monthNum = 1;
		yearNum++
	}
	
	lastDate = new Date(String(monthNum)+"/"+monthDays(monthNum,yearNum)+"/"+String(yearNum));
	numbDays = lastDate.getDate();
	firstDate = new Date(String(monthNum)+"/1/"+String(yearNum));
	firstDay = firstDate.getDay()+startWeek;
	if (firstDay==0) firstDay = 7;

	calDiv = id;
	createCalendar();
	return;
}

function createCalendar() {
	var calendarString = buildHeader();
	calendarString += buildDayNames();
	calendarString += buildMonthDays();
	calendarString += buildFooter();

	var object=document.getElementById(calDiv);
	object.innerHTML= calendarString;
	thisDate = 1;
}

function buildHeader() {
	var calendarString = '';

	calendarString += '<table class='+cssCalendar+'>';
	calendarString += '<tr>';
	calendarString += '<td class='+cssButton+'><a href=\"#\" onMouseOver=\"document.PrevYr.src=\'images\/calendario-seta-esq2.gif\';\" onMouseOut=\"document.PrevYr.src=\'images\/calendario-seta-esq2.gif\';\" onClick=\"changedate(\'prevyr\', \''+calDiv+'\')\"><img name=\"PrevYr\" src=\"images\/calendario-seta-esq2.gif\" class=\"no_border\" alt=\"Ano Anterior\" longdesc=\"calendario-seta-esq2.htm\"\/><\/a><\/td>';
	calendarString += '<td class='+cssButton+'><a href=\"#\" onMouseOver=\"document.PrevMo.src=\'images\/calendario-seta-esq.gif\';\" onMouseOut=\"document.PrevMo.src=\'images\/calendario-seta-esq.gif\';\" onClick=\"changedate(\'prevmo\', \''+calDiv+'\')\"><img name=\"PrevMo\" src=\"images\/calendario-seta-esq.gif\" class=\"no_border\" alt=\"Mes Anterior\" longdesc=\"calendario-seta-esq.htm\"\/><\/a><\/td>';
	calendarString += '<td colspan=3 class='+cssHeader+'><b>' + wordMonth[monthNum-1] + '&nbsp;&nbsp;' + yearNum + '<\/b><\/td>';
	calendarString += '<td class='+cssButton+'><a href=\"#\" onMouseOver=\"document.NextMo.src=\'images\/calendario-seta-dir.gif\';\" onMouseOut=\"document.NextMo.src=\'images\/calendario-seta-dir.gif\';\" onClick=\"changedate(\'nextmo\', \''+calDiv+'\')\"><img name=\"NextMo\" src=\"images\/calendario-seta-dir.gif\" class=\"no_border\" alt=\"Proximo Mes\" longdesc=\"calendario-seta-dir.htm\"\/><\/a><\/td>';
	calendarString += '<td class='+cssButton+'><a href=\"#\" onMouseOver=\"document.NextYr.src=\'images\/calendario-seta-dir2.gif\';\" onMouseOut=\"document.NextYr.src=\'images\/calendario-seta-dir2.gif\';\" onClick=\"changedate(\'nextyr\', \''+calDiv+'\')\"><img name=\"NextYr\" src=\"images\/calendario-seta-dir2.gif\" class=\"no_border\" alt=\"Proximo Ano\" longdesc=\"calendario-seta-dir2.htm\"\/><\/a><\/td>';
	calendarString += '<\/tr>';
	calendarString += '<tr>';

	return calendarString;
}


function buildDayNames() {
	var calendarString ='';
	var iniWeek = startWeek;

	for (var i = 0; i < wordWeek.length; i++) {
		if (iniWeek > (wordWeek.length-1)) iniWeek = 0;
		calendarString += '<td class='+cssDayName+'>'+wordWeek[iniWeek]+'<\/td>';
		iniWeek++;
	}

	calendarString += '<\/tr>';
	return calendarString;
}

function buildMonthDays() {
	thisDate == 1;
	var daycounter = 0;
	var calendarString = '';

	for (var i = 1; i < wordWeek.length; i++) {
		//if (((thisDate - firstDay)+1) <= numbDays) {
			calendarString += '<tr>';
			for (var x = 1; x <= 7; x++) {
				daycounter = (thisDate - firstDay)+1;//+startWeek;
				thisDate++;
				calendarString += renderDay(daycounter);
			}
			calendarString += '<\/tr>';
		//}
	}

	return calendarString;
}


function renderDay(daycounter) {
	var day = daycounter;		// valor a por no dia
	var mouseOver = 'onmouseover=""';
	var mouseOut = 'onmouseout=""';
	var onclick = 'onclick=""';
	var myclass;					// css

	if ((daycounter > numbDays) || (daycounter < 1)) {
		day = '';
		myclass = 'class='+cssOtherMonthDay;

	} else {
		var isHoliday = Eventos.isHolidayDay(yearNum, numMonth[monthNum-1], daycounter);
		var tooltip = Eventos.hasTooltip(yearNum, numMonth[monthNum-1], daycounter);

		if (isHoliday) {
			day = "F";
			myclass = 'class='+cssHoliday;
		} else {
			day = daycounter;
			if (todaysDate==daycounter && numMonth[monthNum-1]==todaysMonth && yearNum==todaysYear) myclass = 'class='+cssToday;
			else myclass = 'class='+cssDay;
		}

		if (tooltip!="") {
			myclass = 'class='+cssTooltip;
			var mes = numMonth[monthNum-1];
			if (numMonth[monthNum-1]<10) mes = "0"+numMonth[monthNum-1];
			var dia = daycounter;
			if (dia<10) dia = "0"+daycounter;
			mouseOver='onmouseover="return overlib(\''+tooltip+'\', CAPTION, \'Eventos ['+yearNum+'-'+mes+'-'+dia+']:'+
					'\', STICKY, CSSCLASS,TEXTFONTCLASS,\'tooltip_fontClass\',FGCLASS,\'tooltip_fgClass\', BGCLASS,\'tooltip_bgClass\',STICKY,CAPTIONFONTCLASS,\'tooltip_capfontClass\', CLOSEFONTCLASS, \'tooltip_capfontClass\');"';
			mouseOut = 'onmouseout="return nd(2000);"';

			if (Eventos.onclick) {
				var filter = "";
				// se veio das preferências do utilizador (p.ex.), vamos mostrar os eventos deste dia mas apenas para as suas áres de interesse
				if (tooltip.indexOf('filterByAreas=true') != -1) {
					filter = '&filterByAreas=true';
				}
				onclick = 'onclick="javascript:window.location = \'consultaEventos.action?data='+yearNum+'-'+numMonth[monthNum-1]+'-'+daycounter+filter+'\'"';
			}
		}
	}

	var calendarString = '<td '+mouseOver+' '+mouseOut+' '+onclick+' '+myclass+'>'+day+'<\/td>';
	return calendarString;
}

function buildFooter() {
		return '<tr><td colspan=\"7\" class='+cssFooter+'><a class='+cssFooter+' href=\"javascript:changedate(\'return\', \''+calDiv+'\')\"><b>Hoje<\/b><\/a><\/td><\/tr><\/table>';
}

