<!--

// Variables globales

var fechasel = new Array();						// fechas seleccionadas en el calendario de cursos
var fechaselAloja = new Array();				// fechas seleccionadas en el calendario de alojamiento

var duracionCurso = '';							// HTML del selector de duracion del curso en semanas. Requerido para poder sumarle el selector de horas/semana.
var duracionAlojamiento = '';					// HTML del selector de duracion del alojamiento en semanas. Requerido para poder sumarle el selector de días extra.
var preCurso = '';								// Texto del precio del curso seleccionado
var preAloja = '';								// Texto del precio del alojamiento seleccionado
var descuentosanta = 0;							// Si mayor que 0, descontar ese nº de días y añadir precio de Semana Santa
var descuentoferia = 0;							// Si mayor que 0, descontar ese nº de días y añadir precio de Feria

var text = new Array();

if (lang == 'en') {
	text['course'] = 'Course';
	text['accommodation'] = 'Accommodation';
	text['transfer'] = 'Transfer';
	text['wishtransfer'] = 'I wish transport to IELE (Transfer, only going)';
	text['total'] = 'TOTAL';
	text['beginningday'] = 'Select the beginning day';
	text['from'] = 'From';
	text['to'] = 'to';
}
else if (lang == 'it') {
	text['course'] = 'Corso';
	text['accommodation'] = 'Alloggi';
	text['transfer'] = 'Transfer';
	text['wishtransfer'] = 'Desidero trasporto di IELE (Transfer, solo corso)';
	text['total'] = 'TOTALE';
	text['beginningday'] = 'Seleziona il giorno all\'inizio';
	text['from'] = 'Da';
	text['to'] = 'a';
}
else if (lang == 'fr') {
	text['course'] = 'Cours';
	text['accommodation'] = 'H' + String.fromCharCode(233) + 'bergement';
	text['transfer'] = 'Transfert';
	text['wishtransfer'] = 'Je tiens ' + String.fromCharCode(224) + ' IELE transport (transfert, seul cours)';
	text['total'] = 'TOTAL';
	text['beginningday'] = 'S' + String.fromCharCode(233) + 'lectionnez le jour d' + String.fromCharCode(233) + 'but';
	text['from'] = 'Du';
	text['to'] = 'au';
}
else if (lang == 'jp') {
	text['course'] = 'コース';
	text['accommodation'] = '宿泊施設';
	text['transfer'] = '出荷';
	text['wishtransfer'] = '（転送片道） IELE輸送する';
	text['total'] = '合計';
	text['beginningday'] = '開始日を選択してください';
	text['from'] = '〜から';
	text['to'] = '〜まで';
}
else if (lang == 'sp') {
	text['course'] = 'Curso';
	text['accommodation'] = 'Alojamiento';
	text['transfer'] = 'Transfer';
	text['wishtransfer'] = 'Deseo transporte a IELE (Transfer, s&oacute;lo ida)';
	text['total'] = 'TOTAL';
	text['beginningday'] = 'Seleccione d&iacute;a de inicio';
	text['from'] = 'Desde';
	text['to'] = 'hasta';
}
else if (lang == 'de') {
	text['course'] = 'Kurs';
	text['accommodation'] = 'Unterkunft';
	text['transfer'] = 'Transfert';
	text['wishtransfer'] = 'Ich w' + String.fromCharCode(252) + 'nsche Verkehr zu IELE (Transfert, nur geht)';
	text['total'] = 'INSGESAMT';
	text['beginningday'] = 'W' + String.fromCharCode(228) + 'hlen Sie den Tag beginnen';
	text['from'] = 'Von';
	text['to'] = 'bis';
}

// Función que posiciona la calculadora cada vez que hace falta
function posCalc() {
	if (window.document.body.scrollWidth)
		leftPos = parseInt((window.document.body.scrollWidth - 395) / 2);
	else
		leftPos = parseInt((window.document.width - 395) / 2);
	
	document.getElementById('calculator').style.left = leftPos + 'px';
}
window.onresize = posCalc;

// Función que muestra la calculadora de cursos al pulsar el botón
function launchCalc() {
	posCalc();
	document.getElementById('calculator').style.visibility='visible';
}

// Cierra la calculadora, vaciando los divs
function closeCalc() {
	fechasel = Array();
	fechaselAloja = Array();
	preCurso = "";
	preAloja = "";
	
	setEnrol();
	
	document.getElementById('TipoCurso').selectedIndex = 0;
	document.getElementById('duracion').innerHTML = '';
	document.getElementById('calendar').innerHTML = '';

	document.getElementById('Alojamiento').selectedIndex = 0;
	document.getElementById('regimenAloja').innerHTML = '';
	document.getElementById('regimenAloja').style.display='none';
	document.getElementById('duracionAloja').innerHTML = '';
	document.getElementById('calendarAloja').innerHTML = '';

	document.getElementById('precioCurso').innerHTML = '';
	document.getElementById('precioCurso').style.display='none';
	
	document.getElementById('SubmitCalc').disabled = true;

	document.getElementById('calculator').style.visibility='hidden';
}

/*
 *
 * CURSO
 *
 */

// Esta función es llamada al seleccionar un curso diferente para recuperar las duraciones posibles.
function getDuration() {
	var idTipoCurso = document.getElementById('TipoCurso').options[document.getElementById('TipoCurso').selectedIndex].value;

	// Vaciar el div de duración y calendario de curso
	
	document.getElementById('duracion').innerHTML = '';
	document.getElementById('calendar').innerHTML = '';

	// Vaciar las fechas seleccionadas por si hubiera.
	fechasel = Array();
	
	// Vaciar el precio de curso
	preCurso = '';
	
	muestra_precios();

	// Capturar por AJAX las duraciones
	var param = 'id=' + idTipoCurso + '&lang=' + lang;
	var url = '../jvs/getDuration.php';
	
	var ajaxRequest =	new Ajax.Request(url, {
							method: 'get',
							parameters: param,
							asynchronous: true,
							onComplete: showResponseDuration
						});
}

// Esta función se ejecuta cuando responde AJAX a la llamada anterior
function showResponseDuration(xmlHttpRequest, responseHeader) {
	if (xmlHttpRequest.responseText != "1")
		duracionCurso = xmlHttpRequest.responseText;
	else
		duracionCurso = '';

	document.getElementById('duracion').innerHTML = duracionCurso;
}

// Función que se llama para recuperar, en su caso, el numero de horas para el curso de particulares
function getHour() {
	var idTipoCurso = document.getElementById('TipoCurso').options[document.getElementById('TipoCurso').selectedIndex].value;
	
	// Vaciar el calendario y las fechas seleccionadas
	document.getElementById('calendar').innerHTML = '';
	fechasel = Array();
	
	// Vaciar el precio del curso y actualizar los divs
	preCurso = '';

	muestra_precios();
	
	// Capturar por AJAX las diferentes horas/semana
	var param = 'id=' + idTipoCurso + '&lang=' + lang;
	var url = '../jvs/getHours.php';
	
	var ajaxRequest =	new Ajax.Request(url, {
							method: 'get',
							parameters: param,
							asynchronous: true,
							onComplete: showResponseHours
						});
}

// Esta función se ejecuta cuando responde AJAX a la llamada anterior
function showResponseHours(xmlHttpRequest, responseHeader) {
	
	// Capturar el nº de semanas seleccionado
	var selected = document.getElementById('Duration').selectedIndex;

	// Poner El combo de horas por semana debajo de la duración en semanas
	if (xmlHttpRequest.responseText != "1")
		document.getElementById('duracion').innerHTML = duracionCurso + '\n' + xmlHttpRequest.responseText;
	else
		document.getElementById('duracion').innerHTML = duracionCurso;

	// Volver a seleccionar el nº de semanas que tenía
	document.getElementById('Duration').selectedIndex = selected;
}

// Llama al calendario de cursos con el Tipo de curso seleccionado
function getCalendar() {
	var idTipoCurso = document.getElementById('TipoCurso').options[document.getElementById('TipoCurso').selectedIndex].value;
	var durationCurso = document.getElementById('Duration').options[document.getElementById('Duration').selectedIndex].value;
	
	// Vaciar el div del calendario y las fechas seleccionadas
	document.getElementById('calendar').innerHTML = '';
	fechasel = Array();
	
	// Vaciar el precio del curso y actualizar el div de precios
	preCurso = '';
	
	muestra_precios();
	
	// Siempre que haya seleccionado la duración, llamar al calendario
	if (durationCurso > 0) {
		var param = 'id=' + idTipoCurso + '&duration=' + durationCurso + '&lang=' + lang;
		var url = '../jvs/getCalendar.php';
	
		var ajaxRequest =	new Ajax.Request(url, {
								method: 'get',
								parameters: param,
								asynchronous: true,
								onComplete: showResponse
							});
	}
}

// Esta función se ejecuta al responder AJAX a la llamada anterior
function showResponse(xmlHttpRequest, responseHeader) {
	var x;
	
	if (xmlHttpRequest.responseText != "1") {
		document.getElementById('calendar').innerHTML = '<p class="paragraph">' + text['beginningday'] + ':</p>\n' + xmlHttpRequest.responseText;
		for (x=0;x < fechasel.length;x++) {
			if (typeof document.getElementById(fechasel[x]) != 'undefined' &&
				document.getElementById(fechasel[x]) != null) {
				if (document.getElementById(fechasel[x]).className == 'selectable')
					document.getElementById(fechasel[x]).className = 'selectedActive';
				else if (document.getElementById(fechasel[x]).className == 'festivo')
					document.getElementById(fechasel[x]).className = 'selectedFestivo';
				else
					document.getElementById(fechasel[x]).className = 'selected';
			}
		}
	}
	else
		document.getElementById('calendar').innerHTML = '';
}

// Esta función es llamada desde el calendario para cambiar el mes o año. Responderá a la misma función de antes.
function changeCal(dateset) {
	var param = 'id=' + document.getElementById('TipoCurso').options[document.getElementById('TipoCurso').selectedIndex].value + '&duration=' + document.getElementById('Duration').options[document.getElementById('Duration').selectedIndex].value + '&lang=' + lang + '&setDate=' + dateset;
	var url = '../jvs/getCalendar.php';
	
	var ajaxRequest =	new Ajax.Request(url, {
							method: 'get',
							parameters: param,
							asynchronous: true,
							onComplete: showResponse
						});
}

// Función llamada al hacer click en un día seleccionable.
// Seleccionará todos los días correspondientes a la duración deseada.
function setActive(active, lastDay, arrastrar) {
	var x, lastSelected, param, url, ajaxRequest, fecha, dia;
	
	fechasel = Array();

	// Calcular el último día del rango
	lastSelected = dateAddWeeks(active, document.getElementById('Duration').options[document.getElementById('Duration').selectedIndex].value, arrastrar);
	
	// Deseleccionar previamente todos los días del mes en curso
	for (x=parseInt(active.substr(0,6) + "01");x <= lastDay;x++) {
		if (document.getElementById(x).className == 'selected')
			document.getElementById(x).className = '';
		else if (document.getElementById(x).className == 'selectedActive')
			document.getElementById(x).className = 'selectable';
		else if (document.getElementById(x).className == 'selectedFestivo')
			document.getElementById(x).className = 'festivo';
	}

	// Recorrer los días del rango y seleccionar lo que corresponda
	for (x=active;x <= ((lastSelected < lastDay) ? lastSelected : lastDay);x++) {
		x = verifydate(x);
		fecha = new Date(parserInt(x.toString().substr(0, 4)), parserInt(x.toString().substr(4, 2)) - 1, parserInt(x.toString().substr(6, 2)));
		dia = fecha.getDay();
		
		if (document.getElementById(x).className == 'selectable')
			document.getElementById(x).className = 'selectedActive';
		else if (dia > 0 && dia < 6) {
			if (document.getElementById(x).className == 'festivo')
				document.getElementById(x).className = 'selectedFestivo';
			else
				document.getElementById(x).className = 'selected';
		}
	}

	// Meter las fechas seleccionadas en un array para recordarlas.
	for (x=active;x <= lastSelected;x++) {
		x = verifydate(x);
		fecha = new Date(parserInt(x.toString().substr(0, 4)), parserInt(x.toString().substr(4, 2)) - 1, parserInt(x.toString().substr(6, 2)));
		dia = fecha.getDay();

		if (x <= lastSelected && dia > 0 && dia < 6)
			fechasel[fechasel.length] = x.toString();
	}

	// Recuperar el precio resultante del curso
	param = 'id=' + document.getElementById('TipoCurso').options[document.getElementById('TipoCurso').selectedIndex].value + '&duration=' + document.getElementById('Duration').options[document.getElementById('Duration').selectedIndex].value + '&lang=' + lang;
	
	if (document.getElementById('duracion').innerHTML.indexOf('id=Hours') > -1 || document.getElementById('duracion').innerHTML.indexOf('id="Hours"') > -1)
		param += '&hours=' + document.getElementById('Hours').options[document.getElementById('Hours').selectedIndex].value;
			
	url = '../jvs/getPrecio.php';
	
	ajaxRequest =	new Ajax.Request(url, {
						method: 'get',
						parameters: param,
						asynchronous: true,
						onComplete: showResponsePrecio
					});
}

// Función que se ejecuta tras la respuesta de AJAX a la llamada anterior
function showResponsePrecio(xmlHttpRequest, responseHeader) {
	var html = '';
	
	if (xmlHttpRequest.responseText != "1")
		html = text['from'] + ' <strong>' + cfecha(fechasel[0]) + '</strong> ' + text['to'] + ' <strong>' + cfecha(fechasel[fechasel.length - 1]) + '</strong><br />\n' + xmlHttpRequest.responseText;

	// Asignar el precio
	preCurso = html;

	muestra_precios();
}

/*
 *
 * ALOJAMIENTO
 *
 */
 
// Dilucidar entre mostrar el selector de régimen y duración del alojamiento (si no hubiera regímenes)
function selOpcion() {
	var idAlojamiento = document.getElementById('Alojamiento').options[document.getElementById('Alojamiento').selectedIndex].value;
	
	document.getElementById('regimenAloja').innerHTML = '';
	document.getElementById('regimenAloja').style.display='none';
	document.getElementById('duracionAloja').innerHTML = '';
	document.getElementById('calendarAloja').innerHTML = '';

	fechaselAloja = Array();

	if (idAlojamiento == 1)
		getRegimen();
	else
		getDurationAloja();
}

// Recuperar los regímenes posibles
function getRegimen() {
	var idAlojamiento = document.getElementById('Alojamiento').options[document.getElementById('Alojamiento').selectedIndex].value;
	
	// Vaciar el precio del alojamiento y ocultar div de precios si es necesario.
	preAloja = '';

	muestra_precios();
	
	// Recuperar regímenes
	var param = 'id=' + idAlojamiento + '&lang=' + lang;
	var url = '../jvs/getRegimen.php';
	
	var ajaxRequest =	new Ajax.Request(url, {
							method: 'get',
							parameters: param,
							asynchronous: true,
							onComplete: showResponseRegimen
						});
}

// Función ejecutada desde AJAX en respuesta a la llamada anterior
function showResponseRegimen(xmlHttpRequest, responseHeader) {
	if (xmlHttpRequest.responseText != "1") {
		document.getElementById('regimenAloja').innerHTML = xmlHttpRequest.responseText;
		document.getElementById('regimenAloja').style.display='block';
	}
	else {
		document.getElementById('regimenAloja').innerHTML = '';
		document.getElementById('regimenAloja').style.display='none';
	}
}

// Recuperar las duraciones posibles
function getDurationAloja() {
	var idAlojamiento = document.getElementById('Alojamiento').options[document.getElementById('Alojamiento').selectedIndex].value;
	if (document.getElementById('regimenAloja').innerHTML != "")
		var idRegimen = document.getElementById('Regimen').options[document.getElementById('Regimen').selectedIndex].value;
	else
		var idRegimen = 0;
		
	document.getElementById('duracionAloja').innerHTML = '';
	document.getElementById('calendarAloja').innerHTML = '';
	fechaselAloja = Array();
	
	// Vaciar el precio del alojamiento y ocultar div de precios si es necesario.
	preAloja = '';

	muestra_precios();
	
	// Recuperar duraciones
	var param = 'id=' + idAlojamiento + '&reg=' + idRegimen + '&lang=' + lang;
	var url = '../jvs/getDurationAloja.php';
	
	var ajaxRequest =	new Ajax.Request(url, {
							method: 'get',
							parameters: param,
							asynchronous: true,
							onComplete: showResponseDurationAloja
						});
}

// Función que se ejecuta desde AJAX en respuesta a la llamada anterior.
function showResponseDurationAloja(xmlHttpRequest, responseHeader) {
	if (xmlHttpRequest.responseText != "1")
		duracionAlojamiento = xmlHttpRequest.responseText;
	else
		duracionAlojamiento = '';

	document.getElementById('duracionAloja').innerHTML = duracionAlojamiento;
}

// Función que se llama para recuperar, en su caso, las horas por semana para el curso de particulares
function getExtraDays() {
	var idAlojamiento = document.getElementById('Alojamiento').options[document.getElementById('Alojamiento').selectedIndex].value;
	if (document.getElementById('regimenAloja').innerHTML != "")
		var idRegimen = document.getElementById('Regimen').options[document.getElementById('Regimen').selectedIndex].value;
	else
		var idRegimen = 0;
	
	document.getElementById('calendarAloja').innerHTML = '';
	fechaselAloja = Array();
	
	// Vaciar el precio del alojamiento y ocultar div de precios si es necesario.
	preAloja = '';

	muestra_precios();
	
	// Capturar por AJAX las diferentes horas/semana
	var param = 'id=' + idAlojamiento + '&reg=' + idRegimen + '&lang=' + lang;
	var url = '../jvs/getExtraDays.php';
	
	var ajaxRequest =	new Ajax.Request(url, {
							method: 'get',
							parameters: param,
							asynchronous: true,
							onComplete: showResponseExtraDays
						});
}

// Esta función se ejecuta cuando responde AJAX a la llamada anterior
function showResponseExtraDays(xmlHttpRequest, responseHeader) {
	
	// Capturar el nº de semanas seleccionado
	var selected = document.getElementById('DurationAloja').selectedIndex;

	// Poner El combo de horas por semana debajo de la duración en semanas
	if (xmlHttpRequest.responseText != "1")
		document.getElementById('duracionAloja').innerHTML = duracionAlojamiento + '\n' + xmlHttpRequest.responseText;
	else
		document.getElementById('duracionAloja').innerHTML = duracionAlojamiento;

	// Volver a seleccionar el nº de semanas que tenía
	document.getElementById('DurationAloja').selectedIndex = selected;
	
	// Llamar de todas formas al calendario. Puede que no seleccione ningún día extra
	getCalendarAloja();
}

// Llama al calendario de alojamiento con el Tipo de alojamiento seleccionado
function getCalendarAloja() {
	var idAlojamiento = document.getElementById('Alojamiento').options[document.getElementById('Alojamiento').selectedIndex].value;
	var diasAlojamiento = parseInt(document.getElementById('DurationAloja').options[document.getElementById('DurationAloja').selectedIndex].value) * 7;

	if (document.getElementById('duracionAloja').innerHTML.indexOf('id=DaysAloja') > -1 || document.getElementById('duracionAloja').innerHTML.indexOf('id="DaysAloja"') > -1)
		diasAlojamiento += parseInt(document.getElementById('DaysAloja').options[document.getElementById('DaysAloja').selectedIndex].value);
		
	// Vaciar el div del calendario y las fechas seleccionadas
	document.getElementById('calendarAloja').innerHTML = '';
	fechaselAloja = Array();
	
	// Vaciar el precio del alojamiento y actualizar el div de precios
	preAloja = '';
	
	muestra_precios();
	
	// Siempre que haya seleccionado la duración, llamar al calendario
	if (diasAlojamiento > 0) {
		var param = 'id=' + idAlojamiento + '&dias=' + diasAlojamiento + '&lang=' + lang;
		var url = '../jvs/getCalendarAloja.php';
	
		var ajaxRequest =	new Ajax.Request(url, {
								method: 'get',
								parameters: param,
								asynchronous: true,
								onComplete: showResponseAloja
							});
	}
}

// Esta función se ejecuta al responder AJAX a la llamada anterior
function showResponseAloja(xmlHttpRequest, responseHeader) {
	var x;
	
	if (xmlHttpRequest.responseText != "1") {
		document.getElementById('calendarAloja').innerHTML = '<p class="paragraph">' + text['beginningday'] + ':</p>\n' + xmlHttpRequest.responseText;
		for (x=0;x < fechaselAloja.length;x++) {
			if (typeof document.getElementById(fechaselAloja[x] + 'Aloja') != 'undefined' &&
				document.getElementById(fechaselAloja[x] + 'Aloja') != null) {
				if (document.getElementById(fechaselAloja[x] + 'Aloja').className == 'selectable')
					document.getElementById(fechaselAloja[x] + 'Aloja').className = 'selectedActive';
				else
					document.getElementById(fechaselAloja[x] + 'Aloja').className = 'selected';
			}
		}
	}
	else
		document.getElementById('calendarAloja').innerHTML = '';
}

// Esta función es llamada desde el calendario para cambiar el mes o año. Responderá a la misma función de antes.
function changeCalAloja(dateset) {
	var diasAlojamiento = document.getElementById('DurationAloja').options[document.getElementById('DurationAloja').selectedIndex].value * 7;
	
	if (document.getElementById('duracionAloja').innerHTML.indexOf('id=DaysAloja') > -1 || document.getElementById('duracionAloja').innerHTML.indexOf('id="DaysAloja"') > -1)
		diasAlojamiento += parseInt(document.getElementById('DaysAloja').options[document.getElementById('DaysAloja').selectedIndex].value);

	var param = 'id=' + document.getElementById('Alojamiento').options[document.getElementById('Alojamiento').selectedIndex].value + '&dias=' + diasAlojamiento + '&lang=' + lang + '&setDate=' + dateset;
	var url = '../jvs/getCalendarAloja.php';
	
	var ajaxRequest =	new Ajax.Request(url, {
							method: 'get',
							parameters: param,
							asynchronous: true,
							onComplete: showResponseAloja
						});
}

// Función llamada al hacer click en un día seleccionable.
// Seleccionará todos los días correspondientes a la duración deseada.
function setActiveAloja(active, lastDay) {
	var x, days, lastSelected, param, url, ajaxRequest;
	
	active = active.substr(0, active.length - 5);	// Quitar el sufijo 'Aloja'
	
	fechaselAloja = Array();
	
	// Si está activado Transfer, desactivarlo y obligar a seleccionarlo de nuevo si quiere.
	if (document.getElementById('calendarAloja').innerHTML.indexOf('id="transfer"') > -1 ||
		document.getElementById('calendarAloja').innerHTML.indexOf('id=transfer') > -1)
			document.getElementById('transfer').checked = false;

	// Calcular el último día del rango
	days  = parseInt(document.getElementById('DurationAloja').options[document.getElementById('DurationAloja').selectedIndex].value) * 7;
	
	if (document.getElementById('duracionAloja').innerHTML.indexOf('id=DaysAloja') > -1 || document.getElementById('duracionAloja').innerHTML.indexOf('id="DaysAloja"') > -1)
		days += parseInt(document.getElementById('DaysAloja').options[document.getElementById('DaysAloja').selectedIndex].value);
	
	lastSelected = dateAddDays(active, days);
	
	// Deseleccionar previamente todos los días del mes en curso
	for (x=parseInt(active.substr(0,6) + "01");x <= lastDay;x++) {
		if (document.getElementById(x + 'Aloja').className == 'selected')
			document.getElementById(x + 'Aloja').className = '';
		else if (document.getElementById(x + 'Aloja').className == 'selectedActive')
			document.getElementById(x + 'Aloja').className = 'selectable';
	}

	// Recorrer los días del rango y seleccionar lo que corresponda
	for (x=active;x <= ((lastSelected < lastDay) ? lastSelected : lastDay);x++) {
		x = verifydate(x);
		
		if (document.getElementById(x + 'Aloja').className == 'selectable')
			document.getElementById(x + 'Aloja').className = 'selectedActive';
		else if (document.getElementById(x + 'Aloja').className != 'selectedActive')
			document.getElementById(x + 'Aloja').className = 'selected';
	}

	// Meter las fechas seleccionadas en un array para recordarlas.
	for (x=active;x <= lastSelected;x++) {
		x = verifydate(x);

		if (x <= lastSelected)
			fechaselAloja[fechaselAloja.length] = x.toString();
	}

	// Recuperar el precio resultante del curso
	param = 'id=' + document.getElementById('Alojamiento').options[document.getElementById('Alojamiento').selectedIndex].value + '&duration=' + document.getElementById('DurationAloja').options[document.getElementById('DurationAloja').selectedIndex].value + '&lang=' + lang;

	if (document.getElementById('regimenAloja').innerHTML != '')
		param+= '&reg=' + document.getElementById('Regimen').options[document.getElementById('Regimen').selectedIndex].value;
	else
		param+= '&reg=0';
	
	if (document.getElementById('duracionAloja').innerHTML.indexOf('id=DaysAloja') > -1 || document.getElementById('duracionAloja').innerHTML.indexOf('id="DaysAloja"') > -1)
		param+= '&days=' + document.getElementById('DaysAloja').options[document.getElementById('DaysAloja').selectedIndex].value;
	else
		param+= '&days=0';
	
	param += '&dtosanta=' + descuentosanta + '&dtoferia=' + descuentoferia;
	
	url = '../jvs/getPrecioAloja.php';
	
	ajaxRequest =	new Ajax.Request(url, {
						method: 'get',
						parameters: param,
						asynchronous: true,
						onComplete: showResponsePrecioAloja
					});
}

// Función que se ejecuta tras la respuesta de AJAX a la llamada anterior
function showResponsePrecioAloja(xmlHttpRequest, responseHeader) {
	var html = '', precioTransfer;
	
	if (xmlHttpRequest.responseText != "1") {
		precioTransfer = xmlHttpRequest.responseText.substr(xmlHttpRequest.responseText.lastIndexOf('_') + 1);
		html = text['from'] + ' <strong>' + cfecha(fechaselAloja[0]) + '</strong> ' + text['to'] + ' <strong>' + cfecha(fechaselAloja[fechaselAloja.length - 1]) + '</strong><br />\n' + xmlHttpRequest.responseText.substr(0, xmlHttpRequest.responseText.lastIndexOf('_'));
	}

	// Asignar el precio
	preAloja = html;

	// Incluir el transfer
	if (preAloja != "") {
		if (document.getElementById('calendarAloja').innerHTML.indexOf('id="transfer" ') == -1 &&
			document.getElementById('calendarAloja').innerHTML.indexOf('id=transfer ') == -1)
				document.getElementById('calendarAloja').innerHTML = document.getElementById('calendarAloja').innerHTML + '<br />\n<input type="checkbox" name="transfer" id="transfer" value="' + precioTransfer + '" onclick="muestra_precios()" /><label for="transfer">' + text['wishtransfer'] + '</label>';
	}

	// Recopilar y mostrar precios
	muestra_precios();
}

/*
 *
 * FUNCIONES UTILES
 *
 */

function muestra_precios() {

	// Recopila información y muestra los precios. Si no hay precios que mostrar, ocultar el div.

	if ((preCurso + preAloja) != "") {
		if (preCurso != "") {
			html = preCurso;
			elements = text['course'];
			
			if (preAloja != "") {
				html += '<br /><br />' + preAloja;
				elements += '+' + text['accommodation'];
			}
		}
		else if (preAloja != "") {
			html = preAloja;
			elements = text['accommodation'];
		}

		if (document.getElementById('calendarAloja').innerHTML != "") {
			if (document.getElementById('transfer').checked == true) {
				document.getElementById('precioCurso').innerHTML = html + '<br /><br />' + text['transfer'] + ': <strong>' + formatNumber(document.getElementById('transfer').value, 0, lang) + ' &euro;</strong><br /><br />\n<strong>' + text['total'] + ' ' + elements + '+' + text['transfer'] + ': ' + formatNumber(cursoTotal(preCurso, preAloja) + parseFloat(document.getElementById('transfer').value), 2, lang) + ' &euro;</strong>';
			}
			else
				document.getElementById('precioCurso').innerHTML = html + '<br /><br /><strong>' + text['total'] + ' ' + elements + ': ' + formatNumber(cursoTotal(preCurso, preAloja), 2, lang) + ' &euro;</strong>';
		}
		else
			document.getElementById('precioCurso').innerHTML = html + '<br /><br /><strong>' + text['total'] + ' ' + elements + ': ' + formatNumber(cursoTotal(preCurso, preAloja), 2, lang) + ' &euro;</strong>';

		setEnrol();
		document.getElementById('precioCurso').style.display='block';
	}
	else {
		setEnrol();
		document.getElementById('precioCurso').style.display='none';
	}
	
	if (fechasel.length > 0 && (document.getElementById('Alojamiento').selectedIndex == 0 || fechaselAloja.length > 0))
		document.getElementById('SubmitCalc').disabled = false;
	else
		document.getElementById('SubmitCalc').disabled = true;
}

function str_replace(buscar, reemplazar, objeto) {
	var x, result = "", trozos = new Array();
	
	trozos = objeto.split(buscar);
	
	for (x=0;x < trozos.length;x++) {
		if (x > 0)
			result += reemplazar;
		result += trozos[x];
	}
	return result;
}

function formatNumber(number, decimals, language) {
	if (language == "en")
		return number_format(number, decimals, ".", ",");
	else if (language == "fr")
		return number_format(number, decimals, ",", " ");
	else
		return number_format(number, decimals, ",", ".");
}

function number_format(number, decimals, decimal_char, millar_char) {
	var x, group=0, enterores='', decimal;
	
	number = number.toString();
	
	partes = number.split('.');
	entero = partes[0].toString();
	
	if (partes.length > 1)
		decimal = partes[1].toString();
	else
		decimal = '';
	
	for (x=entero.length - 1;x >=0;x--) {
		if (group != 3) {
			group++;
			enterores = entero.substr(x,1) + enterores;
		}
		else {
			group=1;
			enterores = entero.substr(x,1) + millar_char + enterores;
		}
	}
	
	if (decimal.length < decimals) {
		for (x=decimal.length;x < decimals;x++)
			decimal = decimal + '0';
	}
	else {
		decimal = Math.round(decimal / Math.pow(10, decimal.length - decimals));
		decimal = decimal.toString();
		for (x=decimal.length;x < decimals;x++)
			decimal = '0' + decimal;
	}
	return enterores + decimal_char + decimal;
}

// Captura los precios del curso y el alojamiento
// de los HTML memorizados.
function cursoTotal(precioCurso, precioAloja) {
	var x;
	
	if (precioCurso != "") {
		fin = precioCurso.lastIndexOf(' &euro;');
		for (x = (fin - 1);precioCurso.substr(x, 1) != '>';x--);
		ini = x + 1;

		html = precioCurso.substr(ini, fin - ini);
		if (lang == "en")
			html = str_replace(",", "", html);
		else if (lang == "fr") {
			html = str_replace(" ", "", html);
			html = str_replace(",", ".", html);
		}
		else {
			html = str_replace(".", "", html);
			html = str_replace(",", ".", html);
		}
	}
	else
		html = "0";
	
	if (precioAloja != "") {
		fin = precioAloja.lastIndexOf(' &euro;');
		for (x = (fin - 1);precioAloja.substr(x, 1) != '>';x--);
		ini = x + 1;

		html2 = precioAloja.substr(ini, fin - ini);
		if (lang == "en")
			html2 = str_replace(",", "", html2);
		else if (lang == "fr") {
			html2 = str_replace(" ", "", html2);
			html2 = str_replace(",", ".", html2);
		}
		else {
			html2 = str_replace(".", "", html2);
			html2 = str_replace(",", ".", html2);
		}
	}
	else
		html2 = "0";

	return parseFloat(html) + parseFloat(html2);
}

// Convierte fecha de aaaa-mm-dd a dd/mm/aaaa
function cfecha(fecha) {
	return fecha.substr(6, 2) + '/' + fecha.substr(4, 2) + '/' + fecha.substr(0, 4);
}

// Calcula el día resultante de añadir 'numsemanas' semanas al dia 'fechaini', descontando 'arrastrar' días.
function dateAddWeeks(fechaini, numsemanas, arrastrar) {
	var fecha = new Date(parserInt(fechaini.substr(0, 4)), parserInt(fechaini.substr(4, 2)) - 1, parserInt(fechaini.substr(6, 2)));

	var ms = fecha.getTime();
	ms += ((numsemanas * 7) - 1 - arrastrar) * 24 * 60 * 60 * 1000;
	
	var nueva = new Date(ms);
	
	var dia = nueva.getDate() + "";
	var mes = (nueva.getMonth() + 1) + "";
	var anno = nueva.getFullYear() + "";
	
	dia = (dia.length < 2) ? "0" + dia : dia;
	mes = (mes.length < 2) ? "0" + mes : mes;
	
	return anno + mes + dia + "";
}

// Calcula el día resultante de añadir 'numdias' días al dia 'fechaini'.
function dateAddDays(fechaini, numdias) {
	var fecha = new Date(parserInt(fechaini.substr(0, 4)), parserInt(fechaini.substr(4, 2)) - 1, parserInt(fechaini.substr(6, 2)));
	var x, ini, fech;
	
	var ms = fecha.getTime();
	ms += (numdias - 1) * 24 * 60 * 60 * 1000;
	
	var nueva = new Date(ms);
	
	var dia = nueva.getDate() + "";
	var mes = (nueva.getMonth() + 1) + "";
	var anno = nueva.getFullYear() + "";
	
	dia = (dia.length < 2) ? "0" + dia : dia;
	mes = (mes.length < 2) ? "0" + mes : mes;
	
	// Siempre que sea apartamento propio, tener en cuenta las Fiestas Mayores
	
	descuentosanta = 0;
	descuentoferia = 0;
	
	if (document.getElementById('Alojamiento').options[document.getElementById('Alojamiento').selectedIndex].value == '3') {

		// Capturar los días del alojamiento general que caigan en SS o Feria
		
		for (x=parserInt(fechaini);x <= parserInt(anno + mes + dia + "");x++) {
			x = verifydate(x);
			
			fech = x + "";
			fech = fech.substr(0, 4) + "-" + fech.substr(4, 2) + "-" + fech.substr(6, 2);
			
			if (in_array(fech, santa))
				descuentosanta++;
			else if (in_array(fech, feria))
				descuentoferia++;
		}

		// Añadir los días que haya pillado entre semana santa o feria,

		ini = anno + mes + dia + "";
		for (x=parserInt(ini);;x++) {
			x = verifydate(x);
		
			fech = x + "";
			fech = fech.substr(0, 4) + "-" + fech.substr(4, 2) + "-" + fech.substr(6, 2);
		
			if (in_array(fech, santa) || in_array(fech, feria)) {
				anno = x.toString().substr(0, 4);
				mes = x.toString().substr(4, 2);
				dia = x.toString().substr(6, 2);
			}
			else
				break;
		}
	}
	
	return anno + mes + dia + "";
}

function in_array(aguja, pajar) {
	for (var x=0;x < pajar.length;x++) {
		if (pajar[x] == aguja)
			return true;
	}
	
	return false;
}

// Si la fecha existe, retorna ésta. Si no existe, se va al día 1 del mes siguiente.
function verifydate(fecha) {
	var dia, mes, anno, maxdia, fecha;
	
	fecha = fecha.toString();
	
	anno = parserInt(fecha.substr(0, 4));
	mes = parserInt(fecha.substr(4, 2));
	dia = parserInt(fecha.substr(6, 2));
	
	if (mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12)
		maxdia = 31;
	else if (mes == 4 || mes == 6 || mes == 9 || mes == 11)
		maxdia = 30;
	else if (bisiesto(anno))
		maxdia = 29;
	else
		maxdia = 28;
	
	if (anno >= 1900 && anno <= 2099 && mes >= 1 && mes <= 12 && dia >= 1 && dia <= maxdia)
		return parserInt(fecha);
	else {
		mes++;
		
		if (mes > 12) {
			mes = 1;
			anno++;
		}
		
		mes = mes.toString();
		mes = (mes.length < 2) ? "0" + mes : mes;
		
		anno = anno.toString();
		
		return parserInt(anno + mes + "01");
	}
}

// Recupera los datos del curso y alojamiento para incluirlos en el formulario
function setEnrol() {
	var form = document.getElementById('enrolnow');
	
	form.tipocurso.value='';
	form.weekscurso.value='';
	form.hourscurso.value='';
	form.inicurso.value='';
	form.fincurso.value='';
	
	form.tipoaloja.value='';
	form.weeksaloja.value='';
	form.diasaloja.value='';
	form.regimenaloja.value='';
	form.inialoja.value='';
	form.finaloja.value='';
	form.dtosanta.value='';
	form.dtoferia.value='';
	
	form.transfer.value='0';

	if (fechasel.length > 0) {
		form.tipocurso.value = document.getElementById('TipoCurso').options[document.getElementById('TipoCurso').selectedIndex].value;
		form.weekscurso.value = document.getElementById('Duration').options[document.getElementById('Duration').selectedIndex].value;
		
		if (document.getElementById('duracion').innerHTML.indexOf('id=Hours') > -1 || document.getElementById('duracion').innerHTML.indexOf('id="Hours"') > -1)
			form.hourscurso.value = document.getElementById('Hours').options[document.getElementById('Hours').selectedIndex].value;

		form.inicurso.value = fechasel[0];
		form.fincurso.value = fechasel[fechasel.length - 1];
	}
	
	if (fechaselAloja.length > 0) {
		form.tipoaloja.value = document.getElementById('Alojamiento').options[document.getElementById('Alojamiento').selectedIndex].value;
		form.weeksaloja.value = document.getElementById('DurationAloja').options[document.getElementById('DurationAloja').selectedIndex].value;

		if (document.getElementById('duracionAloja').innerHTML.indexOf('id=DaysAloja') > -1 || document.getElementById('duracionAloja').innerHTML.indexOf('id="DaysAloja"') > -1)
			form.diasaloja.value = document.getElementById('DaysAloja').options[document.getElementById('DaysAloja').selectedIndex].value;
		else
			form.diasaloja.value = '0';

		if (document.getElementById('regimenAloja').innerHTML != '')
			form.regimenaloja.value = document.getElementById('Regimen').options[document.getElementById('Regimen').selectedIndex].value;

		form.inialoja.value = fechaselAloja[0];
		form.finaloja.value = fechaselAloja[fechaselAloja.length - 1];

		form.dtosanta.value = descuentosanta;
		form.dtoferia.value = descuentoferia;
		
		if (document.getElementById('calendarAloja').innerHTML.indexOf('id="transfer"') > -1 || document.getElementById('calendarAloja').innerHTML.indexOf('id=transfer') > -1) {
			if (document.getElementById('transfer').checked == true)
				form.transfer.value = '1';
		}
	}
}

// -->