var elementToBeUpdatedByCalendar;

function showCalendar(id, language) {
	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, language);
}

function refreshCalendar(date, language) {
	if (typeof(language) == 'undefined'){
		language = 'es';
	}
	
	var calendar = document.getElementById('calendar');
	if ((!calendar) || (!elementToBeUpdatedByCalendar)) { return false; }
	if (typeof(baseUrl) == 'undefined') {
		url = '/generate_calendar.php';
	} else {
		url = baseUrl + 'generate_calendar.php';
	}
	var request = new Ajax.Request(
			url, {
				method: 'get',
				parameters: (typeof(date) == 'undefined' ? '' : 'date=' + date) + ('&lang=' + language), 
				onComplete: function(originalRequest) {
					calendar.innerHTML = originalRequest.responseText;
					calendar.style.left = findPosX(elementToBeUpdatedByCalendar) + 'px';
					calendar.style.top = (findPosY(elementToBeUpdatedByCalendar) + elementToBeUpdatedByCalendar.offsetHeight) + 'px';
					calendar.style.display = 'block';
				}
			}
	);
}

function selectCalendarDate(date) {
	hideCalendar();
	if (elementToBeUpdatedByCalendar) {
		elementToBeUpdatedByCalendar.value = date;
	}
	$('calendar').style.display = 'none';
}

function hideCalendar() {
	$('calendar').style.display='none';
}