var elementToBeUpdatedByCalendar;

function showCalendar(id) {
	elementToBeUpdatedByCalendar = document.getElementById(id);
	if (!elementToBeUpdatedByCalendar) {
		return false;
	}

	var calendar = document.getElementById('calendar');
	if (!calendar) {
		calendar = document.createElement('div');
		calendar.id = 'calendar';
		calendar.style.position = 'absolute';
		calendar.style.display = 'none';
		document.body.insertBefore(calendar, document.body.childNodes[0]);
	}

	refreshCalendar(elementToBeUpdatedByCalendar.value);
}

function refreshCalendar(date) {
	if ($('#calendar').length == 0 || (!elementToBeUpdatedByCalendar)) { return false; }
	if (typeof(baseUrl) == 'undefined') {
		url = '/generate_calendar.php';
	} else {
		url = baseUrl + 'generate_calendar.php';
	}
	$('#calendar').load(url + '?date=' + date, function() {
		$('#calendar').css({
			left: findPosX(elementToBeUpdatedByCalendar) + 'px', 
			top: (findPosY(elementToBeUpdatedByCalendar) + elementToBeUpdatedByCalendar.offsetHeight) + 'px'
		}).show();
	});
}

function selectCalendarDate(date) {
	hideCalendar();
	if (elementToBeUpdatedByCalendar) {
		elementToBeUpdatedByCalendar.value = date;
	}
	hideCalendar();
}

function hideCalendar() {
	$('#calendar').hide();
}