/*PASOS A SEGUIR PARA CONFIGURAR 'AYUDACALENDARIO.JS'********************

1. Declarar variables OPCIONALES necesarias en ámbito global, tanto la referencia al objeto como su valor

2. Configurar el 'initPagina' para recibir el valor de estas variables OPCIONALES.

3. Configurar 'inicializarObjetosReferenciaHTML' para recoger estos valores recibidos en...
...las variables OPCIONALES declaras en ámbito global.

4. Configurar 'initPaginaResquest' para establecer operaciones de estos elementos OPCIONALES.
*************************************************************/




//******************variables*****************************************
//document.write(getCalendarStyles());
//variables
//var calendarioEntrada = new CalendarPopup("divEntrada");
//var calendarioSalida = new CalendarPopup("divSalida");


//prefijo hoja de estilo a usar
var prefijoCSS = "TEST";
//funcion que retornará la fecha seleccionada en el calendario.
var funcionRetornoSalida = "setFechaSalida";
var funcionRetornoEntrada = "setFechaEntrada";



//variables para guardar fechas entrada y salida actuales para no perderla y rehacer cambios.
var fechaEntrada = null;
var fechaSalida = null;

//arrays de idiomas del calendario
var arrayMeses=null;
var arrayDiasSemana=null;
var arrayHoy=null;
var primerDiaLaSemana=null;


//patron de formato de la fecha
var separadorFecha = "-";
var patronFormatoFecha = "yyyy"+separadorFecha+"MM"+separadorFecha+"dd";


//array de mensajes
var arrayMensajes = null;

//variables referencia a objetos html como los encargados de fechas o etc.
var diaFechaEntrada = null;
var mesFechaEntrada = null;
var anyFechaEntrada = null;
var diaFechaSalida = null;
var mesFechaSalida = null;
var anyFechaSalida = null;

//variables para guardar y referenciar valores
var dia = "";
var mes = "";
var any = "";
var nits = "";


//-------OPCIONAL---------------------------
//variables referencia opcionales
var localidadOBJ = null;

//variables valor opcionales
var localidadValor = "";

//-----------------------------------------






//******************inicializarArraysCalendarios*****************************************
/*inicializamos los arrays de idiomas*/
function inicializarArraysCalendarios(){
	
	//hay que recordar que el calendario funciona por defecto en calendario ingles.
	arrayMeses=new Array(6);
	arrayDiasSemana=new Array(6);
	arrayHoy=new Array(6);
	primerDiaLaSemana=new Array(6);
	diasFestivos=new Array(6);
	
	
	
	for(idioma=1;idioma<7;idioma++){
	
		if (idioma==1){
		//español
			arrayMeses[idioma]=new Array('Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre');
			arrayDiasSemana[idioma]= new Array('D','L','M','X','J','V','S');
			diasFestivos[idioma]= new Array('N','N','N','N','N','N','S');
			arrayHoy[idioma]= new Array('Hoy');
			primerDiaLaSemana[idioma]=new Array('1');
		}else if(idioma==2){
		//ingles
			arrayMeses[idioma]=new Array('January','February','March','April','May','June','July','August','September','October','November','December');
			arrayDiasSemana[idioma]= new Array('S','M','T','W','T','F','S');
			diasFestivos[idioma]= new Array('S','N','N','N','N','N','N');
			arrayHoy[idioma]= new Array('Today');
			primerDiaLaSemana[idioma]=new Array('7');
		}else if(idioma==3){
		//
			arrayMeses[idioma]=new Array('Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre');
			arrayDiasSemana[idioma]= new Array('D','L','M','X','J','V','S');
			diasFestivos[idioma]= new Array('N','N','N','N','N','N','S');
			arrayHoy[idioma]= new Array('Hoy');
			primerDiaLaSemana[idioma]=new Array('1');
		}else if(idioma==4){
		//
			arrayMeses[idioma]=new Array('Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre');
			arrayDiasSemana[idioma]= new Array('D','L','M','X','J','V','S');
			diasFestivos[idioma]= new Array('N','N','N','N','N','N','S');
			arrayHoy[idioma]= new Array('Hoy');
			primerDiaLaSemana[idioma]=new Array('1');
		}else if(idioma==5){
		//
			arrayMeses[idioma]=new Array('Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre');
			arrayDiasSemana[idioma]= new Array('D','L','M','X','J','V','S');
			diasFestivos[idioma]= new Array('N','N','N','N','N','N','S');
			arrayHoy[idioma]= new Array('Hoy');
			primerDiaLaSemana[idioma]=new Array('1');
		}else if(idioma==6){
		//
			arrayMeses[idioma]=new Array('Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre');
			arrayDiasSemana[idioma]= new Array('D','L','M','X','J','V','S');
			diasFestivos[idioma]= new Array('N','N','N','N','N','N','S');
			arrayHoy[idioma]= new Array('Hoy');
			primerDiaLaSemana[idioma]=new Array('1');
		}
	}
}

//****************inicializarCalendarios****************************************************
function inicializarCalendarios(idioma){

	inicializarArraysCalendarios();
	
	//****************calendario entrada***************************************************
	//calendarioEntrada.showNavigationDropdowns();
	//calendarioEntrada.showYearNavigation();
	//calendarioEntrada.showYearNavigationInput();
	calendarioEntrada.setDiasMaximoCalendarioSalida("");
	calendarioEntrada.typeCalendarEntrada();
	calendarioEntrada.showYearNavigationCombo();
	calendarioEntrada.hideCalendar();
	
	
	calendarioEntrada.setMonthNames(arrayMeses[idioma][0],arrayMeses[idioma][1],arrayMeses[idioma][2],arrayMeses[idioma][3],arrayMeses[idioma][4],arrayMeses[idioma][5],arrayMeses[idioma][6],arrayMeses[idioma][7],arrayMeses[idioma][8],arrayMeses[idioma][9],arrayMeses[idioma][10],arrayMeses[idioma][11]);
	calendarioEntrada.setDayHeaders(arrayDiasSemana[idioma][0],arrayDiasSemana[idioma][1],arrayDiasSemana[idioma][2],arrayDiasSemana[idioma][3],arrayDiasSemana[idioma][4],arrayDiasSemana[idioma][5],arrayDiasSemana[idioma][6]);
	
	calendarioEntrada.setArrayDaysFestive(diasFestivos[idioma][0],diasFestivos[idioma][1],diasFestivos[idioma][2],diasFestivos[idioma][3],diasFestivos[idioma][4],diasFestivos[idioma][5],diasFestivos[idioma][6]);
	calendarioEntrada.setWeekStartDay(eval(primerDiaLaSemana[idioma][0]));
	calendarioEntrada.setReturnFunction(funcionRetornoEntrada); 
	//calendarioEntrada.addDisabledDates(null,formatDate(ayer,"yyyy-MM-dd"));
	calendarioEntrada.setCssPrefix(prefijoCSS);
	calendarioEntrada.setTodayText(arrayHoy[idioma][0]);
	calendarioEntrada.offsetX=0;
  calendarioEntrada.offsetY=0;	
	
	//****************calendario salida***************************************************
	//calendarioSalida.showNavigationDropdowns();
	//calendarioSalida.showYearNavigation();
	//calendarioSalida.showYearNavigationInput();
	calendarioSalida.typeCalendarSalida();
	calendarioSalida.showYearNavigationCombo();
	
	//solo dejamos elegir un intervalo de 7 dias en el calendario de salida respecto....
	//calendario entrada, de lunes a lunes por ejemplo.
	calendarioSalida.setDiasMaximoCalendarioSalida("7");
	
	calendarioSalida.hideCalendar();
	
	calendarioSalida.setMonthNames(arrayMeses[idioma][0],arrayMeses[idioma][1],arrayMeses[idioma][2],arrayMeses[idioma][3],arrayMeses[idioma][4],arrayMeses[idioma][5],arrayMeses[idioma][6],arrayMeses[idioma][7],arrayMeses[idioma][8],arrayMeses[idioma][9],arrayMeses[idioma][10],arrayMeses[idioma][11]);
	calendarioSalida.setDayHeaders(arrayDiasSemana[idioma][0],arrayDiasSemana[idioma][1],arrayDiasSemana[idioma][2],arrayDiasSemana[idioma][3],arrayDiasSemana[idioma][4],arrayDiasSemana[idioma][5],arrayDiasSemana[idioma][6]);
	
	calendarioSalida.setArrayDaysFestive(diasFestivos[idioma][0],diasFestivos[idioma][1],diasFestivos[idioma][2],diasFestivos[idioma][3],diasFestivos[idioma][4],diasFestivos[idioma][5],diasFestivos[idioma][6]);
	
	calendarioSalida.setWeekStartDay(eval(primerDiaLaSemana[idioma][0]));
	calendarioSalida.setReturnFunction(funcionRetornoSalida); 
	//calendarioSalida.addDisabledDates(null,formatDate(ayer,"yyyy-MM-dd"));
	calendarioSalida.setCssPrefix(prefijoCSS);
	calendarioSalida.setTodayText(arrayHoy[idioma][0]);
	calendarioSalida.offsetX=0;
	calendarioSalida.offsetY=0;
	
}



//*****************************setFechaEntrada**********************************************

function setFechaEntrada(y,m,d) {
	//funcion que usa el calendario de entrada para enviarle los datos de fecha seleccionado.
	//devuelve formato mes 1-12 (NO 0-11)
	//y -- año
	//d -- dia
	//m -- mes
	var fechaEntradaActual = obtenerFechaEntradaActual();
	
	
	
	//dia
	for (var i=0; i<diaFechaEntrada.options.length; i++) {
		if (diaFechaEntrada.options[i].value==d) {
			diaFechaEntrada.selectedIndex=i;
			}
		}
	//mes

	//por si vienen valores ejemplo-->8 , el value de los combos meses es -->08
	if (m.length==1){
		m= "0" + m;
	}
	
	for (var i=0; i<mesFechaEntrada.options.length; i++) {
		if (mesFechaEntrada.options[i].value==m) {
			mesFechaEntrada.selectedIndex=i;
			}
		}
	//any
	for (var i=0; i<anyFechaEntrada.options.length; i++) {
		if (anyFechaEntrada.options[i].value==y) {
			anyFechaEntrada.selectedIndex=i;
			}
		}
		recargarAny(anyFechaEntrada);
		
		
		establecerFechaSalida(y,m,d,fechaEntradaActual);
		//guardamos la fecha de entrada actual
		this.fechaEntrada =obtenerFechaEntradaActual();
		//guardamos la fecha de salida actual
		this.fechaSalida =obtenerFechaSalidaActual();
		
		//le pasamos la fecha de entrada al calendario de salida para aplicar restricciones.
		calendarioSalida.setFechaActualCalendarioEntrada(this.fechaEntrada);
		
		
}

//*****************************establecerFechaSalida**********************************************

function establecerFechaSalida(y,m,d,fechaEntradaActual){
	
	//funcion que usa el calendario de salida para enviarle los datos de fecha seleccionado.
	//devuelve formato mes 1-12 (NO 0-11)
	//y -- año
	//d -- dia
	//m -- mes
	
	
	
	//cargamos el combo fecha salida dependiendo la fecha entrada, mínimo un dia.
	var fechaEntrada = y + separadorFecha + m + separadorFecha + d;
	var fechaEntradaDiaMas = operarDias(fechaEntrada,1,"+");
	var fechaEntradaArray = (formatDate(fechaEntradaDiaMas,patronFormatoFecha)).split(separadorFecha);
	var fechaSalidaActual = obtenerFechaSalidaActual();

	var fechaEntradaMas7Dias = formatDate(operarDias(fechaEntrada,7,"+"),patronFormatoFecha);
	var diferenciaDias = diferenciaFechas(fechaEntradaActual,fechaSalidaActual);
		

	
	if (compararFechas(fechaEntradaMas7Dias,fechaSalidaActual)<0){
			
		
  	var fechaEntradaDiferenciaDias = operarDias(fechaEntrada,diferenciaDias,"+");
		var fechaEntradaDiferenciaDiasArray = (formatDate(fechaEntradaDiferenciaDias,patronFormatoFecha)).split(separadorFecha);
		
		
		
		setFechaSalida(fechaEntradaDiferenciaDiasArray[0],fechaEntradaDiferenciaDiasArray[1],fechaEntradaDiferenciaDiasArray[2]);
 
 	
 	}else if ((compararFechas(fechaEntrada,fechaSalidaActual)>=0)){
 		
		setFechaSalida(fechaEntradaArray[0],fechaEntradaArray[1],fechaEntradaArray[2]);	
	}
 	
	calendarioSalida.deleteAllDisableDate();
	calendarioSalida.addDisabledDates(null,fechaEntrada);
	
	
	//sólo permitimos escoger un intervalo de 7 dias de reserva desde la fecha entrada...
	//...por eso bloqueamos en fecha salida lo superior a 7 dias.
	var fechaEntradaMas8Dias = formatDate(operarDias(fechaEntrada,8,"+"),patronFormatoFecha);
	calendarioSalida.addDisabledDates(fechaEntradaMas8Dias,null);
	
	
	//cogemos el año actual
	hoy = new Date();
	var anyMas2 = hoy.getFullYear() + 2;
	//sumamos al año actual + 2 que será el año a bloquear,pero siempre el ultimo dia....
	//....para poder elegir como fecha salida hasta el 31 de año actual + 1, la fecha de...
	//...salida se bloquea el dia 31 del año anterior asi tenemos minimo un dia de intervalo.
	calendarioSalida.addDisabledDates("1/1/" + anyMas2,null);
	
}


//********************************obtenerFechaHoy()*****************************************
function obtenerFechaHoy(){
	//devuelve en string la fecha actual 'yyyy+separadorFecha+mm+separadorFecha+dd'
	
	var vecfecha = formatDate(new Date(),patronFormatoFecha).split(separadorFecha);
	//devolvemos segun formato : año + separadorFecha + mes + separadorFecha + dia.
	return vecfecha[0] + separadorFecha + vecfecha[1] + separadorFecha + vecfecha[2];
}


//********************************obtenerFecha(y,m,d)*****************************************
function obtenerFecha(y,m,d){
	//devolvemos un objeto date segun lo recibido por parametro.
	//el mes (m) se recibe en formato 1-12 , para generar un date necesitamos tenerlo en 0-11.
	//formateamos la fecha segun 'patronFormatoFecha'.
	
	//obtenemos formato 0-11
	var mes = eval(m);
	if (mes>0){
		m = mes -1;
	}
	//obtenemos la fecha con 'patronFormatoFecha'.
	var fecha = new Date(y,m,d);
	//devolvemos un objeto date (esta en formato 0-11).
	
	return fecha;
}




//********************************setFechaSalida*****************************************


function setFechaSalida(y,m,d) {
	
	
	
	//dia
	for (var i=0; i<diaFechaSalida.options.length; i++) {
		if (diaFechaSalida.options[i].value==d) {
			diaFechaSalida.selectedIndex=i;
			}
		}
	//mes
	
	
	//por si vienen valores ejemplo-->8 , el value de los combos meses es -->08
	if (m.length==1){
		m= "0" + m;
	}
	for (var i=0; i<mesFechaSalida.options.length; i++) {
		if (mesFechaSalida.options[i].value==m) {
			mesFechaSalida.selectedIndex=i;
			}
		}
	//any
	for (var i=0; i<anyFechaSalida.options.length; i++) {
		if (anyFechaSalida.options[i].value==y) {
			anyFechaSalida.selectedIndex=i;
			}
		}
		recargarAny(anyFechaSalida);
		//guardamos la fecha de salida actual
		this.fechaSalida =obtenerFechaSalidaActual();
	}




//****************compararFechas***************************************************

function compararFechas(fecha1,fecha2){
	
	//alert("fecha1  "+fecha1 + "/ fecha2 " +fecha2);
	
	var retorno = 0;
	//string formato "yyyy + separadorFecha + MM + separadorFecha + dd"
	
	//si fecha1=fecha2 --> 0
	//si fecha1>fecha2 --> >0
	//si fecha1<fecha2 --> <0
	
	var fecha1Array = fecha1.split(separadorFecha);
	var fecha2Array = fecha2.split(separadorFecha);
	
	//var fechaDate1 = new Date(fecha1Array[0],fecha1Array[1],fecha1Array[2]);
	//var fechaDate2 = new Date(fecha2Array[0],fecha2Array[1],fecha2Array[2]);
	var fechaDate1 = obtenerFecha(fecha1Array[0],fecha1Array[1],fecha1Array[2]);
	var fechaDate2 = obtenerFecha(fecha2Array[0],fecha2Array[1],fecha2Array[2]);
	
	//alert("fecha1  "+fechaDate1 + "/ fecha2 " +fechaDate2);
	
	if (fechaDate1>fechaDate2){
		retorno = 1;
	}else if (fechaDate1<fechaDate2){
		retorno =-1;
	}else{
		retorno = 0;
	}
	
	//alert(" retorno "+retorno);
	
	return retorno;
}

//****************************getFecha***************************************

//funcion que devuelve en formato "yyyy + separadorFecha + MM + separadorFecha + dd" ..
//....el valor de los combos pasados.
//se usa para obtener la fecha del combo al llamar al calendario relacionado y que este....
//....se cargue con la fecha indicada en el combo.

function getFecha(y_select,m_select,d_select) {
	var y = y_select.options[y_select.selectedIndex].value;
	var m = m_select.options[m_select.selectedIndex].value;
	var d = d_select.options[d_select.selectedIndex].value;
	if (y=="" || m=="") { return null; }
	if (d=="") { d=1; }
	return str= y + separadorFecha + m + separadorFecha + d;
	}
	
//******************************inicializarObjetosReferenciaHTML*******************************
function inicializarObjetosReferenciaHTML(idDiaFechaEntrada,idMesFechaEntrada,idAnyFechaEntrada,
idDiaFechaSalida,idMesFechaSalida,idAnyFechaSalida,idDiaValor,idMesValor,
idAnyValor,idNitsValor,mensaje1,mensaje2,mensaje3,mensaje4,mensaje5,mensaje6,mensaje7,idLocalidad,idLocalidadValor){
	
//metodo que tiene que ser llamado del metodo onLoad() del body de la pagina html....
//...para recoger todas aquellas referencias, DEFINIR LOS PARAMETROS OPCIONALES COMO NOS INTERESE.
	
	//referencias obligatorias
	diaFechaEntrada = document.getElementById(idDiaFechaEntrada);
	mesFechaEntrada = document.getElementById(idMesFechaEntrada);
	anyFechaEntrada = document.getElementById(idAnyFechaEntrada);
	
	diaFechaSalida = document.getElementById(idDiaFechaSalida);
	mesFechaSalida = document.getElementById(idMesFechaSalida);
	anyFechaSalida = document.getElementById(idAnyFechaSalida);
	
	
	//array de mensajes
	if (mensaje1!=undefined && mensaje2!=undefined && mensaje3!=undefined
	 && mensaje4!=undefined && mensaje5!=undefined && mensaje6!=undefined && mensaje7!=undefined){
		arrayMensajes = new Array(mensaje1,mensaje2,mensaje3,mensaje4,mensaje5,mensaje6,mensaje7);
	} else{
		arrayMensajes = new Array('no message','no message','no message','no message','no message','no message','no message');
	}
	
	//valores  inicializados en html, por defecto estan a ""
	if (idDiaValor!=undefined && idMesValor!=undefined && idAnyValor!=undefined && idNitsValor!=undefined){
		dia = document.getElementById(idDiaValor).value;
		mes = document.getElementById(idMesValor).value;
		any = document.getElementById(idAnyValor).value;
		nits = document.getElementById(idNitsValor).value;
	}
	
	//OPCIONAL!!!------------------------------------------
	
	//referencias opcionales, por defecto a null
	if (idLocalidad!=undefined){
		localidadOBJ = document.getElementById(idLocalidad);
	}
	//valores opcionales inicializados en html
	if (localidadValor!=undefined){
		localidadValor = document.getElementById(idLocalidadValor).value;
	}
	
	//-----------------------------------------------------
	
}
	
//*************************************initPagina****LLAMADO ONLOAD BODY******************************************

//PARAMETRIZAR COMO NOS INTERESE, PERO MANTENIENDO LOS ELEMENTOS OBLIGATORIOS:
/*
   -  idioma
	 -  idDiaFechaEntrada
	 -	idMesFechaEntrada
	 -  idAnyFechaEntrada
	 -  idDiaFechaSalida
	 -  idMesFechaSalida
	 -  idAnyFechaSalida
*/
/* SINO LE PASAMOS LOS VALORES DE LAS FECHAS COGE POR DEFECTO DIA ACTUAL

	 -	diaValor
	 -	mesValor
	 -	anyValor
   -	nitsValor
*/
/* SINO LE PASAMOS LOS MENSAJES ESTOS SERAN POR DEFECTO 'no message'
	
	 - 	mensaje1
	 - 	mensaje2
	 -	mensaje3
	 -	mensaje4
	 -	mensaje5

*/
/*TODO LO DEMAS ES OPCIONAL

*/

//metodo llamado en el onLoad del body del html
function initPagina(idioma,idDiaFechaEntrada,idMesFechaEntrada,idAnyFechaEntrada,
idDiaFechaSalida,idMesFechaSalida,idAnyFechaSalida,idDiaValor,idMesValor,
idAnyValor,idNitsValor,mensaje1,mensaje2,mensaje3,mensaje4,mensaje5,mensaje6,mensaje7,idLocalidad,idLocalidadValor){
		
	//inicializamos los calendarios,necesita el idioma
	inicializarCalendarios(idioma);
	
	//obtenemos referencias a objetos html segun su propiedad id.
	inicializarObjetosReferenciaHTML(idDiaFechaEntrada,idMesFechaEntrada,idAnyFechaEntrada,
idDiaFechaSalida,idMesFechaSalida,idAnyFechaSalida,idDiaValor,idMesValor,
idAnyValor,idNitsValor,mensaje1,mensaje2,mensaje3,mensaje4,mensaje5,mensaje6,mensaje7,idLocalidad,idLocalidadValor);
	

	//establecemos el método de inicialización de datos fecha
	if (this.dia!="" && this.mes!="" && this.any!="" && this.nits!=""){
			//según valores pasados por html
			initPaginaRequest(this.any,this.mes,this.dia,this.nits);
	} else{
			// según dia actual
			initPaginaPorDefecto();
	}
	
}


//***********************initPaginaRequest**********************************************

function initPaginaRequest(any,mes,dia,nits){
	

	var newOption = null;
	var hoy = new Date();	
	
	//INICIALIZAMOS LOS ELEMENTOS OPCIONALES SEGÚN INTERESE.-----------------
	
	//seleccionamos localidad recibido por parametro.
	//accedemos directamente a las variables inicializadas en 'inicializarObjetosReferenciaHTML'.
	if (this.localidadOBJ!=null){
		this.localidadOBJ.value=this.localidadValor;
	}
	
	//obtenemos la fecha actual segun 'patronFormatoFecha'
  //var vecfechaHoy = (formatDate(hoy,patronFormatoFecha)).split(separadorFecha);
	var vecfechaHoy = (obtenerFechaHoy()).split(separadorFecha);
	
	
	//---------------------------------------------------------------------



	//INICIALIZAMOS LOS ELEMENTO FECHA OBLIGATORIO SEGÚN FECHA ENVIADA POR HTML.
	
	//los meses en javascript van de 0 a 11.
	/*var mes = eval(mes);
	if (mes>0){
		mes = mes -1;
	}*/
	
	//obtenemos fechas según 'patronFormatoFecha'
	//var fechaEntrada = new Date(any,mes,dia);
	var fechaEntrada = obtenerFecha(any,mes,dia);
	var fechaEntradaArray = (formatDate(fechaEntrada,patronFormatoFecha)).split(separadorFecha);
	var fechaSalida = operarDias(formatDate(obtenerFecha(any,mes,dia),patronFormatoFecha),nits,"+");
	var fechaHoyMenosUnDia = operarDias(obtenerFechaHoy(),1,"-");

	
	//cargamos los combos fecha con el año actual por defecto
	newOption = new Option(fechaEntradaArray[0],fechaEntradaArray[0]);
	anyFechaEntrada.options[anyFechaEntrada.options.length] = newOption;
	newOption.selected=true;
	
	newOption = new Option(fechaEntradaArray[0],fechaEntradaArray[0]);
	anyFechaSalida.options[anyFechaSalida.options.length] = newOption;
	newOption.selected=true;
	
	//**********carga datos calendario entrada*************************.
	//establecemos la fecha de entrada en los combos de fecha entrada(fecha de hoy).
	setFechaEntrada(fechaEntradaArray[0],fechaEntradaArray[1],fechaEntradaArray[2]);
	//guardamos la fecha de entrada actual
	this.fechaEntrada =obtenerFechaEntradaActual();
	//desactivamos las fechas en el calendario fecha salida posterior e igual a fecha de AYER.
	calendarioEntrada.addDisabledDates(null,formatDate(fechaHoyMenosUnDia,patronFormatoFecha));
	//desactivamos tb la fecha que sea superior a dos años, es decir, si estamos en 2006 tenemos....
	//...que bloquear el año 2008.
	//cogemos el año actual
	var anyMas1 = parseInt(vecfechaHoy[0]) + 1;
	//sumamos al año actual + 1 que será el año a bloquear,pero siempre el ultimo dia....
	//....poque si elige el dia 31 no podria hacer minimo un dia de reserva.
	calendarioEntrada.addDisabledDates("31/12/" + anyMas1,null);
	calendarioEntrada.showTodayDateColor(true,'red');
	
	//***********carga datos calendario salida*************************
	var vecFechaSalida = (formatDate(fechaSalida,patronFormatoFecha)).split(separadorFecha);
	//establecemos la fecha de salida en los combos de fecha salida (fecha de dema en este caso).
	setFechaSalida(vecFechaSalida[0],vecFechaSalida[1],vecFechaSalida[2]);
	//guardamos la fecha de salida actual
	this.fechaSalida =obtenerFechaSalidaActual();
	//desactivamos las fechas en el calendario fecha salida posterior e igual a fecha de hoy.
	calendarioSalida.addDisabledDates(null,formatDate(fechaEntrada,patronFormatoFecha));
	
	//sólo permitimos escoger un intervalo de 7 dias de reserva desde la fecha entrada...
	//...por eso bloqueamos en fecha salida lo superior a 7 dias.
	var fechaEntradaMas7Dias = operarDias(this.fechaEntrada,8,"+");
	calendarioSalida.addDisabledDates(formatDate(fechaEntradaMas7Dias,patronFormatoFecha),null);
	
	
	//sumamos al año actual + 2 que será el año a bloquear,pero siempre el ultimo dia....
	//....para poder elegir como fecha salida hasta el 31 de año actual + 1, la fecha de...
	//...salida se bloquea el dia 31 del año anterior asi tenemos minimo un dia de intervalo.
	var anyMas2 = parseInt(vecfechaHoy[0]) + 2;
	calendarioSalida.addDisabledDates("1/1/" + anyMas2,null)
	
	calendarioSalida.showTodayDateColor(true,'red');
	
	
	//guardamos las fechas de entrada y salida en las variables
	//guardamos la fecha de entrada actual
	this.fechaEntrada =obtenerFechaEntradaActual();
	//guardamos la fecha de salida actual
	this.fechaSalida =obtenerFechaSalidaActual();
	
}


//***********************initPaginaPorDefecto**********************************************

function initPaginaPorDefecto(){
	
	
	//inicializamos los valores de los elementos fecha según fecha actual.
	var dema = null;
	var ayer =null;
	var hoy = new Date();
	var newOption = null;
	
	//obtenemos la fecha actual segun 'patronFormatoFecha'
	//var vecfechaHoy = (formatDate(hoy,patronFormatoFecha)).split(separadorFecha);
	var vecfechaHoy = (obtenerFechaHoy()).split(separadorFecha);
	
	
	
	//cargamos los combos fecha con el año actual por defecto
	newOption = new Option(vecfechaHoy[0], vecfechaHoy[0]);
	anyFechaEntrada.options[anyFechaEntrada.options.length] = newOption;
	newOption.selected=true;
	
	newOption = new Option(vecfechaHoy[0], vecfechaHoy[0]);
	anyFechaSalida.options[anyFechaSalida.options.length] = newOption;
	newOption.selected=true;
	
	//**********carga datos calendario entrada dia actual*************************.
	ayer = operarDias(obtenerFechaHoy(),1,"-");
	//establecemos la fecha de entrada en los combos de fecha entrada(fecha de hoy).
	setFechaEntrada(vecfechaHoy[0],vecfechaHoy[1],vecfechaHoy[2]);
	//guardamos la fecha de entrada actual
	this.fechaEntrada =obtenerFechaEntradaActual();
	//desactivamos las fechas en el calendario fecha salida posterior e igual a fecha de AYER.
	calendarioEntrada.addDisabledDates(null,formatDate(ayer,patronFormatoFecha));
	//desactivamos tb la fecha que sea superior a dos años, es decir, si estamos en 2006 tenemos....
	//...que bloquear el año 2008.
	//cogemos el año actual
	var anyMas1 = parseInt(vecfechaHoy[0]) + 1;
	//sumamos al año actual + 1 que será el año a bloquear,pero siempre el ultimo dia....
	//....poque si elige el dia 31 no podria hacer minimo un dia de reserva.
	calendarioEntrada.addDisabledDates("31/12/" + anyMas1,null);
	calendarioEntrada.showTodayDateColor(true,'red');
	
	
	//***********carga datos calendario salida dia actual*************************
	dema = operarDias(obtenerFechaHoy(),1,"+");
	//convertimos la fecha dema en un array según formato "yyyy-MM-dd"
	var vecFechaDema = (formatDate(dema,patronFormatoFecha)).split(separadorFecha);
	//establecemos la fecha de salida en los combos de fecha salida (fecha de dema en este caso).
	setFechaSalida(vecFechaDema[0],vecFechaDema[1],vecFechaDema[2]);
	//guardamos la fecha de salida actual
	this.fechaSalida =obtenerFechaSalidaActual();
	//desactivamos las fechas en el calendario fecha salida posterior e igual a fecha de hoy.
	calendarioSalida.addDisabledDates(null,formatDate(hoy,patronFormatoFecha));
	
	//sólo permitimos escoger un intervalo de 7 dias de reserva desde la fecha entrada...
	//...por eso bloqueamos en fecha salida lo superior a 7 dias.
	var fechaEntradaMas7Dias = operarDias(obtenerFechaHoy(),8,"+");
	calendarioSalida.addDisabledDates(formatDate(fechaEntradaMas7Dias,patronFormatoFecha),null);
	
	var anyMas2 = parseInt(vecfechaHoy[0]) + 2;
	//sumamos al año actual + 2 que será el año a bloquear,pero siempre el ultimo dia....
	//....para poder elegir como fecha salida hasta el 31 de año actual + 1, la fecha de...
	//...salida se bloquea el dia 31 del año anterior asi tenemos minimo un dia de intervalo.
	calendarioSalida.addDisabledDates("1/1/" + anyMas2,null);
	
	calendarioSalida.showTodayDateColor(true,'red');
	
	
	//guardamos las fechas de entrada y salida en las variables
	//guardamos la fecha de entrada actual
	this.fechaEntrada =obtenerFechaEntradaActual();
	//guardamos la fecha de salida actual
	this.fechaSalida =obtenerFechaSalidaActual();
	
}


//****************************operarDias**********************************************

function operarDias(fecha,dias,operacion){
//funcion para operador con dias "yyyy + separadorFecha + MM + separadorFecha + dd" sumandole o restandole dias.

// fecha -- fecha en formato "yyyy + separadorFecha + MM + separadorFecha + dd"
// dias -- dias que se quieren sumar o restar
// operacion -- "+" o "-" , operación a realizar con la fecha, si sumamos o restamos dias.

	//var nuevaFecha = new Date();
	var vecfecha = fecha.split(separadorFecha);
	
	
	//los meses en javascript van de 0 a 11.
	/*var mes = eval(vecfecha[1]);
	if (mes>0){
		vecfecha[1]= mes -1;
	}*/
	//obtenemos el objeto fecha con el string recibido según formato "yyyy-MM-dd"
	//siempre un date se inicializa (año, mes, dia)
	
	
	
	//var fechaDate = new Date(vecfecha[0],vecfecha[1],vecfecha[2]);
	var fechaDate = obtenerFecha(vecfecha[0],vecfecha[1],vecfecha[2]);
	
	
	milisegundos=parseInt(dias*24*60*60*1000);
	tiempo=fechaDate.getTime();
	
	//alert("fechaDate inicial " + fechaDate);
	

	
	if (operacion=="+"){
		fechaDate.setTime(parseInt(tiempo + milisegundos));
	}else if(operacion=="-"){
		fechaDate.setTime(parseInt(tiempo - milisegundos));
	}
	
	var hora = fechaDate.getHours();
	var milisegundosCambioHorario = 0;
	var cambioHorario = false; 
	var cambioHorarioOperacion;
	if (hora==23){
		//control cambio horario + 1 hora / 25 octubre.
		//alert("hora 23");
		cambioHorario = true;
		milisegundosCambioHorario = (1)*60*60*1000;
		cambioHorarioOperacion = "+";
	} 
	else if(hora==1){
		//control cambio horario - 1 hora / 25 marzo.
		//alert("hora 1");
		cambioHorario = true;
		milisegundosCambioHorario = (1)*60*60*1000;
		cambioHorarioOperacion = "-";
	}
	
	if (cambioHorario){
		//aplicamos la diferencia del cambio horario
		if (cambioHorarioOperacion=="+"){
			fechaDate.setTime(fechaDate.getTime() + milisegundosCambioHorario);
		}else if(cambioHorarioOperacion=="-"){
			fechaDate.setTime(fechaDate.getTime() - milisegundosCambioHorario);
		}
	}
	
	
	//alert("fechaDate salida  "+fechaDate);
	
	return fechaDate;
}


//*********************recargarAny***************************************************

function recargarAny(selectAnyObj,tipoCombo){
	
	//permite recargar el combo de fechaentrada y fechasalida con los años correspondientes...
	//...al seleccionado, cargar dos años anteriores al seleccionado y dos posteriores, dejando...
	//...seleccionado el actual.
	//ponemos el año al combo año
	
	//PARAMETROS:
	// - selectAnyObj -- objeto que representa el combo año.
	// - tipoCombo -- tipo del combo puede tener dos valores (FE - fecha entrada / FS - fecha salida)
	
	if (tipoCombo!=undefined){
		if (tipoCombo=='FE'){
			cambioFechaCombo(diaFechaEntrada,mesFechaEntrada,anyFechaEntrada,tipoCombo);
		} else if (tipoCombo=='FS'){
		
			cambioFechaCombo(diaFechaSalida,mesFechaSalida,anyFechaSalida,tipoCombo);
		}
	}
		
	//var anyFechaActual = (formatDate(new Date(),patronFormatoFecha)).split(separadorFecha);
	var anyFechaActual = (obtenerFechaHoy()).split(separadorFecha);
	
	var anyActual = selectAnyObj.options[selectAnyObj.selectedIndex].value;
	selectAnyObj.options.length = 0;
	//var anyInicio = parseInt(anyActual) - 1;
	//siempre desde el año actual empezamos.
	var anyInicio = parseInt(anyFechaActual[0]);
	//hasta el año seleccionado + 1.
	var anyDestino = parseInt(anyFechaActual[0]) + 1;
	
	for (cont=anyInicio;cont<=anyDestino;cont++){
		if (cont>=anyFechaActual[0]){
			var newOption = new Option(cont, cont);
			selectAnyObj.options[selectAnyObj.options.length] = newOption;
			if (anyActual==newOption.value){
				newOption.selected=true;
			}
		}
	}

	
	if (tipoCombo!=undefined){
		if (tipoCombo=='FE'){
			//guardamos la fecha de entrada actual
			this.fechaEntrada =obtenerFechaEntradaActual();
		}
		
		if (tipoCombo=='FS'){
			//guardamos la fecha de salida actual
			this.fechaSalida =obtenerFechaSalidaActual();
		}
	} else{
		//alert("Parámetro 'FE' o 'FS' no pasado en html");
	}
}


//************************diferenciaFechas*************************************************


function diferenciaFechas (fechaEntrada, fechaSalida) {

	if (fechaEntrada.indexOf("-")>-1) separadorFecha="-";
	else if (fechaEntrada.indexOf("/")>-1) separadorFecha="/";
    else separadorFecha="-";

 		//parámetros 'fechaEntrada' y 'fechaSalida' ....
 		//...con formato "yyyy + separadorFecha + MM + separadorFecha + dd"

   var fechaEntradaArray = fechaEntrada.split(separadorFecha);
   var fechaSalidaArray =	fechaSalida.split(separadorFecha);

   //los meses en javascript van de 0 a 11.
   
   //para la fecha de entrada.
	/*	var mes = eval(fechaEntradaArray[1]);
		if (mes>0){
			fechaEntradaArray[1]= mes -1;
		}
		//para la fecha salida.
  	mes = eval(fechaSalidaArray[1]);
		if (mes>0){
			fechaSalidaArray[1]= mes -1;
		}*/
   //Obtiene objetos Date
   //siempre un date se inicializa (año, mes, dia)
   //var dateEntrada = new Date( fechaEntradaArray[0], fechaEntradaArray[1], fechaEntradaArray[2]);
   //var dateSalida = new Date( fechaSalidaArray[0], fechaSalidaArray[1], fechaSalidaArray[2]);
	var dateEntrada = obtenerFecha( fechaEntradaArray[0], fechaEntradaArray[1], fechaEntradaArray[2]);
  var dateSalida = obtenerFecha( fechaSalidaArray[0], fechaSalidaArray[1], fechaSalidaArray[2]);

   //Resta fechas y redondea
   var diferencia = dateSalida.getTime() - dateEntrada.getTime();
   var dias = Math.floor(diferencia / (1000 * 60 * 60 * 24));
   var segundos = Math.floor(diferencia / 1000);
   
   
   var dia = 86400000;
   if (diferencia/dias>dia){
     //hay milesimas de mas se perdio una hora y no llega al siguiente dia.
     if (dias+1<=7){
      dias = dias +1;
     }
   }

   
   
   return dias;
}


//********************************isFecha********************************************

function isFecha(val,format){

	var date=getDateFromFormat(val,format);
	if(date==0){
		return false;
	}
	return true;
	
}

//********************************getUltimaFechaCorrecta********************************************

function getUltimaFechaCorrecta(fecha,format){
//devuelve la ultima fecha posterior valida.
	var contDias;
	var fechaCorrecta;
	var validarFecha;
	var fechaOk = false;
	var vecFecha = fecha.split(separadorFecha);
	
	contDias = eval(vecFecha[2]);
	
	while (contDias>27 && fechaOk==false){
		
		validarFecha = vecFecha[0] + separadorFecha + vecFecha[1] + separadorFecha + contDias;
		if (isFecha(validarFecha,format)){
			fechaOk = true;
		}
		else{
			contDias=contDias-1;
		}
	}
	if (fechaOk){
		fechaCorrecta = validarFecha;
	}
	else{
		fechaCorrecta = null;
	}
	return fechaCorrecta;
}


//********************************getNits********************************************

function getNits(){
	return (diferenciaFechas(this.fechaEntrada,this.fechaSalida));

}


//************************recuperarFechaSalida_y_Entrada_Previas****************

function recuperarFechaSalida_y_Entrada_Previas(){
					
	//recuperamos la fecha entrada previa
	fechaEntradaTemp = this.fechaEntrada.split(separadorFecha);
	fechaSalidaTemp = this.fechaSalida.split(separadorFecha);
	var fechaEntrada = this.fechaEntrada;
	var fechaSalida = this.fechaSalida;
	setFechaEntrada(fechaEntradaTemp[0],fechaEntradaTemp[1],fechaEntradaTemp[2]);
	//tb recuperamos la fecha salida pq el metodo setFechaEntrada cambia la fecha
	setFechaSalida(fechaSalidaTemp[0],fechaSalidaTemp[1],fechaSalidaTemp[2]);
	this.fechaEntrada = fechaEntrada;
	this.fechaSalida = fechaSalida;
}




//*************************obtenerFechaEntradaActual****************************************

function obtenerFechaEntradaActual(){
	//obtenemos en formato "yyyy + separadorFecha + MM + separadorFecha + dd" la fecha de entrada del combo de fecha entrada.
	//recogemos los valores del combo fechaEntrada asociado.
	//en formato año + separadorFecha + mes + separadorFecha  + dia  (segun variable global 'patronFormatoFecha').
	//el mes opera en 1-12. (asi esta el combo)

	var fecha = anyFechaEntrada[anyFechaEntrada.selectedIndex].value
	+ separadorFecha + mesFechaEntrada[mesFechaEntrada.selectedIndex].value
	+ separadorFecha + diaFechaEntrada[diaFechaEntrada.selectedIndex].value;
	
	return fecha;
}


//*****************************obtenerFechaSalidaActual************************************

function obtenerFechaSalidaActual(){
	//obtenemos en formato "yyyy + separadorFecha + MM + separadorFecha + dd" la fecha de entrada del combo de fecha entrada.
	//recogemos los valores del combo fechaSalida asociado.
	//en formato año + separadorFecha + mes + separadorFecha  + dia  (segun variable global 'patronFormatoFecha').
	//el mes opera en 1-12. (asi esta el combo)
	
	var fecha = anyFechaSalida[anyFechaSalida.selectedIndex].value
	+ separadorFecha + mesFechaSalida[mesFechaSalida.selectedIndex].value
	+ separadorFecha + diaFechaSalida[diaFechaSalida.selectedIndex].value;
	
	return fecha;
}

//*****************************findPosX**********************************************************
//funcion para obtener el left de un objeto html en la pagina.
function findPosX(obj){
	var curleft = 0;
	if (obj.offsetParent){
		while (obj.offsetParent){
			curleft += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	} else if (obj.x){
		curleft += obj.x;
	}
	return curleft;
} 

//*****************************findPosY**********************************************************
//funcion para obtener el top de un objeto html en la pagina.
function findPosY(obj){
	var curTop = 0;
	if (obj.offsetParent){
		while (obj.offsetParent){
			curTop += obj.offsetTop;
			obj = obj.offsetParent;
		}
	} else if (obj.y){
		curTop += obj.y;
	}
	return curTop;
} 


//*****************************cambioFechaCombo******************************************


function cambioFechaCombo(comboFechaDia,comboFechaMes,comboFechaAny,tipoComboFecha){
	//funcion para al seleccionar fechas en el combo estas sean correctas y establecer fechas...
	//...correctas al cambiar las fechas de entrada y salida, lo llama el evento onchange.

	//PARAMETROS:
	// - comboFechaDia,comboFechaMes,comboFechaAny -- objeto que representa los combos de fecha.
	// - tipoComboFecha -- tipo del combo puede tener dos valores (FE - fecha entrada / FS - fecha salida)

	
	//formato "yyyy + separadorFecha + MM + separadorFecha + dd"
	var fecha = comboFechaAny[comboFechaAny.selectedIndex].value
	+ separadorFecha + comboFechaMes[comboFechaMes.selectedIndex].value
	+ separadorFecha + comboFechaDia[comboFechaDia.selectedIndex].value;
		
	

	//formato "dd + separadorFecha + MM + separadorFecha + yyyy"
	var fechaEspanyol = comboFechaDia[comboFechaDia.selectedIndex].value
	+ separadorFecha + comboFechaMes[comboFechaMes.selectedIndex].value
	+ separadorFecha + comboFechaAny[comboFechaAny.selectedIndex].value;
	
	var fechaEntradaGuardada = this.fechaEntrada;
	var fechaSalidaGuardada = this.fechaSalida;
	
	var fechaOK = 0;
	var fechaSalidaTemp=null;
	var fechaEntradaTemp = null;
	
	if (isFecha(fecha,patronFormatoFecha)){
		fechaOK = 1;
	} else{
		
		/*if (tipoComboFecha=='FE'){
			//alert("Fecha incorrecta en fecha entrada");
			mostrarMensaje(arrayMensajes[0] + " : " + fechaEspanyol,'divMensaje','ERROR');
		}else if (tipoComboFecha=='FS'){
			//alert("Fecha incorrecta en fecha salida");
			mostrarMensaje(arrayMensajes[1] + " : " + fechaEspanyol,'divMensaje','ERROR');
		}
		
		//recuperamos la fecha entrada/salida previa
		recuperarFechaSalida_y_Entrada_Previas();*/
		
		
		
		//obtenemos la posterior fecha correcta a la recibida.
		var fechaValida = getUltimaFechaCorrecta(fecha,patronFormatoFecha);
		if (fechaValida!=null){
			fechaOK =1;
			fecha = fechaValida;
			var vecFechaValida = fecha.split(separadorFecha);
			//volvemos a establecer la fecha valida en los combos fecha, calendarios y demás.
			if (tipoComboFecha=='FE'){
				setFechaEntrada(vecFechaValida[0],vecFechaValida[1],vecFechaValida[2]);
			}				
			else{
				setFechaSalida(vecFechaValida[0],vecFechaValida[1],vecFechaValida[2]);
			}
		
		}
	}
	if (fechaOK==1){
		
		
		if (tipoComboFecha!=undefined){
			if (tipoComboFecha=='FE'){
			//combo fecha entrada
				
				var fechaHoyMasUnDia = operarDias(fecha,1,"+");
				var hoyDate = new Date();
				var fechaHoy = formatDate(hoyDate,patronFormatoFecha);
			
				
				
				
				if (compararFechas(fecha,fechaHoy)<0){
					//hemos puesto como fecha de entrada una fecha < que la actual.
					//alert("La fecha de entrada no es correcta porque es menor que la fecha actual");
					//mostrarMensaje(arrayMensajes[2],'divMensaje','ERROR');
					//recuperamos la fecha entrada/salida previa
					//recuperarFechaSalida_y_Entrada_Previas();
					
					
					//nos situamos al dia actual
					var vecFechaDeHoy = (obtenerFechaHoy()).split(separadorFecha);
					
					setFechaEntrada (vecFechaDeHoy[0],vecFechaDeHoy[1],vecFechaDeHoy[2]);
					var fechaSalidaCambiarHoyMasUnDia = (formatDate(operarDias(fechaHoy,1,"+"),patronFormatoFecha)).split(separadorFecha);
					setFechaSalida (fechaSalidaCambiarHoyMasUnDia[0],fechaSalidaCambiarHoyMasUnDia[1],fechaSalidaCambiarHoyMasUnDia[2]);
					
					
					
					//guardamos la fecha de entrada actual
					this.fechaEntrada =obtenerFechaEntradaActual();
					//guardamos la fecha de salida actual
					this.fechaSalida =obtenerFechaSalidaActual();
					//le pasamos la fecha de entrada al calendario de salida para aplicar restricciones.
					calendarioSalida.setFechaActualCalendarioEntrada(this.fechaEntrada);
					
				}else if(fechaHoyMasUnDia.getFullYear()==hoyDate.getFullYear()+2){
					//comprobamos que no pueda elegir 31/12 del año actual+1 por si puede elegir esta fecha....
					//...entonces no podría elegir fecha de salida por año actual +1 esta bloqueado.
					//alert("[CAMBIAR]no puede elegir el 31 de este año");
					//alert("No puede seleccionar como fecha de entrada el 31/12 de este año porque como mínimo debe elegir 1 dia de estancia.");
					mostrarMensaje(arrayMensajes[6],'divMensaje','ERROR');
					//recuperamos la fecha entrada/salida previa
					recuperarFechaSalida_y_Entrada_Previas();
				}else{
					// fecha entrada ok
					//si la fecha de entrada es mayor o igual a la de salida hay que modificar la fecha...
					//...de salida a (fecha entrada	+ 1 dia)
					
					var fechaEntradaMas7Dias = formatDate(operarDias(fecha,7,"+"),patronFormatoFecha);
				
					//var diferenciaDias = diferenciaFechas(this.fechaEntrada,this.fechaSalida);
					var diferenciaDias = diferenciaFechas(fechaEntradaGuardada,fechaSalidaGuardada);

					if (compararFechas(fechaEntradaMas7Dias,obtenerFechaSalidaActual())<0){
						//alert("fecha  " +fecha + "  diferencia dias " + diferenciaDias);
  					var fechaEntradaDiferenciaDias = operarDias(fecha,diferenciaDias,"+");
  					//alert("fechaEntradaDiferenciaDias  " + fechaEntradaDiferenciaDias);
						var fechaEntradaDiferenciaDiasArray = (formatDate(fechaEntradaDiferenciaDias,patronFormatoFecha)).split(separadorFecha);
						setFechaSalida(fechaEntradaDiferenciaDiasArray[0],fechaEntradaDiferenciaDiasArray[1],fechaEntradaDiferenciaDiasArray[2]);
						

					} else{
						if (compararFechas(fecha,obtenerFechaSalidaActual())>=0){
				
							var fechaSalidaCambiar = (formatDate(operarDias(fecha,1,"+"),patronFormatoFecha)).split(separadorFecha);
							setFechaSalida (fechaSalidaCambiar[0],fechaSalidaCambiar[1],fechaSalidaCambiar[2]);
						
						}
					
					}
					calendarioSalida.deleteAllDisableDate();
					calendarioSalida.addDisabledDates(null,fecha);
					var fechaEntradaMas8Dias = formatDate(operarDias(fecha,8,"+"),patronFormatoFecha);
   				calendarioSalida.addDisabledDates(fechaEntradaMas8Dias,null);
					
					//guardamos la fecha de entrada actual
					this.fechaEntrada =obtenerFechaEntradaActual();
					//guardamos la fecha de salida actual
					this.fechaSalida =obtenerFechaSalidaActual();
					//le pasamos la fecha de entrada al calendario de salida para aplicar restricciones.
					calendarioSalida.setFechaActualCalendarioEntrada(this.fechaEntrada);
				}
			}else if (tipoComboFecha=='FS'){
			//combo fecha salida
		
				var fechaEntrada=obtenerFechaEntradaActual();
				var fechaSalida=obtenerFechaSalidaActual();
				var hoyDate = new Date();
				var fechaActualMasUnDia = formatDate(operarDias(formatDate(hoyDate,patronFormatoFecha),1,"+"),patronFormatoFecha);
			
				
				
				if (compararFechas(fecha,fechaActualMasUnDia)<0){
					//hemos puesto como fecha de entrada una fecha < que la actual.
					//alert("cambiar alert : La fecha de salida no es correcta porque debe ser mayor que la fecha actual mas un dia");
					//mostrarMensaje(arrayMensajes[2],'divMensaje','ERROR');
					//recuperamos la fecha entrada/salida previa
					//recuperarFechaSalida_y_Entrada_Previas();
					//nos situamos al dia actual
					var vecFechaDeHoy = (obtenerFechaHoy()).split(separadorFecha);
					//alert(vecFechaDeHoy);
					setFechaEntrada (vecFechaDeHoy[0],vecFechaDeHoy[1],vecFechaDeHoy[2]);
					var fechaSalidaCambiarHoyMasUnDia = (formatDate(operarDias(fechaHoy,1,"+"),patronFormatoFecha)).split(separadorFecha);
					setFechaSalida (fechaSalidaCambiarHoyMasUnDia[0],fechaSalidaCambiarHoyMasUnDia[1],fechaSalidaCambiarHoyMasUnDia[2]);
					
					//guardamos la fecha de entrada actual
					this.fechaEntrada =obtenerFechaEntradaActual();
					//guardamos la fecha de salida actual
					this.fechaSalida =obtenerFechaSalidaActual();
					//le pasamos la fecha de entrada al calendario de salida para aplicar restricciones.
					calendarioSalida.setFechaActualCalendarioEntrada(this.fechaEntrada);

					
				}
				else if (compararFechas(fechaEntrada,fecha)>=0){
					//la fecha de entrada es > que la fecha de salida, hemos puesto una fecha de....
					//...salida menor que la de entrada.
					
					//alert("La fecha de salida no es correcta porque es menor que la fecha de entrada");
					//mostrarMensaje(arrayMensajes[3],'divMensaje','ERROR');
					
					//recuperamos la fecha salida previa
					//recuperarFechaSalida_y_Entrada_Previas();
					
					//si movemos la fecha salida anterior a la fecha de salida , nos situamos en esta fecha...
					//...y ponemos la fecha de entrada un dia antes.
					//Siempre se permitirá el cambio cuando la fecha sea mayor que la fecha actual + 1 (primer if valida esto).
					var fechaEntradaCambiar = (formatDate(operarDias(fecha,1,"-"),patronFormatoFecha)).split(separadorFecha);
					setFechaEntrada (fechaEntradaCambiar[0],fechaEntradaCambiar[1],fechaEntradaCambiar[2]);
					//guardamos la fecha de entrada actual
					this.fechaSalida =obtenerFechaSalidaActual();
				/*}else if (compararFechas(fechaEntrada,fecha)==0){
					//la fecha de entrada es = que la fecha de salida, hemos puesto una fecha de....
					//...salida igual que la de entrada.
					//alert("La fecha de salida no es correcta porque es igual que la fecha de entrada");
					mostrarMensaje(arrayMensajes[4],'divMensaje','ERROR');
					//recuperamos la fecha salida previa
					recuperarFechaSalida_y_Entrada_Previas();
				*/
				}else{
					
					
					//sólo permitimos escoger un intervalo de 8 dias de reserva desde la fecha entrada...
					//...por eso bloqueamos en fecha salida lo superior a 8 dias (cabe decir que ....
					//...el dia de entrada tb cuenta, por ejemplo se debe poder seleccionar de miercoles a miercoles)
					//Realizamos aqui la operacion con 6 dias pq hay que contar tb el dia de fecha de entrada.
					var fechaEntradaMas7Dias = formatDate(operarDias(fechaEntrada,7,"+"),patronFormatoFecha);
					if (compararFechas(fechaEntradaMas7Dias,fechaSalida)<0){
						//alert("La fecha salida tiene un intervalo superior a 7 días respecto la fecha de entrada");
						mostrarMensaje(arrayMensajes[5],'divMensaje','ERROR');
						 this.fechaSalida = fechaSalidaGuardada;
						recuperarFechaSalida_y_Entrada_Previas();
					} else{
						//guardamos la fecha de entrada actual
						this.fechaSalida =obtenerFechaSalidaActual();
					}
				}
			}
		} else{
			//alert("Parámetro 'FE' o 'FS' no pasado en html");
		}
	}

}



