

var diasSemana1=new Array("L","M","X","J","V","S","D");
var mesesAnio=new Array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
var stHOY="Hoy";

var numDiasMeses=new Array(31,28,31,30,31,30,31,31,30,31,30,31);


var mesHoy=7; var anioHoy=2008; var diaHoy=4;
var mesFinal=8; var anioFinal=2009;

var mesActual=mesHoy-1;
var anioActual=anioHoy;
var diaMesAct=diaHoy;
var fechaActual=new Date(anioActual,mesActual,diaMesAct);

var mesMaximo = mesFinal-1;
var anioMaximo = anioFinal;

function CalenPop(mes,anio,SemanaInicial,SemanaFinal,PonDias,PonDaMa,CeldaEspacio,calentipo)
{
var CadenaTot ="";
var fecha=new Date(anio,mes,01);
var Inicia=fecha.getDay()-1;
if(Inicia<0)Inicia+=7;
var diasXmes=numDiasMeses[mes];
if(mes==1){
if(anio%4==0)diasXmes=29;
}
var NumSemanas=parseInt((Inicia+diasXmes)/7);
if((Inicia+diasXmes)%7!=0)NumSemanas++;
var SiMesAnio=false;
var estiloMa=0;
if(PonDaMa){
SiMesAnio=(mes==mesActual&&anio==anioActual)?true:false;
estiloMa=(SiMesAnio)?1:0;
}
CadenaTot+=CabMes(mes,anio,estiloMa,CeldaEspacio,calentipo);
if(PonDias){
CadenaTot+=CabDias(CeldaEspacio);
}
CadenaTot+="<table id='calentipo" + calentipo + "' class='calen' cellspacing='"+CeldaEspacio+"'>";
var diaOmitido=0+(SemanaInicial*Inicia);
var diaEscrito=1+((7*SemanaInicial)-((SemanaInicial)?1:0)*Inicia);
var esHoy;
for(var i=NumSemanas-SemanaInicial;i>SemanaFinal;i--){
CadenaTot+="<tr>";
	for(var j=7;j>0;j--){
		esHoy=false;

		if(diaOmitido<Inicia||diaEscrito>diasXmes){
			CadenaTot+="<td class='diaNo'>";
			diaOmitido++;
		}
		else{
				if((mes<mesActual && anio==anioActual) || (anio<anioActual)){
					CadenaTot+="<td class='diaSiOld'>";
					CadenaTot+=EscribeDiaPop(anio,mes,diaEscrito,esHoy,"nolink",calentipo);
				}
				else{
					if(SiMesAnio&&diaEscrito<diaMesAct){
						CadenaTot+="<td class='diaSiOld'>";
						CadenaTot+=EscribeDiaPop(anio,mes,diaEscrito,esHoy,"nolink",calentipo);
					}
					else{
						if(SiMesAnio&&(diaEscrito==diaMesAct)){
							CadenaTot+="<td class='evDA'>"; esHoy=true;
							CadenaTot+=EscribeDiaPop(anio,mes,diaEscrito,esHoy,"silink",calentipo); /* SI permito el día actual */
						}
						else{
							CadenaTot+="<td class='diaSi'>";
							CadenaTot+=EscribeDiaPop(anio,mes,diaEscrito,esHoy,"silink",calentipo);
						}
					}
				}
			diaEscrito++;
		}
		CadenaTot+="</td>";
	}
	CadenaTot+="</tr>";
}
CadenaTot+="</table>";
return CadenaTot;
}

function EscribeDiaPop(anio,mes,dia,hoy,link,calentipo)
{
var fechaParam=new Date(anio,mes,dia);
var DiaSem=fechaParam.getDay();
var titulo=(hoy)?stHOY:"";
var Finde=false;
var retval="";
var cadenalink1="";
var cadenalink2="";
if (link=="silink"){
	cadenalink1="<a href='#' onclick='fijafecha(" + dia + "," + mes + "," + anio + "," + calentipo + "); return false;'>";
	cadenalink2="</a>";
}
if(DiaSem==6){retval+="<div class='sab";Finde=true;}
else if(DiaSem==0){retval+="<div class='dom";Finde=true;}
if(Finde){
if(hoy)retval+="'><div class='evDAsolo' title='"+titulo+"'>" + cadenalink1 + dia + cadenalink2 + "</div></div>";
else retval+="'>" + cadenalink1 + dia + cadenalink2 + "</div>";
}
else if(hoy)retval="<div class='evDAsolo' title='"+titulo+"'>" + cadenalink1 + dia + cadenalink2 + "</div>";
else retval = cadenalink1 + dia + cadenalink2;
return retval;
}


function CalculaNoches()  /* Usa los campos del formulario directamente */
{
	with (document.forms["reservas"]) {

		var diaIni = finidd.value; var mesIni = finimm.value-1; var anioIni = finiyyyy.value;
		var diaFin = ffindd.value; var mesFin = ffinmm.value-1;	var anioFin = ffinyyyy.value;

		if (diaIni && mesIni>=0 && anioIni && diaFin && mesFin>=0 && anioFin)		/* Si existen todos los datos se efectua el cálculo (enero en JS es = 0) */
		{
			var msFechaIni = (Date.UTC(anioIni,mesIni,diaIni,0,0,0));  /* formato UTC en milisegundos desde midnight Jan 1, 1970 */
			var msFechaFin = (Date.UTC(anioFin,mesFin,diaFin,0,0,0));  /* formato UTC en milisegundos desde midnight Jan 1, 1970 */

			var NumNoches = 0;

			NumNoches = ((msFechaFin/86400000) - (msFechaIni/86400000));	/* Si fuesen Días en vez de Noches habría que sumar 1 */
			if (NumNoches>0) {
				noches.value = NumNoches;
			}
			else if (NumNoches<0) {noches.value = "-";}
				else {noches.value = "0";}

		} /*if existen todos los datos de fecha*/

		else {noches.value = "";}		/* no es posible el cálculo por falta aún de datos */

	} /*with*/
}


function fijafecha(dd,mm,aaaa,calentipo)
{
	with (document.forms["reservas"]) {
		if (calentipo==1) {
			finidd.value = dd;		/* fecha parcial en oculto de formulario */
			finimm.value = mm+1;
			finiyyyy.value = aaaa;

			CalculaNoches();

			document.getElementById("popupini").style.display = 'none';
		}
		else if (calentipo==2) {
			ffindd.value = dd;		/* fecha parcial en oculto de formulario */
			ffinmm.value = mm+1;
			ffinyyyy.value = aaaa;

			CalculaNoches();

			document.getElementById("popupfin").style.display = 'none';
		}
	}
}

function CabMes(mes,anio,estiloMa,CeldaEspacio,calentipo)
{
var retval="";
var fechaAnt=new Date(anio,mes-1,1);
var mesAnt=fechaAnt.getMonth();
var anioAnt=fechaAnt.getFullYear();
var fechaPost=new Date(anio,mes+1,1);
var mesPost=fechaPost.getMonth();
var anioPost=fechaPost.getFullYear();
retval+="<table class='calen' cellspacing='"+CeldaEspacio+"'>";
retval+="<tr>";
retval+="<td class='cabMes'>";
if((mes>mesActual && anio==anioActual) || (anio>anioActual)){
	retval+="<a href='javascript:NuevoMes(" + mesAnt + "," + anioAnt + "," + calentipo + ",\"menos\"" + ");' title='" + mesesAnio[mesAnt] + " " + anioAnt + "'>&laquo;</a>";
}
retval+="</td>";
retval+="<td colspan='5' class='cabMes'>";
retval+=mesesAnio[mes]+" "+anio;
retval+="</td>";
retval+="<td class='cabMes'>";
if((mes<mesMaximo && anio==anioMaximo) || (anio<anioMaximo)){
	retval+="<a href='javascript:NuevoMes(" + mesPost + "," + anioPost + "," + calentipo + ",\"mas\"" + ");' title='" + mesesAnio[mesPost] + " " + anioPost + "'>&raquo;</a>"
}
retval+="</td></tr>";
retval+="</table>";
return retval;
}

/* Control de en que momento se encuentran en cada momento los calendarios para coordinar movimientos simultáneos */
var cal1ord = 1;
var cal2ord = 1;
function NuevoMes(Nmes,Nanio,calentipo,sentido) /*  "sentido", para decidir si sincronizar o no el otro calen (menos ó mas)  */
{
	if (calentipo==1) {
		if (sentido=="mas") {cal1ord++;}
		if (sentido=="menos") {cal1ord--;}
		document.getElementById("calendini").innerHTML = CalenPop(Nmes,Nanio,0,0,true,true,1,calentipo);
		if (sentido=="mas" && cal1ord>=cal2ord) {cal2ord++; document.getElementById("calendfin").innerHTML = CalenPop(Nmes,Nanio,0,0,true,true,1,2);}   /* subimos tambien calenfin  */
	}
	else if (calentipo==2) {
		if (sentido=="mas") {cal2ord++;}
		if (sentido=="menos") {cal2ord--;}
		document.getElementById("calendfin").innerHTML = CalenPop(Nmes,Nanio,0,0,true,true,1,calentipo);
		if (sentido=="menos" && cal2ord<=cal1ord) {cal1ord--; document.getElementById("calendini").innerHTML = CalenPop(Nmes,Nanio,0,0,true,true,1,1);}   /* bajamos tambien calenini  */
	}
}


function CabDias(CeldaEspacio)
{
var retval="";
retval+="<table class='calenDias' cellspacing='"+CeldaEspacio+"'>";
retval+="<tr>";
for(var i=0;i<7;i++){
retval+="<td class='diaSi'>";
if(i==5) retval+="<div class='sab'";
else if(i==6) retval+="<div class='dom'";
else retval+="<div class='LaV'";
retval+=">" + diasSemana1[i] + "</div>";
retval+="</td>";
}
retval+="</tr>";
retval+="</table>";
return retval;
}
