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 xmlGetValue(obj)
{
	var t = obj.firstChild;
	return ( t ? t.nodeValue : '' );
}


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/get_calendar_alerts/' + year + '/' + (month+1);
	
	jQuery.ajax({url: url, dataType: 'xml', success: 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 dates = event.getElementsByTagName('date');
			for(j = 0; j < dates.length; j++){
				//var date = xmlGetValue(event.getElementsByTagName('today')[0]);				
				var date = xmlGetValue(dates[j]);
				var target = jQuery('#day_'+date);
				if( !target.hasClass('alert') ) {
					target.addClass('alert');
					target.click(function(){
						OnClickAlert(this);
					});
				}
			}
		}
		
		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/get_calendar_alerts/' + year + '/' + month + '/' + day;
	
	jQuery.ajax({url: url, dataType: 'xml', success: 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];
			
			html += '<li>';
			html += '<p>Event Title: <strong>' + xmlGetValue(event.getElementsByTagName('title')[0]) + '</strong></p>';
			html += '<p>Location: <strong>' + xmlGetValue(event.getElementsByTagName('location')[0]) + '</strong></p>';
			html += '<p>Date &amp; Time: <strong>' + xmlGetValue(event.getElementsByTagName('datetime_str')[0]) + '</strong></p>';
			html += '<p>Details:<br/><strong>' + xmlGetValue(event.getElementsByTagName('description')[0]) + '</strong></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);
}
