//Recojo los datos necesarios para los combos de fechas
function Recoger_Datos_Fechas() {
	mesentrada = $("#fecha_entrada_mes_ano").val();
	diaentrada = $("#fecha_entrada_dia").val();
	messalida = $("#fecha_salida_mes_ano").val();
	diasalida = $("#fecha_salida_dia").val();
	num_noches = $("#num_noches").val();
	
	//El minimo de noches es 1 y el maximo 30
	if (num_noches < 1 || num_noches == '') num_noches = 1;
	if (num_noches > 30) num_noches = 30;
	
	//Numero de elementos en los selects de dias
	dias_select_ent = $('#fecha_entrada_dia > option').length;
	dias_select_sal = $('#fecha_salida_dia > option').length;
	
	//Creo las fechas de entrada y salida para pasarlos a las funciones y al 400
	mesano_ent = mesentrada.split('-');
	mesano_sal = messalida.split('-');
	
	if (parseInt(diaentrada, 10) < 10) fechaEntrada = '0'+diaentrada+'/'+mesano_ent[0]+'/'+mesano_ent[1];
	else fechaEntrada = diaentrada+'/'+mesano_ent[0]+'/'+mesano_ent[1];
	if (parseInt(diasalida, 10) < 10) fechaSalida = '0'+diasalida+'/'+mesano_sal[0]+'/'+mesano_sal[1];
	else fechaSalida = diasalida+'/'+mesano_sal[0]+'/'+mesano_sal[1];

	if (parseInt(diaentrada, 10) < 10) nuevaFechaEnt = mesano_ent[1]+'-'+mesano_ent[0]+'-0'+diaentrada;
	else nuevaFechaEnt = mesano_ent[1]+'-'+mesano_ent[0]+'-'+diaentrada;
}

//Cambiar los select de los dias al cambiar de mes
function Cambiar_Select_Dias (ultimo, actuales, seleccionado, id) {
	if (ultimo > actuales) for (i=parseInt(actuales, 10)+1; i<=ultimo; ++i) $("#"+id).append("<option value='"+i+"'>"+i+"</option>");
	if (ultimo < actuales) for (i=parseInt(ultimo, 10)+1; i<=actuales; ++i) $("#"+id+" option[value="+i+"]").remove();
	$("#"+id+" option[value="+seleccionado+"]").attr("selected", true);
}

//Funcion para controlar las fechas de salida (al cambiar los combos de fechas en el buscador principal)
function Cambiar_Fechas_Salida(entradaD, num_dias) {
	//Sumo el numero de dias a la fecha de entrada    
	salidaN = Date.fromString(entradaD);
	salidaN.addDays(parseInt(num_dias, 10));
	ultimodia = salidaN.getDaysInMonth();
	salidaN = salidaN.asString().split('/');
    


	//Construyo la fecha que pasare al 400 y a JSON
	nuevaFechaSal = salidaN[2]+'-'+salidaN[1]+'-'+salidaN[0];
    
	
    
    
    //Selecciono el mes de salida
	mesano = salidaN[1]+'-'+salidaN[2];
            
	if ($("#fecha_salida_mes_ano option[value="+mesano+"]").attr("selected") == false) $("#fecha_salida_mes_ano option[value="+mesano+"]").attr("selected", true);
	    
	//Ponemos el valor correcto en el hidden de salida
	$("#fecha_salida").val(nuevaFechaSal);	    
        
	//Y cambiamos algo si hay que cambiar
	Cambiar_Select_Dias (ultimodia, dias_select_sal, parseInt(salidaN[0], 10), "fecha_salida_dia");	
}

//Funcion para cambiar las fechas de entrada
function Cambiar_Fechas_Entrada (entrada) {
	mesdiano = entrada.split('/');
	dia = parseInt(mesdiano[0], 10);
	mesano = mesdiano[1]+'-'+mesdiano[2];
	if ($("#fecha_entrada_mes_ano option[value="+mesano+"]").attr("selected") == false) $("#fecha_entrada_mes_ano option[value="+mesano+"]").attr("selected", true);

	//Vemos el dia que es para saber el maximo numero de dias que tiene el mes
	maximoDias = Date.fromString(entrada);
	ultimodia = maximoDias.getDaysInMonth();

	//Comprobamos el dia que debe estar marcado
	if (ultimodia < parseInt(dia, 10)) sel = ultimodia;
	else sel = parseInt(dia, 10);
	
	//Cambiamos la fecha de entrada en el hidden
	if (parseInt(dia, 10) < 10) nuevaFechaEnt = mesdiano[2]+'-'+mesdiano[1]+'-0'+dia;
	else nuevaFechaEnt = mesdiano[2]+'-'+mesdiano[1]+'-'+dia;
	
	//Ponemos el valor correcto en el hidden de entrada
	$("#fecha_entrada").val(nuevaFechaEnt);

	//Y cambiamos algo si hay que cambiar
	Cambiar_Select_Dias (ultimodia, dias_select_ent, sel, "fecha_entrada_dia");	
}

function noches_Entre (date1, date2) {
	var ONE_DAY = 1000 * 60 * 60 * 24

    // Convert both dates to milliseconds
    var date1_ms = date1.getTime()
    var date2_ms = date2.getTime()

    // Calculate the difference in milliseconds
    var difference_ms = date2_ms - date1_ms

    // Convert back to days and return
    num_noites= Math.round(difference_ms/ONE_DAY);
		if (num_noites<0) num_noites=num_noites*(-1);
		 
		 return num_noites;
}

//Mostrar el calendario de inicio
(function($){
	var initLayout = function() {
		var diasCortos = new Array();
		var meses = new Array();;
		
		var fechaHoy = $('#fecha_de_hoy').val().split('-');
		fechaHoy = fechaHoy[2]+'/'+fechaHoy[1]+'/'+fechaHoy[0];	
        
        
		var now = new Date();		      
		mesSel = now.getMonthName();
		mesSelSalida = now.addDays(1);
		mesSelSalida = mesSelSalida.getMonthName();


		var mesKViene = new Date();
		mesKViene = mesKViene.addMonths(1);	
        //alert("El mes que viene es:"+mesKViene);	
		if ((mesKViene.getMonth()+1) < 10) mesKViene = mesKViene.getDate()+'/0'+(mesKViene.getMonth()+1)+'/'+mesKViene.getFullYear(); 
		else mesKViene = mesKViene.getDate()+'/'+(mesKViene.getMonth()+1)+'/'+mesKViene.getFullYear();

		var fin = new Date();
		fin.addMonths(11);
		
		$('#boton_cal_ini').DatePicker({ 
			format:'d/m/Y',
			date: fechaHoy,
			current: mesKViene,
			calendars: 2,
			starts: 1,
			position: 'left',
			onBeforeShow: function(){
				$("#fecha_entrada_dia").css("visibility", "hidden");
				$("#fecha_entrada_mes_ano").css("visibility", "hidden");
				$("#fecha_salida_dia").css("visibility", "hidden");
				$("#fecha_salida_mes_ano").css("visibility", "hidden");
			},
			onHide: function() {
				$("#fecha_entrada_dia").css("visibility", "visible");
				$("#fecha_entrada_mes_ano").css("visibility", "visible");
				$("#fecha_salida_dia").css("visibility", "visible");
				$("#fecha_salida_mes_ano").css("visibility", "visible");
			},
			onRender: function(date) {
				return {
					disabled: ((date.valueOf() < now.valueOf()) || (date.valueOf() > fin.valueOf()))
				}
			},
			onChange: function(formated, dates){
				Recoger_Datos_Fechas();
				Cambiar_Fechas_Entrada (formated);
				Cambiar_Fechas_Salida(formated, num_noches);
				formated = formated.split('/');
				nuevaFechaEnt = formated[2]+'-'+formated[1]+'-'+formated[0];
				$.getJSON("ajax/cambiar_combo_fechas.php",{fecha_ent: nuevaFechaEnt, fecha_sal: nuevaFechaSal}, function(j){
					$("#dia_semana_ent").html(j[0].diaEntrada);
					$("#dia_semana_sal").html(j[0].diaSalida);
				});
			}
		});
		
		$('#boton_cal_fin').DatePicker({
			format:'d/m/Y',
			date: fechaHoy,
			current: mesKViene,
			calendars: 2,
			starts: 1,
			position: 'left',
			onBeforeShow: function(){
				$("#fecha_salida_dia").css("visibility", "hidden");
				$("#fecha_salida_mes_ano").css("visibility", "hidden");
			},
			onHide: function() {
				$("#fecha_salida_dia").css("visibility", "visible");
				$("#fecha_salida_mes_ano").css("visibility", "visible");
			},
			onRender: function(date) {
				return {
					disabled: ((date.valueOf() < now.valueOf()) || (date.valueOf() > fin.valueOf()))
				}
			},
			onChange: function(formated, dates){
				Recoger_Datos_Fechas();
				var dtm = Date.fromString(fechaEntrada);
				//Numero_noches = parseInt((dates - dtm)/86400000);
				Numero_noches=noches_Entre(dates,dtm);
				
				
				if (Numero_noches <= 30 && Numero_noches > 0) {				
					Cambiar_Fechas_Salida(fechaEntrada, Numero_noches);
					$("#num_noches").val(Numero_noches);
					
					//Tuneo la fecha de salida para obtener el dia de la semana
					formated = formated.split('/');
					nuevaFechaSal = formated[2]+'-'+formated[1]+'-'+formated[0];
					$.getJSON("ajax/cambiar_combo_fechas.php",{fecha_sal: nuevaFechaSal}, function(j){
						$("#dia_semana_sal").html(j[0].diaSalida);
					});
				} else alert ('El número de noches debe estar comprendido entre 1 y 30');
			}
		});
		
		
		$('#selector_fechas').DatePicker({
			format:'d/m/Y',
			date: fechaHoy,
			current: mesKViene,
			calendars: 3,
			position: 'bottom',
			mode: 'range',
			starts: 1,
			onBeforeShow: function(){
				$("#fecha_entrada_dia").css("visibility", "hidden");
				$("#fecha_entrada_mes_ano").css("visibility", "hidden");
				$("#fecha_salida_dia").css("visibility", "hidden");
				$("#fecha_salida_mes_ano").css("visibility", "hidden");
				$("#zona").css("visibility", "hidden");
				$("#provincia").css("visibility", "hidden");
				$("#localidad").css("visibility", "hidden");
				$("#tipo").css("visibility", "hidden");
			},
			onHide: function(formated) {
				$("#fecha_entrada_dia").css("visibility", "visible");
				$("#fecha_entrada_mes_ano").css("visibility", "visible");
				$("#fecha_salida_dia").css("visibility", "visible");
				$("#fecha_salida_mes_ano").css("visibility", "visible");
				$("#zona").css("visibility", "visible");
				$("#provincia").css("visibility", "visible");
				$("#localidad").css("visibility", "visible");
				$("#tipo").css("visibility", "visible");
			},
			onRender: function(date) {
				return {
					disabled: ((date.valueOf() < now.valueOf()) || (date.valueOf() > fin.valueOf()))
				}
			},
			onChange: function(formated) {
				$('#rango_fechas').val(formated);
			}
		});
	};	
	EYE.register(initLayout, 'init');	
})(jQuery)
