var current_month;
var current_year;
var calendar_root = '/calendar';

$(function() {
	$("#loading").hide();
	
	$("#loading").ajaxStart(function() {
		$(this).show();
	});
	
	$("#loading").ajaxStop(function() {
		$(this).hide();
	});
	
	bindGridNav();	
	bindGridDays();
});

function bindGridNav(){
	//Bind Events to grid navigation
	$('a#grid-prev').click(function(){
		var prevMonth = parseInt(current_month) - 1;
		var prevYear = parseInt(current_year);
		if(prevMonth == 0){
			prevMonth = 12;
			prevYear = prevYear - 1;
		}
		getMonth(prevMonth, prevYear);
		return false;
	});
	$('a#grid-next').click(function(){
		var nextMonth = parseInt(current_month) + 1;
		var nextYear = parseInt(current_year);
		if(nextMonth == 13){
			nextMonth = 1;
			nextYear = nextYear + 1;
		}
		getMonth(nextMonth, nextYear);
		return false;
	});
	$('select#month, select#year').change(function(){
	  getMonth($('select#month').val(), $('select#year').val());
	});
}

function bindGridDays(){
	//Bind Events to days
	$('.wkday', '#calender').each(function(){
		if($(this).hasClass('has_event')){
		  $(this).click(function(){
			var dateParts = this.id.split('-', 3);
			var month = (parseInt(dateParts[0]));
			var day = parseInt(dateParts[1]);
			var year = parseInt(dateParts[2]);	
			getDate(month, day, year);
		  });
		}else{
		  $(this).click(function(){
			var dateParts = this.id.split('-', 3);
			var month = (parseInt(dateParts[0]));
			var day = parseInt(dateParts[1]);
			var year = parseInt(dateParts[2]);
			setDisplayDate(month, day, year);
		    $('#event_list').html('<li class="event_item"><h1>There are no scheduled events on this day.</h1></li>');
	      });	
		}
	});
}

function getDate(month, day, year){	
	var myUrl = calendar_root + '/view/day/m/'+month+'/d/'+day+'/y/'+year+'/v/list?lid=3';
	$('#event_list').load(myUrl, null, function(){
		setDisplayDate(month, day, year);
	});
}

function setDisplayDate(month, day, year){
	// Events Title Text
	var d = new Date(year, month - 1, day, 0, 0, 0, 0);
	var dNames = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
	var mNames = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
	$('#event_title').html('Events on ' + dNames[d.getDay()] + ', ' + mNames[d.getMonth()] + ' ' + d.getDate());
	var monthString = (month + 1).toString();
	if(monthString.length < 2){
		monthString = '0' + monthString;
	}
	var dayString = day.toString();
	if(dayString.length < 2){
		dayString = '0' + dayString;
	}
	// Selected in Grid
	$('#calender .wkdaysel').removeClass('wkdaysel');
	$('#'+monthString+'-'+dayString+'-'+year,'#calender').addClass('wkdaysel');
}

function getMonth(month, year){
	var myUrl = calendar_root + '/view/month/m/'+month+'/y/'+year+'/v/grid?lid=2';
	$('#calender').load(myUrl, null, function(){
		bindGridDays();
		current_month = month;
		current_year = year;
		setDisplayMonth(month, year);
	});
}

function setDisplayMonth(month, year){
	// Events Title Text
	var d = new Date(year, month - 1, 1, 0, 0, 0, 0);
	var mNames = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
	$('#month_name').html(mNames[d.getMonth()]);
	$('select#month').val(month);
	$('select#year').val(year);
}