function eventcal(container) {

	var i;
	var s={};
	var offset=0;
	s.day = new Array('Ndz','Pon','Wt','Śr','Czw','Pt','Sob');
	s.month = new Array('Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec','Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień');
	s.monthDays = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	s.currentMonthRange=[]; for(i=0;i<42;i++) s.currentMonthRange[i]=0;
	var calbody = $(container);

	this.init = function() {
		var d = new Date();
		this.fM(d.getDate(),d.getMonth(),d.getFullYear());
	};

	this.fM = function(B,A,C) {

		var i,j,k;
		var daysInMonth = this.gDM(A,C);
		var nod = 1; // number of days
		for(i=1980 ; i<C ; i++) { nod+= ( i%4==0 ? 366 : 365 ); }
		for(i=0 ; i<A ; i++) { nod+=this.gDM(i,C); }
		var os = ( nod-6 ) % 7;
	
		for(i=os,j=1 ; i<os+daysInMonth ; i++,j++) s.currentMonthRange[i] = j;
		
		var d = new Date(); d.setMonth(d.getMonth()+offset-1);
		var daysInLastMonth = this.gDM(d.getMonth(),d.getFullYear());
		
		function getpos(arr,val) {
			for(i=0;i<arr.length;i++) { if(arr[i]==val) return i; }
			return -1;
    }
		var posFirstDate = getpos(s.currentMonthRange,1);
		var posLastDate = getpos(s.currentMonthRange,daysInMonth);
		for(i=posFirstDate-1,j=daysInLastMonth ; i>=0 ; i--) s.currentMonthRange[i] = j--;
		for(i=posLastDate+1,j=1 ; i<=42 ; i++) s.currentMonthRange[i] = j++;

		var f2='';
		var f ='<table cellpadding="0" cellspacing="0" border="0" class="ekal"><tr class="THead2">';
		f += '<td><a href="#" id="ecalback" onclick="return false;" class="callendar_link">◄</a></td>';
		f += '<td colspan="5"><span id="ecalhead"></span></td>';
		f += '<td><a href="#" id="ecalforw" onclick="return false;" class="callendar_link">►</a></td>';				
		f += '</tr><tr class="THead">';	
		for(i=0;i<7;i++){ f+='<td>'+s.day[i]+"</td>"; }
		f+='</tr><tr>';
		
		var dataout, mie_out;
		for(i=1;i<=36;i+=7){
			for(j=i;j<=i+6;j++){
				if(j <= 42){
					k = s.currentMonthRange[j-1];
					if( j <= posFirstDate ) { 
						// jesli miesiac == styczen to rok zmneijsz na poprzedni
						mie_out = (A==0?12:A);
						dataout = (A==0?C-1:C)+'-'+(mie_out<10 ? '0'+mie_out : mie_out)+'-'+(k<10 ? '0'+k : k);
						f2+='<td class=\"Empty\" onmouseover=\"this.className = \'Over\'; \" onmouseout=\"this.className = \'Empty\'; \" onclick="copyDate(\''+dataout+'\');">'+k+"</td>"; 
					}
					else if( j > posLastDate+1 ) { 
						mie_out = (A==11?1:A+2);
						dataout = (A==11?C+1:C)+'-'+(mie_out<10 ? '0'+mie_out : mie_out)+'-'+(k<10 ? '0'+k : k);
						f2+='<td class=\"Empty\" onmouseover=\"this.className = \'Over\'; \" onmouseout=\"this.className = \'Empty\'; \" onclick="copyDate(\''+dataout+'\');">'+k+"</td>"; 
					}
					else if( k == B ) { 
						mie_out = A+1;
						dataout = C+'-'+(mie_out<10 ? '0'+mie_out : mie_out)+'-'+(k<10 ? '0'+k : k);
						f2+='<td onmouseover=\"this.className = \'Over\'; \" onmouseout=\"this.className = \'\'; \" onclick="copyDate(\''+dataout+'\');">'+k+"</td>"; 
					}
					else if( k != B ) { 
						mie_out = A+1;
						dataout = C+'-'+(mie_out<10 ? '0'+mie_out : mie_out)+'-'+(k<10 ? '0'+k : k);
						f2+='<td onmouseover=\"this.className = \'Over\'; \" onmouseout=\"this.className = \'\'; \" onclick="copyDate(\''+dataout+'\');">'+k+"</td>"; 
					}
				}
			}
			f2+='</tr>';
		}
		calbody.innerHTML = f+f2+'</table>';
		var self = this;
		$('ecalhead').innerHTML=(s.month[A]+" "+C);
		$('ecalback').onmousedown = function() {self.initi(-1);}
		$('ecalforw').onmousedown = function() {self.initi(1);}
	
	};

	this.gDM = function(A,B) {
		if( B%4==0 && A==1 ) {return 29;} // co 4 lata luty ma 29 dni
		else {return s.monthDays[A];}
	};

	this.initi = function(A) {
		for(i=0;i<42;i++){ s.currentMonthRange[i]=0; }
		offset+=A;

		var d=new Date();
		d.setMonth(d.getMonth()+offset);
		this.fM(d.getDate(),d.getMonth(),d.getFullYear());
	};
}
