$(function () {

	var date_cache = {};

	var valid_days = function (date) {
		
		var year = date.getFullYear();
		var month = date.getMonth() + 1;
		var day = date.getDate();
		
		if (!date_cache[year]) {
			date_cache[year] = {};		
		}
		
		if (!date_cache[year][month]) {

			if (typeof(date_cache[year][month]) != "Array" && date_cache[year][month] !== false) {
				
				date_cache[year][month] = [];		
	
				var dates;
		
				$.ajax({
					url: "/ajax/packages_in_month/" + year + "-" + month + "-" + day,
					async: false,
					method: "GET",
					success: function (json) {
						dates = json;
					},
					error: function (json) {
						dates = [];				
					},
					dataType: "json"
				});			
					
				date_cache[year][month] = dates;
			}	
		}
		
		var answer = ($.inArray(String(day), date_cache[year][month]) !== -1);
		
		return [answer, ''];
	}

	var datepicker_elm = $("#datepicker");
	
	var date_time = datepicker_elm.text().replace(/-/g, "/");
	
	if (date_time) {
			
		var default_date = new Date();	
		datepicker_elm.text("");
		default_date.setTime(Date.parse(date_time));
		
	} else {
	
		default_date = new Date();
	}
	
	datepicker_elm.datepicker({
		dateFormat: "yy-mm-dd",
		beforeShowDay: valid_days,
		defaultDate: default_date,
		onSelect: function (dateText, elm) {
			
			window.location.href = "/packages/for_date/" + dateText;
			return false;
		
		}
	});	
});