/********************** Recibe las fechas maxima y minima del folleto del xml fechas *********************/

function controlafechas (folleto,rutaxml)
{
	abreXml(rutaxml);
	cargaFechas (folleto);
	var fent = document.frmDatos.fent.value;
	var fsal = document.frmDatos.fsal.value;

	var fecha = new Date ();
	var pepe = fecha;
	pepe.setDate(pepe.getDate () + 4)
	var dia = pepe.getDate ();
	if (dia < 10)
		dia = "0" + dia;
	var mes = fecha.getMonth () + 1;
	if (mes < 10)
		mes = "0" + mes;
	var anyo = fecha.getYear ();

	var fechaMenorLlegada = anyo + '' + mes + '' + dia;

	if (fent > fechaMenorLlegada)
		fechaMenorLlegada = fent;

	anyo = fechaMenorLlegada.substring (0,4)
	mes = fechaMenorLlegada.substring (4,6)
	dia = fechaMenorLlegada.substring (6,8)
	fechaMenorLlegada = dia + "/" + mes + "/" + anyo;
	var fechaMenorSalida = (parseInt(dia) + 1) + "/" + mes + "/" + anyo;


	anyo = fsal.substring (0,4)
	mes = fsal.substring (4,6)
	dia = fsal.substring (6,8)
	fsal = dia + "/" + mes + "/" + anyo;

	var fechaMayorLlegada = fsal;
	var fechaMayorSalida = fechaMayorLlegada;	

	document.frmDatos.fechaMenorLlegada.value = fechaMenorLlegada;
	document.frmDatos.fechaMayorLlegada.value = fechaMayorLlegada;
	document.frmDatos.fechaMenorSalida.value = fechaMenorSalida;
	document.frmDatos.fechaMayorSalida.value = fechaMayorSalida;
}

/**************** Especifica las fechas max y min que se podrán selecionar en el el calendario. ******************/ 

function cargaFechas (folleto)
{
	var fecha_entrada1, fecha_entrada2,fecha_salida1,fecha_salida2,fent,fsal;
	var num_com = xmlObj.childNodes.length;
	var posicionXml = 0;
	for (i=0; i<num_com; i++)
	{
		if (xmlObj.childNodes(i).childNodes(0).text == folleto && xmlObj.childNodes(i).childNodes(2).text == 'A')
		{
			if (posicionXml == 0)
			{
				fecha_entrada1 = xmlObj.childNodes(i).childNodes(3).text;
				fecha_salida1 = xmlObj.childNodes(i).childNodes(4).text;
				posicionXml++;
			}
			else
			{
				fecha_entrada2 = xmlObj.childNodes(i).childNodes(3).text;
				fecha_salida2 = xmlObj.childNodes(i).childNodes(4).text;
			}
			document.frmDatos.maxnoches.value = xmlObj.childNodes(i).childNodes(5).text;//Guarada el maximo de noches selecionables en el calendario, según folleto.
		}
	}
	if (fecha_entrada2 != undefined)
	{
		if (fecha_entrada1 < fecha_entrada2)
		{
			fent = fecha_entrada1;			//En esta funcion se seleciona del Xml las fechas de inicio y fin de cada uno de los 
			fsal = fecha_salida2;			//folletos, para realizar los controles posteriores al selecionar fechas en el calendario
		}									// y cargaR ESTE.
		else
		{
			fent = fecha_entrada2;
			fsal = fecha_salida1;
		}
	}	
	else
	{
		fent = fecha_entrada1;
		fsal = fecha_salida1
	}
	document.frmDatos.fent.value = fent;
	document.frmDatos.fsal.value = fsal;
}

/******************** Borra los textbox de las fechas de entrada y salida del establecimiento ***************/

function borra_fechas ()
{
	document.frmDatos.entrada.value = '';
	document.frmDatos.salida.value = '';
}

/****** Segun el folleto le pasa unos parametros u otros a la funcion calendario en la fecha de entrada ******/

function controlacalendarioentrada ()
{
	if (document.frmDatos.tipo.value == 'FS')
		location.href = calendario('document.frmDatos.entradafs',document.frmDatos.entradafs.value,document.frmDatos.fechaMenorLlegada.value,document.frmDatos.fechaMayorLlegada.value,'buscahotel',1,document.frmDatos.diassueltos.value);
	else
		location.href = calendario('document.frmDatos.entrada',document.frmDatos.entrada.value,document.frmDatos.fechaMenorLlegada.value,document.frmDatos.fechaMayorLlegada.value,'buscahotel',0,'');
}

/****** Segun el folleto le pasa unos parametros u otros a la funcion calendario en la fecha de entrada ******/

function controlacalendariosalida ()
{
	if (document.frmDatos.tipo.value != 'FS')
		location.href = calendario('document.frmDatos.salida',document.frmDatos.salida.value,document.frmDatos.fechaMenorSalida.value,document.frmDatos.fechaMayorSalida.value,'buscahotel',0,'');
}

/*************** Controla el cambio en el text box de la fecha de entrada y modifica la de salida **************/

function fechaEntradaChange(dias)
{
	var diaEntrada = fecha_cal (document.frmDatos.entrada.value);

	if (document.frmDatos.salida.value == "")
	{
		for (i=0; i<dias; i++)
			diaEntrada = new Date (diaEntrada.getTime()+DyMilli);
		
		document.frmDatos.fechaMenorSalida.value = fecha_text (diaEntrada)
		document.frmDatos.salida.value = document.frmDatos.fechaMenorSalida.value;
	}
	else
	{
		var diaSalida = fecha_cal (document.frmDatos.salida.value);
		document.frmDatos.salida.value = '';

		for (i=0; i<dias; i++)
			diaEntrada = new Date (diaEntrada.getTime()+DyMilli);

		document.frmDatos.fechaMenorSalida.value = fecha_text (diaEntrada);
		document.frmDatos.salida.value = document.frmDatos.fechaMenorSalida.value;
	}
	calculaNochesEstancia();
}

/******************************* Controla el cambio en el text box de la fecha de salida ************************/

function fechaSalidaChange()//Controla el cambio del parametro de fecha, para actualizar la salida
{
	if (document.frmDatos.entrada.value == "")
	{
		var diaSalida = fecha_cal (document.frmDatos.salida.value);
		diaSalida = new Date(diaSalida.getTime()-DyMilli);				
		fllegada = fecha_text(diaSalida)
		document.frmDatos.entrada.value = fllegada;
	}
	calculaNochesEstancia();
}

/************************** Controla en numero de noches introducido ***********************************/

function calculaNochesEstancia()
{
	var diaEntrada = fecha_cal (document.frmDatos.entrada.value);			
	var diaSalida = fecha_cal (document.frmDatos.salida.value);
	var noches = (diaSalida - diaEntrada.getTime())/DyMilli;

	noches = noches + "";	
	var pepe = noches.indexOf (".")

	if (pepe != -1)
	{
		var jose = noches.substring(pepe+1,pepe+2) 
		if (jose >= 5)
			noches = parseInt(noches) + 1;
	}

	var error = controlaNoches (noches, diaEntrada);	

	if (error == 0)
		document.frmDatos.nochesEstancia.value = parseInt(noches);
	else
		document.frmDatos.salida.value = '';
}

/****** Devuelve a la funcion calculaNochesEstancia si es correcto o no el numero de noches *********/

function controlaNoches (noches, diaEntrada)//Crea un ventana  que avisa acerca del max de noiches selecionables.
{
	if (parseInt(noches) > parseInt(document.frmDatos.maxnoches.value))
	{
		var diaE = diaEntrada.getDate() + parseInt(document.frmDatos.maxnoches.value);
		var mesE = diaEntrada.getMonth() + 1;
		var anyoE = diaEntrada.getYear ();
		var diamaximo = diaE + "/" + mesE + "/" + anyoE;
		diamaximo = fecha_cal (diamaximo);
		diamaximo = fecha_text (diamaximo);

		var codigo_flotante = new String (
		"<html>\n" + "<head>\n" + "<title>Atención</title>\n" + "</head>\n" +
		"<body bgcolor=\"#f5f5f5\" topmargin=\"0\" leftmargin=\"0\">\n"+
		"<table cellspacing=\"0\" cellpadding=\"5\" border=\"0\" width=\"100%\" bgcolor=\"#f5f5f5\">\n"+
		"<tr><td bgcolor=\"#B5DFF7\">\n"+
		"<font color=\"#212C8C\" face=\"verdana\" size=\"1\"><b>Atención:</b></font></td></tr>" + 
		"<tr><td bgcolor=\"#f5f5f5\"><font color=\"#000000\" face=\"verdana\" size=\"1\">* El número de noches seleccionado no puede exceder de " + document.frmDatos.maxnoches.value + ".<br><br>" + 
		"* Para la fecha de entrada que has seleccionado debes indicar como &nbsp;&nbsp;&nbsp;fecha de salida máxima el día " + diamaximo + "</font></td></tr>" + 
		"<tr><td align=\"center\"><a href=\"javascript:window.close();\" style=\"text-decoration: none\"><font color=\"#000000\" face=\"verdana\" size=\"1\">cerrar</font></a>\n</table></body></html>");
	
		flotanteError (410,110,codigo_flotante);
		return 1;
	}
	else
		return 0;
}

/********** Pinta en el combo de noches de FS tantas noches correlativas tengan fecha valida (hasta 7) ************/

function controla_noches_estancia()
{
	var hoy1, dmes;
	var dia_actual = document.frmDatos.entradafs.value;

	hoy1 = fecha_cal (dia_actual)

	var diasMes = new Array ();
	diasMes = unifica_fechas (hoy1);

	var noches = 0;

	var longdiasMes = diasMes.length
	var i = 0;

	while (i < longdiasMes-1 && noches < 7)
	{
		dmes = fecha_cal (diasMes[i])
		if (hoy1.getDate() == dmes.getDate() && hoy1.getMonth() == dmes.getMonth() && hoy1.getYear() == dmes.getYear())
		{
			hoy1.setDate (hoy1.getDate() + 1)
			noches++
		}
		i++;
	}

	limpiaNoches ();
	for (i=0; i<noches; i++)
		document.frmDatos.noches.options[i]=new Option(i+1,i+1);
}

/******************************* Limpia el combo de noches en fines de semana ************************************/

function limpiaNoches ()
{
	var elemencombo=document.frmDatos.noches.length;
	var codigo='';
	
	for(i=0;i<elemencombo;i++)
	{
		document.frmDatos.noches.options[0]=null;
	}
}

/***** Unifica las fechas de los dias habiles del mes actual, los dias sueltos y el fin de semana siguiente *******
****** al seleccionado en el caso de que el seleccionado sea fin de semana llamando a la funcion incluyeFinde *****/

function unifica_fechas (hoy)
{
	var contdia, encontrado = 0;
	var diaMes = new Array ();
	var diasSueltos = new Array ();
	var findes = new Array ();
	diaMes = document.frmDatos.fechasmes.value.split (',');
	diasSueltos = cargaDiasSueltos (document.frmDatos.diassueltos.value);

	if (hoy.getDay() == 0 || hoy.getDay() == 6)
		findes = dameFindeSiguiente (hoy);

	var longdiaMes = diaMes.length;
	var longdiasSueltos = diasSueltos.length;

	contdia = longdiaMes - 1;

	dia = fecha_cal (diaMes[longdiaMes-2])

	for (i = 0; i < longdiasSueltos; i++)
	{
		dia2 = fecha_cal (diasSueltos[i])
		if (dia.getMonth() <= dia2.getMonth())
		{
			if (dia2.getDate() > dia.getDate() && encontrado < 8)
			{
				diaMes [contdia] = fecha_text (dia2);
				contdia++;
				encontrado++;
			}
		}
	}

	if (findes != '')
		diaMes = incluyeFinde (diaMes,findes)
			
	return diaMes;
}

/********** Recoge el dia seleccionado y si es fin de semana devuelve el fin de semana siguiente ***********/

function dameFindeSiguiente (hoy)
{
	var findes = new Array();
	var fecha_findes;

	fecha_findes = hoy;

	if (fecha_findes.getDay() == 0)
	{
		fecha_findes.setDate (fecha_findes.getDate()+6)
		findes[0] = fecha_text (fecha_findes);
		fecha_findes.setDate (fecha_findes.getDate()+1)
		findes[1] = fecha_text (fecha_findes);
		fecha_findes.setDate (fecha_findes.getDate()-7)
	}
	if (fecha_findes.getDay() == 6)
	{
		fecha_findes.setDate (fecha_findes.getDate()+7)
		findes[0] = fecha_text (fecha_findes);
		fecha_findes.setDate (fecha_findes.getDate()+1)
		findes[1] = fecha_text (fecha_findes);
		fecha_findes.setDate (fecha_findes.getDate()-8)
	}

	return findes;
}

/****** Incluye en la cadena de dias habiles el fin de semana siguiente al que ha seleccionado el cliente ********/

function incluyeFinde (diaMes,findes)
{
 	var longdiaMes = diaMes.length
	var i = 0,sabado,domingo,dia,diamas,corte, encontrado = 0,pondomingo = 0;
	var muevearray = 1;
	sabado = fecha_cal (findes[0])
	domingo = fecha_cal (findes[1])

	while (i < longdiaMes-2 && encontrado != 1)
	{
		dia = fecha_cal (diaMes[i])
		diamas = fecha_cal (diaMes[i+1])
		if (sabado.getMonth() == dia.getMonth())
		{
			if (sabado.getDate() > dia.getDate() && sabado.getDate() < diamas.getDate())
			{
				if (domingo.getMonth() != diamas.getMonth() && domingo.getDate() != diamas.getDate())
				{
					muevearray++;
					pondomingo = 1;
				}

				corte = i+1;
				for (j=longdiaMes-1; j>=corte; j--)
				{
					diaMes [j+muevearray] = diaMes [j]
				}
				diaMes[corte] = fecha_text (sabado);
				if (pondomingo == 1)
					diaMes[corte+1] = fecha_text (domingo);
				encontrado = 1;
			}
		}
		i++;	
	}
	return (diaMes)
}

function salidas_feve (dato,salidas)
{
	var origen = dato.split(",");
	var tot_salidas = salidas.length;

	for(i=0 ; i<tot_salidas ; i++)
	{
		salidas.options[0]=null;
	}
	salidas.options[0]=new Option( "Selecciona Fecha","");

	switch (origen[1])
	{
		case 'LCG':	
			salidas.options[0]=new Option( "Selecciona Fecha","");
			salidas.options[1]=new Option( "Sábado,27 de Mayo de 2006","27/05/2006");
			salidas.options[2]=new Option( "Sábado,3 de Junio de 2006","03/06/2006");
			salidas.options[3]=new Option( "Sábado,10 de Junio de 2006","10/06/2006");
			salidas.options[4]=new Option( "Sábado,24 de Junio de 2006","24/06/2006");
			salidas.options[5]=new Option( "Sábado,1 de Julio de 2006","01/07/2006");
			salidas.options[6]=new Option( "Sábado,8 de Julio de 2006","08/07/2006");
			salidas.options[7]=new Option( "Sábado,15 de Julio de 2006","15/07/2006");
			salidas.options[8]=new Option( "Sábado,22 de Julio de 2006","22/07/2006");
			salidas.options[9]=new Option( "Sábado,29 de Julio de 2006","29/07/2006");
			salidas.options[10]=new Option( "Sábado,12 de Agosto de 2006","12/08/2006");
			salidas.options[11]=new Option( "Sábado,19 de Agosto de 2006","19/08/2006");
			salidas.options[12]=new Option( "Sábado,26 de Agosto de 2006","26/08/2006");
			salidas.options[13]=new Option( "Sábado,2 de Septiembre de 2006","02/09/2006");
			salidas.options[14]=new Option( "Sábado,9 de Septiembre de 2006","09/09/2006");
			salidas.options[15]=new Option( "Sábado,16 de Septiembre de 2006","16/09/2006");
			salidas.options[16]=new Option( "Sábado,23 de Septiembre de 2006","23/09/2006");
			salidas.options[17]=new Option( "Sábado,30 de Septiembre de 2006","30/09/2006");
			salidas.options[18]=new Option( "Sábado,7 de Octubre de 2006","07/10/2006");
			salidas.options[19]=new Option( "Sábado,21 de Octubre de 2006","21/10/2006");
			break;
		case 'LEO':
			salidas.options[0]=new Option( "Selecciona Fecha","");
			salidas.options[1]=new Option( "Sábado,27 de Mayo de 2006","27/05/2006");
			salidas.options[2]=new Option( "Sábado,3 de Junio de 2006","03/06/2006");
			salidas.options[3]=new Option( "Sábado,10 de Junio de 2006","10/06/2006");
			salidas.options[4]=new Option( "Sábado,24 de Junio de 2006","24/06/2006");
			salidas.options[5]=new Option( "Sábado,15 de Julio de 2006","15/07/2006");
			salidas.options[6]=new Option( "Sábado,22 de Julio de 2006","22/07/2006");
			salidas.options[7]=new Option( "Sábado,29 de Julio de 2006","29/07/2006");
			salidas.options[8]=new Option( "Sábado,19 de Agosto de 2006","19/08/2006");
			salidas.options[9]=new Option( "Sábado,26 de Agosto de 2006","26/08/2006");
			salidas.options[10]=new Option( "Sábado,2 de Septiembre de 2006","02/09/2006");
			salidas.options[11]=new Option( "Sábado,16 de Septiembre de 2006","16/09/2006");
			salidas.options[12]=new Option( "Sábado,23 de Septiembre de 2006","23/09/2006");
			salidas.options[13]=new Option( "Sábado,30 de Septiembre de 2006","30/09/2006");
			salidas.options[14]=new Option( "Sábado,7 de Octubre de 2006","07/10/2006");
			salidas.options[15]=new Option( "Sábado,14 de Octubre de 2006","14/10/2006");
			salidas.options[16]=new Option( "Sábado,28 de Octubre de 2006","28/10/2006");
			break;
		case 'SVQ':
			salidas.options[0]=new Option( "Selecciona Fecha","");
			salidas.options[1]=new Option( "2 de Abril de 2005","02/04/2005");
			salidas.options[2]=new Option( "9 de Abril de 2005","09/04/2005");
			salidas.options[3]=new Option( "16 de Abril de 2005","16/04/2005");
			salidas.options[4]=new Option( "23 de Abril de 2005","23/04/2005");
			salidas.options[5]=new Option( "30 de Abril de 2005","30/04/2005");
			salidas.options[6]=new Option( "7 de Mayo de 2005","07/05/2005");
			salidas.options[7]=new Option( "21 de Mayo de 2005","21/05/2005");
			salidas.options[8]=new Option( "28 de Mayo de 2005","28/05/2005");
			salidas.options[9]=new Option( "04 de Junio de 2005","04/06/2005");
			salidas.options[19]=new Option( "11 de Junio de 2005","11/06/2005");
			salidas.options[10]=new Option( "18 de Junio de 2005","18/06/2005");
			salidas.options[11]=new Option( "3 de Septiembre de 2005","03/09/2005");
			salidas.options[12]=new Option( "10 de Septiembre de 2005","10/09/2005");
			salidas.options[13]=new Option( "17 de Septiembre de 2005","17/09/2005");
			salidas.options[14]=new Option( "24 de Septiembre de 2005","24/09/2005");
			salidas.options[15]=new Option( "1 de Octubre de 2005","01/10/2005");
			salidas.options[16]=new Option( "8 de Octubre de 2005","08/10/2005");
			salidas.options[17]=new Option( "22 de Octubre de 2005","22/10/2005");
			break;
		case 'GRX':
			salidas.options[0]=new Option( "Selecciona Fecha","");
			salidas.options[1]=new Option( "05 de Abril de 2005","05/04/2005");
			salidas.options[2]=new Option( "12 de Abril de 2005","12/04/2005");
			salidas.options[3]=new Option( "19 de Abril de 2005","19/04/2005");
			salidas.options[4]=new Option( "26 de Abril de 2005","26/04/2005");
			salidas.options[5]=new Option( "03 de Mayo de 2005","03/05/2005");
			salidas.options[6]=new Option( "10 de Mayo de 2005","10/05/2005");
			salidas.options[7]=new Option( "24 de Mayo de 2005","24/05/2005");
			salidas.options[8]=new Option( "07 de Junio de 2005","07/06/2005");
			salidas.options[9]=new Option( "14 de Junio de 2005","14/06/2005");
			salidas.options[10]=new Option( "21 de Junio de 2005","21/06/2005");
			salidas.options[11]=new Option( "28 de Junio de 2005","28/06/2005");
			salidas.options[12]=new Option( "06 de Septiembre de 2005","06/09/2005");
			salidas.options[13]=new Option( "13 de Septiembre de 2005","13/09/2005");
			salidas.options[14]=new Option( "1 de Septiembre de 2005","20/09/2005");
			salidas.options[15]=new Option( "20 de Septiembre de 2005","27/09/2005");
			salidas.options[16]=new Option( "04 de Octubre de 2005","04/10/2005");
			salidas.options[17]=new Option( "11 de Octubre de 2005","11/10/2005");
			salidas.options[18]=new Option( "18 de Octubre de 2005","18/10/2005");
			salidas.options[19]=new Option( "25 de Octubre de 2005","25/10/2005");
			break;
	}
}

function flotanteError (ancho,alto,codigo_flotante)//Crea una ventana con las proipiedas establecidads.
{
	var nAltura = screen.availHeight;
	var nAnchura = screen.availWidth;
	var nTop = (nAltura - 140) * .5;
	nLeft = (nAnchura - 420) * .5;
	var wf = "";	
	wf = wf + "width=" + ancho;
	wf = wf + ",height=" + alto;
	wf = wf + ",top=" + nTop;
	wf = wf + ",left=" + nLeft;
	wf = wf + ",resizable=no";
	wf = wf + ",scrollbars=no";
	wf = wf + ",menubar=no";
	wf = wf + ",toolbar=no";
	wf = wf + ",directories=no";
	wf = wf + ",location=no";
	
	var VentanaError = window.open('','alerta',wf);
	VentanaError.opener = self;
	VentanaError.focus();
	VentanaError.document.write (codigo_flotante);
	VentanaError.document.close();
}
