(function($) { 
   
	function calendarWidget(el, params) { 
		
		var now   = new Date();
		var thismonth = now.getMonth();
		var thisyear  = now.getYear();
		if (thisyear < 200)
			thisyear  = now.getYear() + 1900;

		var opts = {
			month: thismonth,
			year: thisyear
		};
		
		$.extend(opts, params);
		
		var monthNames = ['Január', 'Február', 'Marec', 'Apríl', 'Máj', 'Jún', 'Júl', 'August', 'September', 'Október', 'November', 'December'];
		var dayNames = ['Pon', 'Uto', 'Str', 'Štv', 'Pia', 'Sob', 'Ned'];
		month = i = parseInt(opts.month);
		year = parseInt(opts.year);
		var m = 0;
		var table = ' ';
		
			// next month
			if (month == 11) {
				var next_month = '<a href="index.php?action=calendar&amp;month=' + 1 + '&amp;year=' + (year + 1) + '" title="' + monthNames[0] + ' ' + (year + 1) + '">' + monthNames[0] + ' ' + (year + 1) + '</a>';
			} else {
				var next_month = '<a href="index.php?action=calendar&amp;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="index.php?action=calendar&amp;month=' + 12 + '&amp;year=' + (year - 1) + '" title="' + monthNames[11] + ' ' + (year - 1) + '">' + monthNames[11] + ' ' + (year - 1) + '</a>';
			} else {
				var prev_month = '<a href="index.php?action=calendar&amp;month=' + (month) + '&amp;year=' + (year) + '" title="' + monthNames[month - 1] + ' ' + (year) + '">' + monthNames[month - 1] + ' ' + (year) + '</a>';
			}		
				
			//table += ('<h3>'+monthNames[month]+' '+year+'</h3>');
			// uncomment the following lines if you'd like to display calendar month based on 'month' and 'view' paramaters from the URL
			table += ('<div class="calendarHeader">'+prev_month);
			table += (' '+monthNames[month]+' '+year+' ');
			table += (next_month+'</div>');
			table += ('<table class="calendar" ' + 'cellspacing="0">');	
		
			table += '<thead><tr>';
			
			for (d=0; d<7; d++) {
				table += '<th class="weekday">' + dayNames[d] + '</th>';
			}
			
			table += '</tr></thead><tbody>';
		
			var days = getDaysInMonth(month,year);
            var firstDayDate=new Date(year,month,1);
            var firstDay=firstDayDate.getDay()-1;

			var prev_days = getDaysInMonth(month,year);
            var firstDayDate=new Date(year,month,1);
            var firstDay=firstDayDate.getDay()-1;
			
			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++){
			  var datum = new Date(year,month,(j-firstDay+1));
              if ((j<firstDay)){
                table += ('<td class="padding">'+ (prev_days-firstDay+j+1) +'</td>');
			  } 
			  else if ((j>=firstDay+getDaysInMonth(month,year))) {
				i = i+1;
                table += ('<td class="padding">'+ i +'</td>');			 
              }
              else if ((opts.events[j-firstDay+1].length) > 0) {
              	if (((thisyear) == year) && (now.getMonth() == month) && (now.getDate() == (j-firstDay+1)))
              		table += ('<td class="date_has_event today">');
              	else
              		table += ('<td class="date_has_event">');
		  		table += ((j-firstDay+1)+'<div class="events"><ul>');
				for (k = 0; k < opts.events[j-firstDay+1].length; k++) {
					table += '<li>[';
					if (opts.events[j-firstDay+1][k][6] == 0) // ak neni celodenna udalost, zobraz cas, inac vypis 'celodenna' 
            table += ''+opts.events[j-firstDay+1][k][1]+'';
          else
            table += 'celodenná'; 
          table += ']<br /><span class="bold">'+(opts.events[j-firstDay+1][k][2])+'</span><br /><span class="desc">'+(opts.events[j-firstDay+1][k][3])+'</span><br /><span class="calendarAuthor">Autor: '+(opts.events[j-firstDay+1][k][4]);
					if (opts.events[j-firstDay+1][k][5] == 1)
						table += ('<br /><a href="index.php?action=calendar&editevent='+(opts.events[j-firstDay+1][k][0])+'#events-3">Upraviť udalosť</a>&nbsp;&nbsp;<a href="index.php?action=calendar&delevent='+(opts.events[j-firstDay+1][k][0])+'">Zmazať udalosť</a>');
					table += '</span></li>';
				}
				table += ('</ul></div></td>');
		
              }
              else if (((thisyear) == year) && (now.getMonth() == month) && (now.getDate() == (j-firstDay+1))) {
              	table += ('<td class="today">'+(j-firstDay+1)+'</td>');
              }
			  else {
                table += ('<td>'+(j-firstDay+1)+'</td>');
              }
              if (j%7==6)  table += ('</tr>');
            }

            table += ('</tbody></table>');

		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);

