jQuery(document).ready(function(){


	fnacimiento = new Calendar(
			{ f_nacimiento: 'd/m/Y' },
			{
				classes: ['alternate'],
				navigation: 2,
				tweak: {x: 3, y: -3}
			}
		);

	info_viaje_fllegada = new Calendar(
			{ info_viaje_fecha_llegada: 'd/m/Y' },
			{
				classes: ['alternate'],
				navigation: 2,
				tweak: {x: 3, y: -3}
			}
		);

	fecha = new Date();
	anno_actual = fecha.getFullYear();
	mes = fecha.getMonth()+1;

	jQuery("#frmReserva #fecha_inicio1").change(function(){
		jQuery("#fecha_seleccionada").val(jQuery("#fecha_inicio1 option:selected").val());
		jQuery("#alojamiento_fecha_salida").val(addToDate(jQuery("#fecha_seleccionada").val(), jQuery("#semanas").val()*7));
		controla_fechasReserv();
	});

	jQuery("#frmReserva #fecha_inicio2").change(function(){
		jQuery("#fecha_seleccionada").val(jQuery("#fecha_inicio2 option:selected").val());
		jQuery("#alojamiento_fecha_salida").val(addToDate(jQuery("#fecha_seleccionada").val(), jQuery("#semanas").val()*7));
		controla_fechasReserv();
	});

	jQuery("#frmReserva #alojamiento_tipo").change(function(){
		gestiona_alojamientos(jQuery(this).attr('name'));
	});

	jQuery("#frmReserva #alojamiento_tipo_alt").change(function(){
		gestiona_alojamientos(jQuery(this).attr('name'));
	});

	jQuery("#frmReserva #seleccion_curso #curso, #subcurso, #semanas").change(function(){
	  // Vector para saber cu�l es el siguiente combo a llenar
	  var combos = new Array();
	  var bloqueos_vacios = new Array();
	  combos['curso'] = "subcurso";
	  combos['subcurso'] = "semanas";
	  // Tomo el nombre del combo al que se le a dado el clic por ejemplo: curso
	  posicion = jQuery(this).attr("name");
	  // Tomo el valor de la opci�n seleccionada
	  valor = jQuery(this).val()

	  reinicia_datosReserv();

			// Evalu�  que si es curso, vaci� los combos de subcurso y semana
	  switch (posicion){
		case "curso":
			jQuery("#capa_zona_cursos button.alternate").fadeOut(500);
			jQuery("#subcurso").html('<option value="" selected="selected">'+array_idioma['seleccione']+'</option>')
			jQuery("#semanas").html('<option value="" selected="selected">'+array_idioma['seleccione']+'</option>')
			jQuery("#fecha_inicio").val('')
			jQuery("#fecha_info").fadeOut(500);
			jQuery("#fecha_info_desc").html('');
			jQuery("#fecha_info_desc").fadeOut();
			jQuery("#fecha_inicio").attr('disabled','disabled');
			jQuery("#alojamiento_alt").fadeOut(1000);


			break;

		case "subcurso":
			jQuery("#capa_zona_cursos button.alternate").fadeOut(500);
			// Llamamos a pagina de reglas_fecha.php donde ejecuto las consultas para llenar los combos
			jQuery.post("formulario/includes/reglas_fecha.php",{
				idioma_fecha:idioma, // Idioma del texto
				id:valor // Valor seleccionado
			},function(data){
				//Tomo el resultado de pagina e inserto los datos en el combo indicado
				jQuery("#fecha_info_desc").fadeOut(500, function(){
				jQuery("#fecha_info_desc").html(data);
			});
				jQuery("#fecha_info").fadeIn(500);
				jQuery("#fecha_info_desc").fadeIn(700);

				jQuery("#fecha_inicio").val('');
				jQuery("#fecha_inicio").attr('disabled','disabled');
			})

			  if(posicion !='semanas' || valor==""){
				jQuery("#semanas").html('<option value="" selected="selected">'+array_idioma['seleccione']+'</option>');
				}
			break;

			case "semanas":
				if (valor==""){
					jQuery("#capa_zona_cursos button.alternate").fadeOut(500);
					jQuery("#fecha_inicio").val('');
					jQuery("#alojamiento_fecha_llegada").val('');
					return false;
				}
				//Comienzo la comprobaci�n de reglas para las fechas en funci�n del subcurso seleccionado
				switch (jQuery('#subcurso option:selected').val()){
					case "0": //Ninguno seleccionado
						jQuery("#fecha_inicio").attr('disabled','disabled');
						jQuery("#fecha_inicio").val('');

					case "1":
						//crea_calendarioReserv('1-31 6-8 *');
						var bloqueo_case1 = new Array();
						bloqueo_case1[0] = '1-31 7-9 *';
						bloqueo_case1[1] = '0 1-6,10-12 * 0,2-6';
						crea_calendarioReserv(bloqueo_case1);

					break;

					case "8": //Carnaval
						jQuery("#fecha_inicio").attr('disabled','disabled');
						switch (jQuery(this).val()){
							case "1":
								fecha_del_curso ='15/02/'+anno_actual;
								jQuery("#fecha_inicio").val(fecha_pasada(fecha_del_curso));
								jQuery("#fecha_seleccionada").val(jQuery("#fecha_inicio").val());

								break;

							case "2":
								fecha_del_curso ='08/02/'+anno_actual;
								jQuery("#fecha_inicio").val(fecha_pasada(fecha_del_curso));
								jQuery("#fecha_seleccionada").val(jQuery("#fecha_inicio").val());

								break;
						}
						jQuery("#alojamiento_fecha_salida").val(addToDate(jQuery("#fecha_seleccionada").val(), jQuery("#semanas").val()*7));
						controla_fechasReserv();

						break;

					case "9": //Semana Santa
						jQuery("#fecha_inicio").attr('disabled','disabled');
						if (jQuery(this).val()==1){
							fecha_del_curso ='29/03/'+anno_actual;
							jQuery("#fecha_inicio").val(fecha_pasada(fecha_del_curso));
							jQuery("#fecha_seleccionada").val(jQuery("#fecha_inicio").val());
							jQuery("#alojamiento_fecha_salida").val(addToDate(jQuery("#fecha_seleccionada").val(), jQuery("#semanas").val()*7));
							controla_fechasReserv();
						}
						break;

					case "10": // Negocios
					case "11": // Turismo
					case "12": // Profesores ELE
						jQuery("#fecha_inicio").hide();
						jQuery("#fecha_inicio1").show();
						elimina_calendario();
						myCal = new Calendar(
							{ fecha_inicio1: 'd/m/Y' },
							{
								classes: ['alternate'],
								direction: 1,
								navigation: 2,
								tweak: {x: 3, y: -3},
								onHideComplete: (function(){
									jQuery("#fecha_seleccionada").val(jQuery("#fecha_inicio1 option:selected").val());
									jQuery("#alojamiento_fecha_salida").val(addToDate(jQuery("#fecha_seleccionada").val(), jQuery("#semanas").val()*7));
									controla_fechasReserv();
								})
							}
						);
						jQuery("#fecha_seleccionada").val(jQuery("#fecha_inicio1 option:selected").val());
						jQuery("#alojamiento_fecha_salida").val(addToDate(jQuery("#fecha_seleccionada").val(), jQuery("#semanas").val()*7));
						controla_fechasReserv();

						break;

					case "13": // Espa�ol 50+
						jQuery("#fecha_inicio").hide();
						jQuery("#fecha_inicio2").show();
						jQuery("#fecha_seleccionada").val(jQuery("#fecha_inicio2 option:selected").val());
						elimina_calendario();
						myCal = new Calendar(
							{ fecha_inicio2: 'd/m/Y' },
							{
								classes: ['alternate'],
								direction: 1,
								navigation: 2,
								tweak: {x: 3, y: -3},
								onHideComplete: (function(){
									jQuery("#fecha_seleccionada").val(jQuery("#fecha_inicio2 option:selected").val());
									jQuery("#alojamiento_fecha_salida").val(addToDate(jQuery("#fecha_seleccionada").val(), jQuery("#semanas").val()*7));
									controla_fechasReserv();
								})
							}
						);
						jQuery("#fecha_seleccionada").val(jQuery("#fecha_inicio1 option:selected").val());
						jQuery("#alojamiento_fecha_salida").val(addToDate(jQuery("#fecha_seleccionada").val(), jQuery("#semanas").val()*7));
						controla_fechasReserv();

						break;

					case "14": // Clases Privadas
					case "15": // Clases semiprivadas
						jQuery("#capa_clases").show();
						crea_calendarioReserv(bloqueos_vacios);

						break;

					case "16": // Otros destinos C�diz
						jQuery("#capa_otrodestino").show();
						jQuery("#alojamiento_alt").fadeIn(1000);
						crea_calendarioReserv(bloqueos_vacios);

						break;
					default:
						crea_calendarioReserv(bloqueos_vacios);
				}
				break;
	  }
	  /* En caso contrario agregado el letreo de cargando a el combo siguiente
	  Ejemplo: Si seleccione curso voy a tener que el siguiente seg�n mi vector combos es: subcurso  por qu�  combos [curso] = subcurso
	  */
	  if (valor!=""){
		jQuery("#"+combos[posicion]).html('<option selected="selected" value="">'+array_idioma['cargando']+'</option>');
	  }
	  else
	  {
		jQuery("#fecha_inicio").val('');
		jQuery("#fecha_inicio").attr('disabled','disabled');
	  }
		/* Verificamos si el valor seleccionado es diferente de vacio y si el combo es diferente de semana, esto porque no tendr�a caso hacer la consulta a semana porque no existe un combo dependiente de este */
		  if(valor!="" || posicion !='semanas'){
		  // Llamamos a pagina de combos.php donde ejecuto las consultas para llenar los combos
			jQuery.post("formulario/includes/combos.php",{
				seleccione: array_idioma['seleccione'],
				idioma: idioma,
				combo:jQuery(this).attr("name"), // Nombre del combo
				id:valor // Valor seleccionado
			},function(data){
				//Tomo el resultado de pagina e inserto los datos en el combo indicado
				jQuery("#"+combos[posicion]).html(data);
			  })
		  }
	})
})







//=================================================================================================
//                             Funciones compartidas en la aplicacion
//=================================================================================================
  function convertirAFecha(fecha) {
	var date = new Date();
	var mes = new Array();
	mes = fecha.split('/');
	date.setMonth(mes[1] - 1); //en javascript los meses van de 0 a 11
	date.setDate(mes[0]);
	date.setYear(mes[2]);
	return date;
  }


/* Funcion: elimina_calendario()
 *	Descripcion: Se encarga de reiniciar el calendario cuando cambia el estado del combo de semanas, subcursos o cursos.
 */
 function elimina_calendario(){
	myCal = null;

	jQuery("#capa_zona_cursos button.alternate").remove();
	jQuery("#fecha_inicio").val('');
	jQuery("#fecha_seleccionada").val('');
	jQuery("#alojamiento_fecha_llegada").val('');
	jQuery("#alojamiento_fecha_salida").val('');
	jQuery("#alojamiento_fecha_llegada_alt").val('');
	jQuery("#alojamiento_fecha_salida_alt").val('');
  }

 /* Funcion: controla_fechasReserv()
  *	Descripcion: Cuando se ha seleccionado una fecha de inicio se pone en marcha la maquinaria para crear los campos de fecha de llegada, salida, etc.
  */
  function controla_fechasReserv(){
	myCall_fechas_alojamiento = null;
	myCall_fechas_alojamiento_alt = null;
	jQuery("#alojamiento button.alternate").remove();
	jQuery("#alojamiento_alt button.alternate").remove();

	if (jQuery("#fecha_seleccionada").val()!=""){

		// Convierto a formato fecha la fecha de inicio del curso para poder trabajar mehjor con ella.
		fecha_partida = convertirAFecha(jQuery("#fecha_seleccionada").val());
		anno_bloqueo = fecha_partida.getFullYear();
		/*=======================================================================
								INICIO CONTROL FECHA DE LLEGADA
		=========================================================================
		Descripcion:	Comienzo controlando la fecha de llegada que no puede ser
						posterior a la fecha de inicio del curso y por supuesto
						no puede ser inferior al dia actual.
		========================================================================*/

		var bloqueosReserv = new Array();
		//bloqueo los dias hasta final de mes del a�o y el mes de inicio del curso
		bloqueosReserv[0] = fecha_partida.getDate()+'-31 '+(fecha_partida.getMonth()+1)+' '+anno_bloqueo;

		//bloqueo todos los dias del mes de los meses que quedan hasta final de a�o
		bloqueosReserv[1] = '1-31 '+(fecha_partida.getMonth()+2)+'-12 '+anno_bloqueo;

		//bloqueo 20 a�os en adelante para que no haya problemas
		bloqueosReserv[2] = '1-31 * '+(anno_bloqueo+1)+'-'+(anno_bloqueo+20);

		myCall_fechas_alojamiento = new Calendar(
			{ alojamiento_fecha_llegada: 'd/m/Y' },
			{
				classes: ['alternate'],
				tweak: {x: 3, y: -3},
				direction: 1,
				navigation: 2,
				blocked: bloqueosReserv
			}
		);
		/*=======================================================================
								FIN CONTROL FECHA DE LLEGADA
		========================================================================*/





		/*=======================================================================
								INICIO CONTROL FECHA DE SALIDA
		=========================================================================
		Descripcion:	Controlo ahora la fecha de salida que se coloca con el
						valor de la siguiente formula:
							fecha_inicio + (semanas*7)
						es decir, la fecha de finalizaci�n del curso.
		========================================================================*/

		myCall_fechas_alojamiento = new Calendar(
			{ alojamiento_fecha_salida: 'd/m/Y' },
			{
				classes: ['alternate'],
				tweak: {x: 3, y: -3},
				navigation: 2,
				direction: 1
			}
		);
		/*==========================================================================
								FIN CONTROL FECHA DE SALIDA
		===========================================================================*/



		/*
		* Pregunto si el subcurso que se ha seleccionado ha sido el
		* 16 que es el de la combinacion de destinos para mostrar los
		* calendarios asociados
		*/
		if (jQuery('#subcurso option:selected').val()=='16'){


			/*=======================================================================
							INICIO CONTROL FECHA DE LLEGADA (OTRO DESTINO)
			=========================================================================
			Descripcion:	Controlo ahora la fecha de llegada de otro destino para
							que sea despues de la fecha de inicio del curso y antes
							de que termine el curso.
			========================================================================*/

			fecha_fin_curso = new Date();
			fecha_fin_curso = convertirAFecha(addToDate(jQuery("#fecha_seleccionada").val(), jQuery("#semanas").val()*7));

			var bloqueosReserv2 = new Array();
			if (anno_bloqueo==anno_actual){
				bloqueosReserv2[0] = '1-31 1-'+(fecha_partida.getMonth())+' '+anno_actual;
				bloqueosReserv2[1] = '1-'+fecha_partida.getDate()+' '+(fecha_partida.getMonth()+1)+' '+anno_actual;
				bloqueosReserv2[2] = fecha_fin_curso.getDate()+'-30 '+(fecha_fin_curso.getMonth()+1)+' '+anno_actual;
				bloqueosReserv2[3] = '1-31 '+(fecha_fin_curso.getMonth()+2)+'-12 '+anno_actual;
				bloqueosReserv2[4] = '1-31 * '+(anno_actual+1)+'-'+(anno_actual+20);
				bloqueosReserv2[5] = '';
		}
			else{
				bloqueosReserv2[0] = '1-31 * '+anno_actual;
				bloqueosReserv2[1] = '1-31 1-'+(fecha_partida.getMonth())+' '+anno_bloqueo;
				bloqueosReserv2[2] = '1-'+fecha_partida.getDate()+' '+(fecha_partida.getMonth()+1)+' '+anno_bloqueo;
				bloqueosReserv2[3] = fecha_fin_curso.getDate()+'-31 '+(fecha_fin_curso.getMonth()+1)+' '+anno_bloqueo;
				bloqueosReserv2[4] = '1-31 '+(fecha_fin_curso.getMonth()+2)+'-12 '+anno_bloqueo;
				bloqueosReserv2[5] = '1-31 * '+(anno_bloqueo+1)+'-'+(anno_bloqueo+20);
			}

			myCall_fechas_alojamiento_alt = new Calendar(
				{ alojamiento_fecha_llegada_alt: 'd/m/Y' },
				{
					classes: ['alternate'],
					tweak: {x: 3, y: -3},
					direction: 1,
					navigation: 2,
					blocked: [bloqueosReserv2[0], bloqueosReserv2[1], bloqueosReserv2[2], bloqueosReserv2[3], bloqueosReserv2[4], bloqueosReserv2[5]],
					onHideComplete: (function(){
						/*=======================================================================
										INICIO CONTROL FECHA DE SALIDA (OTRO DESTINO)
						=========================================================================
						Descripcion:	Controlo ahora la fecha de salida de otro destino para que
										sea despues de la llegada al sitio. No tiene fecha de
										salida
						========================================================================*/
						fecha_llegada_otro = new Date();
						fecha_llegada_otro = convertirAFecha(jQuery("#alojamiento_fecha_llegada_alt").val());

						var bloqueosReserv3 = new Array();
						if (anno_bloqueo==anno_actual){
							bloqueosReserv3[0] = '1-31 1-'+(fecha_partida.getMonth())+' '+anno_actual;
							bloqueosReserv3[1] = '1-'+fecha_llegada_otro.getDate()+' '+(fecha_llegada_otro.getMonth()+1)+' '+anno_actual;
							bloqueosReserv3[2] = fecha_fin_curso.getDate()+'-30 '+(fecha_fin_curso.getMonth()+1)+' '+anno_actual;
							bloqueosReserv3[3] = '1-31 '+(fecha_fin_curso.getMonth()+2)+'-12 '+anno_actual;
							bloqueosReserv3[4] = '1-31 * '+(anno_actual+1)+'-'+(anno_actual+20);
							bloqueosReserv3[5] = '';
						}
						else{
							bloqueosReserv3[0] = '1-31 * '+anno_actual;
							bloqueosReserv3[1] = '1-31 1-'+(fecha_partida.getMonth())+' '+anno_bloqueo;
							bloqueosReserv3[2] = '1-'+fecha_llegada_otro.getDate()+' 1-'+(fecha_llegada_otro.getMonth()+1)+' '+anno_bloqueo;
							bloqueosReserv3[3] = fecha_fin_curso.getDate()+'-31 '+(fecha_fin_curso.getMonth()+1)+' '+anno_bloqueo;
							bloqueosReserv3[4] = '1-31 '+(fecha_fin_curso.getMonth()+2)+'-12 '+anno_bloqueo;
							bloqueosReserv3[5] = '1-31 * '+(anno_bloqueo+1)+'-'+(anno_bloqueo+20);
						}

						jQuery("#alojamiento_fecha_salida_alt").val(jQuery("#alojamiento_fecha_salida").val());

						myCall_fechas_alojamiento = new Calendar(
							{ alojamiento_fecha_salida_alt: 'd/m/Y' },
							{
								classes: ['alternate'],
								tweak: {x: 3, y: -3},
								direction: 1,
								navigation: 2,
								blocked: [bloqueosReserv3[0], bloqueosReserv3[1], bloqueosReserv3[2], bloqueosReserv3[3], bloqueosReserv3[4], bloqueosReserv3[5]]
							}
						);
						/*=======================================================================
										FIN CONTROL FECHA DE SALIDA (OTRO DESTINO)
						========================================================================*/
					})
				}
			);

			/*=======================================================================
							FIN CONTROL FECHA DE LLEGADA (OTRO DESTINO)
			========================================================================*/
		}
	}
  }

  function crea_calendarioReserv(restriccion){
	elimina_calendario();

	myCal = new Calendar(
		{ fecha_inicio: 'd/m/Y' },
		{
			classes: ['alternate'],
			direction: 1,
			navigation: 2,
			tweak: {x: 3, y: -3},
			blocked: restriccion,
			onHideComplete: (function(){
				jQuery("#alojamiento_fecha_llegada").val('');
				jQuery("#alojamiento_fecha_salida").val('');
				jQuery("#alojamiento_fecha_llegada_alt").val('');
				jQuery("#alojamiento_fecha_salida_alt").val('');
				jQuery("#alojamiento button.alternate").remove();
				jQuery("#alojamiento_alt button.alternate").remove();

				if (jQuery('#fecha_inicio').val()!=''){
					jQuery("#fecha_seleccionada").val(jQuery("#fecha_inicio").val());
					jQuery("#alojamiento_fecha_salida").val(addToDate(jQuery("#fecha_seleccionada").val(), jQuery("#semanas").val()*7));
					controla_fechasReserv();
				}
			})
		}
	);

  }

  function reinicia_datosReserv(){
	jQuery("#fecha_inicio").show();
	jQuery("#fecha_inicio1 option:eq(0)").attr("selected", "selected");
	jQuery("#fecha_inicio2 option:eq(0)").attr("selected", "selected");
	jQuery("#num_clases option:eq(0)").attr("selected", "selected");
	jQuery("#otrodestino option:eq(0)").attr("selected", "selected");
	jQuery("#fecha_inicio1").hide();
	jQuery("#fecha_inicio2").hide();
	jQuery("#capa_clases").hide();
	jQuery("#capa_otrodestino").hide();
	jQuery("#alojamiento_fecha_salida").val('');
}

function gestiona_alojamientos(capa){

		prefijo='';
		if (capa.contains('alt')){
			prefijo = '_alt'
		}

		posicion = jQuery('#frmReserva #'+capa).val();

		if (posicion==''){
			jQuery('#frmReserva #pension'+prefijo).hide(500);
			jQuery('#frmReserva #sabanas'+prefijo).hide(500);
			opciones ='<option value="" selected="selected">'+array_idioma['seleccione']+'</option>';
		}
		else{

			opciones ='<option value="" selected="selected">'+array_idioma['seleccione']+'</option>';
			opciones +='<option value="'+array_idioma['lista_habitacion_1_value']+'">'+array_idioma['lista_habitacion_1']+'</option>';
			opciones +='<option value="'+array_idioma['lista_habitacion_2_value']+'">'+array_idioma['lista_habitacion_2']+'</option>';

			switch(posicion){
			case array_idioma['lista_alojamiento_1_value']:
				opciones +='<option value="'+array_idioma['lista_habitacion_3_value']+'">'+array_idioma['lista_habitacion_3']+'</option>';
				jQuery('#frmReserva #pension'+prefijo).hide(500, function(){
					jQuery('#frmReserva #sabanas'+prefijo).show(500);
				});

				jQuery('#frmReserva #pension'+prefijo+' option:eq(0)').attr('selected', 'selected');
				break;

			case array_idioma['lista_alojamiento_2_value']:
				jQuery('#frmReserva #sabanas'+prefijo).hide(500, function(){
					jQuery('#frmReserva #pension'+prefijo).show(500);
				});
				jQuery('#frmReserva #sabanas'+prefijo+' option:eq(0)').attr('selected', 'selected');
				break;
			}

		}
		jQuery('#alojamiento_tipo_habitacion'+prefijo).html(opciones);

}

function fecha_pasada(fecha_comprueba){
	//Esta comprobacion la hago para controlar el tema del a�o para algunas fechas fijas
	partes = fecha_comprueba.split('/');
	fecha_comprueba = convertirAFecha(fecha_comprueba);
	if (fecha_comprueba<=fecha){
		 partes[2]=anno_actual+1;
	}
	else{
		 partes[2]=anno_actual;
	}
	return partes.join('/');
}
