// el foleto no es necesario controlarlo pasando como parametro , basta con los parametros introducidos ya, y el control al pintarlo  
var cod_folleto='EM';//ran con las fechas de dias sueltos pasados como parametros.
var mm = new Array();
var dd = new Array();
var yyyy = new Array();

//-----------------------------------------------CALENDARIO Y FECHAS-----------------------------------------------------

/*FCF: 18/04/07:añado el parámetro "empieza_semana", para mostrar el calendario que empiece 
en lunes o domingo dependiendo del valor de la web origen*/
function calendario (campo_destino, valor_campo, dia_minimo, dia_maximo,fines_semana,estilo,dias_sueltos, empieza_semana)//EL PARAMETRO FINES_SEMANA, NOS SERVITRA PARA PINTAR O NO TODOS LOS FINES DE SEMANA
{
	var dias_siguientes=0;//Para controlar que no se enlacen los dias del mes siguiente	
	var pos=0;//Para conocer la posicion y número de elemnetos de los arrays de fechas	
	var entra=0;

	if(dias_sueltos.length>0)	
		pos=carga_dias_sueltos(dias_sueltos,pos);
	 //Para controlar la posicion del array en que se van escribiendo las distintas fechas para dias sueltos

	var diaminimo = fecha_cal (dia_minimo);			//Paso a fecha maquina el dia minimo
	var diamaximo = fecha_cal (dia_maximo);			//Paso a fecha maquina el 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"];

/*FCF: 18/04/07: Control de formato de fechas
	var inicio_semana = 1;		//Utilizo esta variable para iniciar la semana en Lunes
hasta aquí*/	
	var inicio_semana;
	if (empieza_semana == "1"){
		inicio_semana = 1;		//Utilizo esta variable para iniciar la semana en Lunes
	}else{
		inicio_semana = 0;		//Si es formato mm/dd/aaaa el calendario empieza en domingo
	}

	var dia =(valor_campo == null || valor_campo =="" ? diaminimo : fecha_cal (valor_campo));  //Si el campo de la fecha del htm esta en blanco pongo la fecha de dia minimo, si no el que aparece en el campo fecha

	var mes_anterior = new Date(dia);							//Se establece la misma fecha del dia actual pero en el mes anterior
	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);							//Se establece la misma fecha del dia actual pero en el mes siguiente
	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);								//Muestra el primer dia que va a aparecer en cada pantallazo del calendario
	primer_dia.setDate(1);
	primer_dia.setDate(1-(7+primer_dia.getDay()-inicio_semana)%7);
	var ultimo_dia = new Date(mes_siguiente);					//Muestra el ultimo día que va a aparecer en cada pantallazo del calendario
	ultimo_dia.setDate(0);

	var cadena_htm = new String(								//Comienza la estructura de la tabla del calendario
	"<html>\n"+
	"<head>\n"+
	"<title>" + literal_titulo_calen + "</title>\n"+
	"<LINK href='../elementos/estilos.css' rel='stylesheet' type='text/css'>"+
	"</head>\n"+
	"<body marginheight=\"5\" marginwidth=\"5\">\n"+
	"<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"100%\">\n"+
	"<tr><td class=\"bordetabla\">\n"+
	"<table cellspacing=\"1\" cellpadding=\"0\" border=\"0\" width=\"100%\">\n"+
	"<tr>\n	<td class=\"fondocabecera\" align=\"center\" height=\"18\">");

//Se pinta la cabecera del calendario
//alert(diaminimo.getMonth());
//alert(diamaximo.getMonth ());
	if ((diaminimo.getMonth() != diamaximo.getMonth ())||((diaminimo.getMonth() == diamaximo.getMonth ())&&(diaminimo.getYear() != diamaximo.getYear ()))) //Para controlar la navegacion del calendario
	{
	cadena_htm += "<a href=\"javascript:window.opener.calendario('" + campo_destino + "', '" + fecha_text (mes_anterior) + "','" + fecha_text (diaminimo) + "','" + fecha_text (diamaximo) + "'," + fines_semana + ",'" + estilo + "','" + dias_sueltos + "','" + empieza_semana + "');\" style=\"text-decoration: none\" class=\"cabeceratabla\"><<</a>";		//Pinta la flecha para acceder al mes anterior,IMPORTANTE, PASAR EL VALOR 1/O PARA PINTAR TODOS LOS FINES DE SEMANA
	cadena_htm += "</td>\n" + "<td class='fondocabecera' colspan=\"5\" align=\"center\">" + "<font class=\"cabeceratabla\">" + meses[dia.getMonth()] + " " + dia.getFullYear() + "</font></td>\n" + "<td class=\"fondocabecera\" align=\"center\">";														//Pinta el mes y año en el que se encuentra el calendario
	cadena_htm += "<a href=\"javascript:window.opener.calendario('" + campo_destino + "', '" + fecha_text (mes_siguiente) + "','" + fecha_text (diaminimo) + "','" + fecha_text (diamaximo) + "'," + fines_semana + ",'" + estilo + "','" + dias_sueltos + "','" + empieza_semana + "');\" style=\"text-decoration: none\" class=\"cabeceratabla\">>></a>";	//Pinta la flecha para acceder al mes siguiente
	cadena_htm += "</td>\n</tr>\n";
	}
	else//Este condicional restringe el que se pueda navegar en el calendario si solo pintas dias sueltos del mismo mes
	{
	cadena_htm += "&nbsp;";		//Pinta la flecha para acceder al mes anterior,IMPORTANTE, PASAR EL VALOR 1/O PARA PINTAR TODOS LOS FINES DE SEMANA
	cadena_htm += "</td>\n" + "<td class=\"fondocabecera\" colspan=\"5\" align=\"center\">" + "<font class=\"cabeceratabla\">" + meses[dia.getMonth()] + " " + dia.getFullYear() + "</font></td>\n" + "<td class='fondocabecera' align=\"center\">";														//Pinta el mes y año en el que se encuentra el calendario
	cadena_htm += "&nbsp;";	//Pinta la flecha para acceder al mes siguiente
	cadena_htm += "</td>\n</tr>\n";
	}
	
	var dia_actual = new Date(primer_dia);		//Segunda variable que almacena el primer día que va a aparecer en el calendario

	
// Imprime los dias de la semana (L,M,X,J,V,S,D)
	cadena_htm += "<tr>\n";
	for (var n=0; n<7; n++)
	{
		cadena_htm += "	<td class=\"fondocabecera\" width=\"35\" height=\"16\" align=\"center\">";
		if (n == 6)
			cadena_htm += "<font class=\"cabeceratabla\">"
		else
			cadena_htm += "<font class=\"cabeceratabla\">"
		cadena_htm += dias_semana [(inicio_semana + n) % 7] + "</font></td>\n";
	}


// Comienza el bucle que pinta el fondo y los dias en el calendario
	cadena_htm += "</tr>\n";
	while (dia_actual.getMonth() == dia.getMonth() || dia_actual.getMonth() == primer_dia.getMonth())		//Controla que no pinte mas lineas de las que tiene el mes actual
	{
		cadena_htm += "<tr>\n";
		for (var contador_semana=0; contador_semana<7; contador_semana++)		// Controla que solo se pinten 7 dias por página
		{
			entra=0;
// Aqui se pintan los fondos de la tabla de dias
			if (dia_actual.getDay() == 0)
				cadena_htm += "<td class=\"fondocabecera\" align=\"center\" height=\"16\">";	// pinta color de fondo de los fines de semana
			else
				cadena_htm += "<td class=\"fondodias\" align=\"center\" height=\"16\">";     // pinta color de fondo de los dias laborables

// Aqui se pintan los dias


			if ((dia_actual >= diaminimo) && (dia_actual <= diamaximo))		//Controla que el dia actual sea superior al inicio del folleto e inferior al de fin de folleto
			{
				if (dia_actual.getMonth() == dia.getMonth())		// Prepara el enlace y el color del texto para pintar los dias del mes actual
				{
					if(fines_semana!=1 && dias_sueltos!="")//Pinta solo dias sueltos
					{
						for(x=0;x<pos;x++)				
						{
							if(dd[x]==dia_actual.getDate() && mm[x]==dia_actual.getMonth() && yyyy[x]==dia_actual.getYear())
							{	
								cadena_htm += "<a class=\"diassenalados\" href=\"javascript:window.opener." + campo_destino + ".value='" + fecha_text_diez (dia_actual, empieza_semana)+"';  window.close();\" style=\"text-decoration: none\">" + "";			
								entra=1;
							}	
						}
						if(entra==0)
						{
							cadena_htm += "<a style=\"text-decoration: none\"><font class=diasnosenalados>" + "";	
						}
						dias_siguientes=1;//Se cambia el valor de esta vari para que al pintar los dias del mes siguiente, no lo haga como enlaces
					}
					else
					{
						if(fines_semana==1)//Pinta los fines de semana, pintara tb LOS DIAS SUELTOS SI LOS HAY
						{	
							if (dia_actual.getDay() == 0)	//Si es domingo
								cadena_htm += "<a class=\"domingo\" href=\"javascript:window.opener." + campo_destino + ".value='" + fecha_text_diez (dia_actual, empieza_semana)+"'; window.close();\" style=\"text-decoration: none\">" + "";
								else							//Si es otro dia de la semana
									if(contador_semana == 5)
										cadena_htm += "<a class=\"diassenalados\" href=\"javascript:window.opener." + campo_destino + ".value='" + fecha_text_diez (dia_actual, empieza_semana)+"';  window.close();\" style=\"text-decoration: none\">" + "";
									else
										if(fines_semana==1 && dia_actual.getDay() == 5)
											cadena_htm += "<a class=\"diassenalados\" href=\"javascript:window.opener." + campo_destino + ".value='" + fecha_text_diez (dia_actual, empieza_semana) + "'; window.close();\" style=\"text-decoration: none\">" + "";
										else
										{
											for(x=0;x<pos;x++)				
											{
												if(dd[x]==dia_actual.getDate() && mm[x]==dia_actual.getMonth() && yyyy[x]==dia_actual.getYear())
												{	
													cadena_htm += "<a class=\"diassenalados\" href=\"javascript:window.opener." + campo_destino + ".value='" + fecha_text_diez (dia_actual, empieza_semana)+"'; window.close();\" style=\"text-decoration: none\">" + "";			
													entra=1;
												}	
											}
											if(entra==0)
											{
												cadena_htm += "<a style=\"text-decoration: none\"><font class=diasnosenalados>" + "";	
											}
										}
						}
						else
							if (dia_actual.getDay() == 0)	//Si es domingo
								cadena_htm += "<a class=\"domingo\" href=\"javascript:window.opener." + campo_destino + ".value='" + fecha_text_diez (dia_actual, empieza_semana)+"';  window.close();\" style=\"text-decoration: none\">" + "";	
								else								
										cadena_htm += "<a class=\"diassenalados\" href=\"javascript:window.opener." + campo_destino + ".value='" + fecha_text_diez (dia_actual, empieza_semana)+"';  window.close();\" style=\"text-decoration: none\">" + "";
					}
				}
					else 			// Prepara el enlace y el color del texto para pintar los dias del mes siguiente
					{
						if(dias_siguientes==0 && dias_sueltos=="" && fines_semana!=1)
						{
							if (dia_actual.getDay() == 0)	//Si es domingo				
								cadena_htm += "<a class=\"diassenalados\" href=\"javascript:window.opener." + campo_destino + ".value='" + fecha_text_diez (dia_actual, empieza_semana) + "'; window.close();\" style=\"text-decoration: none\">" + "";
								else
									cadena_htm += "<a href=\"javascript:window.opener." + campo_destino + ".value='" + fecha_text_diez (dia_actual, empieza_semana)+"';  window.close();\" style=\"text-decoration: none\"><font class=diasnosenalados>" + "";
						}
						else
							if (dia_actual.getDay() == 0 && dias_siguientes==0)	//Si es domingo				
								cadena_htm += "<a class=\"domingo\" href=\"javascript:window.opener." + campo_destino + ".value='" + fecha_text_diez (dia_actual, empieza_semana) + "'; window.close();\" style=\"text-decoration: none\">" + "";
								else	
									if(fines_semana==1 && dia_actual.getDay() == 6)
										cadena_htm += "<a class=\"diassenalados\" href=\"javascript:window.opener." + campo_destino + ".value='" + fecha_text_diez (dia_actual, empieza_semana) + "'; window.close();\" style=\"text-decoration: none\">" + "";										
									else
										if(fines_semana==1 && dia_actual.getDay() == 5)
											cadena_htm += "<a class=\"diassenalados\" href=\"javascript:window.opener." + campo_destino + ".value='" + fecha_text_diez (dia_actual, empieza_semana) + "'; window.close();\" style=\"text-decoration: none\">" + "";	
										else	
										{
											for(x=0;x<pos;x++)				
											{
												if(dd[x]==dia_actual.getDate() && mm[x]==dia_actual.getMonth() && yyyy[x]==dia_actual.getYear())
												{	
													cadena_htm += "<a class=\"diassenalados\" href=\"javascript:window.opener." + campo_destino + ".value='" + fecha_text_diez (dia_actual, empieza_semana)+"';  window.close();\" style=\"text-decoration: none\">" + "";			
													entra=1;
												}	
											}
											if(entra==0)
											{
												cadena_htm += "<a style=\"text-decoration: none\"><font class=diasnosenalados>" + "";	
											}		
										}
					}

				cadena_htm += (dia_actual.getDate()) + "</font></a></td>\n";		// Pinta el día
			}
			else	// Pinta los dias del mes anterior o los dias del mes actual inferiores a la fecha actual, estos no tienen enlace
			{
				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:window.close();\" class=\"diassenalados\">"+ literal_cerrar +"</a>\n</td>\n</tr>\n</table>\n</body>\n</html>\n";


// Abre la flotante del calendario

	var vWinCal = window.open("", literal_titulo_calen, "width=210,height=170,status=no,resizable=no,top=200,left=200");
	vWinCal.opener = self;
	vWinCal.focus();
	var calc_doc = vWinCal.document;
	calc_doc.write (cadena_htm);
	calc_doc.close();
}

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.$2-1, RegExp.$1));
}


function fecha_text (dt_datetime)
{
	return (new String (dt_datetime.getDate()+"/"+(dt_datetime.getMonth()+1)+"/"+dt_datetime.getFullYear()));
	
}

function fecha_text_diez (dt_datetime, empieza_semana)
{
	//Fecha con formato dd/mm/aaaa
	var dia = dt_datetime.getDate();
	var mes = dt_datetime.getMonth() + 1;
	if (dia < 10)
	{
		dia = "0" + dia;
	}
    if (mes < 10)
    {
		mes = "0" + mes;
    }

	//return (new String (dia+"/"+mes+"/"+dt_datetime.getFullYear()));
	return (new String (convierteFechaTxt((dt_datetime.getFullYear()).toString()+(mes).toString()+(dia).toString(), empieza_semana)));
}

function carga_dias_sueltos(dias_sueltos,pos)
{
	var long=0;var i;var fecha="";var fecha2="";var fecha_enviada="";var anterior=0;	
	for (i=0;i<dias_sueltos.length;i++)	
	{
		if(dias_sueltos.substring(i,i+1)==",")
		{
			fecha=dias_sueltos.substring(anterior,i);
			pos=carga_array(fecha,pos);	
			anterior=i+1;
		}
	}
	long=dias_sueltos.length;
	fecha= dias_sueltos.substring(anterior,long);
	pos=carga_array(fecha,pos);
	return (pos);
}

function carga_array(fecha,pos)
{	
	var valor=0;var x=0;var i=0;var long=fecha.length;var fecha2=0;
	if(fecha.indexOf('-') != -1)
	{
		fecha2=fecha.substring(fecha.indexOf('-')+1,long);
		fecha=fecha.substring(0,fecha.indexOf('-'));
		fecha=fecha_cal(fecha);
		fecha2=fecha_cal(fecha2);
		for (x = fecha; x <= fecha2; x.setDate(x.getDate() + 1))
		{
			dd[pos]= x.getDate();
			mm[pos]=x.getMonth();
			yyyy[pos]=x.getYear();
			pos++
		}
	}
	else
	{
		fecha=fecha_cal(fecha);
		x=fecha;
		dd[pos]= x.getDate();
		mm[pos]=x.getMonth();
		yyyy[pos]=x.getYear();
		pos++				
	}
	return (pos);	//pos se devuelve ,contiene el número de elementos de que se componen los arrays
}
