/* code by Brian Gosselin, adapted to 
- separate more precisely content from presentation 
- start week on Mondays
- allow multi-language
- mark current week
- mark saturdays and sundays
*/
function buildCal(m, y){
	var mesos = ["Gener","Febrer","Març","Abril","Maig","Juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"];
	var diesLletres = ["Dl","Dm","Dc","Dj","Dv","Ds","Dg"];
	if (idioma == "es") {
		mesos = ["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"];
		diesLletres = ["Lu","Ma","Mi","Ju","Vi","Sá","Do"];
	}else if (idioma == "en") {
		mesos = ["January","February","March","April","May","June","July","August","September","October","November","December"];
		diesLletres = ["Mo","Tu","We","Th","Fr","Sa","Su"];
	}
	//---
	var fechaHoy = new Date();
	var fechaHoySinHora = new Date(fechaHoy.getFullYear(),fechaHoy.getMonth(),fechaHoy.getDate());
	var fechaHoyDiaUno = new Date(fechaHoy.getFullYear(),fechaHoy.getMonth(),1);

	if (m == null) m = fechaHoy.getMonth() + 1;
	if (y == null) y = fechaHoy.getFullYear();
	m = Number(m);
	y = Number(y);
	var fechaDiaUno = new Date(y, m-1, 1);
	
	var diaHoy = fechaHoy.getDate();
	if ((m != fechaHoy.getMonth() + 1) || (y != fechaHoy.getFullYear())) diaHoy = 0;
	var dim = [31,0,31,30,31,30,31,31,30,31,30,31];
	fechaDiaUno.od = fechaDiaUno.getDay();
	if (fechaDiaUno.od == 0) fechaDiaUno.od = 7;
	
	dim[1]=(((fechaDiaUno.getFullYear()%100!=0)&&(fechaDiaUno.getFullYear()%4==0))||(fechaDiaUno.getFullYear()%400==0))?29:28;
	var mAnt = m-1;
	var mPost = m+1;
	var yAnt = y;
	var yPost = y;
	if (mAnt < 1) {
		mAnt = 12;
		yAnt -= 1;
	}
	if (mPost > 12) {
		mPost = 1;
		yPost += 1;
	}
	var t='<div id="calendari-control"><a href="javascript:creaCalendari('+mAnt+','+yAnt+');" class="anterior"><span>&lt;</span></a> <span class="mes">'+mesos[m-1]+' '+y+'</span> <a href="javascript:creaCalendari('+mPost+','+yPost+');" class="seguent"><span>&gt;</span></a></div>';
	t +='<table><thead><tr>';
	for(i = 1; i <= 7; i++){
		t += '<th>'+diesLletres[i-1]+'</th>';
	}
	//semana actual?
	var claseSemana = '';
	var dayUno = fechaDiaUno.getDay();
	if (dayUno == 0) dayUno = 7;
	if ((diaHoy + dayUno) <= 8 && fechaDiaUno.getTime() == fechaHoyDiaUno.getTime()){
		claseSemana = ' class="semanaActual"';
	}
	t += '</tr></thead><tbody><tr'+claseSemana+'>';
	for(i = 1; i <= 37; i++){
		var x = ((i-fechaDiaUno.od >= 0) && (i-fechaDiaUno.od < dim[m-1]))? i-fechaDiaUno.od + 1 : '';
		var numDia = x;
		var claseDia = 'dia';
		if (x == diaHoy && x != 0) claseDia += ' avui';
		if (x != ''){
			//es fecha pasada?
			var fechaPedida = new Date(y,m-1,x);
			if(fechaPedida >= fechaHoySinHora){
				x = '<a href="javascript:carregaDiaCalendari('+x+','+m+','+y+');">' + x + '</a>';
			}
			if (fechaPedida.getDay() == 0 || fechaPedida.getDay() == 6) claseDia += ' festiu';
		}
		t += '<td class="'+claseDia+'">'+x+'</td>';
		if(i%7==0) {
			//semana actual?
			var claseSemana = '';
			if (numDia != '') {
				var fechaDomingo = new Date(y,m-1,numDia);
				var fechaSiguienteDomingo = new Date(y,m-1,numDia+7);
				if (fechaHoySinHora > fechaDomingo && fechaHoySinHora <= fechaSiguienteDomingo){
					claseSemana = ' class="semanaActual"';
				}
			}
			t += '</tr><tr'+claseSemana+'>';
		}
	}
	t+='</tr></tbody></table>';
	return t;
}
