// Calculamos las noches de estancia que hay entre una fecha de entrada y salida dadas.
function CalcularNoches(sFechaEntrada, sFechaSalida){
	// Obtenemos el tiempo en milisegundos que corresponde a las fechas de entrada y de salida
	var dFechaEntrada = GenerarFechaDesdeFormatoEsp(sFechaEntrada); 
	var dFechaSalida =  GenerarFechaDesdeFormatoEsp(sFechaSalida);
	var DiferenciaEnMiliSegundos = dFechaSalida.getTime() - dFechaEntrada.getTime();

	// Obtenemos el número de noches que corresponde a dicha diferencia dividiendo por el número de milisegundos de un día
	//	Hay problemas porque hay fechas en las que se produce un cambio horario y el número de milisegundos de dicho día se modifica, con lo
	//	que las cuentas no nos cuadran. Sin embargo la diferencia en numero de noches es siempre muy pequeña (<0,1 por defecto creo), con lo que para
	//	evitarlo sumaremos una hora de milisegundos y redondeamos quedandonos con la parte entera. De este modo siempre tendremos a qué numero de noches realmente
	//	corresponde el cálculo que estamos realizando
	var iNumeroNoches = Math.floor((DiferenciaEnMiliSegundos + 3600000)/ (1000 * 60 * 60 * 24));

	return iNumeroNoches;
}

// Esta función convertirá una fecha que nos pasen en un string con formato Español a un objeto de tipo Fecha
//	Si nos dan 2 dígitos si <70 consideramos 2000 y si no 1900.
function GenerarFechaDesdeFormatoEsp(sFecha){
	// Separamos en todos los diferentes campos que componen la fecha
	var Campos = sFecha.split('/');
	
	// Si el campo año tiene solo 2 cifras debemos gestionarlo para convertirlo a su equivalente en cuatro
	if (Campos[2]<100){
		// Si la cifra es menor de 70 consideraremos que es posterior al año 2000
		// 	En caso contrario pertenece a 1900
		if (Campos[2]<70)
			Campos[2] = '20' + Campos[2];
		else
			Campos[2] = '19' + Campos[2];
	}
	
	// El mes en el objeto Date toma como origen siempre 0, por lo tanto debemos restar uno al valor que hemos leido
	return new Date(Campos[2], Campos[1]-1, Campos[0]);
}

// Obtenemos el número de dias que tiene un mes de un año concreto
function ObtenerNumeroDiasMes(Mes, Anio)
{
	var NumeroDias;
	if ((Mes==1)||(Mes==3)||(Mes==5)||(Mes==7)||(Mes==8)||(Mes==10)||(Mes==12)){
		NumeroDias = 31;
	}
	else if ((Mes==4) || (Mes==6) || (Mes==9) || (Mes==11)){
		NumeroDias = 30;
	}
	else if (Mes==2){ 
		if (ComprobarBisiesto(Anio))
			NumeroDias=29;
		else
			NumeroDias=28;
	}
	return (NumeroDias);
}

// Comprobamos si el año indicado es o no bisiesto
function ComprobarBisiesto(Anio)
{
	if (((Anio % 4)==0) & ((Anio % 100)!=0) || ((Anio % 400)==0))
		return (true);
	else
		return (false);
}

// Obtenemos el nombre corto del mes
function ObtenerNombreCortoMes(NumMes){
	var Meses = new Array('Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic');
	
	return Meses[NumMes-1];
}
