function calendari(capaDesti)
{
	// Variables
	this.capa_desti=capaDesti;
	this.calendari_mes_actual=1;
	this.calendari_any_actual=2010;
	this.data_actual=new Date();
	// Objectes de pintat
	this.taula_calendari=null;
	// Funcions
	this.pinta=calendariPintaCalendari;
	this.inicialitza=calendariInicialitza;
	this.pintaIntern=calendariPintaIntern;
	this.pintaInternInicialitza=calendariPintaInternInicialitza;
	this.pintaInternCabecera=calendariPintaInternCabecera;
	this.pintaInternCuerpo=calendariPintaInternCuerpo;
	this.pintaInternPie=calendariPintaInternPie;
	this.pintaInternFinalitza=calendariPintaInternFinalitza;
	this.obteNomMes=calendariUtilsObteNomMes;
	this.obteDesplasamentDies=calendariUtilsObteDesplasamentDies;
	// Accions
	this.accioSeleccionaData=calendariAccioSeleccionaData;
}

function calendariInicialitza()
{
}

function calendariPintaCalendari()
{
	this.inicialitza();
	this.pintaIntern();
}

function calendariPintaIntern()
{
	this.pintaInternInicialitza();
	this.pintaInternCabecera();
	this.pintaInternCuerpo();
	this.pintaInternPie();
	this.pintaInternFinalitza();
}

function calendariPintaInternInicialitza()
{
	this.capa_desti.children().remove();
	// Crea la taula sobre la que pintarem
	this.taula_calendari=$('<table>').attr('cellspacing','4');
}

function calendariPintaInternFinalitza()
{
	this.capa_desti.append(this.taula_calendari);
}

function calendariPintaInternCabecera()
{
	var thead=$('<thead>');
	var tr_head_1=$('<tr>');
	var th_ant=$('<th class="opcio_ant">').html('&nbsp;');
	var th_seg=$('<th class="opcio_seg">').html('&nbsp;');
	th_ant.bind('click', {cal: this}, function(event){event.data.cal.data_actual.setMonth(event.data.cal.data_actual.getMonth()-1);event.data.cal.pintaIntern();});
	th_seg.bind('click', {cal: this}, function(event){event.data.cal.data_actual.setMonth(event.data.cal.data_actual.getMonth()+1);event.data.cal.pintaIntern();});
	var th_mes=$('<th class="headerMes">').attr('colspan','5').html(this.obteNomMes(this.data_actual.getMonth()).toUpperCase()+' '+this.data_actual.getFullYear());
	tr_head_1.append(th_ant);
	tr_head_1.append(th_mes);
	tr_head_1.append(th_seg);
	var tr_head_2=$('<tr>');
	tr_head_2.append($('<th class="headerDia">').html('DL'));
	tr_head_2.append($('<th class="headerDia">').html('DT'));
	tr_head_2.append($('<th class="headerDia">').html('DC'));
	tr_head_2.append($('<th class="headerDia">').html('DJ'));
	tr_head_2.append($('<th class="headerDia">').html('DV'));
	tr_head_2.append($('<th class="headerDia">').html('DS'));
	tr_head_2.append($('<th class="headerDia">').html('DG'));
	thead.append(tr_head_1);
	thead.append(tr_head_2);
	this.taula_calendari.append(thead);
}

function calendariPintaInternCuerpo()
{
	var tbody=$('<tbody>');
	// Obtener el dia 1 del mes actual
	var dia_hoy=new Date();
	var dia_uno=new Date(this.data_actual.getFullYear(),this.data_actual.getMonth(),1);
	var data_celda_actual=new Date(this.data_actual.getFullYear(),this.data_actual.getMonth(),1);
	data_celda_actual.setDate(dia_uno.getDate()-(this.obteDesplasamentDies(dia_uno.getDay())));
	// Imprimir calendario
	for(var row=0;row<6;row++)
	{
		var ritem=$('<tr class="crow">');
		for(var cell=0;cell<=6;cell++)
		{
			var citem=$('<td>');
			if(data_celda_actual.getMonth()==this.data_actual.getMonth())
			{
				if(data_celda_actual<dia_hoy)
					citem.addClass('ccellpast');
				else if(data_celda_actual.getFullYear()==dia_hoy.getFullYear() && data_celda_actual.getMonth()==dia_hoy.getMonth() && data_celda_actual.getDate()==dia_hoy.getDate())
					citem.addClass('ccellcurrent');
				else
					citem.addClass('ccell');
				citem.html(data_celda_actual.getDate());
				if(!(data_celda_actual>dia_hoy))
				{
					citem.css('cursor','pointer');
					citem.bind('click', {cdia:data_celda_actual.getDate(), cmes:data_celda_actual.getMonth()+1, cany:data_celda_actual.getFullYear()}, this.accioSeleccionaData);
				}
			}
			ritem.append(citem);
			data_celda_actual.setDate(data_celda_actual.getDate()+1);
		}
		tbody.append(ritem);
	}
	this.taula_calendari.append(tbody);
}

function calendariPintaInternPie()
{
	/*
	var tfoot=$('<tfoot>');
	var tr_foot_1=$('<tr>');
	var ant_span=$('<div class="opcio">').html('Anterior').css('cursor','pointer');
	var seg_span=$('<div class="opcio">').html('Següent').css('cursor','pointer');
	ant_span.bind('click', {cal: this}, function(event){event.data.cal.data_actual.setMonth(event.data.cal.data_actual.getMonth()-1);event.data.cal.pintaIntern();});
	seg_span.bind('click', {cal: this}, function(event){event.data.cal.data_actual.setMonth(event.data.cal.data_actual.getMonth()+1);event.data.cal.pintaIntern();});
	var foot_td=$('<td class="peuOpcions">').attr('colspan','7');
	foot_td.append(seg_span);
	foot_td.append(ant_span);
	tfoot.append(tr_foot_1);
	tr_foot_1.append(foot_td);
	this.taula_calendari.append(tfoot);
	*/
}

function calendariAccioSeleccionaData(event)
{
	self.location='/hemeroteca/any/'+event.data.cany+'/mes/'+event.data.cmes+'/dia/'+event.data.cdia;
}

function calendariUtilsObteNomMes(numero_mes)
{
	switch(numero_mes)
	{
		case 0: return 'Gener';
		case 1: return 'Febrer';
		case 2: return 'Març';
		case 3: return 'Abril';
		case 4: return 'Maig';
		case 5: return 'Juny';
		case 6: return 'Juliol';
		case 7: return 'Agost';
		case 8: return 'Setembre';
		case 9: return 'Octubre';
		case 10: return 'Novembre';
		case 11: return 'Desembre';
		default:	return '';
	}
}

function calendariUtilsObteDesplasamentDies(dia_semana)
{
	switch(dia_semana)
	{
		case 0:	return 6;
		default: return dia_semana-1;
	}
}
