function patCalendar_applyFunctionality() {
	
	$(".patCalendar .previous, .patCalendar .next, .patCalendar .container .day, .patCalendar .datepicker .getToday").unbind("hover").hover(function() {
		$(this).addClass("hover");
	}, function() {
		$(this).removeClass("hover");
	});
	
	$(".patCalendar .previous").unbind("click").click(function() {
		patCalendar_getData({ date: patCalendar_previousDate, prev: 14, next: -1 }, 1);
	});
	
	$(".patCalendar .next").unbind("click").click(function() {
		patCalendar_getData({ date: patCalendar_nextDate, prev: -1, next: 14 }, 2);
	});
	
	$(".patCalendar .container .day").unbind("click").click(function() {
		$(".patCalendar .container .day").removeClass("selected");
		$(this).addClass("selected");
		patCalendar_selectedDate = $(this).attr('id');
		if(patCalendar_mediaArray[patCalendar_selectedDate] != "nA")
			document.location.href = "/fotos/bild-des-tages/" + patCalendar_mediaArray[patCalendar_selectedDate] + ".htm";
	});
	
	if(patCalendar_selectedDate != "") $("#" + patCalendar_selectedDate).addClass("selected");
	
	$(".patCalendar .datepicker .getToday").unbind("click").click(function() {
		patCalendar_getData(null, 9);
		patCalendar_selectedDate = patCalendar_todayDate;
	})
	
	$("#datepickMonth, #datepickYear").unbind("change").change(function() {
		strDate = $("#datepickYear").val() + "-" + $("#datepickMonth").val() + "-1";
		patCalendar_updateDatepicker = false;
		patCalendar_getData({ date: strDate, prev: 0, next: 14 }, 9);
	})
	
}

function patCalendar_setOptions(arrOptions) {
	if(arrOptions != undefined) patCalendar_arrOptions = arrOptions;
	patCalendar_previousDate = "";
	patCalendar_nextDate = "";
	patCalendar_selectedDate = "";
	patCalendar_mediaArray = new Array();
};

function patCalendar_getData(arrOptions, intSlideDir) {
	
	$(".patCalendar .previous, .patCalendar .next").unbind("click");
	
	if(arrOptions != undefined) { 
		patCalendar_arrOptions = arrOptions;
	} else {
		patCalendar_arrOptions = new Object();
	};
	
	patCalendar_intSlideDir = intSlideDir;
	
	strSlideDirHide = "right";
	strSlideDirShow = "left";
	if(patCalendar_intSlideDir == 2) {
		strSlideDirHide = "left";
		strSlideDirShow = "right";
	}
	
	if(patCalendar_intSlideDir != 9) {
		$(".patCalendar .container").hide("slide", { direction: strSlideDirHide }, function() { patCalendar_exePost(); });
	} else {
		$(".patCalendar .container").hide();
		patCalendar_exePost();
	}
	
	patCalendar_updateDatepicker = true;
		
}

function patCalendar_exePost() {
	
	$(".patCalendar .pseudoContainer").css("width", $(".patCalendar .container").width()).show(); 
	
	requestPatCalendar = $.post(
		"/sources/ajax.patCalendar.php",
		patCalendar_arrOptions,
		function(data) {
		
			strReturn = "";
			forMonth = "";
					for (var i = 0; i < data.j.length; i++) {
			
				firstDayInList = '';
				if(i == 0) firstDayInList = ' first';
			
				dayIsToday = '';
				if(data.todayUS == data.dateUS[i]) dayIsToday = ' today';
			
				strMonth = '&nbsp;';
				if(forMonth != data.n[i]) strMonth = data.nNameShort[i] + ' ' + data.y[i];
				forMonth = data.n[i];

				strReturn += '<div class="day' + firstDayInList + dayIsToday + '" id="' + data.dateUS[i] + '">';
				strReturn += '<div class="ribbon">' + strMonth + '</div>';
				strReturn += '<div class="field ' + data.jNameShort[i].toLowerCase() + '">';
					// strReturn += '<div class="weekday">' + data.jNameShort[i] + '</div>';
					strReturn += '<div class="number">' + data.j[i] + '</div>';
					if(data.media[i] != "nA") {
						strReturn += '<div class="fieldcontent ' + data.media[i] + '">&nbsp;</div>';
					} else {
						strReturn += '<div class="fieldcontent">&nbsp;</div>';
					}
				strReturn += '</div>';
				strReturn += '</div>';
				
				patCalendar_mediaArray[data.dateUS[i]] = data.mediaURI[i];
			
			}
			
			strReturn += '<div class="clear"></div>';
			$(".patCalendar .pseudoContainer").hide();
			if(patCalendar_intSlideDir == 9) {
				$(".patCalendar .container").html(strReturn).show();
			} else {
				$(".patCalendar .container").html(strReturn).show("slide", { direction: strSlideDirShow });	
			}
			
			patCalendar_previousDate = data.dateUS[0];
			patCalendar_nextDate = data.dateUS[data.j.length - 1];
			patCalendar_entriesPrevious = data.entriesPrevious;
			patCalendar_entriesNext = data.entriesNext;
			patCalendar_todayDate = data.todayUS;
		
			if(data.prev == "false") {
				$(".patCalendar .previous").removeClass("previous").addClass("previous-off placebo");
			} else {
				$(".patCalendar .previous-off").removeClass("previous-off placebo").addClass("previous");
			}
		
			if(data.next == "false") {
				$(".patCalendar .next").removeClass("next").addClass("next-off placebo");
			} else {
				$(".patCalendar .next-off").removeClass("next-off placebo").addClass("next");
			}
			
			if(patCalendar_updateDatepicker) {
				$("#datepickMonth").val(data.dateMonth);
				$("#datepickYear").val(data.dateYear);
			}
			
			patCalendar_applyFunctionality();
		
		}, "json");
		
}
