/*--------------------------------Definido, diseñado y creado por Rubén Martín Guerrero 15/06/2008------------------------------*/

/**************************************** Calendario ***************************************************/

function calendario (campo_destino,valor_campo,dia_minimo,dia_maximo,fs,dias_sueltos)
{
	document.BuscVueloHotel.fechasmes.value = '';

	var diasueltoPintado = 0;

	var diaminimo = fecha_cal (dia_minimo);
	var diamaximo = fecha_cal (dia_maximo);
//alert (diaminimo);
//alert (diamaximo);

	var meses = ["JANUARY", "FEBRUARY", "MARCH", "APRIL", "MAY", "JUNE", "JULY", "AUGUST", "SEPTEMBER", "OCTOBER", "NOVEMBER", "DECEMBER"];
	var dias_semana = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"];
	var inicio_semana = 0;
	var posicionDiasSueltos = 0;

	if (dias_sueltos != "")
		var diasSueltos = cargaDiasSueltos (dias_sueltos);

//Este pequeño condigo se emplea para forzar la fecha de inicio del calendario a la fecha del dia de hoy , salvo que el folleto por el cual se busca comienza posteriormente 
	var hoy=new Date();
	hoy = fecha_text (hoy);
	hoy = fecha_cal (hoy);
	if(diaminimo<=hoy)
		diaminimo=hoy;
	
	var dia =(valor_campo == null || valor_campo =="" || valor_campo =="mm/dd/aaaa"  ? diaminimo : fecha_cal (valor_campo));
	
	var mes_anterior = new Date(dia);
	mes_anterior.setMonth(dia.getMonth()-1);
	if (dia.getMonth()%12 != (mes_anterior.getMonth()+1)%12)
	{
		mes_anterior.setMonth(dia.getMonth());
		mes_anterior.setDate(0);
	}

	
	var mes_siguiente = new Date(dia);
	mes_siguiente.setMonth(dia.getMonth()+1);
	if ((dia.getMonth() + 1)%12 != mes_siguiente.getMonth()%12)
		mes_siguiente.setDate(0);
	
	
	var primer_dia = new Date(dia);
	primer_dia.setDate(1);
	primer_dia.setDate(1-(7+primer_dia.getDay()-inicio_semana)%7);

	var ultimo_dia = new Date(mes_siguiente);
	ultimo_dia.setDate(0);

	var cadena_htm = new String(
	"<html>\n"+
	"<head>\n"+
	"<title>Calendario</title>\n"+
	//"<LINK href=" + estilo + ".css rel=stylesheet type='text/css'>"+
	"</head>\n"+
	"<body class='fondobody' topmargin=\"5\" leftmargin=\"5\">\n"+
	"<table cellspacing=\"0\" border=\"0\" width=\"100%\">\n"+
	"<tr><td class='rebordeexteriortabla'>\n"+
	"<table cellspacing=\"1\" cellpadding=\"0\" border=\"0\" width=\"100%\" class='bordetabla'>\n"+
	"<tr>\n	<td class='fondoizq' align=\"center\" height=\"18\">");

	if (diaminimo.getMonth() != diamaximo.getMonth () || diaminimo.getYear() != diamaximo.getYear ())
	{
		cadena_htm += "<a href=\"javascript:calendario('" + campo_destino + "', '" + fecha_text (mes_anterior) + "','" + fecha_text (diaminimo) + "','" + fecha_text (diamaximo) + "'," + fs + ",'" + dias_sueltos + "');\" style=\"text-decoration: none\" class='flechaizq'><<</a>";
		cadena_htm += "</td>\n" + "<td class='fondotitulo' colspan=\"5\" align=\"center\">" + "<font class=\"titulo\">" + meses[dia.getMonth()] + " " + dia.getFullYear() + "</font></td>\n" + "<td class='fondoder' align=\"center\">";
		cadena_htm += "<a href=\"javascript:calendario('" + campo_destino + "', '" + fecha_text (mes_siguiente) + "','" + fecha_text (diaminimo) + "','" + fecha_text (diamaximo) + "'," + fs + ",'" + dias_sueltos + "');\" style=\"text-decoration: none\" class='flechader'>>></a>";
		cadena_htm += "</td>\n</tr>\n";
	}
	else
	{
		cadena_htm += "&nbsp;";
		cadena_htm += "</td>\n" + "<td class='fondotitulo' colspan=\"5\" align=\"center\">" + "<font class=\"titulo\">" + meses[dia.getMonth()] + " " + dia.getFullYear() + "</font></td>\n" + "<td class='fondoder' align=\"center\">";
		cadena_htm += "&nbsp;";
		cadena_htm += "</td>\n</tr>\n";
	}

	var dia_actual = new Date(primer_dia);
	cadena_htm += "<tr>\n";
	for (var n=0; n<7; n++)
	{
		cadena_htm += "	<td class=\"fondodiassemana\" width=\"35\" height=\"16\" align=\"center\">";
		if (n == 6)
			cadena_htm += "<font class=\"domingocabecera\">"
		else
			cadena_htm += "<font class=\"diassemana\">"
		cadena_htm += dias_semana [(inicio_semana + n) % 7] + "</font></td>\n";
	}

	cadena_htm += "</tr>\n";
	while (dia_actual.getMonth() == dia.getMonth() || dia_actual.getMonth() == primer_dia.getMonth())
	{
		cadena_htm += "<tr>\n";
		for (var contador_semana=0; contador_semana<7; contador_semana++)
		{
			if (dia_actual.getDay() == 0)
				cadena_htm += "<td class=\"fondodomingo\" align=\"center\" height=\"16\">";
			else
				cadena_htm += "<td class=\"fondodias\" align=\"center\" height=\"16\">";

			if ((dia_actual >= diaminimo) && (dia_actual <= diamaximo))
			{
				if (fs != 0 || dias_sueltos != '')
				{
					diasueltoPintado = 0;
					if (dias_sueltos != '')
					{
						var longDias = diasSueltos.length;
						for (j=posicionDiasSueltos; j<longDias; j++)
						{
							var fechaTemp = fecha_cal(diasSueltos[j]);
							if (dia_actual.getDate() == fechaTemp.getDate() && dia_actual.getMonth() == fechaTemp.getMonth() && dia_actual.getYear() == fechaTemp.getYear())
							{
								cadena_htm += "<a class=diassenalados href=\"javascript:" + campo_destino + ".value='" + fecha_text (dia_actual)+"'; " + campo_destino + ".onchange();  oculta_calendario();\" style=\"text-decoration: none\">" + "";
								document.BuscVueloHotel.fechasmes.value = document.BuscVueloHotel.fechasmes.value + fecha_text(dia_actual) + ",";
								diasueltoPintado = 1;
								posicionDiasSueltos++;
							}
						}
					}
					if (fs != 0 && diasueltoPintado == 0)
					{
						if (dia_actual.getDay() == 0 || dia_actual.getDay() == 6 || dia_actual.getDay() == 5)
						{
							cadena_htm += "<a class=diassenalados href=\"javascript:" + campo_destino + ".value='" + fecha_text (dia_actual)+"'; " + campo_destino + ".onchange();  oculta_calendario();\" style=\"text-decoration: none\">" + "";
							document.BuscVueloHotel.fechasmes.value = document.BuscVueloHotel.fechasmes.value + fecha_text(dia_actual) + ",";
						}
						else
							cadena_htm += "<font class=diasnosenalados>";
					}
				}
				else
				{
					if (dia_actual.getMonth() == dia.getMonth())
					{
						cadena_htm += "<a class=diassenalados href=\"javascript:" + campo_destino + ".value='" + fecha_text (dia_actual)+"'; " + campo_destino + ".onchange();  oculta_calendario();\" style=\"text-decoration: none\">" + "";
						document.BuscVueloHotel.fechasmes.value = document.BuscVueloHotel.fechasmes.value + fecha_text(dia_actual) + ",";
					}
					else
					{
						cadena_htm += "<a href=\"javascript:" + campo_destino + ".value='" + fecha_text (dia_actual)+"'; " + campo_destino + ".onchange();  oculta_calendario();\" style=\"text-decoration: none\"><font class=diasnosenalados>" + "";
						document.BuscVueloHotel.fechasmes.value = document.BuscVueloHotel.fechasmes.value + fecha_text(dia_actual) + ",";
					}
				}
				cadena_htm += (dia_actual.getDate()) + "</font></a></td>\n";
			}
			else
			{
				cadena_htm += "<font class=diasnosenalados>";
				cadena_htm += (dia_actual.getDate())+"</font></td>\n";
			}
			dia_actual.setDate(dia_actual.getDate() + 1);
		}
		cadena_htm += "</tr>\n";
	}
	cadena_htm += "</table>\n</td>\n</tr>\n<tr>\n<td align=\"center\">\n<a href=\"javascript:oculta_calendario();\" class=botoncerrar>&nbsp;Close&nbsp</a>\n</td>\n</tr>\n</table>\n</body>\n</html>\n";
	document.getElementById('calendarioss').innerHTML = cadena_htm;
	document.getElementById('calendarioss').style.display = 'none';
	toggleContents1();
}

function toggleContents1()
{
	var div = document.getElementById('calendarioss');
	if(div.style.display == 'none'){
		div.style.display = "";
		document.getElementById('frame1').style.height = '172';
		document.getElementById('frame1').style.display = 'block';
		return;
	}
	div.style.display = "none";
	document.getElementById('frame1').style.height = '0';
}

function oculta_calendario()
{
	document.getElementById('calendarioss').style.display='none';
	document.getElementById('frame1').style.display = 'none';
}


/********************* Carga los días sueltos que le pasen al calendario en un array *************************/

function cargaDiasSueltos (dias)
{
	var cont_dias = 0;
	var fechas = new Array ();
	var dias_sueltos = new Array ();
	var rangofechas = new Array ();

	fechas = dias.split (',');
	longFechas = fechas.length;

	for (i=0; i<longFechas; i++)
	{
		if (fechas[i].indexOf("-") == -1)
		{
			dias_sueltos[cont_dias] = fechas[i];
			cont_dias ++;
		}
		else
		{
			rangofechas = fechas[i].split ('-');
			rangofechas[0]=fecha_cal(rangofechas[0]);
			rangofechas[1]=fecha_cal(rangofechas[1]);
			for (j = rangofechas[0]; j <= rangofechas[1]; j.setDate(j.getDate() + 1))
			{
				dias_sueltos[cont_dias] = fecha_text (j)
				cont_dias++;
			}
		}
	}
	return dias_sueltos;
}

/******************* Convierte una fecha en formato DD/MM/AAAA en fecha maquina ****************************/

function fecha_cal (str_datetime)//Transforma una fecha comun a fechamaquina.
{
	var re_date = /^(\d+)\/(\d+)\/(\d+)$/;
	if (!re_date.exec(str_datetime))
		return alert("Invalid Datetime Format: "+ str_datetime);
	return (new Date (RegExp.$3, RegExp.$1-1, RegExp.$2));
}

/****************** Convierte fecha maquina en fecha en formato MM/DD/AAAA ********************************/

function fecha_text (dt_datetime)
{
	return (new String ((dt_datetime.getMonth()+1)+"/"+dt_datetime.getDate()+"/"+dt_datetime.getFullYear()));
}

/****************** Convierte formato de fecha MM/DD/AAAA en formato de fecha DD/MM/AAAA ******************/
//funcion que cambia de formato la fecha indicada en el buscador para poder lanzar correctamente la url
//ya que para poder realizar la busqueda se necesita el siguiente formato de fecha: dd/mm/aaaa
function cambia_formato_fecha (fecha)
{
	var aux = fecha.split('/');
	fecha = aux[1] + '/' + aux[0] + '/' + aux[2];

	return fecha;
}
