///
/// calendar.js
/// Generates a DHTML calendar in a container.
///
/// <div id="calendar"></div>
///

window.onload = function () {
	showCalendar();
}

var today = new Date();
var day = 1;
var month = (index_page) ? todays_month : event_month;
var year = (index_page) ? todays_year : event_year;

today.setDate(day);
today.setMonth(month);
today.setFullYear(year);

function showCalendar() {
	var _container = document.getElementById("calendar");
	if (_container) {
		var output = '<table cellspacing="0" border="0">';
		output += '<tr class="title"><th id="left"><a href="javascript:changeYear(-1);">&laquo;</a> <a href="javascript:changeMonth('+(today.getMonth()-1)+');">&lsaquo;</a></th><th colspan="5" id="center">' + monthName(month) + ' ' + year + '</th><th id="right"><a href="javascript:changeMonth('+(today.getMonth()+1)+');">&rsaquo;</a> <a href="javascript:changeYear(1);">&raquo;</a></th></tr>';
		output += '<tr class="days"><th>Su</th><th>M</th><th>T</th><th>W</th><th>Th</th><th>F</th><th>Sa</th></tr>';
		output += '<tr>';

		while (day <= num_days(month)) {
			output += '</tr><tr>';
			for (var i=0; i<7; i++) {
				today.setDate(day);
				var border_style = "";
				if (i==0) {
					border_style = ' style="border-left:#ffffff 1px solid;"';
				}
				//alert('Month: '+today.getMonth()+'\ni: '+i);
				if (today.getDay() == i) {
					if (day <= num_days(month)) {
						if ((day == todays_date) && (month == todays_month) && (year == todays_year))
							highlight = 'class="today_highlighted" ';
						else
							highlight = '';
						if ((day == event_date) && (month == event_month) && (year == event_year))
							highlight = 'class="highlighted" ';

						output += '<td onmouseover="hover_highlight(this)" onmouseout="hover_out(this)"'+highlight+'id="day_'+today.getDate()+'"'+border_style+' onclick="window.location=\'/events/portal/'+year+'/'+(month+1)+'/'+day+'/\'">'+today.getDate()+'</td>';
						
						day += 1;
					}
					else {
						output += '<td'+border_style+'>&nbsp;</td>';
					}
				}
				else {
					output += '<td'+border_style+'>&nbsp;</td>';
				}
			}
		}

		output += '</tr>';
		output += '</table>';

		_container.innerHTML = output;
	}
}

function hover_highlight (targ) {
	targ.className += ' highlighted';
}
function hover_out (targ) {
	if (targ.className.indexOf(' ') >= 0)
		targ.className = targ.className.split(' ')[0];
	else
		targ.className = '';
}

function changeMonth (v) {
	// reset the date object
	today = new Date();

	// increment/decrement month
	month=v;
	if (month > 11) { month = 0; year+=1; }
	if (month < 0) { month = 11; year-=1; }

	// set day to 1
	day = 1;

	// apply
	today.setDate(day);
	today.setFullYear(year);
	today.setMonth(month);

	// redraw the calendar
	showCalendar();
}

function changeYear(y) {
	today = new Date();
	year+=y;
	day = 1;
	
	today.setDate(day);
	today.setFullYear(year);
	today.setMonth(month);

	showCalendar();
}

function monthName (m) {
	var months = new Array();
	months[0] = "January";
	months[1] = "February";
	months[2] = "March";
	months[3] = "April";
	months[4] = "May";
	months[5] = "June";
	months[6] = "July";
	months[7] = "August";
	months[8] = "September";
	months[9] = "October";
	months[10] = "November";
	months[11] = "December";

	return months[m];
}

function num_days (m) {
	numdays = new Array();
	numdays[0] = 31;
	numdays[1] = 28;
	numdays[2] = 31;
	numdays[3] = 30;
	numdays[4] = 31;
	numdays[5] = 30;
	numdays[6] = 31;
	numdays[7] = 31;
	numdays[8] = 30;
	numdays[9] = 31;
	numdays[10] = 30;
	numdays[11] = 31;

	if (is_leapyear(year))
		numdays[1] = 29;

	return numdays[m];
}

function dayName (d) {
	var days = new Array();
	days[0] = "Sunday";
	days[1] = "Monday";
	days[2] = "Tuesday";
	days[3] = "Wednesday";
	days[4] = "Thursday";
	days[5] = "Friday";
	days[6] = "Saturday";

	return days[d];
}

function is_leapyear(y) {
	y = parseInt(y);

	if(y%4 == 0) {
		if(y%100 != 0) {
			return true;
		}
		else {
			if(y%400 == 0)
				return true;
			else
				return false;
		}
	}
	return false;
}

function h (d) {
	var lookup = "day_" + d;
	var td = document.getElementById(lookup);
	if (td) {
		if (td.className == 'highlighted')
			td.className = '';
		else
			td.className='highlighted';
	}
}