(function($) { 
   
	function calendarWidget(el, params) { 
	
		var date = parseFloat(document.getElementById('startDayTimestamp').value) * 1000;

		var now   = new Date(date);
		var thismonth = now.getMonth();
		var thisyear  = now.getFullYear();
//		if (params.select != undefined)
//			var thisday = params.select;
//		else
			var thisday = now.getDate();
		var opts = {
			day: thisday,
			month: thismonth,
			year: thisyear
		};
		
		$.extend(opts, params);
		
		//var dayNames = ['P', 'W', 'Ś', 'C', 'P', 'S', 'N'];
		month = i = parseInt(opts.month)-1;
		year = parseInt(opts.year);
		var m = 0;
		
		var table = '';

			table += ('<table class="calendar-month " ' +'id="calendar-month'+i+' " cellspacing="0">');	
		
			table += '<tr><th class="space3px"></th><th class="weekselect"></th>';
			
			for (d=0; d<7; d++) {
				table += '<th class="weekday">' + dayNames[d] + '</th>';
			}
			
			table += '</tr><tr>';
		
			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 next_m = month == 11 ? 0 : month+1;
			var prev_y = prev_m == 11 ? year - 1 : year;
			var next_y = next_m == 0 ? year + 1 : year;
			var prev_days = getDaysInMonth(prev_m, prev_y);
			firstDay = (firstDay == 0 && firstDayDate) ? 6 : firstDay-1;
	
			var i = 0;
            for (j=0;j<42;j++){
				if (j%7==0) table += ('<td class="space3px"></td><td class="weekselect">&nbsp;</td>');
              if ((j<firstDay)){
				if (j%7==6 || j%7==5)
					table += ('<td id="'+ (prev_days-firstDay+j+1)+'-'+(prev_m+1)+'-'+prev_y+'" class="weekend other-month"><span class="prev">'+ (prev_days-firstDay+j+1) +'</span></td>');
                else
					table += ('<td id="'+ (prev_days-firstDay+j+1)+'-'+(prev_m+1)+'-'+prev_y+'" class="dzien other-month"><span class="prev">'+ (prev_days-firstDay+j+1) +'</span></td>');
			  } else if ((j>=firstDay+getDaysInMonth(month,year))) {
				i = i+1;
				if (j%7==6 || j%7==5)
					table += ('<td id="'+i+'-'+(next_m+1)+'-'+next_y+'" class="weekend other-month"><span class="next">'+ i +'</span></td>');			 
                else
					table += ('<td id="'+i+'-'+(next_m+1)+'-'+next_y+'" class="dzien other-month"><span class="next">'+ i +'</span></td>');			 
             }else{
				if (j%7==6 || j%7==5)
					table += ('<td id="'+(j-firstDay+1)+'-'+(month+1)+'-'+year+'" class="weekend current-month"><span class="day">'+(j-firstDay+1)+'</span></td>');
				else
					table += ('<td id="'+(j-firstDay+1)+'-'+(month+1)+'-'+year+'" class="dzien current-month"><span class="day">'+(j-firstDay+1)+'</span></td>');
              }
              if (j%7==6)  table += ('</tr><tr>');
			  
            }

            table += ('</tr></table>');
		el.fadeOut("normal", function(){
			el.html(table);
			el.fadeIn();
			week_hover(); 
			var today = $("#"+opts.day+'-'+(month+1)+'-'+year);
			sprawdz_weekendy(today, params.okres, opts.day);
			if (params.noselect != 1){
				zaznaczOkres(today, params.okres, opts.day);
			}
		});		
		
		
	}
	
	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);

