/*--------------------------------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)
{
//alert (campo_destino + " - " + valor_campo + " - " + dia_minimo + " - " + dia_maximo)
	var diaminimo = fecha_cal (dia_minimo);
	var diamaximo = fecha_cal (dia_maximo);
	var meses = ["ENERO", "FEBRERO", "MARZO", "ABRIL", "MAYO", "JUNIO", "JULIO", "AGOSTO", "SEPTIEMBRE", "OCTUBRE", "NOVIEMBRE", "DICIEMBRE"];
	var dias_semana = ["D", "L", "M", "X", "J", "V", "S"];
	var inicio_semana = 1;

	var dia =(valor_campo == null || valor_campo =="" ? 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(
	"<div id='content_calendario'>\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) + "');\" 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) + "');\" 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 (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\">" + "";

				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>" + "";
	
				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;cerrar&nbsp</a>\n</td>\n</tr>\n</table>\n</div>\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.width = '218';
		document.getElementById('frame1').style.display = 'block';
		document.getElementById('fechas').style.zIndex='0';
		document.getElementById('ocupacion').style.zIndex='0';
		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';
	document.getElementById('fechas').style.zIndex='2000';
	document.getElementById('ocupacion').style.zIndex='2000';
}



/******************* 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 muestra_alert("Formato no valido: "+ str_datetime);
	return (new Date (RegExp.$3, RegExp.$2-1, RegExp.$1));
}

/****************** Convierte fecha maquina en fecha en formato DD/MM/AAAA ********************************/

function fecha_text (dt_datetime)
{
	return (new String (dt_datetime.getDate()+"/"+(dt_datetime.getMonth()+1)+"/"+dt_datetime.getFullYear()));
}
