var kc_gen_cld__NomDia = "cld__dia";						
var kc_gen_cld__CSS_DiaLibrePar = "gen_cld__dia_pd0";		
var kc_gen_cld__CSS_DiaLibreNon = "gen_cld__dia_pd1";		
var kc_gen_cld__CSS_DiaDeshab = "gen_cld__dia_deshab";		
function cGenCalendario(cDesde, cHasta)
{
this.cDesde = cDesde;
this.cHasta = cHasta;
this.aoPlazos = new Array();
this.lDiaMesPrev = 0;				
this.cCSS_Mes = kc_gen_cld__CSS_DiaLibrePar;		
this.AdrPlazo = cGenCalendario__AdrPlazo;
this.Mostrar = cGenCalendario__Mostrar;
this.MostrarDia = cGenCalendario__MostrarDia;
this.TratarPlazos = cGenCalendario__TratarPlazos;
this.fdl_MosColDch = null;
this.fdl_MosColIzq = null;
this.fdl_MostrarDia = null;			
this.fdl_MstrDiaEnPlazo = null;		
}
function cGenCalendario__Mostrar()
{
var lDias;			
var lSem;			
var lID_Dia = 0;	
var lDiaSem_1;		
var lDiaSemUlt;		
var fDia;			
var lDiaMes;		
var bMesPar;		
var	i, j;			
lDiaSem_1 = this.cDesde.getDay();
lDiaSem_1 = (lDiaSem_1 == 0) ? 6 : lDiaSem_1 - 1;
lDiaSemUlt = this.cHasta.getDay();
lDiaSemUlt = (lDiaSemUlt == 0) ? 6 : lDiaSemUlt - 1;
lDias = lDiaSem_1 + gen__DifFechasDias(this.cHasta, this.cDesde) + 1;
lSem = genDivEntera(lDias, 7);
if (lDias % 7 > 0)
{
lSem++;
}
lDiaMesPrev = 0;
for (i=0; i<lSem; i++)
{
document.writeln("<tr width='100%'>");
if (this.fdl_MosColIzq != null)
{
eval(this.fdl_MosColIzq + "(this, lID_Dia);");
}
for (j=0; j<7; j++)
{
if ((i == 0) && (j < lDiaSem_1))
{
this.MostrarDia(lID_Dia, 0, false, kc_gen_cld__CSS_DiaDeshab);
}
else if ((i == (lSem - 1)) && (j > lDiaSemUlt))
{
this.MostrarDia(lID_Dia, 0, false, kc_gen_cld__CSS_DiaDeshab);
}
else
{
fDia = new Date(this.cDesde.getTime() + (lID_Dia * kl_gen__DiaEnMilisegundos))
lDiaMes = fDia.getDate();
if (lDiaMes < this.lDiaMesPrev)
{
this.cCSS_Mes = (this.cCSS_Mes == kc_gen_cld__CSS_DiaLibrePar) ? kc_gen_cld__CSS_DiaLibreNon : kc_gen_cld__CSS_DiaLibrePar
lNuevoMes = fDia.getMonth();
}
this.lDiaMesPrev = lDiaMes;
this.MostrarDia(lID_Dia, lDiaMes, true, this.cCSS_Mes);
lID_Dia++;
}
}
if (this.fdl_MosColDch != null)
{
eval(this.fdl_MosColDch + "(this, lID_Dia);");
}
document.writeln("</tr>");
}
this.TratarPlazos();
}
function cGenCalendario__MostrarDia(lID, lDiaMes, bVal, cClase)
{
document.write("<td align='center' width='14%' class='" + cClase + "'");
if (bVal)
{
document.write("id='" + (kc_gen_cld__NomDia + lID)  + "'");
}
document.writeln(">");
if (this.fdl_MostrarDia != null)
{
eval(this.fdl_MostrarDia + "(this, bVal, lID, lDiaMes);");
}
else
{
document.writeln("<span>&nbsp;</span>");
}
document.writeln("</td>");
}
function cGenCalendario__TratarPlazos()
{
var oPlazo;								
var oDia;								
var fDesde;								
var fHasta;								
var cID_Dia;							
var lNum = this.aoPlazos.length;		
var lNumDias;							
var i, j;								
if (this.fdl_MstrDiaEnPlazo != null)
{
for (i=0; i<lNum; i++)
{
oPlazo = this.aoPlazos[i];
fDesde = oPlazo.cDesde;
if (fDesde < this.cDesde)
{
fDesde = this.cDesde;
}
fHasta = oPlazo.cHasta;
if (fHasta > this.cHasta)
{
fHasta = this.cHasta;
}
lNumDias = gen__DifFechasDias(fHasta, fDesde) + 1;
for (j=0; j<lNumDias; j++)
{
lDia = gen__DifFechasDias(fDesde, this.cDesde) + j;
cID_Dia = kc_gen_cld__NomDia + lDia;
oDia = document.getElementById(cID_Dia);
if (oDia != null)
{
eval(this.fdl_MstrDiaEnPlazo + "(oDia, oPlazo.avAux);");
}
}
}
}
}
function cGenCalendario__AdrPlazo(oPlazo)
{
this.aoPlazos[this.aoPlazos.length] = oPlazo;
}
function cGenPlazo(cDesde, cHasta)
{
this.cDesde = cDesde;
this.cHasta = cHasta;
this.avAux = new Array();
this.AdrAux = cGenPlazo__AdrAux;
}
function cGenPlazo__AdrAux(vAux)
{
this.avAux[this.avAux.length] = vAux;
}
