/*Fractal Calendar*/
Date.prototype.daysInMonth=function(){return 32 - new Date(this.getFullYear(),this.getMonth(),32).getDate();};

function drawMonth(fecha){
	var d = new Date();
	var today=new Date();
	var pm=new Date();
	var nm=new Date();
	var ldm=new Date();
	var ldpm=new Date();
	if(fecha){
		d.setTime(fecha);
		pm.setTime(fecha);
		nm.setTime(fecha);
		ldm.setTime(fecha);
		ldpm.setTime(fecha);
	}
	today.setHours(0,0,0,0);
	d.setHours(0,0,0,0);
	pm.setMonth(d.getMonth()-1);
	nm.setMonth(d.getMonth()+1);
	ldm.setDate(d.daysInMonth());
	ldpm.setMonth(d.getMonth()-1,pm.daysInMonth());

	var leftPad=ldpm.getDay();
	var rightPad=6-ldm.getDay();
	var totalDays= (leftPad+d.daysInMonth()+rightPad+1);	
	
	var j=k=1;
	var ret='<table summary="Calendario">';
	ret=ret+'<caption><a href="javascript:void(0)" class="leftArrMonth" rel="'+pm.getTime()+'">&laquo;</a><a href="javascript:void(0)" class="rightArrMonth"" rel="'+nm.getTime()+'">&raquo;</a>'+monthNames[d.getMonth()]+' '+d.getFullYear()+'</caption><tr>';
	for(m in dayNames){
		ret=ret+'<th>'+dayNames[m]+'</th>';
	}
	ret=ret+'</tr><tr>';
	for(var i=0;i<totalDays;i++){
		if(i && !(i%7)){
			ret=ret+'</tr><tr>';
		}
		if(leftPad+1){
			ret=ret+'<td class="calOutMonth">'+(pm.daysInMonth()-leftPad)+'</td>';
			leftPad--;
			continue;
		}
		if(j <= d.daysInMonth()){
			d.setDate(j);
			var idx=d.getFullYear()+'-'+(d.getMonth()+1)+'-'+j;
			ret=ret+'<td';
			var clase='';
			if(d.getTime()==today.getTime()){
				clase=clase+'calToday ';
			}
			if(appoints[idx]){
				clase=clase+'calAppoint ';
			}
			if(clase){
				ret=ret+' class="'+clase+'"';
			}
			ret=ret+'>'+j;
			if(appoints[idx]){
				ret=ret+'<div class="miniCalenderAppDet"><ul class="miniCalenderApps"> ';
				for(m in appoints[idx]){
					ret=ret+'<li><strong>'+appoints[idx][m].h+'</strong> <a href="'+appoints[idx][m].id+'">'+appoints[idx][m].t+'</a></li>';
				}
				ret=ret+'</ul></div>';
			}
			ret=ret+'</td>';
			j++;
			continue;
		}
		if(rightPad){
			ret=ret+'<td class="calOutMonth">'+k+'</td>';
			k++;
			rightPad--;
			continue;
		}
	}
	
	ret=ret+'</tr></table>';
	
	$('#miniCalenderTip').hide();
	$('.calenderContainer').html(ret);

	$('.leftArrMonth').click(function(){
		$('.calenderContainer').html(drawMonth($(this).attr('rel'))).show();
//		$('.calenderContainer').html(drawMonth($(this).attr('rel'))).show("slide", { direction: "left" }, 1000);
	});
	$('.rightArrMonth').click(function(){
		$('.calenderContainer').html(drawMonth($(this).attr('rel'))).show();
//		$('.calenderContainer').html(drawMonth($(this).attr('rel'))).show("slide", { direction: "right" }, 1000);
	});
	$('.calAppoint').hover(function(){
		$('#miniCalenderTip').html($(this).children().filter(":first-child").html()).hide().slideDown("slow");
	});
}