(function($) {
	var events;
	var file = '/calendar.json';
	var monthNames = ['Styczeń', 'Luty', 'Marzec', 'Kwiecień', 'Maj', 'Czerwiec', 'Lipiec', 'Sierpień', 'Wrzesień', 'Październik', 'Listopad', 'Grudzień'];
	var dayNames = ['Pn', 'Wt', 'Śr', 'Czw', 'Pt', 'So', 'N'];
   
	function calendarWidget(el, params) { 
		//var now   = new Date();
		//var thismonth = now.getMonth();
		//var thisyear  = now.getYear() + 1900;
		 
		var opts = {
			file: file
		};
        
		$.extend(opts, params);
		
        var branch = el.attr('branch_id');
		if(branch == undefined) return;
		
        $.ajax({
   		url: file,
            success: function(json) {
                var dataIndex = json.indexOf("//--></script>");
				if(dataIndex != -1)
					json = json.substr(dataIndex+16);
				json = eval(json);
                if (json.length > 0) {
                    events = json[branch];
					if(events.length > 0)
						drawCalendar(el);
                }
            }
        });    
	}
	
	function drawCalendar(el){
		var date = {}
		date['month'] = events[0]['month'];
		date['year'] = events[0]['year'];
		date['day'] = events[0]['day'];
		
		var table = '<h3><a href="kursy.html">Terminarz kursów</a></h3>';
		table = drawMonth(table, date, events, 'current_month');
		
		date['day'] = 1;
		date['month'] = date['month'] == 12 ? 0 : date['month'] + 1;
		table = drawMonth(table, date, events, 'next_month');
		el.html(table);
		$('.tooltip2').tipTip();	
	}
	
	function drawMonth(table, date, events, day_class){
		table += ('<h4 id="current-month">'+monthNames[date['month']-1]+' '+date['year']+'</h4>');
		table += ('<table class="calendar-month " ' +'id="calendar-month'+date['month']+' " cellspacing="0">');	
	
		table += '<tr>';
		
		for (d=0; d<7; d++) {
			table += '<th class="weekday">' + dayNames[d] + '</th>';
		}
		
		table += '</tr>';
		table += '<tr>';
	
		var days = getDaysInMonth(date['month']-1,date['year']);
		
		for(d=0; d < days - date['day'] + 1; d++){
			var event = false;
			var event_class = '';
			var info = '';			
			if(d==0){
				var day = new Date(date['year'], date['month']-1, date['day']);	
				var day_of_week = day.getUTCDay()
				if(day_of_week > 0)
					table += '<td colspan=' + day_of_week + '></td>';
			}
			for(e=0; e < events.length; e++){
				if(events[e].year==date['year'] && events[e].month==date['month'] && events[e].day==date['day'] + d){
					event = true;
					event_class = 'event';
					info = events[e].info;
					break;
				}
			}
			
			table += '<td class="' + day_class + ' ' + event_class + '"><span class="day';
			if(event)
				table += ' tooltip2" title="' + info + '';
			table += '">'+ (date['day'] + d) + '</span></td>';
			if ((d+day_of_week)%7==6) table += ('</tr>');
		}
		table += ('</table>');
		return 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);
