var months = [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ];

var current_month = -1;
var current_year = -1;
var current_day = 0;

var loading = false;

function db_date(year, month, day)
{
	if( month < 10 ) month = "0" + month;
	if( day < 10 ) day = "0" + day;
	return year + '-' + month + '-' + day;
}

function UpdateCalendar(year, month)
{		
	if( loading ) {
		return;
	}
	
	loading = true;
	
	var today = new Date();
		
	var date = new Date(year, month, 1);
	var timezoneOffset = -date.getTimezoneOffset() / 60;
	
	current_month = month;
	current_year = year;
	
	var dayOfTheWeek = date.getDay();
	var daysInMonth = 32 - new Date(year, month, 32).getDate();
	
	var html = '<tr><th>S</th><th>M</th><th>T</th><th>W</th><th>T</th><th>F</th><th>S</th></tr>';
	
	html += '<tr>';
	
	var cell = 0;
	
	for( var i=0; i < dayOfTheWeek; i++ ) {
		cell++;			
		html += '<td class="blank">&nbsp;</td>';
	}
	
	for( i=1; i <= daysInMonth; i++ ) {
		cell++;
		
		if( ((cell-1) % 7) == 0 ) {
			html += '</tr><tr>';
		}
		
		var date = db_date(year, (month+1), i);
		html += '<td id="day_' + date + '" rel="' + date + '" class="cal_date">' + (i) + '</td>';
	}
	
	html += '</tr>';
	
	var url = 'home/ajax_get_alerts/' + year + '/' + (month+1);
	Ajax(url, function(xmldom){
		jQuery('#dates').html(html);
		jQuery('#curr_month').html(months[month]);
		jQuery('#curr_year').html(year);
		
		if( xmldom == null )
		{
			//alert('Could not load event data.');			
			loading = false;
			return;
		}
		
		var root = xmldom.getElementsByTagName('root')[0];
		var events = root.getElementsByTagName('event');
		
		for( var i = 0; i < events.length; i++ )
		{
			var event = events[i];
			var date = xmlGetValue(event.getElementsByTagName('today')[0]);				
			var target = jQuery('#day_'+date);
			if( !target.hasClass('alert') ) {
				target.addClass('alert');
				target.click(function(){
					OnClickAlert(this);
				});
			}
		}
		
		//jQuery('#day_<?=date('Y-m-d')?>').addClass('today');
		jQuery('#day_'+today.getFullYear()+'-'+(today.getMonth()+1)+'-'+today.getDate()).addClass('today');
					
		loading = false;
	});
}

function OnClickAlert(self)
{
	var date = self.id.split('_')[1];
	var dateSplit = date.split('-');
	var year = dateSplit[0];		
	var month = dateSplit[1];
	var day = dateSplit[2];
	
	var url = 'home/ajax_get_alerts/' + year + '/' + month + '/' + day;
	
	Ajax(url, function(xmldom){
		var root = xmldom.getElementsByTagName('root')[0];
		var events = root.getElementsByTagName('event');
		
		var html = '';
		html += '<ul class="events">';
		
		for( var i = 0; i < events.length; i++ )
		{
			var event = events[i];	
			 //' ' + xmlGetValue(event.getElementsByTagName('start_date')[0]) + ' - ' + xmlGetValue(event.getElementsByTagName('end_date')[0]) +
			html += '<li>';
			html += '<h1>' + xmlGetValue(event.getElementsByTagName('title')[0]) + '</h1>';
			html += '<p>Location: <b>' + xmlGetValue(event.getElementsByTagName('location')[0]) + '</b></p>';
			html += '<p>Time: <b>' + xmlGetValue(event.getElementsByTagName('start_date')[0]) + ' to ' + xmlGetValue(event.getElementsByTagName('end_date')[0]) +'</b></p>';
			html += '<p>' + xmlGetValue(event.getElementsByTagName('description')[0]) + '</p>';
			html += '</li>';				
		}			
		
		html += '</ul>';			
		
		Shadowbox.open({
	        content:    '<div id="eventbox">' + html + '</div>',
	        player:     "html",
	        title:      "Events",
	        width: 		640,
	        height: 	480
	    });			
	});
}

function OnClickMonthPrev()
{
	var month = current_month - 1;
	var year = current_year;
	
	if( month < 0 )
	{
		month = 11;
		year--;
	}
	
	UpdateCalendar(year, month);
}

function OnClickMonthNext()
{
	var month = current_month + 1;
	var year = current_year;
	
	if( month > 11 )
	{
		month = 0;
		year++;
	}
	
	UpdateCalendar(year, month);
}
