/* Ajax call for mini calendar */

$(document).ready(function()
{
	SetupCalendar();
	$('.date-picker').attachDatepicker({showOn: 'button', buttonImage: 'images/icon_calendar.gif', buttonImageOnly: true, offsetX: 0, offsetY: 0, beforeShow: DateRange});
	$('#date-form').submit(function () { if (!Validate()) return false; });
});

/* Setup Ajax Calendar */

function SetupCalendar ()
{
	$(".mini-calendar .left-arrow, .mini-calendar .right-arrow").click(function(event)
	{
		var link = $(this).attr("href").split('?');
		$.get("library/ajax_mini_calendar.php?" + link[1], function(data)
		{
			$(".mini-calendar").replaceWith(data);
			SetupCalendar();
		});
		
		return false;
	});
}

/* Setup date picker */

function FormatDatePicker (date)
{
	if (date != '')
	{
		var newDate = date.split('/');
		newDate[0]--;
		return new Date(newDate[2], newDate[0], newDate[1]);
	}
	
	else
	{
		return '';
	}
}

/* Setup start and end date as a range for date picker */

function DateRange(input)
{
	return {minDate: (input.id == 'end_date' ? FormatDatePicker($('#start_date').val()) : null),
		maxDate: (input.id == 'start_date' ? FormatDatePicker($('#end_date').val()) : null)};
}

/* Validate data */

function Validate ()
{
	var errors = "";
	if (!TestDate($("#start_date").val()))
		errors += " - The start date must be valid and formatted MM/DD/YYYY.\n";
	
	if ($("#end_date").val() != "")
	{
		if (!TestDate($("#end_date").val()))
			errors += " - The end date must be valid and formatted MM/DD/YYYY.\n";
	}	
	
	if (errors == '')
	{
		return true;
	}
	
	else
	{
		alert("The following errors must be resolved:\n\n" + errors);
		return false;
	}
}

/* Test Date Validity */

function TestDate(sentDate)
{
	if (sentDate != '')
	{
		var testDate = sentDate.split('/');
	
		var date = new Date(testDate[2], (testDate[0] - 1), testDate[1]);
		var dateRegex = /Invalid|NaN/;
		
		if (dateRegex.test(date))
		{
			return false;
		}
		
		else
		{
			var newYear = date.getFullYear();
			if (newYear > 1900)
			{	
				var newMonth = date.getMonth() + 1;
				if (newMonth < 10)
					newMonth = "0" + newMonth;
					
				var newDay = date.getDate();
				if (newDay < 10)
					newDay = "0" + newDay;
				
				$("#" + sentDate).val(newMonth + '/' + newDay + '/' + newYear);
			}
			
			else
			{
				$("#" + sentDate).val("");
			}
			return true;
		}
	}

	else
	{
		return false;
	}
}
