var calendario={
	data:[],
	today:null,
	campoRetorno:null,
	capa:null,
	objeto:null,
	weekdays:new Array('L','M','M','J','V','S','D'),
	months:new Array('Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'),	
	navigation:null,
	init:function()
	{			
		calendario.today=new Date();
		calendario.today.setHours(0);
		calendario.today.setMinutes(0);
		calendario.today.setSeconds(0);
		calendario.campoRetorno=null;
		var dia=calendario.today.getDate();
		var mes=calendario.today.getMonth();
		var anyo=calendario.today.getFullYear();
		calendario.capa = document.getElementById("calendar");
		calendario.navigation = document.getElementsByClassName("pag", calendario.capa)[0]; 				
		$.ajax({
		         "type":"GET",
		         url: "/index.php/calendario2/mes/"+anyo+"/"+parseInt(mes+1),
		         success: function(datos){
				 	calendario.data = eval("("+datos+")"); 	
					calendario.pintaNavegador(mes, anyo, calendario.capa);
					calendario.pintaCalendario(mes,anyo,calendario.capa,calendario.capa.getElementsByTagName('table')[0]);	
				}
	       	}
       );		
	},
	
	compDates:function (s1, s2){	
		if (s1==s2) return 'iguales';
		else return (s1<s2);
	},
	
	anyoBisiesto:function(anyo){
		if ((anyo%4==0) && ((anyo % 100 != 0) || (anyo % 400 == 0))) return true;
		else return false;
	},
	
	diasMes:function(mes,anyo){
		if ((mes==0) || (mes==2) || (mes==4) || (mes==6) || (mes==7) || (mes==9) || (mes==11))
		return 31;
		else if ((mes==3) || (mes==5) || (mes==8) || (mes==10))
			return 30;
			else if ((mes==1) && calendario.anyoBisiesto(anyo))
				return 29;
				else return 28;
	},
	
	pintaNavegador:function(mes,anyo,capa){
		var links = calendario.navigation.getElementsByTagName("a");
		var caption = calendario.capa.getElementsByTagName("caption")[0];
		var newMes=mes-1;
		var newAnyo=anyo;
		var cal_div = document.getElementById("CAL_DIV");
		var msg = document.createElement("span");
		msg.className = "msg";
		msg.appendChild(document.createTextNode("CARGANDO..."));
		if(caption.firstChild) caption.removeChild(caption.firstChild);
		caption.appendChild(document.createTextNode(calendario.months[mes]+' '+anyo));
		if (newMes<0) {
			newMes=11;
			newAnyo=anyo-1;
		}
		links[0].href = "javascript:void(null)";
		links[0].onclick=function(){
			cal_div.appendChild(msg);			
			$.ajax({
				 "type":"GET",
				 url: "/index.php/calendario2/mes/"+anyo+"/"+parseInt(mes),
				 success: function(datos){ 
					calendario.data = eval("("+datos+")"); 	
					calendario.pintaNavegador(mes, anyo, calendario.capa);
					calendario.pintaCalendario(newMes,newAnyo,capa,capa.getElementsByTagName('table')[0]);
					cal_div.removeChild(msg);
				}
			})					   
		   return false;
		}

		links[1].href = "javascript:void(null)";	
		links[1].onclick=function(){	
			var newMes=mes+1;
			var newAnyo=anyo;
			if (newMes==12){
				newMes=0;
				newAnyo=anyo+1;
			}	
			cal_div.appendChild(msg);		
			$.ajax({
				 "type":"GET",
				 url: "/index.php/calendario2/mes/"+anyo+"/"+parseInt(mes+2),
				 success: function(datos){ 				
					calendario.data = eval("("+datos+")"); 	
					calendario.pintaNavegador(mes+2, anyo, calendario.capa);
					calendario.pintaCalendario(newMes,newAnyo,capa,capa.getElementsByTagName('table')[0]);
					cal_div.removeChild(msg);
				}
			})	
				
			return false;
		}								
	},
	
	pintaDiasSemana:function(weekdays,tabla){
		var caption = document.createElement('caption');
		var thead=document.createElement('thead');		
		var fila=document.createElement('tr');
		for (i=0;i<weekdays.length;i++){
			var celda=document.createElement('th');
			celda.appendChild(document.createTextNode(weekdays[i]));
			fila.appendChild(celda);
		}
		thead.appendChild(fila);
		tabla.appendChild(caption);
		tabla.appendChild(thead);
	},	
	
	pintaMes:function(mes,anyo,tabla){
		var dias=calendario.diasMes(mes,anyo);
		var f=new Date(anyo,mes,1);
		var diacomienzo=f.getDay();
		if (diacomienzo==0) diacomienzo=7;
		/*calculo das mes anterior */
		if (mes>0) {
			diasanterior=calendario.diasMes(mes-1,anyo);
			var mesaux=mes-1;
			var anyoaux=anyo;
		}else{
			diasanterior=calendario.diasMes(11,anyo-1);
			var mesaux=11;
			var anyoaux=anyo-1;
		}
		/*primera fila*/
		var tbody=document.createElement('tbody');
		var tr=document.createElement('tr');
		for (j=diasanterior-(diacomienzo-1)+1;j<=diasanterior;j++){
			var parche=new Date();
			parche.setDate(j);
			parche.setMonth(mesaux);
			parche.setFullYear(anyoaux);
			var celda=document.createElement('td');
			var aux=new Date(anyoaux,mesaux,j);
			celda.appendChild(document.createTextNode(""))						
			tr.appendChild(celda);
		}
		
		var cont=diacomienzo;
		for (i=1;i<=7-diacomienzo+1;i++){
			var aux=new Date(anyo,mes,i,0,0,0,0)
			var celda=document.createElement('td');
			var texto=document.createTextNode(i);			
			celda.appendChild(texto);
			calendario.checkEventsDate(celda.firstChild);
			tr.appendChild(celda);
			cont++;
		}		
		tbody.appendChild(tr);
		tabla.appendChild(tbody);
		
		var d=i;
		var fila=2;
		if (mes==11) {
			var messig=0;
			var anyosig=anyo+1;
		}
		else {
		messig=mes+1;
		anyosig=anyo;
		}
		var escribe=0;
		while ((fila<=6) && (parseInt(escribe)<calendario.diasMes(mes,anyo))){
			var row=document.createElement('tr');
			for (n=1;n<=7;n++) {			
				if (d<=calendario.diasMes(mes,anyo)){
					var aux=new Date(anyo,mes,d,0,0,0,0);
					var celda=document.createElement('td');
					var texto=document.createTextNode(d);					
					celda.appendChild(texto);
					escribe=d;
					calendario.checkEventsDate(celda.firstChild);
					row.appendChild(celda);					
				}else{
					var celda=document.createElement('td');
					celda.className='celdaOtroMes';
					var texto=document.createTextNode("");					
					celda.appendChild(texto);
					calendario.checkEventsDate(celda.firstChild);
					row.appendChild(celda);
				}
				d++;
			}						
			tbody.appendChild(row);
			fila++;
		}
	},
	checkEventsDate:function(day){		
		var dayToCheck = day.nodeValue;
		var parentDay = day.parentNode;
		var month = calendario.data.calendar.month[0];
		var dayAux = "";
		var i = 0;
		var findMonth = false;
		var media = null;
		var lnk = document.createElement("a");		
		for(var j = 0; j < month.days.length; j++){			
			dayAux = parseInt(month.days[j].value);			
			if(dayAux == dayToCheck){				
				lnk.activities = month.days[j].activities[0];
				lnk.setAttribute('href',lnk.activities.url);			
				lnk.appendChild(document.createTextNode(dayToCheck));				
				parentDay.className = "activity";				
				parentDay.removeChild(day);
				parentDay.appendChild(lnk);
			}
		}
	},
		
	pintaCalendario:function(mes,anyo,container,currentTable){		
		var hijos=currentTable.childNodes;
		var parentTable = currentTable.parentNode;		
		var tabla=document.createElement('table');
		for (i=hijos.length-1;i>=0;i--) currentTable.removeChild(hijos[i]);
		parentTable.removeChild(currentTable);		
		tabla.cellSpacing=0;
		parentTable.appendChild(tabla);
		calendario.pintaDiasSemana(calendario.weekdays,tabla)		
		calendario.pintaMes(mes,anyo,tabla);		
		calendario.pintaNavegador(mes,anyo,container);
		currentTable.tabIndex = -1;
		currentTable.focus();

	}
}
