(function($) { 
   
	function calendarWidget(el, params) { 
		
		var now   = new Date();
		var thismonth = now.getMonth();
		var thisyear  = now.getYear() + 1900;
		var thisday = now.getDate();

		var opts = {
			month: thismonth,
			year: thisyear
		};
		
		$.extend(opts, params);
		
		var monthNames = ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'];
		var dayNames = ['D', 'L', 'M', 'Mi', 'J', 'V', 'S'];
		month = i = parseInt(opts.month);
		year = parseInt(opts.year);
		var m = 0;
		var table = '';
		
			// next month
			if (month == 11) {
				var next_month = '<a href="?month=' + 1 + '&amp;year=' + (year + 1) + '" title="' + monthNames[0] + ' ' + (year + 1) + '">' + monthNames[0] + ' ' + (year + 1) + '</a>';
			} else {
				var next_month = '<a href="?month=' + (month + 2) + '&amp;year=' + (year) + '" title="' + monthNames[month + 1] + ' ' + (year) + '">' + monthNames[month + 1] + ' ' + (year) + '</a>';
			}
				
			// previous month
			if (month == 0) {
				var prev_month = '<a href="?month=' + 12 + '&amp;year=' + (year - 1) + '" title="' + monthNames[11] + ' ' + (year - 1) + '">' + monthNames[11] + ' ' + (year - 1) + '</a>';
			} else {
				var prev_month = '<a href="?month=' + (month) + '&amp;year=' + (year) + '" title="' + monthNames[month - 1] + ' ' + (year) + '">' + monthNames[month - 1] + ' ' + (year) + '</a>';
			}		
				

			table += ('<div class="calendar-header"><span class"" id="current-month">'+ thisday+ ' ' +monthNames[month].toUpperCase()+' '+year+'</span></div>');

			table += ('<table class="calendar-month " ' +'id="calendar-month'+i+' " cellspacing="0">');	
			table += '<div class="calendar-semana"></div>';
			table += '<div style="clear:both;"></div>';
           	table += '<div class="calendar2">';
            table += '<ul class="calendar2-list">';
            table += '<div class="semana-header">';
            table += '<ul>';

			
			for (d=0; d<7; d++) {
				table += '<li class="semana">' + dayNames[d] + '</li>';
			}
			
			table +='</ul>';
            table +='</div>';
            table +='<div style="clear:both;"></div>';
			table +='<li>';
            table +='<ul>';
			var days = getDaysInMonth(month,year);
            var firstDayDate=new Date(year,month,1);
            var firstDay=firstDayDate.getDay();
			
			var prev_days = getDaysInMonth(month,year);
            var firstDayDate=new Date(year,month,1);
            var firstDay=firstDayDate.getDay();
			
			var prev_m = month == 0 ? 11 : month-1;
			var prev_y = prev_m == 11 ? year - 1 : year;
			var prev_days = getDaysInMonth(prev_m, prev_y);
			firstDay = (firstDay == 0 && firstDayDate) ? 7 : firstDay;
	
			var i = 0;
            for (j=0;j<42;j++){
			  
              if ((j<firstDay)){
                table += ('<li class="dia" style="background-color:#f7f7f7;">'+ (prev_days-firstDay+j+1) +'</li>');
			  } else if ((j>=firstDay+getDaysInMonth(month,year))) {
				i = i+1;
                table += ('<li class="dia"style="background-color:#f7f7f7;">'+ i +'</li>');			 
              }else{
              	if((j-firstDay+1) != thisday)
                	table += ('<li class="dia" >'+(j-firstDay+1)+'</li>');
               	else
               		table += ('<li class="dia" style="background-color:rgb(201,71,75);color:#ffffff">'+(j-firstDay+1)+'</li>');

              }
              if (j%7==6)  table += ('</li>');
            }

            table +='</ul>';
            table +='</div>';
            table +='<div style="clear:both;"></div>';

		el.html(table);
	}
	
	function getDaysInMonth(month,year)  {
		var daysInMonth=[31,28,31,30,31,30,31,31,30,31,30,31];
		if ((month==1)&&(year%4==0)&&((year%100!=0)||(year%400==0))){
		  return 29;
		}else{
		  return daysInMonth[month];
		}
	}
	
	
	// jQuery plugin initialisation
	$.fn.calendarWidget = function(params) {    
		calendarWidget(this, params);		
		return this; 
	}; 

})(jQuery);