// these are labels for the days of the week
cal_days_labels = ['Pn', 'Wt', 'Śr', 'Cz', 'Pt', 'Sb', 'Nd'];

// these are human-readable month name labels, in order
cal_months_labels = ['Styczeń', 'Luty', 'Marzec', 'Kwiecień',
                     'Maj', 'Czerwiec', 'Lipiec', 'Sierpień', 'Wrzesień',
                     'Październik', 'Listopad', 'Grudzień'];

// these are the days of the week for each month, in order
cal_days_in_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];


function genkal(day0,day1,monthp,year) {

  // get first day of month
  var month=monthp-1;
  var firstDay = new Date(year, month, 1);
  var startingDay = firstDay.getDay();
  if(startingDay==0){ startingDay=6; } else startingDay--; 
  //alert(startingDay);
  // find number of days in month
  var monthLength = cal_days_in_month[month];  
  // compensate for leap year
  if (month == 1) { // February only!
    if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){
      monthLength = 29;
    }
  }
  
  var nday1=0;
  if(day1<day0) {
	  nday1=day1;
	  day1=monthLength;
  }  
  
  // do the header
  var monthName = cal_months_labels[month];
  var html = '<div id="kalborder"><table class="calendar-table">';
  html += '<tr><th colspan="7">';
  html +=  monthName + "&nbsp;" + year;
  html += '</th></tr>';
  html += '<tr class="calendar-header">';
  for(var i = 0; i <= 6; i++ ){
    html += '<td class="calendar-header-day">';
    html += cal_days_labels[i];
    html += '</td>';
  }
  html += '</tr><tr>';
  // fill in the days
  var day = 1;
  var nday=1;
  // this loop is for is weeks (rows)
  for (var i = 0; i < 9; i++) {
    // this loop is for weekdays (cells)
    for (var j = 0; j <= 6; j++) { 
      
      
      if (day <= monthLength && (i > 0 || j >= startingDay)) {
        if (day>=day0 && day<= day1) {
        	html += '<td class="day event">';
        } else html += '<td class="day">';
        html += day;
        day++;
        }
        else {        
        html += '<td class="otherday';
        if (day>monthLength){
         if (nday<=nday1) {
			html +=' event">';         
         } else html+='">';
			html += nday;
			nday++;        	
        	} else html+='">';
        }
      
      html += '</td>';
    }
    // stop making rows if we've run out of days
    if (day > monthLength) {
      break;
    } else {
      html += '</tr><tr>';
    }
  }
  html += '</tr></table></div>';

  return html;
}
