/*
// Hi ha d'haver definides les següents variables:
	var MesHTML 				= new Array('Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre');
	var DiaSetmanaHTML			= new Array('LUNES','MARTES','MI&Eacute;RCOLES', ....
	var idma["nextMonth"]		= "mes siguiente";
	var idma["previousMonth"]	= "mes anterior";
	var idma["close"]			= "cerrar";
*/

var inicialDiaSetmana = Array();
for (var i=0; i<7; i++){
	inicialDiaSetmana[i] = DiaSetmanaHTML[i].charAt(0);
}

var esMSIE = /*@cc_on!@*/false;		// Mirem si estem en IE o no


var Calendar = new Date();

var year = Calendar.getYear();				// Returns year
var anyActual = Calendar.getYear();			// Aquest any no es modificarà
if (anyActual < 2000) anyActual = 1900 + anyActual;	// Per evitar l'efecte 2000 en Netscape i Opera
if (year < 2000) year = 1900 + year;			// Per evitar l'efecte 2000 en Netscape i Opera
var mesActual = Calendar.getMonth();			// Aquest mes no es modificarà
var month;
month = Calendar.getMonth();				// Returns month (0-11)
var today = Calendar.getDate();				// Returns day (1-31)
var weekday = Calendar.getDay();			// Returns day (0-6)

var DAYS_OF_WEEK = 7;					// "constant" for number of days in a week
var DAYS_OF_MONTH = 31; 				// "constant" for number of days in a month
var cal;						// Used for printing


Calendar.setDate(1);    	// Start the calendar day at '1'
Calendar.setMonth(month);	// Start the calendar month at now

var gCapaCalendari = "";
var gDiaSeleccionat = 0;

function escriuCalendari(mes, any, capaCalendari, diaSeleccionat, availability)
{
	if (availability == undefined) availability = "";
	if (diaSeleccionat == undefined || diaSeleccionat == "") diaSeleccionat = 1;

	diaSeleccionat = ltrim(String(diaSeleccionat), "0");
	gDiaSeleccionat = diaSeleccionat;

	if (capaCalendari != "") gCapaCalendari = capaCalendari;

	if (any < anyActual) any = anyActual;
	if (mes < mesActual && !(any > anyActual)) mes = mesActual;

	Calendar.setDate(1);
	Calendar.setMonth(mes); //mes (0 - 11)
	month = mes;
	Calendar.setYear(any);
	year = any;

	if (gCapaCalendari == "calendariArribada"+availability+"Div") {
		var seleccionaData = "seleccionaDataArribada";
		var quinCalendari = "Arribada"+availability;
	}
	else if (gCapaCalendari == "calendariSortida"+availability+"Div") {
		var seleccionaData = "seleccionaDataSortida";
		var quinCalendari = "Sortida"+availability;
	}

	var numSetmanes = 0;
	var cal = "";
	cal += "<table id='calendariArribada"+availability+"Tbl' cellspacing='4' cellpadding='0' class='calendariJS_fonsCalendari'>";

	// S'escriuen els dies de la setmana (les inicials)
	cal += "<tr>";
	for(var ind=0; ind < DAYS_OF_WEEK; ind++)	{
		var estil = (ind<DAYS_OF_WEEK-2) ? "calendariJS_diesSetmana" : "calendariJS_diesSetmanaWeekend textoAlternativo";
		cal += "<td style='' class='"+estil+"' align='center'>" + inicialDiaSetmana[ind] + "</td>";
	}
	cal += '</tr>';

	// Reomplim els espais del més passat abans de l'1
	cal += '<tr>';
	var tday = Calendar.getDay();
	if (tday == 0) tday = 7;
	tday--;
	for(ind=0; ind < tday; ind++){
		var estil = (ind<DAYS_OF_WEEK-2) ? "calendariJS_numDiesPassats" : "calendariJS_numDiesPassatsWeekend";
		cal += "<td style='' class='"+estil+"'>&nbsp;</td>";
	}


	// LOOP per cada dia del mes
	var week_day = -1;

	for(ind=0; ind < DAYS_OF_MONTH; ind++)
	{
		if( Calendar.getDate() > ind )
		{
			week_day =Calendar.getDay();
			weekend = (week_day == 0 || week_day == 6);

			// Nova fila pel primer dia de la setmana (0 == Diumenge, 1 == Dilluns, ...)
			if(week_day == 1)
			{
				if (numSetmanes > 0) cal += '<tr>';
				numSetmanes++;
			}
			if(week_day != DAYS_OF_WEEK)
			{
				var day  = Calendar.getDate();
				// Els dies passats en gris i la resta en color
				if ( (day >= today && (month == mesActual && year == anyActual)) || (month>mesActual && year==anyActual) || (year==anyActual+1 && month<mesActual) )
				{
					var classe = (day == diaSeleccionat) ? "calendariJS_numDiaHighlight fondoAlternativo textoMenu" : (weekend) ? "calendariJS_numDiesFutursWeekend textoAlternativo borderAlternativo" : "calendariJS_numDiesFuturs borderAlternativo";
					// Dies futurs
					cal += "<td id='tdDia"+quinCalendari+day+"' style='cursor:pointer;' align='center'>";
						cal += "<a id='aDia"+quinCalendari+day+"' href='javascript:void(0);' onclick='"+seleccionaData+"("+day+","+month+","+year+",\""+availability+"\", true);' class='"+classe+"'><span><b>" + day + "</b></span></a>";
					cal += "</td>";
				}
				else // Dies ja passat
				{
					var classe = (weekend) ? "calendariJS_numDiesPassatsWeekend" : "calendariJS_numDiesPassats";
					cal += "<td class='"+classe+"' align='center'>" + day + "</td>";
				}
			}

			// Tanquem la fila a l'últim dia de la setmana
			if(week_day == 0)
			{
				if (numSetmanes == 0)numSetmanes++;
				cal += '</tr>';
			}
		}

		// S'incrementa el calendari fins a final de mes
		Calendar.setDate(Calendar.getDate()+1);

	}// end for loop

	// Acabem de posar els dies de la setmana que tenim a mitges
	if (week_day > 0){
		for(ind=week_day; ind < DAYS_OF_WEEK; ind++){
			var estil = (ind<DAYS_OF_WEEK-2) ? "calendariJS_numDiesPassats" : "calendariJS_numDiesPassatsWeekend";
			cal += '<td class="'+estil+'"><img src="'+nh+'img/transparent.gif" alt="" class="calendariJS_imgTransparent"></td>';
		}
	}

	// Posem lines en blanc si aquest mes té menys de sis setmanes
	while (numSetmanes < 6)
	{
		cal += '<tr >';
		for(ind=0; ind < DAYS_OF_WEEK; ind++){
			var estil = (ind<DAYS_OF_WEEK-2) ? "calendariJS_numDiesPassats" : "calendariJS_numDiesPassatsWeekend";
			cal += '<td style="" class="'+estil+'"><img src="'+nh+'img/transparent.gif" alt="" class="calendariJS_imgTransparent"></td>';
		}
		cal += '</tr>';
		numSetmanes++;
	}

	cal += "</table>";


	var diaSol = "";
	diaSol += "<table cellpadding=0 cellspacing=0 style='width:120px;' class='calendariJS_fonsDia'>";
	diaSol += 	"<tr style='height:145px;'><td align='center' valign='middle' >";

		diaSol += 		"<div style='position:absolute; z-index:10;'>";
		diaSol += 			"<div style='position:absolute; top:57px; left:3px; width:130px; overflow:hidden;' class='calendariJS_liniaMigDiaSup'></div>";
		diaSol += 			"<div style='position:absolute; top:58px; left:3px; width:130px; overflow:hidden;' class='calendariJS_liniaMigDiaInf'></div>";
		diaSol += 		"</div>";

		diaSol += 		"<div style='position:relative; top:15px; height:95px; width:140px; line-height:90px; overflow:hidden; z-index:5;'>";
		var posIniDiaSol = posInicialDiaSol - (hSepDiaSol * (diaSeleccionat-1) );
		diaSol += 			"<div id='diaSol"+quinCalendari+"Div' style='position:relative; top:"+posIniDiaSol+"px; ' class='calendariJS_numeroDiaGran'>";
		for (var i=1; i<32; i++) {
			var s = (i<10) ? "0" : "";
			diaSol += "<p style='margin-top:0px; margin-bottom:0px; height:110px;'>"+s + i+"</p>";
		}
		diaSol += 			"</div>";
		diaSol += 		"</div>";

	diaSol += 	"</td></tr>";
	diaSol += 	"<tr style='height:35px; '><td align='center' valign='middle'>";

		diaSol += "<div style='position:relative; height:30px; width:120px; overflow:hidden;'>";
		var dt = new Date(any, mes, diaSeleccionat);
		var diaSetm = dt.getDay();
		if (diaSetm == 0) diaSetm = 7; // 7=Diumenge, 1=Dilluns, 2=Dimarts...
		var posIniDiaSolStr = posInicialDiaSolStr - (hSepDiaSolStr * (diaSetm-1) );

		ttop = posInicialDiaSolStr - (hSepDiaSolStr * (diaSetm-1) );
		diaSol += 	"<div id='diaSol"+quinCalendari+"DivStr' style='position:relative; top:"+ttop+"px;'>";
		for (var i=0; i<7; i++) diaSol += "<p class='textoAlternativo' style='margin-top:0px; margin-bottom:0px; line-height:30px; height:25px; text-transform: uppercase; font-size:18px;'>"+DiaSetmanaHTML[i]+"</p>";
		diaSol += 	"</div>";
		diaSol += "</div>";

	diaSol += 	"</td></tr>";
	diaSol += "</table>";

	var mes = "";
	mes += 	"<table cellspacing=0 cellpadding=0 style='width:100%;'><tr>";
	mes += 		"<td style='text-align:center; vertical-align:top;'><span style='cursor:pointer;' onclick='mesAnterior();' title='" + idma["previousMonth"] + "'><b>&nbsp;&nbsp;&laquo;&nbsp;</b></span></td>";
	mes += 		"<td align='center' style='width:120px; height:20px;' class=''>" + MesHTML[month] + "</td>";
	mes += 		"<td style='text-align:center; vertical-align:top;'><span style='cursor:pointer;' onclick='mesSeguent();' title='" + idma["nextMonth"] + "'><b>&nbsp;&raquo;&nbsp;&nbsp;</b></span></td>";
	mes += 	"</tr></table>";



/*
	var botoTancar = "";
	botoTancar += "<div style='position:absolute; top:3px; left:5px; cursor:pointer;' ";
	botoTancar += 	"onclick='ocultaCalendari(\""+gCapaCalendari+"\")' title='"+idma["close"]+"' class='gris12N'>&nbsp;x&nbsp;</div>";
*/

	var s = "";
	s += "<div class='capaExterior fondoAlternativo round' onMouseOver='calendari_mouseOver();' onMouseUp='calendari_mouseOver();' onMouseOut='calendari_mouseOut(\"" + gCapaCalendari + "\")'>";
		s += "<table class='mesAny'><tr class='mesAny textoMenu'>";
			s += "<td class='mes'>";
				s += mes;
			s += "</td>";
			s += "<td class='any'>";
				s += year;
			s += "</td>";
		s += "</tr></table>";
		s += "<div class='capaInterior round'>";
			s += "<div class='outter_dia'>";
				s += diaSol;
			s += "</div>";
			s += "<div class='outter_cal'>";
				s += cal;
			s += "</div>";
		s += "</div>";
	s += "</div>";

	//  PRINT CALENDAR
	var cpa = document.getElementById(gCapaCalendari);
	if (cpa) {
		cpa.innerHTML = s;
	}

	gContador_calendari = 10;
}




/*
 *	Canvia el dia
 */
var posInicialDiaSol = 0;
var hSepDiaSol = 110;
var posInicialDiaSolStr = 0;
var hSepDiaSolStr = 25;
function posicionaDia(ndia, nmes, nany, capa)
{
	var diaSolDiv = document.getElementById(capa);
	var diaSolDivStr = document.getElementById(capa+"Str");
	if (!diaSolDiv || !diaSolDivStr) return false;

	// Posicionem el numero
	var ttop = posInicialDiaSol - (hSepDiaSol * (ndia-1) );
	diaSolDiv.style.top = ttop + "px";

	//Posicionem el dia de la setmana
	var dt = new Date(nany, nmes, ndia);
	var diaSetm = dt.getDay();
	if (diaSetm == 0) diaSetm = 7; // 7=Diumenge, 1=Dilluns, 2=Dimarts...
	ttop = posInicialDiaSolStr - (hSepDiaSolStr * (diaSetm-1) );
	diaSolDivStr.style.top = ttop + "px";

	return true;
}


/*
 *	Salta al seguent mes
 */
function mesSeguent()
{
	tmonth = month + 1;
	tyear = year;
	if (tmonth == 12)
	{
		tmonth = 0;
		tyear++;
	}

	//Evitem anar mes enllà d'un any
	var tdate = new Date(tyear,tmonth,1);
	var tdate2 = new Date(anyActual,mesActual,1);
	var t1 = tdate.getTime();
	var t2 = tdate2.getTime();
	if(t1 - t2 >= 31536000000) return;

	var availability = (gCapaCalendari == "calendariArribadaAvailabilityDiv" || gCapaCalendari == "calendariSortidaAvailabilityDiv") ? "Availability" : "";

	escriuCalendari(tmonth, tyear, "", "", availability);

	if (gCapaCalendari == "calendariArribada"+availability+"Div") {
		seleccionaDataArribada(1, tmonth, tyear, availability, true);
		actualitzaDiesBuscador("arribada"+availability);
	}
	else if (gCapaCalendari == "calendariSortida"+availability+"Div"){
		seleccionaDataSortida(1, tmonth, tyear, availability, true);
		actualitzaDiesBuscador("sortida"+availability);
	}
}

/*
 *	Salta al mes anterior
 */
function mesAnterior()
{
	tmonth = month - 1;
	tyear = year
	if (tmonth == -1) {
		tmonth = 11;
		tyear--;
	}

	var avui = new Date();

	//Evitem anar a un mes del passat
	var tmp = new Date(tyear, tmonth, 1);
	if (tmp.getYear() < avui.getYear() || (tmp.getYear() == avui.getYear() && tmp.getMonth() < avui.getMonth() ) ) return;

	var availability = (gCapaCalendari == "calendariArribadaAvailabilityDiv" || gCapaCalendari == "calendariSortidaAvailabilityDiv") ? "Availability" : "";

	escriuCalendari(tmonth, tyear, "", "", availability);

	var diaPerSeleccionar = 1;
	var diaDt= new Date(tyear, tmonth, 1);
	if (diaDt.valueOf() < avui.valueOf()) diaPerSeleccionar = avui.getDate();

	if (gCapaCalendari == "calendariArribada"+availability+"Div"){
		seleccionaDataArribada(diaPerSeleccionar, tmonth, tyear, availability, true);
		actualitzaDiesBuscador("arribada"+availability);
	}
	else if (gCapaCalendari == "calendariSortida"+availability+"Div"){
		seleccionaDataSortida(diaPerSeleccionar, tmonth, tyear, availability, true);
		actualitzaDiesBuscador("sortida"+availability);
	}
}


/*
 *	Fa desapareixer el calendari passat un temps després de mouseOut
 */
var gContador_calendari = 5;
var gTimer = 0;
function calendari_mouseOut(strCapa)
{
	gContador_calendari--;
	if (gContador_calendari < 0){
		ocultaCalendari(strCapa);
	}
	else{
		if (gTimer != 0){
			clearTimeout(gTimer);
			gTimer = 0;
		}
		gTimer = setTimeout("calendari_mouseOut('" + strCapa + "');", 100);
	}
}
function calendari_mouseOver()
{
	gContador_calendari = 5;
	clearTimeout(gTimer);
	gTimer = 0;
}



/**
 *	Mostra/oculta el calendari d'arribada o sortida
 */
function mostraCalendari(quin)
{
	var availability = (quin == "arribadaAvailability" || quin == "sortidaAvailability") ? "Availability" : "";

	var capaArribada  = document.getElementById("calendariArribada"+availability+"Div");
	var capaSortida   = document.getElementById("calendariSortida"+availability+"Div");

	if (!capaArribada || !capaSortida) return false;

	if (quin == "arribada" || quin == "arribadaAvailability") {
		// Si estem a calendari ocultem calendariAvailability, i si estem a calendariAvailability ocultem calendari
		if (quin == "arribada"){
			ocultaCalendari("calendariArribadaAvailabilityDiv");
			ocultaCalendari("calendariSortidaAvailabilityDiv");
		}
		else if (quin == "arribadaAvailability"){
			ocultaCalendari("calendariArribadaDiv");
			ocultaCalendari("calendariSortidaDiv");
		}

		if (capaArribada.style.visibility == "visible"){
			// El calendari ja està visible, l'ocultem
			ocultaCalendari("calendariArribada"+availability+"Div");
			return false;
		}
		else{
			capaArribada.style.visibility = "visible";
			capaArribada.style.display = "block";
			capaSortida.style.visibility = "hidden";
			capaSortida.style.display = "none";
			var quinCalendari = "calendariArribada"+availability+"Div";
			var mesAnySel = document.getElementById("ArrivalMonthYear"+availability);
			var diaSel = document.getElementById("ArrivalDay"+availability);
		}
	}
	else if (quin == "sortida" || quin == "sortidaAvailability") {
		// Si estem a calendari ocultem calendariAvailability, i si estem a calendariAvailability ocultem calendari
		if (quin == "sortida"){
			ocultaCalendari("calendariArribadaAvailabilityDiv");
			ocultaCalendari("calendariSortidaAvailabilityDiv");
		}
		else if (quin == "sortidaAvailability"){
			ocultaCalendari("calendariArribadaDiv");
			ocultaCalendari("calendariSortidaDiv");
		}

		if (capaSortida.style.visibility == "visible"){
			// El calendari ja està visible, l'ocultem
			ocultaCalendari("calendariSortida"+availability+"Div");
			return false;
		}
		else{
			capaArribada.style.visibility = "hidden";
			capaArribada.style.display = "none";
			capaSortida.style.visibility = "visible";
			capaSortida.style.display = "block";
			var quinCalendari = "calendariSortida"+availability+"Div";
			var mesAnySel = document.getElementById("DepartureMonthYear"+availability);
			var diaSel = document.getElementById("DepartureDay"+availability);
		}
	}
	var mesAnyArr = mesAnySel.value.split("-");
	var dia = diaSel.value;
	// El mes (mesAnyArr[0]) comença per 1=gener, i escriuCalendari() vol 0=gener
	escriuCalendari(mesAnyArr[0]-1, mesAnyArr[1], quinCalendari, dia, availability);
	return true;
}



function ocultaCalendari(capaCalendariStr)
{
	capaCalendari = document.getElementById(capaCalendariStr);
	if (!capaCalendari) return false;
	capaCalendari.style.visibility = "hidden";
	return true;
}


/**
 *	Selecciona la data d'arribada o de sortida (els <select...)
 */
function seleccionaDataArribada(dia, mes, any, availability, continuaMostrantCalendari)
{
	if (availability == undefined) availability = "";
	if (continuaMostrantCalendari == undefined) continuaMostrantCalendari = false;

	var diaSel = document.getElementById("ArrivalDay"+availability);
	var mesAnySel = document.getElementById("ArrivalMonthYear"+availability);
	if (!diaSel || !mesAnySel) return false;

	// La funció seleccionaData(..) està definida a calendari.js
	if (typeof(seleccionaData) == "function")
		seleccionaData(dia, mes, any, "aDiaArribada"+availability+dia, "diaSolArribada"+availability+"Div", diaSel, mesAnySel, "aDiaArribada"+availability+gDiaSeleccionat);

	// Comprovem si la data de sortida es anterior a la d'arribada
	var diaSorSel = document.getElementById("DepartureDay"+availability);
	var mesAnySorSel = document.getElementById("DepartureMonthYear"+availability);
	if (!diaSorSel || !mesAnySorSel) return false;
	if (mesAnySorSel.selectedIndex < mesAnySel.selectedIndex)  {
		mesAnySorSel.selectedIndex = mesAnySel.selectedIndex;
		diaSorSel.selectedIndex = diaSel.selectedIndex;
		actualitzaDiesBuscador("sortida"+availability);
	}
	if (mesAnySorSel.selectedIndex == mesAnySel.selectedIndex && diaSorSel.selectedIndex < diaSel.selectedIndex) diaSorSel.selectedIndex = diaSel.selectedIndex;

	if (!continuaMostrantCalendari)
		ocultaCalendari("calendariArribada"+availability+"Div");

	return true;
}
function seleccionaDataSortida(dia, mes, any, availability, continuaMostrantCalendari)
{
	if (availability == undefined) availability = "";
	if (continuaMostrantCalendari == undefined) continuaMostrantCalendari = false;

	var diaSel = document.getElementById("DepartureDay"+availability);
	var mesAnySel = document.getElementById("DepartureMonthYear"+availability);
	if (!diaSel || !mesAnySel) return false;

	seleccionaData(dia, mes, any, "aDiaSortida"+availability+dia, "diaSolSortida"+availability+"Div", diaSel, mesAnySel, "aDiaSortida"+availability+gDiaSeleccionat);

	// Comprovem si la data d'arribada es posterior a la de sortida
	var diaArrSel = document.getElementById("ArrivalDay"+availability);
	var mesAnyArrSel = document.getElementById("ArrivalMonthYear"+availability);
	if (!diaArrSel || !mesAnyArrSel) return false;
	if (mesAnyArrSel.selectedIndex > mesAnySel.selectedIndex)  {
		mesAnyArrSel.selectedIndex = mesAnySel.selectedIndex;
		diaArrSel.selectedIndex = diaSel.selectedIndex;
		actualitzaDiesBuscador("arribada"+availability);
	}
	if (mesAnyArrSel.selectedIndex == mesAnySel.selectedIndex && diaArrSel.selectedIndex > diaSel.selectedIndex) diaArrSel.selectedIndex = diaSel.selectedIndex;

	if (!continuaMostrantCalendari)
		ocultaCalendari("calendariSortida"+availability+"Div");

	return true;
}
function seleccionaData(dia, mes, any, diaNouSel, capaDiaSol, diaSel, mesAnySel, diaActualSel)
{
	var tmp = mesAnySel.value.split("-");
	if (tmp[0].charAt(0) == "0") tmp[0] = tmp[0].charAt(1);
	tmp[0]--;
	var tdate = new Date();
	tdate.setFullYear(tmp[1],tmp[0],diaSel.value);

	var tdiaSem = tdate.getDay();
	var weekend = (tdiaSem == 0 || tdiaSem == 6) ? true : false;
	var estil = weekend ? "calendariJS_numDiesFutursWeekend textoAlternativo borderAlternativo" : "calendariJS_numDiesFuturs borderAlternativo";

	// Posem el fons negre del dia que abans estava seleccionat
	var t = document.getElementById(diaActualSel);
	if (t) t.className = estil;

	gDiaSeleccionat = dia;
	// Posem el fons rosa del nou dia
	t = document.getElementById(diaNouSel);
	if (t) t.className = "calendariJS_numDiaHighlight fondoAlternativo textoMenu";

	// Seleccionem el dia i mes dels selects
	if (dia < 10) dia = "0"+dia;
	diaSel.value = dia;


	var tmes = mes+1;
	var sMes = (tmes > 9) ? tmes : "0"+tmes;
	sMes += "-" + any;
	mesAnySel.value = sMes;

	// Posiciona la capa del dia de l'esquerra
	posicionaDia(dia, mes, any, capaDiaSol);

}

function actualitzaDepartureMonth(availability)
{
	if (availability == undefined) availability = "";
	if(document.getElementById('DepartureMonthYear'+availability).selectedIndex < document.getElementById('ArrivalMonthYear'+availability).selectedIndex)
		document.getElementById('DepartureMonthYear'+availability).selectedIndex = document.getElementById('ArrivalMonthYear'+availability).selectedIndex;
}






function escriuNomesCalendari(mes, any, capaCalendari, strUnavailable, strSelected)
{
	var arrUnavailable = Array();
	var arrSelected = Array();
	var tmp = strUnavailable.split(",");
	for(i=0; i<tmp.length; i++) arrUnavailable[tmp[i]] = true;
	tmp = strSelected.split(",");
	for(i=0; i<tmp.length; i++) arrSelected[tmp[i]] = true;


	if (any < anyActual) any = anyActual;
	if (mes < mesActual && !(any > anyActual)) mes = mesActual;

	Calendar.setDate(1);
	Calendar.setMonth(mes); //mes (0 - 11)
	month = mes;
	Calendar.setYear(any);
	year = any;

	var numSetmanes = 0;
	var cal = "";
	cal += "<table class='calendariJS2 round_no_IE texto'>";

	// S'escriuen els dies de la setmana (les inicials)
	cal += "<tr>";
	for(var ind=0; ind < DAYS_OF_WEEK; ind++)	{
		var estil = (ind<DAYS_OF_WEEK-2) ? "" : "diaSetWeekend textoAlternativo";
		cal += "<td ><div class='diaSet "+estil+"'>" + inicialDiaSetmana[ind] + "</div></td>";
	}
	cal += '</tr>';

	// Reomplim els espais del més passat abans de l'1
	cal += '<tr>';
	var tday = Calendar.getDay();
	if (tday == 0) tday = 7;
	tday--;
	for(ind=0; ind < tday; ind++){
		var estil = (ind<DAYS_OF_WEEK-2) ? "" : "weekendPassat";
		cal += "<td ><div class='cel passat fondoBanner borderCalendario "+estil+" buit'>&nbsp;</div></td>";
	}

	// LOOP per cada dia del mes
	var week_day = -1;

	for(ind=0; ind < DAYS_OF_MONTH; ind++)
	{
		if( Calendar.getDate() > ind )
		{
			week_day =Calendar.getDay();
			weekend = (week_day == 0 || week_day == 6);

			// Nova fila pel primer dia de la setmana (0 == Diumenge, 1 == Dilluns, ...)
			if(week_day == 1)
			{
				if (numSetmanes > 0) cal += '<tr>';
				numSetmanes++;
			}
			if(week_day != DAYS_OF_WEEK)
			{
				var day  = Calendar.getDate();
				// Els dies passats en gris i la resta en color
				if ( (day >= today && (month == mesActual && year == anyActual)) || (month>mesActual && year==anyActual) || (year==anyActual+1 && month<mesActual) )
				{
					var classUnavail = arrUnavailable[day] ? "unavailable" : "";
					var classSel = arrSelected[day]&&classUnavail=="" ? "sel" : "";
					var classe = (weekend) ? "weekendFutur textoAlternativo" : "";
					// Dies futurs
					cal += "<td >";
						cal += "<div class='cel futur weekendFutur fondoBanner borderCalendario "+classe+" "+classUnavail+" "+classSel+"'>" + day + "</div>";
					cal += "</td>";
				}
				else // Dies ja passat
				{
					var classe = (weekend) ? "weekendPassat" : "";
					cal += "<td ><div class='cel passat fondoBanner borderCalendario "+classe+"'>" + day + "</div></td>";
				}
			}

			// Tanquem la fila a l'últim dia de la setmana
			if(week_day == 0)
			{
				if (numSetmanes == 0)numSetmanes++;
				cal += '</tr>';
			}
		}

		// S'incrementa el calendari fins a final de mes
		Calendar.setDate(Calendar.getDate()+1);

	}// end for loop

	// Acabem de posar els dies de la setmana que tenim a mitges
	if (week_day > 0){
		for(ind=week_day; ind < DAYS_OF_WEEK; ind++){
			var estil = (ind<DAYS_OF_WEEK-2) ? "calendariJS_numDiesPassats" : "calendariJS_numDiesPassatsWeekend";
			cal += '<td ><div class="cel buit fondoBanner borderCalendario ">&nbsp;</div></td>';
		}
	}

	// Posem lines en blanc si aquest mes té menys de sis setmanes
	while (numSetmanes < 6)
	{
		cal += '<tr >';
		for(ind=0; ind < DAYS_OF_WEEK; ind++){
			var estil = (ind<DAYS_OF_WEEK-2) ? "" : "weekend";
			cal += '<td ><div class="cel buit fondoBanner borderCalendario">&nbsp;</div></td>';
		}
		cal += '</tr>';
		numSetmanes++;
	}

	cal += "</table>";


	//  PRINT CALENDAR
	var cpa = document.getElementById(capaCalendari);
	if (cpa) {
		cpa.innerHTML = cal;
	}

}

